@tapjs/processinfo 1.0.11 → 2.0.0

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.
Files changed (166) hide show
  1. package/README.md +20 -11
  2. package/dist/cjs/argv-to-node-options.d.ts +2 -0
  3. package/dist/cjs/argv-to-node-options.d.ts.map +1 -0
  4. package/dist/cjs/argv-to-node-options.js +6 -0
  5. package/dist/cjs/argv-to-node-options.js.map +1 -0
  6. package/dist/cjs/child_process.d.ts +205 -0
  7. package/dist/cjs/child_process.d.ts.map +1 -0
  8. package/dist/cjs/child_process.js +109 -0
  9. package/dist/cjs/child_process.js.map +1 -0
  10. package/dist/cjs/cjs.d.ts +2 -0
  11. package/dist/cjs/cjs.d.ts.map +1 -0
  12. package/dist/cjs/cjs.js +5 -0
  13. package/dist/cjs/cjs.js.map +1 -0
  14. package/dist/cjs/get-exclude.d.ts +3 -0
  15. package/dist/cjs/get-exclude.d.ts.map +1 -0
  16. package/dist/cjs/get-exclude.js +23 -0
  17. package/dist/cjs/get-exclude.js.map +1 -0
  18. package/dist/cjs/get-process-info.d.ts +25 -0
  19. package/dist/cjs/get-process-info.d.ts.map +1 -0
  20. package/dist/cjs/get-process-info.js +69 -0
  21. package/dist/cjs/get-process-info.js.map +1 -0
  22. package/dist/cjs/index.d.ts +44 -0
  23. package/dist/cjs/index.d.ts.map +1 -0
  24. package/dist/cjs/index.js +148 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/json-file.d.ts +3 -0
  27. package/dist/cjs/json-file.d.ts.map +1 -0
  28. package/dist/cjs/json-file.js +20 -0
  29. package/dist/cjs/json-file.js.map +1 -0
  30. package/dist/cjs/loader-paths.d.ts +5 -0
  31. package/dist/cjs/loader-paths.d.ts.map +1 -0
  32. package/dist/cjs/loader-paths.js +35 -0
  33. package/dist/cjs/loader-paths.js.map +1 -0
  34. package/dist/cjs/node-options-env.d.ts +6 -0
  35. package/dist/cjs/node-options-env.d.ts.map +1 -0
  36. package/dist/cjs/node-options-env.js +58 -0
  37. package/dist/cjs/node-options-env.js.map +1 -0
  38. package/dist/cjs/node-options-to-argv.d.ts +2 -0
  39. package/dist/cjs/node-options-to-argv.d.ts.map +1 -0
  40. package/dist/cjs/node-options-to-argv.js +58 -0
  41. package/dist/cjs/node-options-to-argv.js.map +1 -0
  42. package/dist/cjs/package.json +3 -0
  43. package/dist/cjs/process-info-node.d.ts +24 -0
  44. package/dist/cjs/process-info-node.d.ts.map +1 -0
  45. package/dist/cjs/process-info-node.js +100 -0
  46. package/dist/cjs/process-info-node.js.map +1 -0
  47. package/dist/cjs/register-cjs.d.ts +2 -0
  48. package/dist/cjs/register-cjs.d.ts.map +1 -0
  49. package/dist/cjs/register-cjs.js +21 -0
  50. package/dist/cjs/register-cjs.js.map +1 -0
  51. package/dist/cjs/register-coverage.d.ts +7 -0
  52. package/dist/cjs/register-coverage.d.ts.map +1 -0
  53. package/dist/cjs/register-coverage.js +94 -0
  54. package/dist/cjs/register-coverage.js.map +1 -0
  55. package/dist/cjs/register-env.d.ts +2 -0
  56. package/dist/cjs/register-env.d.ts.map +1 -0
  57. package/dist/cjs/register-env.js +26 -0
  58. package/dist/cjs/register-env.js.map +1 -0
  59. package/dist/cjs/register-process-end.d.ts +2 -0
  60. package/dist/cjs/register-process-end.d.ts.map +1 -0
  61. package/dist/cjs/register-process-end.js +30 -0
  62. package/dist/cjs/register-process-end.js.map +1 -0
  63. package/dist/cjs/require-resolve-cjs.d.ts.map +1 -0
  64. package/dist/cjs/require-resolve-cjs.js.map +1 -0
  65. package/dist/cjs/require-resolve.d.ts +3 -0
  66. package/dist/cjs/require-resolve.js +9 -0
  67. package/dist/cjs/spawn-opts.d.ts +10 -0
  68. package/dist/cjs/spawn-opts.d.ts.map +1 -0
  69. package/dist/cjs/spawn-opts.js +18 -0
  70. package/dist/cjs/spawn-opts.js.map +1 -0
  71. package/dist/cjs/x.d.ts +2 -0
  72. package/dist/cjs/x.d.ts.map +1 -0
  73. package/dist/cjs/x.js +5 -0
  74. package/dist/cjs/x.js.map +1 -0
  75. package/dist/mjs/argv-to-node-options.d.ts +2 -0
  76. package/dist/mjs/argv-to-node-options.d.ts.map +1 -0
  77. package/dist/mjs/argv-to-node-options.js +2 -0
  78. package/dist/mjs/argv-to-node-options.js.map +1 -0
  79. package/dist/mjs/child_process.d.ts +205 -0
  80. package/dist/mjs/child_process.d.ts.map +1 -0
  81. package/dist/mjs/child_process.js +99 -0
  82. package/dist/mjs/child_process.js.map +1 -0
  83. package/dist/mjs/esm.d.mts +11 -0
  84. package/dist/mjs/esm.d.mts.map +1 -0
  85. package/dist/mjs/esm.mjs +45 -0
  86. package/dist/mjs/esm.mjs.map +1 -0
  87. package/dist/mjs/get-exclude.d.ts +3 -0
  88. package/dist/mjs/get-exclude.d.ts.map +1 -0
  89. package/dist/mjs/get-exclude.js +19 -0
  90. package/dist/mjs/get-exclude.js.map +1 -0
  91. package/dist/mjs/get-process-info.d.ts +25 -0
  92. package/dist/mjs/get-process-info.d.ts.map +1 -0
  93. package/dist/mjs/get-process-info.js +64 -0
  94. package/dist/mjs/get-process-info.js.map +1 -0
  95. package/dist/mjs/index.d.ts +44 -0
  96. package/dist/mjs/index.d.ts.map +1 -0
  97. package/dist/mjs/index.js +130 -0
  98. package/dist/mjs/index.js.map +1 -0
  99. package/dist/mjs/json-file.d.ts +3 -0
  100. package/dist/mjs/json-file.d.ts.map +1 -0
  101. package/dist/mjs/json-file.js +15 -0
  102. package/dist/mjs/json-file.js.map +1 -0
  103. package/dist/mjs/loader-paths.d.ts +5 -0
  104. package/dist/mjs/loader-paths.d.ts.map +1 -0
  105. package/dist/mjs/loader-paths.js +30 -0
  106. package/dist/mjs/loader-paths.js.map +1 -0
  107. package/dist/mjs/node-options-env.d.ts +6 -0
  108. package/dist/mjs/node-options-env.d.ts.map +1 -0
  109. package/dist/mjs/node-options-env.js +54 -0
  110. package/dist/mjs/node-options-env.js.map +1 -0
  111. package/dist/mjs/node-options-to-argv.d.ts +2 -0
  112. package/dist/mjs/node-options-to-argv.d.ts.map +1 -0
  113. package/dist/mjs/node-options-to-argv.js +54 -0
  114. package/dist/mjs/node-options-to-argv.js.map +1 -0
  115. package/dist/mjs/package.json +3 -0
  116. package/dist/mjs/process-info-node.d.ts +24 -0
  117. package/dist/mjs/process-info-node.d.ts.map +1 -0
  118. package/dist/mjs/process-info-node.js +96 -0
  119. package/dist/mjs/process-info-node.js.map +1 -0
  120. package/dist/mjs/register-cjs.d.ts +2 -0
  121. package/dist/mjs/register-cjs.d.ts.map +1 -0
  122. package/dist/mjs/register-cjs.js +17 -0
  123. package/dist/mjs/register-cjs.js.map +1 -0
  124. package/dist/mjs/register-coverage.d.ts +7 -0
  125. package/dist/mjs/register-coverage.d.ts.map +1 -0
  126. package/dist/mjs/register-coverage.js +89 -0
  127. package/dist/mjs/register-coverage.js.map +1 -0
  128. package/dist/mjs/register-env.d.ts +2 -0
  129. package/dist/mjs/register-env.d.ts.map +1 -0
  130. package/dist/mjs/register-env.js +19 -0
  131. package/dist/mjs/register-env.js.map +1 -0
  132. package/dist/mjs/register-process-end.d.ts +2 -0
  133. package/dist/mjs/register-process-end.d.ts.map +1 -0
  134. package/dist/mjs/register-process-end.js +26 -0
  135. package/dist/mjs/register-process-end.js.map +1 -0
  136. package/dist/mjs/require-resolve.d.ts +3 -0
  137. package/dist/mjs/require-resolve.d.ts.map +1 -0
  138. package/dist/mjs/require-resolve.js +9 -0
  139. package/dist/mjs/require-resolve.js.map +1 -0
  140. package/dist/mjs/spawn-opts.d.ts +10 -0
  141. package/dist/mjs/spawn-opts.d.ts.map +1 -0
  142. package/dist/mjs/spawn-opts.js +14 -0
  143. package/dist/mjs/spawn-opts.js.map +1 -0
  144. package/dist/mjs/x.d.ts +2 -0
  145. package/dist/mjs/x.d.ts.map +1 -0
  146. package/dist/mjs/x.js +2 -0
  147. package/dist/mjs/x.js.map +1 -0
  148. package/package.json +49 -19
  149. package/index.d.ts +0 -196
  150. package/lib/argv-to-node-options.cjs +0 -2
  151. package/lib/child_process.cjs +0 -81
  152. package/lib/cjs.cjs +0 -16
  153. package/lib/esm.mjs +0 -74
  154. package/lib/get-exclude.cjs +0 -21
  155. package/lib/get-process-info.cjs +0 -45
  156. package/lib/index.cjs +0 -163
  157. package/lib/index.d.cts +0 -196
  158. package/lib/index.d.ts +0 -196
  159. package/lib/json-file.cjs +0 -19
  160. package/lib/node-options-env.cjs +0 -100
  161. package/lib/node-options-to-argv.cjs +0 -52
  162. package/lib/process-info-node.cjs +0 -84
  163. package/lib/register-coverage.cjs +0 -74
  164. package/lib/register-env.cjs +0 -21
  165. package/lib/register-process-end.cjs +0 -29
  166. 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,2 @@
