function-exec-sync
Advanced tools
@@ -1,2 +0,1 @@ | ||
| import './polyfills.cjs'; | ||
| import type { ExecWorkerOptions } from './types.ts'; | ||
@@ -3,0 +2,0 @@ export type * from './types.ts'; |
@@ -1,2 +0,1 @@ | ||
| import './polyfills.cjs'; | ||
| import type { ExecWorkerOptions } from './types.ts'; | ||
@@ -3,0 +2,0 @@ export type * from './types.ts'; |
@@ -11,3 +11,2 @@ "use strict"; | ||
| }); | ||
| require("./polyfills.cjs"); | ||
| var _child_process = /*#__PURE__*/ _interop_require_default(require("child_process")); | ||
@@ -14,0 +13,0 @@ var _fs = /*#__PURE__*/ _interop_require_default(require("fs")); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import './polyfills.cjs';\nimport cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport os from 'os';\nimport osShim from 'os-shim';\nimport path from 'path';\nimport serialize from 'serialize-javascript';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\n\nconst tmpdir = os.tmpdir || osShim.tmpdir;\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);\nconst worker = path.join(__dirname, '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 };\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","tmpdir","os","osShim","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","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 os from 'os';\nimport osShim from 'os-shim';\nimport path from 'path';\nimport serialize from 'serialize-javascript';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\n\nconst tmpdir = os.tmpdir || osShim.tmpdir;\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);\nconst worker = path.join(__dirname, '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 };\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","tmpdir","os","osShim","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","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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"} |
| "use strict"; | ||
| require('../polyfills.cjs'); | ||
| var fs = require('fs'); | ||
@@ -4,0 +3,0 @@ var serialize = require('serialize-javascript'); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cjs"],"sourcesContent":["require('../polyfills.cjs');\nconst fs = require('fs');\nconst serialize = require('serialize-javascript');\nconst compat = require('async-compat');\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\nfunction writeResult(result) {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error) {\n const result = { 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 = 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 = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err, value) => {\n err ? writeError(err) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n} catch (err) {\n writeError(err);\n}\n"],"names":["require","fs","serialize","compat","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":";AAAAA,QAAQ;AACR,IAAMC,KAAKD,QAAQ;AACnB,IAAME,YAAYF,QAAQ;AAC1B,IAAMG,SAASH,QAAQ;AAEvB,IAAMI,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,IAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAE9B,SAASE,YAAYC,MAAM;IACzBR,GAAGS,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAK;IACvB,IAAMJ,SAAS;QAAEI,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACvE,IAAK,IAAMC,OAAOH,MAAOJ,OAAOI,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACvDR,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,IAAMQ,aAAaC,KAAK,AAAC,IAAkC,OAA/BjB,GAAGkB,YAAY,CAACf,OAAO,SAAQ;IAE3D,aAAa;IACb,IAAIC,QAAQe,GAAG,OAAOH,WAAWG,GAAG,EAAEf,QAAQgB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,IAAMJ,OAAOC,WAAWK,GAAG,CAAEjB,QAAQiB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,gBAAgB;IAChB,IAAMO,KAAKvB,QAAQiB,WAAWO,QAAQ;IACtC,IAAI,OAAOD,OAAO,YAAY;QAC5Bf,YAAY;YAAEiB,OAAOF;QAAG;IAC1B,OAAO;QACL,IAAMG,OAAO;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QAC9DA,KAAKG,IAAI,CAAC,SAACC,KAAKL;YACdK,MAAMlB,WAAWkB,OAAOtB,YAAY;gBAAEiB,OAAAA;YAAM;QAC9C;QACAtB,OAAO4B,aAAa,CAACC,KAAK,CAAC,MAAMN;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cjs"],"sourcesContent":["const fs = require('fs');\nconst serialize = require('serialize-javascript');\nconst compat = require('async-compat');\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\nfunction writeResult(result) {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error) {\n const result = { 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 = 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 = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err, value) => {\n err ? writeError(err) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n} catch (err) {\n writeError(err);\n}\n"],"names":["fs","require","serialize","compat","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,IAAMA,KAAKC,QAAQ;AACnB,IAAMC,YAAYD,QAAQ;AAC1B,IAAME,SAASF,QAAQ;AAEvB,IAAMG,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,IAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAE9B,SAASE,YAAYC,MAAM;IACzBT,GAAGU,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAK;IACvB,IAAMJ,SAAS;QAAEI,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACvE,IAAK,IAAMC,OAAOH,MAAOJ,OAAOI,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACvDR,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,IAAMQ,aAAaC,KAAK,AAAC,IAAkC,OAA/BlB,GAAGmB,YAAY,CAACf,OAAO,SAAQ;IAE3D,aAAa;IACb,IAAIC,QAAQe,GAAG,OAAOH,WAAWG,GAAG,EAAEf,QAAQgB,KAAK,CAACJ,WAAWG,GAAG;IAClE,IAAK,IAAMJ,OAAOC,WAAWK,GAAG,CAAEjB,QAAQiB,GAAG,CAACN,IAAI,GAAGC,WAAWK,GAAG,CAACN,IAAI;IAExE,gBAAgB;IAChB,IAAMO,KAAKtB,QAAQgB,WAAWO,QAAQ;IACtC,IAAI,OAAOD,OAAO,YAAY;QAC5Bf,YAAY;YAAEiB,OAAOF;QAAG;IAC1B,OAAO;QACL,IAAMG,OAAO;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QAC9DA,KAAKG,IAAI,CAAC,SAACC,KAAKL;YACdK,MAAMlB,WAAWkB,OAAOtB,YAAY;gBAAEiB,OAAAA;YAAM;QAC9C;QACAtB,OAAO4B,aAAa,CAACC,KAAK,CAAC,MAAMN;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} |
@@ -1,2 +0,1 @@ | ||
| import './polyfills.cjs'; | ||
| import type { ExecWorkerOptions } from './types.ts'; | ||
@@ -3,0 +2,0 @@ export type * from './types.ts'; |
@@ -1,2 +0,1 @@ | ||
| import './polyfills.cjs'; | ||
| import cp from 'child_process'; | ||
@@ -3,0 +2,0 @@ import fs from 'fs'; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/index.ts"],"sourcesContent":["import './polyfills.cjs';\nimport cp from 'child_process';\nimport fs from 'fs';\nimport mkdirp from 'mkdirp-classic';\nimport os from 'os';\nimport osShim from 'os-shim';\nimport path from 'path';\nimport serialize from 'serialize-javascript';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\n\nconst tmpdir = os.tmpdir || osShim.tmpdir;\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);\nconst worker = path.join(__dirname, '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 };\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","os","osShim","path","serialize","shortHash","suffix","sleep","url","tmpdir","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 os from 'os';\nimport osShim from 'os-shim';\nimport path from 'path';\nimport serialize from 'serialize-javascript';\nimport shortHash from 'short-hash';\nimport suffix from 'temp-suffix';\nimport sleep from 'thread-sleep-compat';\nimport url from 'url';\n\nconst tmpdir = os.tmpdir || osShim.tmpdir;\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);\nconst worker = path.join(__dirname, '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 };\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","os","osShim","path","serialize","shortHash","suffix","sleep","url","tmpdir","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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"} |
@@ -1,2 +0,1 @@ | ||
| require('../polyfills.cjs'); | ||
| const fs = require('fs'); | ||
@@ -3,0 +2,0 @@ const serialize = require('serialize-javascript'); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cjs"],"sourcesContent":["require('../polyfills.cjs');\nconst fs = require('fs');\nconst serialize = require('serialize-javascript');\nconst compat = require('async-compat');\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\nfunction writeResult(result) {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error) {\n const result = { 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 = 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 = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err, value) => {\n err ? writeError(err) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n} catch (err) {\n writeError(err);\n}\n"],"names":["require","fs","serialize","compat","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":"AAAAA,QAAQ;AACR,MAAMC,KAAKD,QAAQ;AACnB,MAAME,YAAYF,QAAQ;AAC1B,MAAMG,SAASH,QAAQ;AAEvB,MAAMI,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,MAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAE9B,SAASE,YAAYC,MAAM;IACzBR,GAAGS,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAK;IACvB,MAAMJ,SAAS;QAAEI,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACvE,IAAK,MAAMC,OAAOH,MAAOJ,OAAOI,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACvDR,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,MAAMQ,aAAaC,KAAK,CAAC,CAAC,EAAEjB,GAAGkB,YAAY,CAACf,OAAO,QAAQ,CAAC,CAAC;IAE7D,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,KAAKvB,QAAQiB,WAAWO,QAAQ;IACtC,IAAI,OAAOD,OAAO,YAAY;QAC5Bf,YAAY;YAAEiB,OAAOF;QAAG;IAC1B,OAAO;QACL,MAAMG,OAAO;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QAC9DA,KAAKG,IAAI,CAAC,CAACC,KAAKL;YACdK,MAAMlB,WAAWkB,OAAOtB,YAAY;gBAAEiB;YAAM;QAC9C;QACAtB,OAAO4B,aAAa,CAACC,KAAK,CAAC,MAAMN;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/workers/runFunction.cjs"],"sourcesContent":["const fs = require('fs');\nconst serialize = require('serialize-javascript');\nconst compat = require('async-compat');\n\nconst input = process.argv[2];\nconst output = process.argv[3];\n\nfunction writeResult(result) {\n fs.writeFile(output, serialize(result), 'utf8', () => {\n process.exit(0);\n });\n}\n\nfunction writeError(error) {\n const result = { 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 = 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 = [fn, workerData.callbacks].concat(workerData.args);\n args.push((err, value) => {\n err ? writeError(err) : writeResult({ value });\n });\n compat.asyncFunction.apply(null, args);\n }\n} catch (err) {\n writeError(err);\n}\n"],"names":["fs","require","serialize","compat","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,MAAMA,KAAKC,QAAQ;AACnB,MAAMC,YAAYD,QAAQ;AAC1B,MAAME,SAASF,QAAQ;AAEvB,MAAMG,QAAQC,QAAQC,IAAI,CAAC,EAAE;AAC7B,MAAMC,SAASF,QAAQC,IAAI,CAAC,EAAE;AAE9B,SAASE,YAAYC,MAAM;IACzBT,GAAGU,SAAS,CAACH,QAAQL,UAAUO,SAAS,QAAQ;QAC9CJ,QAAQM,IAAI,CAAC;IACf;AACF;AAEA,SAASC,WAAWC,KAAK;IACvB,MAAMJ,SAAS;QAAEI,OAAO;YAAEC,SAASD,MAAMC,OAAO;YAAEC,OAAOF,MAAME,KAAK;QAAC;IAAE;IACvE,IAAK,MAAMC,OAAOH,MAAOJ,OAAOI,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI;IACvDR,YAAYC;AACd;AAEA,WAAW;AACX,IAAI;IACF,qDAAqD;IACrD,MAAMQ,aAAaC,KAAK,CAAC,CAAC,EAAElB,GAAGmB,YAAY,CAACf,OAAO,QAAQ,CAAC,CAAC;IAE7D,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,KAAKtB,QAAQgB,WAAWO,QAAQ;IACtC,IAAI,OAAOD,OAAO,YAAY;QAC5Bf,YAAY;YAAEiB,OAAOF;QAAG;IAC1B,OAAO;QACL,MAAMG,OAAO;YAACH;YAAIN,WAAWU,SAAS;SAAC,CAACC,MAAM,CAACX,WAAWS,IAAI;QAC9DA,KAAKG,IAAI,CAAC,CAACC,KAAKL;YACdK,MAAMlB,WAAWkB,OAAOtB,YAAY;gBAAEiB;YAAM;QAC9C;QACAtB,OAAO4B,aAAa,CAACC,KAAK,CAAC,MAAMN;IACnC;AACF,EAAE,OAAOI,KAAK;IACZlB,WAAWkB;AACb"} |
+3
-2
| { | ||
| "name": "function-exec-sync", | ||
| "version": "1.3.4", | ||
| "version": "1.4.0", | ||
| "description": "Run a function in a node process", | ||
@@ -42,2 +42,3 @@ "keywords": [ | ||
| "format": "biome check --write --unsafe", | ||
| "postinstall": "patch-package", | ||
| "test": "mocha --no-timeouts test/**/*.test.*", | ||
@@ -49,5 +50,5 @@ "test:engines": "nvu engines tsds test:node --no-timeouts", | ||
| "async-compat": "^1.6.16", | ||
| "core-js": "^3.43.0", | ||
| "mkdirp-classic": "^0.5.3", | ||
| "os-shim": "^0.1.3", | ||
| "patch-package": "^8.0.0", | ||
| "serialize-javascript": "6.0.2", | ||
@@ -54,0 +55,0 @@ "short-hash": "^1.0.0", |
| "use strict"; | ||
| require('core-js/actual/array/from'); | ||
| require('core-js/actual/map'); | ||
| require('core-js/actual/set'); | ||
| if (!global.URL) global.URL = require('core-js/web/url'); | ||
| // @ts-ignore | ||
| if (!global.BigInt) global.BigInt = function(v) { | ||
| return v; | ||
| }; // not supported | ||
| /* 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/polyfills.cjs"],"sourcesContent":["require('core-js/actual/array/from');\nrequire('core-js/actual/map');\nrequire('core-js/actual/set');\nif (!global.URL) global.URL = require('core-js/web/url');\n// @ts-ignore\nif (!global.BigInt) global.BigInt = (v) => v; // not supported\n"],"names":["require","global","URL","BigInt","v"],"mappings":";AAAAA,QAAQ;AACRA,QAAQ;AACRA,QAAQ;AACR,IAAI,CAACC,OAAOC,GAAG,EAAED,OAAOC,GAAG,GAAGF,QAAQ;AACtC,aAAa;AACb,IAAI,CAACC,OAAOE,MAAM,EAAEF,OAAOE,MAAM,GAAG,SAACC;WAAMA;GAAG,gBAAgB"} |
| export {}; |
| require('core-js/actual/array/from'); | ||
| require('core-js/actual/map'); | ||
| require('core-js/actual/set'); | ||
| if (!global.URL) global.URL = require('core-js/web/url'); | ||
| // @ts-ignore | ||
| if (!global.BigInt) global.BigInt = (v)=>v; // not supported |
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/function-exec-sync/src/polyfills.cjs"],"sourcesContent":["require('core-js/actual/array/from');\nrequire('core-js/actual/map');\nrequire('core-js/actual/set');\nif (!global.URL) global.URL = require('core-js/web/url');\n// @ts-ignore\nif (!global.BigInt) global.BigInt = (v) => v; // not supported\n"],"names":["require","global","URL","BigInt","v"],"mappings":"AAAAA,QAAQ;AACRA,QAAQ;AACRA,QAAQ;AACR,IAAI,CAACC,OAAOC,GAAG,EAAED,OAAOC,GAAG,GAAGF,QAAQ;AACtC,aAAa;AACb,IAAI,CAACC,OAAOE,MAAM,EAAEF,OAAOE,MAAM,GAAG,CAACC,IAAMA,GAAG,gBAAgB"} |
| export {}; |
Install scripts
Supply chain riskInstall scripts are run when the package is installed or built. Malicious packages often use scripts that run automatically to execute payloads or fetch additional code.
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
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
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
40485
-5.36%32
-15.79%407
-4.91%1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed