UNPKG

function-exec-sync

Version:

Run a function in a node process

51 lines 1.67 kB
"use strict"; 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; }