@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 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 pre = sourceCode.text.slice(0, param.range[0]);
47
- const preSpace = pre.match(/(\s+)$/)?.[0];
48
- const preComma = pre.match(/(,)\s+$/)?.[0];
49
- const post = sourceCode.text.slice(param.range[1]);
50
- const postSpace = post.match(/^(\s*)/)?.[0];
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: param.loc.start.line,
57
- column: param.loc.start.column + 1 - preSpace.length
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([param.range[0] - preSpace.length, param.range[0]]);
65
+ yield fixer.removeRange([leftToken.range[1], param.range[0]]);
67
66
  }
68
67
  });
69
68
  }
70
- if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
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: param.loc.end.line,
79
- column: param.loc.end.column + postSpace.length
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.replaceTextRange([param.range[1], param.range[1] + postSpace.length], "");
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.removeRange([node.range[0] - preSpace.length, node.range[0]]);
103
+ yield fixer.replaceTextRange([leftToken.range[1], param.range[0]], " ");
101
104
  }
102
105
  });
103
106
  }
104
- if (postBracket && postBracket.length > 1) {
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([node.range[1], node.range[1] + postBracket.length - 1]);
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
- *fix(fixer) {
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
- node
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 pre = sourceCode.text.slice(0, param.range[0]);
192
- const preSpace = pre.match(/(\s+)$/)?.[0];
193
- const preComma = pre.match(/(,)\s+$/)?.[0];
194
- const post = sourceCode.text.slice(param.range[1]);
195
- const postSpace = post.match(/^(\s*)/)?.[0];
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.replaceTextRange([param.range[0] - preSpace.length, param.range[0]], "");
200
+ yield fixer.removeRange([leftToken.range[1], param.range[0]]);
212
201
  }
213
202
  });
214
203
  }
215
- if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
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.replaceTextRange([param.range[1], param.range[1] + postSpace.length], "");
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 !== "TSInferType") {
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 === "FunctionDeclaration") {
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 === "TSInstantiationExpression" && "property" in caller.expression) {
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.isSpaceBetweenTokens(leftToken, rightToken);
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 sourceLine = text.slice(node.range[0], node.range[1]);
696
- const preSemiSpace = sourceLine.match(/(\s+);$/)?.[0];
697
- if (preSemiSpace) {
698
- const spaceStart = node.range[0] + sourceLine.length - preSemiSpace.length;
699
- const spaceEnd = node.range[0] + sourceLine.length - 1;
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: node.loc.start.line,
704
- column: node.loc.start.column + sourceLine.length - preSemiSpace.length
683
+ line: leftToken.loc.end.line,
684
+ column: leftToken.loc.end.column
705
685
  },
706
686
  end: {
707
- line: node.loc.start.line,
708
- column: node.loc.start.column + sourceLine.length - 1
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([spaceStart, spaceEnd]);
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 pre = sourceCode.text.slice(0, param.range[0]);
32
- const preSpace = pre.match(/(\s+)$/)?.[0];
33
- const preComma = pre.match(/(,)\s+$/)?.[0];
34
- const post = sourceCode.text.slice(param.range[1]);
35
- const postSpace = post.match(/^(\s*)/)?.[0];
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: param.loc.start.line,
42
- column: param.loc.start.column + 1 - preSpace.length
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([param.range[0] - preSpace.length, param.range[0]]);
50
+ yield fixer.removeRange([leftToken.range[1], param.range[0]]);
52
51
  }
53
52
  });
54
53
  }
55
- if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
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: param.loc.end.line,
64
- column: param.loc.end.column + postSpace.length
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.replaceTextRange([param.range[1], param.range[1] + postSpace.length], "");
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.removeRange([node.range[0] - preSpace.length, node.range[0]]);
88
+ yield fixer.replaceTextRange([leftToken.range[1], param.range[0]], " ");
86
89
  }
87
90
  });
88
91
  }
89
- if (postBracket && postBracket.length > 1) {
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([node.range[1], node.range[1] + postBracket.length - 1]);
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
- *fix(fixer) {
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
- node
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 pre = sourceCode.text.slice(0, param.range[0]);
177
- const preSpace = pre.match(/(\s+)$/)?.[0];
178
- const preComma = pre.match(/(,)\s+$/)?.[0];
179
- const post = sourceCode.text.slice(param.range[1]);
180
- const postSpace = post.match(/^(\s*)/)?.[0];
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.replaceTextRange([param.range[0] - preSpace.length, param.range[0]], "");
185
+ yield fixer.removeRange([leftToken.range[1], param.range[0]]);
197
186
  }
198
187
  });
199
188
  }
200
- if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
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.replaceTextRange([param.range[1], param.range[1] + postSpace.length], "");
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 !== "TSInferType") {
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 === "FunctionDeclaration") {
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 === "TSInstantiationExpression" && "property" in caller.expression) {
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.isSpaceBetweenTokens(leftToken, rightToken);
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 sourceLine = text.slice(node.range[0], node.range[1]);
681
- const preSemiSpace = sourceLine.match(/(\s+);$/)?.[0];
682
- if (preSemiSpace) {
683
- const spaceStart = node.range[0] + sourceLine.length - preSemiSpace.length;
684
- const spaceEnd = node.range[0] + sourceLine.length - 1;
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: node.loc.start.line,
689
- column: node.loc.start.column + sourceLine.length - preSemiSpace.length
668
+ line: leftToken.loc.end.line,
669
+ column: leftToken.loc.end.column
690
670
  },
691
671
  end: {
692
- line: node.loc.start.line,
693
- column: node.loc.start.column + sourceLine.length - 1
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([spaceStart, spaceEnd]);
679
+ yield fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
700
680
  }
701
681
  });
702
682
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@so1ve/eslint-plugin",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
5
5
  "contributors": [
6
6
  {