function-exec-sync
Version:
Run a function in a node process
51 lines • 1.67 kB
JavaScript
require('../polyfills.cjs');
var fs = require('fs');
var serialize = require('serialize-javascript');
var compat = require('async-compat');
var input = process.argv[2];
var output = process.argv[3];
function writeResult(result) {
fs.writeFile(output, serialize(result), 'utf8', function() {
process.exit(0);
});
}
function writeError(error) {
var result = {
error: {
message: error.message,
stack: error.stack
}
};
for(var key in error)result.error[key] = error[key];
writeResult(result);
}
// get data
try {
// biome-ignore lint/security/noGlobalEval: Serialize
var workerData = eval("(".concat(fs.readFileSync(input, 'utf8'), ")"));
// set up env
if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);
for(var key in workerData.env)process.env[key] = workerData.env[key];
// call function
var fn = require(workerData.filePath);
if (typeof fn !== 'function') {
writeResult({
value: fn
});
} else {
var args = [
fn,
workerData.callbacks
].concat(workerData.args);
args.push(function(err, value) {
err ? writeError(err) : writeResult({
value: value
});
});
compat.asyncFunction.apply(null, args);
}
} catch (err) {
writeError(err);
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
;