function-exec-sync
Advanced tools
| // CJS worker - uses CJS build of module-compat | ||
| // Only supports loading CJS modules (or ESM on Node 23+ via require) | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| var compat = require('async-compat'); | ||
| var fs = require('fs'); | ||
| var loadModule = require('module-compat').loadModule; | ||
| var path = require('path'); | ||
| var serialize = require(path.join(__dirname, '..', 'serialize-javascript.js')); | ||
| 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 errorObj = { | ||
| message: error.message, | ||
| stack: error.stack | ||
| }; | ||
| for(var key in error)errorObj[key] = error[key]; | ||
| writeResult({ | ||
| error: errorObj | ||
| }); | ||
| } | ||
| // get data | ||
| try { | ||
| // biome-ignore lint/security/noGlobalEval: Deserialize worker data | ||
| 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]; | ||
| // load and call function | ||
| var loadOptions = { | ||
| moduleType: workerData.moduleType || 'auto', | ||
| interop: workerData.interop || 'default' | ||
| }; | ||
| loadModule(workerData.filePath, loadOptions, function(err, fn) { | ||
| if (err) { | ||
| writeError(err); | ||
| return; | ||
| } | ||
| 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; } |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cts"],"sourcesContent":["// CJS worker - uses CJS build of module-compat\n// Only supports loading CJS modules (or ESM on Node 23+ via require)\n\nimport type { InteropMode, ModuleType } from 'module-compat';\n\nconst compat = require('async-compat');\nconst fs = require('fs');\nconst { loadModule } = require('module-compat');\nconst path = require('path');\n\nconst serialize = require(path.join(__dirname, '..', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n moduleType?: 'auto' | ModuleType;\n interop?: InteropMode;\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const errorObj: ResultValue['error'] = { message: error.message, stack: error.stack };\n for (const key in error) errorObj[key] = error[key];\n writeResult({ error: errorObj });\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Deserialize worker data\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // load and call function\n const loadOptions = {\n moduleType: workerData.moduleType || 'auto',\n interop: workerData.interop || 'default',\n };\n\n loadModule(workerData.filePath, loadOptions, (err: Error | null, fn: unknown) => {\n if (err) {\n writeError(err as Error & Record<string, unknown>);\n return;\n }\n\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn as unknown, workerData.callbacks as unknown].concat(workerData.args);\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n });\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["compat","require","fs","loadModule","path","serialize","join","__dirname","input","process","argv","output","writeResult","result","writeFile","exit","writeError","error","errorObj","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","loadOptions","moduleType","interop","filePath","err","fn","value","args","callbacks","concat","push","asyncFunction","apply"],"mappings":"AAAA,+CAA+C;AAC/C,qEAAqE;;;;;AAIrE,IAAMA,SAASC,QAAQ;AACvB,IAAMC,KAAKD,QAAQ;AACnB,IAAM,AAAEE,aAAeF,QAAQ,iBAAvBE;AACR,IAAMC,OAAOH,QAAQ;AAErB,IAAMI,YAAYJ,QAAQG,KAAKE,IAAI,CAACC,WAAW,MAAM;AAErD,IAAMC,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,IAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAqB9B,SAASE,YAAYC,MAAmB;IACtCX,GAAGY,SAAS,CAACH,QAAQN,UAAUQ,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,IAAMC,WAAiC;QAAEC,SAASF,MAAME,OAAO;QAAEC,OAAOH,MAAMG,KAAK;IAAC;IACpF,IAAK,IAAMC,OAAOJ,MAAOC,QAAQ,CAACG,IAAI,GAAGJ,KAAK,CAACI,IAAI;IACnDT,YAAY;QAAEK,OAAOC;IAAS;AAChC;AAEA,WAAW;AACX,IAAI;IACF,mEAAmE;IACnE,IAAMI,aAAyBC,KAAK,AAAC,IAAkC,OAA/BrB,GAAGsB,YAAY,CAAChB,OAAO,SAAQ;IAEvE,aAAa;IACb,IAAIC,QAAQgB,GAAG,OAAOH,WAAWG,GAAG,EAAEhB,QAAQiB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,IAAMJ,OAAOC,WAAWK,GAAG,CAAElB,QAAQkB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,yBAAyB;IACzB,IAAMO,cAAc;QAClBC,YAAYP,WAAWO,UAAU,IAAI;QACrCC,SAASR,WAAWQ,OAAO,IAAI;IACjC;IAEA3B,WAAWmB,WAAWS,QAAQ,EAAEH,aAAa,SAACI,KAAmBC;QAC/D,IAAID,KAAK;YACPhB,WAAWgB;YACX;QACF;QAEA,IAAI,OAAOC,OAAO,YAAY;YAC5BrB,YAAY;gBAAEsB,OAAOD;YAAG;QAC1B,OAAO;YACL,IAAME,OAAkB;gBAACF;gBAAeX,WAAWc,SAAS;aAAY,CAACC,MAAM,CAACf,WAAWa,IAAI;YAC/FA,KAAKG,IAAI,CAAC,SAACN,KAAmBE;gBAC5BF,MAAMhB,WAAWgB,OAA0CpB,YAAY;oBAAEsB,OAAAA;gBAAM;YACjF;YACAlC,OAAOuC,aAAa,CAACC,KAAK,CAAC,MAAML;QACnC;IACF;AACF,EAAE,OAAOH,KAAK;IACZhB,WAAWgB;AACb"} |
| export {}; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| var _asynccompat = /*#__PURE__*/ _interop_require_default(require("async-compat")); | ||
| var _fs = /*#__PURE__*/ _interop_require_default(require("fs")); | ||
| var _module = /*#__PURE__*/ _interop_require_default(require("module")); | ||
| var _modulecompat = require("module-compat"); | ||
| var _path = /*#__PURE__*/ _interop_require_default(require("path")); | ||
| var _url = /*#__PURE__*/ _interop_require_default(require("url")); | ||
| function _array_like_to_array(arr, len) { | ||
| if (len == null || len > arr.length) len = arr.length; | ||
| for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; | ||
| return arr2; | ||
| } | ||
| function _array_without_holes(arr) { | ||
| if (Array.isArray(arr)) return _array_like_to_array(arr); | ||
| } | ||
| function _interop_require_default(obj) { | ||
| return obj && obj.__esModule ? obj : { | ||
| default: obj | ||
| }; | ||
| } | ||
| function _iterable_to_array(iter) { | ||
| if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); | ||
| } | ||
| function _non_iterable_spread() { | ||
| throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); | ||
| } | ||
| function _to_consumable_array(arr) { | ||
| return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread(); | ||
| } | ||
| function _unsupported_iterable_to_array(o, minLen) { | ||
| if (!o) return; | ||
| if (typeof o === "string") return _array_like_to_array(o, minLen); | ||
| var n = Object.prototype.toString.call(o).slice(8, -1); | ||
| if (n === "Object" && o.constructor) n = o.constructor.name; | ||
| if (n === "Map" || n === "Set") return Array.from(n); | ||
| if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); | ||
| } | ||
| // ESM worker - uses ESM build of module-compat | ||
| // Supports loading both CJS and ESM modules via import() | ||
| var _require = _module.default.createRequire(require("url").pathToFileURL(__filename).toString()); | ||
| var __dirname = _path.default.dirname(_url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString())); | ||
| // Require serialize from CJS dist (ESM dist files can't be required on Node 12-22) | ||
| var serialize = _require(_path.default.join(__dirname, '..', '..', 'cjs', 'serialize-javascript.js')); | ||
| var input = process.argv[2]; | ||
| var output = process.argv[3]; | ||
| function writeResult(result) { | ||
| _fs.default.writeFile(output, serialize(result), 'utf8', function() { | ||
| process.exit(0); | ||
| }); | ||
| } | ||
| function writeError(error) { | ||
| var errorObj = { | ||
| message: error.message, | ||
| stack: error.stack | ||
| }; | ||
| for(var key in error)errorObj[key] = error[key]; | ||
| writeResult({ | ||
| error: errorObj | ||
| }); | ||
| } | ||
| // get data | ||
| try { | ||
| // biome-ignore lint/security/noGlobalEval: Deserialize worker data | ||
| var workerData = eval("(".concat(_fs.default.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]; | ||
| // load and call function | ||
| var loadOptions = { | ||
| moduleType: workerData.moduleType || 'auto', | ||
| interop: workerData.interop || 'default' | ||
| }; | ||
| (0, _modulecompat.loadModule)(workerData.filePath, loadOptions, function(err, fn) { | ||
| if (err) { | ||
| writeError(err); | ||
| return; | ||
| } | ||
| if (typeof fn !== 'function') { | ||
| writeResult({ | ||
| value: fn | ||
| }); | ||
| } else { | ||
| var args = [ | ||
| fn, | ||
| workerData.callbacks | ||
| ].concat(_to_consumable_array(workerData.args)); | ||
| args.push(function(err, value) { | ||
| err ? writeError(err) : writeResult({ | ||
| value: value | ||
| }); | ||
| }); | ||
| _asynccompat.default.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; } |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.mts"],"sourcesContent":["import compat from 'async-compat';\nimport fs from 'fs';\nimport Module from 'module';\nimport type { InteropMode, ModuleType } from 'module-compat';\nimport { loadModule } from 'module-compat';\nimport path from 'path';\nimport url from 'url';\n\n// ESM worker - uses ESM build of module-compat\n// Supports loading both CJS and ESM modules via import()\nconst _require = Module.createRequire(import.meta.url);\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\n// Require serialize from CJS dist (ESM dist files can't be required on Node 12-22)\nconst serialize = _require(path.join(__dirname, '..', '..', 'cjs', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n moduleType?: 'auto' | ModuleType;\n interop?: InteropMode;\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const errorObj: ResultValue['error'] = { message: error.message, stack: error.stack };\n for (const key in error) errorObj[key] = error[key];\n writeResult({ error: errorObj });\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Deserialize worker data\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // load and call function\n const loadOptions = {\n moduleType: workerData.moduleType || 'auto',\n interop: workerData.interop || 'default',\n };\n\n loadModule(workerData.filePath, loadOptions, (err, fn) => {\n if (err) {\n writeError(err as Error & Record<string, unknown>);\n return;\n }\n\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn, workerData.callbacks, ...workerData.args];\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args as Parameters<typeof compat.asyncFunction>);\n }\n });\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["_require","Module","createRequire","__dirname","path","dirname","url","fileURLToPath","serialize","join","input","process","argv","output","writeResult","result","fs","writeFile","exit","writeError","error","errorObj","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","loadOptions","moduleType","interop","loadModule","filePath","err","fn","value","args","callbacks","push","compat","asyncFunction","apply"],"mappings":";;;;kEAAmB;yDACJ;6DACI;4BAEQ;2DACV;0DACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhB,+CAA+C;AAC/C,yDAAyD;AACzD,IAAMA,WAAWC,eAAM,CAACC,aAAa,CAAC;AACtC,IAAMC,YAAYC,aAAI,CAACC,OAAO,CAACC,YAAG,CAACC,aAAa,CAAC;AAEjD,mFAAmF;AACnF,IAAMC,YAAYR,SAASI,aAAI,CAACK,IAAI,CAACN,WAAW,MAAM,MAAM,OAAO;AAEnE,IAAMO,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,IAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAqB9B,SAASE,YAAYC,MAAmB;IACtCC,WAAE,CAACC,SAAS,CAACJ,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQO,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,IAAMC,WAAiC;QAAEC,SAASF,MAAME,OAAO;QAAEC,OAAOH,MAAMG,KAAK;IAAC;IACpF,IAAK,IAAMC,OAAOJ,MAAOC,QAAQ,CAACG,IAAI,GAAGJ,KAAK,CAACI,IAAI;IACnDV,YAAY;QAAEM,OAAOC;IAAS;AAChC;AAEA,WAAW;AACX,IAAI;IACF,mEAAmE;IACnE,IAAMI,aAAyBC,KAAK,AAAC,IAAkC,OAA/BV,WAAE,CAACW,YAAY,CAACjB,OAAO,SAAQ;IAEvE,aAAa;IACb,IAAIC,QAAQiB,GAAG,OAAOH,WAAWG,GAAG,EAAEjB,QAAQkB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,IAAMJ,OAAOC,WAAWK,GAAG,CAAEnB,QAAQmB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,yBAAyB;IACzB,IAAMO,cAAc;QAClBC,YAAYP,WAAWO,UAAU,IAAI;QACrCC,SAASR,WAAWQ,OAAO,IAAI;IACjC;IAEAC,IAAAA,wBAAU,EAACT,WAAWU,QAAQ,EAAEJ,aAAa,SAACK,KAAKC;QACjD,IAAID,KAAK;YACPjB,WAAWiB;YACX;QACF;QAEA,IAAI,OAAOC,OAAO,YAAY;YAC5BvB,YAAY;gBAAEwB,OAAOD;YAAG;QAC1B,OAAO;YACL,IAAME,OAAkB;gBAACF;gBAAIZ,WAAWe,SAAS;aAAqB,CAA9C,OAA2B,qBAAGf,WAAWc,IAAI;YACrEA,KAAKE,IAAI,CAAC,SAACL,KAAmBE;gBAC5BF,MAAMjB,WAAWiB,OAA0CtB,YAAY;oBAAEwB,OAAAA;gBAAM;YACjF;YACAI,oBAAM,CAACC,aAAa,CAACC,KAAK,CAAC,MAAML;QACnC;IACF;AACF,EAAE,OAAOH,KAAK;IACZjB,WAAWiB;AACb"} |
| const compat = require('async-compat'); | ||
| const fs = require('fs'); | ||
| const { loadModule } = require('module-compat'); | ||
| const path = require('path'); | ||
| const serialize = require(path.join(__dirname, '..', 'serialize-javascript.js')); | ||
| const input = process.argv[2]; | ||
| const output = process.argv[3]; | ||
| function writeResult(result) { | ||
| fs.writeFile(output, serialize(result), 'utf8', ()=>{ | ||
| process.exit(0); | ||
| }); | ||
| } | ||
| function writeError(error) { | ||
| const errorObj = { | ||
| message: error.message, | ||
| stack: error.stack | ||
| }; | ||
| for(const key in error)errorObj[key] = error[key]; | ||
| writeResult({ | ||
| error: errorObj | ||
| }); | ||
| } | ||
| // get data | ||
| try { | ||
| // biome-ignore lint/security/noGlobalEval: Deserialize worker data | ||
| const workerData = eval(`(${fs.readFileSync(input, 'utf8')})`); | ||
| // set up env | ||
| if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd); | ||
| for(const key in workerData.env)process.env[key] = workerData.env[key]; | ||
| // load and call function | ||
| const loadOptions = { | ||
| moduleType: workerData.moduleType || 'auto', | ||
| interop: workerData.interop || 'default' | ||
| }; | ||
| loadModule(workerData.filePath, loadOptions, (err, fn)=>{ | ||
| if (err) { | ||
| writeError(err); | ||
| return; | ||
| } | ||
| if (typeof fn !== 'function') { | ||
| writeResult({ | ||
| value: fn | ||
| }); | ||
| } else { | ||
| const args = [ | ||
| fn, | ||
| workerData.callbacks | ||
| ].concat(workerData.args); | ||
| args.push((err, value)=>{ | ||
| err ? writeError(err) : writeResult({ | ||
| value | ||
| }); | ||
| }); | ||
| compat.asyncFunction.apply(null, args); | ||
| } | ||
| }); | ||
| } catch (err) { | ||
| writeError(err); | ||
| } | ||
| // CJS worker - uses CJS build of module-compat | ||
| // Only supports loading CJS modules (or ESM on Node 23+ via require) | ||
| export { }; |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cts"],"sourcesContent":["// CJS worker - uses CJS build of module-compat\n// Only supports loading CJS modules (or ESM on Node 23+ via require)\n\nimport type { InteropMode, ModuleType } from 'module-compat';\n\nconst compat = require('async-compat');\nconst fs = require('fs');\nconst { loadModule } = require('module-compat');\nconst path = require('path');\n\nconst serialize = require(path.join(__dirname, '..', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n moduleType?: 'auto' | ModuleType;\n interop?: InteropMode;\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const errorObj: ResultValue['error'] = { message: error.message, stack: error.stack };\n for (const key in error) errorObj[key] = error[key];\n writeResult({ error: errorObj });\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Deserialize worker data\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // load and call function\n const loadOptions = {\n moduleType: workerData.moduleType || 'auto',\n interop: workerData.interop || 'default',\n };\n\n loadModule(workerData.filePath, loadOptions, (err: Error | null, fn: unknown) => {\n if (err) {\n writeError(err as Error & Record<string, unknown>);\n return;\n }\n\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn as unknown, workerData.callbacks as unknown].concat(workerData.args);\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n });\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["compat","require","fs","loadModule","path","serialize","join","__dirname","input","process","argv","output","writeResult","result","writeFile","exit","writeError","error","errorObj","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","loadOptions","moduleType","interop","filePath","err","fn","value","args","callbacks","concat","push","asyncFunction","apply"],"mappings":"AAKA,MAAMA,SAASC,QAAQ;AACvB,MAAMC,KAAKD,QAAQ;AACnB,MAAM,EAAEE,UAAU,EAAE,GAAGF,QAAQ;AAC/B,MAAMG,OAAOH,QAAQ;AAErB,MAAMI,YAAYJ,QAAQG,KAAKE,IAAI,CAACC,WAAW,MAAM;AAErD,MAAMC,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,MAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAqB9B,SAASE,YAAYC,MAAmB;IACtCX,GAAGY,SAAS,CAACH,QAAQN,UAAUQ,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,MAAMC,WAAiC;QAAEC,SAASF,MAAME,OAAO;QAAEC,OAAOH,MAAMG,KAAK;IAAC;IACpF,IAAK,MAAMC,OAAOJ,MAAOC,QAAQ,CAACG,IAAI,GAAGJ,KAAK,CAACI,IAAI;IACnDT,YAAY;QAAEK,OAAOC;IAAS;AAChC;AAEA,WAAW;AACX,IAAI;IACF,mEAAmE;IACnE,MAAMI,aAAyBC,KAAK,CAAC,CAAC,EAAErB,GAAGsB,YAAY,CAAChB,OAAO,QAAQ,CAAC,CAAC;IAEzE,aAAa;IACb,IAAIC,QAAQgB,GAAG,OAAOH,WAAWG,GAAG,EAAEhB,QAAQiB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,MAAMJ,OAAOC,WAAWK,GAAG,CAAElB,QAAQkB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,yBAAyB;IACzB,MAAMO,cAAc;QAClBC,YAAYP,WAAWO,UAAU,IAAI;QACrCC,SAASR,WAAWQ,OAAO,IAAI;IACjC;IAEA3B,WAAWmB,WAAWS,QAAQ,EAAEH,aAAa,CAACI,KAAmBC;QAC/D,IAAID,KAAK;YACPhB,WAAWgB;YACX;QACF;QAEA,IAAI,OAAOC,OAAO,YAAY;YAC5BrB,YAAY;gBAAEsB,OAAOD;YAAG;QAC1B,OAAO;YACL,MAAME,OAAkB;gBAACF;gBAAeX,WAAWc,SAAS;aAAY,CAACC,MAAM,CAACf,WAAWa,IAAI;YAC/FA,KAAKG,IAAI,CAAC,CAACN,KAAmBE;gBAC5BF,MAAMhB,WAAWgB,OAA0CpB,YAAY;oBAAEsB;gBAAM;YACjF;YACAlC,OAAOuC,aAAa,CAACC,KAAK,CAAC,MAAML;QACnC;IACF;AACF,EAAE,OAAOH,KAAK;IACZhB,WAAWgB;AACb;AA/EA,+CAA+C;AAC/C,qEAAqE;AAErE,WAA6D"} |
| export {}; |
| export {}; |
| import compat from 'async-compat'; | ||
| import fs from 'fs'; | ||
| import Module from 'module'; | ||
| import { loadModule } from 'module-compat'; | ||
| import path from 'path'; | ||
| import url from 'url'; | ||
| // ESM worker - uses ESM build of module-compat | ||
| // Supports loading both CJS and ESM modules via import() | ||
| const _require = Module.createRequire(import.meta.url); | ||
| const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); | ||
| // Require serialize from CJS dist (ESM dist files can't be required on Node 12-22) | ||
| const serialize = _require(path.join(__dirname, '..', '..', 'cjs', 'serialize-javascript.js')); | ||
| const input = process.argv[2]; | ||
| const output = process.argv[3]; | ||
| function writeResult(result) { | ||
| fs.writeFile(output, serialize(result), 'utf8', ()=>{ | ||
| process.exit(0); | ||
| }); | ||
| } | ||
| function writeError(error) { | ||
| const errorObj = { | ||
| message: error.message, | ||
| stack: error.stack | ||
| }; | ||
| for(const key in error)errorObj[key] = error[key]; | ||
| writeResult({ | ||
| error: errorObj | ||
| }); | ||
| } | ||
| // get data | ||
| try { | ||
| // biome-ignore lint/security/noGlobalEval: Deserialize worker data | ||
| const workerData = eval(`(${fs.readFileSync(input, 'utf8')})`); | ||
| // set up env | ||
| if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd); | ||
| for(const key in workerData.env)process.env[key] = workerData.env[key]; | ||
| // load and call function | ||
| const loadOptions = { | ||
| moduleType: workerData.moduleType || 'auto', | ||
| interop: workerData.interop || 'default' | ||
| }; | ||
| loadModule(workerData.filePath, loadOptions, (err, fn)=>{ | ||
| if (err) { | ||
| writeError(err); | ||
| return; | ||
| } | ||
| if (typeof fn !== 'function') { | ||
| writeResult({ | ||
| value: fn | ||
| }); | ||
| } else { | ||
| const args = [ | ||
| fn, | ||
| workerData.callbacks, | ||
| ...workerData.args | ||
| ]; | ||
| args.push((err, value)=>{ | ||
| err ? writeError(err) : writeResult({ | ||
| value | ||
| }); | ||
| }); | ||
| compat.asyncFunction.apply(null, args); | ||
| } | ||
| }); | ||
| } catch (err) { | ||
| writeError(err); | ||
| } |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.mts"],"sourcesContent":["import compat from 'async-compat';\nimport fs from 'fs';\nimport Module from 'module';\nimport type { InteropMode, ModuleType } from 'module-compat';\nimport { loadModule } from 'module-compat';\nimport path from 'path';\nimport url from 'url';\n\n// ESM worker - uses ESM build of module-compat\n// Supports loading both CJS and ESM modules via import()\nconst _require = Module.createRequire(import.meta.url);\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\n// Require serialize from CJS dist (ESM dist files can't be required on Node 12-22)\nconst serialize = _require(path.join(__dirname, '..', '..', 'cjs', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n moduleType?: 'auto' | ModuleType;\n interop?: InteropMode;\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const errorObj: ResultValue['error'] = { message: error.message, stack: error.stack };\n for (const key in error) errorObj[key] = error[key];\n writeResult({ error: errorObj });\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Deserialize worker data\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // load and call function\n const loadOptions = {\n moduleType: workerData.moduleType || 'auto',\n interop: workerData.interop || 'default',\n };\n\n loadModule(workerData.filePath, loadOptions, (err, fn) => {\n if (err) {\n writeError(err as Error & Record<string, unknown>);\n return;\n }\n\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn, workerData.callbacks, ...workerData.args];\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args as Parameters<typeof compat.asyncFunction>);\n }\n });\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["compat","fs","Module","loadModule","path","url","_require","createRequire","__dirname","dirname","fileURLToPath","serialize","join","input","process","argv","output","writeResult","result","writeFile","exit","writeError","error","errorObj","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","loadOptions","moduleType","interop","filePath","err","fn","value","args","callbacks","push","asyncFunction","apply"],"mappings":"AAAA,OAAOA,YAAY,eAAe;AAClC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,YAAY,SAAS;AAE5B,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,+CAA+C;AAC/C,yDAAyD;AACzD,MAAMC,WAAWJ,OAAOK,aAAa,CAAC,YAAYF,GAAG;AACrD,MAAMG,YAAYJ,KAAKK,OAAO,CAACJ,IAAIK,aAAa,CAAC,YAAYL,GAAG;AAEhE,mFAAmF;AACnF,MAAMM,YAAYL,SAASF,KAAKQ,IAAI,CAACJ,WAAW,MAAM,MAAM,OAAO;AAEnE,MAAMK,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,MAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAqB9B,SAASE,YAAYC,MAAmB;IACtCjB,GAAGkB,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,MAAMC,WAAiC;QAAEC,SAASF,MAAME,OAAO;QAAEC,OAAOH,MAAMG,KAAK;IAAC;IACpF,IAAK,MAAMC,OAAOJ,MAAOC,QAAQ,CAACG,IAAI,GAAGJ,KAAK,CAACI,IAAI;IACnDT,YAAY;QAAEK,OAAOC;IAAS;AAChC;AAEA,WAAW;AACX,IAAI;IACF,mEAAmE;IACnE,MAAMI,aAAyBC,KAAK,CAAC,CAAC,EAAE3B,GAAG4B,YAAY,CAAChB,OAAO,QAAQ,CAAC,CAAC;IAEzE,aAAa;IACb,IAAIC,QAAQgB,GAAG,OAAOH,WAAWG,GAAG,EAAEhB,QAAQiB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,MAAMJ,OAAOC,WAAWK,GAAG,CAAElB,QAAQkB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,yBAAyB;IACzB,MAAMO,cAAc;QAClBC,YAAYP,WAAWO,UAAU,IAAI;QACrCC,SAASR,WAAWQ,OAAO,IAAI;IACjC;IAEAhC,WAAWwB,WAAWS,QAAQ,EAAEH,aAAa,CAACI,KAAKC;QACjD,IAAID,KAAK;YACPhB,WAAWgB;YACX;QACF;QAEA,IAAI,OAAOC,OAAO,YAAY;YAC5BrB,YAAY;gBAAEsB,OAAOD;YAAG;QAC1B,OAAO;YACL,MAAME,OAAkB;gBAACF;gBAAIX,WAAWc,SAAS;mBAAKd,WAAWa,IAAI;aAAC;YACtEA,KAAKE,IAAI,CAAC,CAACL,KAAmBE;gBAC5BF,MAAMhB,WAAWgB,OAA0CpB,YAAY;oBAAEsB;gBAAM;YACjF;YACAvC,OAAO2C,aAAa,CAACC,KAAK,CAAC,MAAMJ;QACnC;IACF;AACF,EAAE,OAAOH,KAAK;IACZhB,WAAWgB;AACb"} |
@@ -20,12 +20,5 @@ /** | ||
| } | ||
| /** | ||
| * os.tmpdir wrapper for Node.js 0.8+ | ||
| * - Uses native os.tmpdir on Node 0.10+ | ||
| * - Falls back to os-shim on Node 0.8 | ||
| */ var hasTmpdir = typeof _os.default.tmpdir === 'function'; | ||
| function tmpdir() { | ||
| if (hasTmpdir) return _os.default.tmpdir(); | ||
| var osShim = require('os-shim'); | ||
| return osShim.tmpdir(); | ||
| return typeof _os.default.tmpdir === 'function' ? _os.default.tmpdir() : require('os-shim').tmpdir(); | ||
| } | ||
| /* 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; } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport os from 'os';\n\n/**\n * os.tmpdir wrapper for Node.js 0.8+\n * - Uses native os.tmpdir on Node 0.10+\n * - Falls back to os-shim on Node 0.8\n */\nconst hasTmpdir = typeof os.tmpdir === 'function';\nexport function tmpdir(): string {\n if (hasTmpdir) return os.tmpdir();\n const osShim = require('os-shim');\n return osShim.tmpdir();\n}\n"],"names":["tmpdir","hasTmpdir","os","osShim","require"],"mappings":"AAAA;;;CAGC;;;;+BASeA;;;eAAAA;;;yDARD;;;;;;AAEf;;;;CAIC,GACD,IAAMC,YAAY,OAAOC,WAAE,CAACF,MAAM,KAAK;AAChC,SAASA;IACd,IAAIC,WAAW,OAAOC,WAAE,CAACF,MAAM;IAC/B,IAAMG,SAASC,QAAQ;IACvB,OAAOD,OAAOH,MAAM;AACtB"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport os from 'os';\n\nexport function tmpdir(): string {\n return typeof os.tmpdir === 'function' ? os.tmpdir() : require('os-shim').tmpdir();\n}\n"],"names":["tmpdir","os","require"],"mappings":"AAAA;;;CAGC;;;;+BAGeA;;;eAAAA;;;yDAFD;;;;;;AAER,SAASA;IACd,OAAO,OAAOC,WAAE,CAACD,MAAM,KAAK,aAAaC,WAAE,CAACD,MAAM,KAAKE,QAAQ,WAAWF,MAAM;AAClF"} |
@@ -14,2 +14,3 @@ "use strict"; | ||
| var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic")); | ||
| var _modulecompat = require("module-compat"); | ||
| var _path = /*#__PURE__*/ _interop_require_default(require("path")); | ||
@@ -64,4 +65,6 @@ var _shorthash = /*#__PURE__*/ _interop_require_default(require("short-hash")); | ||
| var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename); | ||
| // Worker MUST always load from dist/cjs/ for old Node compatibility (works from both cjs and esm) | ||
| var worker = _path.default.join(__dirname, '..', 'cjs', 'workers', 'runFunction.js'); | ||
| // Select worker based on Node version: | ||
| // - Node 12+: ESM worker (can load ESM modules via import()) | ||
| // - Node 0.8-11: CJS worker (CJS modules only) | ||
| var worker = (0, _modulecompat.supportsESM)() ? _path.default.join(__dirname, '..', 'esm', 'workers', 'runFunction.mjs') : _path.default.join(__dirname, '..', 'cjs', 'workers', 'runFunction.cjs'); | ||
| var existsSync = function(test) { | ||
@@ -93,3 +96,5 @@ try { | ||
| env: env, | ||
| cwd: options.cwd === undefined ? process.cwd() : options.cwd | ||
| cwd: options.cwd === undefined ? process.cwd() : options.cwd, | ||
| moduleType: options.moduleType || 'auto', | ||
| interop: options.interop || 'default' | ||
| }; | ||
@@ -96,0 +101,0 @@ var name = options.name === undefined ? 'function-exec-sync' : options.name; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\nimport { tmpdir } from './compat.ts';\nimport serialize from './serialize-javascript.ts';\n\nconst DEFAULT_SLEEP_MS = 100;\nconst NODES = ['node', 'node.exe', 'node.cmd'];\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\n// Worker MUST always load from dist/cjs/ for old Node compatibility (works from both cjs and esm)\nconst worker = path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.js');\n\nimport unlinkSafe from './unlinkSafe.ts';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { ExecWorkerOptions } from './types.ts';\n\ninterface NodeJSEnv extends NodeJS.ProcessEnv {\n NODE_OPTIONS: string;\n}\n\nexport type * from './types.ts';\nexport default function functionExecSync(filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions, filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions | string, filePath?: string | unknown[], ...args: unknown[]): unknown {\n if (typeof options === 'string') {\n args.unshift(filePath);\n filePath = options;\n options = null;\n }\n if (!filePath) throw new Error('function-exec-sync missing file');\n options = (options || {}) as ExecWorkerOptions;\n\n const env = { ...(options.env || process.env) } as NodeJSEnv;\n delete env.NODE_OPTIONS;\n const workerData = {\n filePath,\n args,\n callbacks: options.callbacks === undefined ? false : options.callbacks,\n env,\n cwd: options.cwd === undefined ? process.cwd() : options.cwd,\n };\n\n const name = options.name === undefined ? 'function-exec-sync' : options.name;\n const temp = path.join(tmpdir(), name, shortHash(workerData.cwd));\n const input = path.join(temp, suffix('input'));\n const output = path.join(temp, suffix('output'));\n const done = path.join(temp, suffix('done'));\n\n // store data to a file\n mkdirp.sync(path.dirname(input));\n fs.writeFileSync(input, serialize(workerData), 'utf8');\n unlinkSafe(output);\n\n // call the function\n const execPath = options.execPath || process.execPath;\n\n // only node\n if (NODES.indexOf(path.basename(execPath).toLowerCase()) < 0) throw new Error(`Expecting node executable. Received: ${path.basename(execPath)}`);\n\n // exec and start polling\n if (!cp.execFileSync) {\n const sleepMS = options.sleep === undefined ? DEFAULT_SLEEP_MS : options.sleep;\n let cmd = `\"${execPath}\" \"${worker}\" \"${input}\" \"${output}\"`;\n cmd += `${isWindows ? ' & ' : '; '}echo \"done\" > \"${done}\"`;\n cp.exec(cmd, { env });\n while (!existsSync(done)) {\n sleep(sleepMS);\n }\n } else {\n cp.execFileSync(execPath, [worker, input, output], { env });\n }\n unlinkSafe(input);\n unlinkSafe(done);\n\n // get data and clean up\n let res: { error?: Error; value: unknown };\n try {\n // biome-ignore lint/security/noGlobalEval: Serialize\n res = eval(`(${fs.readFileSync(output, 'utf8')})`);\n unlinkSafe(output);\n } catch (err) {\n throw new Error(`function-exec-sync: Error: ${err.message}. Function: ${filePath}. Exec path: ${execPath}`);\n }\n\n // throw error from the worker\n if (res.error) {\n const error = new Error(res.error.message);\n for (const key in res.error) error[key] = res.error[key];\n throw error;\n }\n // return the result\n return res.value;\n}\n"],"names":["functionExecSync","DEFAULT_SLEEP_MS","NODES","isWindows","process","platform","test","env","OSTYPE","__dirname","path","dirname","__filename","url","fileURLToPath","worker","join","existsSync","fs","accessSync","statSync","_","options","filePath","args","unshift","Error","NODE_OPTIONS","workerData","callbacks","undefined","cwd","name","temp","tmpdir","shortHash","input","suffix","output","done","mkdirp","sync","writeFileSync","serialize","unlinkSafe","execPath","indexOf","basename","toLowerCase","cp","execFileSync","sleepMS","sleep","cmd","exec","res","eval","readFileSync","err","message","error","key","value"],"mappings":"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"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport { supportsESM } from 'module-compat';\nimport path from 'path';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\nimport { tmpdir } from './compat.ts';\nimport serialize from './serialize-javascript.ts';\n\nconst DEFAULT_SLEEP_MS = 100;\nconst NODES = ['node', 'node.exe', 'node.cmd'];\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\n\n// Select worker based on Node version:\n// - Node 12+: ESM worker (can load ESM modules via import())\n// - Node 0.8-11: CJS worker (CJS modules only)\nconst worker = supportsESM() ? path.join(__dirname, '..', 'esm', 'workers', 'runFunction.mjs') : path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.cjs');\n\nimport unlinkSafe from './unlinkSafe.ts';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { ExecWorkerOptions } from './types.ts';\n\ninterface NodeJSEnv extends NodeJS.ProcessEnv {\n NODE_OPTIONS: string;\n}\n\nexport type * from './types.ts';\nexport default function functionExecSync(filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions, filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions | string, filePath?: string | unknown[], ...args: unknown[]): unknown {\n if (typeof options === 'string') {\n args.unshift(filePath);\n filePath = options;\n options = null;\n }\n if (!filePath) throw new Error('function-exec-sync missing file');\n options = (options || {}) as ExecWorkerOptions;\n\n const env = { ...(options.env || process.env) } as NodeJSEnv;\n delete env.NODE_OPTIONS;\n const workerData = {\n filePath,\n args,\n callbacks: options.callbacks === undefined ? false : options.callbacks,\n env,\n cwd: options.cwd === undefined ? process.cwd() : options.cwd,\n moduleType: options.moduleType || 'auto',\n interop: options.interop || 'default',\n };\n\n const name = options.name === undefined ? 'function-exec-sync' : options.name;\n const temp = path.join(tmpdir(), name, shortHash(workerData.cwd));\n const input = path.join(temp, suffix('input'));\n const output = path.join(temp, suffix('output'));\n const done = path.join(temp, suffix('done'));\n\n // store data to a file\n mkdirp.sync(path.dirname(input));\n fs.writeFileSync(input, serialize(workerData), 'utf8');\n unlinkSafe(output);\n\n // call the function\n const execPath = options.execPath || process.execPath;\n\n // only node\n if (NODES.indexOf(path.basename(execPath).toLowerCase()) < 0) throw new Error(`Expecting node executable. Received: ${path.basename(execPath)}`);\n\n // exec and start polling\n if (!cp.execFileSync) {\n const sleepMS = options.sleep === undefined ? DEFAULT_SLEEP_MS : options.sleep;\n let cmd = `\"${execPath}\" \"${worker}\" \"${input}\" \"${output}\"`;\n cmd += `${isWindows ? ' & ' : '; '}echo \"done\" > \"${done}\"`;\n cp.exec(cmd, { env });\n while (!existsSync(done)) {\n sleep(sleepMS);\n }\n } else {\n cp.execFileSync(execPath, [worker, input, output], { env });\n }\n unlinkSafe(input);\n unlinkSafe(done);\n\n // get data and clean up\n let res: { error?: Error; value: unknown };\n try {\n // biome-ignore lint/security/noGlobalEval: Serialize\n res = eval(`(${fs.readFileSync(output, 'utf8')})`);\n unlinkSafe(output);\n } catch (err) {\n throw new Error(`function-exec-sync: Error: ${err.message}. Function: ${filePath}. Exec path: ${execPath}`);\n }\n\n // throw error from the worker\n if (res.error) {\n const error = new Error(res.error.message);\n for (const key in res.error) error[key] = res.error[key];\n throw error;\n }\n // return the result\n return res.value;\n}\n"],"names":["functionExecSync","DEFAULT_SLEEP_MS","NODES","isWindows","process","platform","test","env","OSTYPE","__dirname","path","dirname","__filename","url","fileURLToPath","worker","supportsESM","join","existsSync","fs","accessSync","statSync","_","options","filePath","args","unshift","Error","NODE_OPTIONS","workerData","callbacks","undefined","cwd","moduleType","interop","name","temp","tmpdir","shortHash","input","suffix","output","done","mkdirp","sync","writeFileSync","serialize","unlinkSafe","execPath","indexOf","basename","toLowerCase","cp","execFileSync","sleepMS","sleep","cmd","exec","res","eval","readFileSync","err","message","error","key","value"],"mappings":"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"} |
@@ -0,1 +1,2 @@ | ||
| import type { InteropMode, ModuleType } from 'module-compat'; | ||
| export type ExecWorkerOptions = { | ||
@@ -8,2 +9,6 @@ name?: string; | ||
| sleep?: number; | ||
| /** Module type detection: 'auto' (default), 'module', or 'commonjs' */ | ||
| moduleType?: 'auto' | ModuleType; | ||
| /** How to handle ESM default exports: 'default' (default), 'raw', or 'typescript' */ | ||
| interop?: InteropMode; | ||
| }; |
@@ -0,1 +1,2 @@ | ||
| import type { InteropMode, ModuleType } from 'module-compat'; | ||
| export type ExecWorkerOptions = { | ||
@@ -8,2 +9,6 @@ name?: string; | ||
| sleep?: number; | ||
| /** Module type detection: 'auto' (default), 'module', or 'commonjs' */ | ||
| moduleType?: 'auto' | ModuleType; | ||
| /** How to handle ESM default exports: 'default' (default), 'raw', or 'typescript' */ | ||
| interop?: InteropMode; | ||
| }; |
@@ -1,1 +0,1 @@ | ||
| export default function unlinkSafe(filename: string): undefined; | ||
| export default function unlinkSafe(filename: string): void; |
@@ -1,1 +0,1 @@ | ||
| export default function unlinkSafe(filename: string): undefined; | ||
| export default function unlinkSafe(filename: string): void; |
@@ -20,3 +20,3 @@ "use strict"; | ||
| _fs.default.unlinkSync(filename); | ||
| } catch (e) { | ||
| } catch (unused) { | ||
| // skip | ||
@@ -23,0 +23,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/unlinkSafe.ts"],"sourcesContent":["import fs from 'fs';\n\nexport default function unlinkSafe(filename: string): undefined {\n try {\n fs.unlinkSync(filename);\n } catch {\n // skip\n }\n}\n"],"names":["unlinkSafe","filename","fs","unlinkSync"],"mappings":";;;;+BAEA;;;eAAwBA;;;yDAFT;;;;;;AAEA,SAASA,WAAWC,QAAgB;IACjD,IAAI;QACFC,WAAE,CAACC,UAAU,CAACF;IAChB,EAAE,UAAM;IACN,OAAO;IACT;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/unlinkSafe.ts"],"sourcesContent":["import fs from 'fs';\n\nexport default function unlinkSafe(filename: string): void {\n try {\n fs.unlinkSync(filename);\n } catch {\n // skip\n }\n}\n"],"names":["unlinkSafe","filename","fs","unlinkSync"],"mappings":";;;;+BAEA;;;eAAwBA;;;yDAFT;;;;;;AAEA,SAASA,WAAWC,QAAgB;IACjD,IAAI;QACFC,WAAE,CAACC,UAAU,CAACF;IAChB,EAAE,eAAM;IACN,OAAO;IACT;AACF"} |
@@ -5,11 +5,4 @@ /** | ||
| */ import os from 'os'; | ||
| /** | ||
| * os.tmpdir wrapper for Node.js 0.8+ | ||
| * - Uses native os.tmpdir on Node 0.10+ | ||
| * - Falls back to os-shim on Node 0.8 | ||
| */ const hasTmpdir = typeof os.tmpdir === 'function'; | ||
| export function tmpdir() { | ||
| if (hasTmpdir) return os.tmpdir(); | ||
| const osShim = require('os-shim'); | ||
| return osShim.tmpdir(); | ||
| return typeof os.tmpdir === 'function' ? os.tmpdir() : require('os-shim').tmpdir(); | ||
| } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport os from 'os';\n\n/**\n * os.tmpdir wrapper for Node.js 0.8+\n * - Uses native os.tmpdir on Node 0.10+\n * - Falls back to os-shim on Node 0.8\n */\nconst hasTmpdir = typeof os.tmpdir === 'function';\nexport function tmpdir(): string {\n if (hasTmpdir) return os.tmpdir();\n const osShim = require('os-shim');\n return osShim.tmpdir();\n}\n"],"names":["os","hasTmpdir","tmpdir","osShim","require"],"mappings":"AAAA;;;CAGC,GACD,OAAOA,QAAQ,KAAK;AAEpB;;;;CAIC,GACD,MAAMC,YAAY,OAAOD,GAAGE,MAAM,KAAK;AACvC,OAAO,SAASA;IACd,IAAID,WAAW,OAAOD,GAAGE,MAAM;IAC/B,MAAMC,SAASC,QAAQ;IACvB,OAAOD,OAAOD,MAAM;AACtB"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport os from 'os';\n\nexport function tmpdir(): string {\n return typeof os.tmpdir === 'function' ? os.tmpdir() : require('os-shim').tmpdir();\n}\n"],"names":["os","tmpdir","require"],"mappings":"AAAA;;;CAGC,GACD,OAAOA,QAAQ,KAAK;AAEpB,OAAO,SAASC;IACd,OAAO,OAAOD,GAAGC,MAAM,KAAK,aAAaD,GAAGC,MAAM,KAAKC,QAAQ,WAAWD,MAAM;AAClF"} |
| import cp from 'child_process'; | ||
| import fs from 'fs'; | ||
| import mkdirp from 'mkdirp-classic'; | ||
| import { supportsESM } from 'module-compat'; | ||
| import path from 'path'; | ||
@@ -19,4 +20,6 @@ import shortHash from 'short-hash'; | ||
| const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename); | ||
| // Worker MUST always load from dist/cjs/ for old Node compatibility (works from both cjs and esm) | ||
| const worker = path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.js'); | ||
| // Select worker based on Node version: | ||
| // - Node 12+: ESM worker (can load ESM modules via import()) | ||
| // - Node 0.8-11: CJS worker (CJS modules only) | ||
| const worker = supportsESM() ? path.join(__dirname, '..', 'esm', 'workers', 'runFunction.mjs') : path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.cjs'); | ||
| import unlinkSafe from './unlinkSafe.js'; | ||
@@ -48,3 +51,5 @@ const existsSync = (test)=>{ | ||
| env, | ||
| cwd: options.cwd === undefined ? process.cwd() : options.cwd | ||
| cwd: options.cwd === undefined ? process.cwd() : options.cwd, | ||
| moduleType: options.moduleType || 'auto', | ||
| interop: options.interop || 'default' | ||
| }; | ||
@@ -51,0 +56,0 @@ const name = options.name === undefined ? 'function-exec-sync' : options.name; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\nimport { tmpdir } from './compat.ts';\nimport serialize from './serialize-javascript.ts';\n\nconst DEFAULT_SLEEP_MS = 100;\nconst NODES = ['node', 'node.exe', 'node.cmd'];\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\n// Worker MUST always load from dist/cjs/ for old Node compatibility (works from both cjs and esm)\nconst worker = path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.js');\n\nimport unlinkSafe from './unlinkSafe.ts';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { ExecWorkerOptions } from './types.ts';\n\ninterface NodeJSEnv extends NodeJS.ProcessEnv {\n NODE_OPTIONS: string;\n}\n\nexport type * from './types.ts';\nexport default function functionExecSync(filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions, filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions | string, filePath?: string | unknown[], ...args: unknown[]): unknown {\n if (typeof options === 'string') {\n args.unshift(filePath);\n filePath = options;\n options = null;\n }\n if (!filePath) throw new Error('function-exec-sync missing file');\n options = (options || {}) as ExecWorkerOptions;\n\n const env = { ...(options.env || process.env) } as NodeJSEnv;\n delete env.NODE_OPTIONS;\n const workerData = {\n filePath,\n args,\n callbacks: options.callbacks === undefined ? false : options.callbacks,\n env,\n cwd: options.cwd === undefined ? process.cwd() : options.cwd,\n };\n\n const name = options.name === undefined ? 'function-exec-sync' : options.name;\n const temp = path.join(tmpdir(), name, shortHash(workerData.cwd));\n const input = path.join(temp, suffix('input'));\n const output = path.join(temp, suffix('output'));\n const done = path.join(temp, suffix('done'));\n\n // store data to a file\n mkdirp.sync(path.dirname(input));\n fs.writeFileSync(input, serialize(workerData), 'utf8');\n unlinkSafe(output);\n\n // call the function\n const execPath = options.execPath || process.execPath;\n\n // only node\n if (NODES.indexOf(path.basename(execPath).toLowerCase()) < 0) throw new Error(`Expecting node executable. Received: ${path.basename(execPath)}`);\n\n // exec and start polling\n if (!cp.execFileSync) {\n const sleepMS = options.sleep === undefined ? DEFAULT_SLEEP_MS : options.sleep;\n let cmd = `\"${execPath}\" \"${worker}\" \"${input}\" \"${output}\"`;\n cmd += `${isWindows ? ' & ' : '; '}echo \"done\" > \"${done}\"`;\n cp.exec(cmd, { env });\n while (!existsSync(done)) {\n sleep(sleepMS);\n }\n } else {\n cp.execFileSync(execPath, [worker, input, output], { env });\n }\n unlinkSafe(input);\n unlinkSafe(done);\n\n // get data and clean up\n let res: { error?: Error; value: unknown };\n try {\n // biome-ignore lint/security/noGlobalEval: Serialize\n res = eval(`(${fs.readFileSync(output, 'utf8')})`);\n unlinkSafe(output);\n } catch (err) {\n throw new Error(`function-exec-sync: Error: ${err.message}. Function: ${filePath}. Exec path: ${execPath}`);\n }\n\n // throw error from the worker\n if (res.error) {\n const error = new Error(res.error.message);\n for (const key in res.error) error[key] = res.error[key];\n throw error;\n }\n // return the result\n return res.value;\n}\n"],"names":["cp","fs","mkdirp","path","shortHash","suffix","sleep","url","tmpdir","serialize","DEFAULT_SLEEP_MS","NODES","isWindows","process","platform","test","env","OSTYPE","__dirname","dirname","__filename","fileURLToPath","worker","join","unlinkSafe","existsSync","accessSync","statSync","_","functionExecSync","options","filePath","args","unshift","Error","NODE_OPTIONS","workerData","callbacks","undefined","cwd","name","temp","input","output","done","sync","writeFileSync","execPath","indexOf","basename","toLowerCase","execFileSync","sleepMS","cmd","exec","res","eval","readFileSync","err","message","error","key","value"],"mappings":"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"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport { supportsESM } from 'module-compat';\nimport path from 'path';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\nimport { tmpdir } from './compat.ts';\nimport serialize from './serialize-javascript.ts';\n\nconst DEFAULT_SLEEP_MS = 100;\nconst NODES = ['node', 'node.exe', 'node.cmd'];\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\n\n// Select worker based on Node version:\n// - Node 12+: ESM worker (can load ESM modules via import())\n// - Node 0.8-11: CJS worker (CJS modules only)\nconst worker = supportsESM() ? path.join(__dirname, '..', 'esm', 'workers', 'runFunction.mjs') : path.join(__dirname, '..', 'cjs', 'workers', 'runFunction.cjs');\n\nimport unlinkSafe from './unlinkSafe.ts';\n\nconst existsSync = (test: string): boolean => {\n try {\n (fs.accessSync || fs.statSync)(test);\n return true;\n } catch (_) {\n return false;\n }\n};\n\nimport type { ExecWorkerOptions } from './types.ts';\n\ninterface NodeJSEnv extends NodeJS.ProcessEnv {\n NODE_OPTIONS: string;\n}\n\nexport type * from './types.ts';\nexport default function functionExecSync(filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions, filePath: string, ...args: unknown[]);\nexport default function functionExecSync(options: ExecWorkerOptions | string, filePath?: string | unknown[], ...args: unknown[]): unknown {\n if (typeof options === 'string') {\n args.unshift(filePath);\n filePath = options;\n options = null;\n }\n if (!filePath) throw new Error('function-exec-sync missing file');\n options = (options || {}) as ExecWorkerOptions;\n\n const env = { ...(options.env || process.env) } as NodeJSEnv;\n delete env.NODE_OPTIONS;\n const workerData = {\n filePath,\n args,\n callbacks: options.callbacks === undefined ? false : options.callbacks,\n env,\n cwd: options.cwd === undefined ? process.cwd() : options.cwd,\n moduleType: options.moduleType || 'auto',\n interop: options.interop || 'default',\n };\n\n const name = options.name === undefined ? 'function-exec-sync' : options.name;\n const temp = path.join(tmpdir(), name, shortHash(workerData.cwd));\n const input = path.join(temp, suffix('input'));\n const output = path.join(temp, suffix('output'));\n const done = path.join(temp, suffix('done'));\n\n // store data to a file\n mkdirp.sync(path.dirname(input));\n fs.writeFileSync(input, serialize(workerData), 'utf8');\n unlinkSafe(output);\n\n // call the function\n const execPath = options.execPath || process.execPath;\n\n // only node\n if (NODES.indexOf(path.basename(execPath).toLowerCase()) < 0) throw new Error(`Expecting node executable. Received: ${path.basename(execPath)}`);\n\n // exec and start polling\n if (!cp.execFileSync) {\n const sleepMS = options.sleep === undefined ? DEFAULT_SLEEP_MS : options.sleep;\n let cmd = `\"${execPath}\" \"${worker}\" \"${input}\" \"${output}\"`;\n cmd += `${isWindows ? ' & ' : '; '}echo \"done\" > \"${done}\"`;\n cp.exec(cmd, { env });\n while (!existsSync(done)) {\n sleep(sleepMS);\n }\n } else {\n cp.execFileSync(execPath, [worker, input, output], { env });\n }\n unlinkSafe(input);\n unlinkSafe(done);\n\n // get data and clean up\n let res: { error?: Error; value: unknown };\n try {\n // biome-ignore lint/security/noGlobalEval: Serialize\n res = eval(`(${fs.readFileSync(output, 'utf8')})`);\n unlinkSafe(output);\n } catch (err) {\n throw new Error(`function-exec-sync: Error: ${err.message}. Function: ${filePath}. Exec path: ${execPath}`);\n }\n\n // throw error from the worker\n if (res.error) {\n const error = new Error(res.error.message);\n for (const key in res.error) error[key] = res.error[key];\n throw error;\n }\n // return the result\n return res.value;\n}\n"],"names":["cp","fs","mkdirp","supportsESM","path","shortHash","suffix","sleep","url","tmpdir","serialize","DEFAULT_SLEEP_MS","NODES","isWindows","process","platform","test","env","OSTYPE","__dirname","dirname","__filename","fileURLToPath","worker","join","unlinkSafe","existsSync","accessSync","statSync","_","functionExecSync","options","filePath","args","unshift","Error","NODE_OPTIONS","workerData","callbacks","undefined","cwd","moduleType","interop","name","temp","input","output","done","sync","writeFileSync","execPath","indexOf","basename","toLowerCase","execFileSync","sleepMS","cmd","exec","res","eval","readFileSync","err","message","error","key","value"],"mappings":"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"} |
@@ -0,1 +1,2 @@ | ||
| import type { InteropMode, ModuleType } from 'module-compat'; | ||
| export type ExecWorkerOptions = { | ||
@@ -8,2 +9,6 @@ name?: string; | ||
| sleep?: number; | ||
| /** Module type detection: 'auto' (default), 'module', or 'commonjs' */ | ||
| moduleType?: 'auto' | ModuleType; | ||
| /** How to handle ESM default exports: 'default' (default), 'raw', or 'typescript' */ | ||
| interop?: InteropMode; | ||
| }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/types.ts"],"sourcesContent":["export type ExecWorkerOptions = {\n name?: string;\n cwd?: string;\n env?: object;\n callbacks?: boolean;\n execPath?: string;\n sleep?: number;\n};\n"],"names":[],"mappings":"AAAA,WAOE"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/types.ts"],"sourcesContent":["import type { InteropMode, ModuleType } from 'module-compat';\n\nexport type ExecWorkerOptions = {\n name?: string;\n cwd?: string;\n env?: object;\n callbacks?: boolean;\n execPath?: string;\n sleep?: number;\n /** Module type detection: 'auto' (default), 'module', or 'commonjs' */\n moduleType?: 'auto' | ModuleType;\n /** How to handle ESM default exports: 'default' (default), 'raw', or 'typescript' */\n interop?: InteropMode;\n};\n"],"names":[],"mappings":"AAEA,WAWE"} |
@@ -1,1 +0,1 @@ | ||
| export default function unlinkSafe(filename: string): undefined; | ||
| export default function unlinkSafe(filename: string): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/unlinkSafe.ts"],"sourcesContent":["import fs from 'fs';\n\nexport default function unlinkSafe(filename: string): undefined {\n try {\n fs.unlinkSync(filename);\n } catch {\n // skip\n }\n}\n"],"names":["fs","unlinkSafe","filename","unlinkSync"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AAEpB,eAAe,SAASC,WAAWC,QAAgB;IACjD,IAAI;QACFF,GAAGG,UAAU,CAACD;IAChB,EAAE,OAAM;IACN,OAAO;IACT;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/unlinkSafe.ts"],"sourcesContent":["import fs from 'fs';\n\nexport default function unlinkSafe(filename: string): void {\n try {\n fs.unlinkSync(filename);\n } catch {\n // skip\n }\n}\n"],"names":["fs","unlinkSafe","filename","unlinkSync"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AAEpB,eAAe,SAASC,WAAWC,QAAgB;IACjD,IAAI;QACFF,GAAGG,UAAU,CAACD;IAChB,EAAE,OAAM;IACN,OAAO;IACT;AACF"} |
+12
-11
| { | ||
| "name": "function-exec-sync", | ||
| "version": "1.5.6", | ||
| "version": "2.0.0", | ||
| "description": "Run a function in a node process", | ||
@@ -49,18 +49,19 @@ "keywords": [ | ||
| "dependencies": { | ||
| "async-compat": "^1.7.9", | ||
| "mkdirp-classic": "^0.5.3", | ||
| "os-shim": "^0.1.3", | ||
| "async-compat": "^1.4.6", | ||
| "mkdirp-classic": "^0.5.2", | ||
| "module-compat": "^0.1.0", | ||
| "os-shim": "^0.1.0", | ||
| "randombytes": "^2.1.0", | ||
| "short-hash": "^1.0.0", | ||
| "temp-suffix": "^1.0.10", | ||
| "thread-sleep-compat": "^1.1.5" | ||
| "thread-sleep-compat": "^1.1.6" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "^25.0.2", | ||
| "@types/mocha": "*", | ||
| "@types/node": "*", | ||
| "lodash.keys": "^4.2.0", | ||
| "node-version-use": "^2.1.7", | ||
| "pinkie-promise": "^2.0.1", | ||
| "ts-dev-stack": "^1.21.3", | ||
| "tsds-config": "^0.2.2" | ||
| "node-version-use": "*", | ||
| "pinkie-promise": "*", | ||
| "ts-dev-stack": "*", | ||
| "tsds-config": "*" | ||
| }, | ||
@@ -67,0 +68,0 @@ "engines": { |
| export {}; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| var _asynccompat = /*#__PURE__*/ _interop_require_default(require("async-compat")); | ||
| var _fs = /*#__PURE__*/ _interop_require_default(require("fs")); | ||
| var _module = /*#__PURE__*/ _interop_require_default(require("module")); | ||
| var _path = /*#__PURE__*/ _interop_require_default(require("path")); | ||
| var _url = /*#__PURE__*/ _interop_require_default(require("url")); | ||
| function _interop_require_default(obj) { | ||
| return obj && obj.__esModule ? obj : { | ||
| default: obj | ||
| }; | ||
| } | ||
| // CJS/ESM compatibility | ||
| var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require; | ||
| var __dirname = _path.default.dirname(typeof __filename !== 'undefined' ? __filename : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString())); | ||
| // Worker path is relative to dist/cjs/workers/ at runtime | ||
| var serialize = _require(_path.default.join(__dirname, '..', 'serialize-javascript.js')); | ||
| var input = process.argv[2]; | ||
| var output = process.argv[3]; | ||
| function writeResult(result) { | ||
| _fs.default.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.default.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 | ||
| }); | ||
| }); | ||
| _asynccompat.default.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; } |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.ts"],"sourcesContent":["import compat from 'async-compat';\nimport fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\nimport url from 'url';\n\n// CJS/ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n// Worker path is relative to dist/cjs/workers/ at runtime\nconst serialize = _require(path.join(__dirname, '..', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const result: ResultValue = { error: { message: error.message, stack: error.stack } };\n for (const key in error) result.error![key] = error[key];\n writeResult(result);\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Serialize\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // call function\n const fn = _require(workerData.filePath);\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args as Parameters<typeof compat.asyncFunction>);\n }\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["_require","require","Module","createRequire","__dirname","path","dirname","__filename","url","fileURLToPath","serialize","join","input","process","argv","output","writeResult","result","fs","writeFile","exit","writeError","error","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","fn","filePath","value","args","callbacks","concat","push","err","compat","asyncFunction","apply"],"mappings":";;;;kEAAmB;yDACJ;6DACI;2DACF;0DACD;;;;;;AAEhB,wBAAwB;AACxB,IAAMA,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAElG,0DAA0D;AAC1D,IAAMC,YAAYV,SAASK,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM;AAEtD,IAAMQ,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,IAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAmB9B,SAASE,YAAYC,MAAmB;IACtCC,WAAE,CAACC,SAAS,CAACJ,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQO,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,IAAML,SAAsB;QAAEK,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACpF,IAAK,IAAMC,OAAOH,MAAOL,OAAOK,KAAK,AAAC,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACxDT,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,IAAMS,aAAyBC,KAAK,AAAC,IAAkC,OAA/BT,WAAE,CAACU,YAAY,CAAChB,OAAO,SAAQ;IAEvE,aAAa;IACb,IAAIC,QAAQgB,GAAG,OAAOH,WAAWG,GAAG,EAAEhB,QAAQiB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,IAAMJ,OAAOC,WAAWK,GAAG,CAAElB,QAAQkB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,gBAAgB;IAChB,IAAMO,KAAKhC,SAAS0B,WAAWO,QAAQ;IACvC,IAAI,OAAOD,OAAO,YAAY;QAC5BhB,YAAY;YAAEkB,OAAOF;QAAG;IAC1B,OAAO;QACL,IAAMG,OAAkB;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QACzEA,KAAKG,IAAI,CAAC,SAACC,KAAmBL;YAC5BK,MAAMlB,WAAWkB,OAA0CvB,YAAY;gBAAEkB,OAAAA;YAAM;QACjF;QACAM,oBAAM,CAACC,aAAa,CAACC,KAAK,CAAC,MAAMP;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} |
| export {}; |
| import compat from 'async-compat'; | ||
| import fs from 'fs'; | ||
| import Module from 'module'; | ||
| import path from 'path'; | ||
| import url from 'url'; | ||
| // CJS/ESM compatibility | ||
| const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require; | ||
| const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url)); | ||
| // Worker path is relative to dist/cjs/workers/ at runtime | ||
| const serialize = _require(path.join(__dirname, '..', 'serialize-javascript.js')); | ||
| const input = process.argv[2]; | ||
| const output = process.argv[3]; | ||
| function writeResult(result) { | ||
| fs.writeFile(output, serialize(result), 'utf8', ()=>{ | ||
| process.exit(0); | ||
| }); | ||
| } | ||
| function writeError(error) { | ||
| const result = { | ||
| error: { | ||
| message: error.message, | ||
| stack: error.stack | ||
| } | ||
| }; | ||
| for(const key in error)result.error[key] = error[key]; | ||
| writeResult(result); | ||
| } | ||
| // get data | ||
| try { | ||
| // biome-ignore lint/security/noGlobalEval: Serialize | ||
| const workerData = eval(`(${fs.readFileSync(input, 'utf8')})`); | ||
| // set up env | ||
| if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd); | ||
| for(const key in workerData.env)process.env[key] = workerData.env[key]; | ||
| // call function | ||
| const fn = _require(workerData.filePath); | ||
| if (typeof fn !== 'function') { | ||
| writeResult({ | ||
| value: fn | ||
| }); | ||
| } else { | ||
| const args = [ | ||
| fn, | ||
| workerData.callbacks | ||
| ].concat(workerData.args); | ||
| args.push((err, value)=>{ | ||
| err ? writeError(err) : writeResult({ | ||
| value | ||
| }); | ||
| }); | ||
| compat.asyncFunction.apply(null, args); | ||
| } | ||
| } catch (err) { | ||
| writeError(err); | ||
| } |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.ts"],"sourcesContent":["import compat from 'async-compat';\nimport fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\nimport url from 'url';\n\n// CJS/ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n// Worker path is relative to dist/cjs/workers/ at runtime\nconst serialize = _require(path.join(__dirname, '..', 'serialize-javascript.js'));\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\ninterface WorkerData {\n cwd: string;\n env: Record<string, string>;\n filePath: string;\n callbacks: boolean;\n args: unknown[];\n}\n\ninterface ResultValue {\n value?: unknown;\n error?: {\n message: string;\n stack?: string;\n [key: string]: unknown;\n };\n}\n\nfunction writeResult(result: ResultValue): void {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error: Error & Record<string, unknown>): void {\n const result: ResultValue = { error: { message: error.message, stack: error.stack } };\n for (const key in error) result.error![key] = error[key];\n writeResult(result);\n}\n\n// get data\ntry {\n // biome-ignore lint/security/noGlobalEval: Serialize\n const workerData: WorkerData = eval(`(${fs.readFileSync(input, 'utf8')})`);\n\n // set up env\n if (process.cwd() !== workerData.cwd) process.chdir(workerData.cwd);\n for (const key in workerData.env) process.env[key] = workerData.env[key];\n\n // call function\n const fn = _require(workerData.filePath);\n if (typeof fn !== 'function') {\n writeResult({ value: fn });\n } else {\n const args: unknown[] = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err: Error | null, value: unknown) => {\n err ? writeError(err as Error & Record<string, unknown>) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args as Parameters<typeof compat.asyncFunction>);\n }\n} catch (err) {\n writeError(err as Error & Record<string, unknown>);\n}\n"],"names":["compat","fs","Module","path","url","_require","require","createRequire","__dirname","dirname","__filename","fileURLToPath","serialize","join","input","process","argv","output","writeResult","result","writeFile","exit","writeError","error","message","stack","key","workerData","eval","readFileSync","cwd","chdir","env","fn","filePath","value","args","callbacks","concat","push","err","asyncFunction","apply"],"mappings":"AAAA,OAAOA,YAAY,eAAe;AAClC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,wBAAwB;AACxB,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,OAAOK,aAAa,CAAC,YAAYH,GAAG,IAAIE;AAC1F,MAAME,YAAYL,KAAKM,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaN,IAAIO,aAAa,CAAC,YAAYP,GAAG;AAEjH,0DAA0D;AAC1D,MAAMQ,YAAYP,SAASF,KAAKU,IAAI,CAACL,WAAW,MAAM;AAEtD,MAAMM,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,MAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAmB9B,SAASE,YAAYC,MAAmB;IACtClB,GAAGmB,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAsC;IACxD,MAAMJ,SAAsB;QAAEI,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACpF,IAAK,MAAMC,OAAOH,MAAOJ,OAAOI,KAAK,AAAC,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACxDR,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,MAAMQ,aAAyBC,KAAK,CAAC,CAAC,EAAE3B,GAAG4B,YAAY,CAACf,OAAO,QAAQ,CAAC,CAAC;IAEzE,aAAa;IACb,IAAIC,QAAQe,GAAG,OAAOH,WAAWG,GAAG,EAAEf,QAAQgB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,MAAMJ,OAAOC,WAAWK,GAAG,CAAEjB,QAAQiB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,gBAAgB;IAChB,MAAMO,KAAK5B,SAASsB,WAAWO,QAAQ;IACvC,IAAI,OAAOD,OAAO,YAAY;QAC5Bf,YAAY;YAAEiB,OAAOF;QAAG;IAC1B,OAAO;QACL,MAAMG,OAAkB;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QACzEA,KAAKG,IAAI,CAAC,CAACC,KAAmBL;YAC5BK,MAAMlB,WAAWkB,OAA0CtB,YAAY;gBAAEiB;YAAM;QACjF;QACAnC,OAAOyC,aAAa,CAACC,KAAK,CAAC,MAAMN;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 2 instances in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
118833
17.86%52
10.64%1149
18.45%8
14.29%26
85.71%8
33.33%+ Added
+ Added
+ Added
Updated
Updated
Updated
Updated