@flint.fyi/ts 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
- package/dist/index.mjs +22468 -0
- package/package.json +9 -8
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/plugin.js +0 -619
- package/lib/rules/accessorPairGroups.d.ts +0 -9
- package/lib/rules/accessorPairGroups.js +0 -46
- package/lib/rules/accessorPairTypes.d.ts +0 -9
- package/lib/rules/accessorPairTypes.js +0 -70
- package/lib/rules/accessorThisRecursion.d.ts +0 -9
- package/lib/rules/accessorThisRecursion.js +0 -63
- package/lib/rules/anyArguments.d.ts +0 -9
- package/lib/rules/anyArguments.js +0 -232
- package/lib/rules/anyAssignments.d.ts +0 -9
- package/lib/rules/anyAssignments.js +0 -263
- package/lib/rules/anyCalls.d.ts +0 -9
- package/lib/rules/anyCalls.js +0 -66
- package/lib/rules/anyMemberAccess.d.ts +0 -9
- package/lib/rules/anyMemberAccess.js +0 -83
- package/lib/rules/anyReturns.d.ts +0 -9
- package/lib/rules/anyReturns.js +0 -100
- package/lib/rules/arguments.d.ts +0 -9
- package/lib/rules/arguments.js +0 -36
- package/lib/rules/arrayCallbackReturns.d.ts +0 -9
- package/lib/rules/arrayCallbackReturns.js +0 -71
- package/lib/rules/arrayConstructors.d.ts +0 -9
- package/lib/rules/arrayConstructors.js +0 -45
- package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
- package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
- package/lib/rules/arrayElementDeletions.d.ts +0 -9
- package/lib/rules/arrayElementDeletions.js +0 -41
- package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
- package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
- package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
- package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
- package/lib/rules/arrayFilteredFinds.d.ts +0 -9
- package/lib/rules/arrayFilteredFinds.js +0 -72
- package/lib/rules/arrayFinds.d.ts +0 -9
- package/lib/rules/arrayFinds.js +0 -39
- package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
- package/lib/rules/arrayFlatMapMethods.js +0 -45
- package/lib/rules/arrayFlatMethods.d.ts +0 -9
- package/lib/rules/arrayFlatMethods.js +0 -81
- package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
- package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
- package/lib/rules/arrayIncludes.d.ts +0 -9
- package/lib/rules/arrayIncludes.js +0 -51
- package/lib/rules/arrayIncludesMethods.d.ts +0 -9
- package/lib/rules/arrayIncludesMethods.js +0 -35
- package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
- package/lib/rules/arrayIndexOfMethods.js +0 -49
- package/lib/rules/arrayLoops.d.ts +0 -9
- package/lib/rules/arrayLoops.js +0 -34
- package/lib/rules/arrayMapIdentities.d.ts +0 -9
- package/lib/rules/arrayMapIdentities.js +0 -72
- package/lib/rules/arrayMutableReverses.d.ts +0 -9
- package/lib/rules/arrayMutableReverses.js +0 -37
- package/lib/rules/arrayMutableSorts.d.ts +0 -9
- package/lib/rules/arrayMutableSorts.js +0 -70
- package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
- package/lib/rules/arrayReduceTypeArguments.js +0 -62
- package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
- package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
- package/lib/rules/arraySomeMethods.d.ts +0 -9
- package/lib/rules/arraySomeMethods.js +0 -75
- package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
- package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
- package/lib/rules/arrayTypes.d.ts +0 -16
- package/lib/rules/arrayTypes.js +0 -109
- package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
- package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
- package/lib/rules/asConstAssertions.d.ts +0 -9
- package/lib/rules/asConstAssertions.js +0 -55
- package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
- package/lib/rules/assignmentOperatorShorthands.js +0 -45
- package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
- package/lib/rules/asyncFunctionAwaits.js +0 -53
- package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
- package/lib/rules/asyncPromiseExecutors.js +0 -39
- package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
- package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
- package/lib/rules/atAccesses.d.ts +0 -9
- package/lib/rules/atAccesses.js +0 -50
- package/lib/rules/builtinCoercions.d.ts +0 -9
- package/lib/rules/builtinCoercions.js +0 -115
- package/lib/rules/builtinConstructorNews.d.ts +0 -9
- package/lib/rules/builtinConstructorNews.js +0 -87
- package/lib/rules/caseDeclarations.d.ts +0 -9
- package/lib/rules/caseDeclarations.js +0 -38
- package/lib/rules/caseDuplicates.d.ts +0 -9
- package/lib/rules/caseDuplicates.js +0 -34
- package/lib/rules/caseFallthroughs.d.ts +0 -9
- package/lib/rules/caseFallthroughs.js +0 -74
- package/lib/rules/catchCallbackTypes.d.ts +0 -9
- package/lib/rules/catchCallbackTypes.js +0 -65
- package/lib/rules/caughtVariableNames.d.ts +0 -9
- package/lib/rules/caughtVariableNames.js +0 -38
- package/lib/rules/chainedAssignments.d.ts +0 -9
- package/lib/rules/chainedAssignments.js +0 -31
- package/lib/rules/charAtComparisons.d.ts +0 -9
- package/lib/rules/charAtComparisons.js +0 -53
- package/lib/rules/classAssignments.d.ts +0 -9
- package/lib/rules/classAssignments.js +0 -27
- package/lib/rules/classFieldDeclarations.d.ts +0 -9
- package/lib/rules/classFieldDeclarations.js +0 -38
- package/lib/rules/classLiteralProperties.d.ts +0 -9
- package/lib/rules/classLiteralProperties.js +0 -43
- package/lib/rules/classMemberDuplicates.d.ts +0 -9
- package/lib/rules/classMemberDuplicates.js +0 -69
- package/lib/rules/classMethodsThis.d.ts +0 -13
- package/lib/rules/classMethodsThis.js +0 -122
- package/lib/rules/combinedPushes.d.ts +0 -9
- package/lib/rules/combinedPushes.js +0 -54
- package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
- package/lib/rules/consecutiveNonNullAssertions.js +0 -37
- package/lib/rules/consoleCalls.d.ts +0 -8
- package/lib/rules/consoleCalls.js +0 -26
- package/lib/rules/constantAssignments.d.ts +0 -9
- package/lib/rules/constantAssignments.js +0 -39
- package/lib/rules/constructorGenericCalls.d.ts +0 -15
- package/lib/rules/constructorGenericCalls.js +0 -136
- package/lib/rules/constructorReturns.d.ts +0 -9
- package/lib/rules/constructorReturns.js +0 -39
- package/lib/rules/constructorSupers.d.ts +0 -9
- package/lib/rules/constructorSupers.js +0 -75
- package/lib/rules/dateConstructorClones.d.ts +0 -9
- package/lib/rules/dateConstructorClones.js +0 -35
- package/lib/rules/dateNowTimestamps.d.ts +0 -9
- package/lib/rules/dateNowTimestamps.js +0 -55
- package/lib/rules/debuggerStatements.d.ts +0 -9
- package/lib/rules/debuggerStatements.js +0 -31
- package/lib/rules/defaultCaseLast.d.ts +0 -9
- package/lib/rules/defaultCaseLast.js +0 -34
- package/lib/rules/defaultParameterLast.d.ts +0 -9
- package/lib/rules/defaultParameterLast.js +0 -40
- package/lib/rules/deprecated.d.ts +0 -9
- package/lib/rules/deprecated.js +0 -241
- package/lib/rules/destructuringConsistency.d.ts +0 -9
- package/lib/rules/destructuringConsistency.js +0 -104
- package/lib/rules/duplicateArguments.d.ts +0 -9
- package/lib/rules/duplicateArguments.js +0 -43
- package/lib/rules/dynamicDeletes.d.ts +0 -9
- package/lib/rules/dynamicDeletes.js +0 -35
- package/lib/rules/elseIfDuplicates.d.ts +0 -9
- package/lib/rules/elseIfDuplicates.js +0 -36
- package/lib/rules/elseReturns.d.ts +0 -9
- package/lib/rules/elseReturns.js +0 -65
- package/lib/rules/emptyBlocks.d.ts +0 -9
- package/lib/rules/emptyBlocks.js +0 -54
- package/lib/rules/emptyDestructures.d.ts +0 -9
- package/lib/rules/emptyDestructures.js +0 -32
- package/lib/rules/emptyEnums.d.ts +0 -9
- package/lib/rules/emptyEnums.js +0 -28
- package/lib/rules/emptyExports.d.ts +0 -9
- package/lib/rules/emptyExports.js +0 -58
- package/lib/rules/emptyFiles.d.ts +0 -9
- package/lib/rules/emptyFiles.js +0 -42
- package/lib/rules/emptyFunctions.d.ts +0 -9
- package/lib/rules/emptyFunctions.js +0 -59
- package/lib/rules/emptyModuleAttributes.d.ts +0 -9
- package/lib/rules/emptyModuleAttributes.js +0 -33
- package/lib/rules/emptyObjectTypes.d.ts +0 -9
- package/lib/rules/emptyObjectTypes.js +0 -45
- package/lib/rules/emptyStaticBlocks.d.ts +0 -9
- package/lib/rules/emptyStaticBlocks.js +0 -40
- package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
- package/lib/rules/emptyTypeParameterLists.js +0 -29
- package/lib/rules/enumInitializers.d.ts +0 -9
- package/lib/rules/enumInitializers.js +0 -52
- package/lib/rules/enumMemberLiterals.d.ts +0 -9
- package/lib/rules/enumMemberLiterals.js +0 -37
- package/lib/rules/enumValueConsistency.d.ts +0 -9
- package/lib/rules/enumValueConsistency.js +0 -54
- package/lib/rules/enumValueDuplicates.d.ts +0 -9
- package/lib/rules/enumValueDuplicates.js +0 -43
- package/lib/rules/equalityOperatorNegations.d.ts +0 -8
- package/lib/rules/equalityOperatorNegations.js +0 -58
- package/lib/rules/equalityOperators.d.ts +0 -9
- package/lib/rules/equalityOperators.js +0 -42
- package/lib/rules/errorMessages.d.ts +0 -9
- package/lib/rules/errorMessages.js +0 -54
- package/lib/rules/errorSubclassProperties.d.ts +0 -9
- package/lib/rules/errorSubclassProperties.js +0 -142
- package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
- package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
- package/lib/rules/escapeSequenceCasing.d.ts +0 -9
- package/lib/rules/escapeSequenceCasing.js +0 -73
- package/lib/rules/evals.d.ts +0 -9
- package/lib/rules/evals.js +0 -29
- package/lib/rules/evolvingVariableTypes.d.ts +0 -9
- package/lib/rules/evolvingVariableTypes.js +0 -31
- package/lib/rules/exceptionAssignments.d.ts +0 -9
- package/lib/rules/exceptionAssignments.js +0 -37
- package/lib/rules/explicitAnys.d.ts +0 -9
- package/lib/rules/explicitAnys.js +0 -53
- package/lib/rules/exponentiationOperators.d.ts +0 -9
- package/lib/rules/exponentiationOperators.js +0 -32
- package/lib/rules/exportFromImports.d.ts +0 -9
- package/lib/rules/exportFromImports.js +0 -117
- package/lib/rules/exportMutables.d.ts +0 -9
- package/lib/rules/exportMutables.js +0 -31
- package/lib/rules/exportUniqueNames.d.ts +0 -9
- package/lib/rules/exportUniqueNames.js +0 -63
- package/lib/rules/extraneousClasses.d.ts +0 -15
- package/lib/rules/extraneousClasses.js +0 -109
- package/lib/rules/fetchMethodBodies.d.ts +0 -9
- package/lib/rules/fetchMethodBodies.js +0 -70
- package/lib/rules/finallyStatementSafety.d.ts +0 -9
- package/lib/rules/finallyStatementSafety.js +0 -45
- package/lib/rules/forDirections.d.ts +0 -9
- package/lib/rules/forDirections.js +0 -73
- package/lib/rules/forInArrays.d.ts +0 -9
- package/lib/rules/forInArrays.js +0 -44
- package/lib/rules/forInGuards.d.ts +0 -8
- package/lib/rules/forInGuards.js +0 -42
- package/lib/rules/functionApplySpreads.d.ts +0 -9
- package/lib/rules/functionApplySpreads.js +0 -61
- package/lib/rules/functionAssignments.d.ts +0 -9
- package/lib/rules/functionAssignments.js +0 -27
- package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
- package/lib/rules/functionCurryingRedundancy.js +0 -51
- package/lib/rules/functionDeclarationStyles.d.ts +0 -15
- package/lib/rules/functionDeclarationStyles.js +0 -65
- package/lib/rules/functionNameMatches.d.ts +0 -9
- package/lib/rules/functionNameMatches.js +0 -72
- package/lib/rules/functionNewCalls.d.ts +0 -9
- package/lib/rules/functionNewCalls.js +0 -40
- package/lib/rules/generatorFunctionYields.d.ts +0 -9
- package/lib/rules/generatorFunctionYields.js +0 -48
- package/lib/rules/getterReturns.d.ts +0 -9
- package/lib/rules/getterReturns.js +0 -63
- package/lib/rules/globalAssignments.d.ts +0 -9
- package/lib/rules/globalAssignments.js +0 -45
- package/lib/rules/globalObjectCalls.d.ts +0 -9
- package/lib/rules/globalObjectCalls.js +0 -40
- package/lib/rules/globalThisAliases.d.ts +0 -9
- package/lib/rules/globalThisAliases.js +0 -45
- package/lib/rules/impliedEvals.d.ts +0 -9
- package/lib/rules/impliedEvals.js +0 -128
- package/lib/rules/importEmptyBlocks.d.ts +0 -9
- package/lib/rules/importEmptyBlocks.js +0 -51
- package/lib/rules/importTypeSideEffects.d.ts +0 -9
- package/lib/rules/importTypeSideEffects.js +0 -29
- package/lib/rules/indexedObjectTypes.d.ts +0 -15
- package/lib/rules/indexedObjectTypes.js +0 -81
- package/lib/rules/instanceOfArrays.d.ts +0 -9
- package/lib/rules/instanceOfArrays.js +0 -29
- package/lib/rules/irregularWhitespaces.d.ts +0 -15
- package/lib/rules/irregularWhitespaces.js +0 -95
- package/lib/rules/isNaNComparisons.d.ts +0 -9
- package/lib/rules/isNaNComparisons.js +0 -41
- package/lib/rules/literalConstructorWrappers.d.ts +0 -9
- package/lib/rules/literalConstructorWrappers.js +0 -62
- package/lib/rules/mathMethods.d.ts +0 -9
- package/lib/rules/mathMethods.js +0 -126
- package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
- package/lib/rules/meaninglessVoidOperators.js +0 -37
- package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
- package/lib/rules/misleadingVoidExpressions.js +0 -126
- package/lib/rules/moduleSpecifierLists.d.ts +0 -9
- package/lib/rules/moduleSpecifierLists.js +0 -90
- package/lib/rules/multilineAmbiguities.d.ts +0 -9
- package/lib/rules/multilineAmbiguities.js +0 -62
- package/lib/rules/namedDefaultExports.d.ts +0 -9
- package/lib/rules/namedDefaultExports.js +0 -58
- package/lib/rules/namespaceDeclarations.d.ts +0 -13
- package/lib/rules/namespaceDeclarations.js +0 -35
- package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
- package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
- package/lib/rules/namespaceKeywords.d.ts +0 -9
- package/lib/rules/namespaceKeywords.js +0 -38
- package/lib/rules/nativeObjectExtensions.d.ts +0 -9
- package/lib/rules/nativeObjectExtensions.js +0 -112
- package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
- package/lib/rules/negativeIndexLengthMethods.js +0 -178
- package/lib/rules/negativeZeroComparisons.d.ts +0 -9
- package/lib/rules/negativeZeroComparisons.js +0 -46
- package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
- package/lib/rules/nestedStandaloneIfs.js +0 -103
- package/lib/rules/newDefinitions.d.ts +0 -9
- package/lib/rules/newDefinitions.js +0 -82
- package/lib/rules/newExpressions.d.ts +0 -9
- package/lib/rules/newExpressions.js +0 -36
- package/lib/rules/newNativeNonConstructors.d.ts +0 -9
- package/lib/rules/newNativeNonConstructors.js +0 -37
- package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
- package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
- package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
- package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
- package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
- package/lib/rules/nonNullAssertionPlacement.js +0 -92
- package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
- package/lib/rules/nonNullableTypeAssertions.js +0 -76
- package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
- package/lib/rules/nonOctalDecimalEscapes.js +0 -46
- package/lib/rules/nullishCheckStyle.d.ts +0 -20
- package/lib/rules/nullishCheckStyle.js +0 -142
- package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
- package/lib/rules/nullishCoalescingOperators.js +0 -321
- package/lib/rules/numberMethodRanges.d.ts +0 -9
- package/lib/rules/numberMethodRanges.js +0 -72
- package/lib/rules/numberStaticMethods.d.ts +0 -9
- package/lib/rules/numberStaticMethods.js +0 -51
- package/lib/rules/numericErasingOperations.d.ts +0 -9
- package/lib/rules/numericErasingOperations.js +0 -44
- package/lib/rules/numericLiteralParsing.d.ts +0 -9
- package/lib/rules/numericLiteralParsing.js +0 -55
- package/lib/rules/numericPrecision.d.ts +0 -9
- package/lib/rules/numericPrecision.js +0 -100
- package/lib/rules/numericSeparatorGroups.d.ts +0 -9
- package/lib/rules/numericSeparatorGroups.js +0 -99
- package/lib/rules/objectAssignSpreads.d.ts +0 -9
- package/lib/rules/objectAssignSpreads.js +0 -51
- package/lib/rules/objectCalls.d.ts +0 -9
- package/lib/rules/objectCalls.js +0 -36
- package/lib/rules/objectEntriesMethods.d.ts +0 -9
- package/lib/rules/objectEntriesMethods.js +0 -80
- package/lib/rules/objectHasOwns.d.ts +0 -9
- package/lib/rules/objectHasOwns.js +0 -48
- package/lib/rules/objectKeyDuplicates.d.ts +0 -9
- package/lib/rules/objectKeyDuplicates.js +0 -61
- package/lib/rules/objectProto.d.ts +0 -9
- package/lib/rules/objectProto.js +0 -48
- package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
- package/lib/rules/objectPrototypeBuiltIns.js +0 -52
- package/lib/rules/objectShorthand.d.ts +0 -9
- package/lib/rules/objectShorthand.js +0 -82
- package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
- package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
- package/lib/rules/objectTypeDefinitions.d.ts +0 -9
- package/lib/rules/objectTypeDefinitions.js +0 -32
- package/lib/rules/octalEscapes.d.ts +0 -9
- package/lib/rules/octalEscapes.js +0 -56
- package/lib/rules/octalNumbers.d.ts +0 -9
- package/lib/rules/octalNumbers.js +0 -53
- package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
- package/lib/rules/operatorAssignmentShorthand.js +0 -75
- package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
- package/lib/rules/overloadSignaturesAdjacent.js +0 -138
- package/lib/rules/parameterReassignments.d.ts +0 -9
- package/lib/rules/parameterReassignments.js +0 -43
- package/lib/rules/parseIntRadixes.d.ts +0 -9
- package/lib/rules/parseIntRadixes.js +0 -57
- package/lib/rules/propertyAccessNotation.d.ts +0 -12
- package/lib/rules/propertyAccessNotation.js +0 -117
- package/lib/rules/recursionOnlyArguments.d.ts +0 -9
- package/lib/rules/recursionOnlyArguments.js +0 -62
- package/lib/rules/redundantTypeConstituents.d.ts +0 -9
- package/lib/rules/redundantTypeConstituents.js +0 -275
- package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
- package/lib/rules/regexAllGlobalFlags.js +0 -54
- package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
- package/lib/rules/regexAmbiguousInvalidity.js +0 -295
- package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
- package/lib/rules/regexCharacterClassRanges.js +0 -135
- package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
- package/lib/rules/regexCharacterClassSetOperations.js +0 -79
- package/lib/rules/regexCharacterClasses.d.ts +0 -9
- package/lib/rules/regexCharacterClasses.js +0 -232
- package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
- package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
- package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
- package/lib/rules/regexContradictoryAssertions.js +0 -208
- package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
- package/lib/rules/regexControlCharacterEscapes.js +0 -128
- package/lib/rules/regexControlCharacters.d.ts +0 -9
- package/lib/rules/regexControlCharacters.js +0 -93
- package/lib/rules/regexDigitMatchers.d.ts +0 -9
- package/lib/rules/regexDigitMatchers.js +0 -178
- package/lib/rules/regexDollarEscapes.d.ts +0 -9
- package/lib/rules/regexDollarEscapes.js +0 -89
- package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
- package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
- package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
- package/lib/rules/regexEmptyAlternatives.js +0 -138
- package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
- package/lib/rules/regexEmptyCapturingGroups.js +0 -65
- package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
- package/lib/rules/regexEmptyCharacterClasses.js +0 -66
- package/lib/rules/regexEmptyGroups.d.ts +0 -9
- package/lib/rules/regexEmptyGroups.js +0 -64
- package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
- package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
- package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
- package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
- package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
- package/lib/rules/regexEmptyStringLiterals.js +0 -64
- package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
- package/lib/rules/regexEscapeBackspaces.js +0 -67
- package/lib/rules/regexExecutors.d.ts +0 -9
- package/lib/rules/regexExecutors.js +0 -56
- package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
- package/lib/rules/regexGraphemeStringLiterals.js +0 -49
- package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
- package/lib/rules/regexHexadecimalEscapes.js +0 -69
- package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
- package/lib/rules/regexIgnoreCaseFlags.js +0 -143
- package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
- package/lib/rules/regexInvisibleCharacters.js +0 -88
- package/lib/rules/regexLetterCasing.d.ts +0 -9
- package/lib/rules/regexLetterCasing.js +0 -184
- package/lib/rules/regexLiterals.d.ts +0 -9
- package/lib/rules/regexLiterals.js +0 -87
- package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
- package/lib/rules/regexLookaroundAssertions.js +0 -161
- package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
- package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
- package/lib/rules/regexMatchNotation.d.ts +0 -9
- package/lib/rules/regexMatchNotation.js +0 -137
- package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
- package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
- package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
- package/lib/rules/regexMisleadingQuantifiers.js +0 -76
- package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
- package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
- package/lib/rules/regexNamedBackreferences.d.ts +0 -9
- package/lib/rules/regexNamedBackreferences.js +0 -46
- package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
- package/lib/rules/regexNamedCaptureGroups.js +0 -65
- package/lib/rules/regexNamedReplacements.d.ts +0 -9
- package/lib/rules/regexNamedReplacements.js +0 -91
- package/lib/rules/regexNonStandardFlags.d.ts +0 -9
- package/lib/rules/regexNonStandardFlags.js +0 -64
- package/lib/rules/regexObscureRanges.d.ts +0 -9
- package/lib/rules/regexObscureRanges.js +0 -91
- package/lib/rules/regexOctalEscapes.d.ts +0 -9
- package/lib/rules/regexOctalEscapes.js +0 -68
- package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
- package/lib/rules/regexPlusQuantifiers.js +0 -66
- package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
- package/lib/rules/regexPredefinedAssertions.js +0 -125
- package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
- package/lib/rules/regexQuestionQuantifiers.js +0 -102
- package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
- package/lib/rules/regexRepeatQuantifiers.js +0 -94
- package/lib/rules/regexResultArrayGroups.d.ts +0 -9
- package/lib/rules/regexResultArrayGroups.js +0 -185
- package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
- package/lib/rules/regexSetOperationOptimizations.js +0 -175
- package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
- package/lib/rules/regexStandaloneBackslashes.js +0 -57
- package/lib/rules/regexStarQuantifiers.d.ts +0 -9
- package/lib/rules/regexStarQuantifiers.js +0 -66
- package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
- package/lib/rules/regexSuperLinearBacktracking.js +0 -96
- package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
- package/lib/rules/regexSuperLinearMoves.js +0 -140
- package/lib/rules/regexTestMethods.d.ts +0 -9
- package/lib/rules/regexTestMethods.js +0 -81
- package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
- package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
- package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
- package/lib/rules/regexUnicodeEscapes.js +0 -95
- package/lib/rules/regexUnicodeFlag.d.ts +0 -8
- package/lib/rules/regexUnicodeFlag.js +0 -95
- package/lib/rules/regexUnicodeProperties.d.ts +0 -9
- package/lib/rules/regexUnicodeProperties.js +0 -131
- package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryAssertions.js +0 -221
- package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
- package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
- package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
- package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
- package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
- package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
- package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
- package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
- package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
- package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
- package/lib/rules/regexUnnecessaryEscapes.js +0 -134
- package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
- package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
- package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
- package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
- package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
- package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
- package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
- package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
- package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
- package/lib/rules/regexUnnecessarySetOperands.js +0 -134
- package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
- package/lib/rules/regexUnusedCapturingGroups.js +0 -67
- package/lib/rules/regexUnusedFlags.d.ts +0 -9
- package/lib/rules/regexUnusedFlags.js +0 -114
- package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
- package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnusedQuantifiers.js +0 -61
- package/lib/rules/regexValidity.d.ts +0 -9
- package/lib/rules/regexValidity.js +0 -144
- package/lib/rules/regexWordMatchers.d.ts +0 -9
- package/lib/rules/regexWordMatchers.js +0 -144
- package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
- package/lib/rules/regexZeroQuantifiers.js +0 -58
- package/lib/rules/requireImports.d.ts +0 -9
- package/lib/rules/requireImports.js +0 -46
- package/lib/rules/responseJsonMethods.d.ts +0 -9
- package/lib/rules/responseJsonMethods.js +0 -49
- package/lib/rules/restrictedIdentifiers.d.ts +0 -12
- package/lib/rules/restrictedIdentifiers.js +0 -39
- package/lib/rules/restrictedImports.d.ts +0 -26
- package/lib/rules/restrictedImports.js +0 -164
- package/lib/rules/returnAssignments.d.ts +0 -9
- package/lib/rules/returnAssignments.js +0 -36
- package/lib/rules/returnThisTypes.d.ts +0 -9
- package/lib/rules/returnThisTypes.js +0 -92
- package/lib/rules/ruleCreator.d.ts +0 -2
- package/lib/rules/ruleCreator.js +0 -15
- package/lib/rules/selfAssignments.d.ts +0 -9
- package/lib/rules/selfAssignments.js +0 -27
- package/lib/rules/sequences.d.ts +0 -9
- package/lib/rules/sequences.js +0 -26
- package/lib/rules/setSizeLengthChecks.d.ts +0 -9
- package/lib/rules/setSizeLengthChecks.js +0 -46
- package/lib/rules/setterReturns.d.ts +0 -9
- package/lib/rules/setterReturns.js +0 -39
- package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
- package/lib/rules/shadowedRestrictedNames.js +0 -66
- package/lib/rules/singleVariableDeclarations.d.ts +0 -9
- package/lib/rules/singleVariableDeclarations.js +0 -34
- package/lib/rules/sizeComparisonOperators.d.ts +0 -15
- package/lib/rules/sizeComparisonOperators.js +0 -146
- package/lib/rules/sparseArrays.d.ts +0 -9
- package/lib/rules/sparseArrays.js +0 -41
- package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
- package/lib/rules/staticMemberOnlyClasses.js +0 -75
- package/lib/rules/stringCaseMismatches.d.ts +0 -9
- package/lib/rules/stringCaseMismatches.js +0 -53
- package/lib/rules/stringCodePoints.d.ts +0 -9
- package/lib/rules/stringCodePoints.js +0 -48
- package/lib/rules/stringSliceMethods.d.ts +0 -9
- package/lib/rules/stringSliceMethods.js +0 -45
- package/lib/rules/stringStartsEndsWith.d.ts +0 -9
- package/lib/rules/stringStartsEndsWith.js +0 -77
- package/lib/rules/structuredCloneMethods.d.ts +0 -9
- package/lib/rules/structuredCloneMethods.js +0 -37
- package/lib/rules/symbolDescriptions.d.ts +0 -9
- package/lib/rules/symbolDescriptions.js +0 -30
- package/lib/rules/thisAliases.d.ts +0 -9
- package/lib/rules/thisAliases.js +0 -42
- package/lib/rules/thisBeforeSuper.d.ts +0 -9
- package/lib/rules/thisBeforeSuper.js +0 -84
- package/lib/rules/throwErrors.d.ts +0 -9
- package/lib/rules/throwErrors.js +0 -59
- package/lib/rules/topLevelAwaits.d.ts +0 -9
- package/lib/rules/topLevelAwaits.js +0 -47
- package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
- package/lib/rules/tripleSlashReferenceValidity.js +0 -52
- package/lib/rules/tripleSlashReferences.d.ts +0 -9
- package/lib/rules/tripleSlashReferences.js +0 -32
- package/lib/rules/tsComments.d.ts +0 -21
- package/lib/rules/tsComments.js +0 -128
- package/lib/rules/tslintComments.d.ts +0 -9
- package/lib/rules/tslintComments.js +0 -34
- package/lib/rules/typeAssertionStyles.d.ts +0 -9
- package/lib/rules/typeAssertionStyles.js +0 -30
- package/lib/rules/typeImports.d.ts +0 -19
- package/lib/rules/typeImports.js +0 -281
- package/lib/rules/typeofComparisons.d.ts +0 -9
- package/lib/rules/typeofComparisons.js +0 -53
- package/lib/rules/unassignedVariables.d.ts +0 -9
- package/lib/rules/unassignedVariables.js +0 -32
- package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
- package/lib/rules/undefinedTypeofChecks.js +0 -39
- package/lib/rules/undefinedVariables.d.ts +0 -9
- package/lib/rules/undefinedVariables.js +0 -37
- package/lib/rules/unicodeBOMs.d.ts +0 -9
- package/lib/rules/unicodeBOMs.js +0 -37
- package/lib/rules/unnecessaryBinds.d.ts +0 -9
- package/lib/rules/unnecessaryBinds.js +0 -76
- package/lib/rules/unnecessaryBlocks.d.ts +0 -9
- package/lib/rules/unnecessaryBlocks.js +0 -58
- package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
- package/lib/rules/unnecessaryBooleanCasts.js +0 -56
- package/lib/rules/unnecessaryCatches.d.ts +0 -9
- package/lib/rules/unnecessaryCatches.js +0 -46
- package/lib/rules/unnecessaryComparisons.d.ts +0 -9
- package/lib/rules/unnecessaryComparisons.js +0 -291
- package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
- package/lib/rules/unnecessaryConcatenation.js +0 -26
- package/lib/rules/unnecessaryEscapes.d.ts +0 -9
- package/lib/rules/unnecessaryEscapes.js +0 -132
- package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
- package/lib/rules/unnecessaryMathClamps.js +0 -106
- package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
- package/lib/rules/unnecessaryNumericFractions.js +0 -48
- package/lib/rules/unnecessaryRenames.d.ts +0 -9
- package/lib/rules/unnecessaryRenames.js +0 -90
- package/lib/rules/unnecessaryTernaries.d.ts +0 -9
- package/lib/rules/unnecessaryTernaries.js +0 -86
- package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
- package/lib/rules/unnecessaryUseStricts.js +0 -38
- package/lib/rules/unsafeNegations.d.ts +0 -9
- package/lib/rules/unsafeNegations.js +0 -36
- package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
- package/lib/rules/utils/collectAccessorPairs.js +0 -27
- package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
- package/lib/rules/utils/countCommentsInRange.js +0 -10
- package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
- package/lib/rules/utils/discriminateAnyType.js +0 -36
- package/lib/rules/utils/equalityOperators.d.ts +0 -8
- package/lib/rules/utils/equalityOperators.js +0 -34
- package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
- package/lib/rules/utils/forEachReturnStatement.js +0 -27
- package/lib/rules/utils/formatReportedType.d.ts +0 -3
- package/lib/rules/utils/formatReportedType.js +0 -7
- package/lib/rules/utils/getConstrainedType.d.ts +0 -2
- package/lib/rules/utils/getConstrainedType.js +0 -7
- package/lib/rules/utils/getFunctionName.d.ts +0 -2
- package/lib/rules/utils/getFunctionName.js +0 -14
- package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
- package/lib/rules/utils/getRegExpConstruction.js +0 -25
- package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
- package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
- package/lib/rules/utils/getThisExpression.d.ts +0 -2
- package/lib/rules/utils/getThisExpression.js +0 -14
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
- package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
- package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
- package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
- package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
- package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
- package/lib/rules/utils/isErrorSubclass.js +0 -25
- package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
- package/lib/rules/utils/isInBooleanContext.js +0 -20
- package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
- package/lib/rules/utils/isTypeRecursive.js +0 -6
- package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
- package/lib/rules/utils/isUnsafeAssignment.js +0 -43
- package/lib/rules/utils/operators.d.ts +0 -4
- package/lib/rules/utils/operators.js +0 -33
- package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
- package/lib/rules/utils/parseRegexpAst.js +0 -15
- package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
- package/lib/rules/utils/parseRegexpAstFull.js +0 -16
- package/lib/rules/utils/skipParentheses.d.ts +0 -2
- package/lib/rules/utils/skipParentheses.js +0 -8
- package/lib/rules/variableDeletions.d.ts +0 -9
- package/lib/rules/variableDeletions.js +0 -33
- package/lib/rules/voidOperator.d.ts +0 -9
- package/lib/rules/voidOperator.js +0 -32
- package/lib/rules/withStatements.d.ts +0 -9
- package/lib/rules/withStatements.js +0 -28
- package/lib/rules/wrapperObjects.d.ts +0 -9
- package/lib/rules/wrapperObjects.js +0 -34
- package/lib/type-utils/getSpecifierNames.d.ts +0 -2
- package/lib/type-utils/getSpecifierNames.js +0 -7
- package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
- package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
- package/lib/type-utils/isFromFile.d.ts +0 -2
- package/lib/type-utils/isFromFile.js +0 -11
- package/lib/type-utils/isFromPackage.d.ts +0 -2
- package/lib/type-utils/isFromPackage.js +0 -13
- package/lib/type-utils/matchesSpecifier.d.ts +0 -3
- package/lib/type-utils/matchesSpecifier.js +0 -18
- package/lib/type-utils/schemas.d.ts +0 -14
- package/lib/type-utils/schemas.js +0 -23
package/lib/rules/deprecated.js
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/deprecated.ts
|
|
5
|
-
var deprecated_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Disallow using code marked as @deprecated.",
|
|
8
|
-
id: "deprecated",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { deprecated: {
|
|
12
|
-
primary: "This is deprecated.",
|
|
13
|
-
secondary: ["The @deprecated JSDoc tag indicates this code should no longer be used.", "Deprecated code may be removed in future versions."],
|
|
14
|
-
suggestions: ["Find a non-deprecated alternative."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function getJsDocDeprecation(symbol, typeChecker) {
|
|
18
|
-
if (!symbol) return false;
|
|
19
|
-
let jsDocTags;
|
|
20
|
-
try {
|
|
21
|
-
jsDocTags = symbol.getJsDocTags(typeChecker);
|
|
22
|
-
} catch {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return jsDocTags.some((tag) => tag.name === "deprecated");
|
|
26
|
-
}
|
|
27
|
-
function isDeprecatedFromDeclarations(symbol) {
|
|
28
|
-
return symbol?.getDeclarations()?.some((declaration) => {
|
|
29
|
-
return ts$1.getJSDocTags(declaration).some((tag) => tag.tagName.text === "deprecated" || tag.tagName.text === "Deprecated");
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
function searchForDeprecationInAliasesChain(symbol, typeChecker, checkAliasedSymbol) {
|
|
33
|
-
if (!symbol) return false;
|
|
34
|
-
if (!(symbol.flags & ts$1.SymbolFlags.Alias)) return !!(checkAliasedSymbol && (getJsDocDeprecation(symbol, typeChecker) || isDeprecatedFromDeclarations(symbol)));
|
|
35
|
-
const targetSymbol = typeChecker.getAliasedSymbol(symbol);
|
|
36
|
-
let current = symbol;
|
|
37
|
-
while (current.flags & ts$1.SymbolFlags.Alias) {
|
|
38
|
-
if (getJsDocDeprecation(current, typeChecker) || isDeprecatedFromDeclarations(current)) return true;
|
|
39
|
-
if (!current.getDeclarations()) break;
|
|
40
|
-
const immediateAliased = typeChecker.getImmediateAliasedSymbol(current);
|
|
41
|
-
if (!immediateAliased) break;
|
|
42
|
-
current = immediateAliased;
|
|
43
|
-
if (checkAliasedSymbol && current === targetSymbol) return !!(getJsDocDeprecation(current, typeChecker) || isDeprecatedFromDeclarations(current));
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
function isDeprecated(symbol, typeChecker) {
|
|
48
|
-
return searchForDeprecationInAliasesChain(symbol, typeChecker, true);
|
|
49
|
-
}
|
|
50
|
-
function isDeclarationSite(node) {
|
|
51
|
-
switch (node.parent.kind) {
|
|
52
|
-
case ts$1.SyntaxKind.ArrowFunction:
|
|
53
|
-
case ts$1.SyntaxKind.ClassDeclaration:
|
|
54
|
-
case ts$1.SyntaxKind.Constructor:
|
|
55
|
-
case ts$1.SyntaxKind.EnumDeclaration:
|
|
56
|
-
case ts$1.SyntaxKind.EnumMember:
|
|
57
|
-
case ts$1.SyntaxKind.FunctionDeclaration:
|
|
58
|
-
case ts$1.SyntaxKind.FunctionExpression:
|
|
59
|
-
case ts$1.SyntaxKind.GetAccessor:
|
|
60
|
-
case ts$1.SyntaxKind.InterfaceDeclaration:
|
|
61
|
-
case ts$1.SyntaxKind.MethodDeclaration:
|
|
62
|
-
case ts$1.SyntaxKind.MethodSignature:
|
|
63
|
-
case ts$1.SyntaxKind.ModuleDeclaration:
|
|
64
|
-
case ts$1.SyntaxKind.Parameter:
|
|
65
|
-
case ts$1.SyntaxKind.PropertyDeclaration:
|
|
66
|
-
case ts$1.SyntaxKind.PropertySignature:
|
|
67
|
-
case ts$1.SyntaxKind.SetAccessor:
|
|
68
|
-
case ts$1.SyntaxKind.TypeAliasDeclaration:
|
|
69
|
-
case ts$1.SyntaxKind.TypeParameter:
|
|
70
|
-
case ts$1.SyntaxKind.VariableDeclaration: return node.parent.name === node;
|
|
71
|
-
case ts$1.SyntaxKind.ExportSpecifier: return node.parent.propertyName === node;
|
|
72
|
-
case ts$1.SyntaxKind.ImportClause:
|
|
73
|
-
case ts$1.SyntaxKind.ImportSpecifier:
|
|
74
|
-
case ts$1.SyntaxKind.NamespaceImport: return true;
|
|
75
|
-
case ts$1.SyntaxKind.PropertyAssignment: return node.parent.name === node && !ts$1.isComputedPropertyName(node.parent.name) && ts$1.isObjectLiteralExpression(node.parent.parent);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function getCallLikeExpression(node) {
|
|
79
|
-
let current = node;
|
|
80
|
-
while (ts$1.isPropertyAccessExpression(current.parent) && current.parent.name === current) current = current.parent;
|
|
81
|
-
while (ts$1.isElementAccessExpression(current.parent) && current.parent.argumentExpression === current) current = current.parent;
|
|
82
|
-
switch (current.parent.kind) {
|
|
83
|
-
case ts$1.SyntaxKind.CallExpression:
|
|
84
|
-
case ts$1.SyntaxKind.Decorator:
|
|
85
|
-
case ts$1.SyntaxKind.NewExpression: return current.parent.expression === current && current.parent;
|
|
86
|
-
case ts$1.SyntaxKind.TaggedTemplateExpression: return current.parent.tag === current && current.parent;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function getCallLikeDeprecation(node, callLike, typeChecker) {
|
|
90
|
-
const signature = typeChecker.getResolvedSignature(callLike);
|
|
91
|
-
const symbol = typeChecker.getSymbolAtLocation(node);
|
|
92
|
-
const aliasedSymbol = symbol && symbol.flags & ts$1.SymbolFlags.Alias ? typeChecker.getAliasedSymbol(symbol) : symbol;
|
|
93
|
-
const symbolDeclarationKind = aliasedSymbol?.declarations?.[0]?.kind;
|
|
94
|
-
if (symbolDeclarationKind !== ts$1.SyntaxKind.MethodDeclaration && symbolDeclarationKind !== ts$1.SyntaxKind.FunctionDeclaration && symbolDeclarationKind !== ts$1.SyntaxKind.MethodSignature) return searchForDeprecationInAliasesChain(symbol, typeChecker, true) || getJsDocDeprecation(signature, typeChecker) || isDeprecatedFromDeclarations(aliasedSymbol);
|
|
95
|
-
return searchForDeprecationInAliasesChain(symbol, typeChecker, false) || getJsDocDeprecation(signature, typeChecker);
|
|
96
|
-
}
|
|
97
|
-
function checkNode(node, sourceFile, typeChecker) {
|
|
98
|
-
if (isDeclarationSite(node) || isInsideImport(node)) return;
|
|
99
|
-
const callLike = getCallLikeExpression(node);
|
|
100
|
-
if (callLike) {
|
|
101
|
-
if (getCallLikeDeprecation(node, callLike, typeChecker)) context.report({
|
|
102
|
-
message: "deprecated",
|
|
103
|
-
range: getTSNodeRange(node, sourceFile)
|
|
104
|
-
});
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (ts$1.isShorthandPropertyAssignment(node.parent) && node.parent.name === node) {
|
|
108
|
-
const symbol = typeChecker.getSymbolAtLocation(node);
|
|
109
|
-
const valueSymbol = symbol && typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
|
|
110
|
-
if (valueSymbol && (getJsDocDeprecation(valueSymbol, typeChecker) || isDeprecatedFromDeclarations(valueSymbol))) context.report({
|
|
111
|
-
message: "deprecated",
|
|
112
|
-
range: getTSNodeRange(node, sourceFile)
|
|
113
|
-
});
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (isDeprecated(typeChecker.getSymbolAtLocation(node), typeChecker)) context.report({
|
|
117
|
-
message: "deprecated",
|
|
118
|
-
range: getTSNodeRange(node, sourceFile)
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
function checkComputedPropertyAccess(node, sourceFile, typeChecker) {
|
|
122
|
-
const argumentExpression = node.argumentExpression;
|
|
123
|
-
const argumentType = typeChecker.getTypeAtLocation(argumentExpression);
|
|
124
|
-
if (!argumentType.isLiteral()) return;
|
|
125
|
-
const objectType = typeChecker.getTypeAtLocation(node.expression);
|
|
126
|
-
let propertyName;
|
|
127
|
-
if (argumentType.isStringLiteral()) propertyName = argumentType.value;
|
|
128
|
-
else if (argumentType.isNumberLiteral()) propertyName = String(argumentType.value);
|
|
129
|
-
else return;
|
|
130
|
-
const property = objectType.getProperty(propertyName);
|
|
131
|
-
if (property && (getJsDocDeprecation(property, typeChecker) || isDeprecatedFromDeclarations(property))) context.report({
|
|
132
|
-
message: "deprecated",
|
|
133
|
-
range: getTSNodeRange(argumentExpression, sourceFile)
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
function checkBindingElement(node, sourceFile, typeChecker) {
|
|
137
|
-
const bindingPattern = node.parent;
|
|
138
|
-
if (!ts$1.isObjectBindingPattern(bindingPattern)) return;
|
|
139
|
-
const propertyName = node.propertyName ?? node.name;
|
|
140
|
-
if (!ts$1.isIdentifier(propertyName)) return;
|
|
141
|
-
const declarationOrPattern = bindingPattern.parent;
|
|
142
|
-
let objectType;
|
|
143
|
-
if (ts$1.isVariableDeclaration(declarationOrPattern)) {
|
|
144
|
-
const initializer = declarationOrPattern.initializer;
|
|
145
|
-
if (initializer) objectType = typeChecker.getTypeAtLocation(initializer);
|
|
146
|
-
} else if (ts$1.isBindingElement(declarationOrPattern)) {
|
|
147
|
-
const parentInitializer = declarationOrPattern.parent.parent;
|
|
148
|
-
if (ts$1.isVariableDeclaration(parentInitializer)) {
|
|
149
|
-
const init = parentInitializer.initializer;
|
|
150
|
-
if (init) {
|
|
151
|
-
const parentType = typeChecker.getTypeAtLocation(init);
|
|
152
|
-
const parentPropertyName = declarationOrPattern.propertyName ?? declarationOrPattern.name;
|
|
153
|
-
if (ts$1.isIdentifier(parentPropertyName)) {
|
|
154
|
-
const prop = parentType.getProperty(parentPropertyName.text);
|
|
155
|
-
if (prop) objectType = typeChecker.getTypeOfSymbolAtLocation(prop, parentInitializer);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (objectType) {
|
|
161
|
-
const property = objectType.getProperty(propertyName.text);
|
|
162
|
-
if (property && (getJsDocDeprecation(property, typeChecker) || isDeprecatedFromDeclarations(property))) {
|
|
163
|
-
const reportNode = node.propertyName ?? node.name;
|
|
164
|
-
if (ts$1.isIdentifier(reportNode)) context.report({
|
|
165
|
-
message: "deprecated",
|
|
166
|
-
range: getTSNodeRange(reportNode, sourceFile)
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
function checkHeritageClause(node, sourceFile, typeChecker) {
|
|
172
|
-
for (const type of node.types) if (ts$1.isIdentifier(type.expression)) {
|
|
173
|
-
if (isDeprecated(typeChecker.getSymbolAtLocation(type.expression), typeChecker)) context.report({
|
|
174
|
-
message: "deprecated",
|
|
175
|
-
range: getTSNodeRange(type.expression, sourceFile)
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
function checkSuperCall(node, sourceFile, typeChecker) {
|
|
180
|
-
const callExpr = node.parent;
|
|
181
|
-
if (!ts$1.isCallExpression(callExpr) || callExpr.expression !== node) return;
|
|
182
|
-
const signature = typeChecker.getResolvedSignature(callExpr);
|
|
183
|
-
if (signature && getJsDocDeprecation(signature, typeChecker)) context.report({
|
|
184
|
-
message: "deprecated",
|
|
185
|
-
range: getTSNodeRange(node, sourceFile)
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
return { visitors: {
|
|
189
|
-
BindingElement: (node, { sourceFile, typeChecker }) => {
|
|
190
|
-
checkBindingElement(node, sourceFile, typeChecker);
|
|
191
|
-
},
|
|
192
|
-
ElementAccessExpression: (node, { sourceFile, typeChecker }) => {
|
|
193
|
-
checkComputedPropertyAccess(node, sourceFile, typeChecker);
|
|
194
|
-
},
|
|
195
|
-
HeritageClause: (node, { sourceFile, typeChecker }) => {
|
|
196
|
-
checkHeritageClause(node, sourceFile, typeChecker);
|
|
197
|
-
},
|
|
198
|
-
Identifier: (node, { sourceFile, typeChecker }) => {
|
|
199
|
-
if (isInsideHeritageClause(node)) return;
|
|
200
|
-
if (ts$1.isPropertyAccessExpression(node.parent) && node === node.parent.name) {
|
|
201
|
-
checkNode(node, sourceFile, typeChecker);
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
if (ts$1.isQualifiedName(node.parent) && node === node.parent.right) {
|
|
205
|
-
checkNode(node, sourceFile, typeChecker);
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
if (ts$1.isElementAccessExpression(node.parent) && node === node.parent.argumentExpression) return;
|
|
209
|
-
checkNode(node, sourceFile, typeChecker);
|
|
210
|
-
},
|
|
211
|
-
PrivateIdentifier: (node, { sourceFile, typeChecker }) => {
|
|
212
|
-
if (ts$1.isPropertyAccessExpression(node.parent) && node === node.parent.name) checkNode(node, sourceFile, typeChecker);
|
|
213
|
-
},
|
|
214
|
-
SuperKeyword: (node, { sourceFile, typeChecker }) => {
|
|
215
|
-
checkSuperCall(node, sourceFile, typeChecker);
|
|
216
|
-
}
|
|
217
|
-
} };
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
function isInsideHeritageClause(node) {
|
|
221
|
-
if (ts$1.isHeritageClause(node)) return true;
|
|
222
|
-
let current = node.parent;
|
|
223
|
-
while (current) {
|
|
224
|
-
if (ts$1.isHeritageClause(current)) return true;
|
|
225
|
-
if (ts$1.isSourceFile(current) || ts$1.isClassDeclaration(current)) break;
|
|
226
|
-
current = current.parent;
|
|
227
|
-
}
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
function isInsideImport(node) {
|
|
231
|
-
if (ts$1.isImportDeclaration(node)) return true;
|
|
232
|
-
let current = node.parent;
|
|
233
|
-
while (current) {
|
|
234
|
-
if (ts$1.isImportDeclaration(current)) return true;
|
|
235
|
-
if (ts$1.isSourceFile(current) || ts$1.isFunctionDeclaration(current) || ts$1.isFunctionExpression(current) || ts$1.isArrowFunction(current) || ts$1.isClassDeclaration(current) || ts$1.isClassExpression(current) || ts$1.isBlock(current)) return false;
|
|
236
|
-
current = current.parent;
|
|
237
|
-
}
|
|
238
|
-
return false;
|
|
239
|
-
}
|
|
240
|
-
//#endregion
|
|
241
|
-
export { deprecated_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Use destructured variables over properties for consistency.";
|
|
3
|
-
readonly id: "destructuringConsistency";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "useDestructured", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getScopeManager, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/destructuringConsistency.ts
|
|
5
|
-
function isInScope(accessScope, declarationScope) {
|
|
6
|
-
let current = accessScope;
|
|
7
|
-
while (current) {
|
|
8
|
-
if (current === declarationScope) return true;
|
|
9
|
-
current = current.upper;
|
|
10
|
-
}
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
function getInitializerKey(node) {
|
|
14
|
-
switch (node.kind) {
|
|
15
|
-
case ts$1.SyntaxKind.Identifier: return node.text;
|
|
16
|
-
case ts$1.SyntaxKind.PropertyAccessExpression: {
|
|
17
|
-
if (node.questionDotToken) return;
|
|
18
|
-
const objectKey = getInitializerKey(node.expression);
|
|
19
|
-
if (!objectKey) return;
|
|
20
|
-
return `${objectKey}.${node.name.text}`;
|
|
21
|
-
}
|
|
22
|
-
case ts$1.SyntaxKind.ThisKeyword: return "this";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function isLeftHandSide(node) {
|
|
26
|
-
switch (node.parent.kind) {
|
|
27
|
-
case ts$1.SyntaxKind.BinaryExpression: return node.parent.left === node && node.parent.operatorToken.kind >= ts$1.SyntaxKind.FirstAssignment && node.parent.operatorToken.kind <= ts$1.SyntaxKind.LastAssignment;
|
|
28
|
-
case ts$1.SyntaxKind.DeleteExpression: return true;
|
|
29
|
-
case ts$1.SyntaxKind.PostfixUnaryExpression:
|
|
30
|
-
case ts$1.SyntaxKind.PrefixUnaryExpression: return node.parent.operator === ts$1.SyntaxKind.PlusPlusToken || node.parent.operator === ts$1.SyntaxKind.MinusMinusToken;
|
|
31
|
-
default: return false;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
var destructuringConsistency_default = ruleCreator.createRule(typescriptLanguage, {
|
|
35
|
-
about: {
|
|
36
|
-
description: "Use destructured variables over properties for consistency.",
|
|
37
|
-
id: "destructuringConsistency",
|
|
38
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
39
|
-
},
|
|
40
|
-
messages: { useDestructured: {
|
|
41
|
-
primary: "Use the destructured variable instead of accessing the property again.",
|
|
42
|
-
secondary: ["After destructuring an object, access properties through the destructured variables.", "Mixing destructured variables with property access on the same object is inconsistent."],
|
|
43
|
-
suggestions: ["Replace `{{ expression }}` with `{{ variable }}`."]
|
|
44
|
-
} },
|
|
45
|
-
setup(context) {
|
|
46
|
-
const destructuredObjects = [];
|
|
47
|
-
return { visitors: {
|
|
48
|
-
PropertyAccessExpression: (node, { sourceFile }) => {
|
|
49
|
-
if (node.questionDotToken) return;
|
|
50
|
-
const accessKey = getInitializerKey(node.expression);
|
|
51
|
-
if (!accessKey) return;
|
|
52
|
-
const accessScope = getScopeManager(sourceFile).getScope(node);
|
|
53
|
-
const destructured = destructuredObjects.find((object) => object.initKey === accessKey && node.getStart(sourceFile) >= object.declarationEnd && isInScope(accessScope, object.scope));
|
|
54
|
-
if (!destructured) return;
|
|
55
|
-
const propertyName = node.name.text;
|
|
56
|
-
if (!destructured.destructuredProperties.has(propertyName)) return;
|
|
57
|
-
const variableName = destructured.destructuredProperties.get(propertyName);
|
|
58
|
-
if (ts$1.isCallExpression(node.parent) && node.parent.expression === node || isLeftHandSide(node)) return;
|
|
59
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
60
|
-
const expression = node.getText(sourceFile);
|
|
61
|
-
const [variable, suggestions] = variableName ? [variableName, [{
|
|
62
|
-
id: "useDestructuredVariable",
|
|
63
|
-
range,
|
|
64
|
-
text: variableName
|
|
65
|
-
}]] : [propertyName];
|
|
66
|
-
context.report({
|
|
67
|
-
data: {
|
|
68
|
-
expression,
|
|
69
|
-
variable
|
|
70
|
-
},
|
|
71
|
-
message: "useDestructured",
|
|
72
|
-
range,
|
|
73
|
-
suggestions
|
|
74
|
-
});
|
|
75
|
-
},
|
|
76
|
-
"SourceFile:exit"() {
|
|
77
|
-
destructuredObjects.length = 0;
|
|
78
|
-
},
|
|
79
|
-
VariableDeclaration: (node, { sourceFile }) => {
|
|
80
|
-
if (!node.initializer || !ts$1.isObjectBindingPattern(node.name)) return;
|
|
81
|
-
const initKey = getInitializerKey(node.initializer);
|
|
82
|
-
if (!initKey) return;
|
|
83
|
-
const properties = /* @__PURE__ */ new Map();
|
|
84
|
-
for (const element of node.name.elements) {
|
|
85
|
-
if (!ts$1.isBindingElement(element)) continue;
|
|
86
|
-
if (element.propertyName) {
|
|
87
|
-
if (ts$1.isIdentifier(element.propertyName)) {
|
|
88
|
-
if (ts$1.isObjectBindingPattern(element.name) || ts$1.isArrayBindingPattern(element.name)) properties.set(element.propertyName.text, null);
|
|
89
|
-
else if (ts$1.isIdentifier(element.name)) properties.set(element.propertyName.text, element.name.text);
|
|
90
|
-
}
|
|
91
|
-
} else if (ts$1.isIdentifier(element.name)) properties.set(element.name.text, element.name.text);
|
|
92
|
-
}
|
|
93
|
-
if (properties.size) destructuredObjects.push({
|
|
94
|
-
declarationEnd: node.getEnd(),
|
|
95
|
-
destructuredProperties: properties,
|
|
96
|
-
initKey,
|
|
97
|
-
scope: getScopeManager(sourceFile).getScope(node)
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
} };
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
//#endregion
|
|
104
|
-
export { destructuringConsistency_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports functions with duplicate parameter names in their signatures.";
|
|
3
|
-
readonly id: "duplicateArguments";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "duplicateParam", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/duplicateArguments.ts
|
|
5
|
-
var duplicateArguments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports functions with duplicate parameter names in their signatures.",
|
|
8
|
-
id: "duplicateArguments",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { duplicateParam: {
|
|
12
|
-
primary: "This parameter overrides the previous parameter of the same name.",
|
|
13
|
-
secondary: [
|
|
14
|
-
"Duplicate parameter names in functions can lead to unexpected behavior and make code harder to understand.",
|
|
15
|
-
"In strict mode, duplicate parameter names are a syntax error.",
|
|
16
|
-
"Even in non-strict mode, only the last parameter with a given name is accessible."
|
|
17
|
-
],
|
|
18
|
-
suggestions: ["Rename one of the duplicate parameters to a unique name."]
|
|
19
|
-
} },
|
|
20
|
-
setup(context) {
|
|
21
|
-
function checkNode({ parameters }, { sourceFile }) {
|
|
22
|
-
const seenNames = /* @__PURE__ */ new Set();
|
|
23
|
-
for (const parameter of parameters) {
|
|
24
|
-
if (parameter.name.kind !== SyntaxKind.Identifier) continue;
|
|
25
|
-
const parameterName = parameter.name.text;
|
|
26
|
-
if (seenNames.has(parameterName)) context.report({
|
|
27
|
-
message: "duplicateParam",
|
|
28
|
-
range: getTSNodeRange(parameter.name, sourceFile)
|
|
29
|
-
});
|
|
30
|
-
else seenNames.add(parameterName);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return { visitors: {
|
|
34
|
-
ArrowFunction: checkNode,
|
|
35
|
-
Constructor: checkNode,
|
|
36
|
-
FunctionDeclaration: checkNode,
|
|
37
|
-
FunctionExpression: checkNode,
|
|
38
|
-
MethodDeclaration: checkNode
|
|
39
|
-
} };
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
//#endregion
|
|
43
|
-
export { duplicateArguments_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Disallow using the delete operator on computed key expressions.";
|
|
3
|
-
readonly id: "dynamicDeletes";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "dynamicDelete", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind, isElementAccessExpression, isNumericLiteral, isPrefixUnaryExpression, isStringLiteral } from "typescript";
|
|
4
|
-
//#region src/rules/dynamicDeletes.ts
|
|
5
|
-
function isAcceptableIndexExpression(property) {
|
|
6
|
-
return isStringLiteral(property) || isNumericLiteral(property) || isPrefixUnaryExpression(property) && property.operator === SyntaxKind.MinusToken && isNumericLiteral(property.operand);
|
|
7
|
-
}
|
|
8
|
-
var dynamicDeletes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
9
|
-
about: {
|
|
10
|
-
description: "Disallow using the delete operator on computed key expressions.",
|
|
11
|
-
id: "dynamicDeletes",
|
|
12
|
-
presets: ["logical", "logicalStrict"]
|
|
13
|
-
},
|
|
14
|
-
messages: { dynamicDelete: {
|
|
15
|
-
primary: "Using the `delete` operator on a computed key can be dangerous and is often not well optimized.",
|
|
16
|
-
secondary: ["In modern code, JavaScript objects are generally intended to be optimized as static shapes by engines.", "Consider using a `Map` or `Set` if you need to dynamically add and remove keys."],
|
|
17
|
-
suggestions: ["Use a `Map` or `Set` instead of an object for dynamic keys."]
|
|
18
|
-
} },
|
|
19
|
-
setup(context) {
|
|
20
|
-
return { visitors: { DeleteExpression: (node, { sourceFile }) => {
|
|
21
|
-
const argument = node.expression;
|
|
22
|
-
if (!isElementAccessExpression(argument) || isAcceptableIndexExpression(argument.argumentExpression)) return;
|
|
23
|
-
const property = argument.argumentExpression;
|
|
24
|
-
context.report({
|
|
25
|
-
message: "dynamicDelete",
|
|
26
|
-
range: {
|
|
27
|
-
begin: property.getStart(sourceFile),
|
|
28
|
-
end: property.getEnd()
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
} } };
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
//#endregion
|
|
35
|
-
export { dynamicDeletes_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports duplicate conditions in if-else-if chains that make code unreachable.";
|
|
3
|
-
readonly id: "elseIfDuplicates";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "duplicateCondition", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/elseIfDuplicates.ts
|
|
5
|
-
var elseIfDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports duplicate conditions in if-else-if chains that make code unreachable.",
|
|
8
|
-
id: "elseIfDuplicates",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { duplicateCondition: {
|
|
12
|
-
primary: "This condition is identical to a previous condition in the if-else-if chain.",
|
|
13
|
-
secondary: ["When an if-else-if chain has duplicate conditions, the duplicate branch will never execute because the earlier identical condition will always be evaluated first.", "This typically indicates a copy-paste error or logic mistake."],
|
|
14
|
-
suggestions: ["Verify the condition logic is correct and update to check for the intended condition."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function checkIfStatement(node, sourceFile) {
|
|
18
|
-
const seen = [];
|
|
19
|
-
let current = node;
|
|
20
|
-
while (true) {
|
|
21
|
-
if (seen.some((previous) => hasSameTokens(previous, current.expression, sourceFile))) context.report({
|
|
22
|
-
message: "duplicateCondition",
|
|
23
|
-
range: getTSNodeRange(current.expression, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
if (current.elseStatement?.kind !== SyntaxKind.IfStatement) break;
|
|
26
|
-
seen.push(current.expression);
|
|
27
|
-
current = current.elseStatement;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return { visitors: { IfStatement: (node, { sourceFile }) => {
|
|
31
|
-
if (node.parent.kind !== SyntaxKind.IfStatement || node.parent.elseStatement !== node) checkIfStatement(node, sourceFile);
|
|
32
|
-
} } };
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
//#endregion
|
|
36
|
-
export { elseIfDuplicates_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports unnecessary `else` blocks following `if` statements that always return or throw.";
|
|
3
|
-
readonly id: "elseReturns";
|
|
4
|
-
readonly presets: readonly ["stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "unnecessaryElse", undefined>;
|
|
9
|
-
export default _default;
|
package/lib/rules/elseReturns.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/elseReturns.ts
|
|
5
|
-
function alwaysTerminates(node) {
|
|
6
|
-
switch (node.kind) {
|
|
7
|
-
case SyntaxKind.Block: return node.statements.some((statement) => isTerminatingStatement(statement.kind) || hasNestedIfThatTerminates(statement));
|
|
8
|
-
case SyntaxKind.ReturnStatement:
|
|
9
|
-
case SyntaxKind.ThrowStatement: return true;
|
|
10
|
-
default: return hasNestedIfThatTerminates(node);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function findElseKeyword(node, sourceFile) {
|
|
14
|
-
return node.getChildren(sourceFile).find((child) => child.kind === SyntaxKind.ElseKeyword);
|
|
15
|
-
}
|
|
16
|
-
function hasNestedIfThatTerminates(node) {
|
|
17
|
-
return node.kind === SyntaxKind.IfStatement && node.elseStatement !== void 0 && naiveTerminates(node.thenStatement) && naiveTerminates(node.elseStatement);
|
|
18
|
-
}
|
|
19
|
-
function isInStatementListContext(node) {
|
|
20
|
-
return node.parent.kind === SyntaxKind.Block || node.parent.kind === SyntaxKind.SourceFile || node.parent.kind === SyntaxKind.ModuleBlock || node.parent.kind === SyntaxKind.CaseClause || node.parent.kind === SyntaxKind.DefaultClause;
|
|
21
|
-
}
|
|
22
|
-
function isTerminatingStatement(kind) {
|
|
23
|
-
return kind === SyntaxKind.ReturnStatement || kind === SyntaxKind.ThrowStatement;
|
|
24
|
-
}
|
|
25
|
-
function naiveTerminates(node) {
|
|
26
|
-
if (node.kind !== SyntaxKind.Block) return isTerminatingStatement(node.kind);
|
|
27
|
-
const lastStatement = node.statements.at(-1);
|
|
28
|
-
if (!lastStatement) return false;
|
|
29
|
-
return isTerminatingStatement(lastStatement.kind) || hasNestedIfThatTerminates(lastStatement);
|
|
30
|
-
}
|
|
31
|
-
var elseReturns_default = ruleCreator.createRule(typescriptLanguage, {
|
|
32
|
-
about: {
|
|
33
|
-
description: "Reports unnecessary `else` blocks following `if` statements that always return or throw.",
|
|
34
|
-
id: "elseReturns",
|
|
35
|
-
presets: ["stylisticStrict"]
|
|
36
|
-
},
|
|
37
|
-
messages: { unnecessaryElse: {
|
|
38
|
-
primary: "This `else` clause is unnecessary after a terminating statement.",
|
|
39
|
-
secondary: ["When an `if` block always returns or throws, the `else` block is redundant because the code after the `if` statement will only execute when the condition is false."],
|
|
40
|
-
suggestions: ["Remove the `else` keyword and un-indent the contents of the `else` block."]
|
|
41
|
-
} },
|
|
42
|
-
setup(context) {
|
|
43
|
-
return { visitors: { IfStatement: (node, { sourceFile }) => {
|
|
44
|
-
if (!isInStatementListContext(node) || !node.elseStatement) return;
|
|
45
|
-
const thenBranches = [];
|
|
46
|
-
let lastIfNode = node;
|
|
47
|
-
let currentNode = node;
|
|
48
|
-
while (currentNode.kind === SyntaxKind.IfStatement) {
|
|
49
|
-
if (!currentNode.elseStatement) return;
|
|
50
|
-
thenBranches.push(currentNode.thenStatement);
|
|
51
|
-
lastIfNode = currentNode;
|
|
52
|
-
currentNode = currentNode.elseStatement;
|
|
53
|
-
}
|
|
54
|
-
if (!thenBranches.every(alwaysTerminates)) return;
|
|
55
|
-
const elseKeyword = findElseKeyword(lastIfNode, sourceFile);
|
|
56
|
-
if (!elseKeyword) return;
|
|
57
|
-
context.report({
|
|
58
|
-
message: "unnecessaryElse",
|
|
59
|
-
range: getTSNodeRange(elseKeyword, sourceFile)
|
|
60
|
-
});
|
|
61
|
-
} } };
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
//#endregion
|
|
65
|
-
export { elseReturns_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty block statements that should contain code.";
|
|
3
|
-
readonly id: "emptyBlocks";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyBlock", undefined>;
|
|
9
|
-
export default _default;
|
package/lib/rules/emptyBlocks.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/emptyBlocks.ts
|
|
5
|
-
const allowedParents = /* @__PURE__ */ new Set([
|
|
6
|
-
SyntaxKind.ArrowFunction,
|
|
7
|
-
SyntaxKind.CatchClause,
|
|
8
|
-
SyntaxKind.Constructor,
|
|
9
|
-
SyntaxKind.FunctionDeclaration,
|
|
10
|
-
SyntaxKind.FunctionExpression,
|
|
11
|
-
SyntaxKind.GetAccessor,
|
|
12
|
-
SyntaxKind.MethodDeclaration,
|
|
13
|
-
SyntaxKind.SetAccessor
|
|
14
|
-
]);
|
|
15
|
-
var emptyBlocks_default = ruleCreator.createRule(typescriptLanguage, {
|
|
16
|
-
about: {
|
|
17
|
-
description: "Reports empty block statements that should contain code.",
|
|
18
|
-
id: "emptyBlocks",
|
|
19
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
20
|
-
},
|
|
21
|
-
messages: { emptyBlock: {
|
|
22
|
-
primary: "Empty block statements should be removed or contain code.",
|
|
23
|
-
secondary: ["Empty blocks can indicate incomplete code or areas where logic was removed but the block structure was left behind.", "They can also reduce code readability by cluttering the codebase with unnecessary braces."],
|
|
24
|
-
suggestions: ["Add a comment explaining why the block is intentionally empty, or remove the empty block entirely."]
|
|
25
|
-
} },
|
|
26
|
-
setup(context) {
|
|
27
|
-
function hasComments(block, sourceFile) {
|
|
28
|
-
const fullText = sourceFile.getFullText();
|
|
29
|
-
const openBrace = block.getStart(sourceFile);
|
|
30
|
-
const closeBrace = block.getEnd();
|
|
31
|
-
const innerText = fullText.substring(openBrace + 1, closeBrace - 1);
|
|
32
|
-
return /\S+/.test(innerText.trim());
|
|
33
|
-
}
|
|
34
|
-
function isEmptyBlock(block, sourceFile) {
|
|
35
|
-
return !block.statements.length && !hasComments(block, sourceFile);
|
|
36
|
-
}
|
|
37
|
-
return { visitors: {
|
|
38
|
-
Block: (node, { sourceFile }) => {
|
|
39
|
-
if (!allowedParents.has(node.parent.kind) && isEmptyBlock(node, sourceFile)) context.report({
|
|
40
|
-
message: "emptyBlock",
|
|
41
|
-
range: getTSNodeRange(node, sourceFile)
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
CaseBlock: (node, { sourceFile }) => {
|
|
45
|
-
if (!node.clauses.length) context.report({
|
|
46
|
-
message: "emptyBlock",
|
|
47
|
-
range: getTSNodeRange(node, sourceFile)
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
} };
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
//#endregion
|
|
54
|
-
export { emptyBlocks_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using empty destructuring patterns that destructure no values.";
|
|
3
|
-
readonly id: "emptyDestructures";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyPattern", undefined>;
|
|
9
|
-
export default _default;
|