@typescript-eslint/eslint-plugin 7.2.1-alpha.4 → 7.2.1-alpha.5
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.
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultMinimumDescriptionLength = void 0;
|
|
4
3
|
const utils_1 = require("@typescript-eslint/utils");
|
|
5
4
|
const util_1 = require("../util");
|
|
6
|
-
|
|
5
|
+
const defaultMinimumDescriptionLength = 3;
|
|
7
6
|
exports.default = (0, util_1.createRule)({
|
|
8
7
|
name: 'ban-ts-comment',
|
|
9
8
|
meta: {
|
|
@@ -53,7 +52,7 @@ exports.default = (0, util_1.createRule)({
|
|
|
53
52
|
'ts-check': { $ref: '#/items/0/$defs/directiveConfigSchema' },
|
|
54
53
|
minimumDescriptionLength: {
|
|
55
54
|
type: 'number',
|
|
56
|
-
default:
|
|
55
|
+
default: defaultMinimumDescriptionLength,
|
|
57
56
|
},
|
|
58
57
|
},
|
|
59
58
|
type: 'object',
|
|
@@ -67,16 +66,18 @@ exports.default = (0, util_1.createRule)({
|
|
|
67
66
|
'ts-ignore': true,
|
|
68
67
|
'ts-nocheck': true,
|
|
69
68
|
'ts-check': false,
|
|
70
|
-
minimumDescriptionLength:
|
|
69
|
+
minimumDescriptionLength: defaultMinimumDescriptionLength,
|
|
71
70
|
},
|
|
72
71
|
],
|
|
73
72
|
create(context, [options]) {
|
|
73
|
+
// https://github.com/microsoft/TypeScript/blob/6f1ad5ad8bec5671f7e951a3524b62d82ec4be68/src/compiler/parser.ts#L10591
|
|
74
|
+
const singleLinePragmaRegEx = /^\/\/\/?\s*@ts-(?<directive>check|nocheck)(?<description>.*)$/;
|
|
74
75
|
/*
|
|
75
76
|
The regex used are taken from the ones used in the official TypeScript repo -
|
|
76
|
-
https://github.com/microsoft/TypeScript/blob/
|
|
77
|
+
https://github.com/microsoft/TypeScript/blob/6f1ad5ad8bec5671f7e951a3524b62d82ec4be68/src/compiler/scanner.ts#L340-L348
|
|
77
78
|
*/
|
|
78
|
-
const commentDirectiveRegExSingleLine = /^\/*\s*@ts-(?<directive>expect-error|ignore
|
|
79
|
-
const commentDirectiveRegExMultiLine = /^\s*(?:\/|\*)*\s*@ts-(?<directive>expect-error|ignore
|
|
79
|
+
const commentDirectiveRegExSingleLine = /^\/*\s*@ts-(?<directive>expect-error|ignore)(?<description>.*)/;
|
|
80
|
+
const commentDirectiveRegExMultiLine = /^\s*(?:\/|\*)*\s*@ts-(?<directive>expect-error|ignore)(?<description>.*)/;
|
|
80
81
|
const descriptionFormats = new Map();
|
|
81
82
|
for (const directive of [
|
|
82
83
|
'ts-expect-error',
|
|
@@ -89,19 +90,37 @@ exports.default = (0, util_1.createRule)({
|
|
|
89
90
|
descriptionFormats.set(directive, new RegExp(option.descriptionFormat));
|
|
90
91
|
}
|
|
91
92
|
}
|
|
93
|
+
function execDirectiveRegEx(regex, str) {
|
|
94
|
+
const match = regex.exec(str);
|
|
95
|
+
if (!match) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const { directive, description } = (0, util_1.nullThrows)(match.groups, 'RegExp should contain groups');
|
|
99
|
+
return {
|
|
100
|
+
directive: (0, util_1.nullThrows)(directive, 'RegExp should contain "directive" group'),
|
|
101
|
+
description: (0, util_1.nullThrows)(description, 'RegExp should contain "description" group'),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function findDirectiveInComment(comment) {
|
|
105
|
+
if (comment.type === utils_1.AST_TOKEN_TYPES.Line) {
|
|
106
|
+
const matchedPragma = execDirectiveRegEx(singleLinePragmaRegEx, `//${comment.value}`);
|
|
107
|
+
if (matchedPragma) {
|
|
108
|
+
return matchedPragma;
|
|
109
|
+
}
|
|
110
|
+
return execDirectiveRegEx(commentDirectiveRegExSingleLine, comment.value);
|
|
111
|
+
}
|
|
112
|
+
const commentLines = comment.value.split('\n');
|
|
113
|
+
return execDirectiveRegEx(commentDirectiveRegExMultiLine, commentLines[commentLines.length - 1]);
|
|
114
|
+
}
|
|
92
115
|
return {
|
|
93
116
|
Program() {
|
|
94
117
|
const comments = context.sourceCode.getAllComments();
|
|
95
118
|
comments.forEach(comment => {
|
|
96
|
-
const
|
|
97
|
-
? commentDirectiveRegExSingleLine
|
|
98
|
-
: commentDirectiveRegExMultiLine;
|
|
99
|
-
const match = regExp.exec(comment.value);
|
|
119
|
+
const match = findDirectiveInComment(comment);
|
|
100
120
|
if (!match) {
|
|
101
121
|
return;
|
|
102
122
|
}
|
|
103
|
-
|
|
104
|
-
const { directive, description } = match.groups;
|
|
123
|
+
const { directive, description } = match;
|
|
105
124
|
const fullDirective = `ts-${directive}`;
|
|
106
125
|
const option = options[fullDirective];
|
|
107
126
|
if (option === true) {
|
|
@@ -133,9 +152,10 @@ exports.default = (0, util_1.createRule)({
|
|
|
133
152
|
}
|
|
134
153
|
if (option === 'allow-with-description' ||
|
|
135
154
|
(typeof option === 'object' && option.descriptionFormat)) {
|
|
136
|
-
const { minimumDescriptionLength
|
|
155
|
+
const { minimumDescriptionLength } = options;
|
|
137
156
|
const format = descriptionFormats.get(fullDirective);
|
|
138
|
-
if ((0, util_1.getStringLength)(description.trim()) <
|
|
157
|
+
if ((0, util_1.getStringLength)(description.trim()) <
|
|
158
|
+
(0, util_1.nullThrows)(minimumDescriptionLength, 'Expected minimumDescriptionLength to be set')) {
|
|
139
159
|
context.report({
|
|
140
160
|
data: { directive, minimumDescriptionLength },
|
|
141
161
|
node: comment,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ban-ts-comment.js","sourceRoot":"","sources":["../../src/rules/ban-ts-comment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ban-ts-comment.js","sourceRoot":"","sources":["../../src/rules/ban-ts-comment.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
|
3
|
-
"version": "7.2.1-alpha.
|
|
3
|
+
"version": "7.2.1-alpha.5",
|
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -61,10 +61,10 @@
|
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@eslint-community/regexpp": "^4.5.1",
|
|
64
|
-
"@typescript-eslint/scope-manager": "7.2.1-alpha.
|
|
65
|
-
"@typescript-eslint/type-utils": "7.2.1-alpha.
|
|
66
|
-
"@typescript-eslint/utils": "7.2.1-alpha.
|
|
67
|
-
"@typescript-eslint/visitor-keys": "7.2.1-alpha.
|
|
64
|
+
"@typescript-eslint/scope-manager": "7.2.1-alpha.5",
|
|
65
|
+
"@typescript-eslint/type-utils": "7.2.1-alpha.5",
|
|
66
|
+
"@typescript-eslint/utils": "7.2.1-alpha.5",
|
|
67
|
+
"@typescript-eslint/visitor-keys": "7.2.1-alpha.5",
|
|
68
68
|
"debug": "^4.3.4",
|
|
69
69
|
"graphemer": "^1.4.0",
|
|
70
70
|
"ignore": "^5.2.4",
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"@types/debug": "*",
|
|
77
77
|
"@types/marked": "*",
|
|
78
78
|
"@types/natural-compare": "*",
|
|
79
|
-
"@typescript-eslint/rule-schema-to-typescript-types": "7.2.1-alpha.
|
|
80
|
-
"@typescript-eslint/rule-tester": "7.2.1-alpha.
|
|
79
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "7.2.1-alpha.5",
|
|
80
|
+
"@typescript-eslint/rule-tester": "7.2.1-alpha.5",
|
|
81
81
|
"ajv": "^6.12.6",
|
|
82
82
|
"chalk": "^5.3.0",
|
|
83
83
|
"cross-env": "^7.0.3",
|