@so1ve/eslint-plugin 0.35.5 → 0.36.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 +61 -20
- package/dist/index.d.ts +4 -3
- package/dist/index.mjs +61 -20
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4,9 +4,9 @@ const utils = require('@typescript-eslint/utils');
|
|
|
4
4
|
|
|
5
5
|
const createEslintRule = utils.ESLintUtils.RuleCreator((ruleName) => ruleName);
|
|
6
6
|
|
|
7
|
-
const RULE_NAME$
|
|
7
|
+
const RULE_NAME$5 = "generic-spacing";
|
|
8
8
|
const genericSpacing = createEslintRule({
|
|
9
|
-
name: RULE_NAME$
|
|
9
|
+
name: RULE_NAME$5,
|
|
10
10
|
meta: {
|
|
11
11
|
type: "suggestion",
|
|
12
12
|
docs: {
|
|
@@ -170,9 +170,9 @@ const genericSpacing = createEslintRule({
|
|
|
170
170
|
}
|
|
171
171
|
});
|
|
172
172
|
|
|
173
|
-
const RULE_NAME$
|
|
173
|
+
const RULE_NAME$4 = "import-dedupe";
|
|
174
174
|
const importDedupe = createEslintRule({
|
|
175
|
-
name: RULE_NAME$
|
|
175
|
+
name: RULE_NAME$4,
|
|
176
176
|
meta: {
|
|
177
177
|
type: "problem",
|
|
178
178
|
docs: {
|
|
@@ -220,9 +220,9 @@ const importDedupe = createEslintRule({
|
|
|
220
220
|
}
|
|
221
221
|
});
|
|
222
222
|
|
|
223
|
-
const RULE_NAME$
|
|
223
|
+
const RULE_NAME$3 = "space-between-generic-and-paren";
|
|
224
224
|
const spaceBetweenGenericAndParen = createEslintRule({
|
|
225
|
-
name: RULE_NAME$
|
|
225
|
+
name: RULE_NAME$3,
|
|
226
226
|
meta: {
|
|
227
227
|
type: "suggestion",
|
|
228
228
|
docs: {
|
|
@@ -232,7 +232,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
232
232
|
fixable: "code",
|
|
233
233
|
schema: [],
|
|
234
234
|
messages: {
|
|
235
|
-
|
|
235
|
+
noSpaceBetweenGenericAndParen: "Expected no space between generic type parameters and paren"
|
|
236
236
|
}
|
|
237
237
|
},
|
|
238
238
|
defaultOptions: [],
|
|
@@ -261,7 +261,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
261
261
|
}
|
|
262
262
|
},
|
|
263
263
|
node,
|
|
264
|
-
messageId: "
|
|
264
|
+
messageId: "noSpaceBetweenGenericAndParen",
|
|
265
265
|
*fix(fixer) {
|
|
266
266
|
yield fixer.replaceTextRange([spaceStartRange, spaceStartRange + postSpace.length], "");
|
|
267
267
|
}
|
|
@@ -284,7 +284,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
284
284
|
}
|
|
285
285
|
},
|
|
286
286
|
node,
|
|
287
|
-
messageId: "
|
|
287
|
+
messageId: "noSpaceBetweenGenericAndParen",
|
|
288
288
|
*fix(fixer) {
|
|
289
289
|
yield fixer.replaceTextRange([spaceEndRange - preSpace.length, spaceEndRange], "");
|
|
290
290
|
}
|
|
@@ -296,19 +296,19 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
296
296
|
}
|
|
297
297
|
});
|
|
298
298
|
|
|
299
|
-
const RULE_NAME$
|
|
299
|
+
const RULE_NAME$2 = "space-in-empty-block";
|
|
300
300
|
const spaceInEmptyBlock = createEslintRule({
|
|
301
|
-
name: RULE_NAME$
|
|
301
|
+
name: RULE_NAME$2,
|
|
302
302
|
meta: {
|
|
303
303
|
type: "suggestion",
|
|
304
304
|
docs: {
|
|
305
|
-
description: "
|
|
305
|
+
description: "Disallow spaces in empty block",
|
|
306
306
|
recommended: "error"
|
|
307
307
|
},
|
|
308
308
|
fixable: "code",
|
|
309
309
|
schema: [],
|
|
310
310
|
messages: {
|
|
311
|
-
|
|
311
|
+
noSpaceInEmptyBlock: "Expected no space in empty block"
|
|
312
312
|
}
|
|
313
313
|
},
|
|
314
314
|
defaultOptions: [],
|
|
@@ -331,7 +331,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
331
331
|
column: node.loc.end.column - 1 + postSpace.length
|
|
332
332
|
}
|
|
333
333
|
},
|
|
334
|
-
messageId: "
|
|
334
|
+
messageId: "noSpaceInEmptyBlock",
|
|
335
335
|
*fix(fixer) {
|
|
336
336
|
yield fixer.replaceTextRange([node.range[0] + 1, spaceStartRange + postSpace.length], "");
|
|
337
337
|
}
|
|
@@ -352,7 +352,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
352
352
|
column: node.loc.start.column
|
|
353
353
|
}
|
|
354
354
|
},
|
|
355
|
-
messageId: "
|
|
355
|
+
messageId: "noSpaceInEmptyBlock",
|
|
356
356
|
*fix(fixer) {
|
|
357
357
|
yield fixer.replaceTextRange([spaceEndRange - preSpace.length, spaceEndRange], "");
|
|
358
358
|
}
|
|
@@ -363,9 +363,9 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
363
363
|
}
|
|
364
364
|
});
|
|
365
365
|
|
|
366
|
-
const RULE_NAME = "semi-spacing";
|
|
366
|
+
const RULE_NAME$1 = "semi-spacing";
|
|
367
367
|
const semiSpacing = createEslintRule({
|
|
368
|
-
name: RULE_NAME,
|
|
368
|
+
name: RULE_NAME$1,
|
|
369
369
|
meta: {
|
|
370
370
|
type: "suggestion",
|
|
371
371
|
docs: {
|
|
@@ -375,7 +375,7 @@ const semiSpacing = createEslintRule({
|
|
|
375
375
|
fixable: "code",
|
|
376
376
|
schema: [],
|
|
377
377
|
messages: {
|
|
378
|
-
|
|
378
|
+
noSpaceBeforeSemi: "Expected no space before semicolon"
|
|
379
379
|
}
|
|
380
380
|
},
|
|
381
381
|
defaultOptions: [],
|
|
@@ -401,7 +401,7 @@ const semiSpacing = createEslintRule({
|
|
|
401
401
|
}
|
|
402
402
|
},
|
|
403
403
|
node,
|
|
404
|
-
messageId: "
|
|
404
|
+
messageId: "noSpaceBeforeSemi",
|
|
405
405
|
*fix(fixer) {
|
|
406
406
|
yield fixer.removeRange([spaceStart, spaceEnd]);
|
|
407
407
|
}
|
|
@@ -412,13 +412,54 @@ const semiSpacing = createEslintRule({
|
|
|
412
412
|
}
|
|
413
413
|
});
|
|
414
414
|
|
|
415
|
+
const RULE_NAME = "no-inline-type-import";
|
|
416
|
+
const noInlineTypeImport = createEslintRule({
|
|
417
|
+
name: RULE_NAME,
|
|
418
|
+
meta: {
|
|
419
|
+
type: "suggestion",
|
|
420
|
+
docs: {
|
|
421
|
+
description: "Disallow inline type import",
|
|
422
|
+
recommended: "error"
|
|
423
|
+
},
|
|
424
|
+
fixable: "code",
|
|
425
|
+
schema: [],
|
|
426
|
+
messages: {
|
|
427
|
+
noInlineTypeImport: "Expected no inline type import"
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
defaultOptions: [],
|
|
431
|
+
create: (context) => {
|
|
432
|
+
return {
|
|
433
|
+
ImportDeclaration: (node) => {
|
|
434
|
+
const specifiers = node.specifiers;
|
|
435
|
+
const typeSpecifiers = specifiers.filter((s) => s.type === "ImportSpecifier" && s.importKind === "type");
|
|
436
|
+
const valueSpecifiers = specifiers.filter((s) => s.type === "ImportSpecifier" && s.importKind === "value");
|
|
437
|
+
if (typeSpecifiers.length && valueSpecifiers.length) {
|
|
438
|
+
context.report({
|
|
439
|
+
loc: node.loc,
|
|
440
|
+
messageId: "noInlineTypeImport",
|
|
441
|
+
*fix(fixer) {
|
|
442
|
+
const sourceCode = context.getSourceCode();
|
|
443
|
+
const typeSpecifiersText = typeSpecifiers.map((s) => sourceCode.getText(s).replace("type ", "")).join(", ");
|
|
444
|
+
const valueSpecifiersText = valueSpecifiers.map((s) => sourceCode.getText(s)).join(", ");
|
|
445
|
+
yield fixer.replaceText(node, `import type { ${typeSpecifiersText} } from "${node.source.value}";
|
|
446
|
+
import { ${valueSpecifiersText} } from "${node.source.value}";`);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
|
|
415
455
|
const index = {
|
|
416
456
|
rules: {
|
|
417
457
|
"import-dedupe": importDedupe,
|
|
418
458
|
"generic-spacing": genericSpacing,
|
|
419
459
|
"space-between-generic-and-paren": spaceBetweenGenericAndParen,
|
|
420
460
|
"space-in-empty-block": spaceInEmptyBlock,
|
|
421
|
-
"semi-spacing": semiSpacing
|
|
461
|
+
"semi-spacing": semiSpacing,
|
|
462
|
+
"no-inline-type-import": noInlineTypeImport
|
|
422
463
|
}
|
|
423
464
|
};
|
|
424
465
|
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ declare const _default: {
|
|
|
4
4
|
rules: {
|
|
5
5
|
"import-dedupe": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"importDedupe", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
6
6
|
"generic-spacing": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"genericSpacingMismatch", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
7
|
-
"space-between-generic-and-paren": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"
|
|
8
|
-
"space-in-empty-block": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"
|
|
9
|
-
"semi-spacing": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"
|
|
7
|
+
"space-between-generic-and-paren": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"noSpaceBetweenGenericAndParen", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
8
|
+
"space-in-empty-block": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"noSpaceInEmptyBlock", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
9
|
+
"semi-spacing": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"noSpaceBeforeSemi", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
10
|
+
"no-inline-type-import": _typescript_eslint_utils_dist_ts_eslint_Rule.RuleModule<"noInlineTypeImport", [], _typescript_eslint_utils_dist_ts_eslint_Rule.RuleListener>;
|
|
10
11
|
};
|
|
11
12
|
};
|
|
12
13
|
|
package/dist/index.mjs
CHANGED
|
@@ -2,9 +2,9 @@ import { ESLintUtils } from '@typescript-eslint/utils';
|
|
|
2
2
|
|
|
3
3
|
const createEslintRule = ESLintUtils.RuleCreator((ruleName) => ruleName);
|
|
4
4
|
|
|
5
|
-
const RULE_NAME$
|
|
5
|
+
const RULE_NAME$5 = "generic-spacing";
|
|
6
6
|
const genericSpacing = createEslintRule({
|
|
7
|
-
name: RULE_NAME$
|
|
7
|
+
name: RULE_NAME$5,
|
|
8
8
|
meta: {
|
|
9
9
|
type: "suggestion",
|
|
10
10
|
docs: {
|
|
@@ -168,9 +168,9 @@ const genericSpacing = createEslintRule({
|
|
|
168
168
|
}
|
|
169
169
|
});
|
|
170
170
|
|
|
171
|
-
const RULE_NAME$
|
|
171
|
+
const RULE_NAME$4 = "import-dedupe";
|
|
172
172
|
const importDedupe = createEslintRule({
|
|
173
|
-
name: RULE_NAME$
|
|
173
|
+
name: RULE_NAME$4,
|
|
174
174
|
meta: {
|
|
175
175
|
type: "problem",
|
|
176
176
|
docs: {
|
|
@@ -218,9 +218,9 @@ const importDedupe = createEslintRule({
|
|
|
218
218
|
}
|
|
219
219
|
});
|
|
220
220
|
|
|
221
|
-
const RULE_NAME$
|
|
221
|
+
const RULE_NAME$3 = "space-between-generic-and-paren";
|
|
222
222
|
const spaceBetweenGenericAndParen = createEslintRule({
|
|
223
|
-
name: RULE_NAME$
|
|
223
|
+
name: RULE_NAME$3,
|
|
224
224
|
meta: {
|
|
225
225
|
type: "suggestion",
|
|
226
226
|
docs: {
|
|
@@ -230,7 +230,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
230
230
|
fixable: "code",
|
|
231
231
|
schema: [],
|
|
232
232
|
messages: {
|
|
233
|
-
|
|
233
|
+
noSpaceBetweenGenericAndParen: "Expected no space between generic type parameters and paren"
|
|
234
234
|
}
|
|
235
235
|
},
|
|
236
236
|
defaultOptions: [],
|
|
@@ -259,7 +259,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
259
259
|
}
|
|
260
260
|
},
|
|
261
261
|
node,
|
|
262
|
-
messageId: "
|
|
262
|
+
messageId: "noSpaceBetweenGenericAndParen",
|
|
263
263
|
*fix(fixer) {
|
|
264
264
|
yield fixer.replaceTextRange([spaceStartRange, spaceStartRange + postSpace.length], "");
|
|
265
265
|
}
|
|
@@ -282,7 +282,7 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
282
282
|
}
|
|
283
283
|
},
|
|
284
284
|
node,
|
|
285
|
-
messageId: "
|
|
285
|
+
messageId: "noSpaceBetweenGenericAndParen",
|
|
286
286
|
*fix(fixer) {
|
|
287
287
|
yield fixer.replaceTextRange([spaceEndRange - preSpace.length, spaceEndRange], "");
|
|
288
288
|
}
|
|
@@ -294,19 +294,19 @@ const spaceBetweenGenericAndParen = createEslintRule({
|
|
|
294
294
|
}
|
|
295
295
|
});
|
|
296
296
|
|
|
297
|
-
const RULE_NAME$
|
|
297
|
+
const RULE_NAME$2 = "space-in-empty-block";
|
|
298
298
|
const spaceInEmptyBlock = createEslintRule({
|
|
299
|
-
name: RULE_NAME$
|
|
299
|
+
name: RULE_NAME$2,
|
|
300
300
|
meta: {
|
|
301
301
|
type: "suggestion",
|
|
302
302
|
docs: {
|
|
303
|
-
description: "
|
|
303
|
+
description: "Disallow spaces in empty block",
|
|
304
304
|
recommended: "error"
|
|
305
305
|
},
|
|
306
306
|
fixable: "code",
|
|
307
307
|
schema: [],
|
|
308
308
|
messages: {
|
|
309
|
-
|
|
309
|
+
noSpaceInEmptyBlock: "Expected no space in empty block"
|
|
310
310
|
}
|
|
311
311
|
},
|
|
312
312
|
defaultOptions: [],
|
|
@@ -329,7 +329,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
329
329
|
column: node.loc.end.column - 1 + postSpace.length
|
|
330
330
|
}
|
|
331
331
|
},
|
|
332
|
-
messageId: "
|
|
332
|
+
messageId: "noSpaceInEmptyBlock",
|
|
333
333
|
*fix(fixer) {
|
|
334
334
|
yield fixer.replaceTextRange([node.range[0] + 1, spaceStartRange + postSpace.length], "");
|
|
335
335
|
}
|
|
@@ -350,7 +350,7 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
350
350
|
column: node.loc.start.column
|
|
351
351
|
}
|
|
352
352
|
},
|
|
353
|
-
messageId: "
|
|
353
|
+
messageId: "noSpaceInEmptyBlock",
|
|
354
354
|
*fix(fixer) {
|
|
355
355
|
yield fixer.replaceTextRange([spaceEndRange - preSpace.length, spaceEndRange], "");
|
|
356
356
|
}
|
|
@@ -361,9 +361,9 @@ const spaceInEmptyBlock = createEslintRule({
|
|
|
361
361
|
}
|
|
362
362
|
});
|
|
363
363
|
|
|
364
|
-
const RULE_NAME = "semi-spacing";
|
|
364
|
+
const RULE_NAME$1 = "semi-spacing";
|
|
365
365
|
const semiSpacing = createEslintRule({
|
|
366
|
-
name: RULE_NAME,
|
|
366
|
+
name: RULE_NAME$1,
|
|
367
367
|
meta: {
|
|
368
368
|
type: "suggestion",
|
|
369
369
|
docs: {
|
|
@@ -373,7 +373,7 @@ const semiSpacing = createEslintRule({
|
|
|
373
373
|
fixable: "code",
|
|
374
374
|
schema: [],
|
|
375
375
|
messages: {
|
|
376
|
-
|
|
376
|
+
noSpaceBeforeSemi: "Expected no space before semicolon"
|
|
377
377
|
}
|
|
378
378
|
},
|
|
379
379
|
defaultOptions: [],
|
|
@@ -399,7 +399,7 @@ const semiSpacing = createEslintRule({
|
|
|
399
399
|
}
|
|
400
400
|
},
|
|
401
401
|
node,
|
|
402
|
-
messageId: "
|
|
402
|
+
messageId: "noSpaceBeforeSemi",
|
|
403
403
|
*fix(fixer) {
|
|
404
404
|
yield fixer.removeRange([spaceStart, spaceEnd]);
|
|
405
405
|
}
|
|
@@ -410,13 +410,54 @@ const semiSpacing = createEslintRule({
|
|
|
410
410
|
}
|
|
411
411
|
});
|
|
412
412
|
|
|
413
|
+
const RULE_NAME = "no-inline-type-import";
|
|
414
|
+
const noInlineTypeImport = createEslintRule({
|
|
415
|
+
name: RULE_NAME,
|
|
416
|
+
meta: {
|
|
417
|
+
type: "suggestion",
|
|
418
|
+
docs: {
|
|
419
|
+
description: "Disallow inline type import",
|
|
420
|
+
recommended: "error"
|
|
421
|
+
},
|
|
422
|
+
fixable: "code",
|
|
423
|
+
schema: [],
|
|
424
|
+
messages: {
|
|
425
|
+
noInlineTypeImport: "Expected no inline type import"
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
defaultOptions: [],
|
|
429
|
+
create: (context) => {
|
|
430
|
+
return {
|
|
431
|
+
ImportDeclaration: (node) => {
|
|
432
|
+
const specifiers = node.specifiers;
|
|
433
|
+
const typeSpecifiers = specifiers.filter((s) => s.type === "ImportSpecifier" && s.importKind === "type");
|
|
434
|
+
const valueSpecifiers = specifiers.filter((s) => s.type === "ImportSpecifier" && s.importKind === "value");
|
|
435
|
+
if (typeSpecifiers.length && valueSpecifiers.length) {
|
|
436
|
+
context.report({
|
|
437
|
+
loc: node.loc,
|
|
438
|
+
messageId: "noInlineTypeImport",
|
|
439
|
+
*fix(fixer) {
|
|
440
|
+
const sourceCode = context.getSourceCode();
|
|
441
|
+
const typeSpecifiersText = typeSpecifiers.map((s) => sourceCode.getText(s).replace("type ", "")).join(", ");
|
|
442
|
+
const valueSpecifiersText = valueSpecifiers.map((s) => sourceCode.getText(s)).join(", ");
|
|
443
|
+
yield fixer.replaceText(node, `import type { ${typeSpecifiersText} } from "${node.source.value}";
|
|
444
|
+
import { ${valueSpecifiersText} } from "${node.source.value}";`);
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
|
|
413
453
|
const index = {
|
|
414
454
|
rules: {
|
|
415
455
|
"import-dedupe": importDedupe,
|
|
416
456
|
"generic-spacing": genericSpacing,
|
|
417
457
|
"space-between-generic-and-paren": spaceBetweenGenericAndParen,
|
|
418
458
|
"space-in-empty-block": spaceInEmptyBlock,
|
|
419
|
-
"semi-spacing": semiSpacing
|
|
459
|
+
"semi-spacing": semiSpacing,
|
|
460
|
+
"no-inline-type-import": noInlineTypeImport
|
|
420
461
|
}
|
|
421
462
|
};
|
|
422
463
|
|