Work to reduce bundles size (prebundle modules)

This commit is contained in:
Zef Hemel
2022-04-13 14:46:52 +02:00
parent a24eaaf4b4
commit 31254d15e6
36 changed files with 431 additions and 179 deletions
+10 -2
View File
@@ -1,3 +1,5 @@
import { preloadModules } from "../../common/preload_modules";
const { parentPort, workerData } = require("worker_threads");
// @ts-ignore
let vm2 = `${workerData}/vm2`;
@@ -16,11 +18,17 @@ let pendingRequests = new Map<
let syscallReqId = 0;
// console.log("Here's crypto", crypto);
let vm = new VM({
sandbox: {
console,
require: (moduleName: string): any => {
console.log("Loading", moduleName);
if (preloadModules.includes(moduleName)) {
return require(`${workerData}/${moduleName}`);
} else {
throw Error("Cannot import arbitrary modules");
}
},
self: {
syscall: (name: string, ...args: any[]) => {
return new Promise((resolve, reject) => {
+15
View File
@@ -20,6 +20,7 @@ function workerPostMessage(msg: ControllerMessage) {
declare global {
function syscall(name: string, ...args: any[]): Promise<any>;
// function require(moduleName: string): any;
}
let syscallReqId = 0;
@@ -37,6 +38,20 @@ self.syscall = async (name: string, ...args: any[]) => {
});
};
const preloadedModules: { [key: string]: any } = {
"@lezer/lr": require("@lezer/lr"),
yaml: require("yaml"),
};
// for (const moduleName of preloadModules) {
// preloadedModules[moduleName] = require(moduleName);
// }
// @ts-ignore
self.require = (moduleName: string): any => {
console.log("Loading", moduleName, preloadedModules[moduleName]);
return preloadedModules[moduleName];
};
function wrapScript(code: string) {
return `return (${code})["default"]`;
}