@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
package/lib/json-file.cjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// read the file and json decode it, if anything fails, return {}
|
|
2
|
-
|
|
3
|
-
const { readFile } = require('fs/promises')
|
|
4
|
-
const { readFileSync } = require('fs')
|
|
5
|
-
|
|
6
|
-
const safeJSONSync = f => {
|
|
7
|
-
try {
|
|
8
|
-
return JSON.parse(readFileSync(f, 'utf8'))
|
|
9
|
-
} catch (e) {
|
|
10
|
-
return {}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const safeJSON = f =>
|
|
15
|
-
readFile(f, 'utf8')
|
|
16
|
-
.then(d => JSON.parse(d))
|
|
17
|
-
.catch(() => ({}))
|
|
18
|
-
|
|
19
|
-
module.exports = { safeJSON, safeJSONSync }
|
package/lib/node-options-env.cjs
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
const cjsLoader = require.resolve('./cjs.cjs')
|
|
2
|
-
const esmLoader = require.resolve('./esm.mjs')
|
|
3
|
-
|
|
4
|
-
// esm --loader is actually last-wins, so only counts as having
|
|
5
|
-
// it if it's the last loader in line. To get around that, we pass
|
|
6
|
-
// ALL loaders to our loader as ?a&b&c&...
|
|
7
|
-
//
|
|
8
|
-
// cjs --require stacks in order, so as long as it's there, it counts.
|
|
9
|
-
|
|
10
|
-
const hasCJSLoader = args => hasLoader(args, ['-r', '--require'], cjsLoader)
|
|
11
|
-
|
|
12
|
-
const hasESMLoader = args =>
|
|
13
|
-
hasLoader(args, ['--experimental-loader', '--loader'], esmLoader, true)
|
|
14
|
-
|
|
15
|
-
const addCJS = args =>
|
|
16
|
-
!hasCJSLoader(args) ? args.concat('--require=' + cjsLoader) : args
|
|
17
|
-
const addESM = args => squashLoaders(args)
|
|
18
|
-
|
|
19
|
-
const cjsOnly = args => (hasESMLoader(args) ? false : hasCJSLoader(args))
|
|
20
|
-
|
|
21
|
-
const { nodeOptionsToArgv } = require('./node-options-to-argv.cjs')
|
|
22
|
-
const { argvToNodeOptions } = require('./argv-to-node-options.cjs')
|
|
23
|
-
const { fileURLToPath, pathToFileURL } = require('url')
|
|
24
|
-
|
|
25
|
-
const { resolve } = require('path')
|
|
26
|
-
const resolveLoader = (path, isURI) => {
|
|
27
|
-
path = decode(path, isURI)
|
|
28
|
-
try {
|
|
29
|
-
return require.resolve(/^\.?\.[\\/]/.test(path) ? resolve(path) : path)
|
|
30
|
-
} catch (e) {
|
|
31
|
-
return path
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const decode = (path, isURI) =>
|
|
36
|
-
!isURI
|
|
37
|
-
? path
|
|
38
|
-
: /^file:/.test(path)
|
|
39
|
-
? fileURLToPath(path)
|
|
40
|
-
: decodeURIComponent(path)
|
|
41
|
-
|
|
42
|
-
const squashLoaders = args => {
|
|
43
|
-
const loaders = []
|
|
44
|
-
const re = /^--(?:experimental-)?loader(?:=(.*))?$/
|
|
45
|
-
const squashed = []
|
|
46
|
-
for (let i = 0; i < args.length; i++) {
|
|
47
|
-
const arg = args[i]
|
|
48
|
-
const parsed = arg.match(re)
|
|
49
|
-
if (!parsed) {
|
|
50
|
-
squashed.push(arg)
|
|
51
|
-
continue
|
|
52
|
-
}
|
|
53
|
-
const val = parsed[1] || args[++i]
|
|
54
|
-
if (!val) {
|
|
55
|
-
// --loader with no value anywhere, just put it back how it was
|
|
56
|
-
// and let node barf on it
|
|
57
|
-
squashed.push(arg, args[i - 1])
|
|
58
|
-
continue
|
|
59
|
-
}
|
|
60
|
-
const resolved = resolveLoader(val, true)
|
|
61
|
-
if (resolved === esmLoader) {
|
|
62
|
-
continue
|
|
63
|
-
}
|
|
64
|
-
loaders.push(encodeURIComponent(val.replace(/\\/g, '/')))
|
|
65
|
-
}
|
|
66
|
-
const q = loaders.length ? '?' : ''
|
|
67
|
-
squashed.push(`--loader=${pathToFileURL(esmLoader)}${q}${loaders.join('&')}`)
|
|
68
|
-
return squashed
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const hasLoader = (args, keys, value, isURI = false) => {
|
|
72
|
-
value = decode(value, isURI)
|
|
73
|
-
for (let i = 0; i < args.length; i++) {
|
|
74
|
-
const arg = args[i]
|
|
75
|
-
// -r <value>
|
|
76
|
-
if (
|
|
77
|
-
keys.includes(arg) &&
|
|
78
|
-
i < args.length - 1 &&
|
|
79
|
-
resolveLoader(args[i + 1], isURI) === value
|
|
80
|
-
) {
|
|
81
|
-
return true
|
|
82
|
-
} else if (arg.startsWith('--') && arg.includes('=')) {
|
|
83
|
-
// --require=<value>
|
|
84
|
-
const [k, ...rest] = arg.split('=')
|
|
85
|
-
if (keys.includes(k) && resolveLoader(rest.join('='), isURI) === value) {
|
|
86
|
-
return true
|
|
87
|
-
} else {
|
|
88
|
-
continue
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return false
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const nodeOptionsEnv = (env, args) => {
|
|
96
|
-
const no = nodeOptionsToArgv(env.NODE_OPTIONS)
|
|
97
|
-
return argvToNodeOptions(cjsOnly(args.concat(no)) ? addCJS(no) : addESM(no))
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
module.exports = { nodeOptionsEnv }
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
exports.nodeOptionsToArgv = no => {
|
|
2
|
-
if (!no) return []
|
|
3
|
-
const argv = []
|
|
4
|
-
let escaping = false
|
|
5
|
-
let inquote = false
|
|
6
|
-
let tokStart = 0
|
|
7
|
-
let tok = ''
|
|
8
|
-
for (let i = 0; i < no.length; i++) {
|
|
9
|
-
const c = no.charAt(i)
|
|
10
|
-
switch (c) {
|
|
11
|
-
case '"':
|
|
12
|
-
if (escaping) {
|
|
13
|
-
tok += no.slice(tokStart, i - 1) + '"'
|
|
14
|
-
tokStart = i + 1
|
|
15
|
-
escaping = false
|
|
16
|
-
} else if (inquote) {
|
|
17
|
-
tok += no.slice(tokStart, i)
|
|
18
|
-
tokStart = i + 1
|
|
19
|
-
inquote = false
|
|
20
|
-
} else {
|
|
21
|
-
inquote = true
|
|
22
|
-
tok += no.slice(tokStart, i)
|
|
23
|
-
tokStart = i + 1
|
|
24
|
-
}
|
|
25
|
-
continue
|
|
26
|
-
|
|
27
|
-
case '\\':
|
|
28
|
-
if (inquote) {
|
|
29
|
-
escaping = true
|
|
30
|
-
}
|
|
31
|
-
continue
|
|
32
|
-
|
|
33
|
-
case ' ':
|
|
34
|
-
if (inquote) continue
|
|
35
|
-
tok += no.slice(tokStart, i)
|
|
36
|
-
tokStart = i + 1
|
|
37
|
-
argv.push(tok)
|
|
38
|
-
tok = ''
|
|
39
|
-
continue
|
|
40
|
-
|
|
41
|
-
default:
|
|
42
|
-
escaping = false
|
|
43
|
-
continue
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (inquote) {
|
|
47
|
-
return []
|
|
48
|
-
}
|
|
49
|
-
tok += no.slice(tokStart)
|
|
50
|
-
argv.push(tok)
|
|
51
|
-
return argv
|
|
52
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
class ProcessInfoNode {
|
|
2
|
-
constructor(data) {
|
|
3
|
-
this.parent = null
|
|
4
|
-
this.children = null
|
|
5
|
-
this.files = null
|
|
6
|
-
this.externalID = null
|
|
7
|
-
Object.assign(this, data)
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
toJSON() {
|
|
11
|
-
return Object.fromEntries(
|
|
12
|
-
Object.entries(this)
|
|
13
|
-
.filter(([_, val]) => val !== null && val !== undefined)
|
|
14
|
-
.map(([key, val]) =>
|
|
15
|
-
key === 'root'
|
|
16
|
-
? [key, val.uuid]
|
|
17
|
-
: key === 'parent'
|
|
18
|
-
? [key, val.uuid]
|
|
19
|
-
: key === 'children'
|
|
20
|
-
? [key, [...val].map(c => c.uuid)]
|
|
21
|
-
: [key, val]
|
|
22
|
-
)
|
|
23
|
-
)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
link(db) {
|
|
27
|
-
db.uuids.set(this.uuid, this)
|
|
28
|
-
this.parent = db.uuids.get(this.parent) || this.parent || null
|
|
29
|
-
this.root = db.uuids.get(this.root) || this.root
|
|
30
|
-
|
|
31
|
-
if (this.parent === null) {
|
|
32
|
-
this.root = this
|
|
33
|
-
if (db.pendingRoot.has(this.uuid)) {
|
|
34
|
-
for (const n of db.pendingRoot.get(this.uuid)) {
|
|
35
|
-
n.root = this
|
|
36
|
-
}
|
|
37
|
-
db.pendingRoot.delete(this.uuid)
|
|
38
|
-
}
|
|
39
|
-
db.roots.add(this)
|
|
40
|
-
} else if (typeof this.root === 'string') {
|
|
41
|
-
if (db.pendingRoot.has(this.root)) {
|
|
42
|
-
db.pendingRoot.get(this.root).add(this)
|
|
43
|
-
} else {
|
|
44
|
-
db.pendingRoot.set(this.root, new Set([this]))
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (typeof this.parent === 'string') {
|
|
49
|
-
if (db.pendingParent.has(this.parent)) {
|
|
50
|
-
db.pendingParent.get(this.parent).add(this)
|
|
51
|
-
} else {
|
|
52
|
-
db.pendingParent.set(this.parent, new Set([this]))
|
|
53
|
-
}
|
|
54
|
-
} else if (this.parent !== null) {
|
|
55
|
-
if (!this.parent.children) {
|
|
56
|
-
this.parent.children = new Set([this])
|
|
57
|
-
} else {
|
|
58
|
-
this.parent.children.add(this)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (db.pendingParent.has(this.uuid)) {
|
|
63
|
-
this.children = db.pendingParent.get(this.uuid)
|
|
64
|
-
for (const n of this.children) {
|
|
65
|
-
n.parent = this
|
|
66
|
-
}
|
|
67
|
-
db.pendingParent.delete(this.uuid)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
for (const f of this.files) {
|
|
71
|
-
if (!db.files.has(f)) {
|
|
72
|
-
db.files.set(f, new Set([this]))
|
|
73
|
-
} else {
|
|
74
|
-
db.files.get(f).add(this)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (this.externalID) {
|
|
79
|
-
db.externalIDs.set(this.externalID, this)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
module.exports = { ProcessInfoNode }
|
|
@@ -1,74 +0,0 @@
|
|
|
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
|
-
if (enabled) {
|
|
5
|
-
process.env._TAPJS_PROCESSINFO_COVERAGE_ = '1'
|
|
6
|
-
process.setSourceMapsEnabled(true)
|
|
7
|
-
|
|
8
|
-
// NB: coverage exclusion is in addition to processinfo
|
|
9
|
-
// exclusion. Only show coverage for a file we care
|
|
10
|
-
// about at least somewhat, but coverage is a subset.
|
|
11
|
-
const { getExclude } = require('./get-exclude.cjs')
|
|
12
|
-
const exclude = getExclude('_TAPJS_PROCESSINFO_COV_EXCLUDE_')
|
|
13
|
-
const inspector = require('inspector')
|
|
14
|
-
const session = new inspector.Session()
|
|
15
|
-
module.exports.session = session
|
|
16
|
-
session.connect()
|
|
17
|
-
session.post('Profiler.enable')
|
|
18
|
-
session.post('Runtime.enable')
|
|
19
|
-
session.post('Profiler.startPreciseCoverage', {
|
|
20
|
-
callCount: true,
|
|
21
|
-
detailed: true,
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
const { fileURLToPath } = require('url')
|
|
25
|
-
const { findSourceMap } = require('module')
|
|
26
|
-
|
|
27
|
-
const lineLengths = f =>
|
|
28
|
-
readFileSync(f, 'utf8')
|
|
29
|
-
.split(/\n|\u2028|\u2029/)
|
|
30
|
-
.map(l => l.length)
|
|
31
|
-
|
|
32
|
-
const { mkdirSync, writeFileSync, readFileSync } = require('fs')
|
|
33
|
-
|
|
34
|
-
const coverageOnProcessEnd = (cwd, processInfo) => {
|
|
35
|
-
const f = `${cwd}/.tap/coverage/${processInfo.uuid}.json`
|
|
36
|
-
mkdirSync(`${cwd}/.tap/coverage`, { recursive: true })
|
|
37
|
-
|
|
38
|
-
session.post('Profiler.takePreciseCoverage', (er, cov) => {
|
|
39
|
-
session.post('Profiler.stopPreciseCoverage')
|
|
40
|
-
|
|
41
|
-
/* istanbul ignore next - something very strange and bad happened */
|
|
42
|
-
if (er) {
|
|
43
|
-
throw er
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const sourceMapCache = (cov['source-map-cache'] = {})
|
|
47
|
-
cov.result = cov.result.filter(obj => {
|
|
48
|
-
if (!/^file:/.test(obj.url)) {
|
|
49
|
-
return false
|
|
50
|
-
}
|
|
51
|
-
const f = fileURLToPath(obj.url)
|
|
52
|
-
if (!processInfo.files.includes(f) || exclude.test(f)) {
|
|
53
|
-
return false
|
|
54
|
-
}
|
|
55
|
-
// see if it has a source map
|
|
56
|
-
const s = findSourceMap(f)
|
|
57
|
-
if (s) {
|
|
58
|
-
const { payload } = s
|
|
59
|
-
sourceMapCache[obj.url] = Object.assign(Object.create(null), {
|
|
60
|
-
lineLengths: lineLengths(f),
|
|
61
|
-
data: payload,
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
return true
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
writeFileSync(f, JSON.stringify(cov, 0, 2) + '\n', 'utf8')
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
module.exports = { coverageOnProcessEnd }
|
|
72
|
-
} else {
|
|
73
|
-
module.exports = { coverageOnProcessEnd: () => {} }
|
|
74
|
-
}
|
package/lib/register-env.cjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const processOnSpawn = require('process-on-spawn')
|
|
2
|
-
const hasOwn = (o, k) => Object.prototype.hasOwnProperty.call(o, k)
|
|
3
|
-
|
|
4
|
-
processOnSpawn.addListener(obj => {
|
|
5
|
-
const env = obj.env || {}
|
|
6
|
-
obj.env = Object.assign(env, getEnvs(env))
|
|
7
|
-
return obj
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
const envRE = /^_TAPJS_PROCESSINFO_/
|
|
11
|
-
|
|
12
|
-
const getEnvs = env => {
|
|
13
|
-
// load it here so that it isn't cached before the loader attaches
|
|
14
|
-
// in self-test scenario.
|
|
15
|
-
const { nodeOptionsEnv } = require('./node-options-env.cjs')
|
|
16
|
-
return Object.fromEntries(
|
|
17
|
-
Object.entries(process.env)
|
|
18
|
-
.filter(([k, v]) => !hasOwn(env, k) && envRE.test(k))
|
|
19
|
-
.concat([['NODE_OPTIONS', nodeOptionsEnv(env, process.execArgv)]])
|
|
20
|
-
)
|
|
21
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
const { onExit } = require('signal-exit')
|
|
2
|
-
const { getProcessInfo } = require('./get-process-info.cjs')
|
|
3
|
-
|
|
4
|
-
const { mkdirSync, writeFileSync } = require('fs')
|
|
5
|
-
const cwd = process.cwd()
|
|
6
|
-
const globals = new Set(Object.keys(global))
|
|
7
|
-
const { coverageOnProcessEnd } = require('./register-coverage.cjs')
|
|
8
|
-
|
|
9
|
-
onExit(
|
|
10
|
-
(code, signal) => {
|
|
11
|
-
const processInfo = getProcessInfo()
|
|
12
|
-
processInfo.code = code
|
|
13
|
-
processInfo.signal = signal
|
|
14
|
-
const runtime = process.hrtime(processInfo.hrstart)
|
|
15
|
-
delete processInfo.hrstart
|
|
16
|
-
processInfo.files = [...new Set(processInfo.files)]
|
|
17
|
-
processInfo.runtime = runtime[0] * 1e3 + runtime[1] / 1e6
|
|
18
|
-
const globalsAdded = Object.keys(global).filter(k => !globals.has(k))
|
|
19
|
-
if (globalsAdded.length) {
|
|
20
|
-
processInfo.globalsAdded = globalsAdded
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const f = `${cwd}/.tap/processinfo/${processInfo.uuid}.json`
|
|
24
|
-
mkdirSync(`${cwd}/.tap/processinfo`, { recursive: true })
|
|
25
|
-
writeFileSync(f, JSON.stringify(processInfo) + '\n', 'utf8')
|
|
26
|
-
coverageOnProcessEnd(cwd, processInfo)
|
|
27
|
-
},
|
|
28
|
-
{ alwaysLast: true }
|
|
29
|
-
)
|
package/lib/spawn-opts.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
const { nodeOptionsEnv } = require('./node-options-env.cjs')
|
|
2
|
-
|
|
3
|
-
const spawnOpts = (options = {}, exclude) => {
|
|
4
|
-
const { externalID } = options
|
|
5
|
-
const env = { ...(options.env || process.env) }
|
|
6
|
-
env.NODE_OPTIONS = nodeOptionsEnv(env, [])
|
|
7
|
-
if (externalID) {
|
|
8
|
-
env._TAPJS_PROCESSINFO_EXTERNAL_ID_ = externalID
|
|
9
|
-
}
|
|
10
|
-
if (exclude) {
|
|
11
|
-
env._TAPJS_PROCESSINFO_EXCLUDE_ = String(exclude)
|
|
12
|
-
}
|
|
13
|
-
return { ...options, env }
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
module.exports = { spawnOpts }
|