@typescript-eslint/eslint-plugin 8.67.1-alpha.2 → 8.67.1-alpha.20
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/CHANGELOG.md +5880 -0
- package/dist/configs/eslint-recommended-raw.js +1 -0
- package/dist/configs/eslintrc/all.js +1 -0
- package/dist/configs/eslintrc/base.js +1 -0
- package/dist/configs/eslintrc/disable-type-checked.js +1 -0
- package/dist/configs/eslintrc/eslint-recommended.js +1 -0
- package/dist/configs/eslintrc/recommended-type-checked-only.js +1 -0
- package/dist/configs/eslintrc/recommended-type-checked.js +1 -0
- package/dist/configs/eslintrc/recommended.js +1 -0
- package/dist/configs/eslintrc/strict-type-checked-only.js +1 -0
- package/dist/configs/eslintrc/strict-type-checked.js +1 -0
- package/dist/configs/eslintrc/strict.js +1 -0
- package/dist/configs/eslintrc/stylistic-type-checked-only.js +1 -0
- package/dist/configs/eslintrc/stylistic-type-checked.js +1 -0
- package/dist/configs/eslintrc/stylistic.js +1 -0
- package/dist/configs/flat/all.js +1 -0
- package/dist/configs/flat/base.js +1 -0
- package/dist/configs/flat/disable-type-checked.js +1 -0
- package/dist/configs/flat/eslint-recommended.js +1 -0
- package/dist/configs/flat/recommended-type-checked-only.js +1 -0
- package/dist/configs/flat/recommended-type-checked.js +1 -0
- package/dist/configs/flat/recommended.js +1 -0
- package/dist/configs/flat/strict-type-checked-only.js +1 -0
- package/dist/configs/flat/strict-type-checked.js +1 -0
- package/dist/configs/flat/strict.js +1 -0
- package/dist/configs/flat/stylistic-type-checked-only.js +1 -0
- package/dist/configs/flat/stylistic-type-checked.js +1 -0
- package/dist/configs/flat/stylistic.js +1 -0
- package/dist/index.js +1 -0
- package/dist/raw-plugin.js +1 -0
- package/dist/rules/adjacent-overload-signatures.js +1 -0
- package/dist/rules/array-type.js +1 -0
- package/dist/rules/await-thenable.js +1 -0
- package/dist/rules/ban-ts-comment.js +1 -0
- package/dist/rules/ban-tslint-comment.js +1 -0
- package/dist/rules/class-literal-property-style.js +1 -0
- package/dist/rules/class-methods-use-this.js +1 -0
- package/dist/rules/consistent-generic-constructors.js +1 -0
- package/dist/rules/consistent-indexed-object-style.js +1 -0
- package/dist/rules/consistent-return.js +1 -0
- package/dist/rules/consistent-type-assertions.js +1 -0
- package/dist/rules/consistent-type-definitions.js +1 -0
- package/dist/rules/consistent-type-exports.js +1 -0
- package/dist/rules/consistent-type-imports.js +1 -0
- package/dist/rules/default-param-last.js +1 -0
- package/dist/rules/dot-notation.js +1 -0
- package/dist/rules/enum-utils/shared.js +1 -0
- package/dist/rules/explicit-function-return-type.js +1 -0
- package/dist/rules/explicit-member-accessibility.js +1 -0
- package/dist/rules/explicit-module-boundary-types.js +1 -0
- package/dist/rules/index.js +1 -0
- package/dist/rules/init-declarations.js +1 -0
- package/dist/rules/max-params.js +1 -0
- package/dist/rules/member-ordering.js +1 -0
- package/dist/rules/method-signature-style.js +1 -0
- package/dist/rules/naming-convention-utils/enums.js +1 -0
- package/dist/rules/naming-convention-utils/format.js +1 -0
- package/dist/rules/naming-convention-utils/index.js +1 -0
- package/dist/rules/naming-convention-utils/parse-options.js +1 -0
- package/dist/rules/naming-convention-utils/schema.js +1 -0
- package/dist/rules/naming-convention-utils/shared.js +1 -0
- package/dist/rules/naming-convention-utils/types.js +1 -0
- package/dist/rules/naming-convention-utils/validator.js +1 -0
- package/dist/rules/naming-convention.js +1 -0
- package/dist/rules/no-array-constructor.js +1 -0
- package/dist/rules/no-array-delete.js +1 -0
- package/dist/rules/no-base-to-string.js +1 -0
- package/dist/rules/no-confusing-non-null-assertion.js +1 -0
- package/dist/rules/no-confusing-void-expression.js +1 -0
- package/dist/rules/no-deprecated.js +1 -0
- package/dist/rules/no-dupe-class-members.js +1 -0
- package/dist/rules/no-duplicate-enum-values.js +1 -0
- package/dist/rules/no-duplicate-type-constituents.js +1 -0
- package/dist/rules/no-dynamic-delete.js +1 -0
- package/dist/rules/no-empty-function.js +1 -0
- package/dist/rules/no-empty-interface.js +1 -0
- package/dist/rules/no-empty-object-type.js +1 -0
- package/dist/rules/no-explicit-any.js +1 -0
- package/dist/rules/no-extra-non-null-assertion.js +1 -0
- package/dist/rules/no-extraneous-class.js +1 -0
- package/dist/rules/no-floating-promises.js +64 -55
- package/dist/rules/no-for-in-array.js +1 -0
- package/dist/rules/no-implied-eval.js +1 -0
- package/dist/rules/no-import-type-side-effects.js +1 -0
- package/dist/rules/no-inferrable-types.js +1 -0
- package/dist/rules/no-invalid-this.js +1 -0
- package/dist/rules/no-invalid-void-type.js +1 -0
- package/dist/rules/no-loop-func.js +1 -0
- package/dist/rules/no-loss-of-precision.js +1 -0
- package/dist/rules/no-magic-numbers.js +1 -0
- package/dist/rules/no-meaningless-void-operator.js +1 -0
- package/dist/rules/no-misused-new.js +1 -0
- package/dist/rules/no-misused-promises.js +1 -0
- package/dist/rules/no-misused-spread.js +1 -0
- package/dist/rules/no-mixed-enums.js +1 -0
- package/dist/rules/no-namespace.js +1 -0
- package/dist/rules/no-non-null-asserted-nullish-coalescing.js +1 -0
- package/dist/rules/no-non-null-asserted-optional-chain.js +1 -0
- package/dist/rules/no-non-null-assertion.js +1 -0
- package/dist/rules/no-redeclare.js +1 -0
- package/dist/rules/no-redundant-type-constituents.js +1 -0
- package/dist/rules/no-require-imports.js +1 -0
- package/dist/rules/no-restricted-imports.js +1 -0
- package/dist/rules/no-restricted-types.js +1 -0
- package/dist/rules/no-shadow.js +1 -0
- package/dist/rules/no-this-alias.js +1 -0
- package/dist/rules/no-type-alias.js +1 -0
- package/dist/rules/no-unnecessary-boolean-literal-compare.js +1 -0
- package/dist/rules/no-unnecessary-condition.js +1 -0
- package/dist/rules/no-unnecessary-parameter-property-assignment.js +1 -0
- package/dist/rules/no-unnecessary-qualifier.js +1 -0
- package/dist/rules/no-unnecessary-template-expression.js +1 -0
- package/dist/rules/no-unnecessary-type-arguments.js +1 -0
- package/dist/rules/no-unnecessary-type-assertion.d.ts +1 -2
- package/dist/rules/no-unnecessary-type-assertion.js +14 -39
- package/dist/rules/no-unnecessary-type-constraint.js +1 -0
- package/dist/rules/no-unnecessary-type-conversion.js +1 -0
- package/dist/rules/no-unnecessary-type-parameters.js +1 -0
- package/dist/rules/no-unsafe-argument.js +1 -0
- package/dist/rules/no-unsafe-assignment.js +1 -0
- package/dist/rules/no-unsafe-call.js +1 -0
- package/dist/rules/no-unsafe-declaration-merging.js +1 -0
- package/dist/rules/no-unsafe-enum-comparison.js +1 -0
- package/dist/rules/no-unsafe-function-type.js +1 -0
- package/dist/rules/no-unsafe-member-access.js +1 -0
- package/dist/rules/no-unsafe-return.js +1 -0
- package/dist/rules/no-unsafe-type-assertion.js +1 -0
- package/dist/rules/no-unsafe-unary-minus.js +1 -0
- package/dist/rules/no-unused-expressions.js +1 -0
- package/dist/rules/no-unused-private-class-members.js +1 -0
- package/dist/rules/no-unused-vars.js +1 -0
- package/dist/rules/no-use-before-define.js +1 -0
- package/dist/rules/no-useless-constructor.js +1 -0
- package/dist/rules/no-useless-default-assignment.js +1 -0
- package/dist/rules/no-useless-empty-export.js +1 -0
- package/dist/rules/no-var-requires.js +1 -0
- package/dist/rules/no-wrapper-object-types.js +1 -0
- package/dist/rules/non-nullable-type-assertion-style.js +1 -0
- package/dist/rules/only-throw-error.js +1 -0
- package/dist/rules/parameter-properties.js +1 -0
- package/dist/rules/prefer-as-const.js +1 -0
- package/dist/rules/prefer-destructuring.js +1 -0
- package/dist/rules/prefer-enum-initializers.js +1 -0
- package/dist/rules/prefer-find.js +1 -0
- package/dist/rules/prefer-for-of.js +1 -0
- package/dist/rules/prefer-function-type.js +1 -0
- package/dist/rules/prefer-includes.js +1 -0
- package/dist/rules/prefer-literal-enum-member.js +1 -0
- package/dist/rules/prefer-namespace-keyword.js +1 -0
- package/dist/rules/prefer-nullish-coalescing.js +1 -0
- package/dist/rules/prefer-optional-chain-utils/PreferOptionalChainOptions.js +1 -0
- package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +1 -0
- package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.js +1 -0
- package/dist/rules/prefer-optional-chain-utils/compareNodes.js +1 -0
- package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +1 -0
- package/dist/rules/prefer-optional-chain.js +1 -0
- package/dist/rules/prefer-promise-reject-errors.js +1 -0
- package/dist/rules/prefer-readonly-parameter-types.js +1 -0
- package/dist/rules/prefer-readonly.js +1 -0
- package/dist/rules/prefer-reduce-type-parameter.js +1 -0
- package/dist/rules/prefer-regexp-exec.js +1 -0
- package/dist/rules/prefer-return-this-type.js +1 -0
- package/dist/rules/prefer-string-starts-ends-with.js +1 -0
- package/dist/rules/prefer-ts-expect-error.js +1 -0
- package/dist/rules/promise-function-async.js +1 -0
- package/dist/rules/related-getter-setter-pairs.js +1 -0
- package/dist/rules/require-array-sort-compare.js +1 -0
- package/dist/rules/require-await.js +1 -0
- package/dist/rules/restrict-plus-operands.js +1 -0
- package/dist/rules/restrict-template-expressions.js +1 -0
- package/dist/rules/return-await.js +13 -1
- package/dist/rules/sort-type-constituents.js +1 -0
- package/dist/rules/strict-boolean-expressions.js +1 -0
- package/dist/rules/strict-void-return.js +1 -0
- package/dist/rules/switch-exhaustiveness-check.js +1 -0
- package/dist/rules/triple-slash-reference.js +1 -0
- package/dist/rules/typedef.js +1 -0
- package/dist/rules/unbound-method.js +1 -0
- package/dist/rules/unified-signatures.d.ts +1 -1
- package/dist/rules/unified-signatures.js +73 -32
- package/dist/rules/use-unknown-in-catch-callback-variable.js +1 -0
- package/dist/util/assertionFunctionUtils.js +1 -0
- package/dist/util/astUtils.js +1 -0
- package/dist/util/baseTypeUtils.js +1 -0
- package/dist/util/class-scope-analyzer/classScopeAnalyzer.js +1 -0
- package/dist/util/class-scope-analyzer/extractComputedName.js +1 -0
- package/dist/util/class-scope-analyzer/types.js +1 -0
- package/dist/util/collectUnusedVariables.js +1 -0
- package/dist/util/createRule.js +1 -0
- package/dist/util/escapeRegExp.js +1 -0
- package/dist/util/explicitReturnTypeUtils.js +1 -0
- package/dist/util/getBaseTypesOfClassMember.js +1 -0
- package/dist/util/getConstraintInfo.js +1 -0
- package/dist/util/getESLintCoreRule.js +1 -0
- package/dist/util/getFixOrSuggest.js +1 -0
- package/dist/util/getForStatementHeadLoc.js +1 -0
- package/dist/util/getFunctionHeadLoc.js +1 -0
- package/dist/util/getMemberHeadLoc.js +1 -0
- package/dist/util/getOperatorPrecedence.js +1 -0
- package/dist/util/getParentFunctionNode.js +1 -0
- package/dist/util/getStaticStringValue.js +1 -0
- package/dist/util/getStringLength.js +1 -0
- package/dist/util/getTextWithParentheses.js +1 -0
- package/dist/util/getThisExpression.js +1 -0
- package/dist/util/getValueOfLiteralType.js +1 -0
- package/dist/util/getWrappedCode.js +1 -0
- package/dist/util/getWrappingFixer.js +1 -0
- package/dist/util/hasOverloadSignatures.js +1 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.js +2 -0
- package/dist/util/isArrayMethodCallWithPredicate.js +1 -0
- package/dist/util/isAssignee.js +1 -0
- package/dist/util/isConditionalTest.js +1 -0
- package/dist/util/isHigherPrecedenceThanAwait.js +1 -0
- package/dist/util/isNodeEqual.js +1 -0
- package/dist/util/isNullLiteral.js +1 -0
- package/dist/util/isPromiseAggregatorMethod.js +1 -0
- package/dist/util/isStartOfArrowFunctionBody.d.ts +2 -0
- package/dist/util/isStartOfArrowFunctionBody.js +26 -0
- package/dist/util/isStartOfExpressionStatement.js +1 -0
- package/dist/util/isTypeImport.js +1 -0
- package/dist/util/isUndefinedIdentifier.js +1 -0
- package/dist/util/misc.js +1 -0
- package/dist/util/needsPrecedingSemiColon.js +1 -0
- package/dist/util/needsToBeAwaited.js +1 -0
- package/dist/util/objectIterators.js +1 -0
- package/dist/util/promiseUtils.js +1 -0
- package/dist/util/rangeToLoc.js +1 -0
- package/dist/util/referenceContainsTypePredicate.js +1 -0
- package/dist/util/referenceContainsTypeQuery.js +1 -0
- package/dist/util/scopeUtils.js +1 -0
- package/dist/util/skipChainExpression.js +1 -0
- package/dist/util/truthinessUtils.js +1 -0
- package/dist/util/types.js +1 -0
- package/dist/util/walkStatements.js +1 -0
- package/package.json +12 -11
|
@@ -220,7 +220,18 @@ exports.default = (0, util_1.createRule)({
|
|
|
220
220
|
if (nextToken) {
|
|
221
221
|
endAt = nextToken.range[0];
|
|
222
222
|
}
|
|
223
|
-
|
|
223
|
+
const awaitRemovalFix = fixer.removeRange([startAt, endAt]);
|
|
224
|
+
const firstOperandToken = (0, util_1.nullThrows)(context.sourceCode.getTokenAfter(awaitToken), util_1.NullThrowsReasons.MissingToken('operand', 'await expression'));
|
|
225
|
+
const shouldWrapInParentheses = (0, util_1.isOpeningBraceToken)(firstOperandToken) &&
|
|
226
|
+
(0, util_1.isStartOfArrowFunctionBody)(node, context.sourceCode);
|
|
227
|
+
if (shouldWrapInParentheses) {
|
|
228
|
+
return [
|
|
229
|
+
awaitRemovalFix,
|
|
230
|
+
fixer.insertTextBefore(node.argument, '('),
|
|
231
|
+
fixer.insertTextAfter(node.argument, ')'),
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
return awaitRemovalFix;
|
|
224
235
|
}
|
|
225
236
|
function insertAwait(fixer, node, isHighPrecedence) {
|
|
226
237
|
if (isHighPrecedence) {
|
|
@@ -361,3 +372,4 @@ function getConfiguration(option) {
|
|
|
361
372
|
};
|
|
362
373
|
}
|
|
363
374
|
}
|
|
375
|
+
//# sourceMappingURL=return-await.js.map
|
package/dist/rules/typedef.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type MessageIds = 'omittingRestParameter' | 'omittingSingleParameter' | 'singleParameterDifference';
|
|
1
|
+
export type MessageIds = 'allParametersAreSame' | 'omittingRestParameter' | 'omittingSingleParameter' | 'singleParameterDifference';
|
|
2
2
|
export type Options = [
|
|
3
3
|
{
|
|
4
4
|
ignoreDifferentlyNamedParameters?: boolean;
|
|
@@ -12,9 +12,10 @@ exports.default = (0, util_1.createRule)({
|
|
|
12
12
|
recommended: 'strict',
|
|
13
13
|
},
|
|
14
14
|
messages: {
|
|
15
|
+
allParametersAreSame: '{{failureStringStart}} with identical parameters.',
|
|
15
16
|
omittingRestParameter: '{{failureStringStart}} with a rest parameter.',
|
|
16
17
|
omittingSingleParameter: '{{failureStringStart}} with an optional parameter.',
|
|
17
|
-
singleParameterDifference: '{{failureStringStart}} taking `{{
|
|
18
|
+
singleParameterDifference: '{{failureStringStart}} taking `{{types}}`.',
|
|
18
19
|
},
|
|
19
20
|
schema: [
|
|
20
21
|
{
|
|
@@ -57,20 +58,15 @@ exports.default = (0, util_1.createRule)({
|
|
|
57
58
|
case 'single-parameter-difference': {
|
|
58
59
|
const { p0, p1 } = unify;
|
|
59
60
|
const lineOfOtherOverload = only2 ? undefined : p0.loc.start.line;
|
|
60
|
-
const typeAnnotation0 =
|
|
61
|
-
|
|
62
|
-
: p0.typeAnnotation;
|
|
63
|
-
const typeAnnotation1 = isTSParameterProperty(p1)
|
|
64
|
-
? p1.parameter.typeAnnotation
|
|
65
|
-
: p1.typeAnnotation;
|
|
61
|
+
const typeAnnotation0 = getParameterTypeAnnotation(p0);
|
|
62
|
+
const typeAnnotation1 = getParameterTypeAnnotation(p1);
|
|
66
63
|
context.report({
|
|
67
64
|
loc: p1.loc,
|
|
68
65
|
node: p1,
|
|
69
66
|
messageId: 'singleParameterDifference',
|
|
70
67
|
data: {
|
|
71
68
|
failureStringStart: failureStringStart(lineOfOtherOverload),
|
|
72
|
-
|
|
73
|
-
type2: context.sourceCode.getText(typeAnnotation1?.typeAnnotation),
|
|
69
|
+
types: getUnifiedTypeText(typeAnnotation0, typeAnnotation1),
|
|
74
70
|
},
|
|
75
71
|
});
|
|
76
72
|
break;
|
|
@@ -90,7 +86,24 @@ exports.default = (0, util_1.createRule)({
|
|
|
90
86
|
failureStringStart: failureStringStart(lineOfOtherOverload),
|
|
91
87
|
},
|
|
92
88
|
});
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'all-parameters-are-same': {
|
|
92
|
+
const { signature0, signature1 } = unify;
|
|
93
|
+
const lineOfOtherOverload = only2
|
|
94
|
+
? undefined
|
|
95
|
+
: signature0.loc.start.line;
|
|
96
|
+
context.report({
|
|
97
|
+
node: signature1,
|
|
98
|
+
messageId: 'allParametersAreSame',
|
|
99
|
+
data: {
|
|
100
|
+
failureStringStart: failureStringStart(lineOfOtherOverload),
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
break;
|
|
93
104
|
}
|
|
105
|
+
default:
|
|
106
|
+
unify;
|
|
94
107
|
}
|
|
95
108
|
}
|
|
96
109
|
}
|
|
@@ -114,7 +127,7 @@ exports.default = (0, util_1.createRule)({
|
|
|
114
127
|
return undefined;
|
|
115
128
|
}
|
|
116
129
|
return a.params.length === b.params.length
|
|
117
|
-
?
|
|
130
|
+
? signaturesHaveSameAmountOfParameters(a, b)
|
|
118
131
|
: signaturesDifferByOptionalOrRestParameter(a, b);
|
|
119
132
|
}
|
|
120
133
|
function signaturesCanBeUnified(a, b, isTypeParameter) {
|
|
@@ -138,15 +151,20 @@ exports.default = (0, util_1.createRule)({
|
|
|
138
151
|
return false;
|
|
139
152
|
}
|
|
140
153
|
}
|
|
141
|
-
return (typesAreEqual(a.returnType, b.returnType) &&
|
|
154
|
+
return (typesAreEqual(a.returnType?.typeAnnotation, b.returnType?.typeAnnotation) &&
|
|
142
155
|
// Must take the same type parameters.
|
|
143
156
|
// If one uses a type parameter (from outside) and the other doesn't, they shouldn't be joined.
|
|
144
157
|
(0, util_1.arraysAreEqual)(aTypeParams, bTypeParams, typeParametersAreEqual) &&
|
|
145
158
|
signatureUsesTypeParameter(a, isTypeParameter) ===
|
|
146
159
|
signatureUsesTypeParameter(b, isTypeParameter));
|
|
147
160
|
}
|
|
148
|
-
/**
|
|
149
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Detect no difference, i.e. `a(x: number, y: string)` and `a(x: number, y: string)`,
|
|
163
|
+
* or one param difference, i.e. `a(x: number, y: number, z: number)` and `a(x: number, y: string, z: number)`.
|
|
164
|
+
*/
|
|
165
|
+
function signaturesHaveSameAmountOfParameters(signature0, signature1) {
|
|
166
|
+
const types1 = signature0.params;
|
|
167
|
+
const types2 = signature1.params;
|
|
150
168
|
const firstParam1 = types1[0];
|
|
151
169
|
const firstParam2 = types2[0];
|
|
152
170
|
// exempt signatures with `this: void` from the rule
|
|
@@ -155,7 +173,11 @@ exports.default = (0, util_1.createRule)({
|
|
|
155
173
|
}
|
|
156
174
|
const index = getIndexOfFirstDifference(types1, types2, parametersAreEqual);
|
|
157
175
|
if (index == null) {
|
|
158
|
-
return
|
|
176
|
+
return {
|
|
177
|
+
kind: 'all-parameters-are-same',
|
|
178
|
+
signature0,
|
|
179
|
+
signature1,
|
|
180
|
+
};
|
|
159
181
|
}
|
|
160
182
|
// If remaining arrays are equal, the signatures differ by just one parameter type
|
|
161
183
|
if (!(0, util_1.arraysAreEqual)(types1.slice(index + 1), types2.slice(index + 1), parametersAreEqual)) {
|
|
@@ -170,6 +192,39 @@ exports.default = (0, util_1.createRule)({
|
|
|
170
192
|
? { kind: 'single-parameter-difference', p0: a, p1: b }
|
|
171
193
|
: undefined;
|
|
172
194
|
}
|
|
195
|
+
function getParameterTypeAnnotation(parameter) {
|
|
196
|
+
return isTSParameterProperty(parameter)
|
|
197
|
+
? parameter.parameter.typeAnnotation?.typeAnnotation
|
|
198
|
+
: parameter.typeAnnotation?.typeAnnotation;
|
|
199
|
+
}
|
|
200
|
+
function getUnifiedTypeText(type0, type1) {
|
|
201
|
+
// When a signature's parameter has no type annotation
|
|
202
|
+
if (type0 == null || type1 == null) {
|
|
203
|
+
return getUnionMemberText((0, util_1.nullThrows)(type0 ?? type1, 'Expected a type annotation for one of the parameters, but both were undefined'));
|
|
204
|
+
}
|
|
205
|
+
const members = [...getUnionMembers(type0), ...getUnionMembers(type1)];
|
|
206
|
+
const uniqueMembers = [];
|
|
207
|
+
for (const member of members) {
|
|
208
|
+
if (!uniqueMembers.some(other => typesAreEqual(other, member))) {
|
|
209
|
+
uniqueMembers.push(member);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return uniqueMembers
|
|
213
|
+
.map(member => getUnionMemberText(member))
|
|
214
|
+
.join(' | ');
|
|
215
|
+
}
|
|
216
|
+
function getUnionMembers(type) {
|
|
217
|
+
return type.type === utils_1.AST_NODE_TYPES.TSUnionType
|
|
218
|
+
? type.types.flatMap(getUnionMembers)
|
|
219
|
+
: [type];
|
|
220
|
+
}
|
|
221
|
+
function getUnionMemberText(type) {
|
|
222
|
+
const text = context.sourceCode.getText(type);
|
|
223
|
+
const needsParentheses = type.type === utils_1.AST_NODE_TYPES.TSConditionalType ||
|
|
224
|
+
type.type === utils_1.AST_NODE_TYPES.TSConstructorType ||
|
|
225
|
+
type.type === utils_1.AST_NODE_TYPES.TSFunctionType;
|
|
226
|
+
return needsParentheses ? `(${text})` : text;
|
|
227
|
+
}
|
|
173
228
|
function isThisParam(param) {
|
|
174
229
|
return param?.type === utils_1.AST_NODE_TYPES.Identifier && param.name === 'this';
|
|
175
230
|
}
|
|
@@ -209,15 +264,7 @@ exports.default = (0, util_1.createRule)({
|
|
|
209
264
|
}
|
|
210
265
|
}
|
|
211
266
|
for (let i = 0; i < minLength; i++) {
|
|
212
|
-
|
|
213
|
-
const sig2i = sig2[i];
|
|
214
|
-
const typeAnnotation1 = isTSParameterProperty(sig1i)
|
|
215
|
-
? sig1i.parameter.typeAnnotation
|
|
216
|
-
: sig1i.typeAnnotation;
|
|
217
|
-
const typeAnnotation2 = isTSParameterProperty(sig2i)
|
|
218
|
-
? sig2i.parameter.typeAnnotation
|
|
219
|
-
: sig2i.typeAnnotation;
|
|
220
|
-
if (!typesAreEqual(typeAnnotation1, typeAnnotation2)) {
|
|
267
|
+
if (!typesAreEqual(getParameterTypeAnnotation(sig1[i]), getParameterTypeAnnotation(sig2[i]))) {
|
|
221
268
|
return undefined;
|
|
222
269
|
}
|
|
223
270
|
}
|
|
@@ -265,14 +312,8 @@ exports.default = (0, util_1.createRule)({
|
|
|
265
312
|
return node.type === utils_1.AST_NODE_TYPES.TSParameterProperty;
|
|
266
313
|
}
|
|
267
314
|
function parametersAreEqual(a, b) {
|
|
268
|
-
const typeAnnotationA = isTSParameterProperty(a)
|
|
269
|
-
? a.parameter.typeAnnotation
|
|
270
|
-
: a.typeAnnotation;
|
|
271
|
-
const typeAnnotationB = isTSParameterProperty(b)
|
|
272
|
-
? b.parameter.typeAnnotation
|
|
273
|
-
: b.typeAnnotation;
|
|
274
315
|
return (parametersHaveEqualSigils(a, b) &&
|
|
275
|
-
typesAreEqual(
|
|
316
|
+
typesAreEqual(getParameterTypeAnnotation(a), getParameterTypeAnnotation(b)));
|
|
276
317
|
}
|
|
277
318
|
/** True for optional/rest parameters. */
|
|
278
319
|
function parameterMayBeMissing(p) {
|
|
@@ -300,8 +341,7 @@ exports.default = (0, util_1.createRule)({
|
|
|
300
341
|
return (a === b ||
|
|
301
342
|
(a != null &&
|
|
302
343
|
b != null &&
|
|
303
|
-
context.sourceCode.getText(a
|
|
304
|
-
context.sourceCode.getText(b.typeAnnotation)));
|
|
344
|
+
context.sourceCode.getText(a) === context.sourceCode.getText(b)));
|
|
305
345
|
}
|
|
306
346
|
function constraintsAreEqual(a, b) {
|
|
307
347
|
return a === b || (a != null && a.type === b?.type);
|
|
@@ -463,3 +503,4 @@ function isPrivateIdentifier(node) {
|
|
|
463
503
|
function isGetterOrSetter(node) {
|
|
464
504
|
return node.kind === 'get' || node.kind === 'set';
|
|
465
505
|
}
|
|
506
|
+
//# sourceMappingURL=unified-signatures.js.map
|
package/dist/util/astUtils.js
CHANGED
|
@@ -73,3 +73,4 @@ function matchesTypeOrBaseType(services, matcher, type, seen = new Set()) {
|
|
|
73
73
|
const checker = services.program.getTypeChecker();
|
|
74
74
|
return getBaseTypesForType(checker, type).some(base => matchesTypeOrBaseType(services, matcher, base, seen));
|
|
75
75
|
}
|
|
76
|
+
//# sourceMappingURL=baseTypeUtils.js.map
|
|
@@ -599,3 +599,4 @@ function isUsedVariable(variable) {
|
|
|
599
599
|
function collectVariables(context) {
|
|
600
600
|
return UnusedVarsVisitor.collectUnusedVariables(context.sourceCode.ast, utils_1.ESLintUtils.nullThrows(context.sourceCode.scopeManager, 'Missing required scope manager'));
|
|
601
601
|
}
|
|
602
|
+
//# sourceMappingURL=collectUnusedVariables.js.map
|
package/dist/util/createRule.js
CHANGED
|
@@ -3,3 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createRule = void 0;
|
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
|
5
5
|
exports.createRule = utils_1.ESLintUtils.RuleCreator(name => `https://typescript-eslint.io/rules/${name}`);
|
|
6
|
+
//# sourceMappingURL=createRule.js.map
|
package/dist/util/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from './isAssignee';
|
|
|
18
18
|
export * from './isConditionalTest';
|
|
19
19
|
export * from './isNodeEqual';
|
|
20
20
|
export * from './isNullLiteral';
|
|
21
|
+
export * from './isStartOfArrowFunctionBody';
|
|
21
22
|
export * from './isStartOfExpressionStatement';
|
|
22
23
|
export * from './isUndefinedIdentifier';
|
|
23
24
|
export * from './misc';
|
package/dist/util/index.js
CHANGED
|
@@ -35,6 +35,7 @@ __exportStar(require("./isAssignee"), exports);
|
|
|
35
35
|
__exportStar(require("./isConditionalTest"), exports);
|
|
36
36
|
__exportStar(require("./isNodeEqual"), exports);
|
|
37
37
|
__exportStar(require("./isNullLiteral"), exports);
|
|
38
|
+
__exportStar(require("./isStartOfArrowFunctionBody"), exports);
|
|
38
39
|
__exportStar(require("./isStartOfExpressionStatement"), exports);
|
|
39
40
|
__exportStar(require("./isUndefinedIdentifier"), exports);
|
|
40
41
|
__exportStar(require("./misc"), exports);
|
|
@@ -52,3 +53,4 @@ __exportStar(require("./walkStatements"), exports);
|
|
|
52
53
|
// this is done for convenience - saves migrating all of the old rules
|
|
53
54
|
__exportStar(require("@typescript-eslint/type-utils"), exports);
|
|
54
55
|
({ applyDefault: exports.applyDefault, deepMerge: exports.deepMerge, getParserServices: exports.getParserServices, isObjectNotArray: exports.isObjectNotArray, nullThrows: exports.nullThrows, NullThrowsReasons: exports.NullThrowsReasons } = utils_1.ESLintUtils);
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
package/dist/util/isAssignee.js
CHANGED