1
+ export declare const register: () => void;
2
+ //# sourceMappingURL=register-env.d.ts.map
@@ -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,2 @@
1
+ export declare const register: () => void;
2
+ //# sourceMappingURL=register-process-end.d.ts.map
@@ -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,3 @@
1
+ /// <reference types="node" />
2
+ export declare const resolve: NodeJS.RequireResolve;
3
+ //# sourceMappingURL=require-resolve.d.ts.map
@@ -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"]}
@@ -0,0 +1,2 @@
1
+ export declare const foo = "bar";
2
+ //# sourceMappingURL=x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.d.ts","sourceRoot":"","sources":["../../lib/x.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,QAAQ,CAAA"}
package/dist/mjs/x.js ADDED
@@ -0,0 +1,2 @@
1
+ export const foo = 'bar';
2
+ //# sourceMappingURL=x.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.js","sourceRoot":"","sources":["../../lib/x.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAA","sourcesContent":["export const foo = 'bar'\n"]}
package/package.json CHANGED
@@ -1,31 +1,56 @@
1
1
  {
2
2
  "name": "@tapjs/processinfo",
3
- "version": "1.0.11",
4
- "main": "lib/index.cjs",
5
- "types": "index.d.ts",
3
+ "version": "2.0.0",
4
+ "main": "./dist/cjs/index.js",
5
+ "types": "./dist/cjs/index.d.ts",
6
+ "module": "./dist/mjs/esm.mjs",
6
7
  "files": [
7
- "index.d.ts",
8
- "lib"
8
+ "dist"
9
9
  ],
10
10
  "exports": {
11
- ".": "./lib/index.cjs",
12
- "./esm": "./lib/esm.mjs",
13
- "./cjs": "./lib/cjs.cjs"
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-map": "map.cjs"
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": 80,
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.1",
65
+ "signal-exit": "^4.0.2",
41
66
  "uuid": "^8.3.2"
42
67
  },
43
68
  "engines": {
44
- "node": ">=16.12"
69
+ "node": ">=16.17"
45
70
  },
46
71
  "license": "ISC",
47
72
  "devDependencies": {
48
73
  "@npmcli/promise-spawn": "^2.0.1",
49
- "@types/node": "^18.11.9",
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,196 +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
- public parent: ProcessInfoNode | null
21
- public children: ProcessInfoNode[] | null
22
- public files: string[] | null
23
- public externalID: string | null
24
- link(db: ProcessInfo): void
25
- }
26
-
27
- declare interface ProcessInfoSpawnOptions extends SpawnOptions {
28
- externalID?: string
29
- }
30
-
31
- declare interface ProcessInfoSpawnSyncOptions extends SpawnSyncOptions {
32
- externalID?: string
33
- }
34
- declare interface ProcessInfoSpawnSyncOptionsWithStringEncoding
35
- extends ProcessInfoSpawnSyncOptions {
36
- encoding: BufferEncoding
37
- }
38
- interface ProcessInfoSpawnSyncOptionsWithBufferEncoding
39
- extends ProcessInfoSpawnSyncOptions {
40
- encoding?: 'buffer' | null | undefined
41
- }
42
-
43
- declare interface ProcessInfoExecSyncOptions extends ExecSyncOptions {
44
- externalID?: string
45
- }
46
- declare interface ProcessInfoExecSyncOptionsWithStringEncoding
47
- extends ProcessInfoExecSyncOptions {
48
- encoding: BufferEncoding
49
- }
50
- declare interface ProcessInfoExecSyncOptionsWithBufferEncoding
51
- extends ProcessInfoExecSyncOptions {
52
- encoding?: 'buffer' | null | undefined
53
- }
54
-
55
- declare interface ProcessInfoExecOptions extends ExecOptions {
56
- externalID?: string
57
- }
58
- declare interface ProcessInfoExecFileSyncOptions extends ExecFileSyncOptions {
59
- externalID?: string
60
- }
61
- declare interface ProcessInfoExecFileSyncOptionsWithStringEncoding
62
- extends ProcessInfoExecFileSyncOptions {
63
- encoding: BufferEncoding
64
- }
65
- declare interface ProcessInfoExecFileSyncOptionsWithBufferEncoding
66
- extends ProcessInfoExecFileSyncOptions {
67
- encoding?: 'buffer' | null | undefined
68
- }
69
- declare interface ProcessInfoExecFileOptions extends ExecFileOptions {
70
- externalID?: string
71
- }
72
-
73
- declare class ProcessInfo {
74
- public dir: string
75
- public exclude: RegExp
76
- public roots: Set<ProcessInfoNode>
77
- public files: Map<string, Set<ProcessInfoNode>>
78
- public uuids: Map<string, ProcessInfoNode>
79
- public externalIDs: Map<string, ProcessInfoNode>
80
-
81
- private pendingRoot: Map<string, ProcessInfoNode>
82
- private pendingParent: Map<string, ProcessInfoNode>
83
-
84
- constructor(options?: ProcessInfoOptions)
85
-
86
- save(): Promise<void>
87
- saveSync(): void
88
- erase(): Promise<void>
89
- eraseSync(): void
90
-
91
- load(): Promise<ProcessInfo>
92
- loadSync(): ProcessInfo
93
-
94
- static get Node(): typeof ProcessInfoNode
95
- static get ProcessInfo(): typeof ProcessInfo
96
-
97
- static spawn(
98
- cmd: string,
99
- args: string[],
100
- options: ProcessInfoSpawnOptions
101
- ): ChildProcess
102
-
103
- static spawnSync(cmd: string): SpawnSyncReturns<Buffer>
104
- static spawnSync(
105
- cmd: string,
106
- options: ProcessInfoSpawnSyncOptionsWithStringEncoding
107
- ): SpawnSyncReturns<string>
108
- static spawnSync(
109
- cmd: string,
110
- options: ProcessInfoSpawnSyncOptionsWithBufferEncoding
111
- ): SpawnSyncReturns<Buffer>
112
- static spawnSync(
113
- cmd: string,
114
- options?: ProcessInfoSpawnSyncOptions
115
- ): SpawnSyncReturns<string | Buffer>
116
- static spawnSync(
117
- cmd: string,
118
- args: readonly string[]
119
- ): SpawnSyncReturns<Buffer>
120
- static spawnSync(
121
- cmd: string,
122
- args: readonly string[],
123
- options: ProcessInfoSpawnSyncOptionsWithStringEncoding
124
- ): SpawnSyncReturns<string>
125
- static spawnSync(
126
- cmd: string,
127
- args: readonly string[],
128
- options: ProcessInfoSpawnSyncOptionsWithBufferEncoding
129
- ): SpawnSyncReturns<Buffer>
130
- static spawnSync(
131
- cmd: string,
132
- args?: readonly string[],
133
- options?: ProcessInfoSpawnSyncOptions
134
- ): SpawnSyncReturns<string | Buffer>
135
-
136
- static exec(
137
- cmd: string,
138
- options: ProcessInfoExecOptions,
139
- callback?: (
140
- error: ExecException | null,
141
- stdout: Buffer,
142
- stderr: Buffer
143
- ) => void
144
- ): ChildProcess
145
-
146
- static execSync(
147
- cmd: string,
148
- options: ProcessInfoExecSyncOptionsWithStringEncoding
149
- ): string
150
- static execSync(
151
- cmd: string,
152
- options: ProcessInfoExecSyncOptionsWithBufferEncoding
153
- ): Buffer
154
- static execSync(
155
- cmd: string,
156
- options?: ProcessInfoExecSyncOptions
157
- ): string | Buffer
158
-
159
- static execFile(
160
- cmd: string,
161
- args: string[],
162
- options: ProcessInfoExecFileOptions
163
- ): ChildProcess
164
-
165
- static execFileSync(file: string): Buffer
166
- static execFileSync(
167
- file: string,
168
- options: ProcessInfoExecFileSyncOptionsWithStringEncoding
169
- ): string
170
- static execFileSync(
171
- file: string,
172
- options: ProcessInfoExecFileSyncOptionsWithBufferEncoding
173
- ): Buffer
174
- static execFileSync(
175
- file: string,
176
- options?: ProcessInfoExecFileSyncOptions
177
- ): string | Buffer
178
- static execFileSync(file: string, args: readonly string[]): Buffer
179
- static execFileSync(
180
- file: string,
181
- args: readonly string[],
182
- options: ProcessInfoExecFileSyncOptionsWithStringEncoding
183
- ): string
184
- static execFileSync(
185
- file: string,
186
- args: readonly string[],
187
- options: ProcessInfoExecFileSyncOptionsWithBufferEncoding
188
- ): Buffer
189
- static execFileSync(
190
- file: string,
191
- args?: readonly string[],
192
- options?: ProcessInfoExecFileSyncOptions
193
- ): string | Buffer
194
- }
195
-
196
- export = ProcessInfo
@@ -1,2 +0,0 @@
1
- exports.argvToNodeOptions = argv =>
2
- argv.map(o => `"${o.replace(/"/g, '\\"')}"`).join(' ')
@@ -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 })