Work to reduce bundles size (prebundle modules)
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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"]`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user