@so1ve/eslint-plugin 0.37.0 → 0.38.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 +36 -16
- package/dist/index.mjs +36 -16
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -8,12 +8,12 @@ const RULE_NAME$5 = "generic-spacing";
|
|
|
8
8
|
const genericSpacing = createEslintRule({
|
|
9
9
|
name: RULE_NAME$5,
|
|
10
10
|
meta: {
|
|
11
|
-
type: "
|
|
11
|
+
type: "layout",
|
|
12
12
|
docs: {
|
|
13
13
|
description: "Spaces around generic type parameters",
|
|
14
14
|
recommended: "error"
|
|
15
15
|
},
|
|
16
|
-
fixable: "
|
|
16
|
+
fixable: "whitespace",
|
|
17
17
|
schema: [],
|
|
18
18
|
messages: {
|
|
19
19
|
genericSpacingMismatch: "Generic spaces mismatch"
|
|
@@ -22,6 +22,7 @@ const genericSpacing = createEslintRule({
|
|
|
22
22
|
defaultOptions: [],
|
|
23
23
|
create: (context) => {
|
|
24
24
|
const sourceCode = context.getSourceCode();
|
|
25
|
+
const text = sourceCode.getText();
|
|
25
26
|
return {
|
|
26
27
|
TSTypeParameterDeclaration: (node) => {
|
|
27
28
|
const params = node.params;
|
|
@@ -32,7 +33,27 @@ const genericSpacing = createEslintRule({
|
|
|
32
33
|
const preComma = pre.match(/(,)\s+$/)?.[0];
|
|
33
34
|
const post = sourceCode.text.slice(param.range[1]);
|
|
34
35
|
const postSpace = post.match(/^(\s*)/)?.[0];
|
|
35
|
-
|
|
36
|
+
const expectedIndent = node.parent.loc.start.column + 2;
|
|
37
|
+
if (param.loc.start.column !== expectedIndent && param.loc.start.line !== node.parent.loc.start.line) {
|
|
38
|
+
context.report({
|
|
39
|
+
node,
|
|
40
|
+
loc: {
|
|
41
|
+
start: {
|
|
42
|
+
line: param.loc.start.line,
|
|
43
|
+
column: 0
|
|
44
|
+
},
|
|
45
|
+
end: {
|
|
46
|
+
line: param.loc.start.line,
|
|
47
|
+
column: param.loc.start.column - 1
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
messageId: "genericSpacingMismatch",
|
|
51
|
+
*fix(fixer) {
|
|
52
|
+
yield fixer.replaceTextRange([param.range[0] + 2 - preSpace.length, param.range[0]], " ".repeat(node.parent.loc.start.column + 2));
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
36
57
|
context.report({
|
|
37
58
|
node,
|
|
38
59
|
loc: {
|
|
@@ -47,11 +68,11 @@ const genericSpacing = createEslintRule({
|
|
|
47
68
|
},
|
|
48
69
|
messageId: "genericSpacingMismatch",
|
|
49
70
|
*fix(fixer) {
|
|
50
|
-
yield fixer.
|
|
71
|
+
yield fixer.removeRange([param.range[0] - preSpace.length, param.range[0]]);
|
|
51
72
|
}
|
|
52
73
|
});
|
|
53
74
|
}
|
|
54
|
-
if (postSpace && postSpace.length) {
|
|
75
|
+
if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
|
|
55
76
|
context.report({
|
|
56
77
|
loc: {
|
|
57
78
|
start: {
|
|
@@ -81,7 +102,7 @@ const genericSpacing = createEslintRule({
|
|
|
81
102
|
node,
|
|
82
103
|
messageId: "genericSpacingMismatch",
|
|
83
104
|
*fix(fixer) {
|
|
84
|
-
yield fixer.
|
|
105
|
+
yield fixer.removeRange([node.range[0] - preSpace.length, node.range[0]]);
|
|
85
106
|
}
|
|
86
107
|
});
|
|
87
108
|
}
|
|
@@ -90,7 +111,7 @@ const genericSpacing = createEslintRule({
|
|
|
90
111
|
node,
|
|
91
112
|
messageId: "genericSpacingMismatch",
|
|
92
113
|
*fix(fixer) {
|
|
93
|
-
yield fixer.
|
|
114
|
+
yield fixer.removeRange([node.range[1], node.range[1] + postBracket.length - 1]);
|
|
94
115
|
}
|
|
95
116
|
});
|
|
96
117
|
}
|
|
@@ -219,7 +240,6 @@ const genericSpacing = createEslintRule({
|
|
|
219
240
|
if (!node.extends || !node.typeParameters) {
|
|
220
241
|
return;
|
|
221
242
|
}
|
|
222
|
-
const text = sourceCode.getText();
|
|
223
243
|
const { typeParameters } = node;
|
|
224
244
|
const extendsKeywordStart = typeParameters.range[1];
|
|
225
245
|
const extendsKeywordEnd = node.extends[0].range[0];
|
|
@@ -302,12 +322,12 @@ const RULE_NAME$3 = "space-between-generic-and-paren";
|
|
|
302
322
|
const spaceBetweenGenericAndParen = createEslintRule({
|
|
303
323
|
name: RULE_NAME$3,
|
|
304
324
|
meta: {
|
|
305
|
-
type: "
|
|
325
|
+
type: "layout",
|
|
306
326
|
docs: {
|
|
307
327
|
description: "Spaces between generic type parameters and paren",
|
|
308
328
|
recommended: "error"
|
|
309
329
|
},
|
|
310
|
-
fixable: "
|
|
330
|
+
fixable: "whitespace",
|
|
311
331
|
schema: [],
|
|
312
332
|
messages: {
|
|
313
333
|
noSpaceBetweenGenericAndParen: "Expected no space between generic type parameters and paren"
|
|
@@ -378,12 +398,12 @@ const RULE_NAME$2 = "space-in-empty-block";
|
|
|
378
398
|
const spaceInEmptyBlock = createEslintRule({
|
|
379
399
|
name: RULE_NAME$2,
|
|
380
400
|
meta: {
|
|
381
|
-
type: "
|
|
401
|
+
type: "layout",
|
|
382
402
|
docs: {
|
|
383
403
|
description: "Disallow spaces in empty block",
|
|
384
404
|
recommended: "error"
|
|
385
405
|
},
|
|
386
|
-
fixable: "
|
|
406
|
+
fixable: "whitespace",
|
|
387
407
|
schema: [],
|
|
388
408
|
messages: {
|
|
389
409
|
noSpaceInEmptyBlock: "Expected no space in empty block"
|
|
@@ -394,7 +414,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
394
414
|
const sourceCode = context.getSourceCode();
|
|
395
415
|
return {
|
|
396
416
|
BlockStatement: (node) => {
|
|
397
|
-
if (node.body.length) {
|
|
417
|
+
if (node.body.length || sourceCode.getCommentsInside(node).length) {
|
|
398
418
|
return;
|
|
399
419
|
}
|
|
400
420
|
const spaceStartRange = node.range[1] - 2;
|
|
@@ -445,12 +465,12 @@ const RULE_NAME$1 = "semi-spacing";
|
|
|
445
465
|
const semiSpacing = createEslintRule({
|
|
446
466
|
name: RULE_NAME$1,
|
|
447
467
|
meta: {
|
|
448
|
-
type: "
|
|
468
|
+
type: "layout",
|
|
449
469
|
docs: {
|
|
450
470
|
description: "Semicolon spacing",
|
|
451
471
|
recommended: "error"
|
|
452
472
|
},
|
|
453
|
-
fixable: "
|
|
473
|
+
fixable: "whitespace",
|
|
454
474
|
schema: [],
|
|
455
475
|
messages: {
|
|
456
476
|
noSpaceBeforeSemi: "Expected no space before semicolon"
|
|
@@ -494,7 +514,7 @@ const RULE_NAME = "no-inline-type-import";
|
|
|
494
514
|
const noInlineTypeImport = createEslintRule({
|
|
495
515
|
name: RULE_NAME,
|
|
496
516
|
meta: {
|
|
497
|
-
type: "
|
|
517
|
+
type: "layout",
|
|
498
518
|
docs: {
|
|
499
519
|
description: "Disallow inline type import",
|
|
500
520
|
recommended: "error"
|
package/dist/index.mjs
CHANGED
|
@@ -6,12 +6,12 @@ const RULE_NAME$5 = "generic-spacing";
|
|
|
6
6
|
const genericSpacing = createEslintRule({
|
|
7
7
|
name: RULE_NAME$5,
|
|
8
8
|
meta: {
|
|
9
|
-
type: "
|
|
9
|
+
type: "layout",
|
|
10
10
|
docs: {
|
|
11
11
|
description: "Spaces around generic type parameters",
|
|
12
12
|
recommended: "error"
|
|
13
13
|
},
|
|
14
|
-
fixable: "
|
|
14
|
+
fixable: "whitespace",
|
|
15
15
|
schema: [],
|
|
16
16
|
messages: {
|
|
17
17
|
genericSpacingMismatch: "Generic spaces mismatch"
|
|
@@ -20,6 +20,7 @@ const genericSpacing = createEslintRule({
|
|
|
20
20
|
defaultOptions: [],
|
|
21
21
|
create: (context) => {
|
|
22
22
|
const sourceCode = context.getSourceCode();
|
|
23
|
+
const text = sourceCode.getText();
|
|
23
24
|
return {
|
|
24
25
|
TSTypeParameterDeclaration: (node) => {
|
|
25
26
|
const params = node.params;
|
|
@@ -30,7 +31,27 @@ const genericSpacing = createEslintRule({
|
|
|
30
31
|
const preComma = pre.match(/(,)\s+$/)?.[0];
|
|
31
32
|
const post = sourceCode.text.slice(param.range[1]);
|
|
32
33
|
const postSpace = post.match(/^(\s*)/)?.[0];
|
|
33
|
-
|
|
34
|
+
const expectedIndent = node.parent.loc.start.column + 2;
|
|
35
|
+
if (param.loc.start.column !== expectedIndent && param.loc.start.line !== node.parent.loc.start.line) {
|
|
36
|
+
context.report({
|
|
37
|
+
node,
|
|
38
|
+
loc: {
|
|
39
|
+
start: {
|
|
40
|
+
line: param.loc.start.line,
|
|
41
|
+
column: 0
|
|
42
|
+
},
|
|
43
|
+
end: {
|
|
44
|
+
line: param.loc.start.line,
|
|
45
|
+
column: param.loc.start.column - 1
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
messageId: "genericSpacingMismatch",
|
|
49
|
+
*fix(fixer) {
|
|
50
|
+
yield fixer.replaceTextRange([param.range[0] + 2 - preSpace.length, param.range[0]], " ".repeat(node.parent.loc.start.column + 2));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (preSpace && preSpace.length && !preComma && param.loc.start.line === node.loc.start.line) {
|
|
34
55
|
context.report({
|
|
35
56
|
node,
|
|
36
57
|
loc: {
|
|
@@ -45,11 +66,11 @@ const genericSpacing = createEslintRule({
|
|
|
45
66
|
},
|
|
46
67
|
messageId: "genericSpacingMismatch",
|
|
47
68
|
*fix(fixer) {
|
|
48
|
-
yield fixer.
|
|
69
|
+
yield fixer.removeRange([param.range[0] - preSpace.length, param.range[0]]);
|
|
49
70
|
}
|
|
50
71
|
});
|
|
51
72
|
}
|
|
52
|
-
if (postSpace && postSpace.length) {
|
|
73
|
+
if (postSpace && postSpace.length && param.loc.end.line === node.loc.end.line) {
|
|
53
74
|
context.report({
|
|
54
75
|
loc: {
|
|
55
76
|
start: {
|
|
@@ -79,7 +100,7 @@ const genericSpacing = createEslintRule({
|
|
|
79
100
|
node,
|
|
80
101
|
messageId: "genericSpacingMismatch",
|
|
81
102
|
*fix(fixer) {
|
|
82
|
-
yield fixer.
|
|
103
|
+
yield fixer.removeRange([node.range[0] - preSpace.length, node.range[0]]);
|
|
83
104
|
}
|
|
84
105
|
});
|
|
85
106
|
}
|
|
@@ -88,7 +109,7 @@ const genericSpacing = createEslintRule({
|
|
|
88
109
|
node,
|
|
89
110
|
messageId: "genericSpacingMismatch",
|
|
90
111
|
*fix(fixer) {
|
|
91
|
-
yield fixer.
|
|
112
|
+
yield fixer.removeRange([node.range[1], node.range[1] + postBracket.length - 1]);
|
|
92
113
|
}
|
|
93
114
|
});
|
|
94
115
|
}
|
|
@@ -217,7 +238,6 @@ const genericSpacing = createEslintRule({
|
|
|
217
238
|
if (!node.extends || !node.typeParameters) {
|
|
218
239
|
return;
|
|
219
240
|
}
|
|
220
|
-
const text = sourceCode.getText();
|
|
221
241
|
const { typeParameters } = node;
|
|
222
242
|
const extendsKeywordStart = typeParameters.range[1];
|
|
223
243
|
const extendsKeywordEnd = node.extends[0].range[0];
|
|
@@ -300,12 +320,12 @@ const RULE_NAME$3 = "space-between-generic-and-paren";
|
|
|
300
320
|
const spaceBetweenGenericAndParen = createEslintRule({
|
|
301
321
|
name: RULE_NAME$3,
|
|
302
322
|
meta: {
|
|
303
|
-
type: "
|
|
323
|
+
type: "layout",
|
|
304
324
|
docs: {
|
|
305
325
|
description: "Spaces between generic type parameters and paren",
|
|
306
326
|
recommended: "error"
|
|
307
327
|
},
|
|
308
|
-
fixable: "
|
|
328
|
+
fixable: "whitespace",
|
|
309
329
|
schema: [],
|
|
310
330
|
messages: {
|
|
311
331
|
noSpaceBetweenGenericAndParen: "Expected no space between generic type parameters and paren"
|
|
@@ -376,12 +396,12 @@ const RULE_NAME$2 = "space-in-empty-block";
|
|
|
376
396
|
const spaceInEmptyBlock = createEslintRule({
|
|
377
397
|
name: RULE_NAME$2,
|
|
378
398
|
meta: {
|
|
379
|
-
type: "
|
|
399
|
+
type: "layout",
|
|
380
400
|
docs: {
|
|
381
401
|
description: "Disallow spaces in empty block",
|
|
382
402
|
recommended: "error"
|
|
383
403
|
},
|
|
384
|
-
fixable: "
|
|
404
|
+
fixable: "whitespace",
|
|
385
405
|
schema: [],
|
|
386
406
|
messages: {
|
|
387
407
|
noSpaceInEmptyBlock: "Expected no space in empty block"
|
|
@@ -392,7 +412,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
392
412
|
const sourceCode = context.getSourceCode();
|
|
393
413
|
return {
|
|
394
414
|
BlockStatement: (node) => {
|
|
395
|
-
if (node.body.length) {
|
|
415
|
+
if (node.body.length || sourceCode.getCommentsInside(node).length) {
|
|
396
416
|
return;
|
|
397
417
|
}
|
|
398
418
|
const spaceStartRange = node.range[1] - 2;
|
|
@@ -443,12 +463,12 @@ const RULE_NAME$1 = "semi-spacing";
|
|
|
443
463
|
const semiSpacing = createEslintRule({
|
|
444
464
|
name: RULE_NAME$1,
|
|
445
465
|
meta: {
|
|
446
|
-
type: "
|
|
466
|
+
type: "layout",
|
|
447
467
|
docs: {
|
|
448
468
|
description: "Semicolon spacing",
|
|
449
469
|
recommended: "error"
|
|
450
470
|
},
|
|
451
|
-
fixable: "
|
|
471
|
+
fixable: "whitespace",
|
|
452
472
|
schema: [],
|
|
453
473
|
messages: {
|
|
454
474
|
noSpaceBeforeSemi: "Expected no space before semicolon"
|
|
@@ -492,7 +512,7 @@ const RULE_NAME = "no-inline-type-import";
|
|
|
492
512
|
const noInlineTypeImport = createEslintRule({
|
|
493
513
|
name: RULE_NAME,
|
|
494
514
|
meta: {
|
|
495
|
-
type: "
|
|
515
|
+
type: "layout",
|
|
496
516
|
docs: {
|
|
497
517
|
description: "Disallow inline type import",
|
|
498
518
|
recommended: "error"
|