64 lines
2.2 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 { WebEventPayloads, WebEventType } 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
patched: new Map(),
19
unpatched: new Set(),
20
pendingModules: new Set(),
21
enabledExtensions: new Set(),
22
23
events: createEventEmitter<WebEventType, WebEventPayloads>(),
24
patchingInternals: {
25
onModuleLoad,
26
registerPatch,
27
registerWebpackModule
28
},
29
localStorage: window.localStorage,
30
31
version: MOONLIGHT_VERSION,
32
branch: MOONLIGHT_BRANCH as MoonlightBranch,
33
apiLevel: constants.apiLevel,
34
35
getConfig: moonlightNode.getConfig.bind(moonlightNode),
36
getConfigOption: moonlightNode.getConfigOption.bind(moonlightNode),
37
setConfigOption: moonlightNode.setConfigOption.bind(moonlightNode),
38
writeConfig: moonlightNode.writeConfig.bind(moonlightNode),
39
40
getNatives: moonlightNode.getNatives.bind(moonlightNode),
41
getLogger(id) {
42
return new Logger(id);
43
},
44
45
lunast: new LunAST(),
46
moonmap: new Moonmap()
47
};
48
49
try {
50
loadMappings(window.moonlight.moonmap, window.moonlight.lunast);
51
await loadProcessedExtensions(moonlightNode.processedExtensions);
52
await installWebpackPatcher();
53
} catch (e) {
54
logger.error("Error setting up web-preload", e);
55
}
56
57
if (document.readyState === "complete") {
58
installStyles();
59
} else {
60
window.addEventListener("load", installStyles);
61
}
62
}
63
64
window._moonlightWebLoad = load;
65