UNPKG

@webfaas/webfaas-core

Version:

WebFaaS Framework - Core

67 lines 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleCompileJavaScript = void 0; const vm = require("vm"); const SandBox_1 = require("./SandBox"); const Log_1 = require("../Log/Log"); const ILog_1 = require("../Log/ILog"); const WebFaasError_1 = require("../WebFaasError/WebFaasError"); const wrapper = [ "(function (exports, require, module, __filename, __dirname) { ", "\n});" ]; /** * ModuleCompileJavaScript */ class ModuleCompileJavaScript { constructor(log) { this.defaultGlobalRequire = (path) => { this.log.write(ILog_1.LogLevelEnum.DEBUG, "defaultGlobalRequire", ILog_1.LogCodeEnum.PROCESS.toString(), path, null, __filename); return require(path); }; this.log = log || new Log_1.Log(); this.defaultSandBoxContext = SandBox_1.SandBox.SandBoxBuilderContext(); } getLog() { return this.log; } /** * return a code compiled * @param code * @param moduleCompileManifestData * @param sandboxContext * @param globalRequire */ compile(code, moduleCompileManifestData, sandboxContext, globalRequire) { try { let timeInit = new Date().getTime(); let codeWrapper = wrapper[0] + code + wrapper[1]; if (!sandboxContext) { sandboxContext = this.defaultSandBoxContext; } var compiledWrapper = vm.runInNewContext(codeWrapper, sandboxContext, { filename: moduleCompileManifestData.mainFileFullPath, lineOffset: 0, displayErrors: true }); //let newModule = {} as Object; let newModule = {}; newModule.exports = {}; compiledWrapper(newModule.exports, globalRequire || this.defaultGlobalRequire, newModule, moduleCompileManifestData.mainFileFullPath, moduleCompileManifestData.mainFileDirName); //logDetail let logDetail = {}; logDetail.manifest = moduleCompileManifestData; logDetail.delay = new Date().getTime() - timeInit; this.log.write(ILog_1.LogLevelEnum.INFO, "compile", ILog_1.LogCodeEnum.COMPILE.toString(), "compiled", logDetail, __filename); return newModule; } catch (errTry) { let logDetail = {}; logDetail.moduleCompileManifestData = moduleCompileManifestData; this.log.writeError("compile", errTry, logDetail, __filename); throw new WebFaasError_1.WebFaasError.CompileError(errTry); } } } exports.ModuleCompileJavaScript = ModuleCompileJavaScript; //# sourceMappingURL=ModuleCompileJavaScript.js.map