@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,44 @@
1
+ import { exec, execFile, execFileSync, execSync, fork, spawn, spawnSync } from './child_process.js';
2
+ export * from './child_process.js';
3
+ export { ProcessInfoNodeData } from './get-process-info.js';
4
+ export * from './process-info-node.js';
5
+ import { ProcessInfoNode } from './process-info-node.js';
6
+ export declare class ProcessInfo {
7
+ dir: string;
8
+ exclude: RegExp;
9
+ roots: Set<ProcessInfoNode>;
10
+ uuids: Map<string, ProcessInfoNode>;
11
+ files: Map<string, Set<ProcessInfoNode>>;
12
+ pendingRoot: Map<string, Set<ProcessInfoNode>>;
13
+ pendingParent: Map<string, Set<ProcessInfoNode>>;
14
+ externalIDs: Map<string, ProcessInfoNode>;
15
+ static load({ dir, exclude, }: {
16
+ dir?: string | undefined;
17
+ exclude?: RegExp | undefined;
18
+ }): Promise<ProcessInfo>;
19
+ static loadSync({ dir, exclude, }: {
20
+ dir?: string | undefined;
21
+ exclude?: RegExp | undefined;
22
+ }): ProcessInfo;
23
+ constructor({ dir, exclude, }?: {
24
+ dir?: string | undefined;
25
+ exclude?: RegExp | undefined;
26
+ });
27
+ clear(): void;
28
+ save(): Promise<void>;
29
+ saveSync(): Promise<void>;
30
+ erase(): Promise<void>;
31
+ eraseSync(): void;
32
+ load(): Promise<this>;
33
+ loadSync(): this;
34
+ static get Node(): typeof ProcessInfoNode;
35
+ static get ProcessInfo(): typeof ProcessInfo;
36
+ static get spawn(): typeof spawn;
37
+ static get spawnSync(): typeof spawnSync;
38
+ static get exec(): typeof exec;
39
+ static get execSync(): typeof execSync;
40
+ static get execFile(): typeof execFile;
41
+ static get execFileSync(): typeof execFileSync;
42
+ static get fork(): typeof fork;
43
+ }
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,SAAS,EACV,MAAM,oBAAoB,CAAA;AAE3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,cAAc,wBAAwB,CAAA;AAItC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOxD,qBAAa,WAAW;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,CAAY;IACvC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAY;IAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAY;IACpD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAY;IAC1D,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAY;IAC5D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAY;WAExC,IAAI,CAAC,EAChB,GAAgD,EAChD,OAA0C,GAC3C;;;KAAA,GAAG,OAAO,CAAC,WAAW,CAAC;IAMxB,MAAM,CAAC,QAAQ,CAAC,EACd,GAAgD,EAChD,OAA0C,GAC3C;;;KAAA,GAAG,WAAW;gBAMH,EACV,GAAgD,EAChD,OAA0C,GAC3C;;;KAAK;IAKN,KAAK;IAOC,IAAI;IAUJ,QAAQ;IAQR,KAAK;IAKX,SAAS;IAKH,IAAI;IAsBV,QAAQ;IAuBR,MAAM,KAAK,IAAI,2BAEd;IAED,MAAM,KAAK,WAAW,uBAErB;IAED,MAAM,KAAK,KAAK,iBAEf;IAED,MAAM,KAAK,SAAS,qBAEnB;IAED,MAAM,KAAK,IAAI,gBAEd;IAED,MAAM,KAAK,QAAQ,oBAElB;IAED,MAAM,KAAK,QAAQ,oBAElB;IAED,MAAM,KAAK,YAAY,wBAEtB;IAED,MAAM,KAAK,IAAI,gBAEd;CACF"}
@@ -0,0 +1,130 @@
1
+ import { exec, execFile, execFileSync, execSync, fork, spawn, spawnSync, } from './child_process.js';
2
+ export * from './child_process.js';
3
+ export * from './process-info-node.js';
4
+ import { basename, resolve } from 'path';
5
+ import { ProcessInfoNode } from './process-info-node.js';
6
+ import { mkdirSync, readdirSync, rmSync, writeFileSync } from 'fs';
7
+ import { mkdir, readdir, rm, writeFile } from 'fs/promises';
8
+ import { safeJSON, safeJSONSync } from './json-file.js';
9
+ export class ProcessInfo {
10
+ dir;
11
+ exclude;
12
+ roots = new Set();
13
+ uuids = new Map();
14
+ files = new Map();
15
+ pendingRoot = new Map();
16
+ pendingParent = new Map();
17
+ externalIDs = new Map();
18
+ static async load({ dir = resolve(process.cwd(), '.tap/processinfo'), exclude = /(^|\\|\/)node_modules(\\|\/|$)/, }) {
19
+ const pi = new ProcessInfo({ dir, exclude });
20
+ await pi.load();
21
+ return pi;
22
+ }
23
+ static loadSync({ dir = resolve(process.cwd(), '.tap/processinfo'), exclude = /(^|\\|\/)node_modules(\\|\/|$)/, }) {
24
+ const pi = new ProcessInfo({ dir, exclude });
25
+ pi.loadSync();
26
+ return pi;
27
+ }
28
+ constructor({ dir = resolve(process.cwd(), '.tap/processinfo'), exclude = /(^|\\|\/)node_modules(\\|\/|$)/, } = {}) {
29
+ this.dir = dir;
30
+ this.exclude = exclude;
31
+ }
32
+ clear() {
33
+ this.roots.clear();
34
+ this.files.clear();
35
+ this.uuids.clear();
36
+ this.externalIDs.clear();
37
+ }
38
+ async save() {
39
+ await mkdir(this.dir, { recursive: true });
40
+ const writes = [];
41
+ for (const [uuid, info] of this.uuids.entries()) {
42
+ const f = `${this.dir}/${uuid}.json`;
43
+ writes.push(writeFile(f, JSON.stringify(info) + '\n', 'utf8'));
44
+ }
45
+ await Promise.all(writes);
46
+ }
47
+ async saveSync() {
48
+ mkdirSync(this.dir, { recursive: true });
49
+ for (const [uuid, info] of this.uuids.entries()) {
50
+ const f = `${this.dir}/${uuid}.json`;
51
+ writeFileSync(f, JSON.stringify(info) + '\n', 'utf8');
52
+ }
53
+ }
54
+ async erase() {
55
+ this.clear();
56
+ await rm(this.dir, { recursive: true });
57
+ }
58
+ eraseSync() {
59
+ this.clear();
60
+ rmSync(this.dir, { recursive: true });
61
+ }
62
+ async load() {
63
+ const promises = [];
64
+ for (const entry of await readdir(this.dir).catch(() => [])) {
65
+ const uuid = basename(entry, '.json');
66
+ if (this.uuids.has(uuid)) {
67
+ continue;
68
+ }
69
+ const f = resolve(this.dir, entry);
70
+ promises.push(safeJSON(f).then(data => {
71
+ if (!data.uuid || data.uuid !== uuid) {
72
+ return;
73
+ }
74
+ new ProcessInfoNode(data).link(this);
75
+ }));
76
+ }
77
+ await Promise.all(promises);
78
+ return this;
79
+ }
80
+ loadSync() {
81
+ let entries;
82
+ try {
83
+ entries = readdirSync(this.dir);
84
+ }
85
+ catch (_) {
86
+ entries = [];
87
+ }
88
+ for (const entry of entries) {
89
+ const uuid = basename(entry, '.json');
90
+ if (this.uuids.has(uuid)) {
91
+ continue;
92
+ }
93
+ const f = resolve(this.dir, entry);
94
+ const data = safeJSONSync(f);
95
+ if (!data.uuid || data.uuid !== uuid) {
96
+ continue;
97
+ }
98
+ new ProcessInfoNode(data).link(this);
99
+ }
100
+ return this;
101
+ }
102
+ static get Node() {
103
+ return ProcessInfoNode;
104
+ }
105
+ static get ProcessInfo() {
106
+ return ProcessInfo;
107
+ }
108
+ static get spawn() {
109
+ return spawn;
110
+ }
111
+ static get spawnSync() {
112
+ return spawnSync;
113
+ }
114
+ static get exec() {
115
+ return exec;
116
+ }
117
+ static get execSync() {
118
+ return execSync;
119
+ }
120
+ static get execFile() {
121
+ return execFile;
122
+ }
123
+ static get execFileSync() {
124
+ return execFileSync;
125
+ }
126
+ static get fork() {
127
+ return fork;
128
+ }
129
+ }
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n exec,\n execFile,\n execFileSync,\n execSync,\n fork,\n spawn,\n spawnSync,\n} from './child_process.js'\n\nexport * from './child_process.js'\nexport { ProcessInfoNodeData } from './get-process-info.js'\nexport * from './process-info-node.js'\n\nimport { basename, resolve } from 'path'\n\nimport { ProcessInfoNode } from './process-info-node.js'\n\nimport { mkdirSync, readdirSync, rmSync, writeFileSync } from 'fs'\nimport { mkdir, readdir, rm, writeFile } from 'fs/promises'\n\nimport { safeJSON, safeJSONSync } from './json-file.js'\n\nexport class ProcessInfo {\n dir: string\n exclude: RegExp\n roots: Set<ProcessInfoNode> = new Set()\n uuids: Map<string, ProcessInfoNode> = new Map()\n files: Map<string, Set<ProcessInfoNode>> = new Map()\n pendingRoot: Map<string, Set<ProcessInfoNode>> = new Map()\n pendingParent: Map<string, Set<ProcessInfoNode>> = new Map()\n externalIDs: Map<string, ProcessInfoNode> = new Map()\n\n static async load({\n dir = resolve(process.cwd(), '.tap/processinfo'),\n exclude = /(^|\\\\|\\/)node_modules(\\\\|\\/|$)/,\n }): Promise<ProcessInfo> {\n const pi = new ProcessInfo({ dir, exclude })\n await pi.load()\n return pi\n }\n\n static loadSync({\n dir = resolve(process.cwd(), '.tap/processinfo'),\n exclude = /(^|\\\\|\\/)node_modules(\\\\|\\/|$)/,\n }): ProcessInfo {\n const pi = new ProcessInfo({ dir, exclude })\n pi.loadSync()\n return pi\n }\n\n constructor({\n dir = resolve(process.cwd(), '.tap/processinfo'),\n exclude = /(^|\\\\|\\/)node_modules(\\\\|\\/|$)/,\n } = {}) {\n this.dir = dir\n this.exclude = exclude\n }\n\n clear() {\n this.roots.clear()\n this.files.clear()\n this.uuids.clear()\n this.externalIDs.clear()\n }\n\n async save() {\n await mkdir(this.dir, { recursive: true })\n const writes = []\n for (const [uuid, info] of this.uuids.entries()) {\n const f = `${this.dir}/${uuid}.json`\n writes.push(writeFile(f, JSON.stringify(info) + '\\n', 'utf8'))\n }\n await Promise.all(writes)\n }\n\n async saveSync() {\n mkdirSync(this.dir, { recursive: true })\n for (const [uuid, info] of this.uuids.entries()) {\n const f = `${this.dir}/${uuid}.json`\n writeFileSync(f, JSON.stringify(info) + '\\n', 'utf8')\n }\n }\n\n async erase() {\n this.clear()\n await rm(this.dir, { recursive: true })\n }\n\n eraseSync() {\n this.clear()\n rmSync(this.dir, { recursive: true })\n }\n\n async load() {\n const promises = []\n for (const entry of await readdir(this.dir).catch(() => [])) {\n const uuid = basename(entry, '.json')\n if (this.uuids.has(uuid)) {\n continue\n }\n const f = resolve(this.dir, entry)\n promises.push(\n safeJSON(f).then(data => {\n if (!data.uuid || data.uuid !== uuid) {\n return\n }\n new ProcessInfoNode(data).link(this)\n })\n )\n }\n await Promise.all(promises)\n\n return this\n }\n\n loadSync() {\n let entries: string[]\n try {\n entries = readdirSync(this.dir)\n } catch (_) {\n entries = []\n }\n for (const entry of entries) {\n const uuid = basename(entry, '.json')\n if (this.uuids.has(uuid)) {\n continue\n }\n const f = resolve(this.dir, entry)\n const data = safeJSONSync(f)\n if (!data.uuid || data.uuid !== uuid) {\n continue\n }\n new ProcessInfoNode(data).link(this)\n }\n\n return this\n }\n\n static get Node() {\n return ProcessInfoNode\n }\n\n static get ProcessInfo() {\n return ProcessInfo\n }\n\n static get spawn() {\n return spawn\n }\n\n static get spawnSync() {\n return spawnSync\n }\n\n static get exec() {\n return exec\n }\n\n static get execSync() {\n return execSync\n }\n\n static get execFile() {\n return execFile\n }\n\n static get execFileSync() {\n return execFileSync\n }\n\n static get fork() {\n return fork\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const safeJSONSync: (f: string) => any;
2
+ export declare const safeJSON: (f: string) => Promise<any>;
3
+ //# sourceMappingURL=json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../lib/json-file.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,MAAO,MAAM,QAMrC,CAAA;AAED,eAAO,MAAM,QAAQ,MAAO,MAAM,iBAGZ,CAAA"}
@@ -0,0 +1,15 @@
1
+ // read the file and json decode it, if anything fails, return {}
2
+ import { readFileSync } from 'fs';
3
+ import { readFile } from 'fs/promises';
4
+ export const safeJSONSync = (f) => {
5
+ try {
6
+ return JSON.parse(readFileSync(f, 'utf8'));
7
+ }
8
+ catch (e) {
9
+ return {};
10
+ }
11
+ };
12
+ export const safeJSON = (f) => readFile(f, 'utf8')
13
+ .then(d => JSON.parse(d))
14
+ .catch(() => ({}));
15
+ //# sourceMappingURL=json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../lib/json-file.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE;IACxC,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,CAAA;KACV;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CACpC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;KAChB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA","sourcesContent":["// read the file and json decode it, if anything fails, return {}\n\nimport { readFileSync } from 'fs'\nimport { readFile } from 'fs/promises'\n\nexport const safeJSONSync = (f: string) => {\n try {\n return JSON.parse(readFileSync(f, 'utf8'))\n } catch (e) {\n return {}\n }\n}\n\nexport const safeJSON = (f: string) =>\n readFile(f, 'utf8')\n .then(d => JSON.parse(d))\n .catch(() => ({}))\n"]}
@@ -0,0 +1,5 @@
1
+ export declare const cjsLoader: string;
2
+ export declare const esmLoader: string;
3
+ export declare const cjsMatch: (p: string) => boolean;
4
+ export declare const esmMatch: (p: string) => boolean;
5
+ //# sourceMappingURL=loader-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-paths.d.ts","sourceRoot":"","sources":["../../lib/loader-paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,QAA2B,CAAA;AAEjD,eAAO,MAAM,SAAS,QAAuC,CAAA;AAQ7D,eAAO,MAAM,QAAQ,MAAO,MAAM,KAAG,OASpC,CAAA;AAED,eAAO,MAAM,QAAQ,MAAO,MAAM,KAAG,OASpC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { resolve } from './require-resolve.js';
2
+ import { resolve as pathResolve } from 'path';
3
+ import { fileURLToPath, pathToFileURL } from 'url';
4
+ export const cjsLoader = resolve('../cjs/cjs.js');
5
+ const esmLoaderPath = resolve('../mjs/esm.mjs');
6
+ export const esmLoader = String(pathToFileURL(esmLoaderPath));
7
+ const res = (p) => /^\.?\.[\\/]/.test(p) ? resolve(pathResolve(p)) : resolve(p);
8
+ // functions to test if a given path is the loader path
9
+ // we care about.
10
+ export const cjsMatch = (p) => {
11
+ try {
12
+ return (p === '@tapjs/processinfo/cjs' ||
13
+ res(p) === cjsLoader);
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ };
19
+ export const esmMatch = (p) => {
20
+ const d = p.startsWith('file://')
21
+ ? fileURLToPath(p)
22
+ : decodeURIComponent(p);
23
+ try {
24
+ return d === '@tapjs/processinfo' || res(d) === esmLoaderPath;
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ };
30
+ //# sourceMappingURL=loader-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-paths.js","sourceRoot":"","sources":["../../lib/loader-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,MAAM,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AACjD,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAA;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAG9D,uDAAuD;AACvD,iBAAiB;AACjB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAW,EAAE;IAC7C,IAAI;QACF,OAAO,CACL,CAAC,KAAK,wBAAwB;YAC9B,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CACrB,CAAA;KACF;IAAC,MAAM;QACN,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAW,EAAE;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI;QACF,OAAO,CAAC,KAAK,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAA;KAC9D;IAAC,MAAM;QACN,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA","sourcesContent":["import { resolve } from './require-resolve.js'\nimport { resolve as pathResolve } from 'path'\n\nimport { fileURLToPath, pathToFileURL } from 'url'\n\nexport const cjsLoader = resolve('../cjs/cjs.js')\nconst esmLoaderPath = resolve('../mjs/esm.mjs')\nexport const esmLoader = String(pathToFileURL(esmLoaderPath))\n\nconst res = (p: string) =>\n /^\\.?\\.[\\\\/]/.test(p) ? resolve(pathResolve(p)) : resolve(p)\n\n\n// functions to test if a given path is the loader path\n// we care about.\nexport const cjsMatch = (p: string): boolean => {\n try {\n return (\n p === '@tapjs/processinfo/cjs' ||\n res(p) === cjsLoader\n )\n } catch {\n return false\n }\n}\n\nexport const esmMatch = (p: string): boolean => {\n const d = p.startsWith('file://')\n ? fileURLToPath(p)\n : decodeURIComponent(p)\n try {\n return d === '@tapjs/processinfo' || res(d) === esmLoaderPath\n } catch {\n return false\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ export declare const nodeOptionsEnv: (env: NodeJS.ProcessEnv, args: ReadonlyArray<string>) => string;
6
+ //# sourceMappingURL=node-options-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-options-env.d.ts","sourceRoot":"","sources":["../../lib/node-options-env.ts"],"names":[],"mappings":";;;;AAoEA,eAAO,MAAM,cAAc,QACpB,OAAO,UAAU,QAChB,cAAc,MAAM,CAAC,WAM5B,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { argvToNodeOptions } from './argv-to-node-options.js';
2
+ import { cjsLoader, cjsMatch, esmLoader, esmMatch, } from './loader-paths.js';
3
+ import { nodeOptionsToArgv } from './node-options-to-argv.js';
4
+ // Check if our esm and/or cjs loaders are in the list,
5
+ // and only add them if not.
6
+ const hasCJSLoader = (args) => hasLoader(args, ['-r', '--require'], cjsMatch);
7
+ const hasESMLoader = (args) => hasLoader(args, ['--experimental-loader', '--loader'], esmMatch);
8
+ const addCJS = (args) => !hasCJSLoader(args) ? args.concat('--require=' + cjsLoader) : args;
9
+ const addESM = (args) => !hasESMLoader(args) ? args.concat('--loader=' + esmLoader) : args;
10
+ const cjsOnly = (args) => hasESMLoader(args) ? false : hasCJSLoader(args);
11
+ const hasLoader = (args, keys, test) => {
12
+ for (let i = 0; i < args.length; i++) {
13
+ const arg = args[i];
14
+ // -r <value>
15
+ // --loader <value>
16
+ if (keys.includes(arg) && i < args.length - 1) {
17
+ if (test(args[i + 1])) {
18
+ return true;
19
+ }
20
+ else {
21
+ continue;
22
+ }
23
+ }
24
+ else if (arg.startsWith('--') && arg.includes('=')) {
25
+ // --require=<value>
26
+ // --loader=<value>
27
+ const [k, ...rest] = arg.split('=');
28
+ if (keys.includes(k) && test(rest.join('='))) {
29
+ return true;
30
+ }
31
+ else {
32
+ continue;
33
+ }
34
+ }
35
+ else if (!arg.startsWith('--') &&
36
+ arg.startsWith('-') &&
37
+ arg.length > 2 &&
38
+ keys.includes(arg.substring(0, 2))) {
39
+ // -r<value>
40
+ if (test(arg.substring(2))) {
41
+ return true;
42
+ }
43
+ else {
44
+ continue;
45
+ }
46
+ }
47
+ }
48
+ return false;
49
+ };
50
+ export const nodeOptionsEnv = (env, args) => {
51
+ const no = nodeOptionsToArgv(env.NODE_OPTIONS);
52
+ return argvToNodeOptions(cjsOnly(args.concat(no)) ? addCJS(no) : addESM(no));
53
+ };
54
+ //# sourceMappingURL=node-options-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-options-env.js","sourceRoot":"","sources":["../../lib/node-options-env.ts"],"names":[],"mappings":"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","sourcesContent":["import { argvToNodeOptions } from './argv-to-node-options.js'\nimport {\n cjsLoader,\n cjsMatch,\n esmLoader,\n esmMatch,\n} from './loader-paths.js'\nimport { nodeOptionsToArgv } from './node-options-to-argv.js'\n\n// Check if our esm and/or cjs loaders are in the list,\n// and only add them if not.\n\nconst hasCJSLoader = (args: string[]) =>\n hasLoader(args, ['-r', '--require'], cjsMatch)\n\nconst hasESMLoader = (args: string[]) =>\n hasLoader(args, ['--experimental-loader', '--loader'], esmMatch)\n\nconst addCJS = (args: string[]) =>\n !hasCJSLoader(args) ? args.concat('--require=' + cjsLoader) : args\n\nconst addESM = (args: string[]) =>\n !hasESMLoader(args) ? args.concat('--loader=' + esmLoader) : args\n\nconst cjsOnly = (args: string[]) =>\n hasESMLoader(args) ? false : hasCJSLoader(args)\n\nconst hasLoader = (\n args: string[],\n keys: string[],\n test: (s: string) => boolean\n) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]\n // -r <value>\n // --loader <value>\n if (keys.includes(arg) && i < args.length - 1) {\n if (test(args[i + 1])) {\n return true\n } else {\n continue\n }\n } else if (arg.startsWith('--') && arg.includes('=')) {\n // --require=<value>\n // --loader=<value>\n const [k, ...rest] = arg.split('=')\n if (keys.includes(k) && test(rest.join('='))) {\n return true\n } else {\n continue\n }\n } else if (\n !arg.startsWith('--') &&\n arg.startsWith('-') &&\n arg.length > 2 &&\n keys.includes(arg.substring(0, 2))\n ) {\n // -r<value>\n if (test(arg.substring(2))) {\n return true\n } else {\n continue\n }\n }\n }\n return false\n}\n\nexport const nodeOptionsEnv = (\n env: NodeJS.ProcessEnv,\n args: ReadonlyArray<string>\n) => {\n const no = nodeOptionsToArgv(env.NODE_OPTIONS)\n return argvToNodeOptions(\n cjsOnly(args.concat(no)) ? addCJS(no) : addESM(no)\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const nodeOptionsToArgv: (no: string | undefined) => string[];
2
+ //# sourceMappingURL=node-options-to-argv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-options-to-argv.d.ts","sourceRoot":"","sources":["../../lib/node-options-to-argv.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,OAAQ,MAAM,GAAG,SAAS,KAAG,MAAM,EAmDhE,CAAA"}
@@ -0,0 +1,54 @@
1
+ export const nodeOptionsToArgv = (no) => {
2
+ if (!no)
3
+ return [];
4
+ const argv = [];
5
+ let escaping = false;
6
+ let inquote = false;
7
+ let tokStart = 0;
8
+ let tok = '';
9
+ for (let i = 0; i < no.length; i++) {
10
+ const c = no.charAt(i);
11
+ switch (c) {
12
+ case '"':
13
+ if (escaping) {
14
+ tok += no.slice(tokStart, i - 1) + '"';
15
+ tokStart = i + 1;
16
+ escaping = false;
17
+ }
18
+ else if (inquote) {
19
+ tok += no.slice(tokStart, i);
20
+ tokStart = i + 1;
21
+ inquote = false;
22
+ }
23
+ else {
24
+ inquote = true;
25
+ tok += no.slice(tokStart, i);
26
+ tokStart = i + 1;
27
+ }
28
+ continue;
29
+ case '\\':
30
+ if (inquote) {
31
+ escaping = true;
32
+ }
33
+ continue;
34
+ case ' ':
35
+ if (inquote)
36
+ continue;
37
+ tok += no.slice(tokStart, i);
38
+ tokStart = i + 1;
39
+ argv.push(tok);
40
+ tok = '';
41
+ continue;
42
+ default:
43
+ escaping = false;
44
+ continue;
45
+ }
46
+ }
47
+ if (inquote) {
48
+ return [];
49
+ }
50
+ tok += no.slice(tokStart);
51
+ argv.push(tok);
52
+ return argv;
53
+ };
54
+ //# sourceMappingURL=node-options-to-argv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-options-to-argv.js","sourceRoot":"","sources":["../../lib/node-options-to-argv.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAsB,EAAY,EAAE;IACpE,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAA;IAClB,MAAM,IAAI,GAAG,EAAE,CAAA;IACf,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,QAAQ,CAAC,EAAE;YACT,KAAK,GAAG;gBACN,IAAI,QAAQ,EAAE;oBACZ,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;oBACtC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;oBAChB,QAAQ,GAAG,KAAK,CAAA;iBACjB;qBAAM,IAAI,OAAO,EAAE;oBAClB,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;oBAC5B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;oBAChB,OAAO,GAAG,KAAK,CAAA;iBAChB;qBAAM;oBACL,OAAO,GAAG,IAAI,CAAA;oBACd,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;oBAC5B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;iBACjB;gBACD,SAAQ;YAEV,KAAK,IAAI;gBACP,IAAI,OAAO,EAAE;oBACX,QAAQ,GAAG,IAAI,CAAA;iBAChB;gBACD,SAAQ;YAEV,KAAK,GAAG;gBACN,IAAI,OAAO;oBAAE,SAAQ;gBACrB,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBAC5B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;gBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,SAAQ;YAEV;gBACE,QAAQ,GAAG,KAAK,CAAA;gBAChB,SAAQ;SACX;KACF;IACD,IAAI,OAAO,EAAE;QACX,OAAO,EAAE,CAAA;KACV;IACD,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,OAAO,IAAI,CAAA;AACb,CAAC,CAAA","sourcesContent":["export const nodeOptionsToArgv = (no: string | undefined): string[] => {\n if (!no) return []\n const argv = []\n let escaping = false\n let inquote = false\n let tokStart = 0\n let tok = ''\n for (let i = 0; i < no.length; i++) {\n const c = no.charAt(i)\n switch (c) {\n case '\"':\n if (escaping) {\n tok += no.slice(tokStart, i - 1) + '\"'\n tokStart = i + 1\n escaping = false\n } else if (inquote) {\n tok += no.slice(tokStart, i)\n tokStart = i + 1\n inquote = false\n } else {\n inquote = true\n tok += no.slice(tokStart, i)\n tokStart = i + 1\n }\n continue\n\n case '\\\\':\n if (inquote) {\n escaping = true\n }\n continue\n\n case ' ':\n if (inquote) continue\n tok += no.slice(tokStart, i)\n tokStart = i + 1\n argv.push(tok)\n tok = ''\n continue\n\n default:\n escaping = false\n continue\n }\n }\n if (inquote) {\n return []\n }\n tok += no.slice(tokStart)\n argv.push(tok)\n return argv\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,24 @@
1
+ import type { ProcessInfo } from './index.js';
2
+ import type { ProcessInfoNodeData } from './get-process-info.js';
3
+ export declare class ProcessInfoNode {
4
+ #private;
5
+ date: string;
6
+ argv: string[];
7
+ execArgv: string[];
8
+ NODE_OPTIONS?: string;
9
+ cwd: string;
10
+ pid: number;
11
+ ppid: number;
12
+ uuid: string;
13
+ files: string[];
14
+ parent?: ProcessInfoNode | null;
15
+ root?: ProcessInfoNode | null;
16
+ children?: Set<ProcessInfoNode> | null;
17
+ externalID: string | null;
18
+ constructor(data: ProcessInfoNodeData);
19
+ toJSON(): {
20
+ [k: string]: any;
21
+ };
22
+ link(db: ProcessInfo): void;
23
+ }
24
+ //# sourceMappingURL=process-info-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-info-node.d.ts","sourceRoot":"","sources":["../../lib/process-info-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,qBAAa,eAAe;;IAC1B,IAAI,EAAG,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,EAAE,CAAA;IACf,QAAQ,EAAG,MAAM,EAAE,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,EAAG,MAAM,CAAA;IACZ,GAAG,EAAG,MAAM,CAAA;IACZ,IAAI,EAAG,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAK;IACpB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAO;IACtC,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAO;IACpC,QAAQ,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAO;IAC7C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;gBAIpB,IAAI,EAAE,mBAAmB;IAKrC,MAAM;;;IAcN,IAAI,CAAC,EAAE,EAAE,WAAW;CAiErB"}
@@ -0,0 +1,96 @@
1
+ export class ProcessInfoNode {
2
+ date;
3
+ argv;
4
+ execArgv;
5
+ NODE_OPTIONS;
6
+ cwd;
7
+ pid;
8
+ ppid;
9
+ uuid;
10
+ files = [];
11
+ parent = null;
12
+ root = null;
13
+ children = null;
14
+ externalID = null;
15
+ #data;
16
+ constructor(data) {
17
+ this.#data = data;
18
+ Object.assign(this, data);
19
+ }
20
+ toJSON() {
21
+ return Object.fromEntries(Object.entries(this)
22
+ .filter(([_, val]) => val !== null && val !== undefined)
23
+ .map(([key, val]) => val instanceof ProcessInfoNode
24
+ ? [key, val.uuid]
25
+ : key === 'children'
26
+ ? [key, [...val].map(c => c.uuid)]
27
+ : [key, val]));
28
+ }
29
+ link(db) {
30
+ db.uuids.set(this.uuid, this);
31
+ if (this.#data.parent) {
32
+ this.parent = db.uuids.get(this.#data.parent) || this.parent;
33
+ }
34
+ if (this.#data.root) {
35
+ this.root = db.uuids.get(this.#data.root) ?? this.root;
36
+ }
37
+ if (this.parent === null) {
38
+ this.root = this;
39
+ const pendingRoot = db.pendingRoot.get(this.uuid);
40
+ if (pendingRoot) {
41
+ for (const n of pendingRoot) {
42
+ n.root = this;
43
+ }
44
+ db.pendingRoot.delete(this.uuid);
45
+ }
46
+ db.roots.add(this);
47
+ }
48
+ else if (typeof this.root === 'string') {
49
+ const pendingRoot = db.pendingRoot.get(this.root);
50
+ if (pendingRoot) {
51
+ pendingRoot.add(this);
52
+ }
53
+ else {
54
+ db.pendingRoot.set(this.root, new Set([this]));
55
+ }
56
+ }
57
+ if (typeof this.parent === 'string') {
58
+ const pendingParent = db.pendingParent.get(this.parent);
59
+ if (pendingParent) {
60
+ pendingParent.add(this);
61
+ }
62
+ else {
63
+ db.pendingParent.set(this.parent, new Set([this]));
64
+ }
65
+ }
66
+ else if (this.parent) {
67
+ if (!this.parent.children) {
68
+ this.parent.children = new Set([this]);
69
+ }
70
+ else {
71
+ this.parent.children.add(this);
72
+ }
73
+ }
74
+ const pendingParent = db.pendingParent.get(this.uuid);
75
+ if (pendingParent) {
76
+ this.children = pendingParent;
77
+ for (const n of this.children) {
78
+ n.parent = this;
79
+ }
80
+ db.pendingParent.delete(this.uuid);
81
+ }
82
+ for (const f of this.files) {
83
+ const files = db.files.get(f);
84
+ if (!files) {
85
+ db.files.set(f, new Set([this]));
86
+ }
87
+ else {
88
+ files.add(this);
89
+ }
90
+ }
91
+ if (this.externalID) {
92
+ db.externalIDs.set(this.externalID, this);
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=process-info-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-info-node.js","sourceRoot":"","sources":["../../lib/process-info-node.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProcessInfo } from './index.js'\nimport type { ProcessInfoNodeData } from './get-process-info.js'\n\nexport class ProcessInfoNode {\n date!: string\n argv!: string[]\n execArgv!: string[]\n NODE_OPTIONS?: string\n cwd!: string\n pid!: number\n ppid!: number\n uuid!: string\n files: string[] = []\n parent?: ProcessInfoNode | null = null\n root?: ProcessInfoNode | null = null\n children?: Set<ProcessInfoNode> | null = null\n externalID: string | null = null\n\n #data: ProcessInfoNodeData\n\n constructor(data: ProcessInfoNodeData) {\n this.#data = data\n Object.assign(this, data)\n }\n\n toJSON() {\n return Object.fromEntries(\n Object.entries(this)\n .filter(([_, val]) => val !== null && val !== undefined)\n .map(([key, val]) =>\n val instanceof ProcessInfoNode\n ? [key, val.uuid]\n : key === 'children'\n ? [key, [...val].map(c => c.uuid)]\n : [key, val]\n )\n )\n }\n\n link(db: ProcessInfo) {\n db.uuids.set(this.uuid, this)\n if (this.#data.parent) {\n this.parent = db.uuids.get(this.#data.parent) || this.parent\n }\n if (this.#data.root) {\n this.root = db.uuids.get(this.#data.root) ?? this.root\n }\n\n if (this.parent === null) {\n this.root = this\n const pendingRoot = db.pendingRoot.get(this.uuid)\n if (pendingRoot) {\n for (const n of pendingRoot) {\n n.root = this\n }\n db.pendingRoot.delete(this.uuid)\n }\n db.roots.add(this)\n } else if (typeof this.root === 'string') {\n const pendingRoot = db.pendingRoot.get(this.root)\n if (pendingRoot) {\n pendingRoot.add(this)\n } else {\n db.pendingRoot.set(this.root, new Set([this]))\n }\n }\n\n if (typeof this.parent === 'string') {\n const pendingParent = db.pendingParent.get(this.parent)\n if (pendingParent) {\n pendingParent.add(this)\n } else {\n db.pendingParent.set(this.parent, new Set([this]))\n }\n } else if (this.parent) {\n if (!this.parent.children) {\n this.parent.children = new Set([this])\n } else {\n this.parent.children.add(this)\n }\n }\n\n const pendingParent = db.pendingParent.get(this.uuid)\n if (pendingParent) {\n this.children = pendingParent\n for (const n of this.children) {\n n.parent = this\n }\n db.pendingParent.delete(this.uuid)\n }\n\n for (const f of this.files as string[]) {\n const files = db.files.get(f)\n if (!files) {\n db.files.set(f, new Set<ProcessInfoNode>([this]))\n } else {\n files.add(this)\n }\n }\n\n if (this.externalID) {\n db.externalIDs.set(this.externalID, this)\n }\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const register: () => void;
2
+ //# sourceMappingURL=register-cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cjs.d.ts","sourceRoot":"","sources":["../../lib/register-cjs.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,YAWpB,CAAA"}
@@ -0,0 +1,17 @@
1
+ // commonjs style loader hook, modifying require.extensions
2
+ import { addHook } from 'pirates';
3
+ import { getExclude } from './get-exclude.js';
4
+ import { getProcessInfo } from './get-process-info.js';
5
+ const kRegisterCJS = Symbol.for('@tapjs/processinfo.registerCJS');
6
+ const g = global;
7
+ export const register = () => {
8
+ if (g[kRegisterCJS])
9
+ return;
10
+ g[kRegisterCJS] = true;
11
+ const exclude = getExclude('_TAPJS_PROCESSINFO_EXCLUDE_');
12
+ addHook((code, filename) => {
13
+ getProcessInfo().files.push(filename);
14
+ return code;
15
+ }, { exts: ['.js', '.cjs'], matcher: filename => !exclude.test(filename) });
16
+ };
17
+ //# sourceMappingURL=register-cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cjs.js","sourceRoot":"","sources":["../../lib/register-cjs.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;AACjE,MAAM,CAAC,GAAG,MAET,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,OAAM;IAC3B,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,6BAA6B,CAAC,CAAA;IACzD,OAAO,CACL,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACjB,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC,EACD,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CACxE,CAAA;AACH,CAAC,CAAA","sourcesContent":["// commonjs style loader hook, modifying require.extensions\nimport { addHook } from 'pirates'\nimport { getExclude } from './get-exclude.js'\nimport { getProcessInfo } from './get-process-info.js'\n\nconst kRegisterCJS = Symbol.for('@tapjs/processinfo.registerCJS')\nconst g = global as typeof globalThis & {\n [kRegisterCJS]?: boolean\n}\n\nexport const register = () => {\n if (g[kRegisterCJS]) return\n g[kRegisterCJS] = true\n const exclude = getExclude('_TAPJS_PROCESSINFO_EXCLUDE_')\n addHook(\n (code, filename) => {\n getProcessInfo().files.push(filename)\n return code\n },\n { exts: ['.js', '.cjs'], matcher: filename => !exclude.test(filename) }\n )\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { Session } from 'inspector';
3
+ import { ProcessInfoNodeData } from './get-process-info.js';
4
+ export declare let SESSION: Session | undefined;
5
+ export declare const register: () => void;
6
+ export declare const coverageOnProcessEnd: (cwd: string, processInfo: ProcessInfoNodeData) => void;
7
+ //# sourceMappingURL=register-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-coverage.d.ts","sourceRoot":"","sources":["../../lib/register-coverage.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,eAAO,IAAI,OAAO,EAAE,OAAO,GAAG,SAAqB,CAAA;AAenD,eAAO,MAAM,QAAQ,YAYpB,CAAA;AAUD,eAAO,MAAM,oBAAoB,QAC1B,MAAM,eACE,mBAAmB,SAyDjC,CAAA"}