@typescript-eslint/eslint-plugin 8.0.0-alpha.30 → 8.0.0-alpha.32
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/configs/all.js +3 -1
- package/dist/configs/all.js.map +1 -1
- package/dist/configs/recommended-type-checked.js +2 -1
- package/dist/configs/recommended-type-checked.js.map +1 -1
- package/dist/configs/recommended.js +2 -1
- package/dist/configs/recommended.js.map +1 -1
- package/dist/configs/strict-type-checked.js +2 -1
- package/dist/configs/strict-type-checked.js.map +1 -1
- package/dist/configs/strict.js +2 -1
- package/dist/configs/strict.js.map +1 -1
- package/dist/rules/adjacent-overload-signatures.js +2 -6
- package/dist/rules/adjacent-overload-signatures.js.map +1 -1
- package/dist/rules/class-literal-property-style.js +9 -7
- package/dist/rules/class-literal-property-style.js.map +1 -1
- package/dist/rules/consistent-type-assertions.js +2 -14
- package/dist/rules/consistent-type-assertions.js.map +1 -1
- package/dist/rules/consistent-type-definitions.js +1 -1
- package/dist/rules/consistent-type-definitions.js.map +1 -1
- package/dist/rules/default-param-last.js +6 -1
- package/dist/rules/default-param-last.js.map +1 -1
- package/dist/rules/enum-utils/shared.js +3 -4
- package/dist/rules/enum-utils/shared.js.map +1 -1
- package/dist/rules/explicit-member-accessibility.js +4 -54
- package/dist/rules/explicit-member-accessibility.js.map +1 -1
- package/dist/rules/index.js +6 -2
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/member-ordering.js +7 -0
- package/dist/rules/member-ordering.js.map +1 -1
- package/dist/rules/naming-convention-utils/parse-options.js +1 -2
- package/dist/rules/naming-convention-utils/parse-options.js.map +1 -1
- package/dist/rules/naming-convention-utils/shared.js +3 -4
- package/dist/rules/naming-convention-utils/shared.js.map +1 -1
- package/dist/rules/naming-convention-utils/validator.js +1 -2
- package/dist/rules/naming-convention-utils/validator.js.map +1 -1
- package/dist/rules/naming-convention.js +3 -1
- package/dist/rules/naming-convention.js.map +1 -1
- package/dist/rules/no-dynamic-delete.js +8 -40
- package/dist/rules/no-dynamic-delete.js.map +1 -1
- package/dist/rules/no-empty-object-type.js +1 -1
- package/dist/rules/no-empty-object-type.js.map +1 -1
- package/dist/rules/no-extraneous-class.js +11 -3
- package/dist/rules/no-extraneous-class.js.map +1 -1
- package/dist/rules/no-implied-eval.js +1 -8
- package/dist/rules/no-implied-eval.js.map +1 -1
- package/dist/rules/no-inferrable-types.js +1 -2
- package/dist/rules/no-inferrable-types.js.map +1 -1
- package/dist/rules/no-invalid-this.js +6 -0
- package/dist/rules/no-invalid-this.js.map +1 -1
- package/dist/rules/no-magic-numbers.js +32 -1
- package/dist/rules/no-magic-numbers.js.map +1 -1
- package/dist/rules/no-misused-new.js +4 -3
- package/dist/rules/no-misused-new.js.map +1 -1
- package/dist/rules/{ban-types.js → no-restricted-types.js} +17 -70
- package/dist/rules/no-restricted-types.js.map +1 -0
- package/dist/rules/no-shadow.js +1 -1
- package/dist/rules/no-shadow.js.map +1 -1
- package/dist/rules/no-unsafe-function-type.js +47 -0
- package/dist/rules/no-unsafe-function-type.js.map +1 -0
- package/dist/rules/no-unsafe-member-access.js +8 -2
- package/dist/rules/no-unsafe-member-access.js.map +1 -1
- package/dist/rules/no-unused-vars.js +191 -74
- package/dist/rules/no-unused-vars.js.map +1 -1
- package/dist/rules/no-useless-constructor.js +0 -1
- package/dist/rules/no-useless-constructor.js.map +1 -1
- package/dist/rules/no-wrapper-object-types.js +61 -0
- package/dist/rules/no-wrapper-object-types.js.map +1 -0
- package/dist/rules/prefer-as-const.js +1 -1
- package/dist/rules/prefer-as-const.js.map +1 -1
- package/dist/rules/prefer-destructuring.js +3 -1
- package/dist/rules/prefer-destructuring.js.map +1 -1
- package/dist/rules/prefer-includes.js.map +1 -1
- package/dist/rules/prefer-nullish-coalescing.js +8 -6
- package/dist/rules/prefer-nullish-coalescing.js.map +1 -1
- package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +1 -2
- package/dist/rules/prefer-optional-chain-utils/analyzeChain.js.map +1 -1
- package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.js +1 -2
- package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.js.map +1 -1
- package/dist/rules/prefer-optional-chain-utils/compareNodes.js +1 -2
- package/dist/rules/prefer-optional-chain-utils/compareNodes.js.map +1 -1
- package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +6 -11
- package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js.map +1 -1
- package/dist/rules/prefer-readonly.js +16 -7
- package/dist/rules/prefer-readonly.js.map +1 -1
- package/dist/rules/prefer-string-starts-ends-with.js.map +1 -1
- package/dist/rules/restrict-template-expressions.js +2 -2
- package/dist/rules/restrict-template-expressions.js.map +1 -1
- package/dist/rules/return-await.js +36 -2
- package/dist/rules/return-await.js.map +1 -1
- package/dist/util/astUtils.js +2 -3
- package/dist/util/astUtils.js.map +1 -1
- package/dist/util/collectUnusedVariables.js +60 -30
- package/dist/util/collectUnusedVariables.js.map +1 -1
- package/dist/util/escapeRegExp.js +1 -2
- package/dist/util/escapeRegExp.js.map +1 -1
- package/dist/util/explicitReturnTypeUtils.js +6 -7
- package/dist/util/explicitReturnTypeUtils.js.map +1 -1
- package/dist/util/getESLintCoreRule.js +2 -2
- package/dist/util/getESLintCoreRule.js.map +1 -1
- package/dist/util/getForStatementHeadLoc.js +1 -2
- package/dist/util/getForStatementHeadLoc.js.map +1 -1
- package/dist/util/getFunctionHeadLoc.js +1 -2
- package/dist/util/getFunctionHeadLoc.js.map +1 -1
- package/dist/util/getMemberHeadLoc.js +80 -0
- package/dist/util/getMemberHeadLoc.js.map +1 -0
- package/dist/util/getOperatorPrecedence.js +4 -4
- package/dist/util/getOperatorPrecedence.js.map +1 -1
- package/dist/util/getStaticStringValue.js +1 -2
- package/dist/util/getStaticStringValue.js.map +1 -1
- package/dist/util/getStringLength.js +1 -2
- package/dist/util/getStringLength.js.map +1 -1
- package/dist/util/getTextWithParentheses.js +17 -0
- package/dist/util/getTextWithParentheses.js.map +1 -0
- package/dist/util/getThisExpression.js +1 -2
- package/dist/util/getThisExpression.js.map +1 -1
- package/dist/util/getWrappedCode.js +1 -2
- package/dist/util/getWrappedCode.js.map +1 -1
- package/dist/util/getWrappingFixer.js +2 -3
- package/dist/util/getWrappingFixer.js.map +1 -1
- package/dist/util/index.js +2 -0
- package/dist/util/index.js.map +1 -1
- package/dist/util/isAssignee.js +1 -2
- package/dist/util/isAssignee.js.map +1 -1
- package/dist/util/isNodeEqual.js +1 -2
- package/dist/util/isNodeEqual.js.map +1 -1
- package/dist/util/isNullLiteral.js +1 -2
- package/dist/util/isNullLiteral.js.map +1 -1
- package/dist/util/isUndefinedIdentifier.js +1 -2
- package/dist/util/isUndefinedIdentifier.js.map +1 -1
- package/dist/util/misc.js +14 -14
- package/dist/util/misc.js.map +1 -1
- package/dist/util/objectIterators.js +3 -4
- package/dist/util/objectIterators.js.map +1 -1
- package/dist/util/scopeUtils.js +11 -0
- package/dist/util/scopeUtils.js.map +1 -0
- package/docs/rules/ban-types.md +22 -0
- package/docs/rules/consistent-indexed-object-style.mdx +1 -1
- package/docs/rules/no-dynamic-delete.mdx +6 -5
- package/docs/rules/no-extraneous-class.mdx +6 -0
- package/docs/rules/no-restricted-types.mdx +71 -0
- package/docs/rules/no-type-alias.mdx +1 -1
- package/docs/rules/no-unsafe-function-type.mdx +63 -0
- package/docs/rules/no-wrapper-object-types.mdx +67 -0
- package/docs/rules/return-await.mdx +17 -6
- package/package.json +7 -9
- package/dist/rules/ban-types.js.map +0 -1
- package/docs/rules/ban-types.mdx +0 -133
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.getStringLength =
|
6
|
+
exports.getStringLength = getStringLength;
|
7
7
|
const graphemer_1 = __importDefault(require("graphemer"));
|
8
8
|
let splitter;
|
9
9
|
function isASCII(value) {
|
@@ -16,5 +16,4 @@ function getStringLength(value) {
|
|
16
16
|
splitter ??= new graphemer_1.default();
|
17
17
|
return splitter.countGraphemes(value);
|
18
18
|
}
|
19
|
-
exports.getStringLength = getStringLength;
|
20
19
|
//# sourceMappingURL=getStringLength.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getStringLength.js","sourceRoot":"","sources":["../../src/util/getStringLength.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"getStringLength.js","sourceRoot":"","sources":["../../src/util/getStringLength.ts"],"names":[],"mappings":";;;;;AAQA,0CAQC;AAhBD,0DAAkC;AAElC,IAAI,QAA+B,CAAC;AAEpC,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,QAAQ,KAAK,IAAI,mBAAS,EAAE,CAAC;IAE7B,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getTextWithParentheses = getTextWithParentheses;
|
4
|
+
const _1 = require(".");
|
5
|
+
function getTextWithParentheses(sourceCode, node) {
|
6
|
+
// Capture parentheses before and after the node
|
7
|
+
let beforeCount = 0;
|
8
|
+
let afterCount = 0;
|
9
|
+
if ((0, _1.isParenthesized)(node, sourceCode)) {
|
10
|
+
const bodyOpeningParen = (0, _1.nullThrows)(sourceCode.getTokenBefore(node, _1.isOpeningParenToken), _1.NullThrowsReasons.MissingToken('(', 'node'));
|
11
|
+
const bodyClosingParen = (0, _1.nullThrows)(sourceCode.getTokenAfter(node, _1.isClosingParenToken), _1.NullThrowsReasons.MissingToken(')', 'node'));
|
12
|
+
beforeCount = node.range[0] - bodyOpeningParen.range[0];
|
13
|
+
afterCount = bodyClosingParen.range[1] - node.range[1];
|
14
|
+
}
|
15
|
+
return sourceCode.getText(node, beforeCount, afterCount);
|
16
|
+
}
|
17
|
+
//# sourceMappingURL=getTextWithParentheses.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getTextWithParentheses.js","sourceRoot":"","sources":["../../src/util/getTextWithParentheses.ts"],"names":[],"mappings":";;AAWA,wDAuBC;AA/BD,wBAMW;AAEX,SAAgB,sBAAsB,CACpC,UAAgC,EAChC,IAAmB;IAEnB,gDAAgD;IAChD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,IAAA,kBAAe,EAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAA,aAAU,EACjC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAmB,CAAC,EACpD,oBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAA,aAAU,EACjC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,sBAAmB,CAAC,EACnD,oBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;QAEF,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getThisExpression =
|
3
|
+
exports.getThisExpression = getThisExpression;
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
5
5
|
function getThisExpression(node) {
|
6
6
|
while (true) {
|
@@ -22,5 +22,4 @@ function getThisExpression(node) {
|
|
22
22
|
}
|
23
23
|
return;
|
24
24
|
}
|
25
|
-
exports.getThisExpression = getThisExpression;
|
26
25
|
//# sourceMappingURL=getThisExpression.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getThisExpression.js","sourceRoot":"","sources":["../../src/util/getThisExpression.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"getThisExpression.js","sourceRoot":"","sources":["../../src/util/getThisExpression.ts"],"names":[],"mappings":";;AAGA,8CAkBC;AApBD,oDAA0D;AAE1D,SAAgB,iBAAiB,CAC/B,IAAmB;IAEnB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc,EAAE,CAAC;YAChD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,EAAE,CAAC;YACzD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe,EAAE,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO;AACT,CAAC"}
|
@@ -1,8 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getWrappedCode =
|
3
|
+
exports.getWrappedCode = getWrappedCode;
|
4
4
|
function getWrappedCode(text, nodePrecedence, parentPrecedence) {
|
5
5
|
return nodePrecedence > parentPrecedence ? text : `(${text})`;
|
6
6
|
}
|
7
|
-
exports.getWrappedCode = getWrappedCode;
|
8
7
|
//# sourceMappingURL=getWrappedCode.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getWrappedCode.js","sourceRoot":"","sources":["../../src/util/getWrappedCode.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"getWrappedCode.js","sourceRoot":"","sources":["../../src/util/getWrappedCode.ts"],"names":[],"mappings":";;AAEA,wCAMC;AAND,SAAgB,cAAc,CAC5B,IAAY,EACZ,cAAkC,EAClC,gBAAoC;IAEpC,OAAO,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;AAChE,CAAC"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.getWrappingFixer = getWrappingFixer;
|
4
|
+
exports.isStrongPrecedenceNode = isStrongPrecedenceNode;
|
4
5
|
const utils_1 = require("@typescript-eslint/utils");
|
5
6
|
/**
|
6
7
|
* Wraps node with some code. Adds parenthesis as necessary.
|
@@ -40,7 +41,6 @@ function getWrappingFixer(params) {
|
|
40
41
|
return fixer.replaceText(node, code);
|
41
42
|
};
|
42
43
|
}
|
43
|
-
exports.getWrappingFixer = getWrappingFixer;
|
44
44
|
/**
|
45
45
|
* Check if a node will always have the same precedence if it's parent changes.
|
46
46
|
*/
|
@@ -57,7 +57,6 @@ function isStrongPrecedenceNode(innerNode) {
|
|
57
57
|
innerNode.type === utils_1.AST_NODE_TYPES.TaggedTemplateExpression ||
|
58
58
|
innerNode.type === utils_1.AST_NODE_TYPES.TSInstantiationExpression);
|
59
59
|
}
|
60
|
-
exports.isStrongPrecedenceNode = isStrongPrecedenceNode;
|
61
60
|
/**
|
62
61
|
* Check if a node's parent could have different precedence if the node changes.
|
63
62
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getWrappingFixer.js","sourceRoot":"","sources":["../../src/util/getWrappingFixer.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"getWrappingFixer.js","sourceRoot":"","sources":["../../src/util/getWrappingFixer.ts"],"names":[],"mappings":"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"}
|
package/dist/util/index.js
CHANGED
@@ -23,6 +23,7 @@ __exportStar(require("./getFunctionHeadLoc"), exports);
|
|
23
23
|
__exportStar(require("./getOperatorPrecedence"), exports);
|
24
24
|
__exportStar(require("./getStaticStringValue"), exports);
|
25
25
|
__exportStar(require("./getStringLength"), exports);
|
26
|
+
__exportStar(require("./getTextWithParentheses"), exports);
|
26
27
|
__exportStar(require("./getThisExpression"), exports);
|
27
28
|
__exportStar(require("./getWrappingFixer"), exports);
|
28
29
|
__exportStar(require("./isNodeEqual"), exports);
|
@@ -30,6 +31,7 @@ __exportStar(require("./isNullLiteral"), exports);
|
|
30
31
|
__exportStar(require("./isUndefinedIdentifier"), exports);
|
31
32
|
__exportStar(require("./misc"), exports);
|
32
33
|
__exportStar(require("./objectIterators"), exports);
|
34
|
+
__exportStar(require("./scopeUtils"), exports);
|
33
35
|
__exportStar(require("./types"), exports);
|
34
36
|
__exportStar(require("./isAssignee"), exports);
|
35
37
|
// this is done for convenience - saves migrating all of the old rules
|
package/dist/util/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAuD;AAEvD,6CAA2B;AAC3B,2DAAyC;AACzC,+CAA6B;AAC7B,uDAAqC;AACrC,0DAAwC;AACxC,yDAAuC;AACvC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,yCAAuB;AACvB,oDAAkC;AAClC,0CAAwB;AACxB,+CAA6B;AAE7B,sEAAsE;AACtE,gEAA8C;AAC9C,MAAM,EACJ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,GAAG,mBAAW,CAAC;AAMd,oCAAY;AACZ,8BAAS;AACT,4CAAgB;AAChB,8CAAiB;AACjB,gCAAU;AAGV,8CAAiB"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAuD;AAEvD,6CAA2B;AAC3B,2DAAyC;AACzC,+CAA6B;AAC7B,uDAAqC;AACrC,0DAAwC;AACxC,yDAAuC;AACvC,oDAAkC;AAClC,2DAAyC;AACzC,sDAAoC;AACpC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,yCAAuB;AACvB,oDAAkC;AAClC,+CAA6B;AAC7B,0CAAwB;AACxB,+CAA6B;AAE7B,sEAAsE;AACtE,gEAA8C;AAC9C,MAAM,EACJ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,GAAG,mBAAW,CAAC;AAMd,oCAAY;AACZ,8BAAS;AACT,4CAAgB;AAChB,8CAAiB;AACjB,gCAAU;AAGV,8CAAiB"}
|
package/dist/util/isAssignee.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.isAssignee =
|
3
|
+
exports.isAssignee = isAssignee;
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
5
5
|
function isAssignee(node) {
|
6
6
|
const parent = node.parent;
|
@@ -40,5 +40,4 @@ function isAssignee(node) {
|
|
40
40
|
}
|
41
41
|
return false;
|
42
42
|
}
|
43
|
-
exports.isAssignee = isAssignee;
|
44
43
|
//# sourceMappingURL=isAssignee.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isAssignee.js","sourceRoot":"","sources":["../../src/util/isAssignee.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"isAssignee.js","sourceRoot":"","sources":["../../src/util/isAssignee.ts"],"names":[],"mappings":";;AAGA,gCAoDC;AAtDD,oDAA0D;AAE1D,SAAgB,UAAU,CAAC,IAAmB;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,oBAAoB;QACnD,MAAM,CAAC,IAAI,KAAK,IAAI,EACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;IACd,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe;QAC9C,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC5B,MAAM,CAAC,QAAQ,KAAK,IAAI,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QAC/C,MAAM,CAAC,QAAQ,KAAK,IAAI,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ;QACvC,MAAM,CAAC,KAAK,KAAK,IAAI;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QACtD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/util/isNodeEqual.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.isNodeEqual =
|
3
|
+
exports.isNodeEqual = isNodeEqual;
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
5
5
|
function isNodeEqual(a, b) {
|
6
6
|
if (a.type !== b.type) {
|
@@ -23,5 +23,4 @@ function isNodeEqual(a, b) {
|
|
23
23
|
}
|
24
24
|
return false;
|
25
25
|
}
|
26
|
-
exports.isNodeEqual = isNodeEqual;
|
27
26
|
//# sourceMappingURL=isNodeEqual.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isNodeEqual.js","sourceRoot":"","sources":["../../src/util/isNodeEqual.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"isNodeEqual.js","sourceRoot":"","sources":["../../src/util/isNodeEqual.ts"],"names":[],"mappings":";;AAGA,kCA4BC;AA9BD,oDAA0D;AAE1D,SAAgB,WAAW,CAAC,CAAgB,EAAE,CAAgB;IAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;QACxC,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc,EACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO,EAAE,CAAC;QAC3E,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,IACE,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;QACpC,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU,EACpC,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,IACE,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QAC1C,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,EAC1C,CAAC;QACD,OAAO,CACL,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
@@ -1,9 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.isNullLiteral =
|
3
|
+
exports.isNullLiteral = isNullLiteral;
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
5
5
|
function isNullLiteral(i) {
|
6
6
|
return i.type === utils_1.AST_NODE_TYPES.Literal && i.value == null;
|
7
7
|
}
|
8
|
-
exports.isNullLiteral = isNullLiteral;
|
9
8
|
//# sourceMappingURL=isNullLiteral.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isNullLiteral.js","sourceRoot":"","sources":["../../src/util/isNullLiteral.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"isNullLiteral.js","sourceRoot":"","sources":["../../src/util/isNullLiteral.ts"],"names":[],"mappings":";;AAGA,sCAEC;AAJD,oDAA0D;AAE1D,SAAgB,aAAa,CAAC,CAAgB;IAC5C,OAAO,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;AAC9D,CAAC"}
|
@@ -1,9 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.isUndefinedIdentifier =
|
3
|
+
exports.isUndefinedIdentifier = isUndefinedIdentifier;
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
5
5
|
function isUndefinedIdentifier(i) {
|
6
6
|
return i.type === utils_1.AST_NODE_TYPES.Identifier && i.name === 'undefined';
|
7
7
|
}
|
8
|
-
exports.isUndefinedIdentifier = isUndefinedIdentifier;
|
9
8
|
//# sourceMappingURL=isUndefinedIdentifier.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isUndefinedIdentifier.js","sourceRoot":"","sources":["../../src/util/isUndefinedIdentifier.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"isUndefinedIdentifier.js","sourceRoot":"","sources":["../../src/util/isUndefinedIdentifier.ts"],"names":[],"mappings":";;AAGA,sDAEC;AAJD,oDAA0D;AAE1D,SAAgB,qBAAqB,CAAC,CAAgB;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AACxE,CAAC"}
|
package/dist/util/misc.js
CHANGED
@@ -26,7 +26,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
26
|
return result;
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
exports.
|
29
|
+
exports.MemberNameType = void 0;
|
30
|
+
exports.arrayGroupByToMap = arrayGroupByToMap;
|
31
|
+
exports.arraysAreEqual = arraysAreEqual;
|
32
|
+
exports.findFirstResult = findFirstResult;
|
33
|
+
exports.formatWordList = formatWordList;
|
34
|
+
exports.getEnumNames = getEnumNames;
|
35
|
+
exports.getNameFromIndexSignature = getNameFromIndexSignature;
|
36
|
+
exports.getNameFromMember = getNameFromMember;
|
37
|
+
exports.isDefinitionFile = isDefinitionFile;
|
38
|
+
exports.isRestParameterDeclaration = isRestParameterDeclaration;
|
39
|
+
exports.isParenlessArrowFunction = isParenlessArrowFunction;
|
40
|
+
exports.typeNodeRequiresParentheses = typeNodeRequiresParentheses;
|
41
|
+
exports.upperCaseFirst = upperCaseFirst;
|
42
|
+
exports.findLastIndex = findLastIndex;
|
30
43
|
const type_utils_1 = require("@typescript-eslint/type-utils");
|
31
44
|
const utils_1 = require("@typescript-eslint/utils");
|
32
45
|
const ts = __importStar(require("typescript"));
|
@@ -48,14 +61,12 @@ function isDefinitionFile(fileName) {
|
|
48
61
|
}
|
49
62
|
return false;
|
50
63
|
}
|
51
|
-
exports.isDefinitionFile = isDefinitionFile;
|
52
64
|
/**
|
53
65
|
* Upper cases the first character or the string
|
54
66
|
*/
|
55
67
|
function upperCaseFirst(str) {
|
56
68
|
return str[0].toUpperCase() + str.slice(1);
|
57
69
|
}
|
58
|
-
exports.upperCaseFirst = upperCaseFirst;
|
59
70
|
function arrayGroupByToMap(array, getKey) {
|
60
71
|
const groups = new Map();
|
61
72
|
for (const item of array) {
|
@@ -70,7 +81,6 @@ function arrayGroupByToMap(array, getKey) {
|
|
70
81
|
}
|
71
82
|
return groups;
|
72
83
|
}
|
73
|
-
exports.arrayGroupByToMap = arrayGroupByToMap;
|
74
84
|
function arraysAreEqual(a, b, eq) {
|
75
85
|
return (a === b ||
|
76
86
|
(a !== undefined &&
|
@@ -78,7 +88,6 @@ function arraysAreEqual(a, b, eq) {
|
|
78
88
|
a.length === b.length &&
|
79
89
|
a.every((x, idx) => eq(x, b[idx]))));
|
80
90
|
}
|
81
|
-
exports.arraysAreEqual = arraysAreEqual;
|
82
91
|
/** Returns the first non-`undefined` result. */
|
83
92
|
function findFirstResult(inputs, getResult) {
|
84
93
|
for (const element of inputs) {
|
@@ -89,7 +98,6 @@ function findFirstResult(inputs, getResult) {
|
|
89
98
|
}
|
90
99
|
return undefined;
|
91
100
|
}
|
92
|
-
exports.findFirstResult = findFirstResult;
|
93
101
|
/**
|
94
102
|
* Gets a string representation of the name of the index signature.
|
95
103
|
*/
|
@@ -97,7 +105,6 @@ function getNameFromIndexSignature(node) {
|
|
97
105
|
const propName = node.parameters.find((parameter) => parameter.type === utils_1.AST_NODE_TYPES.Identifier);
|
98
106
|
return propName ? propName.name : '(index signature)';
|
99
107
|
}
|
100
|
-
exports.getNameFromIndexSignature = getNameFromIndexSignature;
|
101
108
|
var MemberNameType;
|
102
109
|
(function (MemberNameType) {
|
103
110
|
MemberNameType[MemberNameType["Private"] = 1] = "Private";
|
@@ -140,11 +147,9 @@ function getNameFromMember(member, sourceCode) {
|
|
140
147
|
name: sourceCode.text.slice(...member.key.range),
|
141
148
|
};
|
142
149
|
}
|
143
|
-
exports.getNameFromMember = getNameFromMember;
|
144
150
|
function getEnumNames(myEnum) {
|
145
151
|
return Object.keys(myEnum).filter(x => isNaN(parseInt(x)));
|
146
152
|
}
|
147
|
-
exports.getEnumNames = getEnumNames;
|
148
153
|
/**
|
149
154
|
* Given an array of words, returns an English-friendly concatenation, separated with commas, with
|
150
155
|
* the `and` clause inserted before the last item.
|
@@ -160,7 +165,6 @@ function formatWordList(words) {
|
|
160
165
|
}
|
161
166
|
return [words.slice(0, -1).join(', '), words.slice(-1)[0]].join(' and ');
|
162
167
|
}
|
163
|
-
exports.formatWordList = formatWordList;
|
164
168
|
/**
|
165
169
|
* Iterates the array in reverse and returns the index of the first element it
|
166
170
|
* finds which passes the predicate function.
|
@@ -178,7 +182,6 @@ function findLastIndex(members, predicate) {
|
|
178
182
|
}
|
179
183
|
return -1;
|
180
184
|
}
|
181
|
-
exports.findLastIndex = findLastIndex;
|
182
185
|
function typeNodeRequiresParentheses(node, text) {
|
183
186
|
return (node.type === utils_1.AST_NODE_TYPES.TSFunctionType ||
|
184
187
|
node.type === utils_1.AST_NODE_TYPES.TSConstructorType ||
|
@@ -186,13 +189,10 @@ function typeNodeRequiresParentheses(node, text) {
|
|
186
189
|
(node.type === utils_1.AST_NODE_TYPES.TSUnionType && text.startsWith('|')) ||
|
187
190
|
(node.type === utils_1.AST_NODE_TYPES.TSIntersectionType && text.startsWith('&')));
|
188
191
|
}
|
189
|
-
exports.typeNodeRequiresParentheses = typeNodeRequiresParentheses;
|
190
192
|
function isRestParameterDeclaration(decl) {
|
191
193
|
return ts.isParameter(decl) && decl.dotDotDotToken != null;
|
192
194
|
}
|
193
|
-
exports.isRestParameterDeclaration = isRestParameterDeclaration;
|
194
195
|
function isParenlessArrowFunction(node, sourceCode) {
|
195
196
|
return (node.params.length === 1 && !(0, astUtils_1.isParenthesized)(node.params[0], sourceCode));
|
196
197
|
}
|
197
|
-
exports.isParenlessArrowFunction = isParenlessArrowFunction;
|
198
198
|
//# sourceMappingURL=misc.js.map
|
package/dist/util/misc.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/util/misc.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/util/misc.ts"],"names":[],"mappings":"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"}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.objectForEachKey = objectForEachKey;
|
4
|
+
exports.objectMapKey = objectMapKey;
|
5
|
+
exports.objectReduceKey = objectReduceKey;
|
4
6
|
function objectForEachKey(obj, callback) {
|
5
7
|
const keys = Object.keys(obj);
|
6
8
|
for (const key of keys) {
|
7
9
|
callback(key);
|
8
10
|
}
|
9
11
|
}
|
10
|
-
exports.objectForEachKey = objectForEachKey;
|
11
12
|
function objectMapKey(obj, callback) {
|
12
13
|
const values = [];
|
13
14
|
objectForEachKey(obj, key => {
|
@@ -15,7 +16,6 @@ function objectMapKey(obj, callback) {
|
|
15
16
|
});
|
16
17
|
return values;
|
17
18
|
}
|
18
|
-
exports.objectMapKey = objectMapKey;
|
19
19
|
function objectReduceKey(obj, callback, initial) {
|
20
20
|
let accumulator = initial;
|
21
21
|
objectForEachKey(obj, key => {
|
@@ -23,5 +23,4 @@ function objectReduceKey(obj, callback, initial) {
|
|
23
23
|
});
|
24
24
|
return accumulator;
|
25
25
|
}
|
26
|
-
exports.objectReduceKey = objectReduceKey;
|
27
26
|
//# sourceMappingURL=objectIterators.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"objectIterators.js","sourceRoot":"","sources":["../../src/util/objectIterators.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"objectIterators.js","sourceRoot":"","sources":["../../src/util/objectIterators.ts"],"names":[],"mappings":";;AAiCS,4CAAgB;AAAE,oCAAY;AAAE,0CAAe;AAjCxD,SAAS,gBAAgB,CACvB,GAAM,EACN,QAAgC;IAEhC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,GAAM,EACN,QAAkC;IAElC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,GAAM,EACN,QAAyD,EACzD,OAAoB;IAEpB,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QAC1B,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isReferenceToGlobalFunction = isReferenceToGlobalFunction;
|
4
|
+
function isReferenceToGlobalFunction(calleeName, node, sourceCode) {
|
5
|
+
const ref = sourceCode
|
6
|
+
.getScope(node)
|
7
|
+
.references.find(ref => ref.identifier.name === calleeName);
|
8
|
+
// ensure it's the "global" version
|
9
|
+
return !ref?.resolved?.defs.length;
|
10
|
+
}
|
11
|
+
//# sourceMappingURL=scopeUtils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scopeUtils.js","sourceRoot":"","sources":["../../src/util/scopeUtils.ts"],"names":[],"mappings":";;AAGA,kEAWC;AAXD,SAAgB,2BAA2B,CACzC,UAAkB,EAClB,IAAmB,EACnB,UAAsB;IAEtB,MAAM,GAAG,GAAG,UAAU;SACnB,QAAQ,CAAC,IAAI,CAAC;SACd,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAE9D,mCAAmC;IACnC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACrC,CAAC"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
:::danger Deprecated
|
2
|
+
|
3
|
+
The old `ban-types` rule encompassed multiple areas of functionality, and so has been split into several rules.
|
4
|
+
|
5
|
+
**[`no-restricted-types`](./no-restricted-types.mdx)** is the new rule for banning a configurable list of type names.
|
6
|
+
It has no options enabled by default and is akin to rules like [`no-restricted-globals`](https://eslint.org/docs/latest/rules/no-restricted-globals), [`no-restricted-properties`](https://eslint.org/docs/latest/rules/no-restricted-properties), and [`no-restricted-syntax`](https://eslint.org/docs/latest/rules/no-restricted-syntax).
|
7
|
+
|
8
|
+
The default options from `ban-types` are now covered by:
|
9
|
+
|
10
|
+
- **[`no-empty-object-type`](./no-empty-object-type.mdx)**: banning the built-in `{}` type in confusing locations
|
11
|
+
- **[`no-unsafe-function-type`](./no-unsafe-function-type.mdx)**: banning the built-in `Function`
|
12
|
+
- **[`no-wrapper-object-types`](./no-wrapper-object-types.mdx)**: banning `Object` and built-in class wrappers such as `Number`
|
13
|
+
|
14
|
+
`ban-types` itself is removed in typescript-eslint v8.
|
15
|
+
See [Announcing typescript-eslint v8 Beta](/blog/announcing-typescript-eslint-v8-beta) for more details.
|
16
|
+
:::
|
17
|
+
|
18
|
+
<!-- This doc file has been left on purpose because `ban-types` is a well-known
|
19
|
+
rule. This exists to help direct people to the replacement rules.
|
20
|
+
|
21
|
+
Note that there is no actual way to get to this page in the normal navigation,
|
22
|
+
so end-users will only be able to get to this page from the search bar. -->
|
@@ -25,10 +25,6 @@ Dynamically adding and removing keys from objects can cause occasional edge case
|
|
25
25
|
<TabItem value="❌ Incorrect">
|
26
26
|
|
27
27
|
```ts
|
28
|
-
// Can be replaced with the constant equivalents, such as container.aaa
|
29
|
-
delete container['aaa'];
|
30
|
-
delete container['Infinity'];
|
31
|
-
|
32
28
|
// Dynamic, difficult-to-reason-about lookups
|
33
29
|
const name = 'name';
|
34
30
|
delete container[name];
|
@@ -48,7 +44,12 @@ delete container.aaa;
|
|
48
44
|
|
49
45
|
// Constants that must be accessed by []
|
50
46
|
delete container[7];
|
51
|
-
delete container[
|
47
|
+
delete container[-1];
|
48
|
+
|
49
|
+
// All strings are allowed, to be compatible with the noPropertyAccessFromIndexSignature
|
50
|
+
// TS compiler option
|
51
|
+
delete container['aaa'];
|
52
|
+
delete container['Infinity'];
|
52
53
|
```
|
53
54
|
|
54
55
|
</TabItem>
|
@@ -42,6 +42,8 @@ class HelloWorldLogger {
|
|
42
42
|
console.log('Hello, world!');
|
43
43
|
}
|
44
44
|
}
|
45
|
+
|
46
|
+
abstract class Foo {}
|
45
47
|
```
|
46
48
|
|
47
49
|
</TabItem>
|
@@ -57,6 +59,10 @@ export function isProduction() {
|
|
57
59
|
function logHelloWorld() {
|
58
60
|
console.log('Hello, world!');
|
59
61
|
}
|
62
|
+
|
63
|
+
abstract class Foo {
|
64
|
+
abstract prop: string;
|
65
|
+
}
|
60
66
|
```
|
61
67
|
|
62
68
|
</TabItem>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
---
|
2
|
+
description: 'Disallow certain types.'
|
3
|
+
---
|
4
|
+
|
5
|
+
import Tabs from '@theme/Tabs';
|
6
|
+
import TabItem from '@theme/TabItem';
|
7
|
+
|
8
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
9
|
+
>
|
10
|
+
> See **https://typescript-eslint.io/rules/no-restricted-types** for documentation.
|
11
|
+
|
12
|
+
It can sometimes be useful to ban specific types from being used in type annotations.
|
13
|
+
For example, a project might be migrating from using one type to another, and want to ban references to the old type.
|
14
|
+
|
15
|
+
This rule can be configured to ban a list of specific types and can suggest alternatives.
|
16
|
+
Note that it does not ban the corresponding runtime objects from being used.
|
17
|
+
|
18
|
+
## Options
|
19
|
+
|
20
|
+
### `types`
|
21
|
+
|
22
|
+
An object whose keys are the types you want to ban, and the values are error messages.
|
23
|
+
|
24
|
+
The type can either be a type name literal (`OldType`) or a a type name with generic parameter instantiation(s) (`OldType<MyArgument>`).
|
25
|
+
|
26
|
+
The values can be:
|
27
|
+
|
28
|
+
- A string, which is the error message to be reported; or
|
29
|
+
- `false` to specifically un-ban this type (useful when you are using `extendDefaults`); or
|
30
|
+
- An object with the following properties:
|
31
|
+
- `message: string`: the message to display when the type is matched.
|
32
|
+
- `fixWith?: string`: a string to replace the banned type with when the fixer is run. If this is omitted, no fix will be done.
|
33
|
+
- `suggest?: string[]`: a list of suggested replacements for the banned type.
|
34
|
+
|
35
|
+
Example configuration:
|
36
|
+
|
37
|
+
```jsonc
|
38
|
+
{
|
39
|
+
"@typescript-eslint/no-restricted-types": [
|
40
|
+
"error",
|
41
|
+
{
|
42
|
+
"types": {
|
43
|
+
// add a custom message to help explain why not to use it
|
44
|
+
"OldType": "Don't use OldType because it is unsafe",
|
45
|
+
|
46
|
+
// add a custom message, and tell the plugin how to fix it
|
47
|
+
"OldAPI": {
|
48
|
+
"message": "Use NewAPI instead",
|
49
|
+
"fixWith": "NewAPI",
|
50
|
+
},
|
51
|
+
|
52
|
+
// add a custom message, and tell the plugin how to suggest a fix
|
53
|
+
"SoonToBeOldAPI": {
|
54
|
+
"message": "Use NewAPI instead",
|
55
|
+
"suggest": ["NewAPIOne", "NewAPITwo"],
|
56
|
+
},
|
57
|
+
},
|
58
|
+
},
|
59
|
+
],
|
60
|
+
}
|
61
|
+
```
|
62
|
+
|
63
|
+
## When Not To Use It
|
64
|
+
|
65
|
+
If you have no need to ban specific types from being used in type annotations, you don't need this rule.
|
66
|
+
|
67
|
+
## Related To
|
68
|
+
|
69
|
+
- [`no-empty-object-type`](./no-empty-object-type.mdx)
|
70
|
+
- [`no-unsafe-function-type`](./no-unsafe-function-type.mdx)
|
71
|
+
- [`no-wrapper-object-types`](./no-wrapper-object-types.mdx)
|
@@ -19,7 +19,7 @@ TypeScript type aliases are a commonly necessary language feature; banning it al
|
|
19
19
|
:::note
|
20
20
|
|
21
21
|
If you want to ban certain classifications of type aliases, consider using [`no-restricted-syntax`](https://eslint.org/docs/latest/rules/no-restricted-syntax).
|
22
|
-
See [Troubleshooting & FAQs](/troubleshooting#how-can-i-ban-specific-language-feature).
|
22
|
+
See [Troubleshooting & FAQs](/troubleshooting/faqs/general#how-can-i-ban-specific-language-feature).
|
23
23
|
|
24
24
|
:::
|
25
25
|
|