60 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
apiLevel: constants.apiLevel,
19
unpatched: new Set(),
20
pendingModules: new Set(),
21
enabledExtensions: new Set(),
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
33
getConfig: moonlightNode.getConfig.bind(moonlightNode),
34
getConfigOption: moonlightNode.getConfigOption.bind(moonlightNode),
35
setConfigOption: moonlightNode.setConfigOption.bind(moonlightNode),
36
37
getNatives: moonlightNode.getNatives.bind(moonlightNode),
38
getLogger(id) {
39
return new Logger(id);
40
},
41
lunast: new LunAST(),
42
moonmap: new Moonmap()
43
};
44
45
try {
46
loadMappings(window.moonlight.moonmap, window.moonlight.lunast);
47
await loadProcessedExtensions(moonlightNode.processedExtensions);
48
await installWebpackPatcher();
49
} catch (e) {
50
logger.error("Error setting up web-preload", e);
51
}
52
53
if (document.readyState === "complete") {
54
installStyles();
55
} else {
56
window.addEventListener("load", installStyles);
57
}
58
}
59
60
window._moonlightWebLoad = load;
61