UNPKG

@webfaas/webfaas-core

Version:

WebFaaS Framework - Core

89 lines 4.9 kB
"use strict"; 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