63 lines
2.1 kB
1
import { loadProcessedExtensions } from "@moonlight-mod/core/extension/loader";
2
import { installWebpackPatcher, onModuleLoad, registerPatch, registerWebpackModule } from "@moonlight-mod/core/patch";
3
import { constants, MoonlightBranch } from "@moonlight-mod/types";
4
import { installStyles } from "@moonlight-mod/core/styles";
5
import Logger, { initLogger } from "@moonlight-mod/core/util/logger";
6
import LunAST from "@moonlight-mod/lunast";
7
import Moonmap from "@moonlight-mod/moonmap";
8
import loadMappings from "@moonlight-mod/mappings";
9
import { createEventEmitter } from "@moonlight-mod/core/util/event";
10
import { EventPayloads, EventType } from "@moonlight-mod/types/core/event";
11
12
async function load() {
13
delete window._moonlightWebLoad;
14
initLogger(moonlightNode.config);
15
const logger = new Logger("web-preload");
16
17
window.moonlight = {
18
unpatched: new Set(),
19
pendingModules: new Set(),
20
enabledExtensions: new Set(),
21
22
events: createEventEmitter<EventType, EventPayloads>(),
23
patchingInternals: {
24
onModuleLoad,
25
registerPatch,
26
registerWebpackModule
27
},
28
localStorage: window.localStorage,
29
30
version: MOONLIGHT_VERSION,
31
branch: MOONLIGHT_BRANCH as MoonlightBranch,
32
apiLevel: constants.apiLevel,
33
34
getConfig: moonlightNode.getConfig.bind(moonlightNode),
35
getConfigOption: moonlightNode.getConfigOption.bind(moonlightNode),
36
setConfigOption: moonlightNode.setConfigOption.bind(moonlightNode),
37
writeConfig: moonlightNode.writeConfig.bind(moonlightNode),
38
39
getNatives: moonlightNode.getNatives.bind(moonlightNode),
40
getLogger(id) {
41
return new Logger(id);
42
},
43
44
lunast: new LunAST(),
45
moonmap: new Moonmap()
46
};
47
48
try {
49
loadMappings(window.moonlight.moonmap, window.moonlight.lunast);
50
await loadProcessedExtensions(moonlightNode.processedExtensions);
51
await installWebpackPatcher();
52
} catch (e) {
53
logger.error("Error setting up web-preload", e);
54
}
55
56
if (document.readyState === "complete") {
57
installStyles();
58
} else {
59
window.addEventListener("load", installStyles);
60
}
61
}
62
63
window._moonlightWebLoad = load;
64