@tapjs/processinfo 2.2.2 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/get-process-info.d.ts.map +1 -1
- package/dist/cjs/get-process-info.js +8 -2
- package/dist/cjs/get-process-info.js.map +1 -1
- package/dist/cjs/register-env.d.ts.map +1 -1
- package/dist/cjs/register-env.js +7 -5
- package/dist/cjs/register-env.js.map +1 -1
- package/dist/mjs/esm.d.mts.map +1 -1
- package/dist/mjs/esm.mjs +12 -0
- package/dist/mjs/esm.mjs.map +1 -1
- package/dist/mjs/get-process-info.d.ts.map +1 -1
- package/dist/mjs/get-process-info.js +8 -2
- package/dist/mjs/get-process-info.js.map +1 -1
- package/dist/mjs/register-env.d.ts.map +1 -1
- package/dist/mjs/register-env.js +7 -5
- package/dist/mjs/register-env.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-process-info.d.ts","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"get-process-info.d.ts","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":";AAQA,MAAM,WAAW,mBAAmB;IAElC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAG1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAGjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AA0BD,eAAO,MAAM,KAAK;0BAKgB,mBAAmB;CAFpD,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,mBA6CjC,CAAA"}
|
|
@@ -4,15 +4,16 @@ exports.getProcessInfo = exports.reset = void 0;
|
|
|
4
4
|
// we always want this
|
|
5
5
|
const p = process;
|
|
6
6
|
p.setSourceMapsEnabled(true);
|
|
7
|
+
const node_url_1 = require("node:url");
|
|
7
8
|
const uuid_1 = require("uuid");
|
|
8
9
|
const envKey = (k) => `_TAPJS_PROCESSINFO_${k.toUpperCase()}_`;
|
|
9
10
|
const getEnv = (k) => process.env[envKey(k)];
|
|
10
11
|
const setEnv = (k, v) => (process.env[envKey(k)] = v);
|
|
11
12
|
const delEnv = (k) => delete process.env[envKey(k)];
|
|
13
|
+
const register_cjs_js_1 = require("./register-cjs.js");
|
|
12
14
|
const register_coverage_js_1 = require("./register-coverage.js");
|
|
13
15
|
const register_env_js_1 = require("./register-env.js");
|
|
14
16
|
const register_process_end_js_1 = require("./register-process-end.js");
|
|
15
|
-
const register_cjs_js_1 = require("./register-cjs.js");
|
|
16
17
|
// this module is hybridized. In node v20, it's the *commonjs* one that
|
|
17
18
|
// gets loaded, because the esm loader context can't modify the main thread
|
|
18
19
|
// except via communication over the port to the globalPreload env.
|
|
@@ -31,6 +32,11 @@ exports.reset = reset;
|
|
|
31
32
|
const getProcessInfo = () => {
|
|
32
33
|
if (g[kProcessInfo])
|
|
33
34
|
return g[kProcessInfo];
|
|
35
|
+
const argv1 = process.argv[1];
|
|
36
|
+
// we only test this in CJS, but file:// only prepended in ESM
|
|
37
|
+
/* c8 ignore start */
|
|
38
|
+
const main = argv1.startsWith('file://') ? (0, node_url_1.fileURLToPath)(argv1) : argv1;
|
|
39
|
+
/* c8 ignore stop */
|
|
34
40
|
g[kProcessInfo] = {
|
|
35
41
|
hrstart: process.hrtime(),
|
|
36
42
|
date: new Date().toISOString(),
|
|
@@ -42,7 +48,7 @@ const getProcessInfo = () => {
|
|
|
42
48
|
ppid: process.ppid,
|
|
43
49
|
parent: getEnv('parent') || null,
|
|
44
50
|
uuid: (0, uuid_1.v4)(),
|
|
45
|
-
files: [],
|
|
51
|
+
files: [main],
|
|
46
52
|
sources: Object.create(null),
|
|
47
53
|
};
|
|
48
54
|
if (!g[kProcessInfo].parent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-process-info.js","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":";;;AAAA,sBAAsB;AACtB,MAAM,CAAC,GAAG,OAET,CAAA;AACD,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAE5B,+BAAiC;
|
|
1
|
+
{"version":3,"file":"get-process-info.js","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":"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","sourcesContent":["// we always want this\nconst p = process as NodeJS.Process & {\n setSourceMapsEnabled(v: boolean): void\n}\np.setSourceMapsEnabled(true)\n\nimport { fileURLToPath } from 'node:url'\nimport { v4 as uuid } from 'uuid'\nexport interface ProcessInfoNodeData {\n // set initially, but deleted before it is written\n hrstart?: [number, number]\n\n // always set\n date: string\n argv: string[]\n execArgv: string[]\n NODE_OPTIONS?: string\n cwd: string\n pid: number\n ppid: number\n parent: string | null\n uuid: string\n files: string[]\n sources: Record<string, string[]>\n\n // fields that are only set when the process completes\n root?: string | null\n externalID?: string | null\n code?: number | null\n signal?: NodeJS.Signals | null\n runtime?: number\n globalsAdded?: string[]\n}\n\nconst envKey = (k: string) => `_TAPJS_PROCESSINFO_${k.toUpperCase()}_`\nconst getEnv = (k: string) => process.env[envKey(k)]\nconst setEnv = (k: string, v: string) => (process.env[envKey(k)] = v)\nconst delEnv = (k: string) => delete process.env[envKey(k)]\n\nimport { register as registerCJS } from './register-cjs.js'\nimport { register as registerCoverage } from './register-coverage.js'\nimport { register as registerEnv } from './register-env.js'\nimport { register as registerProcessEnd } from './register-process-end.js'\n\n// this module is hybridized. In node v20, it's the *commonjs* one that\n// gets loaded, because the esm loader context can't modify the main thread\n// except via communication over the port to the globalPreload env.\n// So, we have to store our singleton on the global.\n//\n// If it later loads the esm form of this module, that's fine, because it'll\n// see the global processInfo object, and not re-register anything.\n\nconst kProcessInfo = Symbol.for('@tapjs/processinfo.ProcessInfoNodeData')\nconst g = global as typeof globalThis & {\n [kProcessInfo]?: ProcessInfoNodeData\n}\n\n// only used for tests so we can simulate multiple processes\nexport const reset = () => {\n g[kProcessInfo] = undefined\n return { getProcessInfo }\n}\n\nexport const getProcessInfo = (): ProcessInfoNodeData => {\n if (g[kProcessInfo]) return g[kProcessInfo]\n\n const argv1 = process.argv[1]\n // we only test this in CJS, but file:// only prepended in ESM\n /* c8 ignore start */\n const main = argv1.startsWith('file://') ? fileURLToPath(argv1) : argv1\n /* c8 ignore stop */\n\n g[kProcessInfo] = {\n hrstart: process.hrtime(),\n date: new Date().toISOString(),\n argv: process.argv,\n execArgv: process.execArgv,\n NODE_OPTIONS: process.env.NODE_OPTIONS,\n cwd: process.cwd(),\n pid: process.pid,\n ppid: process.ppid,\n parent: getEnv('parent') || null,\n uuid: uuid(),\n files: [main],\n sources: Object.create(null),\n }\n\n if (!g[kProcessInfo].parent) {\n g[kProcessInfo].root = g[kProcessInfo].uuid\n setEnv('root', g[kProcessInfo].uuid)\n } else {\n g[kProcessInfo].root = getEnv('root')\n }\n // this is the parent of any further child processes\n setEnv('parent', g[kProcessInfo].uuid)\n const externalID = getEnv('external_id')\n if (externalID) {\n g[kProcessInfo].externalID = externalID\n // externalID only applies to ONE process, not all its children.\n delEnv('external_id')\n }\n\n registerCJS()\n registerEnv()\n registerCoverage()\n registerProcessEnd()\n\n return g[kProcessInfo]\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-env.d.ts","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-env.d.ts","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,QAAQ,YAQpB,CAAA"}
|
package/dist/cjs/register-env.js
CHANGED
|
@@ -11,14 +11,16 @@ const { hasOwnProperty } = Object.prototype;
|
|
|
11
11
|
const getEnvs = (env) => {
|
|
12
12
|
// load it here so that it isn't cached before the loader attaches
|
|
13
13
|
// in self-test scenario.
|
|
14
|
-
|
|
15
|
-
return Object.fromEntries(Object.entries(
|
|
16
|
-
.filter(([k]) => !hasOwnProperty.call(env
|
|
17
|
-
.concat([
|
|
14
|
+
// copy all of OUR envs, if not specifically set on the env object
|
|
15
|
+
return Object.fromEntries(Object.entries(process.env)
|
|
16
|
+
.filter(([k]) => !(env && hasOwnProperty.call(env, k)) && envRE.test(k))
|
|
17
|
+
.concat([
|
|
18
|
+
['NODE_OPTIONS', (0, node_options_env_js_1.nodeOptionsEnv)(process.env, process.execArgv)],
|
|
19
|
+
]));
|
|
18
20
|
};
|
|
19
21
|
const register = () => {
|
|
20
22
|
process_on_spawn_1.default.addListener(obj => {
|
|
21
|
-
obj.env = Object.assign(obj.env || {}, getEnvs(obj.env));
|
|
23
|
+
obj.env = Object.assign(obj.env || { ...process.env }, getEnvs(obj.env));
|
|
22
24
|
return obj;
|
|
23
25
|
});
|
|
24
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-env.js","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":";;;;;;AAAA,wEAA6C;AAC7C,+DAAsD;AAEtD,MAAM,KAAK,GAAG,sBAAsB,CAAA;AACpC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC1C,kEAAkE;IAClE,yBAAyB;IACzB,
|
|
1
|
+
{"version":3,"file":"register-env.js","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":";;;;;;AAAA,wEAA6C;AAC7C,+DAAsD;AAEtD,MAAM,KAAK,GAAG,sBAAsB,CAAA;AACpC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC1C,kEAAkE;IAClE,yBAAyB;IACzB,kEAAkE;IAClE,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SACxB,MAAM,CACL,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAChE;SACA,MAAM,CAAC;QACN,CAAC,cAAc,EAAE,IAAA,oCAAc,EAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;KAChE,CAAC,CACL,CAAA;AACH,CAAC,CAAA;AAEM,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,0BAAc,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAC/B,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CACrB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CACjB,CAAA;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AARY,QAAA,QAAQ,YAQpB","sourcesContent":["import processOnSpawn from 'process-on-spawn'\nimport { nodeOptionsEnv } from './node-options-env.js'\n\nconst envRE = /^_TAPJS_PROCESSINFO_/\nconst { hasOwnProperty } = Object.prototype\n\nconst getEnvs = (env?: NodeJS.ProcessEnv) => {\n // load it here so that it isn't cached before the loader attaches\n // in self-test scenario.\n // copy all of OUR envs, if not specifically set on the env object\n return Object.fromEntries(\n Object.entries(process.env)\n .filter(\n ([k]) => !(env && hasOwnProperty.call(env, k)) && envRE.test(k)\n )\n .concat([\n ['NODE_OPTIONS', nodeOptionsEnv(process.env, process.execArgv)],\n ])\n )\n}\n\nexport const register = () => {\n processOnSpawn.addListener(obj => {\n obj.env = Object.assign(\n obj.env || { ...process.env },\n getEnvs(obj.env)\n )\n return obj\n })\n}\n"]}
|
package/dist/mjs/esm.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esm.d.mts","sourceRoot":"","sources":["../../lib/esm.mts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"esm.d.mts","sourceRoot":"","sources":["../../lib/esm.mts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOlD,cAAc,YAAY,CAAA;AAU1B,KAAK,MAAM,GAAG;IACZ,WAAW,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,GAAG,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,aAAa,YAAa;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,WAsBvD,CAAA;AAGD,eAAO,MAAM,IAAI,QACV,MAAM,WACF,GAAG,YACF,QAAQ,iBAyBnB,CAAA"}
|
package/dist/mjs/esm.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// usage: node '--loader=@tapjs/processinfo/esm' foo.mjs
|
|
2
|
+
import { parse } from 'path';
|
|
2
3
|
import { fileURLToPath } from 'url';
|
|
3
4
|
import { getExclude } from './get-exclude.js';
|
|
4
5
|
import { getProcessInfo } from './get-process-info.js';
|
|
@@ -43,6 +44,17 @@ export const load = async (url, context, nextLoad) => {
|
|
|
43
44
|
getProcessInfo().files.push(filename);
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
const { ext } = parse(filename);
|
|
48
|
+
// Package bins will sometimes have an extensionless bin script
|
|
49
|
+
// instead of just naming their extensioned file and letting npm
|
|
50
|
+
// symlink it for them. Don't blow up when this happens, just tell
|
|
51
|
+
// node that it's commonjs.
|
|
52
|
+
if (!ext) {
|
|
53
|
+
return {
|
|
54
|
+
format: 'commonjs',
|
|
55
|
+
shortCircuit: true,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
46
58
|
}
|
|
47
59
|
return nextLoad(url, context);
|
|
48
60
|
};
|
package/dist/mjs/esm.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esm.mjs","sourceRoot":"","sources":["../../lib/esm.mts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,sEAAsE;AACtE,mCAAmC;AACnC,cAAc,YAAY,CAAA;AAa1B,IAAI,IAAI,GAAuB,SAAS,CAAA;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA0B,EAAE,EAAE;IAC1D,2DAA2D;IAC3D,sCAAsC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAC9B,IAAI,GAAG,IAAI,CAAA;IACX,OAAO;;;;kCAIyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;CAWrD,CAAA;AACD,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,UAAU,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,GAAW,EACX,OAAY,EACZ,QAAkB,EAClB,EAAE;IACF,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;aAC3B;iBAAM;gBACL,0CAA0C;gBAC1C,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACtC;SACF;KACF;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAA","sourcesContent":["// usage: node '--loader=@tapjs/processinfo/esm' foo.mjs\nimport { fileURLToPath } from 'url'\nimport type { Serializable } from 'worker_threads'\nimport { getExclude } from './get-exclude.js'\nimport { getProcessInfo } from './get-process-info.js'\nimport { resolve } from './require-resolve.js'\n\n// copy main module so that we can --loader=@tapjs/processinfo and use\n// this as the entry point as well.\nexport * from './index.js'\n\n// on Node v20, loaders are executed in a separate isolated environment\n// As a result, to register coverage and track files, we need to act in\n// the globalPreload function. The load() method posts a message with the\n// filename being loaded, because any registrations that happen in the\n// loader thread will not have any effect.\n// The check for the 'port' being undefined is to allow for support back to\n// 16.12, which had a globalPreload method, but did not have a sendMessage\n// port in that environment.\ntype GPPort = {\n postMessage: (x: Serializable) => any\n}\nlet PORT: undefined | GPPort = undefined\nexport const globalPreload = (context: { port?: GPPort }) => {\n // this will be something like path/to/dist/mjs/lib/esm.mjs\n // but we need path/to/dist/cjs/cjs.js\n const base = resolve('../cjs/cjs.js')\n const { port } = context || {}\n PORT = port\n return `\nif (typeof port !== 'undefined') {\n const { createRequire, findSourceMap } = getBuiltin('module')\n const { fileURLToPath } = getBuiltin('url')\n const require = createRequire(${JSON.stringify(base)})\n const { getProcessInfo } = require('./get-process-info.js')\n // must be called eagerly here.\n // this does all the registration as well.\n const processInfo = getProcessInfo()\n port.onmessage = (e) => {\n const filename = e.data\n processInfo.files.push(filename)\n }\n port.unref()\n}\n`\n}\n\nconst exclude = getExclude('_TAPJS_PROCESSINFO_EXCLUDE_', false)\nexport const load = async (\n url: string,\n context: any,\n nextLoad: Function\n) => {\n if (/^file:/.test(url)) {\n const filename = fileURLToPath(url)\n if (!exclude.test(filename)) {\n if (PORT) {\n PORT.postMessage(filename)\n } else {\n // call lazily so we don't double-register\n getProcessInfo().files.push(filename)\n }\n }\n }\n return nextLoad(url, context)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"esm.mjs","sourceRoot":"","sources":["../../lib/esm.mts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,sEAAsE;AACtE,mCAAmC;AACnC,cAAc,YAAY,CAAA;AAa1B,IAAI,IAAI,GAAuB,SAAS,CAAA;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA0B,EAAE,EAAE;IAC1D,2DAA2D;IAC3D,sCAAsC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAC9B,IAAI,GAAG,IAAI,CAAA;IACX,OAAO;;;;kCAIyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;CAWrD,CAAA;AACD,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,UAAU,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,GAAW,EACX,OAAY,EACZ,QAAkB,EAClB,EAAE;IACF,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;aAC3B;iBAAM;gBACL,0CAA0C;gBAC1C,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACtC;SACF;QACD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC/B,+DAA+D;QAC/D,gEAAgE;QAChE,kEAAkE;QAClE,2BAA2B;QAC3B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,YAAY,EAAE,IAAI;aACnB,CAAA;SACF;KACF;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAA","sourcesContent":["// usage: node '--loader=@tapjs/processinfo/esm' foo.mjs\nimport { parse } from 'path'\nimport { fileURLToPath } from 'url'\nimport type { Serializable } from 'worker_threads'\nimport { getExclude } from './get-exclude.js'\nimport { getProcessInfo } from './get-process-info.js'\nimport { resolve } from './require-resolve.js'\n\n// copy main module so that we can --loader=@tapjs/processinfo and use\n// this as the entry point as well.\nexport * from './index.js'\n\n// on Node v20, loaders are executed in a separate isolated environment\n// As a result, to register coverage and track files, we need to act in\n// the globalPreload function. The load() method posts a message with the\n// filename being loaded, because any registrations that happen in the\n// loader thread will not have any effect.\n// The check for the 'port' being undefined is to allow for support back to\n// 16.12, which had a globalPreload method, but did not have a sendMessage\n// port in that environment.\ntype GPPort = {\n postMessage: (x: Serializable) => any\n}\nlet PORT: undefined | GPPort = undefined\nexport const globalPreload = (context: { port?: GPPort }) => {\n // this will be something like path/to/dist/mjs/lib/esm.mjs\n // but we need path/to/dist/cjs/cjs.js\n const base = resolve('../cjs/cjs.js')\n const { port } = context || {}\n PORT = port\n return `\nif (typeof port !== 'undefined') {\n const { createRequire, findSourceMap } = getBuiltin('module')\n const { fileURLToPath } = getBuiltin('url')\n const require = createRequire(${JSON.stringify(base)})\n const { getProcessInfo } = require('./get-process-info.js')\n // must be called eagerly here.\n // this does all the registration as well.\n const processInfo = getProcessInfo()\n port.onmessage = (e) => {\n const filename = e.data\n processInfo.files.push(filename)\n }\n port.unref()\n}\n`\n}\n\nconst exclude = getExclude('_TAPJS_PROCESSINFO_EXCLUDE_', false)\nexport const load = async (\n url: string,\n context: any,\n nextLoad: Function\n) => {\n if (/^file:/.test(url)) {\n const filename = fileURLToPath(url)\n if (!exclude.test(filename)) {\n if (PORT) {\n PORT.postMessage(filename)\n } else {\n // call lazily so we don't double-register\n getProcessInfo().files.push(filename)\n }\n }\n const { ext } = parse(filename)\n // Package bins will sometimes have an extensionless bin script\n // instead of just naming their extensioned file and letting npm\n // symlink it for them. Don't blow up when this happens, just tell\n // node that it's commonjs.\n if (!ext) {\n return {\n format: 'commonjs',\n shortCircuit: true,\n }\n }\n }\n return nextLoad(url, context)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-process-info.d.ts","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"get-process-info.d.ts","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":";AAQA,MAAM,WAAW,mBAAmB;IAElC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAG1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAGjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AA0BD,eAAO,MAAM,KAAK;0BAKgB,mBAAmB;CAFpD,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,mBA6CjC,CAAA"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
// we always want this
|
|
2
2
|
const p = process;
|
|
3
3
|
p.setSourceMapsEnabled(true);
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { v4 as uuid } from 'uuid';
|
|
5
6
|
const envKey = (k) => `_TAPJS_PROCESSINFO_${k.toUpperCase()}_`;
|
|
6
7
|
const getEnv = (k) => process.env[envKey(k)];
|
|
7
8
|
const setEnv = (k, v) => (process.env[envKey(k)] = v);
|
|
8
9
|
const delEnv = (k) => delete process.env[envKey(k)];
|
|
10
|
+
import { register as registerCJS } from './register-cjs.js';
|
|
9
11
|
import { register as registerCoverage } from './register-coverage.js';
|
|
10
12
|
import { register as registerEnv } from './register-env.js';
|
|
11
13
|
import { register as registerProcessEnd } from './register-process-end.js';
|
|
12
|
-
import { register as registerCJS } from './register-cjs.js';
|
|
13
14
|
// this module is hybridized. In node v20, it's the *commonjs* one that
|
|
14
15
|
// gets loaded, because the esm loader context can't modify the main thread
|
|
15
16
|
// except via communication over the port to the globalPreload env.
|
|
@@ -27,6 +28,11 @@ export const reset = () => {
|
|
|
27
28
|
export const getProcessInfo = () => {
|
|
28
29
|
if (g[kProcessInfo])
|
|
29
30
|
return g[kProcessInfo];
|
|
31
|
+
const argv1 = process.argv[1];
|
|
32
|
+
// we only test this in CJS, but file:// only prepended in ESM
|
|
33
|
+
/* c8 ignore start */
|
|
34
|
+
const main = argv1.startsWith('file://') ? fileURLToPath(argv1) : argv1;
|
|
35
|
+
/* c8 ignore stop */
|
|
30
36
|
g[kProcessInfo] = {
|
|
31
37
|
hrstart: process.hrtime(),
|
|
32
38
|
date: new Date().toISOString(),
|
|
@@ -38,7 +44,7 @@ export const getProcessInfo = () => {
|
|
|
38
44
|
ppid: process.ppid,
|
|
39
45
|
parent: getEnv('parent') || null,
|
|
40
46
|
uuid: uuid(),
|
|
41
|
-
files: [],
|
|
47
|
+
files: [main],
|
|
42
48
|
sources: Object.create(null),
|
|
43
49
|
};
|
|
44
50
|
if (!g[kProcessInfo].parent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-process-info.js","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,MAAM,CAAC,GAAG,OAET,CAAA;AACD,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAE5B,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"get-process-info.js","sourceRoot":"","sources":["../../lib/get-process-info.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,MAAM,CAAC,GAAG,OAET,CAAA;AACD,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AA2BjC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE,GAAG,CAAA;AACtE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACrE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3D,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,wEAAwE;AACxE,2EAA2E;AAC3E,mEAAmE;AACnE,oDAAoD;AACpD,EAAE;AACF,4EAA4E;AAC5E,mEAAmE;AAEnE,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;AACzE,MAAM,CAAC,GAAG,MAET,CAAA;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACxB,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAwB,EAAE;IACtD,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,8DAA8D;IAC9D,qBAAqB;IACrB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACvE,oBAAoB;IAEpB,CAAC,CAAC,YAAY,CAAC,GAAG;QAChB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI;QAChC,IAAI,EAAE,IAAI,EAAE;QACZ,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;KAC7B,CAAA;IAED,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;QAC3B,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAA;KACrC;SAAM;QACL,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;KACtC;IACD,oDAAoD;IACpD,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IACxC,IAAI,UAAU,EAAE;QACd,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,GAAG,UAAU,CAAA;QACvC,gEAAgE;QAChE,MAAM,CAAC,aAAa,CAAC,CAAA;KACtB;IAED,WAAW,EAAE,CAAA;IACb,WAAW,EAAE,CAAA;IACb,gBAAgB,EAAE,CAAA;IAClB,kBAAkB,EAAE,CAAA;IAEpB,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;AACxB,CAAC,CAAA","sourcesContent":["// we always want this\nconst p = process as NodeJS.Process & {\n setSourceMapsEnabled(v: boolean): void\n}\np.setSourceMapsEnabled(true)\n\nimport { fileURLToPath } from 'node:url'\nimport { v4 as uuid } from 'uuid'\nexport interface ProcessInfoNodeData {\n // set initially, but deleted before it is written\n hrstart?: [number, number]\n\n // always set\n date: string\n argv: string[]\n execArgv: string[]\n NODE_OPTIONS?: string\n cwd: string\n pid: number\n ppid: number\n parent: string | null\n uuid: string\n files: string[]\n sources: Record<string, string[]>\n\n // fields that are only set when the process completes\n root?: string | null\n externalID?: string | null\n code?: number | null\n signal?: NodeJS.Signals | null\n runtime?: number\n globalsAdded?: string[]\n}\n\nconst envKey = (k: string) => `_TAPJS_PROCESSINFO_${k.toUpperCase()}_`\nconst getEnv = (k: string) => process.env[envKey(k)]\nconst setEnv = (k: string, v: string) => (process.env[envKey(k)] = v)\nconst delEnv = (k: string) => delete process.env[envKey(k)]\n\nimport { register as registerCJS } from './register-cjs.js'\nimport { register as registerCoverage } from './register-coverage.js'\nimport { register as registerEnv } from './register-env.js'\nimport { register as registerProcessEnd } from './register-process-end.js'\n\n// this module is hybridized. In node v20, it's the *commonjs* one that\n// gets loaded, because the esm loader context can't modify the main thread\n// except via communication over the port to the globalPreload env.\n// So, we have to store our singleton on the global.\n//\n// If it later loads the esm form of this module, that's fine, because it'll\n// see the global processInfo object, and not re-register anything.\n\nconst kProcessInfo = Symbol.for('@tapjs/processinfo.ProcessInfoNodeData')\nconst g = global as typeof globalThis & {\n [kProcessInfo]?: ProcessInfoNodeData\n}\n\n// only used for tests so we can simulate multiple processes\nexport const reset = () => {\n g[kProcessInfo] = undefined\n return { getProcessInfo }\n}\n\nexport const getProcessInfo = (): ProcessInfoNodeData => {\n if (g[kProcessInfo]) return g[kProcessInfo]\n\n const argv1 = process.argv[1]\n // we only test this in CJS, but file:// only prepended in ESM\n /* c8 ignore start */\n const main = argv1.startsWith('file://') ? fileURLToPath(argv1) : argv1\n /* c8 ignore stop */\n\n g[kProcessInfo] = {\n hrstart: process.hrtime(),\n date: new Date().toISOString(),\n argv: process.argv,\n execArgv: process.execArgv,\n NODE_OPTIONS: process.env.NODE_OPTIONS,\n cwd: process.cwd(),\n pid: process.pid,\n ppid: process.ppid,\n parent: getEnv('parent') || null,\n uuid: uuid(),\n files: [main],\n sources: Object.create(null),\n }\n\n if (!g[kProcessInfo].parent) {\n g[kProcessInfo].root = g[kProcessInfo].uuid\n setEnv('root', g[kProcessInfo].uuid)\n } else {\n g[kProcessInfo].root = getEnv('root')\n }\n // this is the parent of any further child processes\n setEnv('parent', g[kProcessInfo].uuid)\n const externalID = getEnv('external_id')\n if (externalID) {\n g[kProcessInfo].externalID = externalID\n // externalID only applies to ONE process, not all its children.\n delEnv('external_id')\n }\n\n registerCJS()\n registerEnv()\n registerCoverage()\n registerProcessEnd()\n\n return g[kProcessInfo]\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-env.d.ts","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-env.d.ts","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,QAAQ,YAQpB,CAAA"}
|
package/dist/mjs/register-env.js
CHANGED
|
@@ -5,14 +5,16 @@ const { hasOwnProperty } = Object.prototype;
|
|
|
5
5
|
const getEnvs = (env) => {
|
|
6
6
|
// load it here so that it isn't cached before the loader attaches
|
|
7
7
|
// in self-test scenario.
|
|
8
|
-
|
|
9
|
-
return Object.fromEntries(Object.entries(
|
|
10
|
-
.filter(([k]) => !hasOwnProperty.call(env
|
|
11
|
-
.concat([
|
|
8
|
+
// copy all of OUR envs, if not specifically set on the env object
|
|
9
|
+
return Object.fromEntries(Object.entries(process.env)
|
|
10
|
+
.filter(([k]) => !(env && hasOwnProperty.call(env, k)) && envRE.test(k))
|
|
11
|
+
.concat([
|
|
12
|
+
['NODE_OPTIONS', nodeOptionsEnv(process.env, process.execArgv)],
|
|
13
|
+
]));
|
|
12
14
|
};
|
|
13
15
|
export const register = () => {
|
|
14
16
|
processOnSpawn.addListener(obj => {
|
|
15
|
-
obj.env = Object.assign(obj.env || {}, getEnvs(obj.env));
|
|
17
|
+
obj.env = Object.assign(obj.env || { ...process.env }, getEnvs(obj.env));
|
|
16
18
|
return obj;
|
|
17
19
|
});
|
|
18
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-env.js","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,KAAK,GAAG,sBAAsB,CAAA;AACpC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC1C,kEAAkE;IAClE,yBAAyB;IACzB,
|
|
1
|
+
{"version":3,"file":"register-env.js","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,KAAK,GAAG,sBAAsB,CAAA;AACpC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;AAE3C,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC1C,kEAAkE;IAClE,yBAAyB;IACzB,kEAAkE;IAClE,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SACxB,MAAM,CACL,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAChE;SACA,MAAM,CAAC;QACN,CAAC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;KAChE,CAAC,CACL,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAC/B,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CACrB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CACjB,CAAA;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import processOnSpawn from 'process-on-spawn'\nimport { nodeOptionsEnv } from './node-options-env.js'\n\nconst envRE = /^_TAPJS_PROCESSINFO_/\nconst { hasOwnProperty } = Object.prototype\n\nconst getEnvs = (env?: NodeJS.ProcessEnv) => {\n // load it here so that it isn't cached before the loader attaches\n // in self-test scenario.\n // copy all of OUR envs, if not specifically set on the env object\n return Object.fromEntries(\n Object.entries(process.env)\n .filter(\n ([k]) => !(env && hasOwnProperty.call(env, k)) && envRE.test(k)\n )\n .concat([\n ['NODE_OPTIONS', nodeOptionsEnv(process.env, process.execArgv)],\n ])\n )\n}\n\nexport const register = () => {\n processOnSpawn.addListener(obj => {\n obj.env = Object.assign(\n obj.env || { ...process.env },\n getEnvs(obj.env)\n )\n return obj\n })\n}\n"]}
|