@webfaas/webfaas-core
Version:
WebFaaS Framework - Core
89 lines • 4.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModuleManagerCompile = void 0;
const ModuleCompileJavaScript_1 = require("../ModuleCompile/ModuleCompileJavaScript");
const ModuleCompileWasm_1 = require("../ModuleCompile/ModuleCompileWasm");
const SandBox_1 = require("../ModuleCompile/SandBox");
const ILog_1 = require("../Log/ILog");
const ModuleManagerRequireContextData_1 = require("./ModuleManagerRequireContextData");
/**
* ModuleManagerCompile
*/
class ModuleManagerCompile {
constructor(moduleManager, log) {
this.moduleManager = moduleManager;
this.log = log;
this.sandBoxContext = SandBox_1.SandBox.SandBoxBuilderContext();
this.moduleCompileJavaScript = new ModuleCompileJavaScript_1.ModuleCompileJavaScript(this.log);
this.moduleCompileWasm = new ModuleCompileWasm_1.ModuleCompileWasm(this.log);
this.sandBoxContext = SandBox_1.SandBox.SandBoxBuilderContext();
}
compilePackageStoreItemBufferSync(itemBufferResponse, moduleManagerRequireContextData, moduleCompileManifestData) {
var responseObj = null;
if (itemBufferResponse.extension === ".json") {
responseObj = JSON.parse(itemBufferResponse.buffer.toString());
}
else {
responseObj = this.compilePackageJavaScriptSync(moduleManagerRequireContextData, moduleCompileManifestData, itemBufferResponse.buffer);
}
return responseObj;
}
compilePackageStoreItemBufferAsync(itemBufferResponse, moduleManagerRequireContextData, moduleCompileManifestData) {
return new Promise(async (resolve, reject) => {
try {
if (itemBufferResponse.extension === ".wasm") {
let responseObj = await this.compilePackageWasmAsync(moduleManagerRequireContextData, moduleCompileManifestData, itemBufferResponse.buffer);
resolve(responseObj);
}
else {
resolve(this.compilePackageStoreItemBufferSync(itemBufferResponse, moduleManagerRequireContextData, moduleCompileManifestData));
}
}
catch (errTry) {
reject(errTry);
}
});
}
compilePackageJavaScriptSync(moduleManagerRequireContextData, moduleCompileManifestData, codeBuffer) {
try {
var moduleManagerRequireContextDataDependency = new ModuleManagerRequireContextData_1.ModuleManagerRequireContextData(moduleManagerRequireContextData.rootPackageStoreKey);
moduleManagerRequireContextDataDependency.parentPackageStoreName = moduleCompileManifestData.name;
moduleManagerRequireContextDataDependency.parentPackageStoreVersion = moduleCompileManifestData.version;
var globalRequire = (path) => {
this.log.write(ILog_1.LogLevelEnum.DEBUG, "processRequire", ILog_1.LogCodeEnum.PROCESS.toString(), path, moduleCompileManifestData, __filename);
let responseModule = this.moduleManager.requireSync(path, "", moduleManagerRequireContextDataDependency, moduleCompileManifestData);
if (responseModule) {
return responseModule;
}
else {
this.log.write(ILog_1.LogLevelEnum.ERROR, "processRequire", ILog_1.LogCodeEnum.OPENFILE.toString(), path, moduleCompileManifestData, __filename);
throw new Error("Cannot find module '" + path + "'");
}
};
var newModule = this.moduleCompileJavaScript.compile(codeBuffer.toString(), moduleCompileManifestData, this.sandBoxContext, globalRequire);
return newModule.exports;
}
catch (errTry) {
var errDetail = {};
errDetail.moduleManagerRequireContextData = moduleManagerRequireContextData;
errDetail.moduleCompileManifestData = moduleCompileManifestData;
this.log.writeError("compilePackage", errTry, errDetail, __filename);
throw errTry;
}
}
compilePackageWasmAsync(moduleManagerRequireContextData, moduleCompileManifestData, codeBuffer) {
return new Promise((resolve, reject) => {
this.moduleCompileWasm.compile(codeBuffer, moduleCompileManifestData).then((newModule) => {
resolve(newModule.exports);
}).catch((errCompile) => {
var errDetail = {};
errDetail.moduleManagerRequireContextData = moduleManagerRequireContextData;
errDetail.moduleCompileManifestData = moduleCompileManifestData;
this.log.writeError("compilePackageWasmAsync", errCompile, errDetail, __filename);
reject(errCompile);
});
});
}
}
exports.ModuleManagerCompile = ModuleManagerCompile;
//# sourceMappingURL=ModuleManagerCompile.js.map