supertape 9.5.0 → 10.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.
- package/ChangeLog +8 -0
- package/README.md +1 -0
- package/bin/communication.mjs +45 -0
- package/bin/formatter.mjs +63 -0
- package/bin/is-stop.mjs +17 -0
- package/bin/subscribe.mjs +28 -0
- package/bin/supertape.mjs +29 -4
- package/bin/trace.mjs +3 -0
- package/bin/tracer.mjs +37 -0
- package/help.json +2 -1
- package/lib/cli/parse-args.js +56 -0
- package/lib/cli.js +11 -54
- package/lib/formatter/communication.js +37 -0
- package/lib/formatter/harness.js +2 -1
- package/lib/run-tests.js +0 -1
- package/lib/supertape.js +4 -3
- package/package.json +5 -5
package/ChangeLog
CHANGED
package/README.md
CHANGED
|
@@ -56,6 +56,7 @@ Options
|
|
|
56
56
|
--no-check-scopes do not check that messages contains scope: 'scope: message'
|
|
57
57
|
--no-check-assertions-count do not check that assertion count is no more then 1
|
|
58
58
|
--no-check-duplicates do not check messages for duplicates
|
|
59
|
+
--no-worker disable worker thread
|
|
59
60
|
```
|
|
60
61
|
|
|
61
62
|
## Environment variables
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parentPort,
|
|
3
|
+
workerData,
|
|
4
|
+
} from 'node:worker_threads';
|
|
5
|
+
import {EventEmitter} from 'node:events';
|
|
6
|
+
|
|
7
|
+
const {assign} = Object;
|
|
8
|
+
|
|
9
|
+
export const createCommunication = (argv) => {
|
|
10
|
+
if (parentPort)
|
|
11
|
+
return {
|
|
12
|
+
parentPort,
|
|
13
|
+
workerData,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const {newWorker, newParentPort} = fakeWorkers();
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
worker: newWorker,
|
|
20
|
+
parentPort: newParentPort,
|
|
21
|
+
workerData: argv,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export function fakeWorkers() {
|
|
26
|
+
const newWorker = new EventEmitter();
|
|
27
|
+
const newParentPort = new EventEmitter();
|
|
28
|
+
|
|
29
|
+
assign(newWorker, {
|
|
30
|
+
postMessage: (a) => {
|
|
31
|
+
newParentPort.emit('message', a);
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
assign(newParentPort, {
|
|
36
|
+
postMessage: (a) => {
|
|
37
|
+
newWorker.emit('message', a);
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
newParentPort,
|
|
43
|
+
newWorker,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import {EventEmitter} from 'node:events';
|
|
2
|
+
|
|
3
|
+
export const createFormatter = (parentPort) => {
|
|
4
|
+
const formatter = new EventEmitter();
|
|
5
|
+
|
|
6
|
+
formatter.on('start', ({total}) => {
|
|
7
|
+
parentPort.postMessage(['start', {
|
|
8
|
+
total,
|
|
9
|
+
}]);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
formatter.on('test', ({test}) => {
|
|
13
|
+
parentPort.postMessage(['test', {
|
|
14
|
+
test,
|
|
15
|
+
}]);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
formatter.on('test:end', ({count, total, failed, test}) => {
|
|
19
|
+
parentPort.postMessage(['test:end', {
|
|
20
|
+
total,
|
|
21
|
+
count,
|
|
22
|
+
failed,
|
|
23
|
+
test,
|
|
24
|
+
}]);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
formatter.on('comment', (message) => {
|
|
28
|
+
parentPort.postMessage(['test:end', {
|
|
29
|
+
message,
|
|
30
|
+
}]);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
formatter.on('test:success', ({count, message}) => {
|
|
34
|
+
parentPort.postMessage(['test:success', {
|
|
35
|
+
count,
|
|
36
|
+
message,
|
|
37
|
+
}]);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
formatter.on('test:fail', ({at, count, message, operator, result, expected, output, errorStack}) => {
|
|
41
|
+
parentPort.postMessage(['fail', {
|
|
42
|
+
at,
|
|
43
|
+
count,
|
|
44
|
+
message,
|
|
45
|
+
operator,
|
|
46
|
+
result: JSON.stringify(result),
|
|
47
|
+
expected: JSON.stringify(expected),
|
|
48
|
+
output,
|
|
49
|
+
errorStack,
|
|
50
|
+
}]);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
formatter.on('end', ({count, passed, failed, skiped}) => {
|
|
54
|
+
parentPort.postMessage(['end', {
|
|
55
|
+
count,
|
|
56
|
+
passed,
|
|
57
|
+
failed,
|
|
58
|
+
skiped,
|
|
59
|
+
}]);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
return formatter;
|
|
63
|
+
};
|
package/bin/is-stop.mjs
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import fullstore from 'fullstore';
|
|
2
|
+
|
|
3
|
+
const noop = () => {};
|
|
4
|
+
|
|
5
|
+
export const createIsStop = (parentPort) => {
|
|
6
|
+
if (!parentPort)
|
|
7
|
+
return noop;
|
|
8
|
+
|
|
9
|
+
const isStop = fullstore(false);
|
|
10
|
+
|
|
11
|
+
parentPort?.on('message', ([event]) => {
|
|
12
|
+
if (event === 'stop')
|
|
13
|
+
isStop(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
return isStop;
|
|
17
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import keyPress from '@putout/cli-keypress';
|
|
2
|
+
import harnessCreator from '../lib/formatter/harness.js';
|
|
3
|
+
|
|
4
|
+
const {createHarness} = harnessCreator;
|
|
5
|
+
|
|
6
|
+
const resolveFormatter = async (name) => await import(`@supertape/formatter-${name}`);
|
|
7
|
+
|
|
8
|
+
export async function subscribe({name, quiet, exit, worker, stdout}) {
|
|
9
|
+
const {isStop} = keyPress();
|
|
10
|
+
const harness = createHarness(await resolveFormatter(name));
|
|
11
|
+
|
|
12
|
+
if (!quiet)
|
|
13
|
+
harness.pipe(stdout);
|
|
14
|
+
|
|
15
|
+
worker.on('exit', (code) => {
|
|
16
|
+
exit(code);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
worker.on('message', ([type, a]) => {
|
|
20
|
+
harness.write({
|
|
21
|
+
type,
|
|
22
|
+
...a,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
if (isStop())
|
|
26
|
+
worker.postMessage(['stop']);
|
|
27
|
+
});
|
|
28
|
+
}
|
package/bin/supertape.mjs
CHANGED
|
@@ -1,18 +1,43 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
1
|
import process from 'node:process';
|
|
2
|
+
import {createCommunication} from './communication.mjs';
|
|
3
|
+
import {subscribe} from './subscribe.mjs';
|
|
4
|
+
import {createIsStop} from './is-stop.mjs';
|
|
5
|
+
import {createFormatter} from './formatter.mjs';
|
|
6
|
+
import {parseArgs} from '../lib/cli/parse-args.js';
|
|
4
7
|
import cli from '../lib/cli.js';
|
|
5
8
|
|
|
9
|
+
const {
|
|
10
|
+
worker,
|
|
11
|
+
parentPort,
|
|
12
|
+
workerData,
|
|
13
|
+
} = createCommunication(process.argv);
|
|
14
|
+
|
|
15
|
+
const args = parseArgs(process.argv.slice(2));
|
|
16
|
+
|
|
6
17
|
const {
|
|
7
18
|
stdout,
|
|
8
19
|
stderr,
|
|
9
20
|
exit,
|
|
10
21
|
} = process;
|
|
11
22
|
|
|
12
|
-
|
|
23
|
+
const workerFormatter = createFormatter(parentPort);
|
|
24
|
+
const isStop = createIsStop(parentPort);
|
|
25
|
+
|
|
26
|
+
if (worker)
|
|
27
|
+
subscribe({
|
|
28
|
+
name: args.format,
|
|
29
|
+
quiet: args.quiet,
|
|
30
|
+
exit,
|
|
31
|
+
worker,
|
|
32
|
+
stdout,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export default await cli({
|
|
13
36
|
stdout,
|
|
14
37
|
stderr,
|
|
15
38
|
exit,
|
|
16
39
|
cwd: process.cwd(),
|
|
17
|
-
argv:
|
|
40
|
+
argv: workerData.slice(2),
|
|
41
|
+
workerFormatter,
|
|
42
|
+
isStop,
|
|
18
43
|
});
|
package/bin/trace.mjs
ADDED
package/bin/tracer.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import {Worker} from 'node:worker_threads';
|
|
5
|
+
import {parseArgs} from '../lib/cli/parse-args.js';
|
|
6
|
+
import {subscribe} from './subscribe.mjs';
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
cwd,
|
|
10
|
+
exit,
|
|
11
|
+
stdout,
|
|
12
|
+
} = process;
|
|
13
|
+
|
|
14
|
+
const args = parseArgs(process.argv.slice(2));
|
|
15
|
+
const write = stdout.write.bind(stdout);
|
|
16
|
+
|
|
17
|
+
if (!args.worker) {
|
|
18
|
+
await import('./supertape.mjs');
|
|
19
|
+
exit();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const slave = new URL('./supertape.mjs', import.meta.url);
|
|
23
|
+
|
|
24
|
+
const worker = new Worker(slave, {
|
|
25
|
+
workerData: process.argv,
|
|
26
|
+
stdin: true,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
await subscribe({
|
|
30
|
+
name: args.format,
|
|
31
|
+
args,
|
|
32
|
+
worker,
|
|
33
|
+
exit,
|
|
34
|
+
cwd,
|
|
35
|
+
write,
|
|
36
|
+
stdout,
|
|
37
|
+
});
|
package/help.json
CHANGED
|
@@ -5,5 +5,6 @@
|
|
|
5
5
|
"-r, --require ": "require module",
|
|
6
6
|
"--no-check-scopes ": "do not check that messages contains scope: 'scope: message'",
|
|
7
7
|
"--no-check-assertions-count": "do not check that assertion count is no more then 1",
|
|
8
|
-
"--no-check-duplicates ": "do not check messages for duplicates"
|
|
8
|
+
"--no-check-duplicates ": "do not check messages for duplicates",
|
|
9
|
+
"--no-worker ": "disable worker thread"
|
|
9
10
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const process = require('node:process');
|
|
4
|
+
const yargsParser = require('yargs-parser');
|
|
5
|
+
const {isArray} = Array;
|
|
6
|
+
const maybeFirst = (a) => isArray(a) ? a.pop() : a;
|
|
7
|
+
const maybeArray = (a) => isArray(a) ? a : [a];
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
SUPERTAPE_CHECK_DUPLICATES = '1',
|
|
11
|
+
SUPERTAPE_CHECK_SCOPES = '1',
|
|
12
|
+
SUPERTAPE_CHECK_ASSERTIONS_COUNT = '1',
|
|
13
|
+
} = process.env;
|
|
14
|
+
|
|
15
|
+
const yargsOptions = {
|
|
16
|
+
configuration: {
|
|
17
|
+
'strip-aliased': true,
|
|
18
|
+
'strip-dashed': true,
|
|
19
|
+
},
|
|
20
|
+
coerce: {
|
|
21
|
+
require: maybeArray,
|
|
22
|
+
format: maybeFirst,
|
|
23
|
+
},
|
|
24
|
+
string: [
|
|
25
|
+
'format',
|
|
26
|
+
'require',
|
|
27
|
+
],
|
|
28
|
+
boolean: [
|
|
29
|
+
'version',
|
|
30
|
+
'help',
|
|
31
|
+
'check-duplicates',
|
|
32
|
+
'check-scopes',
|
|
33
|
+
'check-assertions-count',
|
|
34
|
+
'worker',
|
|
35
|
+
],
|
|
36
|
+
alias: {
|
|
37
|
+
version: 'v',
|
|
38
|
+
format: 'f',
|
|
39
|
+
help: 'h',
|
|
40
|
+
require: 'r',
|
|
41
|
+
checkDuplicates: 'd',
|
|
42
|
+
checkScopes: 's',
|
|
43
|
+
checkAssertionsCount: 'a',
|
|
44
|
+
},
|
|
45
|
+
default: {
|
|
46
|
+
format: 'progress-bar',
|
|
47
|
+
require: [],
|
|
48
|
+
checkDuplicates: SUPERTAPE_CHECK_DUPLICATES !== '0',
|
|
49
|
+
checkScopes: SUPERTAPE_CHECK_SCOPES !== '0',
|
|
50
|
+
checkAssertionsCount: SUPERTAPE_CHECK_ASSERTIONS_COUNT !== '0',
|
|
51
|
+
worker: true,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
module.exports.yargsOptions = yargsOptions;
|
|
56
|
+
module.exports.parseArgs = (argv) => yargsParser(argv, yargsOptions);
|
package/lib/cli.js
CHANGED
|
@@ -5,12 +5,13 @@ const {resolve: resolvePath} = require('path');
|
|
|
5
5
|
const {once} = require('events');
|
|
6
6
|
const {pathToFileURL} = require('url');
|
|
7
7
|
|
|
8
|
-
const yargsParser = require('yargs-parser');
|
|
9
8
|
const glob = require('glob');
|
|
10
9
|
const fullstore = require('fullstore');
|
|
11
10
|
const tryToCatch = require('try-to-catch');
|
|
12
11
|
const keypress = require('@putout/cli-keypress');
|
|
12
|
+
|
|
13
13
|
const {simpleImport} = require('./simple-import');
|
|
14
|
+
const {parseArgs, yargsOptions} = require('./cli/parse-args');
|
|
14
15
|
|
|
15
16
|
const supertape = require('..');
|
|
16
17
|
const {
|
|
@@ -22,30 +23,23 @@ const {
|
|
|
22
23
|
SKIPED,
|
|
23
24
|
} = require('./exit-codes');
|
|
24
25
|
|
|
25
|
-
const {isArray} = Array;
|
|
26
|
-
|
|
27
|
-
const maybeFirst = (a) => isArray(a) ? a.pop() : a;
|
|
28
|
-
const maybeArray = (a) => isArray(a) ? a : [a];
|
|
29
26
|
const isExclude = (a) => !a.includes('node_modules');
|
|
30
|
-
|
|
31
27
|
const removeDuplicates = (a) => Array.from(new Set(a));
|
|
28
|
+
|
|
32
29
|
const filesCount = fullstore(0);
|
|
33
30
|
|
|
34
|
-
const {
|
|
35
|
-
SUPERTAPE_CHECK_DUPLICATES = '1',
|
|
36
|
-
SUPERTAPE_CHECK_SCOPES = '1',
|
|
37
|
-
SUPERTAPE_CHECK_ASSERTIONS_COUNT = '1',
|
|
38
|
-
SUPERTAPE_CHECK_SKIPED = '0',
|
|
39
|
-
} = process.env;
|
|
31
|
+
const {SUPERTAPE_CHECK_SKIPED = '0'} = process.env;
|
|
40
32
|
|
|
41
|
-
module.exports = async ({argv, cwd, stdout, stderr, exit}) => {
|
|
42
|
-
|
|
33
|
+
module.exports = async ({argv, cwd, stdout, stderr, exit, isStop, workerFormatter}) => {
|
|
34
|
+
isStop = isStop || keypress().isStop;
|
|
35
|
+
|
|
43
36
|
const [error, result] = await tryToCatch(cli, {
|
|
44
37
|
argv,
|
|
45
38
|
cwd,
|
|
46
39
|
stdout,
|
|
47
40
|
exit,
|
|
48
41
|
isStop,
|
|
42
|
+
workerFormatter,
|
|
49
43
|
});
|
|
50
44
|
|
|
51
45
|
if (error) {
|
|
@@ -77,46 +71,8 @@ module.exports = async ({argv, cwd, stdout, stderr, exit}) => {
|
|
|
77
71
|
return exit(OK);
|
|
78
72
|
};
|
|
79
73
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
'strip-aliased': true,
|
|
83
|
-
'strip-dashed': true,
|
|
84
|
-
},
|
|
85
|
-
coerce: {
|
|
86
|
-
require: maybeArray,
|
|
87
|
-
format: maybeFirst,
|
|
88
|
-
},
|
|
89
|
-
string: [
|
|
90
|
-
'format',
|
|
91
|
-
'require',
|
|
92
|
-
],
|
|
93
|
-
boolean: [
|
|
94
|
-
'version',
|
|
95
|
-
'help',
|
|
96
|
-
'check-duplicates',
|
|
97
|
-
'check-scopes',
|
|
98
|
-
'check-assertions-count',
|
|
99
|
-
],
|
|
100
|
-
alias: {
|
|
101
|
-
version: 'v',
|
|
102
|
-
format: 'f',
|
|
103
|
-
help: 'h',
|
|
104
|
-
require: 'r',
|
|
105
|
-
checkDuplicates: 'd',
|
|
106
|
-
checkScopes: 's',
|
|
107
|
-
checkAssertionsCount: 'a',
|
|
108
|
-
},
|
|
109
|
-
default: {
|
|
110
|
-
format: 'progress-bar',
|
|
111
|
-
require: [],
|
|
112
|
-
checkDuplicates: SUPERTAPE_CHECK_DUPLICATES !== '0',
|
|
113
|
-
checkScopes: SUPERTAPE_CHECK_SCOPES !== '0',
|
|
114
|
-
checkAssertionsCount: SUPERTAPE_CHECK_ASSERTIONS_COUNT !== '0',
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
async function cli({argv, cwd, stdout, isStop}) {
|
|
119
|
-
const args = yargsParser(argv, yargsOptions);
|
|
74
|
+
async function cli({argv, cwd, stdout, isStop, workerFormatter}) {
|
|
75
|
+
const args = parseArgs(argv);
|
|
120
76
|
|
|
121
77
|
if (args.version) {
|
|
122
78
|
stdout.write(`v${require('../package').version}\n`);
|
|
@@ -171,6 +127,7 @@ async function cli({argv, cwd, stdout, isStop}) {
|
|
|
171
127
|
checkDuplicates,
|
|
172
128
|
checkScopes,
|
|
173
129
|
checkAssertionsCount,
|
|
130
|
+
workerFormatter,
|
|
174
131
|
});
|
|
175
132
|
|
|
176
133
|
const stream = await supertape.createStream();
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const {parentPort, workerData} = require('node:worker_threads');
|
|
4
|
+
|
|
5
|
+
const {EventEmitter} = require('node:events');
|
|
6
|
+
const process = require('node:process');
|
|
7
|
+
|
|
8
|
+
const {assign} = Object;
|
|
9
|
+
|
|
10
|
+
module.exports.createCommunication = () => {
|
|
11
|
+
if (parentPort)
|
|
12
|
+
return {
|
|
13
|
+
parentPort,
|
|
14
|
+
workerData,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const newWorker = new EventEmitter();
|
|
18
|
+
const newParentPort = new EventEmitter();
|
|
19
|
+
|
|
20
|
+
assign(newWorker, {
|
|
21
|
+
postMessage: (a) => {
|
|
22
|
+
newParentPort.emit('message', a);
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
assign(newParentPort, {
|
|
27
|
+
postMessage: (a) => {
|
|
28
|
+
newWorker.emit('message', a);
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
worker: newWorker,
|
|
34
|
+
parentPort: newParentPort,
|
|
35
|
+
workerData: process.argv,
|
|
36
|
+
};
|
|
37
|
+
};
|
package/lib/formatter/harness.js
CHANGED
package/lib/run-tests.js
CHANGED
package/lib/supertape.js
CHANGED
|
@@ -45,7 +45,7 @@ const defaultOptions = {
|
|
|
45
45
|
checkScopes: true,
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
function _createEmitter({quiet, stream = stdout, format, getOperators, isStop, readyFormatter}) {
|
|
48
|
+
function _createEmitter({quiet, stream = stdout, format, getOperators, isStop, readyFormatter, workerFormatter}) {
|
|
49
49
|
const tests = [];
|
|
50
50
|
const emitter = new EventEmitter();
|
|
51
51
|
|
|
@@ -77,7 +77,7 @@ function _createEmitter({quiet, stream = stdout, format, getOperators, isStop, r
|
|
|
77
77
|
const operators = await getOperators();
|
|
78
78
|
|
|
79
79
|
const result = await runTests(tests, {
|
|
80
|
-
formatter,
|
|
80
|
+
formatter: workerFormatter || formatter,
|
|
81
81
|
operators,
|
|
82
82
|
isStop,
|
|
83
83
|
});
|
|
@@ -152,6 +152,7 @@ function test(message, fn, options = {}) {
|
|
|
152
152
|
checkScopes,
|
|
153
153
|
checkAssertionsCount,
|
|
154
154
|
checkIfEnded,
|
|
155
|
+
workerFormatter,
|
|
155
156
|
} = {
|
|
156
157
|
...defaultOptions,
|
|
157
158
|
...initedOptions,
|
|
@@ -168,12 +169,12 @@ function test(message, fn, options = {}) {
|
|
|
168
169
|
setValidations(validations);
|
|
169
170
|
|
|
170
171
|
const at = getAt();
|
|
171
|
-
|
|
172
172
|
const emitter = options.emitter || createEmitter({
|
|
173
173
|
format,
|
|
174
174
|
quiet,
|
|
175
175
|
getOperators,
|
|
176
176
|
isStop,
|
|
177
|
+
workerFormatter,
|
|
177
178
|
});
|
|
178
179
|
|
|
179
180
|
mainEmitter = emitter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "supertape",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
|
|
5
5
|
"description": "📼 Supertape simplest high speed test runner with superpowers",
|
|
6
6
|
"homepage": "http://github.com/coderaiser/supertape",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"type": "commonjs",
|
|
21
21
|
"bin": {
|
|
22
|
-
"tape": "bin/
|
|
23
|
-
"supertape": "bin/
|
|
22
|
+
"tape": "bin/tracer.mjs",
|
|
23
|
+
"supertape": "bin/tracer.mjs"
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"testing"
|
|
75
75
|
],
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@babel/core": "^
|
|
77
|
+
"@babel/core": "^8.0.0-alpha.5",
|
|
78
78
|
"@iocmd/wait": "^2.1.0",
|
|
79
79
|
"c8": "^9.0.0",
|
|
80
80
|
"check-dts": "^0.7.0",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"montag": "^1.0.0",
|
|
89
89
|
"nodemon": "^3.0.1",
|
|
90
90
|
"pullout": "^4.0.0",
|
|
91
|
-
"putout": "^
|
|
91
|
+
"putout": "^35.0.0",
|
|
92
92
|
"runsome": "^1.0.0",
|
|
93
93
|
"try-catch": "^3.0.0",
|
|
94
94
|
"typescript": "^5.1.6"
|