76 lines
5.3 KiB
JavaScript
76 lines
5.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.evaluate = void 0;
|
|
const vm = require("vm");
|
|
const isBuffer = Buffer.isBuffer;
|
|
const requireLike = require("require-like");
|
|
function merge(a, b) {
|
|
if (!a || !b)
|
|
return a;
|
|
var keys = Object.keys(b);
|
|
for (var k, i = 0, n = keys.length; i < n; i++) {
|
|
k = keys[i];
|
|
a[k] = b[k];
|
|
}
|
|
return a;
|
|
}
|
|
// Return the exports/module.exports variable set in the content
|
|
// content (String|VmScript): required
|
|
const evaluate = (content, filename, scope, includeGlobals) => {
|
|
if (typeof filename !== 'string') {
|
|
if (typeof filename === 'object') {
|
|
includeGlobals = scope;
|
|
scope = filename;
|
|
filename = '';
|
|
}
|
|
else if (typeof filename === 'boolean') {
|
|
includeGlobals = filename;
|
|
scope = {};
|
|
filename = '';
|
|
}
|
|
}
|
|
// Expose standard Node globals
|
|
let sandbox = {};
|
|
let exports = {};
|
|
let _filename = filename || module.parent.filename;
|
|
if (includeGlobals) {
|
|
merge(sandbox, global);
|
|
// console is non-enumerable in node v10 and above
|
|
sandbox.console = global.console;
|
|
// process is non-enumerable in node v12 and above
|
|
sandbox.process = global.process;
|
|
sandbox.URL = global.URL;
|
|
sandbox.require = requireLike(_filename);
|
|
}
|
|
if (typeof scope === 'object') {
|
|
merge(sandbox, scope);
|
|
}
|
|
sandbox.exports = exports;
|
|
sandbox.module = {
|
|
exports: exports,
|
|
filename: _filename,
|
|
id: _filename,
|
|
parent: module.parent,
|
|
require: sandbox.require || requireLike(_filename)
|
|
};
|
|
sandbox.global = sandbox;
|
|
var options = {
|
|
filename: filename,
|
|
displayErrors: false
|
|
};
|
|
if (isBuffer(content)) {
|
|
content = content.toString();
|
|
}
|
|
// Evaluate the content with the given scope
|
|
if (typeof content === 'string') {
|
|
var stringScript = content.replace(/^\#\!.*/, '');
|
|
var script = new vm.Script(stringScript, options);
|
|
script.runInNewContext(sandbox, options);
|
|
}
|
|
else {
|
|
content.runInNewContext(sandbox, options);
|
|
}
|
|
return sandbox.module.exports;
|
|
};
|
|
exports.evaluate = evaluate;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92bS9ldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF3QjtBQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFBO0FBQ2hDLDRDQUE2QztBQUU3QyxTQUFTLEtBQUssQ0FBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RCLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDWjtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQztBQUVELGdFQUFnRTtBQUNoRSxzQ0FBc0M7QUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRTtJQUVuRSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUNoQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1lBQ3RCLEtBQUssR0FBRyxRQUFRLENBQUE7WUFDaEIsUUFBUSxHQUFHLEVBQUUsQ0FBQTtTQUNkO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDeEMsY0FBYyxHQUFHLFFBQVEsQ0FBQTtZQUN6QixLQUFLLEdBQUcsRUFBRSxDQUFBO1lBQ1YsUUFBUSxHQUFHLEVBQUUsQ0FBQTtTQUNkO0tBQ0Y7SUFFRCwrQkFBK0I7SUFDL0IsSUFBSSxPQUFPLEdBQU8sRUFBRSxDQUFBO0lBQ3BCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNoQixJQUFJLFNBQVMsR0FBRyxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFFbkQsSUFBSSxjQUFjLEVBQUU7UUFDbEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN0QixrREFBa0Q7UUFDbEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFBO1FBQ2hDLGtEQUFrRDtRQUNsRCxPQUFPLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUE7UUFDaEMsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQ3pDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUN0QjtJQUVELE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQ3pCLE9BQU8sQ0FBQyxNQUFNLEdBQUc7UUFDZixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsU0FBUztRQUNuQixFQUFFLEVBQUUsU0FBUztRQUNiLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDO0tBQ25ELENBQUE7SUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQTtJQUV4QixJQUFJLE9BQU8sR0FBRztRQUNaLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLGFBQWEsRUFBRSxLQUFLO0tBQ3JCLENBQUE7SUFFRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNyQixPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0tBQzdCO0lBRUQsNENBQTRDO0lBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1FBQy9CLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2pELElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDakQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7S0FDekM7U0FBTTtRQUNMLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0tBQzFDO0lBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQTtBQUMvQixDQUFDLENBQUE7QUE5RFksUUFBQSxRQUFRLFlBOERwQiJ9
|