@tapjs/processinfo 1.0.12 → 2.0.1
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/README.md +20 -11
- package/dist/cjs/argv-to-node-options.d.ts +2 -0
- package/dist/cjs/argv-to-node-options.d.ts.map +1 -0
- package/dist/cjs/argv-to-node-options.js +6 -0
- package/dist/cjs/argv-to-node-options.js.map +1 -0
- package/dist/cjs/child_process.d.ts +205 -0
- package/dist/cjs/child_process.d.ts.map +1 -0
- package/dist/cjs/child_process.js +109 -0
- package/dist/cjs/child_process.js.map +1 -0
- package/dist/cjs/cjs.d.ts +2 -0
- package/dist/cjs/cjs.d.ts.map +1 -0
- package/dist/cjs/cjs.js +5 -0
- package/dist/cjs/cjs.js.map +1 -0
- package/dist/cjs/get-exclude.d.ts +3 -0
- package/dist/cjs/get-exclude.d.ts.map +1 -0
- package/dist/cjs/get-exclude.js +23 -0
- package/dist/cjs/get-exclude.js.map +1 -0
- package/dist/cjs/get-process-info.d.ts +25 -0
- package/dist/cjs/get-process-info.d.ts.map +1 -0
- package/dist/cjs/get-process-info.js +69 -0
- package/dist/cjs/get-process-info.js.map +1 -0
- package/dist/cjs/index.d.ts +44 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +148 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/json-file.d.ts +3 -0
- package/dist/cjs/json-file.d.ts.map +1 -0
- package/dist/cjs/json-file.js +20 -0
- package/dist/cjs/json-file.js.map +1 -0
- package/dist/cjs/loader-paths.d.ts +5 -0
- package/dist/cjs/loader-paths.d.ts.map +1 -0
- package/dist/cjs/loader-paths.js +35 -0
- package/dist/cjs/loader-paths.js.map +1 -0
- package/dist/cjs/node-options-env.d.ts +6 -0
- package/dist/cjs/node-options-env.d.ts.map +1 -0
- package/dist/cjs/node-options-env.js +58 -0
- package/dist/cjs/node-options-env.js.map +1 -0
- package/dist/cjs/node-options-to-argv.d.ts +2 -0
- package/dist/cjs/node-options-to-argv.d.ts.map +1 -0
- package/dist/cjs/node-options-to-argv.js +58 -0
- package/dist/cjs/node-options-to-argv.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/process-info-node.d.ts +24 -0
- package/dist/cjs/process-info-node.d.ts.map +1 -0
- package/dist/cjs/process-info-node.js +100 -0
- package/dist/cjs/process-info-node.js.map +1 -0
- package/dist/cjs/register-cjs.d.ts +2 -0
- package/dist/cjs/register-cjs.d.ts.map +1 -0
- package/dist/cjs/register-cjs.js +21 -0
- package/dist/cjs/register-cjs.js.map +1 -0
- package/dist/cjs/register-coverage.d.ts +7 -0
- package/dist/cjs/register-coverage.d.ts.map +1 -0
- package/dist/cjs/register-coverage.js +94 -0
- package/dist/cjs/register-coverage.js.map +1 -0
- package/dist/cjs/register-env.d.ts +2 -0
- package/dist/cjs/register-env.d.ts.map +1 -0
- package/dist/cjs/register-env.js +26 -0
- package/dist/cjs/register-env.js.map +1 -0
- package/dist/cjs/register-process-end.d.ts +2 -0
- package/dist/cjs/register-process-end.d.ts.map +1 -0
- package/dist/cjs/register-process-end.js +30 -0
- package/dist/cjs/register-process-end.js.map +1 -0
- package/dist/cjs/require-resolve-cjs.d.ts.map +1 -0
- package/dist/cjs/require-resolve-cjs.js.map +1 -0
- package/dist/cjs/require-resolve.d.ts +3 -0
- package/dist/cjs/require-resolve.js +9 -0
- package/dist/cjs/spawn-opts.d.ts +10 -0
- package/dist/cjs/spawn-opts.d.ts.map +1 -0
- package/dist/cjs/spawn-opts.js +18 -0
- package/dist/cjs/spawn-opts.js.map +1 -0
- package/dist/mjs/argv-to-node-options.d.ts +2 -0
- package/dist/mjs/argv-to-node-options.d.ts.map +1 -0
- package/dist/mjs/argv-to-node-options.js +2 -0
- package/dist/mjs/argv-to-node-options.js.map +1 -0
- package/dist/mjs/child_process.d.ts +205 -0
- package/dist/mjs/child_process.d.ts.map +1 -0
- package/dist/mjs/child_process.js +99 -0
- package/dist/mjs/child_process.js.map +1 -0
- package/dist/mjs/esm.d.mts +4 -0
- package/dist/mjs/esm.d.mts.map +1 -0
- package/dist/mjs/esm.mjs +43 -0
- package/dist/mjs/esm.mjs.map +1 -0
- package/dist/mjs/get-exclude.d.ts +3 -0
- package/dist/mjs/get-exclude.d.ts.map +1 -0
- package/dist/mjs/get-exclude.js +19 -0
- package/dist/mjs/get-exclude.js.map +1 -0
- package/dist/mjs/get-process-info.d.ts +25 -0
- package/dist/mjs/get-process-info.d.ts.map +1 -0
- package/dist/mjs/get-process-info.js +64 -0
- package/dist/mjs/get-process-info.js.map +1 -0
- package/dist/mjs/index.d.ts +44 -0
- package/dist/mjs/index.d.ts.map +1 -0
- package/dist/mjs/index.js +130 -0
- package/dist/mjs/index.js.map +1 -0
- package/dist/mjs/json-file.d.ts +3 -0
- package/dist/mjs/json-file.d.ts.map +1 -0
- package/dist/mjs/json-file.js +15 -0
- package/dist/mjs/json-file.js.map +1 -0
- package/dist/mjs/loader-paths.d.ts +5 -0
- package/dist/mjs/loader-paths.d.ts.map +1 -0
- package/dist/mjs/loader-paths.js +30 -0
- package/dist/mjs/loader-paths.js.map +1 -0
- package/dist/mjs/node-options-env.d.ts +6 -0
- package/dist/mjs/node-options-env.d.ts.map +1 -0
- package/dist/mjs/node-options-env.js +54 -0
- package/dist/mjs/node-options-env.js.map +1 -0
- package/dist/mjs/node-options-to-argv.d.ts +2 -0
- package/dist/mjs/node-options-to-argv.d.ts.map +1 -0
- package/dist/mjs/node-options-to-argv.js +54 -0
- package/dist/mjs/node-options-to-argv.js.map +1 -0
- package/dist/mjs/package.json +3 -0
- package/dist/mjs/process-info-node.d.ts +24 -0
- package/dist/mjs/process-info-node.d.ts.map +1 -0
- package/dist/mjs/process-info-node.js +96 -0
- package/dist/mjs/process-info-node.js.map +1 -0
- package/dist/mjs/register-cjs.d.ts +2 -0
- package/dist/mjs/register-cjs.d.ts.map +1 -0
- package/dist/mjs/register-cjs.js +17 -0
- package/dist/mjs/register-cjs.js.map +1 -0
- package/dist/mjs/register-coverage.d.ts +7 -0
- package/dist/mjs/register-coverage.d.ts.map +1 -0
- package/dist/mjs/register-coverage.js +89 -0
- package/dist/mjs/register-coverage.js.map +1 -0
- package/dist/mjs/register-env.d.ts +2 -0
- package/dist/mjs/register-env.d.ts.map +1 -0
- package/dist/mjs/register-env.js +19 -0
- package/dist/mjs/register-env.js.map +1 -0
- package/dist/mjs/register-process-end.d.ts +2 -0
- package/dist/mjs/register-process-end.d.ts.map +1 -0
- package/dist/mjs/register-process-end.js +26 -0
- package/dist/mjs/register-process-end.js.map +1 -0
- package/dist/mjs/require-resolve.d.ts +3 -0
- package/dist/mjs/require-resolve.d.ts.map +1 -0
- package/dist/mjs/require-resolve.js +9 -0
- package/dist/mjs/require-resolve.js.map +1 -0
- package/dist/mjs/spawn-opts.d.ts +10 -0
- package/dist/mjs/spawn-opts.d.ts.map +1 -0
- package/dist/mjs/spawn-opts.js +14 -0
- package/dist/mjs/spawn-opts.js.map +1 -0
- package/package.json +49 -19
- package/index.d.ts +0 -208
- package/lib/argv-to-node-options.cjs +0 -2
- package/lib/child_process.cjs +0 -81
- package/lib/cjs.cjs +0 -16
- package/lib/esm.mjs +0 -74
- package/lib/get-exclude.cjs +0 -21
- package/lib/get-process-info.cjs +0 -45
- package/lib/index.cjs +0 -163
- package/lib/index.d.cts +0 -208
- package/lib/index.d.ts +0 -208
- package/lib/json-file.cjs +0 -19
- package/lib/node-options-env.cjs +0 -100
- package/lib/node-options-to-argv.cjs +0 -52
- package/lib/process-info-node.cjs +0 -84
- package/lib/register-coverage.cjs +0 -74
- package/lib/register-env.cjs +0 -21
- package/lib/register-process-end.cjs +0 -29
- package/lib/spawn-opts.cjs +0 -16
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// start tracking coverage, unless disabled explicltly
|
|
2
|
+
// export so that we know to collect at the end of the process
|
|
3
|
+
const enabled = process.env._TAPJS_PROCESSINFO_COVERAGE_ !== '0';
|
|
4
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
5
|
+
import { Session } from 'inspector';
|
|
6
|
+
import { findSourceMap } from 'module';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { getExclude } from './get-exclude.js';
|
|
9
|
+
export let SESSION = undefined;
|
|
10
|
+
// NB: coverage exclusion is in addition to processinfo
|
|
11
|
+
// exclusion. Only show coverage for a file we care
|
|
12
|
+
// about at least somewhat, but coverage is a subset.
|
|
13
|
+
const exclude = getExclude('_TAPJS_PROCESSINFO_COV_EXCLUDE_');
|
|
14
|
+
// C8 can't see that this function runs, best theory is that it
|
|
15
|
+
// collides with what it's doing with the coverage it's collecting
|
|
16
|
+
// This ignore can possibly be removed once this is being tested
|
|
17
|
+
// with a version of tap that uses this library, but it might just
|
|
18
|
+
// be an unresolveable bootstrap problem.
|
|
19
|
+
// The test does verify that it ran, because otherwise, there would
|
|
20
|
+
// be no coverage, and it verifies that it gets the expected coverage.
|
|
21
|
+
/* c8 ignore start */
|
|
22
|
+
export const register = () => {
|
|
23
|
+
if (!enabled)
|
|
24
|
+
return;
|
|
25
|
+
process.env._TAPJS_PROCESSINFO_COVERAGE_ = '1';
|
|
26
|
+
SESSION = new Session();
|
|
27
|
+
SESSION.connect();
|
|
28
|
+
SESSION.post('Profiler.enable');
|
|
29
|
+
SESSION.post('Runtime.enable');
|
|
30
|
+
SESSION.post('Profiler.startPreciseCoverage', {
|
|
31
|
+
callCount: true,
|
|
32
|
+
detailed: true,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
/* c8 ignore stop */
|
|
36
|
+
// only read the file again if we don't already have the content
|
|
37
|
+
// in the source map itself.
|
|
38
|
+
const lineLengths = (f, content) => !content
|
|
39
|
+
? lineLengths(f, readFileSync(f, 'utf8'))
|
|
40
|
+
: content.split(/\n|\u2028|\u2029/).map(l => l.length);
|
|
41
|
+
export const coverageOnProcessEnd = (cwd, processInfo) => {
|
|
42
|
+
// Similar to the coverage tracking bootstrap problem above, c8
|
|
43
|
+
// doesn't see that this function runs, even though it DOES see
|
|
44
|
+
// that the function defined below runs, which is weird.
|
|
45
|
+
/* c8 ignore start */
|
|
46
|
+
if (!SESSION)
|
|
47
|
+
return;
|
|
48
|
+
const session = SESSION;
|
|
49
|
+
const f = `${cwd}/.tap/coverage/${processInfo.uuid}.json`;
|
|
50
|
+
mkdirSync(`${cwd}/.tap/coverage`, { recursive: true });
|
|
51
|
+
session.post('Profiler.takePreciseCoverage', (er, cov) => {
|
|
52
|
+
session.post('Profiler.stopPreciseCoverage');
|
|
53
|
+
/* c8 ignore stop */
|
|
54
|
+
// something very strange and bad happened
|
|
55
|
+
/* c8 ignore start */
|
|
56
|
+
if (er) {
|
|
57
|
+
throw er;
|
|
58
|
+
}
|
|
59
|
+
/* c8 ignore stop */
|
|
60
|
+
// Create a source-map-cache that c8 uses in report generation
|
|
61
|
+
const sourceMapCache = {};
|
|
62
|
+
Object.assign(cov, {
|
|
63
|
+
'source-map-cache': sourceMapCache,
|
|
64
|
+
});
|
|
65
|
+
cov.result = cov.result.filter(obj => {
|
|
66
|
+
if (!/^file:/.test(obj.url)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const f = fileURLToPath(obj.url);
|
|
70
|
+
if (!processInfo.files.includes(f) || exclude.test(f)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
// see if it has a source map
|
|
74
|
+
const s = findSourceMap(f);
|
|
75
|
+
if (s) {
|
|
76
|
+
const { payload } = s;
|
|
77
|
+
sourceMapCache[obj.url] = Object.assign(Object.create(null), {
|
|
78
|
+
lineLengths: lineLengths(f, payload.sourcesContent?.join('')),
|
|
79
|
+
data: payload,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
});
|
|
84
|
+
writeFileSync(f, JSON.stringify(cov, null, 2) + '\n', 'utf8');
|
|
85
|
+
/* c8 ignore start */
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
/* c8 ignore stop */
|
|
89
|
+
//# sourceMappingURL=register-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-coverage.js","sourceRoot":"","sources":["../../lib/register-coverage.ts"],"names":[],"mappings":"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","sourcesContent":["// start tracking coverage, unless disabled explicltly\n// export so that we know to collect at the end of the process\nconst enabled = process.env._TAPJS_PROCESSINFO_COVERAGE_ !== '0'\nimport { mkdirSync, readFileSync, writeFileSync } from 'fs'\nimport { Session } from 'inspector'\nimport { findSourceMap, SourceMapPayload } from 'module'\nimport { fileURLToPath } from 'url'\nimport { getExclude } from './get-exclude.js'\nimport { ProcessInfoNodeData } from './get-process-info.js'\n\nexport let SESSION: Session | undefined = undefined\n\n// NB: coverage exclusion is in addition to processinfo\n// exclusion. Only show coverage for a file we care\n// about at least somewhat, but coverage is a subset.\nconst exclude = getExclude('_TAPJS_PROCESSINFO_COV_EXCLUDE_')\n\n// C8 can't see that this function runs, best theory is that it\n// collides with what it's doing with the coverage it's collecting\n// This ignore can possibly be removed once this is being tested\n// with a version of tap that uses this library, but it might just\n// be an unresolveable bootstrap problem.\n// The test does verify that it ran, because otherwise, there would\n// be no coverage, and it verifies that it gets the expected coverage.\n/* c8 ignore start */\nexport const register = () => {\n if (!enabled) return\n process.env._TAPJS_PROCESSINFO_COVERAGE_ = '1'\n\n SESSION = new Session()\n SESSION.connect()\n SESSION.post('Profiler.enable')\n SESSION.post('Runtime.enable')\n SESSION.post('Profiler.startPreciseCoverage', {\n callCount: true,\n detailed: true,\n })\n}\n/* c8 ignore stop */\n\n// only read the file again if we don't already have the content\n// in the source map itself.\nconst lineLengths = (f: string, content?: string): number[] =>\n !content\n ? lineLengths(f, readFileSync(f, 'utf8'))\n : content.split(/\\n|\\u2028|\\u2029/).map(l => l.length)\n\nexport const coverageOnProcessEnd = (\n cwd: string,\n processInfo: ProcessInfoNodeData\n) => {\n // Similar to the coverage tracking bootstrap problem above, c8\n // doesn't see that this function runs, even though it DOES see\n // that the function defined below runs, which is weird.\n /* c8 ignore start */\n if (!SESSION) return\n const session = SESSION\n\n const f = `${cwd}/.tap/coverage/${processInfo.uuid}.json`\n mkdirSync(`${cwd}/.tap/coverage`, { recursive: true })\n\n session.post('Profiler.takePreciseCoverage', (er, cov) => {\n session.post('Profiler.stopPreciseCoverage')\n /* c8 ignore stop */\n\n // something very strange and bad happened\n /* c8 ignore start */\n if (er) {\n throw er\n }\n /* c8 ignore stop */\n\n // Create a source-map-cache that c8 uses in report generation\n const sourceMapCache: {\n [k: string]: {\n lineLengths: number[]\n data: SourceMapPayload\n }\n } = {}\n Object.assign(cov, {\n 'source-map-cache': sourceMapCache,\n })\n\n cov.result = cov.result.filter(obj => {\n if (!/^file:/.test(obj.url)) {\n return false\n }\n const f = fileURLToPath(obj.url)\n if (!processInfo.files.includes(f) || exclude.test(f)) {\n return false\n }\n // see if it has a source map\n const s = findSourceMap(f)\n if (s) {\n const { payload } = s\n sourceMapCache[obj.url] = Object.assign(Object.create(null), {\n lineLengths: lineLengths(f, payload.sourcesContent?.join('')),\n data: payload,\n })\n }\n return true\n })\n\n writeFileSync(f, JSON.stringify(cov, null, 2) + '\\n', 'utf8')\n /* c8 ignore start */\n })\n}\n/* c8 ignore stop */\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-env.d.ts","sourceRoot":"","sources":["../../lib/register-env.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,QAAQ,YAMpB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import processOnSpawn from 'process-on-spawn';
|
|
2
|
+
import { nodeOptionsEnv } from './node-options-env.js';
|
|
3
|
+
const envRE = /^_TAPJS_PROCESSINFO_/;
|
|
4
|
+
const { hasOwnProperty } = Object.prototype;
|
|
5
|
+
const getEnvs = (env) => {
|
|
6
|
+
// load it here so that it isn't cached before the loader attaches
|
|
7
|
+
// in self-test scenario.
|
|
8
|
+
return Object.fromEntries(Object.entries(process.env)
|
|
9
|
+
.filter(([k]) => !hasOwnProperty.call(env, k) && envRE.test(k))
|
|
10
|
+
.concat([['NODE_OPTIONS', nodeOptionsEnv(env, process.execArgv)]]));
|
|
11
|
+
};
|
|
12
|
+
export const register = () => {
|
|
13
|
+
processOnSpawn.addListener(obj => {
|
|
14
|
+
const env = obj.env || {};
|
|
15
|
+
obj.env = Object.assign(env, getEnvs(env));
|
|
16
|
+
return obj;
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=register-env.js.map
|
|
@@ -0,0 +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,GAAsB,EAAE,EAAE;IACzC,kEAAkE;IAClE,yBAAyB;IACzB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACrE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAA;QACzB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1C,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 return Object.fromEntries(\n Object.entries(process.env)\n .filter(([k]) => !hasOwnProperty.call(env, k) && envRE.test(k))\n .concat([['NODE_OPTIONS', nodeOptionsEnv(env, process.execArgv)]])\n )\n}\n\nexport const register = () => {\n processOnSpawn.addListener(obj => {\n const env = obj.env || {}\n obj.env = Object.assign(env, getEnvs(env))\n return obj\n })\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-process-end.d.ts","sourceRoot":"","sources":["../../lib/register-process-end.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,QAAQ,YAsBpB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { onExit } from 'signal-exit';
|
|
2
|
+
import { getProcessInfo } from './get-process-info.js';
|
|
3
|
+
import { mkdirSync, writeFileSync } from 'fs';
|
|
4
|
+
import { coverageOnProcessEnd } from './register-coverage.js';
|
|
5
|
+
const cwd = process.cwd();
|
|
6
|
+
const globals = new Set(Object.keys(global));
|
|
7
|
+
export const register = () => {
|
|
8
|
+
onExit((code, signal) => {
|
|
9
|
+
const processInfo = getProcessInfo();
|
|
10
|
+
processInfo.code = code;
|
|
11
|
+
processInfo.signal = signal;
|
|
12
|
+
const runtime = process.hrtime(processInfo.hrstart);
|
|
13
|
+
delete processInfo.hrstart;
|
|
14
|
+
processInfo.files = [...new Set(processInfo.files)];
|
|
15
|
+
processInfo.runtime = runtime[0] * 1e3 + runtime[1] / 1e6;
|
|
16
|
+
const globalsAdded = Object.keys(global).filter(k => !globals.has(k));
|
|
17
|
+
if (globalsAdded.length) {
|
|
18
|
+
processInfo.globalsAdded = globalsAdded;
|
|
19
|
+
}
|
|
20
|
+
const f = `${cwd}/.tap/processinfo/${processInfo.uuid}.json`;
|
|
21
|
+
mkdirSync(`${cwd}/.tap/processinfo`, { recursive: true });
|
|
22
|
+
writeFileSync(f, JSON.stringify(processInfo, null, 2) + '\n', 'utf8');
|
|
23
|
+
coverageOnProcessEnd(cwd, processInfo);
|
|
24
|
+
}, { alwaysLast: true });
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=register-process-end.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-process-end.js","sourceRoot":"","sources":["../../lib/register-process-end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,CACJ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;QACpC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACnD,OAAO,WAAW,CAAC,OAAO,CAAA;QAC1B,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;QACnD,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,WAAW,CAAC,YAAY,GAAG,YAAY,CAAA;SACxC;QAED,MAAM,CAAC,GAAG,GAAG,GAAG,qBAAqB,WAAW,CAAC,IAAI,OAAO,CAAA;QAC5D,SAAS,CAAC,GAAG,GAAG,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QACrE,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACxC,CAAC,EACD,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { onExit } from 'signal-exit'\nimport { getProcessInfo } from './get-process-info.js'\n\nimport { mkdirSync, writeFileSync } from 'fs'\nimport { coverageOnProcessEnd } from './register-coverage.js'\nconst cwd = process.cwd()\nconst globals = new Set(Object.keys(global))\n\nexport const register = () => {\n onExit(\n (code, signal) => {\n const processInfo = getProcessInfo()\n processInfo.code = code\n processInfo.signal = signal\n const runtime = process.hrtime(processInfo.hrstart)\n delete processInfo.hrstart\n processInfo.files = [...new Set(processInfo.files)]\n processInfo.runtime = runtime[0] * 1e3 + runtime[1] / 1e6\n const globalsAdded = Object.keys(global).filter(k => !globals.has(k))\n if (globalsAdded.length) {\n processInfo.globalsAdded = globalsAdded\n }\n\n const f = `${cwd}/.tap/processinfo/${processInfo.uuid}.json`\n mkdirSync(`${cwd}/.tap/processinfo`, { recursive: true })\n writeFileSync(f, JSON.stringify(processInfo, null, 2) + '\\n', 'utf8')\n coverageOnProcessEnd(cwd, processInfo)\n },\n { alwaysLast: true }\n )\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-resolve.d.ts","sourceRoot":"","sources":["../../lib/require-resolve.ts"],"names":[],"mappings":";AAOA,eAAO,MAAQ,OAAO,uBAAmC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// This is only the ESM version. For CJS, it's overwritten
|
|
2
|
+
// by the implementation in require-resolve-cjs.ts
|
|
3
|
+
// This only works because all of this package's modules are in the same
|
|
4
|
+
// folder, so effectively have the same require.resolve results. It's not
|
|
5
|
+
// intended to be portable!
|
|
6
|
+
import { createRequire } from 'module';
|
|
7
|
+
//@ts-ignore
|
|
8
|
+
export const { resolve } = createRequire(import.meta.url);
|
|
9
|
+
//# sourceMappingURL=require-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-resolve.js","sourceRoot":"","sources":["../../lib/require-resolve.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,kDAAkD;AAClD,wEAAwE;AACxE,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,YAAY;AACZ,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA","sourcesContent":["// This is only the ESM version. For CJS, it's overwritten\n// by the implementation in require-resolve-cjs.ts\n// This only works because all of this package's modules are in the same\n// folder, so effectively have the same require.resolve results. It's not\n// intended to be portable!\nimport { createRequire } from 'module'\n//@ts-ignore\nexport const { resolve } = createRequire(import.meta.url)\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ProcessEnvOptions } from 'child_process';
|
|
2
|
+
export type WithExternalID<T> = T & {
|
|
3
|
+
externalID?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const spawnOpts: <T extends {
|
|
6
|
+
[k: string]: any;
|
|
7
|
+
}>(options: WithExternalID<T>, exclude?: RegExp | string) => Omit<T, "externalID"> & {
|
|
8
|
+
env: ProcessEnvOptions;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=spawn-opts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-opts.d.ts","sourceRoot":"","sources":["../../lib/spawn-opts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGjD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D,eAAO,MAAM,SAAS;;yCAEV,MAAM,GAAG,MAAM;SACO,iBAAiB;CAWlD,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { nodeOptionsEnv } from './node-options-env.js';
|
|
2
|
+
export const spawnOpts = (options, exclude) => {
|
|
3
|
+
const { externalID, ...rest } = options;
|
|
4
|
+
const env = { ...(options.env || process.env) };
|
|
5
|
+
env.NODE_OPTIONS = nodeOptionsEnv(env, []);
|
|
6
|
+
if (externalID) {
|
|
7
|
+
env._TAPJS_PROCESSINFO_EXTERNAL_ID_ = externalID;
|
|
8
|
+
}
|
|
9
|
+
if (exclude) {
|
|
10
|
+
env._TAPJS_PROCESSINFO_EXCLUDE_ = String(exclude);
|
|
11
|
+
}
|
|
12
|
+
return { ...rest, env };
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=spawn-opts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-opts.js","sourceRoot":"","sources":["../../lib/spawn-opts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAA0B,EAC1B,OAAyB,EAC2B,EAAE;IACtD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACvC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/C,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC1C,IAAI,UAAU,EAAE;QACd,GAAG,CAAC,+BAA+B,GAAG,UAAU,CAAA;KACjD;IACD,IAAI,OAAO,EAAE;QACX,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;KAClD;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;AACzB,CAAC,CAAA","sourcesContent":["import { ProcessEnvOptions } from 'child_process'\nimport { nodeOptionsEnv } from './node-options-env.js'\n\nexport type WithExternalID<T> = T & { externalID?: string }\n\nexport const spawnOpts = <T extends { [k: string]: any }>(\n options: WithExternalID<T>,\n exclude?: RegExp | string\n): Omit<T, 'externalID'> & { env: ProcessEnvOptions } => {\n const { externalID, ...rest } = options\n const env = { ...(options.env || process.env) }\n env.NODE_OPTIONS = nodeOptionsEnv(env, [])\n if (externalID) {\n env._TAPJS_PROCESSINFO_EXTERNAL_ID_ = externalID\n }\n if (exclude) {\n env._TAPJS_PROCESSINFO_EXCLUDE_ = String(exclude)\n }\n return { ...rest, env }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,31 +1,56 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapjs/processinfo",
|
|
3
|
-
"version": "
|
|
4
|
-
"main": "
|
|
5
|
-
"types": "index.d.ts",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"main": "./dist/cjs/index.js",
|
|
5
|
+
"types": "./dist/cjs/index.d.ts",
|
|
6
|
+
"module": "./dist/mjs/esm.mjs",
|
|
6
7
|
"files": [
|
|
7
|
-
"
|
|
8
|
-
"lib"
|
|
8
|
+
"dist"
|
|
9
9
|
],
|
|
10
10
|
"exports": {
|
|
11
|
-
".":
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/mjs/esm.d.ts",
|
|
14
|
+
"default": "./dist/mjs/esm.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/cjs/index.d.ts",
|
|
18
|
+
"default": "./dist/cjs/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"./cjs": {
|
|
22
|
+
"require": {
|
|
23
|
+
"types": "./dist/mjs/cjs.d.mts",
|
|
24
|
+
"default": "./lib/cjs.cjs"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
14
27
|
},
|
|
15
28
|
"scripts": {
|
|
16
|
-
"format": "prettier --write . --loglevel warn",
|
|
17
|
-
"test": "tap",
|
|
18
|
-
"snap": "tap",
|
|
19
29
|
"preversion": "npm test",
|
|
20
30
|
"postversion": "npm publish",
|
|
21
|
-
"prepublishOnly": "git push origin --follow-tags"
|
|
31
|
+
"prepublishOnly": "git push origin --follow-tags",
|
|
32
|
+
"preprepare": "rm -rf dist",
|
|
33
|
+
"prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json && bash ./scripts/fixup.sh",
|
|
34
|
+
"pretest": "npm run prepare",
|
|
35
|
+
"presnap": "npm run prepare",
|
|
36
|
+
"test": "c8 tap",
|
|
37
|
+
"snap": "c8 tap",
|
|
38
|
+
"format": "prettier --write . --loglevel warn",
|
|
39
|
+
"typedoc": "typedoc --tsconfig tsconfig-esm.json ./lib/*.*ts"
|
|
22
40
|
},
|
|
23
41
|
"tap": {
|
|
24
|
-
"coverage
|
|
42
|
+
"coverage": false,
|
|
43
|
+
"node-arg": [
|
|
44
|
+
"--enable-source-maps",
|
|
45
|
+
"--no-warnings",
|
|
46
|
+
"--loader",
|
|
47
|
+
"ts-node/esm"
|
|
48
|
+
],
|
|
49
|
+
"ts": false
|
|
25
50
|
},
|
|
26
51
|
"prettier": {
|
|
27
52
|
"semi": false,
|
|
28
|
-
"printWidth":
|
|
53
|
+
"printWidth": 75,
|
|
29
54
|
"tabWidth": 2,
|
|
30
55
|
"useTabs": false,
|
|
31
56
|
"singleQuote": true,
|
|
@@ -37,20 +62,25 @@
|
|
|
37
62
|
"dependencies": {
|
|
38
63
|
"pirates": "^4.0.5",
|
|
39
64
|
"process-on-spawn": "^1.0.0",
|
|
40
|
-
"signal-exit": "^4.0.
|
|
65
|
+
"signal-exit": "^4.0.2",
|
|
41
66
|
"uuid": "^8.3.2"
|
|
42
67
|
},
|
|
43
68
|
"engines": {
|
|
44
|
-
"node": ">=16.
|
|
69
|
+
"node": ">=16.17"
|
|
45
70
|
},
|
|
46
71
|
"license": "ISC",
|
|
47
72
|
"devDependencies": {
|
|
48
73
|
"@npmcli/promise-spawn": "^2.0.1",
|
|
49
|
-
"@types/node": "^
|
|
74
|
+
"@types/node": "^20.1.2",
|
|
75
|
+
"@types/npmcli__promise-spawn": "^6.0.0",
|
|
76
|
+
"@types/tap": "^15.0.8",
|
|
77
|
+
"@types/uuid": "^9.0.1",
|
|
78
|
+
"c8": "^7.13.0",
|
|
50
79
|
"diff": "^5.0.0",
|
|
51
|
-
"eslint-config-prettier": "^8.5.0",
|
|
52
80
|
"prettier": "^2.6.2",
|
|
53
|
-
"tap": "^16.3.0"
|
|
81
|
+
"tap": "^16.3.0",
|
|
82
|
+
"ts-node": "^10.9.1",
|
|
83
|
+
"typescript": "^5.0.4"
|
|
54
84
|
},
|
|
55
85
|
"repository": "https://github.com/tapjs/processinfo"
|
|
56
86
|
}
|
package/index.d.ts
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import {
|
|
3
|
-
ChildProcess,
|
|
4
|
-
ExecException,
|
|
5
|
-
ExecFileOptions,
|
|
6
|
-
ExecFileSyncOptions,
|
|
7
|
-
ExecOptions,
|
|
8
|
-
ExecSyncOptions,
|
|
9
|
-
SpawnOptions,
|
|
10
|
-
SpawnSyncOptions,
|
|
11
|
-
SpawnSyncReturns,
|
|
12
|
-
} from 'node:child_process'
|
|
13
|
-
|
|
14
|
-
declare interface ProcessInfoOptions {
|
|
15
|
-
dir?: string
|
|
16
|
-
exclude?: RegExp
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
declare class ProcessInfoNode {
|
|
20
|
-
parent: ProcessInfoNode | null
|
|
21
|
-
root: ProcessInfoNode | null
|
|
22
|
-
children: ProcessInfoNode[] | null
|
|
23
|
-
files: string[] | null
|
|
24
|
-
externalID?: string | null
|
|
25
|
-
uuid: string
|
|
26
|
-
date: string
|
|
27
|
-
argv: string[]
|
|
28
|
-
execArgv: string[]
|
|
29
|
-
pid: number
|
|
30
|
-
ppid: number
|
|
31
|
-
cwd: string
|
|
32
|
-
code?: number | null
|
|
33
|
-
signal: string | null
|
|
34
|
-
runtime: number
|
|
35
|
-
link(db: ProcessInfo): void
|
|
36
|
-
NODE_OPTIONS?: string | null
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
declare interface ProcessInfoSpawnOptions extends SpawnOptions {
|
|
40
|
-
externalID?: string
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
declare interface ProcessInfoSpawnSyncOptions extends SpawnSyncOptions {
|
|
44
|
-
externalID?: string
|
|
45
|
-
}
|
|
46
|
-
declare interface ProcessInfoSpawnSyncOptionsWithStringEncoding
|
|
47
|
-
extends ProcessInfoSpawnSyncOptions {
|
|
48
|
-
encoding: BufferEncoding
|
|
49
|
-
}
|
|
50
|
-
interface ProcessInfoSpawnSyncOptionsWithBufferEncoding
|
|
51
|
-
extends ProcessInfoSpawnSyncOptions {
|
|
52
|
-
encoding?: 'buffer' | null | undefined
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
declare interface ProcessInfoExecSyncOptions extends ExecSyncOptions {
|
|
56
|
-
externalID?: string
|
|
57
|
-
}
|
|
58
|
-
declare interface ProcessInfoExecSyncOptionsWithStringEncoding
|
|
59
|
-
extends ProcessInfoExecSyncOptions {
|
|
60
|
-
encoding: BufferEncoding
|
|
61
|
-
}
|
|
62
|
-
declare interface ProcessInfoExecSyncOptionsWithBufferEncoding
|
|
63
|
-
extends ProcessInfoExecSyncOptions {
|
|
64
|
-
encoding?: 'buffer' | null | undefined
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
declare interface ProcessInfoExecOptions extends ExecOptions {
|
|
68
|
-
externalID?: string
|
|
69
|
-
}
|
|
70
|
-
declare interface ProcessInfoExecFileSyncOptions extends ExecFileSyncOptions {
|
|
71
|
-
externalID?: string
|
|
72
|
-
}
|
|
73
|
-
declare interface ProcessInfoExecFileSyncOptionsWithStringEncoding
|
|
74
|
-
extends ProcessInfoExecFileSyncOptions {
|
|
75
|
-
encoding: BufferEncoding
|
|
76
|
-
}
|
|
77
|
-
declare interface ProcessInfoExecFileSyncOptionsWithBufferEncoding
|
|
78
|
-
extends ProcessInfoExecFileSyncOptions {
|
|
79
|
-
encoding?: 'buffer' | null | undefined
|
|
80
|
-
}
|
|
81
|
-
declare interface ProcessInfoExecFileOptions extends ExecFileOptions {
|
|
82
|
-
externalID?: string
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
declare class ProcessInfo {
|
|
86
|
-
public dir: string
|
|
87
|
-
public exclude: RegExp
|
|
88
|
-
public roots: Set<ProcessInfoNode>
|
|
89
|
-
public files: Map<string, Set<ProcessInfoNode>>
|
|
90
|
-
public uuids: Map<string, ProcessInfoNode>
|
|
91
|
-
public externalIDs: Map<string, ProcessInfoNode>
|
|
92
|
-
|
|
93
|
-
private pendingRoot: Map<string, ProcessInfoNode>
|
|
94
|
-
private pendingParent: Map<string, ProcessInfoNode>
|
|
95
|
-
|
|
96
|
-
constructor(options?: ProcessInfoOptions)
|
|
97
|
-
|
|
98
|
-
save(): Promise<void>
|
|
99
|
-
saveSync(): void
|
|
100
|
-
erase(): Promise<void>
|
|
101
|
-
eraseSync(): void
|
|
102
|
-
|
|
103
|
-
load(): Promise<ProcessInfo>
|
|
104
|
-
loadSync(): ProcessInfo
|
|
105
|
-
|
|
106
|
-
static get Node(): typeof ProcessInfoNode
|
|
107
|
-
static get ProcessInfo(): typeof ProcessInfo
|
|
108
|
-
|
|
109
|
-
static spawn(
|
|
110
|
-
cmd: string,
|
|
111
|
-
args: string[],
|
|
112
|
-
options: ProcessInfoSpawnOptions
|
|
113
|
-
): ChildProcess
|
|
114
|
-
|
|
115
|
-
static spawnSync(cmd: string): SpawnSyncReturns<Buffer>
|
|
116
|
-
static spawnSync(
|
|
117
|
-
cmd: string,
|
|
118
|
-
options: ProcessInfoSpawnSyncOptionsWithStringEncoding
|
|
119
|
-
): SpawnSyncReturns<string>
|
|
120
|
-
static spawnSync(
|
|
121
|
-
cmd: string,
|
|
122
|
-
options: ProcessInfoSpawnSyncOptionsWithBufferEncoding
|
|
123
|
-
): SpawnSyncReturns<Buffer>
|
|
124
|
-
static spawnSync(
|
|
125
|
-
cmd: string,
|
|
126
|
-
options?: ProcessInfoSpawnSyncOptions
|
|
127
|
-
): SpawnSyncReturns<string | Buffer>
|
|
128
|
-
static spawnSync(
|
|
129
|
-
cmd: string,
|
|
130
|
-
args: readonly string[]
|
|
131
|
-
): SpawnSyncReturns<Buffer>
|
|
132
|
-
static spawnSync(
|
|
133
|
-
cmd: string,
|
|
134
|
-
args: readonly string[],
|
|
135
|
-
options: ProcessInfoSpawnSyncOptionsWithStringEncoding
|
|
136
|
-
): SpawnSyncReturns<string>
|
|
137
|
-
static spawnSync(
|
|
138
|
-
cmd: string,
|
|
139
|
-
args: readonly string[],
|
|
140
|
-
options: ProcessInfoSpawnSyncOptionsWithBufferEncoding
|
|
141
|
-
): SpawnSyncReturns<Buffer>
|
|
142
|
-
static spawnSync(
|
|
143
|
-
cmd: string,
|
|
144
|
-
args?: readonly string[],
|
|
145
|
-
options?: ProcessInfoSpawnSyncOptions
|
|
146
|
-
): SpawnSyncReturns<string | Buffer>
|
|
147
|
-
|
|
148
|
-
static exec(
|
|
149
|
-
cmd: string,
|
|
150
|
-
options: ProcessInfoExecOptions,
|
|
151
|
-
callback?: (
|
|
152
|
-
error: ExecException | null,
|
|
153
|
-
stdout: Buffer,
|
|
154
|
-
stderr: Buffer
|
|
155
|
-
) => void
|
|
156
|
-
): ChildProcess
|
|
157
|
-
|
|
158
|
-
static execSync(
|
|
159
|
-
cmd: string,
|
|
160
|
-
options: ProcessInfoExecSyncOptionsWithStringEncoding
|
|
161
|
-
): string
|
|
162
|
-
static execSync(
|
|
163
|
-
cmd: string,
|
|
164
|
-
options: ProcessInfoExecSyncOptionsWithBufferEncoding
|
|
165
|
-
): Buffer
|
|
166
|
-
static execSync(
|
|
167
|
-
cmd: string,
|
|
168
|
-
options?: ProcessInfoExecSyncOptions
|
|
169
|
-
): string | Buffer
|
|
170
|
-
|
|
171
|
-
static execFile(
|
|
172
|
-
cmd: string,
|
|
173
|
-
args: string[],
|
|
174
|
-
options: ProcessInfoExecFileOptions
|
|
175
|
-
): ChildProcess
|
|
176
|
-
|
|
177
|
-
static execFileSync(file: string): Buffer
|
|
178
|
-
static execFileSync(
|
|
179
|
-
file: string,
|
|
180
|
-
options: ProcessInfoExecFileSyncOptionsWithStringEncoding
|
|
181
|
-
): string
|
|
182
|
-
static execFileSync(
|
|
183
|
-
file: string,
|
|
184
|
-
options: ProcessInfoExecFileSyncOptionsWithBufferEncoding
|
|
185
|
-
): Buffer
|
|
186
|
-
static execFileSync(
|
|
187
|
-
file: string,
|
|
188
|
-
options?: ProcessInfoExecFileSyncOptions
|
|
189
|
-
): string | Buffer
|
|
190
|
-
static execFileSync(file: string, args: readonly string[]): Buffer
|
|
191
|
-
static execFileSync(
|
|
192
|
-
file: string,
|
|
193
|
-
args: readonly string[],
|
|
194
|
-
options: ProcessInfoExecFileSyncOptionsWithStringEncoding
|
|
195
|
-
): string
|
|
196
|
-
static execFileSync(
|
|
197
|
-
file: string,
|
|
198
|
-
args: readonly string[],
|
|
199
|
-
options: ProcessInfoExecFileSyncOptionsWithBufferEncoding
|
|
200
|
-
): Buffer
|
|
201
|
-
static execFileSync(
|
|
202
|
-
file: string,
|
|
203
|
-
args?: readonly string[],
|
|
204
|
-
options?: ProcessInfoExecFileSyncOptions
|
|
205
|
-
): string | Buffer
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export = ProcessInfo
|
package/lib/child_process.cjs
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
const {
|
|
2
|
-
spawn,
|
|
3
|
-
spawnSync,
|
|
4
|
-
exec,
|
|
5
|
-
execSync,
|
|
6
|
-
execFile,
|
|
7
|
-
execFileSync,
|
|
8
|
-
} = require('child_process')
|
|
9
|
-
const { getExclude } = require('./get-exclude.cjs')
|
|
10
|
-
const { spawnOpts } = require('./spawn-opts.cjs')
|
|
11
|
-
const k = '_TAPJS_PROCESSINFO_EXCLUDE_'
|
|
12
|
-
|
|
13
|
-
module.exports = {
|
|
14
|
-
spawn(cmd, args, options) {
|
|
15
|
-
if (
|
|
16
|
-
args &&
|
|
17
|
-
typeof args === 'object' &&
|
|
18
|
-
!Array.isArray(args) &&
|
|
19
|
-
options === undefined
|
|
20
|
-
) {
|
|
21
|
-
options = args
|
|
22
|
-
args = []
|
|
23
|
-
}
|
|
24
|
-
return spawn(cmd, args, spawnOpts(options, getExclude(k)))
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
spawnSync(cmd, args, options) {
|
|
28
|
-
if (
|
|
29
|
-
args &&
|
|
30
|
-
typeof args === 'object' &&
|
|
31
|
-
!Array.isArray(args) &&
|
|
32
|
-
options === undefined
|
|
33
|
-
) {
|
|
34
|
-
options = args
|
|
35
|
-
args = []
|
|
36
|
-
}
|
|
37
|
-
return spawnSync(cmd, args, spawnOpts(options, getExclude(k)))
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
exec(cmd, options, callback) {
|
|
41
|
-
if (typeof options === 'function') {
|
|
42
|
-
callback = options
|
|
43
|
-
options = {}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return exec(cmd, spawnOpts(options, getExclude(k)), callback)
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
execSync(cmd, options) {
|
|
50
|
-
return execSync(cmd, spawnOpts(options, getExclude(k)))
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
execFile(cmd, ...execFileArgs) {
|
|
54
|
-
let args = []
|
|
55
|
-
let options = {}
|
|
56
|
-
let callback = undefined
|
|
57
|
-
for (const arg of execFileArgs) {
|
|
58
|
-
if (Array.isArray(arg)) {
|
|
59
|
-
args = arg
|
|
60
|
-
} else if (arg && typeof arg === 'object') {
|
|
61
|
-
options = arg
|
|
62
|
-
} else if (typeof arg === 'function') {
|
|
63
|
-
callback = arg
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return execFile(cmd, args, spawnOpts(options, getExclude(k)), callback)
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
execFileSync(cmd, ...execFileArgs) {
|
|
70
|
-
let args = []
|
|
71
|
-
let options = {}
|
|
72
|
-
for (const arg of execFileArgs) {
|
|
73
|
-
if (Array.isArray(arg)) {
|
|
74
|
-
args = arg
|
|
75
|
-
} else if (arg && typeof arg === 'object') {
|
|
76
|
-
options = arg
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return execFileSync(cmd, args, spawnOpts(options, getExclude(k)))
|
|
80
|
-
},
|
|
81
|
-
}
|
package/lib/cjs.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// commonjs style loader hook
|
|
2
|
-
const { getProcessInfo } = require('./get-process-info.cjs')
|
|
3
|
-
const { getExclude } = require('./get-exclude.cjs')
|
|
4
|
-
|
|
5
|
-
// have to make this a module-local, otherwise it reloads the info
|
|
6
|
-
const processInfo = getProcessInfo()
|
|
7
|
-
const exclude = getExclude('_TAPJS_PROCESSINFO_EXCLUDE_')
|
|
8
|
-
|
|
9
|
-
const { addHook } = require('pirates')
|
|
10
|
-
|
|
11
|
-
const matcher = filename => !exclude.test(filename)
|
|
12
|
-
const hook = (code, filename) => {
|
|
13
|
-
processInfo.files.push(filename)
|
|
14
|
-
return code
|
|
15
|
-
}
|
|
16
|
-
addHook(hook, { exts: ['.js', '.cjs'], matcher })
|