@so1ve/eslint-plugin 0.44.0 → 0.45.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/dist/index.cjs +64 -84
- package/dist/index.mjs +65 -85
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const utils = require('@typescript-eslint/utils');
|
|
4
|
-
const reactivity = require('@vue/reactivity');
|
|
5
4
|
const util = require('@typescript-eslint/utils/dist/ast-utils');
|
|
5
|
+
const reactivity = require('@vue/reactivity');
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
const n = Object.create(null);
|
|
@@ -43,18 +43,17 @@ const genericSpacing = createEslintRule({
|
|
|
43
43
|
const params = node.params;
|
|
44
44
|
for (let i = 0; i < params.length; i++) {
|
|
45
45
|
const param = params[i];
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
46
|
+
const leftToken = sourceCode.getTokenBefore(param);
|
|
47
|
+
const rightToken = sourceCode.getTokenAfter(param);
|
|
48
|
+
const hasSpacingBeforeParam = sourceCode.isSpaceBetween(leftToken, param);
|
|
49
|
+
const hasSpacingAfterParam = sourceCode.isSpaceBetween(param, rightToken);
|
|
50
|
+
if (hasSpacingBeforeParam && param.loc.start.line === node.loc.start.line && leftToken.value === "<") {
|
|
52
51
|
context.report({
|
|
53
52
|
node,
|
|
54
53
|
loc: {
|
|
55
54
|
start: {
|
|
56
|
-
line:
|
|
57
|
-
column:
|
|
55
|
+
line: leftToken.loc.end.line,
|
|
56
|
+
column: leftToken.loc.end.column
|
|
58
57
|
},
|
|
59
58
|
end: {
|
|
60
59
|
line: param.loc.start.line,
|
|
@@ -63,11 +62,11 @@ const genericSpacing = createEslintRule({
|
|
|
63
62
|
},
|
|
64
63
|
messageId: "genericSpacingMismatch",
|
|
65
64
|
*fix(fixer) {
|
|
66
|
-
yield fixer.removeRange([
|
|
65
|
+
yield fixer.removeRange([leftToken.range[1], param.range[0]]);
|
|
67
66
|
}
|
|
68
67
|
});
|
|
69
68
|
}
|
|
70
|
-
if (
|
|
69
|
+
if (hasSpacingAfterParam && param.loc.end.line === node.loc.end.line) {
|
|
71
70
|
context.report({
|
|
72
71
|
loc: {
|
|
73
72
|
start: {
|
|
@@ -75,59 +74,60 @@ const genericSpacing = createEslintRule({
|
|
|
75
74
|
column: param.loc.end.column
|
|
76
75
|
},
|
|
77
76
|
end: {
|
|
78
|
-
line:
|
|
79
|
-
column:
|
|
77
|
+
line: rightToken.loc.start.line,
|
|
78
|
+
column: rightToken.loc.start.column
|
|
80
79
|
}
|
|
81
80
|
},
|
|
82
81
|
node,
|
|
83
82
|
messageId: "genericSpacingMismatch",
|
|
84
83
|
*fix(fixer) {
|
|
85
|
-
yield fixer.
|
|
84
|
+
yield fixer.removeRange([param.range[1], rightToken.range[0]]);
|
|
86
85
|
}
|
|
87
86
|
});
|
|
88
87
|
}
|
|
89
|
-
|
|
90
|
-
if (!["TSCallSignatureDeclaration", "ArrowFunctionExpression"].includes(node.parent.type)) {
|
|
91
|
-
const pre = sourceCode.text.slice(0, node.range[0]);
|
|
92
|
-
const preSpace = pre.match(/(\s+)$/)?.[0];
|
|
93
|
-
const post = sourceCode.text.slice(node.range[1]);
|
|
94
|
-
const postBracket = post.match(/^(\s*)\(/)?.[0];
|
|
95
|
-
if (preSpace && preSpace.length && !postBracket) {
|
|
88
|
+
if (!hasSpacingBeforeParam && leftToken.value === ",") {
|
|
96
89
|
context.report({
|
|
97
90
|
node,
|
|
91
|
+
loc: {
|
|
92
|
+
start: {
|
|
93
|
+
line: leftToken.loc.end.line,
|
|
94
|
+
column: leftToken.loc.end.column
|
|
95
|
+
},
|
|
96
|
+
end: {
|
|
97
|
+
line: param.loc.start.line,
|
|
98
|
+
column: param.loc.start.column - 1
|
|
99
|
+
}
|
|
100
|
+
},
|
|
98
101
|
messageId: "genericSpacingMismatch",
|
|
99
102
|
*fix(fixer) {
|
|
100
|
-
yield fixer.
|
|
103
|
+
yield fixer.replaceTextRange([leftToken.range[1], param.range[0]], " ");
|
|
101
104
|
}
|
|
102
105
|
});
|
|
103
106
|
}
|
|
104
|
-
|
|
107
|
+
}
|
|
108
|
+
if (!["TSCallSignatureDeclaration", "ArrowFunctionExpression"].includes(node.parent.type)) {
|
|
109
|
+
const leftToken = sourceCode.getTokenBefore(node);
|
|
110
|
+
const hasSpacingBeforeNode = sourceCode.isSpaceBetween(leftToken, node);
|
|
111
|
+
const lastParam = params[params.length - 1];
|
|
112
|
+
const endBracket = sourceCode.getTokenAfter(lastParam);
|
|
113
|
+
const rightToken = sourceCode.getTokenAfter(endBracket, util__namespace.isOpeningParenToken);
|
|
114
|
+
const hasSpacingAfterParam = sourceCode.isSpaceBetween(endBracket, rightToken);
|
|
115
|
+
if (hasSpacingBeforeNode && node.parent.type !== utils.AST_NODE_TYPES.TSFunctionType) {
|
|
105
116
|
context.report({
|
|
106
117
|
node,
|
|
107
118
|
messageId: "genericSpacingMismatch",
|
|
108
119
|
*fix(fixer) {
|
|
109
|
-
yield fixer.removeRange([
|
|
120
|
+
yield fixer.removeRange([leftToken.range[1], node.range[0]]);
|
|
110
121
|
}
|
|
111
122
|
});
|
|
112
123
|
}
|
|
113
|
-
|
|
114
|
-
for (let i = 1; i < params.length; i++) {
|
|
115
|
-
const prev = params[i - 1];
|
|
116
|
-
const current = params[i];
|
|
117
|
-
const from = prev.range[1];
|
|
118
|
-
const to = current.range[0];
|
|
119
|
-
const span = sourceCode.text.slice(from, to);
|
|
120
|
-
if (span !== ", " && !span.match(/,\n/)) {
|
|
124
|
+
if (hasSpacingAfterParam && node.parent.type === utils.AST_NODE_TYPES.TSFunctionType) {
|
|
121
125
|
context.report({
|
|
122
|
-
|
|
123
|
-
yield fixer.replaceTextRange([from, to], ", ");
|
|
124
|
-
},
|
|
125
|
-
loc: {
|
|
126
|
-
start: prev.loc.end,
|
|
127
|
-
end: current.loc.start
|
|
128
|
-
},
|
|
126
|
+
node,
|
|
129
127
|
messageId: "genericSpacingMismatch",
|
|
130
|
-
|
|
128
|
+
*fix(fixer) {
|
|
129
|
+
yield fixer.removeRange([endBracket.range[1], rightToken.range[0]]);
|
|
130
|
+
}
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
}
|
|
@@ -188,46 +188,25 @@ const genericSpacing = createEslintRule({
|
|
|
188
188
|
const params = node.params;
|
|
189
189
|
for (let i = 0; i < params.length; i++) {
|
|
190
190
|
const param = params[i];
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
191
|
+
const leftToken = sourceCode.getTokenBefore(param);
|
|
192
|
+
const rightToken = sourceCode.getTokenAfter(param);
|
|
193
|
+
const hasSpacingBeforeParam = leftToken.value === "<" ? sourceCode.isSpaceBetween(leftToken, param) : false;
|
|
194
|
+
const hasSpacingAfterParam = rightToken.value === ">" ? sourceCode.isSpaceBetween(param, rightToken) : false;
|
|
195
|
+
if (hasSpacingBeforeParam) {
|
|
197
196
|
context.report({
|
|
198
197
|
node,
|
|
199
|
-
loc: {
|
|
200
|
-
start: {
|
|
201
|
-
line: param.loc.start.line,
|
|
202
|
-
column: param.loc.start.column + 1 - preSpace.length
|
|
203
|
-
},
|
|
204
|
-
end: {
|
|
205
|
-
line: param.loc.start.line,
|
|
206
|
-
column: param.loc.start.column - 1
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
198
|
messageId: "genericSpacingMismatch",
|
|
210
199
|
*fix(fixer) {
|
|
211
|
-
yield fixer.
|
|
200
|
+
yield fixer.removeRange([leftToken.range[1], param.range[0]]);
|
|
212
201
|
}
|
|
213
202
|
});
|
|
214
203
|
}
|
|
215
|
-
if (
|
|
204
|
+
if (hasSpacingAfterParam) {
|
|
216
205
|
context.report({
|
|
217
|
-
loc: {
|
|
218
|
-
start: {
|
|
219
|
-
line: param.loc.end.line,
|
|
220
|
-
column: param.loc.end.column
|
|
221
|
-
},
|
|
222
|
-
end: {
|
|
223
|
-
line: param.loc.end.line,
|
|
224
|
-
column: param.loc.end.column + postSpace.length
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
206
|
node,
|
|
228
207
|
messageId: "genericSpacingMismatch",
|
|
229
208
|
*fix(fixer) {
|
|
230
|
-
yield fixer.
|
|
209
|
+
yield fixer.removeRange([param.range[1], rightToken.range[0]]);
|
|
231
210
|
}
|
|
232
211
|
});
|
|
233
212
|
}
|
|
@@ -348,7 +327,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
348
327
|
const postComma = text.slice(node.range[1]).match(/^(,)/)?.[0];
|
|
349
328
|
const postQuestionMark = text.slice(spaceStartRange + postSpace.length).match(/^(\?)/)?.[0];
|
|
350
329
|
const postOperatorOrAnyBracketOrKeyword = text.slice(spaceStartRange + postSpace.length).match(operatorOrAnyBracketOrKeywordRE)?.[0];
|
|
351
|
-
if (postSpace && postSpace.length && !postEqual && !postComma && !postQuestionMark && !postOperatorOrAnyBracketOrKeyword && node.parent.type !==
|
|
330
|
+
if (postSpace && postSpace.length && !postEqual && !postComma && !postQuestionMark && !postOperatorOrAnyBracketOrKeyword && node.parent.type !== utils.AST_NODE_TYPES.TSInferType) {
|
|
352
331
|
context.report({
|
|
353
332
|
loc: {
|
|
354
333
|
start: {
|
|
@@ -367,7 +346,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
367
346
|
}
|
|
368
347
|
});
|
|
369
348
|
}
|
|
370
|
-
if (node.parent?.parent.type ===
|
|
349
|
+
if (node.parent?.parent.type === utils.AST_NODE_TYPES.FunctionDeclaration) {
|
|
371
350
|
const spaceEndRange = node.range[0] - 1;
|
|
372
351
|
const pre = sourceCode.text.slice(0, spaceEndRange);
|
|
373
352
|
const preSpace = pre.match(/(\s+)$/)?.[0];
|
|
@@ -434,7 +413,7 @@ const noSpacesBeforeParen = createEslintRule({
|
|
|
434
413
|
},
|
|
435
414
|
CallExpression(node) {
|
|
436
415
|
let caller = "property" in node.callee ? node.callee.property : node.callee;
|
|
437
|
-
if (caller.type ===
|
|
416
|
+
if (caller.type === utils.AST_NODE_TYPES.TSInstantiationExpression && "property" in caller.expression) {
|
|
438
417
|
caller = caller.expression.property;
|
|
439
418
|
}
|
|
440
419
|
const callerEnd = reactivity.ref(caller.range[1]);
|
|
@@ -641,7 +620,7 @@ const spaceBeforeFunctionParen = createEslintRule({
|
|
|
641
620
|
rightToken = sourceCode.getFirstToken(node, util__namespace.isOpeningParenToken);
|
|
642
621
|
leftToken = sourceCode.getTokenBefore(rightToken);
|
|
643
622
|
}
|
|
644
|
-
const hasSpacing = sourceCode.
|
|
623
|
+
const hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken);
|
|
645
624
|
if (hasSpacing && functionConfig === "never") {
|
|
646
625
|
context.report({
|
|
647
626
|
node,
|
|
@@ -689,29 +668,30 @@ const semiSpacing = createEslintRule({
|
|
|
689
668
|
defaultOptions: [],
|
|
690
669
|
create: (context) => {
|
|
691
670
|
const sourceCode = context.getSourceCode();
|
|
692
|
-
const text = sourceCode.text;
|
|
693
671
|
return {
|
|
694
672
|
TSTypeAliasDeclaration(node) {
|
|
695
|
-
const
|
|
696
|
-
const
|
|
697
|
-
if (
|
|
698
|
-
|
|
699
|
-
|
|
673
|
+
const leftToken = node.typeAnnotation;
|
|
674
|
+
const rightToken = sourceCode.getTokenAfter(node.typeAnnotation);
|
|
675
|
+
if (rightToken.type !== utils.AST_TOKEN_TYPES.Punctuator) {
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
const hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken);
|
|
679
|
+
if (hasSpacing) {
|
|
700
680
|
context.report({
|
|
701
681
|
loc: {
|
|
702
682
|
start: {
|
|
703
|
-
line:
|
|
704
|
-
column:
|
|
683
|
+
line: leftToken.loc.end.line,
|
|
684
|
+
column: leftToken.loc.end.column
|
|
705
685
|
},
|
|
706
686
|
end: {
|
|
707
|
-
line:
|
|
708
|
-
column:
|
|
687
|
+
line: rightToken.loc.start.line,
|
|
688
|
+
column: rightToken.loc.start.column
|
|
709
689
|
}
|
|
710
690
|
},
|
|
711
691
|
node,
|
|
712
692
|
messageId: "noSpaceBeforeSemi",
|
|
713
693
|
*fix(fixer) {
|
|
714
|
-
yield fixer.removeRange([
|
|
694
|
+
yield fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
|
|
715
695
|
}
|
|
716
696
|
});
|
|
717
697
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ESLintUtils, AST_NODE_TYPES } from '@typescript-eslint/utils';
|
|
2
|
-
import { ref, computed } from '@vue/reactivity';
|
|
1
|
+
import { ESLintUtils, AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils';
|
|
3
2
|
import * as util from '@typescript-eslint/utils/dist/ast-utils';
|
|
3
|
+
import { ref, computed } from '@vue/reactivity';
|
|
4
4
|
|
|
5
5
|
const createEslintRule = ESLintUtils.RuleCreator((ruleName) => ruleName);
|
|
6
6
|
|
|
@@ -28,18 +28,17 @@ const genericSpacing = createEslintRule({
|
|
|
28
28
|
const params = node.params;
|
|
29
29
|
for (let i = 0; i < params.length; i++) {
|
|
30
30
|
const param = params[i];
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
31
|
+
const leftToken = sourceCode.getTokenBefore(param);
|
|
32
|
+
const rightToken = sourceCode.getTokenAfter(param);
|
|
33
|
+
const hasSpacingBeforeParam = sourceCode.isSpaceBetween(leftToken, param);
|
|
34
|
+
const hasSpacingAfterParam = sourceCode.isSpaceBetween(param, rightToken);
|
|
35
|
+
if (hasSpacingBeforeParam && param.loc.start.line === node.loc.start.line && leftToken.value === "<") {
|
|
37
36
|
context.report({
|
|
38
37
|
node,
|
|
39
38
|
loc: {
|
|
40
39
|
start: {
|
|
41
|
-
line:
|
|
42
|
-
column:
|
|
40
|
+
line: leftToken.loc.end.line,
|
|
41
|
+
column: leftToken.loc.end.column
|
|
43
42
|
},
|
|
44
43
|
end: {
|
|
45
44
|
line: param.loc.start.line,
|
|
@@ -48,11 +47,11 @@ const genericSpacing = createEslintRule({
|
|
|
48
47
|
},
|
|
49
48
|
messageId: "genericSpacingMismatch",
|
|
50
49
|
*fix(fixer) {
|
|
51
|
-
yield fixer.removeRange([
|
|
50
|
+
yield fixer.removeRange([leftToken.range[1], param.range[0]]);
|
|
52
51
|
}
|
|
53
52
|
});
|
|
54
53
|
}
|
|
55
|
-
if (
|
|
54
|
+
if (hasSpacingAfterParam && param.loc.end.line === node.loc.end.line) {
|
|
56
55
|
context.report({
|
|
57
56
|
loc: {
|
|
58
57
|
start: {
|
|
@@ -60,59 +59,60 @@ const genericSpacing = createEslintRule({
|
|
|
60
59
|
column: param.loc.end.column
|
|
61
60
|
},
|
|
62
61
|
end: {
|
|
63
|
-
line:
|
|
64
|
-
column:
|
|
62
|
+
line: rightToken.loc.start.line,
|
|
63
|
+
column: rightToken.loc.start.column
|
|
65
64
|
}
|
|
66
65
|
},
|
|
67
66
|
node,
|
|
68
67
|
messageId: "genericSpacingMismatch",
|
|
69
68
|
*fix(fixer) {
|
|
70
|
-
yield fixer.
|
|
69
|
+
yield fixer.removeRange([param.range[1], rightToken.range[0]]);
|
|
71
70
|
}
|
|
72
71
|
});
|
|
73
72
|
}
|
|
74
|
-
|
|
75
|
-
if (!["TSCallSignatureDeclaration", "ArrowFunctionExpression"].includes(node.parent.type)) {
|
|
76
|
-
const pre = sourceCode.text.slice(0, node.range[0]);
|
|
77
|
-
const preSpace = pre.match(/(\s+)$/)?.[0];
|
|
78
|
-
const post = sourceCode.text.slice(node.range[1]);
|
|
79
|
-
const postBracket = post.match(/^(\s*)\(/)?.[0];
|
|
80
|
-
if (preSpace && preSpace.length && !postBracket) {
|
|
73
|
+
if (!hasSpacingBeforeParam && leftToken.value === ",") {
|
|
81
74
|
context.report({
|
|
82
75
|
node,
|
|
76
|
+
loc: {
|
|
77
|
+
start: {
|
|
78
|
+
line: leftToken.loc.end.line,
|
|
79
|
+
column: leftToken.loc.end.column
|
|
80
|
+
},
|
|
81
|
+
end: {
|
|
82
|
+
line: param.loc.start.line,
|
|
83
|
+
column: param.loc.start.column - 1
|
|
84
|
+
}
|
|
85
|
+
},
|
|
83
86
|
messageId: "genericSpacingMismatch",
|
|
84
87
|
*fix(fixer) {
|
|
85
|
-
yield fixer.
|
|
88
|
+
yield fixer.replaceTextRange([leftToken.range[1], param.range[0]], " ");
|
|
86
89
|
}
|
|
87
90
|
});
|
|
88
91
|
}
|
|
89
|
-
|
|
92
|
+
}
|
|
93
|
+
if (!["TSCallSignatureDeclaration", "ArrowFunctionExpression"].includes(node.parent.type)) {
|
|
94
|
+
const leftToken = sourceCode.getTokenBefore(node);
|
|
95
|
+
const hasSpacingBeforeNode = sourceCode.isSpaceBetween(leftToken, node);
|
|
96
|
+
const lastParam = params[params.length - 1];
|
|
97
|
+
const endBracket = sourceCode.getTokenAfter(lastParam);
|
|
98
|
+
const rightToken = sourceCode.getTokenAfter(endBracket, util.isOpeningParenToken);
|
|
99
|
+
const hasSpacingAfterParam = sourceCode.isSpaceBetween(endBracket, rightToken);
|
|
100
|
+
if (hasSpacingBeforeNode && node.parent.type !== AST_NODE_TYPES.TSFunctionType) {
|
|
90
101
|
context.report({
|
|
91
102
|
node,
|
|
92
103
|
messageId: "genericSpacingMismatch",
|
|
93
104
|
*fix(fixer) {
|
|
94
|
-
yield fixer.removeRange([
|
|
105
|
+
yield fixer.removeRange([leftToken.range[1], node.range[0]]);
|
|
95
106
|
}
|
|
96
107
|
});
|
|
97
108
|
}
|
|
98
|
-
|
|
99
|
-
for (let i = 1; i < params.length; i++) {
|
|
100
|
-
const prev = params[i - 1];
|
|
101
|
-
const current = params[i];
|
|
102
|
-
const from = prev.range[1];
|
|
103
|
-
const to = current.range[0];
|
|
104
|
-
const span = sourceCode.text.slice(from, to);
|
|
105
|
-
if (span !== ", " && !span.match(/,\n/)) {
|
|
109
|
+
if (hasSpacingAfterParam && node.parent.type === AST_NODE_TYPES.TSFunctionType) {
|
|
106
110
|
context.report({
|
|
107
|
-
|
|
108
|
-
yield fixer.replaceTextRange([from, to], ", ");
|
|
109
|
-
},
|
|
110
|
-
loc: {
|
|
111
|
-
start: prev.loc.end,
|
|
112
|
-
end: current.loc.start
|
|
113
|
-
},
|
|
111
|
+
node,
|
|
114
112
|
messageId: "genericSpacingMismatch",
|
|
115
|
-
|
|
113
|
+
*fix(fixer) {
|
|
114
|
+
yield fixer.removeRange([endBracket.range[1], rightToken.range[0]]);
|
|
115
|
+
}
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -173,46 +173,25 @@ const genericSpacing = createEslintRule({
|
|
|
173
173
|
const params = node.params;
|
|
174
174
|
for (let i = 0; i < params.length; i++) {
|
|
175
175
|
const param = params[i];
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
const
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
176
|
+
const leftToken = sourceCode.getTokenBefore(param);
|
|
177
|
+
const rightToken = sourceCode.getTokenAfter(param);
|
|
178
|
+
const hasSpacingBeforeParam = leftToken.value === "<" ? sourceCode.isSpaceBetween(leftToken, param) : false;
|
|
179
|
+
const hasSpacingAfterParam = rightToken.value === ">" ? sourceCode.isSpaceBetween(param, rightToken) : false;
|
|
180
|
+
if (hasSpacingBeforeParam) {
|
|
182
181
|
context.report({
|
|
183
182
|
node,
|
|
184
|
-
loc: {
|
|
185
|
-
start: {
|
|
186
|
-
line: param.loc.start.line,
|
|
187
|
-
column: param.loc.start.column + 1 - preSpace.length
|
|
188
|
-
},
|
|
189
|
-
end: {
|
|
190
|
-
line: param.loc.start.line,
|
|
191
|
-
column: param.loc.start.column - 1
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
183
|
messageId: "genericSpacingMismatch",
|
|
195
184
|
*fix(fixer) {
|
|
196
|
-
yield fixer.
|
|
185
|
+
yield fixer.removeRange([leftToken.range[1], param.range[0]]);
|
|
197
186
|
}
|
|
198
187
|
});
|
|
199
188
|
}
|
|
200
|
-
if (
|
|
189
|
+
if (hasSpacingAfterParam) {
|
|
201
190
|
context.report({
|
|
202
|
-
loc: {
|
|
203
|
-
start: {
|
|
204
|
-
line: param.loc.end.line,
|
|
205
|
-
column: param.loc.end.column
|
|
206
|
-
},
|
|
207
|
-
end: {
|
|
208
|
-
line: param.loc.end.line,
|
|
209
|
-
column: param.loc.end.column + postSpace.length
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
191
|
node,
|
|
213
192
|
messageId: "genericSpacingMismatch",
|
|
214
193
|
*fix(fixer) {
|
|
215
|
-
yield fixer.
|
|
194
|
+
yield fixer.removeRange([param.range[1], rightToken.range[0]]);
|
|
216
195
|
}
|
|
217
196
|
});
|
|
218
197
|
}
|
|
@@ -333,7 +312,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
333
312
|
const postComma = text.slice(node.range[1]).match(/^(,)/)?.[0];
|
|
334
313
|
const postQuestionMark = text.slice(spaceStartRange + postSpace.length).match(/^(\?)/)?.[0];
|
|
335
314
|
const postOperatorOrAnyBracketOrKeyword = text.slice(spaceStartRange + postSpace.length).match(operatorOrAnyBracketOrKeywordRE)?.[0];
|
|
336
|
-
if (postSpace && postSpace.length && !postEqual && !postComma && !postQuestionMark && !postOperatorOrAnyBracketOrKeyword && node.parent.type !==
|
|
315
|
+
if (postSpace && postSpace.length && !postEqual && !postComma && !postQuestionMark && !postOperatorOrAnyBracketOrKeyword && node.parent.type !== AST_NODE_TYPES.TSInferType) {
|
|
337
316
|
context.report({
|
|
338
317
|
loc: {
|
|
339
318
|
start: {
|
|
@@ -352,7 +331,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
352
331
|
}
|
|
353
332
|
});
|
|
354
333
|
}
|
|
355
|
-
if (node.parent?.parent.type ===
|
|
334
|
+
if (node.parent?.parent.type === AST_NODE_TYPES.FunctionDeclaration) {
|
|
356
335
|
const spaceEndRange = node.range[0] - 1;
|
|
357
336
|
const pre = sourceCode.text.slice(0, spaceEndRange);
|
|
358
337
|
const preSpace = pre.match(/(\s+)$/)?.[0];
|
|
@@ -419,7 +398,7 @@ const noSpacesBeforeParen = createEslintRule({
|
|
|
419
398
|
},
|
|
420
399
|
CallExpression(node) {
|
|
421
400
|
let caller = "property" in node.callee ? node.callee.property : node.callee;
|
|
422
|
-
if (caller.type ===
|
|
401
|
+
if (caller.type === AST_NODE_TYPES.TSInstantiationExpression && "property" in caller.expression) {
|
|
423
402
|
caller = caller.expression.property;
|
|
424
403
|
}
|
|
425
404
|
const callerEnd = ref(caller.range[1]);
|
|
@@ -626,7 +605,7 @@ const spaceBeforeFunctionParen = createEslintRule({
|
|
|
626
605
|
rightToken = sourceCode.getFirstToken(node, util.isOpeningParenToken);
|
|
627
606
|
leftToken = sourceCode.getTokenBefore(rightToken);
|
|
628
607
|
}
|
|
629
|
-
const hasSpacing = sourceCode.
|
|
608
|
+
const hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken);
|
|
630
609
|
if (hasSpacing && functionConfig === "never") {
|
|
631
610
|
context.report({
|
|
632
611
|
node,
|
|
@@ -674,29 +653,30 @@ const semiSpacing = createEslintRule({
|
|
|
674
653
|
defaultOptions: [],
|
|
675
654
|
create: (context) => {
|
|
676
655
|
const sourceCode = context.getSourceCode();
|
|
677
|
-
const text = sourceCode.text;
|
|
678
656
|
return {
|
|
679
657
|
TSTypeAliasDeclaration(node) {
|
|
680
|
-
const
|
|
681
|
-
const
|
|
682
|
-
if (
|
|
683
|
-
|
|
684
|
-
|
|
658
|
+
const leftToken = node.typeAnnotation;
|
|
659
|
+
const rightToken = sourceCode.getTokenAfter(node.typeAnnotation);
|
|
660
|
+
if (rightToken.type !== AST_TOKEN_TYPES.Punctuator) {
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
const hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken);
|
|
664
|
+
if (hasSpacing) {
|
|
685
665
|
context.report({
|
|
686
666
|
loc: {
|
|
687
667
|
start: {
|
|
688
|
-
line:
|
|
689
|
-
column:
|
|
668
|
+
line: leftToken.loc.end.line,
|
|
669
|
+
column: leftToken.loc.end.column
|
|
690
670
|
},
|
|
691
671
|
end: {
|
|
692
|
-
line:
|
|
693
|
-
column:
|
|
672
|
+
line: rightToken.loc.start.line,
|
|
673
|
+
column: rightToken.loc.start.column
|
|
694
674
|
}
|
|
695
675
|
},
|
|
696
676
|
node,
|
|
697
677
|
messageId: "noSpaceBeforeSemi",
|
|
698
678
|
*fix(fixer) {
|
|
699
|
-
yield fixer.removeRange([
|
|
679
|
+
yield fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
|
|
700
680
|
}
|
|
701
681
|
});
|
|
702
682
|
}
|