UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

47 lines (45 loc) 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapCode = exports.wrapRequire = void 0; const foxpage_shared_1 = require("@foxpage/foxpage-shared"); const service_1 = require("../service"); /** * wrap require * * @export * @param {NodeRequire} req * @param {WrappedPackageDetail} [{ deps = [] }={}] * @return {*} {NodeRequire} */ function wrapRequire(req, { appId = '', deps } = {}) { const wrappedRequire = (id) => { var _a; const idx = deps ? deps.findIndex(it => it === id) : -1; if (idx > -1) { const foxpagePackage = (_a = (0, service_1.getApplication)(appId)) === null || _a === void 0 ? void 0 : _a.packageManager.getPackageSync(id); if (foxpagePackage && foxpagePackage.available) { return foxpagePackage.exported; } } return req(id); }; Object.assign(wrappedRequire, req); return wrappedRequire; } exports.wrapRequire = wrapRequire; const fnName = 'wrapRequire'; /** * to support foxpage package require other foxpage package, we need impl my `require` fn to override original * @param code */ function wrapCode(code, detail) { const data = (0, foxpage_shared_1.pick)(detail, ['appId', 'name', 'version', 'deps']); const arg = JSON.stringify(data, undefined, 2); const filepath = __filename.replace(/\\/g, '\\\\'); const wrapped = ` ;var require = require("${filepath}").${fnName}(require, ${arg}); ${code} `; return wrapped; } exports.wrapCode = wrapCode;