@putout/test 3.7.2 → 4.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/README.md +143 -40
- package/lib/processor/index.js +5 -7
- package/lib/test.js +33 -39
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
# @putout/test [![NPM version][NPMIMGURL]][NPMURL]
|
|
1
|
+
# @putout/test [![NPM version][NPMIMGURL]][NPMURL]
|
|
2
2
|
|
|
3
|
-
[NPMIMGURL]:
|
|
4
|
-
[NPMURL]:
|
|
3
|
+
[NPMIMGURL]: https://img.shields.io/npm/v/@putout/test.svg?style=flat&longCache=true
|
|
4
|
+
[NPMURL]: https://npmjs.org/package/@putout/test "npm"
|
|
5
5
|
|
|
6
|
-
[
|
|
7
|
-
[DependencyStatusIMGURL]: https://david-dm.org/coderaiser/putout.svg?path=packages/test-runner
|
|
8
|
-
|
|
9
|
-
Test runner for `putout plugins`. Basically it is [supercharged](https://github.com/coderaiser/supertape) `tape` with aditional asseritions:
|
|
6
|
+
Test runner for [🐊`Putout`](https://github.com/coderaiser/putout#plugins-api). Basically it is [supercharged `tape`](https://github.com/coderaiser/supertape) with aditional asseritions:
|
|
10
7
|
|
|
11
8
|
## Install
|
|
12
9
|
|
|
@@ -14,19 +11,40 @@ Test runner for `putout plugins`. Basically it is [supercharged](https://github.
|
|
|
14
11
|
npm i @putout/test -D
|
|
15
12
|
```
|
|
16
13
|
|
|
14
|
+
## Autofix
|
|
15
|
+
|
|
16
|
+
Set environment variable `UPDATE=1` to update `transform` and `format` fixtures.
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
UPDATE=1 tape test/*.js
|
|
20
|
+
```
|
|
21
|
+
|
|
17
22
|
## Plugins API
|
|
18
23
|
|
|
19
|
-
###
|
|
24
|
+
### report(filename, message | []messages)
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
checks error message (or messages) of a plugin
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
```js
|
|
29
|
+
test('remove usless variables: for-of', (t) => {
|
|
30
|
+
t.report('dot', 'Dot files should be added to .gitignore');
|
|
31
|
+
t.end();
|
|
32
|
+
});
|
|
33
|
+
```
|
|
25
34
|
|
|
26
35
|
### reportCode(input, message)
|
|
36
|
+
|
|
27
37
|
checks error message of a plugin from `input` code
|
|
28
38
|
|
|
39
|
+
```js
|
|
40
|
+
test('remove debugger: report', (t) => {
|
|
41
|
+
t.reportCode('debugger', 'Unexpected "debugger" statement');
|
|
42
|
+
t.end();
|
|
43
|
+
});
|
|
44
|
+
```
|
|
45
|
+
|
|
29
46
|
### transform(filename [, output, plugins])
|
|
47
|
+
|
|
30
48
|
check transform of `filename.js` -> `filename-fix.js` in `test/fixtures` directory
|
|
31
49
|
|
|
32
50
|
```js
|
|
@@ -39,24 +57,97 @@ test('remove usless variables: for-of', (t) => {
|
|
|
39
57
|
```
|
|
40
58
|
|
|
41
59
|
### transformCode(input, output)
|
|
60
|
+
|
|
42
61
|
check transform of `input` -> `output` code
|
|
43
62
|
|
|
63
|
+
```js
|
|
64
|
+
test('remove-console: property identifier: code', (t) => {
|
|
65
|
+
t.transformCode('console.log()', '');
|
|
66
|
+
t.end();
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
44
70
|
### reportWithOptions(filename, options)
|
|
71
|
+
|
|
45
72
|
check report of `filename.js` with `options`
|
|
46
73
|
|
|
74
|
+
```js
|
|
75
|
+
test('putout: test: reportWithOptions', (t) => {
|
|
76
|
+
const cache = new Map();
|
|
77
|
+
cache.set('x', 'y');
|
|
78
|
+
|
|
79
|
+
t.reportWithOptions('remove-import', 'avoid imports', {
|
|
80
|
+
cache,
|
|
81
|
+
});
|
|
82
|
+
t.end();
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
47
86
|
### noReportWithOptions(filename, options)
|
|
87
|
+
|
|
48
88
|
check no report of `filename.js` with `options`
|
|
49
89
|
|
|
90
|
+
```js
|
|
91
|
+
test('putout: test: noReportWithOptions', (t) => {
|
|
92
|
+
const cache = new Map();
|
|
93
|
+
|
|
94
|
+
t.noReportWithOptions('remove-import', {
|
|
95
|
+
cache,
|
|
96
|
+
});
|
|
97
|
+
t.end();
|
|
98
|
+
});
|
|
99
|
+
```
|
|
100
|
+
|
|
50
101
|
### transformWithOptions(filename, options)
|
|
102
|
+
|
|
51
103
|
check transform of `filename.js` with `options`
|
|
52
104
|
|
|
105
|
+
```js
|
|
106
|
+
test('putout: plugin: declare-undefined-variables: transform: parse', (t) => {
|
|
107
|
+
t.transformWithOptions('parse', {
|
|
108
|
+
dismiss: ['assign', 'stringify'],
|
|
109
|
+
});
|
|
110
|
+
t.end();
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
53
114
|
### noTransformWithOptions(filename, options)
|
|
115
|
+
|
|
116
|
+
When file should not be transformed:
|
|
117
|
+
|
|
118
|
+
```js
|
|
119
|
+
test('test: declared', (t) => {
|
|
120
|
+
t.noTransform('declared');
|
|
121
|
+
t.end();
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### noTransformWithOptions(filename, options)
|
|
126
|
+
|
|
54
127
|
check transform of `filename.js` with `options`
|
|
55
128
|
|
|
129
|
+
```js
|
|
130
|
+
test('putout: plugin: declare-undefined-variables: transform: assign: dismiss', (t) => {
|
|
131
|
+
t.noTransformWithOptions('assign', {
|
|
132
|
+
dismiss: ['assign', 'stringify'],
|
|
133
|
+
});
|
|
134
|
+
t.end();
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
56
138
|
### noReport(filename)
|
|
139
|
+
|
|
57
140
|
checks error message of a plugin not produces
|
|
58
141
|
|
|
142
|
+
```js
|
|
143
|
+
test('plugin-putout: check-replace-code: no report: typescript', (t) => {
|
|
144
|
+
t.noReport('typescript');
|
|
145
|
+
t.end();
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
59
149
|
### noReportAfterTransform(filename)
|
|
150
|
+
|
|
60
151
|
checks error message of a plugin not produces
|
|
61
152
|
|
|
62
153
|
```js
|
|
@@ -66,18 +157,47 @@ test('test: no report after transform', (t) => {
|
|
|
66
157
|
});
|
|
67
158
|
```
|
|
68
159
|
|
|
69
|
-
### noReportCode(filename)
|
|
70
|
-
checks error message of a plugin not produces with a `code`
|
|
71
|
-
|
|
72
160
|
### noTransform(filename)
|
|
73
|
-
|
|
161
|
+
|
|
162
|
+
check transform of `filename.js` produce nothing new
|
|
163
|
+
|
|
164
|
+
```js
|
|
165
|
+
test('plugin-apply-numeric-separators: no transform: hex', (t) => {
|
|
166
|
+
t.noTransform('hex');
|
|
167
|
+
t.end();
|
|
168
|
+
});
|
|
169
|
+
```
|
|
74
170
|
|
|
75
171
|
### format(formatter, filename)
|
|
172
|
+
|
|
76
173
|
check file name formatting (pass `process.env.UPDATE=1` to save fixture)
|
|
77
174
|
|
|
175
|
+
```js
|
|
176
|
+
test('formatter: codeframe', async ({format}) => {
|
|
177
|
+
await format(codeframe);
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### noFormat
|
|
182
|
+
|
|
183
|
+
check that there is no formatting for for such file
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
test('formatter: codeframe: no', async ({noFormat}) => {
|
|
187
|
+
await noFormat(codeframe, 'no');
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
78
191
|
### formatMany(formatter, [filename1, filename2])
|
|
192
|
+
|
|
79
193
|
check file name formatting (pass `process.env.UPDATE=1` to save fixture)
|
|
80
194
|
|
|
195
|
+
```js
|
|
196
|
+
test('formatter: dump: many', async ({formatMany}) => {
|
|
197
|
+
await formatMany(dump, ['var', 'var']);
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
81
201
|
#### Usage Example
|
|
82
202
|
|
|
83
203
|
Here is example of tests for [remove-console](https://github.com/coderaiser/putout/tree/master/packages/plugin-remove-console):
|
|
@@ -92,27 +212,11 @@ test('remove-console: report', (t) => {
|
|
|
92
212
|
t.end();
|
|
93
213
|
});
|
|
94
214
|
|
|
95
|
-
test('remove-console: property identifier: code', (t) => {
|
|
96
|
-
t.transformCode('console.log()', '');
|
|
97
|
-
t.end();
|
|
98
|
-
});
|
|
99
|
-
|
|
100
215
|
test('remove-console: property identifier', (t) => {
|
|
101
216
|
t.transform('property-identifier');
|
|
102
217
|
t.end();
|
|
103
218
|
});
|
|
104
219
|
|
|
105
|
-
test('remove-console: property literal', (t) => {
|
|
106
|
-
t.transform('property-literal', '\n\n');
|
|
107
|
-
t.end();
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
// when file should not be transformed
|
|
111
|
-
test('test: declared', (t) => {
|
|
112
|
-
t.noTransform('declared');
|
|
113
|
-
t.end();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
220
|
// when code should not be transformed
|
|
117
221
|
test('test: declared', (t) => {
|
|
118
222
|
t.noTransformCode('alert()');
|
|
@@ -146,12 +250,12 @@ const test = createTest(__dirname, {
|
|
|
146
250
|
Example:
|
|
147
251
|
|
|
148
252
|
```js
|
|
149
|
-
test('putout: processor: json', async (
|
|
150
|
-
await
|
|
253
|
+
test('putout: processor: json', async ({process}) => {
|
|
254
|
+
await process('eslintrc');
|
|
151
255
|
});
|
|
152
256
|
|
|
153
|
-
test('putout: processor: json', async (
|
|
154
|
-
await
|
|
257
|
+
test('putout: processor: json', async ({process}) => {
|
|
258
|
+
await process('package', ['package-json']);
|
|
155
259
|
});
|
|
156
260
|
```
|
|
157
261
|
|
|
@@ -162,16 +266,16 @@ Check that filename would not be processed.
|
|
|
162
266
|
Example:
|
|
163
267
|
|
|
164
268
|
```js
|
|
165
|
-
test('putout: process: json: no process', async (
|
|
166
|
-
await
|
|
269
|
+
test('putout: process: json: no process', async ({noProcess}) => {
|
|
270
|
+
await noProcess('eslintrc', [], ['json']);
|
|
167
271
|
});
|
|
168
272
|
```
|
|
169
273
|
|
|
170
274
|
### comparePlaces(filename, places)
|
|
171
275
|
|
|
172
276
|
```js
|
|
173
|
-
test('putout: processor: css: places', async (
|
|
174
|
-
await
|
|
277
|
+
test('putout: processor: css: places', async ({comparePlaces}) => {
|
|
278
|
+
await comparePlaces('style', [{
|
|
175
279
|
message: 'Expected indentation of 4 spaces (indentation)',
|
|
176
280
|
position: {
|
|
177
281
|
column: 1,
|
|
@@ -185,4 +289,3 @@ test('putout: processor: css: places', async (t) => {
|
|
|
185
289
|
## License
|
|
186
290
|
|
|
187
291
|
MIT
|
|
188
|
-
|
package/lib/processor/index.js
CHANGED
|
@@ -12,13 +12,11 @@ const processFile = require('putout/process-file');
|
|
|
12
12
|
const {runProcessors} = require('@putout/engine-processor');
|
|
13
13
|
|
|
14
14
|
const isStr = (a) => typeof a === 'string';
|
|
15
|
-
const buildOptions = ({options, plugins, processors}) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
};
|
|
15
|
+
const buildOptions = ({options, plugins, processors}) => ({
|
|
16
|
+
...options,
|
|
17
|
+
plugins: plugins || options.plugins,
|
|
18
|
+
processors: processors || options.processors,
|
|
19
|
+
});
|
|
22
20
|
|
|
23
21
|
const addDot = (a) => a ? `.${a}` : '';
|
|
24
22
|
module.exports._addDot = addDot;
|
package/lib/test.js
CHANGED
|
@@ -66,7 +66,7 @@ module.exports = (dir, plugin, rules) => {
|
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
const format = currify(({dir, plugins, rules}, t
|
|
69
|
+
const format = currify(({dir, plugins, rules}, t) => async (formatter, name, formatterOptions = {}) => {
|
|
70
70
|
const full = join(dir, name);
|
|
71
71
|
const outputName = `${full}-format`;
|
|
72
72
|
const [input, isTS] = readFixture(full);
|
|
@@ -75,7 +75,7 @@ const format = currify(({dir, plugins, rules}, t, formatter, name, formatterOpti
|
|
|
75
75
|
const {places} = putout(input, {fixCount: 1, isTS, plugins, rules});
|
|
76
76
|
|
|
77
77
|
const report = putout.initReport();
|
|
78
|
-
const result = report(formatter, {
|
|
78
|
+
const result = await report(formatter, {
|
|
79
79
|
formatterOptions,
|
|
80
80
|
name,
|
|
81
81
|
source: input,
|
|
@@ -87,14 +87,14 @@ const format = currify(({dir, plugins, rules}, t, formatter, name, formatterOpti
|
|
|
87
87
|
return {is, output, result};
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
const noFormat = currify(({dir, plugins, rules}, t
|
|
90
|
+
const noFormat = currify(({dir, plugins, rules}, t) => async (formatter, name, formatterOptions = {}) => {
|
|
91
91
|
const full = join(dir, name);
|
|
92
92
|
const [input] = readFixture(full);
|
|
93
93
|
|
|
94
94
|
const {places} = putout(input, {plugins, rules});
|
|
95
95
|
|
|
96
96
|
const report = putout.initReport();
|
|
97
|
-
const result = report(formatter, {
|
|
97
|
+
const result = await report(formatter, {
|
|
98
98
|
name,
|
|
99
99
|
places,
|
|
100
100
|
formatterOptions,
|
|
@@ -105,7 +105,7 @@ const noFormat = currify(({dir, plugins, rules}, t, formatter, name, formatterOp
|
|
|
105
105
|
return {is, output, result};
|
|
106
106
|
});
|
|
107
107
|
|
|
108
|
-
const formatMany = currify(({dir, plugins, rules}, t
|
|
108
|
+
const formatMany = currify(({dir, plugins, rules}, t) => async (formatter, names, formatterOptions = {}) => {
|
|
109
109
|
const joinTwo = (a) => (b) => join(a, b);
|
|
110
110
|
const fullNames = names.map(joinTwo(dir));
|
|
111
111
|
|
|
@@ -124,7 +124,7 @@ const formatMany = currify(({dir, plugins, rules}, t, formatter, names, formatte
|
|
|
124
124
|
rules,
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
result += report(formatter, {
|
|
127
|
+
result += await report(formatter, {
|
|
128
128
|
name,
|
|
129
129
|
formatterOptions,
|
|
130
130
|
source: input,
|
|
@@ -142,52 +142,44 @@ const formatMany = currify(({dir, plugins, rules}, t, formatter, names, formatte
|
|
|
142
142
|
return {is, output, result};
|
|
143
143
|
});
|
|
144
144
|
|
|
145
|
-
const formatManySave = currify(({dir, plugins, rules}, t
|
|
145
|
+
const formatManySave = currify(({dir, plugins, rules}, t) => async (formatter, names, options = {}) => {
|
|
146
146
|
const name = `${names.join('-')}-format.js`;
|
|
147
147
|
const outputName = join(dir, name);
|
|
148
148
|
|
|
149
149
|
if (!existsSync(outputName))
|
|
150
150
|
writeFileSync(outputName, '');
|
|
151
151
|
|
|
152
|
+
const runFormat = await formatMany({dir, plugins, rules}, t);
|
|
153
|
+
|
|
152
154
|
const {
|
|
153
155
|
is,
|
|
154
156
|
output,
|
|
155
157
|
result,
|
|
156
|
-
} =
|
|
157
|
-
{dir,
|
|
158
|
-
plugins,
|
|
159
|
-
rules},
|
|
160
|
-
t,
|
|
161
|
-
formatter,
|
|
162
|
-
names,
|
|
163
|
-
options,
|
|
164
|
-
);
|
|
158
|
+
} = await runFormat(formatter, names, options);
|
|
165
159
|
|
|
166
160
|
writeFileSync(outputName, result);
|
|
167
161
|
|
|
168
162
|
return {is, output, result};
|
|
169
163
|
});
|
|
170
164
|
|
|
171
|
-
const formatSave = currify(({dir, plugins, rules}, t
|
|
165
|
+
const formatSave = currify(({dir, plugins, rules}, t) => async (formatter, name, options = {}) => {
|
|
172
166
|
const full = join(dir, name);
|
|
173
167
|
const outputName = `${full}-format.js`;
|
|
174
168
|
|
|
175
169
|
if (!existsSync(outputName))
|
|
176
170
|
writeFileSync(outputName, '');
|
|
177
171
|
|
|
172
|
+
const runFormat = format({
|
|
173
|
+
dir,
|
|
174
|
+
plugins,
|
|
175
|
+
rules,
|
|
176
|
+
}, t);
|
|
177
|
+
|
|
178
178
|
const {
|
|
179
179
|
is,
|
|
180
180
|
output,
|
|
181
181
|
result,
|
|
182
|
-
} =
|
|
183
|
-
{dir,
|
|
184
|
-
plugins,
|
|
185
|
-
rules},
|
|
186
|
-
t,
|
|
187
|
-
formatter,
|
|
188
|
-
name,
|
|
189
|
-
options,
|
|
190
|
-
);
|
|
182
|
+
} = await runFormat(formatter, name, options);
|
|
191
183
|
|
|
192
184
|
writeFileSync(outputName, result);
|
|
193
185
|
|
|
@@ -209,17 +201,19 @@ const transform = currify(({dir, plugins, rules}, t, name, transformed = null, a
|
|
|
209
201
|
|
|
210
202
|
addons = addons || {};
|
|
211
203
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
204
|
+
const {code} = putout(input, {
|
|
205
|
+
isTS,
|
|
206
|
+
rules,
|
|
207
|
+
plugins: [{
|
|
208
|
+
...plugins[0],
|
|
209
|
+
...addons,
|
|
210
|
+
}],
|
|
211
|
+
});
|
|
218
212
|
|
|
219
213
|
if (UPDATE)
|
|
220
214
|
writeFileSync(`${full}-fix.js`, code);
|
|
221
215
|
|
|
222
|
-
return t.equal(code, output
|
|
216
|
+
return t.equal(code, output);
|
|
223
217
|
});
|
|
224
218
|
|
|
225
219
|
const transformWithOptions = currify(({dir, plugins}, t, name, options) => {
|
|
@@ -239,7 +233,7 @@ const transformWithOptions = currify(({dir, plugins}, t, name, options) => {
|
|
|
239
233
|
if (UPDATE)
|
|
240
234
|
writeFileSync(`${full}-fix.js`, code);
|
|
241
235
|
|
|
242
|
-
return t.equal(code, output
|
|
236
|
+
return t.equal(code, output);
|
|
243
237
|
});
|
|
244
238
|
|
|
245
239
|
const noTransformWithOptions = currify(({dir, plugins}, t, name, options) => {
|
|
@@ -255,7 +249,7 @@ const noTransformWithOptions = currify(({dir, plugins}, t, name, options) => {
|
|
|
255
249
|
|
|
256
250
|
const {code} = putout(input, {isTS, plugins, rules});
|
|
257
251
|
|
|
258
|
-
return t.equal(code, input
|
|
252
|
+
return t.equal(code, input);
|
|
259
253
|
});
|
|
260
254
|
|
|
261
255
|
const noTransform = currify(({dir, plugins, rules}, t, name, addons = {}) => {
|
|
@@ -267,12 +261,12 @@ const noTransform = currify(({dir, plugins, rules}, t, name, addons = {}) => {
|
|
|
267
261
|
|
|
268
262
|
const transformCode = currify(({plugins, rules}, t, input, output, isTS = false) => {
|
|
269
263
|
const {code} = putout(input, {isTS, plugins, rules});
|
|
270
|
-
return t.equal(code, output
|
|
264
|
+
return t.equal(code, output);
|
|
271
265
|
});
|
|
272
266
|
|
|
273
267
|
const noTransformCode = currify(({plugins, rules}, t, input) => {
|
|
274
268
|
const {code} = putout(input, {plugins, rules});
|
|
275
|
-
return t.equal(code, input
|
|
269
|
+
return t.equal(code, input);
|
|
276
270
|
});
|
|
277
271
|
|
|
278
272
|
const getMessage = ({message}) => message;
|
|
@@ -342,7 +336,7 @@ const reportCode = currify(({plugins, rules, isTS}, t, source, message) => {
|
|
|
342
336
|
if (isArray(message))
|
|
343
337
|
return t.deepEqual(resultMessages, message, 'should equal');
|
|
344
338
|
|
|
345
|
-
return t.equal(resultMessages[0], message
|
|
339
|
+
return t.equal(resultMessages[0], message);
|
|
346
340
|
});
|
|
347
341
|
|
|
348
342
|
const noReportCode = currify(({plugins, rules, isTS}, t, source) => {
|
|
@@ -393,7 +387,7 @@ function preTest(test, plugin) {
|
|
|
393
387
|
test(`${name}: rules is an object`, (t) => {
|
|
394
388
|
t.equal(typeof rules, 'object', 'should export "rules" object');
|
|
395
389
|
t.end();
|
|
396
|
-
});
|
|
390
|
+
}, {checkDuplicates: false});
|
|
397
391
|
|
|
398
392
|
const entries = Object.entries(rules);
|
|
399
393
|
for (const [entryName, plugin] of entries) {
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@putout/test",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
|
|
5
5
|
"description": "test runner for putout plugins ",
|
|
6
|
-
"homepage": "
|
|
6
|
+
"homepage": "https://github.com/coderaiser/putout/tree/master/packages/test#readme",
|
|
7
7
|
"main": "lib/test.js",
|
|
8
8
|
"bin": {
|
|
9
9
|
"tape": "bin/test.mjs"
|
|
@@ -44,16 +44,17 @@
|
|
|
44
44
|
"runner"
|
|
45
45
|
],
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@
|
|
48
|
-
"@putout/formatter-
|
|
49
|
-
"@putout/
|
|
50
|
-
"@putout/plugin-
|
|
51
|
-
"@putout/plugin-remove-
|
|
47
|
+
"@putout/formatter-dump": "*",
|
|
48
|
+
"@putout/formatter-progress": "*",
|
|
49
|
+
"@putout/plugin-extract-object-properties": "*",
|
|
50
|
+
"@putout/plugin-putout": "*",
|
|
51
|
+
"@putout/plugin-remove-console": "*",
|
|
52
|
+
"@putout/plugin-remove-empty": "*",
|
|
52
53
|
"@putout/plugin-remove-unused-variables": "*",
|
|
53
54
|
"c8": "^7.5.0",
|
|
54
|
-
"eslint": "^8.0.
|
|
55
|
+
"eslint": "^8.0.1",
|
|
55
56
|
"eslint-plugin-node": "^11.0.0",
|
|
56
|
-
"eslint-plugin-putout": "^
|
|
57
|
+
"eslint-plugin-putout": "^12.0.0",
|
|
57
58
|
"lerna": "^4.0.0",
|
|
58
59
|
"madrun": "^8.0.1",
|
|
59
60
|
"mock-require": "^3.0.3",
|