eslint-plugin-putout 11.18.0 → 12.0.2
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 +4 -4
- package/lib/add-newline-after-function-call/README.md +1 -1
- package/lib/add-newline-after-function-call/index.js +9 -2
- package/lib/add-newline-before-function-call/README.md +1 -1
- package/lib/add-newline-before-function-call/index.js +9 -14
- package/lib/add-newlines-between-types-in-union/README.md +1 -1
- package/lib/align-spaces/README.md +1 -1
- package/lib/array-element-newline/README.md +1 -1
- package/lib/destructuring-as-function-argument/README.md +1 -1
- package/lib/evaluate/README.md +1 -1
- package/lib/for-of-multiple-properties-destructuring/README.md +1 -1
- package/lib/function-declaration-paren-newline/README.md +1 -1
- package/lib/keyword-spacing/README.md +1 -1
- package/lib/long-properties-destructuring/README.md +1 -1
- package/lib/markdown.js +8 -2
- package/lib/multiple-properties-destructuring/README.md +1 -1
- package/lib/newline-function-call-arguments/README.md +1 -1
- package/lib/no-unresolved/README.md +1 -1
- package/lib/object-init/README.md +1 -1
- package/lib/objects-braces-inside-array/README.md +1 -1
- package/lib/putout/README.md +1 -1
- package/lib/remove-empty-newline-after-last-specifier/README.md +1 -1
- package/lib/remove-empty-newline-before-first-specifier/README.md +1 -1
- package/lib/remove-newline-after-default-import/README.md +2 -2
- package/lib/remove-newline-from-empty-object/README.md +1 -1
- package/lib/single-property-destructuring/README.md +2 -2
- package/lib/tape-add-newline-before-assertion/README.md +2 -2
- package/lib/tape-add-newline-between-tests/README.md +2 -2
- package/lib/tape-remove-newline-before-t-end/README.md +2 -2
- package/lib/tape-remove-newline-before-t-end/index.js +32 -3
- package/lib/ts.js +35 -9
- package/lib/wrap.js +15 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[CoverageURL]: https://coveralls.io/github/coderaiser/putout?branch=master
|
|
6
6
|
[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/putout/badge.svg?branch=master&service=github
|
|
7
7
|
|
|
8
|
-
[`ESLint`](https://eslint.org) plugin for 🐊[`Putout`](https://github.com/coderaiser/putout) with built-in rules from [
|
|
8
|
+
[`ESLint`](https://eslint.org) plugin for 🐊[`Putout`](https://github.com/coderaiser/putout) with built-in rules from [`@putout/eslint-config`](https://github.com/coderaiser/putout/tree/master/packages/eslint-config).
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ $ npm i putout eslint eslint-plugin-putout -D
|
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
|
-
Add `putout` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
|
|
20
|
+
Add `putout` to the plugins section of your `.eslintrc.json` configuration file. You can omit the `eslint-plugin-` prefix:
|
|
21
21
|
|
|
22
22
|
```json
|
|
23
23
|
{
|
|
@@ -88,7 +88,7 @@ Then configure the rules you want to use under the rules section.
|
|
|
88
88
|
|
|
89
89
|
### Safe mode
|
|
90
90
|
|
|
91
|
-
When using `
|
|
91
|
+
When using 🐊`Putout` in IDE with `--fix` on save, or when you want to disable the most dangerous rules, use:
|
|
92
92
|
|
|
93
93
|
```json
|
|
94
94
|
{
|
|
@@ -101,7 +101,7 @@ When using `putout` in IDE with `--fix` on save, or when you want to disable the
|
|
|
101
101
|
}
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
List of disabled `
|
|
104
|
+
List of disabled 🐊`Putout` rules:
|
|
105
105
|
|
|
106
106
|
- [remove-empty](https://github.com/coderaiser/putout/tree/v22.0.0/packages/plugin-remove-empty);
|
|
107
107
|
- [remove-unused-variables](https://github.com/coderaiser/putout/tree/v22.0.0/packages/remove-unused-variables);
|
|
@@ -12,7 +12,7 @@ const {
|
|
|
12
12
|
|
|
13
13
|
const regExp = /^;?\n( +)?\n +$/;
|
|
14
14
|
|
|
15
|
-
module.exports.category = '
|
|
15
|
+
module.exports.category = 'layout';
|
|
16
16
|
module.exports.report = () => 'Add newline after function call';
|
|
17
17
|
|
|
18
18
|
module.exports.filter = ({text, node, getText, getCommentsAfter}) => {
|
|
@@ -47,6 +47,7 @@ module.exports.filter = ({text, node, getText, getCommentsAfter}) => {
|
|
|
47
47
|
if (i === n - 1)
|
|
48
48
|
break;
|
|
49
49
|
|
|
50
|
+
const prev = body[i - 1];
|
|
50
51
|
const next = body[i + 1];
|
|
51
52
|
|
|
52
53
|
if (!isVariableDeclaration(next))
|
|
@@ -62,8 +63,14 @@ module.exports.filter = ({text, node, getText, getCommentsAfter}) => {
|
|
|
62
63
|
|
|
63
64
|
const spacesAfterNext = getSpacesAfterNode(next, {getText});
|
|
64
65
|
|
|
65
|
-
if (
|
|
66
|
+
if (regExp.test(spacesAfterNext))
|
|
67
|
+
break;
|
|
68
|
+
|
|
69
|
+
if (!prev)
|
|
66
70
|
return true;
|
|
71
|
+
|
|
72
|
+
const spacesAfterPrev = getSpacesAfterNode(prev, {getText});
|
|
73
|
+
return !regExp.test(spacesAfterPrev);
|
|
67
74
|
}
|
|
68
75
|
|
|
69
76
|
return false;
|
|
@@ -13,7 +13,7 @@ const regExp = /^\n( +)?\n +$/;
|
|
|
13
13
|
module.exports.category = 'typescript';
|
|
14
14
|
module.exports.report = () => 'Add newline before function call';
|
|
15
15
|
|
|
16
|
-
module.exports.filter = ({text, node,
|
|
16
|
+
module.exports.filter = ({text, node, getCommentsBefore, getSpacesBeforeNode}) => {
|
|
17
17
|
if (!isExpressionStatement(node.parent))
|
|
18
18
|
return false;
|
|
19
19
|
|
|
@@ -31,7 +31,7 @@ module.exports.filter = ({text, node, getText, getCommentsBefore}) => {
|
|
|
31
31
|
if (n < 3)
|
|
32
32
|
return false;
|
|
33
33
|
|
|
34
|
-
const spaces = getSpacesBeforeNode(node,
|
|
34
|
+
const spaces = getSpacesBeforeNode(node, text);
|
|
35
35
|
|
|
36
36
|
if (regExp.test(spaces))
|
|
37
37
|
return false;
|
|
@@ -43,16 +43,21 @@ module.exports.filter = ({text, node, getText, getCommentsBefore}) => {
|
|
|
43
43
|
continue;
|
|
44
44
|
|
|
45
45
|
const prevA = body[i - 1];
|
|
46
|
+
const nextA = body[i + 1];
|
|
46
47
|
|
|
47
48
|
if (!isVariableDeclaration(prevA))
|
|
48
49
|
return false;
|
|
49
50
|
|
|
50
|
-
const spaces = getSpacesBeforeNode(prevA
|
|
51
|
+
const spaces = getSpacesBeforeNode(prevA);
|
|
51
52
|
|
|
52
53
|
if (regExp.test(spaces))
|
|
53
54
|
return false;
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
if (!nextA)
|
|
57
|
+
return true;
|
|
58
|
+
|
|
59
|
+
const nextSpaces = getSpacesBeforeNode(nextA);
|
|
60
|
+
return !regExp.test(nextSpaces);
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
return false;
|
|
@@ -66,13 +71,3 @@ module.exports.include = () => [
|
|
|
66
71
|
'CallExpression',
|
|
67
72
|
];
|
|
68
73
|
|
|
69
|
-
function getSpacesBeforeNode(node, {getText, text = getText(node)}) {
|
|
70
|
-
let spaces = '';
|
|
71
|
-
let i = 0;
|
|
72
|
-
|
|
73
|
-
while (!spaces || /^[ \n]+$/.test(spaces))
|
|
74
|
-
spaces = getText(node, ++i)
|
|
75
|
-
.replace(text, '');
|
|
76
|
-
|
|
77
|
-
return spaces.slice(1);
|
|
78
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Add new lines between types in union (add-newlines-between-types-in-union)
|
|
1
|
+
# Add new lines between types in union (`add-newlines-between-types-in-union`)
|
|
2
2
|
|
|
3
3
|
Because [`array-element-newline`](https://eslint.org/docs/rules/array-element-newline) requires [`array-bracket-newline`](https://eslint.org/docs/rules/array-bracket-newline).
|
|
4
4
|
And `array-bracket-newline` and conflicts with [`object-braces-inside-array`](https://github.com/coderaiser/putout/tree/master/packages/eslint-plugin-putout/lib/objects-braces-inside-array).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep curly braces in one line when you use destructuring as function argument (`destructuring-as-function-argument`)
|
|
2
2
|
|
|
3
3
|
When `putout` removes unused variable located in function argument object pattern, it formats in in a multiple lines.
|
|
4
4
|
|
package/lib/evaluate/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# evaluate expression (evaluate)
|
|
1
|
+
# evaluate expression (`evaluate`)
|
|
2
2
|
|
|
3
3
|
Evaluate expression started with `__putout_evaluate: `.
|
|
4
4
|
Provided code is processed with [`@putout/plugin-declare-undefined-variables`](https://github.com/coderaiser/putout/tree/master/packages/plugin-declare-undefined-variables). So next code:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Remove newlines between parens in function declaration (`function-declaration-paren-newline`)
|
|
2
2
|
|
|
3
3
|
Similar to `eslint` [function-paren-newline](https://eslint.org/docs/rules/function-declaration-paren-newline), but forbids new lines in function declarations and expressions arguments.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Use spaces around
|
|
1
|
+
# Use spaces around `catch` (`keyword-spacing`)
|
|
2
2
|
|
|
3
3
|
When `putout` removes unused variable in `catch` [eslint keyword spacing](https://eslint.org/docs/rules/keyword-spacing) can't handle [optional catch binding](https://github.com/tc39/proposal-optional-catch-binding) correctly.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep each property on separate line when destructuring long properties (`long-properties-destructuring`)
|
|
2
2
|
|
|
3
3
|
Always add new lines, when property name is longer then 15 characters.
|
|
4
4
|
|
package/lib/markdown.js
CHANGED
|
@@ -33,13 +33,19 @@ module.exports = [{
|
|
|
33
33
|
parserOpts,
|
|
34
34
|
plugins: [
|
|
35
35
|
'@babel/plugin-syntax-class-properties',
|
|
36
|
-
'@babel/plugin-syntax-top-level-await',
|
|
37
36
|
],
|
|
38
37
|
},
|
|
39
38
|
},
|
|
40
39
|
}, {
|
|
41
40
|
...ts,
|
|
42
41
|
files: '*.md{ts}',
|
|
43
|
-
rules:
|
|
42
|
+
rules: {
|
|
43
|
+
...commonRules,
|
|
44
|
+
...ts.rules,
|
|
45
|
+
'@typescript-eslint/no-unused-vars': 'off',
|
|
46
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
47
|
+
'@typescript-eslint/no-inferrable-types': 'off',
|
|
48
|
+
'@typescript-eslint/array-type': 'off',
|
|
49
|
+
},
|
|
44
50
|
}];
|
|
45
51
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep each property on separate line when using multiple destructuring properties (`multiple-properties-destructuring`)
|
|
2
2
|
|
|
3
3
|
In the same way as eslint [object-property-newline](https://eslint.org/docs/rules/object-property-newline), but for destructuring.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep curly braces in one line when property is single (`newline-function-call-arguments`)
|
|
2
2
|
|
|
3
3
|
Addition to eslint's [function-paren-newline](https://eslint.org/docs/rules/function-paren-newline)
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Check if path can be resolved and fix if cannot (`no-unresolved`)
|
|
2
2
|
|
|
3
3
|
Similar to [`no-unresolved`](https://github.com/import-js/eslint-plugin-import/blob/HEAD/docs/rules/no-unresolved.md) from
|
|
4
4
|
[`eslint-plugin-putout`](https://github.com/import-js/eslint-plugin-import). But supports only `ESM` and have `autofix`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep each property on separate line when initializing an object(`object-init`)
|
|
2
2
|
|
|
3
3
|
In the same way as eslint [object-property-newline](https://github.com/coderaiser/putout/tree/master/packages/eslint-plugin-putout/lib/multiple-properties-destructuring) but for initializing variables with `object expression`.
|
|
4
4
|
|
package/lib/putout/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Keep opening curly brace on one line with default import (remove-newline-after-default-import)
|
|
1
|
+
# Keep opening curly brace on one line with default import (`remove-newline-after-default-import`)
|
|
2
2
|
|
|
3
|
-
Fixes [object-curly-newline](https://eslint.org/docs/rules/object-curly-newline) + [eslint-plugin-modules-newline](https://github.com/gmsorrow/eslint-plugin-modules-newline).
|
|
3
|
+
Fixes [`object-curly-newline`](https://eslint.org/docs/rules/object-curly-newline) + [`eslint-plugin-modules-newline`](https://github.com/gmsorrow/eslint-plugin-modules-newline).
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Keep curly braces in one line when property is single (`single-property-destructuring`)
|
|
2
2
|
|
|
3
|
-
When `putout
|
|
3
|
+
When 🐊[`Putout`](https://github.com/coderaiser/putout) removes unused variables declared as destructured properties, it keeps one property to take 3 lines, instead of 1.
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Add newline before assertion (add-newline-before-assertion)
|
|
1
|
+
# Add newline before assertion (`add-newline-before-assertion`)
|
|
2
2
|
|
|
3
|
-
Add newline before `t.equal()` etc, for [supertape](https://github.com/coderaiser/supertape).
|
|
3
|
+
Add newline before `t.equal()` etc, for [`supertape`](https://github.com/coderaiser/supertape).
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Add newline between tests (add-newline-between-tests)
|
|
1
|
+
# Add newline between tests (`add-newline-between-tests`)
|
|
2
2
|
|
|
3
|
-
Add newline between tests, for [supertape](https://github.com/coderaiser/supertape).
|
|
3
|
+
Add newline between tests, for [`supertape`](https://github.com/coderaiser/supertape).
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Remove newline before `t.end()` (remove-newline-before-t-end)
|
|
1
|
+
# Remove newline before `t.end()` (`remove-newline-before-t-end`)
|
|
2
2
|
|
|
3
|
-
Remove newline before `t.end()`, for [supertape](https://github.com/coderaiser/supertape).
|
|
3
|
+
Remove newline before `t.end()`, for [`supertape`](https://github.com/coderaiser/supertape).
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
@@ -1,16 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const {
|
|
4
|
+
operator,
|
|
5
|
+
types,
|
|
6
|
+
} = require('putout');
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
isCallExpression,
|
|
10
|
+
isIdentifier,
|
|
11
|
+
} = types;
|
|
12
|
+
|
|
13
|
+
const {compare} = operator;
|
|
14
|
+
|
|
3
15
|
module.exports.category = 'tape';
|
|
4
16
|
module.exports.report = () => 'Remove newline before t.end()';
|
|
5
17
|
|
|
6
18
|
const newlineReg = /\n( +)?\n +t.end\(\)/;
|
|
7
19
|
|
|
8
|
-
module.exports.filter = ({text}) => {
|
|
20
|
+
module.exports.filter = ({text, node}) => {
|
|
9
21
|
if (!/^test(\.only|\.skip)?\(/.test(text))
|
|
10
22
|
return false;
|
|
11
23
|
|
|
12
|
-
if (newlineReg.test(text))
|
|
13
|
-
return
|
|
24
|
+
if (!newlineReg.test(text))
|
|
25
|
+
return false;
|
|
26
|
+
|
|
27
|
+
const {body} = node.arguments[1].body;
|
|
28
|
+
const n = body.length;
|
|
29
|
+
|
|
30
|
+
for (let i = 1; i < n; i++) {
|
|
31
|
+
const current = body[i];
|
|
32
|
+
const prev = body[i - 1];
|
|
33
|
+
|
|
34
|
+
if (!compare(current, 't.end()'))
|
|
35
|
+
continue;
|
|
36
|
+
|
|
37
|
+
if (!isCallExpression(prev.expression))
|
|
38
|
+
break;
|
|
39
|
+
|
|
40
|
+
const {callee} = prev.expression;
|
|
41
|
+
return isIdentifier(callee.object, {name: 't'});
|
|
42
|
+
}
|
|
14
43
|
|
|
15
44
|
return false;
|
|
16
45
|
};
|
package/lib/ts.js
CHANGED
|
@@ -1,21 +1,47 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
module.exports = [{
|
|
3
|
+
const ts = {
|
|
6
4
|
files: '*.ts',
|
|
7
|
-
parser: '@
|
|
5
|
+
parser: '@typescript-eslint/parser',
|
|
8
6
|
parserOptions: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
parserOpts,
|
|
12
|
-
plugins: ['@babel/plugin-syntax-typescript'],
|
|
7
|
+
ecmaFeatures: {
|
|
8
|
+
jsx: false,
|
|
13
9
|
},
|
|
14
10
|
},
|
|
11
|
+
plugins: [
|
|
12
|
+
'@typescript-eslint',
|
|
13
|
+
],
|
|
14
|
+
extends: [
|
|
15
|
+
'plugin:@typescript-eslint/recommended',
|
|
16
|
+
],
|
|
15
17
|
rules: {
|
|
16
18
|
'no-undef': 'off',
|
|
17
19
|
'no-var': 'off',
|
|
18
20
|
'putout/no-unresolved': 'off',
|
|
21
|
+
'semi': 'off',
|
|
22
|
+
'@typescript-eslint/semi': 'error',
|
|
23
|
+
'@typescript-eslint/array-type': 'error',
|
|
24
|
+
'space-before-function-paren': 'off',
|
|
25
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
26
|
+
'@typescript-eslint/ban-types': 'off',
|
|
27
|
+
'@typescript-eslint/no-empty-function': 'off',
|
|
28
|
+
'@typescript-eslint/space-before-function-paren': ['error', {
|
|
29
|
+
anonymous: 'never',
|
|
30
|
+
named: 'never',
|
|
31
|
+
asyncArrow: 'always',
|
|
32
|
+
}],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
module.exports = [
|
|
37
|
+
ts, {
|
|
38
|
+
...ts,
|
|
39
|
+
files: '*.tsx',
|
|
40
|
+
parserOptions: {
|
|
41
|
+
ecmaFeatures: {
|
|
42
|
+
jsx: true,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
19
45
|
},
|
|
20
|
-
|
|
46
|
+
];
|
|
21
47
|
|
package/lib/wrap.js
CHANGED
|
@@ -8,6 +8,9 @@ const prepare = (plugin, context, options) => (node) => {
|
|
|
8
8
|
const getText = source.getText.bind(source);
|
|
9
9
|
const getCommentsBefore = source.getCommentsBefore.bind(source);
|
|
10
10
|
const getCommentsAfter = source.getCommentsAfter.bind(source);
|
|
11
|
+
const getSpacesBeforeNode = createGetSpacesBeforeNode({
|
|
12
|
+
getText,
|
|
13
|
+
});
|
|
11
14
|
|
|
12
15
|
const text = getText(node);
|
|
13
16
|
|
|
@@ -18,6 +21,7 @@ const prepare = (plugin, context, options) => (node) => {
|
|
|
18
21
|
getText,
|
|
19
22
|
getCommentsBefore,
|
|
20
23
|
getCommentsAfter,
|
|
24
|
+
getSpacesBeforeNode,
|
|
21
25
|
filename,
|
|
22
26
|
});
|
|
23
27
|
|
|
@@ -91,3 +95,14 @@ function getTraversers(names, plugin) {
|
|
|
91
95
|
return traversers;
|
|
92
96
|
}
|
|
93
97
|
|
|
98
|
+
const createGetSpacesBeforeNode = ({getText}) => (node, text = getText(node)) => {
|
|
99
|
+
let spaces = '';
|
|
100
|
+
let i = 0;
|
|
101
|
+
|
|
102
|
+
while (!spaces || /^[ \n]+$/.test(spaces))
|
|
103
|
+
spaces = getText(node, ++i)
|
|
104
|
+
.replace(text, '');
|
|
105
|
+
|
|
106
|
+
return spaces.slice(1);
|
|
107
|
+
};
|
|
108
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-putout",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.2",
|
|
4
4
|
"description": "eslint plugin for putout",
|
|
5
5
|
"release": false,
|
|
6
6
|
"tag": false,
|
|
@@ -36,17 +36,17 @@
|
|
|
36
36
|
"@babel/core": "^7.12.3",
|
|
37
37
|
"@babel/eslint-parser": "^7.15.0",
|
|
38
38
|
"@babel/plugin-syntax-class-properties": "^7.12.1",
|
|
39
|
-
"@babel/plugin-syntax-top-level-await": "^7.12.1",
|
|
40
|
-
"@babel/plugin-syntax-typescript": "^7.12.1",
|
|
41
39
|
"@putout/engine-parser": "^4.6.0",
|
|
42
40
|
"@putout/eslint-config": "^6.0.0",
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^5.5.0",
|
|
42
|
+
"@typescript-eslint/parser": "^5.4.0",
|
|
43
43
|
"align-spaces": "^1.0.0",
|
|
44
44
|
"eslint-plugin-node": "^11.0.0",
|
|
45
45
|
"estree-to-babel": "^4.0.1",
|
|
46
|
-
"try-catch": "^3.0.0"
|
|
46
|
+
"try-catch": "^3.0.0",
|
|
47
|
+
"typescript": "^4.5.2"
|
|
47
48
|
},
|
|
48
49
|
"devDependencies": {
|
|
49
|
-
"@typescript-eslint/parser": "^5.4.0",
|
|
50
50
|
"c8": "^7.5.0",
|
|
51
51
|
"eslint": "^8.0.1",
|
|
52
52
|
"eslint-plugin-eslint-plugin": "^3.2.0",
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"simport": "^1.2.0",
|
|
57
57
|
"supertape": "^6.6.0",
|
|
58
58
|
"try-to-catch": "^3.0.0",
|
|
59
|
-
"typescript": "^
|
|
59
|
+
"@babel/plugin-syntax-typescript": "^7.12.1"
|
|
60
60
|
},
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">=14"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"eslint": ">=8.0.0",
|
|
66
|
-
"putout": ">=
|
|
66
|
+
"putout": ">=22"
|
|
67
67
|
},
|
|
68
68
|
"license": "MIT",
|
|
69
69
|
"publishConfig": {
|