@typescript-eslint/eslint-plugin 8.1.1-alpha.1 → 8.1.1-alpha.11
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/rules/array-type.js +4 -1
- package/dist/rules/array-type.js.map +1 -1
- package/dist/rules/consistent-generic-constructors.js +1 -1
- package/dist/rules/consistent-generic-constructors.js.map +1 -1
- package/dist/rules/enum-utils/shared.js +1 -1
- package/dist/rules/enum-utils/shared.js.map +1 -1
- package/dist/rules/init-declarations.js +1 -1
- package/dist/rules/init-declarations.js.map +1 -1
- package/dist/rules/member-ordering.js +1 -1
- package/dist/rules/member-ordering.js.map +1 -1
- package/dist/rules/naming-convention-utils/shared.js +1 -1
- package/dist/rules/naming-convention-utils/shared.js.map +1 -1
- package/dist/rules/no-floating-promises.js +2 -2
- package/dist/rules/no-floating-promises.js.map +1 -1
- package/dist/rules/no-invalid-void-type.js +2 -2
- package/dist/rules/no-invalid-void-type.js.map +1 -1
- package/dist/rules/no-redundant-type-constituents.js +10 -2
- package/dist/rules/no-redundant-type-constituents.js.map +1 -1
- package/dist/rules/no-restricted-types.js +1 -1
- package/dist/rules/no-restricted-types.js.map +1 -1
- package/dist/rules/no-unnecessary-template-expression.js +3 -3
- package/dist/rules/no-unnecessary-template-expression.js.map +1 -1
- package/dist/rules/no-unnecessary-type-assertion.js +44 -17
- package/dist/rules/no-unnecessary-type-assertion.js.map +1 -1
- package/dist/rules/no-unnecessary-type-constraint.js +2 -2
- package/dist/rules/no-unnecessary-type-constraint.js.map +1 -1
- package/dist/rules/no-unnecessary-type-parameters.js +1 -1
- package/dist/rules/no-unnecessary-type-parameters.js.map +1 -1
- package/dist/rules/no-unsafe-assignment.js +2 -2
- package/dist/rules/no-unsafe-assignment.js.map +1 -1
- package/dist/rules/no-unsafe-enum-comparison.js +23 -6
- package/dist/rules/no-unsafe-enum-comparison.js.map +1 -1
- package/dist/rules/prefer-function-type.js +5 -7
- package/dist/rules/prefer-function-type.js.map +1 -1
- package/dist/rules/prefer-includes.js +1 -1
- package/dist/rules/prefer-includes.js.map +1 -1
- package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +2 -2
- package/dist/rules/prefer-optional-chain-utils/analyzeChain.js.map +1 -1
- package/dist/rules/require-await.js +80 -0
- package/dist/rules/require-await.js.map +1 -1
- package/dist/rules/unbound-method.js +1 -3
- package/dist/rules/unbound-method.js.map +1 -1
- package/dist/rules/use-unknown-in-catch-callback-variable.js +48 -89
- package/dist/rules/use-unknown-in-catch-callback-variable.js.map +1 -1
- package/dist/util/escapeRegExp.js +1 -1
- package/dist/util/escapeRegExp.js.map +1 -1
- package/dist/util/index.js +2 -0
- package/dist/util/index.js.map +1 -1
- package/dist/util/isStartOfExpressionStatement.js +23 -0
- package/dist/util/isStartOfExpressionStatement.js.map +1 -0
- package/dist/util/needsPrecedingSemiColon.js +98 -0
- package/dist/util/needsPrecedingSemiColon.js.map +1 -0
- package/docs/rules/no-unsafe-return.mdx +1 -1
- package/docs/rules/no-use-before-define.mdx +1 -1
- package/docs/rules/use-unknown-in-catch-callback-variable.mdx +13 -4
- package/package.json +7 -7
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"require-await.js","sourceRoot":"","sources":["../../src/rules/require-await.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
1
|
+
{"version":3,"file":"require-await.js","sourceRoot":"","sources":["../../src/rules/require-await.ts"],"names":[],"mappings":"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"}
|
@@ -100,9 +100,7 @@ exports.default = (0, util_1.createRule)({
|
|
100
100
|
},
|
101
101
|
messages: {
|
102
102
|
unbound: BASE_MESSAGE,
|
103
|
-
unboundWithoutThisAnnotation: BASE_MESSAGE
|
104
|
-
'\n' +
|
105
|
-
'If your function does not access `this`, you can annotate it with `this: void`, or consider using an arrow function instead.',
|
103
|
+
unboundWithoutThisAnnotation: `${BASE_MESSAGE}\nIf your function does not access \`this\`, you can annotate it with \`this: void\`, or consider using an arrow function instead.`,
|
106
104
|
},
|
107
105
|
schema: [
|
108
106
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"unbound-method.js","sourceRoot":"","sources":["../../src/rules/unbound-method.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA0D;AAC1D,sDAAwC;AACxC,+CAAiC;AAEjC,kCAMiB;AAcjB;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAG;IACxB,QAAQ;IACR,QAAQ;IACR,QAAQ,EAAE,wEAAwE;IAClF,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,SAAS;IACT,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC;AACX,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;IACpC,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;QAC3B,+EAA+E;QAC/E,qEAAqE;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;SACtC,MAAM,CACL,IAAI,CAAC,EAAE,CACL,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,OAAQ,MAAkC,CAAC,IAAI,CAAC,KAAK,UAAU,CAClE;SACA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,OAAO;IACP,kBAAkB;IAClB,SAAS;IACT,iBAAiB;IACjB,SAAS;IACT,MAAM;IACN,MAAM;CACP,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,MAAiB,EACjB,iBAA4C,EACnC,EAAE;IACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,sEAAsE;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,CAAC,CAAC,iBAAiB;QACnB,iBAAiB,KAAK,gBAAgB,CAAC,aAAa,EAAE,CACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAChB,oFAAoF,CAAC;AAEvF,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,WAAW,EACT,8DAA8D;YAChE,WAAW,EAAE,aAAa;YAC1B,oBAAoB,EAAE,IAAI;SAC3B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,YAAY;YACrB,4BAA4B,
|
1
|
+
{"version":3,"file":"unbound-method.js","sourceRoot":"","sources":["../../src/rules/unbound-method.ts"],"names":[],"mappings":"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"}
|
@@ -26,25 +26,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
const utils_1 = require("@typescript-eslint/utils");
|
27
27
|
const tsutils = __importStar(require("ts-api-utils"));
|
28
28
|
const util_1 = require("../util");
|
29
|
-
const useUnknownMessageBase = 'Prefer the safe `: unknown` for a
|
29
|
+
const useUnknownMessageBase = 'Prefer the safe `: unknown` for a `{{method}}`{{append}} callback variable.';
|
30
|
+
/**
|
31
|
+
* `x.memberName` => 'memberKey'
|
32
|
+
*
|
33
|
+
* `const mk = 'memberKey'; x[mk]` => 'memberKey'
|
34
|
+
*
|
35
|
+
* `const mk = 1234; x[mk]` => 1234
|
36
|
+
*/
|
37
|
+
const getStaticMemberAccessKey = ({ computed, property }, scope) => computed ? (0, util_1.getStaticValue)(property, scope) : { value: property.name };
|
30
38
|
exports.default = (0, util_1.createRule)({
|
31
39
|
name: 'use-unknown-in-catch-callback-variable',
|
32
40
|
meta: {
|
33
41
|
docs: {
|
34
|
-
description: 'Enforce typing arguments in
|
42
|
+
description: 'Enforce typing arguments in Promise rejection callbacks as `unknown`',
|
35
43
|
requiresTypeChecking: true,
|
36
44
|
recommended: 'strict',
|
37
45
|
},
|
38
46
|
type: 'suggestion',
|
39
47
|
messages: {
|
40
48
|
useUnknown: useUnknownMessageBase,
|
41
|
-
useUnknownArrayDestructuringPattern: useUnknownMessageBase
|
42
|
-
useUnknownObjectDestructuringPattern: useUnknownMessageBase
|
43
|
-
|
44
|
-
|
45
|
-
' The argument list may contain a handler that does not use `unknown` for the catch callback variable.',
|
46
|
-
addUnknownTypeAnnotationSuggestion: 'Add an explicit `: unknown` type annotation to the catch variable.',
|
47
|
-
addUnknownRestTypeAnnotationSuggestion: 'Add an explicit `: [unknown]` type annotation to the catch rest variable.',
|
49
|
+
useUnknownArrayDestructuringPattern: `${useUnknownMessageBase} The thrown error may not be iterable.`,
|
50
|
+
useUnknownObjectDestructuringPattern: `${useUnknownMessageBase} The thrown error may be nullable, or may not have the expected shape.`,
|
51
|
+
addUnknownTypeAnnotationSuggestion: 'Add an explicit `: unknown` type annotation to the rejection callback variable.',
|
52
|
+
addUnknownRestTypeAnnotationSuggestion: 'Add an explicit `: [unknown]` type annotation to the rejection callback rest variable.',
|
48
53
|
wrongTypeAnnotationSuggestion: 'Change existing type annotation to `: unknown`.',
|
49
54
|
wrongRestTypeAnnotationSuggestion: 'Change existing type annotation to `: [unknown]`.',
|
50
55
|
},
|
@@ -54,17 +59,8 @@ exports.default = (0, util_1.createRule)({
|
|
54
59
|
},
|
55
60
|
defaultOptions: [],
|
56
61
|
create(context) {
|
57
|
-
const
|
58
|
-
const checker =
|
59
|
-
function isPromiseCatchAccess(node) {
|
60
|
-
if (!(node.type === utils_1.AST_NODE_TYPES.MemberExpression &&
|
61
|
-
isStaticMemberAccessOfValue(node, 'catch'))) {
|
62
|
-
return false;
|
63
|
-
}
|
64
|
-
const objectTsNode = services.esTreeNodeToTSNodeMap.get(node.object);
|
65
|
-
const tsNode = services.esTreeNodeToTSNodeMap.get(node);
|
66
|
-
return tsutils.isThenableType(checker, tsNode, checker.getTypeAtLocation(objectTsNode));
|
67
|
-
}
|
62
|
+
const { program, esTreeNodeToTSNodeMap } = (0, util_1.getParserServices)(context);
|
63
|
+
const checker = program.getTypeChecker();
|
68
64
|
function isFlaggableHandlerType(type) {
|
69
65
|
for (const unionPart of tsutils.unionTypeParts(type)) {
|
70
66
|
const callSignatures = tsutils.getCallSignaturesOfType(unionPart);
|
@@ -99,40 +95,11 @@ exports.default = (0, util_1.createRule)({
|
|
99
95
|
}
|
100
96
|
return false;
|
101
97
|
}
|
102
|
-
/**
|
103
|
-
* If passed an ordinary expression, this will check it as expected.
|
104
|
-
*
|
105
|
-
* If passed a spread element, it treats it as the union of unwrapped array/tuple type.
|
106
|
-
*/
|
107
98
|
function shouldFlagArgument(node) {
|
108
|
-
const argument =
|
99
|
+
const argument = esTreeNodeToTSNodeMap.get(node);
|
109
100
|
const typeOfArgument = checker.getTypeAtLocation(argument);
|
110
101
|
return isFlaggableHandlerType(typeOfArgument);
|
111
102
|
}
|
112
|
-
function shouldFlagMultipleSpreadArgs(argumentsList) {
|
113
|
-
// One could try to be clever about unpacking fixed length tuples and stuff
|
114
|
-
// like that, but there's no need, since this is all invalid use of `.catch`
|
115
|
-
// anyway at the end of the day. Instead, we'll just check whether any of the
|
116
|
-
// possible args types would violate the rule on its own.
|
117
|
-
return argumentsList.some(argument => shouldFlagArgument(argument));
|
118
|
-
}
|
119
|
-
function shouldFlagSingleSpreadArg(node) {
|
120
|
-
const spreadArgs = services.esTreeNodeToTSNodeMap.get(node.argument);
|
121
|
-
const spreadArgsType = checker.getTypeAtLocation(spreadArgs);
|
122
|
-
if (checker.isArrayType(spreadArgsType)) {
|
123
|
-
const arrayType = checker.getTypeArguments(spreadArgsType)[0];
|
124
|
-
return isFlaggableHandlerType(arrayType);
|
125
|
-
}
|
126
|
-
if (checker.isTupleType(spreadArgsType)) {
|
127
|
-
const firstType = checker.getTypeArguments(spreadArgsType).at(0);
|
128
|
-
if (!firstType) {
|
129
|
-
// empty spread args. Suspect code, but not a problem for this rule.
|
130
|
-
return false;
|
131
|
-
}
|
132
|
-
return isFlaggableHandlerType(firstType);
|
133
|
-
}
|
134
|
-
return true;
|
135
|
-
}
|
136
103
|
/**
|
137
104
|
* Analyzes the syntax of the catch argument and makes a best effort to pinpoint
|
138
105
|
* why it's reporting, and to come up with a suggested fix if possible.
|
@@ -140,7 +107,7 @@ exports.default = (0, util_1.createRule)({
|
|
140
107
|
* This function is explicitly operating under the assumption that the
|
141
108
|
* rule _is reporting_, so it is not guaranteed to be sound to call otherwise.
|
142
109
|
*/
|
143
|
-
function
|
110
|
+
function refineReportIfPossible(argument) {
|
144
111
|
// Only know how to be helpful if a function literal has been provided.
|
145
112
|
if (!(argument.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
|
146
113
|
argument.type === utils_1.AST_NODE_TYPES.FunctionExpression)) {
|
@@ -226,39 +193,45 @@ exports.default = (0, util_1.createRule)({
|
|
226
193
|
}
|
227
194
|
}
|
228
195
|
return {
|
229
|
-
CallExpression(
|
230
|
-
if (
|
196
|
+
CallExpression({ arguments: args, callee }) {
|
197
|
+
if (callee.type !== utils_1.AST_NODE_TYPES.MemberExpression) {
|
231
198
|
return;
|
232
199
|
}
|
233
|
-
const
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
});
|
243
|
-
}
|
244
|
-
}
|
245
|
-
else if (shouldFlagMultipleSpreadArgs(node.arguments)) {
|
246
|
-
context.report({
|
247
|
-
node,
|
248
|
-
messageId: 'useUnknownSpreadArgs',
|
249
|
-
});
|
250
|
-
}
|
200
|
+
const staticMemberAccessKey = getStaticMemberAccessKey(callee, context.sourceCode.getScope(callee));
|
201
|
+
if (!staticMemberAccessKey) {
|
202
|
+
return;
|
203
|
+
}
|
204
|
+
const promiseMethodInfo = [
|
205
|
+
{ method: 'catch', append: '', argIndexToCheck: 0 },
|
206
|
+
{ method: 'then', append: ' rejection', argIndexToCheck: 1 },
|
207
|
+
].find(({ method }) => staticMemberAccessKey.value === method);
|
208
|
+
if (!promiseMethodInfo) {
|
251
209
|
return;
|
252
210
|
}
|
253
|
-
//
|
211
|
+
// Need to be enough args to check
|
212
|
+
const { argIndexToCheck, ...data } = promiseMethodInfo;
|
213
|
+
if (args.length < argIndexToCheck + 1) {
|
214
|
+
return;
|
215
|
+
}
|
216
|
+
// Argument to check, and all arguments before it, must be "ordinary" arguments (i.e. no spread arguments)
|
254
217
|
// promise.catch(f), promise.catch(() => {}), promise.catch(<expression>, <<other-args>>)
|
255
|
-
|
218
|
+
const argsToCheck = args.slice(0, argIndexToCheck + 1);
|
219
|
+
if (argsToCheck.some(({ type }) => type === utils_1.AST_NODE_TYPES.SpreadElement)) {
|
220
|
+
return;
|
221
|
+
}
|
222
|
+
if (!tsutils.isThenableType(checker, esTreeNodeToTSNodeMap.get(callee), checker.getTypeAtLocation(esTreeNodeToTSNodeMap.get(callee.object)))) {
|
223
|
+
return;
|
224
|
+
}
|
225
|
+
// the `some` check above has already excluded `SpreadElement`, so we are safe to assert the same
|
226
|
+
const node = argsToCheck[argIndexToCheck];
|
227
|
+
if (shouldFlagArgument(node)) {
|
256
228
|
// We are now guaranteed to report, but we have a bit of work to do
|
257
229
|
// to determine exactly where, and whether we can fix it.
|
258
|
-
const overrides =
|
230
|
+
const overrides = refineReportIfPossible(node);
|
259
231
|
context.report({
|
260
|
-
node
|
232
|
+
node,
|
261
233
|
messageId: 'useUnknown',
|
234
|
+
data,
|
262
235
|
...overrides,
|
263
236
|
});
|
264
237
|
}
|
@@ -266,18 +239,4 @@ exports.default = (0, util_1.createRule)({
|
|
266
239
|
};
|
267
240
|
},
|
268
241
|
});
|
269
|
-
/**
|
270
|
-
* Answers whether the member expression looks like
|
271
|
-
* `x.memberName`, `x['memberName']`,
|
272
|
-
* or even `const mn = 'memberName'; x[mn]` (or optional variants thereof).
|
273
|
-
*/
|
274
|
-
function isStaticMemberAccessOfValue(memberExpression, value, scope) {
|
275
|
-
if (!memberExpression.computed) {
|
276
|
-
// x.memberName case.
|
277
|
-
return memberExpression.property.name === value;
|
278
|
-
}
|
279
|
-
// x['memberName'] cases.
|
280
|
-
const staticValueResult = (0, util_1.getStaticValue)(memberExpression.property, scope);
|
281
|
-
return staticValueResult != null && value === staticValueResult.value;
|
282
|
-
}
|
283
242
|
//# sourceMappingURL=use-unknown-in-catch-callback-variable.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-unknown-in-catch-callback-variable.js","sourceRoot":"","sources":["../../src/rules/use-unknown-in-catch-callback-variable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"use-unknown-in-catch-callback-variable.js","sourceRoot":"","sources":["../../src/rules/use-unknown-in-catch-callback-variable.ts"],"names":[],"mappings":"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"}
|
@@ -9,7 +9,7 @@ const reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
|
9
9
|
const reHasRegExpChar = RegExp(reRegExpChar.source);
|
10
10
|
function escapeRegExp(string = '') {
|
11
11
|
return string && reHasRegExpChar.test(string)
|
12
|
-
? string.
|
12
|
+
? string.replaceAll(reRegExpChar, '\\$&')
|
13
13
|
: string;
|
14
14
|
}
|
15
15
|
//# sourceMappingURL=escapeRegExp.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"escapeRegExp.js","sourceRoot":"","sources":["../../src/util/escapeRegExp.ts"],"names":[],"mappings":";;AAOA,oCAIC;AAXD;;;GAGG;AACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,SAAgB,YAAY,CAAC,MAAM,GAAG,EAAE;IACtC,OAAO,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"escapeRegExp.js","sourceRoot":"","sources":["../../src/util/escapeRegExp.ts"],"names":[],"mappings":";;AAOA,oCAIC;AAXD;;;GAGG;AACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,SAAgB,YAAY,CAAC,MAAM,GAAG,EAAE;IACtC,OAAO,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC;AACb,CAAC"}
|
package/dist/util/index.js
CHANGED
@@ -28,8 +28,10 @@ __exportStar(require("./getThisExpression"), exports);
|
|
28
28
|
__exportStar(require("./getWrappingFixer"), exports);
|
29
29
|
__exportStar(require("./isNodeEqual"), exports);
|
30
30
|
__exportStar(require("./isNullLiteral"), exports);
|
31
|
+
__exportStar(require("./isStartOfExpressionStatement"), exports);
|
31
32
|
__exportStar(require("./isUndefinedIdentifier"), exports);
|
32
33
|
__exportStar(require("./misc"), exports);
|
34
|
+
__exportStar(require("./needsPrecedingSemiColon"), exports);
|
33
35
|
__exportStar(require("./objectIterators"), exports);
|
34
36
|
__exportStar(require("./scopeUtils"), exports);
|
35
37
|
__exportStar(require("./types"), exports);
|
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,2DAAyC;AACzC,sDAAoC;AACpC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,yCAAuB;AACvB,oDAAkC;AAClC,+CAA6B;AAC7B,0CAAwB;AACxB,+CAA6B;AAC7B,oDAAkC;AAElC,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,iEAA+C;AAC/C,0DAAwC;AACxC,yCAAuB;AACvB,4DAA0C;AAC1C,oDAAkC;AAClC,+CAA6B;AAC7B,0CAAwB;AACxB,+CAA6B;AAC7B,oDAAkC;AAElC,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"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isStartOfExpressionStatement = isStartOfExpressionStatement;
|
4
|
+
const utils_1 = require("@typescript-eslint/utils");
|
5
|
+
// The following is copied from `eslint`'s source code.
|
6
|
+
// https://github.com/eslint/eslint/blob/3a4eaf921543b1cd5d1df4ea9dec02fab396af2a/lib/rules/utils/ast-utils.js#L1026-L1041
|
7
|
+
// Could be export { isStartOfExpressionStatement } from 'eslint/lib/rules/utils/ast-utils'
|
8
|
+
/**
|
9
|
+
* Tests if a node appears at the beginning of an ancestor ExpressionStatement node.
|
10
|
+
* @param node The node to check.
|
11
|
+
* @returns Whether the node appears at the beginning of an ancestor ExpressionStatement node.
|
12
|
+
*/
|
13
|
+
function isStartOfExpressionStatement(node) {
|
14
|
+
const start = node.range[0];
|
15
|
+
let ancestor = node;
|
16
|
+
while ((ancestor = ancestor.parent) && ancestor.range[0] === start) {
|
17
|
+
if (ancestor.type === utils_1.AST_NODE_TYPES.ExpressionStatement) {
|
18
|
+
return true;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
return false;
|
22
|
+
}
|
23
|
+
//# sourceMappingURL=isStartOfExpressionStatement.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"isStartOfExpressionStatement.js","sourceRoot":"","sources":["../../src/util/isStartOfExpressionStatement.ts"],"names":[],"mappings":";;AAWA,oEAUC;AApBD,oDAA0D;AAE1D,uDAAuD;AACvD,0HAA0H;AAC1H,2FAA2F;AAC3F;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,IAAmB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,GAA8B,IAAI,CAAC;IAE/C,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,mBAAmB,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
@@ -0,0 +1,98 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.needsPrecedingSemicolon = needsPrecedingSemicolon;
|
4
|
+
const utils_1 = require("@typescript-eslint/utils");
|
5
|
+
const ast_utils_1 = require("@typescript-eslint/utils/ast-utils");
|
6
|
+
// The following is adapted from `eslint`'s source code.
|
7
|
+
// https://github.com/eslint/eslint/blob/3a4eaf921543b1cd5d1df4ea9dec02fab396af2a/lib/rules/utils/ast-utils.js#L1043-L1132
|
8
|
+
// Could be export { isStartOfExpressionStatement } from 'eslint/lib/rules/utils/ast-utils'
|
9
|
+
const BREAK_OR_CONTINUE = new Set([
|
10
|
+
utils_1.AST_NODE_TYPES.BreakStatement,
|
11
|
+
utils_1.AST_NODE_TYPES.ContinueStatement,
|
12
|
+
]);
|
13
|
+
// Declaration types that must contain a string Literal node at the end.
|
14
|
+
const DECLARATIONS = new Set([
|
15
|
+
utils_1.AST_NODE_TYPES.ExportAllDeclaration,
|
16
|
+
utils_1.AST_NODE_TYPES.ExportNamedDeclaration,
|
17
|
+
utils_1.AST_NODE_TYPES.ImportDeclaration,
|
18
|
+
]);
|
19
|
+
const IDENTIFIER_OR_KEYWORD = new Set([
|
20
|
+
utils_1.AST_NODE_TYPES.Identifier,
|
21
|
+
utils_1.AST_TOKEN_TYPES.Keyword,
|
22
|
+
]);
|
23
|
+
// Keywords that can immediately precede an ExpressionStatement node, mapped to the their node types.
|
24
|
+
const NODE_TYPES_BY_KEYWORD = {
|
25
|
+
__proto__: null,
|
26
|
+
break: utils_1.AST_NODE_TYPES.BreakStatement,
|
27
|
+
continue: utils_1.AST_NODE_TYPES.ContinueStatement,
|
28
|
+
debugger: utils_1.AST_NODE_TYPES.DebuggerStatement,
|
29
|
+
do: utils_1.AST_NODE_TYPES.DoWhileStatement,
|
30
|
+
else: utils_1.AST_NODE_TYPES.IfStatement,
|
31
|
+
return: utils_1.AST_NODE_TYPES.ReturnStatement,
|
32
|
+
yield: utils_1.AST_NODE_TYPES.YieldExpression,
|
33
|
+
};
|
34
|
+
/*
|
35
|
+
* Before an opening parenthesis, postfix `++` and `--` always trigger ASI;
|
36
|
+
* the tokens `:`, `;`, `{` and `=>` don't expect a semicolon, as that would count as an empty statement.
|
37
|
+
*/
|
38
|
+
const PUNCTUATORS = new Set([':', ';', '{', '=>', '++', '--']);
|
39
|
+
/*
|
40
|
+
* Statements that can contain an `ExpressionStatement` after a closing parenthesis.
|
41
|
+
* DoWhileStatement is an exception in that it always triggers ASI after the closing parenthesis.
|
42
|
+
*/
|
43
|
+
const STATEMENTS = new Set([
|
44
|
+
utils_1.AST_NODE_TYPES.DoWhileStatement,
|
45
|
+
utils_1.AST_NODE_TYPES.ForInStatement,
|
46
|
+
utils_1.AST_NODE_TYPES.ForOfStatement,
|
47
|
+
utils_1.AST_NODE_TYPES.ForStatement,
|
48
|
+
utils_1.AST_NODE_TYPES.IfStatement,
|
49
|
+
utils_1.AST_NODE_TYPES.WhileStatement,
|
50
|
+
utils_1.AST_NODE_TYPES.WithStatement,
|
51
|
+
]);
|
52
|
+
/**
|
53
|
+
* Determines whether an opening parenthesis `(`, bracket `[` or backtick ``` ` ``` needs to be preceded by a semicolon.
|
54
|
+
* This opening parenthesis or bracket should be at the start of an `ExpressionStatement`, a `MethodDefinition` or at
|
55
|
+
* the start of the body of an `ArrowFunctionExpression`.
|
56
|
+
* @param sourceCode The source code object.
|
57
|
+
* @param node A node at the position where an opening parenthesis or bracket will be inserted.
|
58
|
+
* @returns Whether a semicolon is required before the opening parenthesis or bracket.
|
59
|
+
*/
|
60
|
+
function needsPrecedingSemicolon(sourceCode, node) {
|
61
|
+
const prevToken = sourceCode.getTokenBefore(node);
|
62
|
+
if (!prevToken ||
|
63
|
+
(prevToken.type === utils_1.AST_TOKEN_TYPES.Punctuator &&
|
64
|
+
PUNCTUATORS.has(prevToken.value))) {
|
65
|
+
return false;
|
66
|
+
}
|
67
|
+
const prevNode = sourceCode.getNodeByRangeIndex(prevToken.range[0]);
|
68
|
+
if (!prevNode) {
|
69
|
+
return false;
|
70
|
+
}
|
71
|
+
if ((0, ast_utils_1.isClosingParenToken)(prevToken)) {
|
72
|
+
return !STATEMENTS.has(prevNode.type);
|
73
|
+
}
|
74
|
+
if ((0, ast_utils_1.isClosingBraceToken)(prevToken)) {
|
75
|
+
return ((prevNode.type === utils_1.AST_NODE_TYPES.BlockStatement &&
|
76
|
+
prevNode.parent.type === utils_1.AST_NODE_TYPES.FunctionExpression &&
|
77
|
+
prevNode.parent.parent.type !== utils_1.AST_NODE_TYPES.MethodDefinition) ||
|
78
|
+
(prevNode.type === utils_1.AST_NODE_TYPES.ClassBody &&
|
79
|
+
prevNode.parent.type === utils_1.AST_NODE_TYPES.ClassExpression) ||
|
80
|
+
prevNode.type === utils_1.AST_NODE_TYPES.ObjectExpression);
|
81
|
+
}
|
82
|
+
if (!prevNode.parent) {
|
83
|
+
return false;
|
84
|
+
}
|
85
|
+
if (IDENTIFIER_OR_KEYWORD.has(prevToken.type)) {
|
86
|
+
if (BREAK_OR_CONTINUE.has(prevNode.parent.type)) {
|
87
|
+
return false;
|
88
|
+
}
|
89
|
+
const keyword = prevToken.value;
|
90
|
+
const nodeType = NODE_TYPES_BY_KEYWORD[keyword];
|
91
|
+
return prevNode.type !== nodeType;
|
92
|
+
}
|
93
|
+
if (prevToken.type === utils_1.AST_TOKEN_TYPES.String) {
|
94
|
+
return !DECLARATIONS.has(prevNode.parent.type);
|
95
|
+
}
|
96
|
+
return true;
|
97
|
+
}
|
98
|
+
//# sourceMappingURL=needsPrecedingSemiColon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"needsPrecedingSemiColon.js","sourceRoot":"","sources":["../../src/util/needsPrecedingSemiColon.ts"],"names":[],"mappings":"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"}
|
@@ -13,7 +13,7 @@ The `any` type in TypeScript is a dangerous "escape hatch" from the type system.
|
|
13
13
|
Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code.
|
14
14
|
|
15
15
|
Despite your best intentions, the `any` type can sometimes leak into your codebase.
|
16
|
-
Returning an
|
16
|
+
Returning an `any`-typed value from a function creates a potential type safety hole and source of bugs in your codebase.
|
17
17
|
|
18
18
|
This rule disallows returning `any` or `any[]` from a function and returning `Promise<any>` from an async function.
|
19
19
|
|
@@ -80,7 +80,7 @@ type StringOrNumber = string | number;
|
|
80
80
|
### `ignoreTypeReferences`
|
81
81
|
|
82
82
|
If this is `true`, this rule ignores all type references, such as in type annotations and assertions.
|
83
|
-
If this is `false`, this will
|
83
|
+
If this is `false`, this will check all type references.
|
84
84
|
|
85
85
|
Examples of **correct** code for the `{ "ignoreTypeReferences": true }` option:
|
86
86
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
---
|
2
|
-
description: 'Enforce typing arguments in
|
2
|
+
description: 'Enforce typing arguments in Promise rejection callbacks as `unknown`.'
|
3
3
|
---
|
4
4
|
|
5
5
|
import Tabs from '@theme/Tabs';
|
@@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem';
|
|
9
9
|
>
|
10
10
|
> See **https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable** for documentation.
|
11
11
|
|
12
|
-
This rule enforces that you always use the `unknown` type for the parameter of a
|
12
|
+
This rule enforces that you always use the `unknown` type for the parameter of a Promise rejection callback.
|
13
13
|
|
14
14
|
<Tabs>
|
15
15
|
<TabItem value="❌ Incorrect">
|
@@ -26,6 +26,15 @@ Promise.reject(new Error('I will reject!')).catch((err: any) => {
|
|
26
26
|
Promise.reject(new Error('I will reject!')).catch((err: Error) => {
|
27
27
|
console.log(err);
|
28
28
|
});
|
29
|
+
|
30
|
+
Promise.reject(new Error('I will reject!')).then(
|
31
|
+
result => {
|
32
|
+
console.log(result);
|
33
|
+
},
|
34
|
+
err => {
|
35
|
+
console.log(err);
|
36
|
+
},
|
37
|
+
);
|
29
38
|
```
|
30
39
|
|
31
40
|
</TabItem>
|
@@ -70,7 +79,7 @@ Promise.reject(x).catch((err: unknown) => {
|
|
70
79
|
```
|
71
80
|
|
72
81
|
:::info
|
73
|
-
There is actually a way to have the `catch()` callback
|
82
|
+
There is actually a way to have the `catch()` and `then()` callback variables use the `unknown` type _without_ an explicit type annotation at the call sites, but it has the drawback that it involves overriding global type declarations.
|
74
83
|
For example, the library [better-TypeScript-lib](https://github.com/uhyo/better-typescript-lib) sets this up globally for your project (see [the relevant lines in the better-TypeScript-lib source code](https://github.com/uhyo/better-typescript-lib/blob/c294e177d1cc2b1d1803febf8192a4c83a1fe028/lib/lib.es5.d.ts#L635) for details on how).
|
75
84
|
|
76
85
|
For further reading on this, you may also want to look into
|
@@ -81,4 +90,4 @@ For further reading on this, you may also want to look into
|
|
81
90
|
|
82
91
|
If your codebase is not yet able to enable `useUnknownInCatchVariables`, it likely would be similarly difficult to enable this rule.
|
83
92
|
|
84
|
-
If you have modified the global type declarations in order to make `catch()` callbacks use the `unknown` type without an explicit type annotation, you do not need this rule.
|
93
|
+
If you have modified the global type declarations in order to make `then()` and `catch()` callbacks use the `unknown` type without an explicit type annotation, you do not need this rule.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
3
|
-
"version": "8.1.1-alpha.
|
3
|
+
"version": "8.1.1-alpha.11",
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -60,10 +60,10 @@
|
|
60
60
|
},
|
61
61
|
"dependencies": {
|
62
62
|
"@eslint-community/regexpp": "^4.10.0",
|
63
|
-
"@typescript-eslint/scope-manager": "8.1.1-alpha.
|
64
|
-
"@typescript-eslint/type-utils": "8.1.1-alpha.
|
65
|
-
"@typescript-eslint/utils": "8.1.1-alpha.
|
66
|
-
"@typescript-eslint/visitor-keys": "8.1.1-alpha.
|
63
|
+
"@typescript-eslint/scope-manager": "8.1.1-alpha.11",
|
64
|
+
"@typescript-eslint/type-utils": "8.1.1-alpha.11",
|
65
|
+
"@typescript-eslint/utils": "8.1.1-alpha.11",
|
66
|
+
"@typescript-eslint/visitor-keys": "8.1.1-alpha.11",
|
67
67
|
"graphemer": "^1.4.0",
|
68
68
|
"ignore": "^5.3.1",
|
69
69
|
"natural-compare": "^1.4.0",
|
@@ -74,8 +74,8 @@
|
|
74
74
|
"@types/marked": "^5.0.2",
|
75
75
|
"@types/mdast": "^4.0.3",
|
76
76
|
"@types/natural-compare": "*",
|
77
|
-
"@typescript-eslint/rule-schema-to-typescript-types": "8.1.1-alpha.
|
78
|
-
"@typescript-eslint/rule-tester": "8.1.1-alpha.
|
77
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.1.1-alpha.11",
|
78
|
+
"@typescript-eslint/rule-tester": "8.1.1-alpha.11",
|
79
79
|
"ajv": "^6.12.6",
|
80
80
|
"cross-env": "^7.0.3",
|
81
81
|
"cross-fetch": "*",
|