@flint.fyi/ts 0.20.0 → 0.22.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} +360 -365
- package/dist/index.mjs +22467 -0
- package/package.json +10 -10
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/plugin.js +0 -621
- package/lib/rules/accessorPairGroups.d.ts +0 -10
- package/lib/rules/accessorPairGroups.js +0 -48
- package/lib/rules/accessorPairTypes.d.ts +0 -10
- package/lib/rules/accessorPairTypes.js +0 -72
- package/lib/rules/accessorThisRecursion.d.ts +0 -10
- package/lib/rules/accessorThisRecursion.js +0 -65
- package/lib/rules/anyArguments.d.ts +0 -10
- package/lib/rules/anyArguments.js +0 -234
- package/lib/rules/anyAssignments.d.ts +0 -10
- package/lib/rules/anyAssignments.js +0 -265
- package/lib/rules/anyCalls.d.ts +0 -10
- package/lib/rules/anyCalls.js +0 -68
- package/lib/rules/anyMemberAccess.d.ts +0 -10
- package/lib/rules/anyMemberAccess.js +0 -85
- package/lib/rules/anyReturns.d.ts +0 -10
- package/lib/rules/anyReturns.js +0 -102
- package/lib/rules/arguments.d.ts +0 -10
- package/lib/rules/arguments.js +0 -38
- package/lib/rules/arrayCallbackReturns.d.ts +0 -10
- package/lib/rules/arrayCallbackReturns.js +0 -73
- package/lib/rules/arrayConstructors.d.ts +0 -10
- package/lib/rules/arrayConstructors.js +0 -47
- package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -10
- package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -54
- package/lib/rules/arrayElementDeletions.d.ts +0 -10
- package/lib/rules/arrayElementDeletions.js +0 -43
- package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -10
- package/lib/rules/arrayEmptyCallbackSlots.js +0 -45
- package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -10
- package/lib/rules/arrayExistenceChecksConsistency.js +0 -86
- package/lib/rules/arrayFilteredFinds.d.ts +0 -10
- package/lib/rules/arrayFilteredFinds.js +0 -80
- package/lib/rules/arrayFinds.d.ts +0 -10
- package/lib/rules/arrayFinds.js +0 -41
- package/lib/rules/arrayFlatMapMethods.d.ts +0 -10
- package/lib/rules/arrayFlatMapMethods.js +0 -47
- package/lib/rules/arrayFlatMethods.d.ts +0 -10
- package/lib/rules/arrayFlatMethods.js +0 -83
- package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -10
- package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -33
- package/lib/rules/arrayIncludes.d.ts +0 -10
- package/lib/rules/arrayIncludes.js +0 -59
- package/lib/rules/arrayIncludesMethods.d.ts +0 -10
- package/lib/rules/arrayIncludesMethods.js +0 -37
- package/lib/rules/arrayIndexOfMethods.d.ts +0 -10
- package/lib/rules/arrayIndexOfMethods.js +0 -51
- package/lib/rules/arrayLoops.d.ts +0 -10
- package/lib/rules/arrayLoops.js +0 -36
- package/lib/rules/arrayMapIdentities.d.ts +0 -10
- package/lib/rules/arrayMapIdentities.js +0 -74
- package/lib/rules/arrayMutableReverses.d.ts +0 -10
- package/lib/rules/arrayMutableReverses.js +0 -39
- package/lib/rules/arrayMutableSorts.d.ts +0 -10
- package/lib/rules/arrayMutableSorts.js +0 -72
- package/lib/rules/arrayReduceTypeArguments.d.ts +0 -10
- package/lib/rules/arrayReduceTypeArguments.js +0 -64
- package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -10
- package/lib/rules/arraySliceUnnecessaryEnd.js +0 -51
- package/lib/rules/arraySomeMethods.d.ts +0 -10
- package/lib/rules/arraySomeMethods.js +0 -77
- package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -10
- package/lib/rules/arrayTernarySpreadingConsistency.js +0 -74
- package/lib/rules/arrayTypes.d.ts +0 -17
- package/lib/rules/arrayTypes.js +0 -111
- package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -10
- package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -97
- package/lib/rules/asConstAssertions.d.ts +0 -10
- package/lib/rules/asConstAssertions.js +0 -57
- package/lib/rules/assignmentOperatorShorthands.d.ts +0 -10
- package/lib/rules/assignmentOperatorShorthands.js +0 -47
- package/lib/rules/asyncFunctionAwaits.d.ts +0 -10
- package/lib/rules/asyncFunctionAwaits.js +0 -55
- package/lib/rules/asyncPromiseExecutors.d.ts +0 -10
- package/lib/rules/asyncPromiseExecutors.js +0 -41
- package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -10
- package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -52
- package/lib/rules/atAccesses.d.ts +0 -10
- package/lib/rules/atAccesses.js +0 -52
- package/lib/rules/builtinCoercions.d.ts +0 -10
- package/lib/rules/builtinCoercions.js +0 -117
- package/lib/rules/builtinConstructorNews.d.ts +0 -10
- package/lib/rules/builtinConstructorNews.js +0 -89
- package/lib/rules/caseDeclarations.d.ts +0 -10
- package/lib/rules/caseDeclarations.js +0 -40
- package/lib/rules/caseDuplicates.d.ts +0 -10
- package/lib/rules/caseDuplicates.js +0 -36
- package/lib/rules/caseFallthroughs.d.ts +0 -10
- package/lib/rules/caseFallthroughs.js +0 -76
- package/lib/rules/catchCallbackTypes.d.ts +0 -10
- package/lib/rules/catchCallbackTypes.js +0 -67
- package/lib/rules/caughtVariableNames.d.ts +0 -10
- package/lib/rules/caughtVariableNames.js +0 -40
- package/lib/rules/chainedAssignments.d.ts +0 -10
- package/lib/rules/chainedAssignments.js +0 -33
- package/lib/rules/charAtComparisons.d.ts +0 -10
- package/lib/rules/charAtComparisons.js +0 -58
- package/lib/rules/classAssignments.d.ts +0 -10
- package/lib/rules/classAssignments.js +0 -29
- package/lib/rules/classFieldDeclarations.d.ts +0 -10
- package/lib/rules/classFieldDeclarations.js +0 -40
- package/lib/rules/classLiteralProperties.d.ts +0 -10
- package/lib/rules/classLiteralProperties.js +0 -45
- package/lib/rules/classMemberDuplicates.d.ts +0 -10
- package/lib/rules/classMemberDuplicates.js +0 -71
- package/lib/rules/classMethodsThis.d.ts +0 -14
- package/lib/rules/classMethodsThis.js +0 -124
- package/lib/rules/combinedPushes.d.ts +0 -10
- package/lib/rules/combinedPushes.js +0 -56
- package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -10
- package/lib/rules/consecutiveNonNullAssertions.js +0 -39
- package/lib/rules/consoleCalls.d.ts +0 -9
- package/lib/rules/consoleCalls.js +0 -28
- package/lib/rules/constantAssignments.d.ts +0 -10
- package/lib/rules/constantAssignments.js +0 -41
- package/lib/rules/constructorGenericCalls.d.ts +0 -16
- package/lib/rules/constructorGenericCalls.js +0 -138
- package/lib/rules/constructorReturns.d.ts +0 -10
- package/lib/rules/constructorReturns.js +0 -41
- package/lib/rules/constructorSupers.d.ts +0 -10
- package/lib/rules/constructorSupers.js +0 -77
- package/lib/rules/dateConstructorClones.d.ts +0 -10
- package/lib/rules/dateConstructorClones.js +0 -37
- package/lib/rules/dateNowTimestamps.d.ts +0 -10
- package/lib/rules/dateNowTimestamps.js +0 -57
- package/lib/rules/debuggerStatements.d.ts +0 -10
- package/lib/rules/debuggerStatements.js +0 -33
- package/lib/rules/defaultCaseLast.d.ts +0 -10
- package/lib/rules/defaultCaseLast.js +0 -36
- package/lib/rules/defaultParameterLast.d.ts +0 -10
- package/lib/rules/defaultParameterLast.js +0 -42
- package/lib/rules/deprecated.d.ts +0 -10
- package/lib/rules/deprecated.js +0 -243
- package/lib/rules/destructuringConsistency.d.ts +0 -10
- package/lib/rules/destructuringConsistency.js +0 -112
- package/lib/rules/duplicateArguments.d.ts +0 -10
- package/lib/rules/duplicateArguments.js +0 -45
- package/lib/rules/dynamicDeletes.d.ts +0 -10
- package/lib/rules/dynamicDeletes.js +0 -37
- package/lib/rules/elseIfDuplicates.d.ts +0 -10
- package/lib/rules/elseIfDuplicates.js +0 -38
- package/lib/rules/elseReturns.d.ts +0 -10
- package/lib/rules/elseReturns.js +0 -67
- package/lib/rules/emptyBlocks.d.ts +0 -10
- package/lib/rules/emptyBlocks.js +0 -56
- package/lib/rules/emptyDestructures.d.ts +0 -10
- package/lib/rules/emptyDestructures.js +0 -34
- package/lib/rules/emptyEnums.d.ts +0 -10
- package/lib/rules/emptyEnums.js +0 -30
- package/lib/rules/emptyExports.d.ts +0 -10
- package/lib/rules/emptyExports.js +0 -60
- package/lib/rules/emptyFiles.d.ts +0 -10
- package/lib/rules/emptyFiles.js +0 -44
- package/lib/rules/emptyFunctions.d.ts +0 -10
- package/lib/rules/emptyFunctions.js +0 -61
- package/lib/rules/emptyModuleAttributes.d.ts +0 -10
- package/lib/rules/emptyModuleAttributes.js +0 -35
- package/lib/rules/emptyObjectTypes.d.ts +0 -10
- package/lib/rules/emptyObjectTypes.js +0 -47
- package/lib/rules/emptyStaticBlocks.d.ts +0 -10
- package/lib/rules/emptyStaticBlocks.js +0 -42
- package/lib/rules/emptyTypeParameterLists.d.ts +0 -10
- package/lib/rules/emptyTypeParameterLists.js +0 -31
- package/lib/rules/enumInitializers.d.ts +0 -10
- package/lib/rules/enumInitializers.js +0 -54
- package/lib/rules/enumMemberLiterals.d.ts +0 -10
- package/lib/rules/enumMemberLiterals.js +0 -39
- package/lib/rules/enumValueConsistency.d.ts +0 -10
- package/lib/rules/enumValueConsistency.js +0 -56
- package/lib/rules/enumValueDuplicates.d.ts +0 -10
- package/lib/rules/enumValueDuplicates.js +0 -60
- package/lib/rules/equalityOperatorNegations.d.ts +0 -9
- package/lib/rules/equalityOperatorNegations.js +0 -60
- package/lib/rules/equalityOperators.d.ts +0 -10
- package/lib/rules/equalityOperators.js +0 -44
- package/lib/rules/errorMessages.d.ts +0 -10
- package/lib/rules/errorMessages.js +0 -60
- package/lib/rules/errorSubclassProperties.d.ts +0 -10
- package/lib/rules/errorSubclassProperties.js +0 -144
- package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -10
- package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -55
- package/lib/rules/escapeSequenceCasing.d.ts +0 -10
- package/lib/rules/escapeSequenceCasing.js +0 -75
- package/lib/rules/evals.d.ts +0 -10
- package/lib/rules/evals.js +0 -31
- package/lib/rules/evolvingVariableTypes.d.ts +0 -10
- package/lib/rules/evolvingVariableTypes.js +0 -33
- package/lib/rules/exceptionAssignments.d.ts +0 -10
- package/lib/rules/exceptionAssignments.js +0 -39
- package/lib/rules/explicitAnys.d.ts +0 -10
- package/lib/rules/explicitAnys.js +0 -55
- package/lib/rules/exponentiationOperators.d.ts +0 -10
- package/lib/rules/exponentiationOperators.js +0 -34
- package/lib/rules/exportFromImports.d.ts +0 -10
- package/lib/rules/exportFromImports.js +0 -119
- package/lib/rules/exportMutables.d.ts +0 -10
- package/lib/rules/exportMutables.js +0 -33
- package/lib/rules/exportUniqueNames.d.ts +0 -10
- package/lib/rules/exportUniqueNames.js +0 -65
- package/lib/rules/extraneousClasses.d.ts +0 -16
- package/lib/rules/extraneousClasses.js +0 -111
- package/lib/rules/fetchMethodBodies.d.ts +0 -10
- package/lib/rules/fetchMethodBodies.js +0 -72
- package/lib/rules/finallyStatementSafety.d.ts +0 -10
- package/lib/rules/finallyStatementSafety.js +0 -47
- package/lib/rules/forDirections.d.ts +0 -10
- package/lib/rules/forDirections.js +0 -75
- package/lib/rules/forInArrays.d.ts +0 -10
- package/lib/rules/forInArrays.js +0 -46
- package/lib/rules/forInGuards.d.ts +0 -9
- package/lib/rules/forInGuards.js +0 -44
- package/lib/rules/functionApplySpreads.d.ts +0 -10
- package/lib/rules/functionApplySpreads.js +0 -63
- package/lib/rules/functionAssignments.d.ts +0 -10
- package/lib/rules/functionAssignments.js +0 -29
- package/lib/rules/functionCurryingRedundancy.d.ts +0 -10
- package/lib/rules/functionCurryingRedundancy.js +0 -53
- package/lib/rules/functionDeclarationStyles.d.ts +0 -16
- package/lib/rules/functionDeclarationStyles.js +0 -67
- package/lib/rules/functionNameMatches.d.ts +0 -10
- package/lib/rules/functionNameMatches.js +0 -74
- package/lib/rules/functionNewCalls.d.ts +0 -10
- package/lib/rules/functionNewCalls.js +0 -42
- package/lib/rules/generatorFunctionYields.d.ts +0 -10
- package/lib/rules/generatorFunctionYields.js +0 -50
- package/lib/rules/getterReturns.d.ts +0 -10
- package/lib/rules/getterReturns.js +0 -65
- package/lib/rules/globalAssignments.d.ts +0 -10
- package/lib/rules/globalAssignments.js +0 -47
- package/lib/rules/globalObjectCalls.d.ts +0 -10
- package/lib/rules/globalObjectCalls.js +0 -42
- package/lib/rules/globalThisAliases.d.ts +0 -10
- package/lib/rules/globalThisAliases.js +0 -47
- package/lib/rules/impliedEvals.d.ts +0 -10
- package/lib/rules/impliedEvals.js +0 -130
- package/lib/rules/importEmptyBlocks.d.ts +0 -10
- package/lib/rules/importEmptyBlocks.js +0 -53
- package/lib/rules/importTypeSideEffects.d.ts +0 -10
- package/lib/rules/importTypeSideEffects.js +0 -31
- package/lib/rules/indexedObjectTypes.d.ts +0 -16
- package/lib/rules/indexedObjectTypes.js +0 -83
- package/lib/rules/instanceOfArrays.d.ts +0 -10
- package/lib/rules/instanceOfArrays.js +0 -31
- package/lib/rules/irregularWhitespaces.d.ts +0 -16
- package/lib/rules/irregularWhitespaces.js +0 -97
- package/lib/rules/isNaNComparisons.d.ts +0 -10
- package/lib/rules/isNaNComparisons.js +0 -43
- package/lib/rules/literalConstructorWrappers.d.ts +0 -10
- package/lib/rules/literalConstructorWrappers.js +0 -64
- package/lib/rules/mathMethods.d.ts +0 -10
- package/lib/rules/mathMethods.js +0 -128
- package/lib/rules/meaninglessVoidOperators.d.ts +0 -10
- package/lib/rules/meaninglessVoidOperators.js +0 -39
- package/lib/rules/misleadingVoidExpressions.d.ts +0 -10
- package/lib/rules/misleadingVoidExpressions.js +0 -128
- package/lib/rules/moduleSpecifierLists.d.ts +0 -10
- package/lib/rules/moduleSpecifierLists.js +0 -92
- package/lib/rules/multilineAmbiguities.d.ts +0 -10
- package/lib/rules/multilineAmbiguities.js +0 -64
- package/lib/rules/namedDefaultExports.d.ts +0 -10
- package/lib/rules/namedDefaultExports.js +0 -60
- package/lib/rules/namespaceDeclarations.d.ts +0 -14
- package/lib/rules/namespaceDeclarations.js +0 -37
- package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -10
- package/lib/rules/namespaceImplicitAmbientImports.js +0 -40
- package/lib/rules/namespaceKeywords.d.ts +0 -10
- package/lib/rules/namespaceKeywords.js +0 -40
- package/lib/rules/nativeObjectExtensions.d.ts +0 -10
- package/lib/rules/nativeObjectExtensions.js +0 -114
- package/lib/rules/negativeIndexLengthMethods.d.ts +0 -10
- package/lib/rules/negativeIndexLengthMethods.js +0 -180
- package/lib/rules/negativeZeroComparisons.d.ts +0 -10
- package/lib/rules/negativeZeroComparisons.js +0 -48
- package/lib/rules/nestedStandaloneIfs.d.ts +0 -10
- package/lib/rules/nestedStandaloneIfs.js +0 -105
- package/lib/rules/newDefinitions.d.ts +0 -10
- package/lib/rules/newDefinitions.js +0 -84
- package/lib/rules/newExpressions.d.ts +0 -10
- package/lib/rules/newExpressions.js +0 -38
- package/lib/rules/newNativeNonConstructors.d.ts +0 -10
- package/lib/rules/newNativeNonConstructors.js +0 -39
- package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -10
- package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -63
- package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -10
- package/lib/rules/nonNullAssertedOptionalChains.js +0 -69
- package/lib/rules/nonNullAssertionPlacement.d.ts +0 -10
- package/lib/rules/nonNullAssertionPlacement.js +0 -94
- package/lib/rules/nonNullableTypeAssertions.d.ts +0 -10
- package/lib/rules/nonNullableTypeAssertions.js +0 -78
- package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -10
- package/lib/rules/nonOctalDecimalEscapes.js +0 -48
- package/lib/rules/nullishCheckStyle.d.ts +0 -21
- package/lib/rules/nullishCheckStyle.js +0 -144
- package/lib/rules/nullishCoalescingOperators.d.ts +0 -22
- package/lib/rules/nullishCoalescingOperators.js +0 -323
- package/lib/rules/numberMethodRanges.d.ts +0 -10
- package/lib/rules/numberMethodRanges.js +0 -74
- package/lib/rules/numberStaticMethods.d.ts +0 -10
- package/lib/rules/numberStaticMethods.js +0 -53
- package/lib/rules/numericErasingOperations.d.ts +0 -10
- package/lib/rules/numericErasingOperations.js +0 -46
- package/lib/rules/numericLiteralParsing.d.ts +0 -10
- package/lib/rules/numericLiteralParsing.js +0 -66
- package/lib/rules/numericPrecision.d.ts +0 -10
- package/lib/rules/numericPrecision.js +0 -102
- package/lib/rules/numericSeparatorGroups.d.ts +0 -10
- package/lib/rules/numericSeparatorGroups.js +0 -101
- package/lib/rules/objectAssignSpreads.d.ts +0 -10
- package/lib/rules/objectAssignSpreads.js +0 -53
- package/lib/rules/objectCalls.d.ts +0 -10
- package/lib/rules/objectCalls.js +0 -38
- package/lib/rules/objectEntriesMethods.d.ts +0 -10
- package/lib/rules/objectEntriesMethods.js +0 -82
- package/lib/rules/objectHasOwns.d.ts +0 -10
- package/lib/rules/objectHasOwns.js +0 -50
- package/lib/rules/objectKeyDuplicates.d.ts +0 -10
- package/lib/rules/objectKeyDuplicates.js +0 -63
- package/lib/rules/objectProto.d.ts +0 -10
- package/lib/rules/objectProto.js +0 -50
- package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -10
- package/lib/rules/objectPrototypeBuiltIns.js +0 -54
- package/lib/rules/objectShorthand.d.ts +0 -10
- package/lib/rules/objectShorthand.js +0 -84
- package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -10
- package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -43
- package/lib/rules/objectTypeDefinitions.d.ts +0 -10
- package/lib/rules/objectTypeDefinitions.js +0 -34
- package/lib/rules/octalEscapes.d.ts +0 -10
- package/lib/rules/octalEscapes.js +0 -58
- package/lib/rules/octalNumbers.d.ts +0 -10
- package/lib/rules/octalNumbers.js +0 -55
- package/lib/rules/operatorAssignmentShorthand.d.ts +0 -10
- package/lib/rules/operatorAssignmentShorthand.js +0 -77
- package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -10
- package/lib/rules/overloadSignaturesAdjacent.js +0 -140
- package/lib/rules/parameterReassignments.d.ts +0 -10
- package/lib/rules/parameterReassignments.js +0 -45
- package/lib/rules/parseIntRadixes.d.ts +0 -10
- package/lib/rules/parseIntRadixes.js +0 -62
- package/lib/rules/propertyAccessNotation.d.ts +0 -13
- package/lib/rules/propertyAccessNotation.js +0 -119
- package/lib/rules/recursionOnlyArguments.d.ts +0 -10
- package/lib/rules/recursionOnlyArguments.js +0 -71
- package/lib/rules/redundantTypeConstituents.d.ts +0 -10
- package/lib/rules/redundantTypeConstituents.js +0 -277
- package/lib/rules/regexAllGlobalFlags.d.ts +0 -10
- package/lib/rules/regexAllGlobalFlags.js +0 -56
- package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -10
- package/lib/rules/regexAmbiguousInvalidity.js +0 -297
- package/lib/rules/regexCharacterClassRanges.d.ts +0 -10
- package/lib/rules/regexCharacterClassRanges.js +0 -137
- package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -10
- package/lib/rules/regexCharacterClassSetOperations.js +0 -81
- package/lib/rules/regexCharacterClasses.d.ts +0 -10
- package/lib/rules/regexCharacterClasses.js +0 -234
- package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -10
- package/lib/rules/regexConciseCharacterClassNegations.js +0 -52
- package/lib/rules/regexContradictoryAssertions.d.ts +0 -10
- package/lib/rules/regexContradictoryAssertions.js +0 -210
- package/lib/rules/regexControlCharacterEscapes.d.ts +0 -10
- package/lib/rules/regexControlCharacterEscapes.js +0 -130
- package/lib/rules/regexControlCharacters.d.ts +0 -10
- package/lib/rules/regexControlCharacters.js +0 -95
- package/lib/rules/regexDigitMatchers.d.ts +0 -10
- package/lib/rules/regexDigitMatchers.js +0 -180
- package/lib/rules/regexDollarEscapes.d.ts +0 -10
- package/lib/rules/regexDollarEscapes.js +0 -91
- package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -10
- package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -128
- package/lib/rules/regexEmptyAlternatives.d.ts +0 -10
- package/lib/rules/regexEmptyAlternatives.js +0 -140
- package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -10
- package/lib/rules/regexEmptyCapturingGroups.js +0 -67
- package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -10
- package/lib/rules/regexEmptyCharacterClasses.js +0 -68
- package/lib/rules/regexEmptyGroups.d.ts +0 -10
- package/lib/rules/regexEmptyGroups.js +0 -66
- package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -10
- package/lib/rules/regexEmptyLazyQuantifiers.js +0 -92
- package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -10
- package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -68
- package/lib/rules/regexEmptyStringLiterals.d.ts +0 -10
- package/lib/rules/regexEmptyStringLiterals.js +0 -66
- package/lib/rules/regexEscapeBackspaces.d.ts +0 -10
- package/lib/rules/regexEscapeBackspaces.js +0 -69
- package/lib/rules/regexExecutors.d.ts +0 -10
- package/lib/rules/regexExecutors.js +0 -58
- package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -10
- package/lib/rules/regexGraphemeStringLiterals.js +0 -51
- package/lib/rules/regexHexadecimalEscapes.d.ts +0 -10
- package/lib/rules/regexHexadecimalEscapes.js +0 -71
- package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -10
- package/lib/rules/regexIgnoreCaseFlags.js +0 -145
- package/lib/rules/regexInvisibleCharacters.d.ts +0 -10
- package/lib/rules/regexInvisibleCharacters.js +0 -90
- package/lib/rules/regexLetterCasing.d.ts +0 -10
- package/lib/rules/regexLetterCasing.js +0 -186
- package/lib/rules/regexLiterals.d.ts +0 -10
- package/lib/rules/regexLiterals.js +0 -92
- package/lib/rules/regexLookaroundAssertions.d.ts +0 -10
- package/lib/rules/regexLookaroundAssertions.js +0 -163
- package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -10
- package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -94
- package/lib/rules/regexMatchNotation.d.ts +0 -10
- package/lib/rules/regexMatchNotation.js +0 -139
- package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -10
- package/lib/rules/regexMisleadingCapturingGroups.js +0 -229
- package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -10
- package/lib/rules/regexMisleadingQuantifiers.js +0 -78
- package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -10
- package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -203
- package/lib/rules/regexNamedBackreferences.d.ts +0 -10
- package/lib/rules/regexNamedBackreferences.js +0 -48
- package/lib/rules/regexNamedCaptureGroups.d.ts +0 -9
- package/lib/rules/regexNamedCaptureGroups.js +0 -67
- package/lib/rules/regexNamedReplacements.d.ts +0 -10
- package/lib/rules/regexNamedReplacements.js +0 -93
- package/lib/rules/regexNonStandardFlags.d.ts +0 -10
- package/lib/rules/regexNonStandardFlags.js +0 -66
- package/lib/rules/regexObscureRanges.d.ts +0 -10
- package/lib/rules/regexObscureRanges.js +0 -93
- package/lib/rules/regexOctalEscapes.d.ts +0 -10
- package/lib/rules/regexOctalEscapes.js +0 -70
- package/lib/rules/regexPlusQuantifiers.d.ts +0 -10
- package/lib/rules/regexPlusQuantifiers.js +0 -68
- package/lib/rules/regexPredefinedAssertions.d.ts +0 -10
- package/lib/rules/regexPredefinedAssertions.js +0 -127
- package/lib/rules/regexQuestionQuantifiers.d.ts +0 -10
- package/lib/rules/regexQuestionQuantifiers.js +0 -104
- package/lib/rules/regexRepeatQuantifiers.d.ts +0 -10
- package/lib/rules/regexRepeatQuantifiers.js +0 -96
- package/lib/rules/regexResultArrayGroups.d.ts +0 -10
- package/lib/rules/regexResultArrayGroups.js +0 -187
- package/lib/rules/regexSetOperationOptimizations.d.ts +0 -10
- package/lib/rules/regexSetOperationOptimizations.js +0 -177
- package/lib/rules/regexStandaloneBackslashes.d.ts +0 -10
- package/lib/rules/regexStandaloneBackslashes.js +0 -59
- package/lib/rules/regexStarQuantifiers.d.ts +0 -10
- package/lib/rules/regexStarQuantifiers.js +0 -68
- package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -10
- package/lib/rules/regexSuperLinearBacktracking.js +0 -98
- package/lib/rules/regexSuperLinearMoves.d.ts +0 -10
- package/lib/rules/regexSuperLinearMoves.js +0 -142
- package/lib/rules/regexTestMethods.d.ts +0 -10
- package/lib/rules/regexTestMethods.js +0 -83
- package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -10
- package/lib/rules/regexUnicodeCodepointEscapes.js +0 -107
- package/lib/rules/regexUnicodeEscapes.d.ts +0 -9
- package/lib/rules/regexUnicodeEscapes.js +0 -97
- package/lib/rules/regexUnicodeFlag.d.ts +0 -9
- package/lib/rules/regexUnicodeFlag.js +0 -97
- package/lib/rules/regexUnicodeProperties.d.ts +0 -10
- package/lib/rules/regexUnicodeProperties.js +0 -133
- package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryAssertions.js +0 -223
- package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -10
- package/lib/rules/regexUnnecessaryBackreferences.js +0 -125
- package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -10
- package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -74
- package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -10
- package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -108
- package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryDisjunctions.js +0 -118
- package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -10
- package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -144
- package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -10
- package/lib/rules/regexUnnecessaryEscapes.js +0 -136
- package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -80
- package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -198
- package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -93
- package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -104
- package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -69
- package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -137
- package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -10
- package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -123
- package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -10
- package/lib/rules/regexUnnecessarySetOperands.js +0 -136
- package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -10
- package/lib/rules/regexUnusedCapturingGroups.js +0 -69
- package/lib/rules/regexUnusedFlags.d.ts +0 -10
- package/lib/rules/regexUnusedFlags.js +0 -116
- package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnusedLazyQuantifiers.js +0 -63
- package/lib/rules/regexUnusedQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnusedQuantifiers.js +0 -63
- package/lib/rules/regexValidity.d.ts +0 -10
- package/lib/rules/regexValidity.js +0 -146
- package/lib/rules/regexWordMatchers.d.ts +0 -10
- package/lib/rules/regexWordMatchers.js +0 -146
- package/lib/rules/regexZeroQuantifiers.d.ts +0 -10
- package/lib/rules/regexZeroQuantifiers.js +0 -60
- package/lib/rules/requireImports.d.ts +0 -10
- package/lib/rules/requireImports.js +0 -48
- package/lib/rules/responseJsonMethods.d.ts +0 -10
- package/lib/rules/responseJsonMethods.js +0 -51
- package/lib/rules/restrictedIdentifiers.d.ts +0 -13
- package/lib/rules/restrictedIdentifiers.js +0 -41
- package/lib/rules/restrictedImports.d.ts +0 -27
- package/lib/rules/restrictedImports.js +0 -166
- package/lib/rules/returnAssignments.d.ts +0 -10
- package/lib/rules/returnAssignments.js +0 -38
- package/lib/rules/returnThisTypes.d.ts +0 -10
- package/lib/rules/returnThisTypes.js +0 -94
- package/lib/rules/ruleCreator.d.ts +0 -3
- package/lib/rules/ruleCreator.js +0 -17
- package/lib/rules/selfAssignments.d.ts +0 -10
- package/lib/rules/selfAssignments.js +0 -29
- package/lib/rules/sequences.d.ts +0 -10
- package/lib/rules/sequences.js +0 -28
- package/lib/rules/setSizeLengthChecks.d.ts +0 -10
- package/lib/rules/setSizeLengthChecks.js +0 -48
- package/lib/rules/setterReturns.d.ts +0 -10
- package/lib/rules/setterReturns.js +0 -41
- package/lib/rules/shadowedRestrictedNames.d.ts +0 -10
- package/lib/rules/shadowedRestrictedNames.js +0 -68
- package/lib/rules/singleVariableDeclarations.d.ts +0 -10
- package/lib/rules/singleVariableDeclarations.js +0 -36
- package/lib/rules/sizeComparisonOperators.d.ts +0 -16
- package/lib/rules/sizeComparisonOperators.js +0 -148
- package/lib/rules/sparseArrays.d.ts +0 -10
- package/lib/rules/sparseArrays.js +0 -43
- package/lib/rules/staticMemberOnlyClasses.d.ts +0 -10
- package/lib/rules/staticMemberOnlyClasses.js +0 -77
- package/lib/rules/stringCaseMismatches.d.ts +0 -10
- package/lib/rules/stringCaseMismatches.js +0 -58
- package/lib/rules/stringCodePoints.d.ts +0 -10
- package/lib/rules/stringCodePoints.js +0 -50
- package/lib/rules/stringSliceMethods.d.ts +0 -10
- package/lib/rules/stringSliceMethods.js +0 -47
- package/lib/rules/stringStartsEndsWith.d.ts +0 -10
- package/lib/rules/stringStartsEndsWith.js +0 -79
- package/lib/rules/structuredCloneMethods.d.ts +0 -10
- package/lib/rules/structuredCloneMethods.js +0 -39
- package/lib/rules/symbolDescriptions.d.ts +0 -10
- package/lib/rules/symbolDescriptions.js +0 -32
- package/lib/rules/thisAliases.d.ts +0 -10
- package/lib/rules/thisAliases.js +0 -44
- package/lib/rules/thisBeforeSuper.d.ts +0 -10
- package/lib/rules/thisBeforeSuper.js +0 -86
- package/lib/rules/throwErrors.d.ts +0 -10
- package/lib/rules/throwErrors.js +0 -61
- package/lib/rules/topLevelAwaits.d.ts +0 -10
- package/lib/rules/topLevelAwaits.js +0 -49
- package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -10
- package/lib/rules/tripleSlashReferenceValidity.js +0 -54
- package/lib/rules/tripleSlashReferences.d.ts +0 -10
- package/lib/rules/tripleSlashReferences.js +0 -34
- package/lib/rules/tsComments.d.ts +0 -22
- package/lib/rules/tsComments.js +0 -130
- package/lib/rules/tslintComments.d.ts +0 -10
- package/lib/rules/tslintComments.js +0 -36
- package/lib/rules/typeAssertionStyles.d.ts +0 -10
- package/lib/rules/typeAssertionStyles.js +0 -32
- package/lib/rules/typeImports.d.ts +0 -20
- package/lib/rules/typeImports.js +0 -283
- package/lib/rules/typeofComparisons.d.ts +0 -10
- package/lib/rules/typeofComparisons.js +0 -58
- package/lib/rules/unassignedVariables.d.ts +0 -10
- package/lib/rules/unassignedVariables.js +0 -34
- package/lib/rules/undefinedTypeofChecks.d.ts +0 -10
- package/lib/rules/undefinedTypeofChecks.js +0 -41
- package/lib/rules/undefinedVariables.d.ts +0 -10
- package/lib/rules/undefinedVariables.js +0 -39
- package/lib/rules/unicodeBOMs.d.ts +0 -10
- package/lib/rules/unicodeBOMs.js +0 -39
- package/lib/rules/unnecessaryBinds.d.ts +0 -10
- package/lib/rules/unnecessaryBinds.js +0 -78
- package/lib/rules/unnecessaryBlocks.d.ts +0 -10
- package/lib/rules/unnecessaryBlocks.js +0 -60
- package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -10
- package/lib/rules/unnecessaryBooleanCasts.js +0 -58
- package/lib/rules/unnecessaryCatches.d.ts +0 -10
- package/lib/rules/unnecessaryCatches.js +0 -48
- package/lib/rules/unnecessaryComparisons.d.ts +0 -10
- package/lib/rules/unnecessaryComparisons.js +0 -300
- package/lib/rules/unnecessaryConcatenation.d.ts +0 -10
- package/lib/rules/unnecessaryConcatenation.js +0 -28
- package/lib/rules/unnecessaryEscapes.d.ts +0 -10
- package/lib/rules/unnecessaryEscapes.js +0 -134
- package/lib/rules/unnecessaryMathClamps.d.ts +0 -10
- package/lib/rules/unnecessaryMathClamps.js +0 -114
- package/lib/rules/unnecessaryNumericFractions.d.ts +0 -10
- package/lib/rules/unnecessaryNumericFractions.js +0 -50
- package/lib/rules/unnecessaryRenames.d.ts +0 -10
- package/lib/rules/unnecessaryRenames.js +0 -92
- package/lib/rules/unnecessaryTernaries.d.ts +0 -10
- package/lib/rules/unnecessaryTernaries.js +0 -88
- package/lib/rules/unnecessaryUseStricts.d.ts +0 -10
- package/lib/rules/unnecessaryUseStricts.js +0 -40
- package/lib/rules/unsafeNegations.d.ts +0 -10
- package/lib/rules/unsafeNegations.js +0 -38
- package/lib/rules/utils/collectAccessorPairs.d.ts +0 -12
- package/lib/rules/utils/collectAccessorPairs.js +0 -29
- package/lib/rules/utils/countCommentsInRange.d.ts +0 -3
- package/lib/rules/utils/countCommentsInRange.js +0 -12
- package/lib/rules/utils/discriminateAnyType.d.ts +0 -16
- package/lib/rules/utils/discriminateAnyType.js +0 -38
- package/lib/rules/utils/equalityOperators.d.ts +0 -9
- package/lib/rules/utils/equalityOperators.js +0 -36
- package/lib/rules/utils/forEachReturnStatement.d.ts +0 -3
- package/lib/rules/utils/forEachReturnStatement.js +0 -29
- package/lib/rules/utils/formatReportedType.d.ts +0 -4
- package/lib/rules/utils/formatReportedType.js +0 -9
- package/lib/rules/utils/getConstrainedType.d.ts +0 -3
- package/lib/rules/utils/getConstrainedType.js +0 -9
- package/lib/rules/utils/getFunctionName.d.ts +0 -3
- package/lib/rules/utils/getFunctionName.js +0 -16
- package/lib/rules/utils/getRegExpConstruction.d.ts +0 -10
- package/lib/rules/utils/getRegExpConstruction.js +0 -26
- package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -7
- package/lib/rules/utils/getRegExpLiteralDetails.js +0 -13
- package/lib/rules/utils/getThisExpression.d.ts +0 -3
- package/lib/rules/utils/getThisExpression.js +0 -16
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -3
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -13
- package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -3
- package/lib/rules/utils/isBuiltinSymbolLike.js +0 -33
- package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -4
- package/lib/rules/utils/isDirectEqualityCheck.js +0 -29
- package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
- package/lib/rules/utils/isErrorSubclass.js +0 -27
- package/lib/rules/utils/isInBooleanContext.d.ts +0 -3
- package/lib/rules/utils/isInBooleanContext.js +0 -22
- package/lib/rules/utils/isTypeRecursive.d.ts +0 -3
- package/lib/rules/utils/isTypeRecursive.js +0 -8
- package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -15
- package/lib/rules/utils/isUnsafeAssignment.js +0 -45
- package/lib/rules/utils/operators.d.ts +0 -5
- package/lib/rules/utils/operators.js +0 -35
- package/lib/rules/utils/parseRegexpAst.d.ts +0 -2
- package/lib/rules/utils/parseRegexpAst.js +0 -17
- package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -3
- package/lib/rules/utils/parseRegexpAstFull.js +0 -18
- package/lib/rules/utils/skipParentheses.d.ts +0 -3
- package/lib/rules/utils/skipParentheses.js +0 -10
- package/lib/rules/variableDeletions.d.ts +0 -10
- package/lib/rules/variableDeletions.js +0 -35
- package/lib/rules/voidOperator.d.ts +0 -10
- package/lib/rules/voidOperator.js +0 -34
- package/lib/rules/withStatements.d.ts +0 -10
- package/lib/rules/withStatements.js +0 -30
- package/lib/rules/wrapperObjects.d.ts +0 -10
- package/lib/rules/wrapperObjects.js +0 -36
- package/lib/type-utils/getSpecifierNames.d.ts +0 -3
- package/lib/type-utils/getSpecifierNames.js +0 -9
- package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -3
- package/lib/type-utils/isDeclaredInModuleBlock.js +0 -14
- package/lib/type-utils/isFromFile.d.ts +0 -3
- package/lib/type-utils/isFromFile.js +0 -13
- package/lib/type-utils/isFromPackage.d.ts +0 -3
- package/lib/type-utils/isFromPackage.js +0 -16
- package/lib/type-utils/matchesSpecifier.d.ts +0 -4
- package/lib/type-utils/matchesSpecifier.js +0 -20
- package/lib/type-utils/schemas.d.ts +0 -15
- package/lib/type-utils/schemas.js +0 -25
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/caseFallthroughs.ts
|
|
5
|
-
const fallthroughCommentPattern = /falls?\s*through/i;
|
|
6
|
-
function endsWithTerminatingStatement(statements) {
|
|
7
|
-
return !!statements.length && isTerminatingStatement(statements.at(-1));
|
|
8
|
-
}
|
|
9
|
-
function hasFallthroughComment(clause, nextClause, sourceFile) {
|
|
10
|
-
const sourceText = sourceFile.getFullText();
|
|
11
|
-
const commentRanges = ts$1.getLeadingCommentRanges(sourceText, nextClause.getFullStart());
|
|
12
|
-
if (commentRanges) for (const range of commentRanges) {
|
|
13
|
-
const comment = sourceText.slice(range.pos, range.end);
|
|
14
|
-
if (fallthroughCommentPattern.test(comment)) return true;
|
|
15
|
-
}
|
|
16
|
-
const trailingRanges = ts$1.getTrailingCommentRanges(sourceText, clause.getEnd());
|
|
17
|
-
if (trailingRanges) for (const range of trailingRanges) {
|
|
18
|
-
const comment = sourceText.slice(range.pos, range.end);
|
|
19
|
-
if (fallthroughCommentPattern.test(comment)) return true;
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
function isTerminatingStatement(node) {
|
|
24
|
-
switch (node.kind) {
|
|
25
|
-
case ts$1.SyntaxKind.Block: return endsWithTerminatingStatement(node.statements);
|
|
26
|
-
case ts$1.SyntaxKind.BreakStatement:
|
|
27
|
-
case ts$1.SyntaxKind.ContinueStatement:
|
|
28
|
-
case ts$1.SyntaxKind.ReturnStatement:
|
|
29
|
-
case ts$1.SyntaxKind.ThrowStatement: return true;
|
|
30
|
-
case ts$1.SyntaxKind.IfStatement: return !!node.elseStatement && isTerminatingStatement(node.thenStatement) && isTerminatingStatement(node.elseStatement);
|
|
31
|
-
case ts$1.SyntaxKind.SwitchStatement: return node.caseBlock.clauses.some(ts$1.isDefaultClause) && node.caseBlock.clauses.every((clause) => !clause.statements.length || endsWithTerminatingStatement(clause.statements));
|
|
32
|
-
case ts$1.SyntaxKind.TryStatement:
|
|
33
|
-
if (node.finallyBlock) return endsWithTerminatingStatement(node.finallyBlock.statements);
|
|
34
|
-
if (!node.catchClause) return endsWithTerminatingStatement(node.tryBlock.statements);
|
|
35
|
-
return endsWithTerminatingStatement(node.tryBlock.statements) && endsWithTerminatingStatement(node.catchClause.block.statements);
|
|
36
|
-
default: return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
var caseFallthroughs_default = ruleCreator.createRule(typescriptLanguage, {
|
|
40
|
-
about: {
|
|
41
|
-
description: "Reports switch case clauses that fall through unexpectedly.",
|
|
42
|
-
id: "caseFallthroughs",
|
|
43
|
-
presets: ["logical", "logicalStrict"]
|
|
44
|
-
},
|
|
45
|
-
messages: { unexpectedFallthrough: {
|
|
46
|
-
primary: "This case falls through to the next case without a break, return, or throw statement.",
|
|
47
|
-
secondary: ["Fallthrough in switch statements is often unintentional and can lead to bugs.", "If fallthrough is intentional, add a comment containing 'falls through' to indicate this."],
|
|
48
|
-
suggestions: [
|
|
49
|
-
"Add a `break` statement at the end of this case.",
|
|
50
|
-
"Add a `return` or `throw` statement if appropriate.",
|
|
51
|
-
"If fallthrough is intentional, add a `// falls through` comment."
|
|
52
|
-
]
|
|
53
|
-
} },
|
|
54
|
-
setup(context) {
|
|
55
|
-
return { visitors: { SwitchStatement: (node, { sourceFile }) => {
|
|
56
|
-
for (let i = 0; i < node.caseBlock.clauses.length - 1; i++) {
|
|
57
|
-
const clause = node.caseBlock.clauses[i];
|
|
58
|
-
if (!clause) continue;
|
|
59
|
-
const nextClause = node.caseBlock.clauses[i + 1];
|
|
60
|
-
if (!clause.statements.length || endsWithTerminatingStatement(clause.statements) || hasFallthroughComment(clause, nextClause, sourceFile)) continue;
|
|
61
|
-
const caseKeyword = ts$1.isCaseClause(clause) ? "case" : "default";
|
|
62
|
-
context.report({
|
|
63
|
-
message: "unexpectedFallthrough",
|
|
64
|
-
range: {
|
|
65
|
-
begin: clause.getStart(sourceFile),
|
|
66
|
-
end: clause.getStart(sourceFile) + caseKeyword.length
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
} } };
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
//#endregion
|
|
74
|
-
export { caseFallthroughs_default as default };
|
|
75
|
-
|
|
76
|
-
//# sourceMappingURL=caseFallthroughs.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports `Promise` catch callback parameters that are not typed as unknown.";
|
|
3
|
-
readonly id: "catchCallbackTypes";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferUnknown", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=catchCallbackTypes.d.ts.map
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
|
|
3
|
-
import { declarationIncludesGlobal, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
4
|
-
import * as ts$1 from "typescript";
|
|
5
|
-
import * as tsutils from "ts-api-utils";
|
|
6
|
-
//#region src/rules/catchCallbackTypes.ts
|
|
7
|
-
var catchCallbackTypes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
8
|
-
about: {
|
|
9
|
-
description: "Reports `Promise` catch callback parameters that are not typed as unknown.",
|
|
10
|
-
id: "catchCallbackTypes",
|
|
11
|
-
presets: ["logical", "logicalStrict"]
|
|
12
|
-
},
|
|
13
|
-
messages: { preferUnknown: {
|
|
14
|
-
primary: "The catch callback parameter should be typed as the safer `unknown` instead of `any`.",
|
|
15
|
-
secondary: [
|
|
16
|
-
"TypeScript's `useUnknownInCatchVariables` option only affects synchronous catch clauses, not Promise callbacks.",
|
|
17
|
-
"Promise rejection values can be anything, so using `unknown` forces proper type narrowing before use.",
|
|
18
|
-
"Using `any` in catch callbacks undermines type safety and can lead to runtime errors."
|
|
19
|
-
],
|
|
20
|
-
suggestions: ["Add an explicit `: unknown` type annotation to the callback parameter."]
|
|
21
|
-
} },
|
|
22
|
-
setup(context) {
|
|
23
|
-
function isGlobalPromiseType(type) {
|
|
24
|
-
const symbol = type.getSymbol();
|
|
25
|
-
if (symbol?.getName() !== "Promise") return false;
|
|
26
|
-
const declarations = symbol.getDeclarations();
|
|
27
|
-
if (!declarations) return false;
|
|
28
|
-
return declarations.some((declaration) => ts$1.isInterfaceDeclaration(declaration) && declaration.name.text === "Promise" && declarationIncludesGlobal(declaration));
|
|
29
|
-
}
|
|
30
|
-
function isCatchOrThenCallback(node, typeChecker) {
|
|
31
|
-
if (!ts$1.isPropertyAccessExpression(node.expression)) return;
|
|
32
|
-
const methodName = node.expression.name.text;
|
|
33
|
-
if (methodName !== "catch" && methodName !== "then") return;
|
|
34
|
-
if (!isGlobalPromiseType(getConstrainedTypeAtLocation(node.expression.expression, typeChecker))) return;
|
|
35
|
-
return methodName === "catch" ? "catch" : "then";
|
|
36
|
-
}
|
|
37
|
-
function checkCallbackParameter(callback, sourceFile, typeChecker) {
|
|
38
|
-
if (!ts$1.isFunctionLike(callback) || !callback.parameters.length) return;
|
|
39
|
-
const firstParameter = callback.parameters[0];
|
|
40
|
-
if (firstParameter.type) {
|
|
41
|
-
const paramType = typeChecker.getTypeFromTypeNode(firstParameter.type);
|
|
42
|
-
if (tsutils.isTypeFlagSet(paramType, ts$1.TypeFlags.Unknown) || !tsutils.isTypeFlagSet(paramType, ts$1.TypeFlags.Any)) return;
|
|
43
|
-
}
|
|
44
|
-
context.report({
|
|
45
|
-
message: "preferUnknown",
|
|
46
|
-
range: {
|
|
47
|
-
begin: firstParameter.name.getStart(sourceFile),
|
|
48
|
-
end: firstParameter.type ? firstParameter.type.getEnd() : firstParameter.name.getEnd()
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
|
|
53
|
-
switch (isCatchOrThenCallback(node, typeChecker)) {
|
|
54
|
-
case "catch":
|
|
55
|
-
if (node.arguments.length >= 1) checkCallbackParameter(node.arguments[0], sourceFile, typeChecker);
|
|
56
|
-
break;
|
|
57
|
-
case "then":
|
|
58
|
-
if (node.arguments.length >= 2) checkCallbackParameter(node.arguments[1], sourceFile, typeChecker);
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
} } };
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
//#endregion
|
|
65
|
-
export { catchCallbackTypes_default as default };
|
|
66
|
-
|
|
67
|
-
//# sourceMappingURL=catchCallbackTypes.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Enforces a consistent naming convention for catch clause error variables.";
|
|
3
|
-
readonly id: "caughtVariableNames";
|
|
4
|
-
readonly presets: readonly ["stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferErrorName", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=caughtVariableNames.d.ts.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/caughtVariableNames.ts
|
|
5
|
-
var caughtVariableNames_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Enforces a consistent naming convention for catch clause error variables.",
|
|
8
|
-
id: "caughtVariableNames",
|
|
9
|
-
presets: ["stylisticStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { preferErrorName: {
|
|
12
|
-
primary: "Use `error` as the name for the catch clause parameter instead of `{{ name }}`.",
|
|
13
|
-
secondary: [
|
|
14
|
-
"Consistent naming of catch clause parameters improves code readability.",
|
|
15
|
-
"The name `error` clearly indicates the purpose of the variable.",
|
|
16
|
-
"Descriptive names ending in 'Error' are generally also acceptable."
|
|
17
|
-
],
|
|
18
|
-
suggestions: ["Rename `{{ name }}` to `error`.", "Rename `{{ name }}` to a name ending with `Error`."]
|
|
19
|
-
} },
|
|
20
|
-
setup(context) {
|
|
21
|
-
return { visitors: { CatchClause: (node, { sourceFile }) => {
|
|
22
|
-
const variable = node.variableDeclaration;
|
|
23
|
-
if (!variable || !ts$1.isIdentifier(variable.name)) return;
|
|
24
|
-
const name = variable.name.text;
|
|
25
|
-
if (name === "error" || name.endsWith("Error")) return;
|
|
26
|
-
context.report({
|
|
27
|
-
data: { name },
|
|
28
|
-
message: "preferErrorName",
|
|
29
|
-
range: {
|
|
30
|
-
begin: variable.name.getStart(sourceFile),
|
|
31
|
-
end: variable.name.getEnd()
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
} } };
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
//#endregion
|
|
38
|
-
export { caughtVariableNames_default as default };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=caughtVariableNames.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using chained assignment expressions (e.g., a = b = c).";
|
|
3
|
-
readonly id: "chainedAssignments";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noChainedAssignment", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=chainedAssignments.d.ts.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage, unwrapParentParenthesizedExpressions, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/chainedAssignments.ts
|
|
6
|
-
var chainedAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports using chained assignment expressions (e.g., a = b = c).",
|
|
9
|
-
id: "chainedAssignments",
|
|
10
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
11
|
-
},
|
|
12
|
-
messages: { noChainedAssignment: {
|
|
13
|
-
primary: "Prefer separate assignment statements for readability instead of chaining assignments.",
|
|
14
|
-
secondary: ["Chained assignments can be hard to read and can lead to unexpected behavior with variable scoping and type inference.", "Each assignment creates a reference to the same value, which may cause confusion when dealing with mutable values."],
|
|
15
|
-
suggestions: ["Break the chained assignment into separate assignment statements, one for each variable."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
return { visitors: { BinaryExpression: (node, { sourceFile }) => {
|
|
19
|
-
if (!tsutils.isAssignmentKind(node.operatorToken.kind)) return;
|
|
20
|
-
const rightSide = unwrapParenthesizedNode(node.right);
|
|
21
|
-
if (rightSide.kind !== SyntaxKind.BinaryExpression || !tsutils.isAssignmentKind(rightSide.operatorToken.kind)) return;
|
|
22
|
-
if (unwrapParentParenthesizedExpressions(node).kind === SyntaxKind.BinaryExpression) return;
|
|
23
|
-
context.report({
|
|
24
|
-
message: "noChainedAssignment",
|
|
25
|
-
range: getTSNodeRange(node.operatorToken, sourceFile)
|
|
26
|
-
});
|
|
27
|
-
} } };
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
//#endregion
|
|
31
|
-
export { chainedAssignments_default as default };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=chainedAssignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports comparing charAt() results with strings longer than one character.";
|
|
3
|
-
readonly id: "charAtComparisons";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "invalidComparison", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=charAtComparisons.d.ts.map
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/charAtComparisons.ts
|
|
5
|
-
const comparisonOperators = new Set([
|
|
6
|
-
ts$1.SyntaxKind.EqualsEqualsEqualsToken,
|
|
7
|
-
ts$1.SyntaxKind.EqualsEqualsToken,
|
|
8
|
-
ts$1.SyntaxKind.ExclamationEqualsEqualsToken,
|
|
9
|
-
ts$1.SyntaxKind.ExclamationEqualsToken
|
|
10
|
-
]);
|
|
11
|
-
function getStringLiteralLength(node) {
|
|
12
|
-
return ts$1.isStringLiteral(node) || ts$1.isNoSubstitutionTemplateLiteral(node) ? node.text.length : void 0;
|
|
13
|
-
}
|
|
14
|
-
function isStringCharAtCall(node, typeChecker) {
|
|
15
|
-
return ts$1.isCallExpression(node) && ts$1.isPropertyAccessExpression(node.expression) && node.expression.name.text === "charAt" && isStringType(typeChecker.getTypeAtLocation(node.expression.expression));
|
|
16
|
-
}
|
|
17
|
-
function isStringType(type) {
|
|
18
|
-
return (type.flags & ts$1.TypeFlags.StringLike) !== 0;
|
|
19
|
-
}
|
|
20
|
-
var charAtComparisons_default = ruleCreator.createRule(typescriptLanguage, {
|
|
21
|
-
about: {
|
|
22
|
-
description: "Reports comparing charAt() results with strings longer than one character.",
|
|
23
|
-
id: "charAtComparisons",
|
|
24
|
-
presets: ["logical", "logicalStrict"]
|
|
25
|
-
},
|
|
26
|
-
messages: { invalidComparison: {
|
|
27
|
-
primary: "Comparing charAt() result with a string of length {{ length }} is always {{ result }}.",
|
|
28
|
-
secondary: ["The `charAt` method returns a string of exactly one character.", "Comparing it with a multi-character string will always evaluate to the same result."],
|
|
29
|
-
suggestions: ["Use a single-character string for the comparison.", "Consider using `startsWith()`, `includes()`, or `slice()` for multi-character comparisons."]
|
|
30
|
-
} },
|
|
31
|
-
setup(context) {
|
|
32
|
-
return { visitors: { BinaryExpression: (node, { sourceFile, typeChecker }) => {
|
|
33
|
-
if (!comparisonOperators.has(node.operatorToken.kind)) return;
|
|
34
|
-
let literal;
|
|
35
|
-
if (isStringCharAtCall(node.left, typeChecker)) literal = node.right;
|
|
36
|
-
else if (isStringCharAtCall(node.right, typeChecker)) literal = node.left;
|
|
37
|
-
else return;
|
|
38
|
-
const length = getStringLiteralLength(literal);
|
|
39
|
-
if (length === void 0 || length <= 1) return;
|
|
40
|
-
const isEquality = node.operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsEqualsToken || node.operatorToken.kind === ts$1.SyntaxKind.EqualsEqualsToken;
|
|
41
|
-
context.report({
|
|
42
|
-
data: {
|
|
43
|
-
length,
|
|
44
|
-
result: isEquality ? "false" : "true"
|
|
45
|
-
},
|
|
46
|
-
message: "invalidComparison",
|
|
47
|
-
range: {
|
|
48
|
-
begin: node.getStart(sourceFile),
|
|
49
|
-
end: node.getEnd()
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
} } };
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
//#endregion
|
|
56
|
-
export { charAtComparisons_default as default };
|
|
57
|
-
|
|
58
|
-
//# sourceMappingURL=charAtComparisons.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports reassigning class declarations.";
|
|
3
|
-
readonly id: "classAssignments";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noClassAssign", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=classAssignments.d.ts.map
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getModifyingReferences, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/classAssignments.ts
|
|
4
|
-
var classAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports reassigning class declarations.",
|
|
7
|
-
id: "classAssignments",
|
|
8
|
-
presets: ["javascript"]
|
|
9
|
-
},
|
|
10
|
-
messages: { noClassAssign: {
|
|
11
|
-
primary: "Reassigning a class declaration is misleading and makes the class harder to use.",
|
|
12
|
-
secondary: ["Reassigning a class declaration can lead to unexpected behavior and makes code harder to understand.", "Class declarations are typically intended to be immutable references, and reassigning them can cause confusion about which class is being used."],
|
|
13
|
-
suggestions: ["Use a different variable name if you need to store a modified reference to a class."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { ClassDeclaration: (node, { sourceFile }) => {
|
|
17
|
-
if (!node.name) return;
|
|
18
|
-
const modifyingReferences = getModifyingReferences(node.name, sourceFile);
|
|
19
|
-
for (const reference of modifyingReferences) context.report({
|
|
20
|
-
message: "noClassAssign",
|
|
21
|
-
range: getTSNodeRange(reference, sourceFile)
|
|
22
|
-
});
|
|
23
|
-
} } };
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
//#endregion
|
|
27
|
-
export { classAssignments_default as default };
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=classAssignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports assigning literal values to `this` in constructors instead of using class field declarations.";
|
|
3
|
-
readonly id: "classFieldDeclarations";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferClassField", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=classFieldDeclarations.d.ts.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/classFieldDeclarations.ts
|
|
5
|
-
function isLiteralValue(node) {
|
|
6
|
-
if (ts.isPrefixUnaryExpression(node)) return isLiteralValue(node.operand);
|
|
7
|
-
return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword || node.kind === ts.SyntaxKind.NullKeyword || ts.isLiteralExpression(node);
|
|
8
|
-
}
|
|
9
|
-
function isThisLiteralAssignment(node) {
|
|
10
|
-
return (ts.isElementAccessExpression(node.left) || ts.isPropertyAccessExpression(node.left)) && ts.isPropertyAccessExpression(node.left) && node.left.expression.kind === ts.SyntaxKind.ThisKeyword && isLiteralValue(node.right);
|
|
11
|
-
}
|
|
12
|
-
var classFieldDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
|
|
13
|
-
about: {
|
|
14
|
-
description: "Reports assigning literal values to `this` in constructors instead of using class field declarations.",
|
|
15
|
-
id: "classFieldDeclarations",
|
|
16
|
-
presets: ["javascript"]
|
|
17
|
-
},
|
|
18
|
-
messages: { preferClassField: {
|
|
19
|
-
primary: "Prefer class field declaration over `this` assignment in constructor for static values.",
|
|
20
|
-
secondary: ["Class field declarations are more concise and clearly express the intent of initializing properties.", "Moving property initialization to class fields keeps the constructor focused on dynamic initialization logic."],
|
|
21
|
-
suggestions: ["Move this property assignment to a class field declaration."]
|
|
22
|
-
} },
|
|
23
|
-
setup(context) {
|
|
24
|
-
function checkStatement(node, sourceFile) {
|
|
25
|
-
if (!ts.isExpressionStatement(node) || !ts.isBinaryExpression(node.expression) || node.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken || !isThisLiteralAssignment(node.expression)) return;
|
|
26
|
-
context.report({
|
|
27
|
-
message: "preferClassField",
|
|
28
|
-
range: getTSNodeRange(node, sourceFile)
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return { visitors: { Constructor: (node, { sourceFile }) => {
|
|
32
|
-
if (!node.body || !ts.isClassDeclaration(node.parent) && !ts.isClassExpression(node.parent)) return;
|
|
33
|
-
for (const statement of node.body.statements) checkStatement(statement, sourceFile);
|
|
34
|
-
} } };
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
//#endregion
|
|
38
|
-
export { classFieldDeclarations_default as default };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=classFieldDeclarations.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports getters that return literal values instead of using readonly class fields.";
|
|
3
|
-
readonly id: "classLiteralProperties";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferField", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=classLiteralProperties.d.ts.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/classLiteralProperties.ts
|
|
5
|
-
var classLiteralProperties_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports getters that return literal values instead of using readonly class fields.",
|
|
8
|
-
id: "classLiteralProperties",
|
|
9
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { preferField: {
|
|
12
|
-
primary: "Prefer a readonly class field over a getter returning a literal value.",
|
|
13
|
-
secondary: ["Readonly fields are more concise and avoid the overhead of a function call.", "Getters returning literal values provide no benefit over readonly fields."],
|
|
14
|
-
suggestions: ["Replace this getter with a readonly field."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { GetAccessor: (node, { sourceFile }) => {
|
|
18
|
-
if (node.body?.statements.length !== 1) return;
|
|
19
|
-
const statement = node.body.statements[0];
|
|
20
|
-
if (!ts.isReturnStatement(statement) || !statement.expression || !isLiteralValue(statement.expression)) return;
|
|
21
|
-
context.report({
|
|
22
|
-
message: "preferField",
|
|
23
|
-
range: getTSNodeRange(node, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
} } };
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
function isLiteralValue(node) {
|
|
29
|
-
switch (node.kind) {
|
|
30
|
-
case ts.SyntaxKind.BigIntLiteral:
|
|
31
|
-
case ts.SyntaxKind.FalseKeyword:
|
|
32
|
-
case ts.SyntaxKind.NoSubstitutionTemplateLiteral:
|
|
33
|
-
case ts.SyntaxKind.NullKeyword:
|
|
34
|
-
case ts.SyntaxKind.NumericLiteral:
|
|
35
|
-
case ts.SyntaxKind.RegularExpressionLiteral:
|
|
36
|
-
case ts.SyntaxKind.StringLiteral:
|
|
37
|
-
case ts.SyntaxKind.TrueKeyword: return true;
|
|
38
|
-
case ts.SyntaxKind.PrefixUnaryExpression: return isLiteralValue(node.operand);
|
|
39
|
-
default: return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//#endregion
|
|
43
|
-
export { classLiteralProperties_default as default };
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=classLiteralProperties.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports duplicate class member names that will be overwritten.";
|
|
3
|
-
readonly id: "classMemberDuplicates";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "duplicateMember", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=classMemberDuplicates.d.ts.map
|
|
@@ -1,71 +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/classMemberDuplicates.ts
|
|
5
|
-
var classMemberDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports duplicate class member names that will be overwritten.",
|
|
8
|
-
id: "classMemberDuplicates",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { duplicateMember: {
|
|
12
|
-
primary: "Duplicate class member name '{{ memberName }}' will be overwritten.",
|
|
13
|
-
secondary: ["Duplicate class members are legal in JavaScript, but only the last definition is used.", "This can lead to confusion and bugs, especially when maintaining the code."],
|
|
14
|
-
suggestions: ["If both members are meant to exist, rename one of them.", "If only the last definition is meant to exist, remove the earlier one."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: {
|
|
18
|
-
ClassDeclaration: visitClass,
|
|
19
|
-
ClassExpression: visitClass
|
|
20
|
-
} };
|
|
21
|
-
function visitClass(node, { sourceFile }) {
|
|
22
|
-
const seenMembers = {
|
|
23
|
-
instance: {
|
|
24
|
-
getters: /* @__PURE__ */ new Map(),
|
|
25
|
-
setters: /* @__PURE__ */ new Map(),
|
|
26
|
-
values: /* @__PURE__ */ new Map()
|
|
27
|
-
},
|
|
28
|
-
static: {
|
|
29
|
-
getters: /* @__PURE__ */ new Map(),
|
|
30
|
-
setters: /* @__PURE__ */ new Map(),
|
|
31
|
-
values: /* @__PURE__ */ new Map()
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
for (const member of node.members.toReversed()) {
|
|
35
|
-
const key = getMemberKeyName(member);
|
|
36
|
-
if (!key) continue;
|
|
37
|
-
const namespace = key.isStatic ? seenMembers.static : seenMembers.instance;
|
|
38
|
-
let isDuplicate;
|
|
39
|
-
if (key.group === "values") isDuplicate = namespace.values.has(key.text) || namespace.getters.has(key.text) || namespace.setters.has(key.text);
|
|
40
|
-
else if (key.group === "getters") isDuplicate = namespace.getters.has(key.text) || namespace.values.has(key.text);
|
|
41
|
-
else isDuplicate = namespace.setters.has(key.text) || namespace.values.has(key.text);
|
|
42
|
-
if (isDuplicate) context.report({
|
|
43
|
-
data: { memberName: key.text },
|
|
44
|
-
message: "duplicateMember",
|
|
45
|
-
range: getTSNodeRange(key.node, sourceFile)
|
|
46
|
-
});
|
|
47
|
-
namespace[key.group].set(key.text, member);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
function getMemberKeyName(member) {
|
|
53
|
-
if (member.kind === SyntaxKind.PropertyDeclaration || member.kind === SyntaxKind.MethodDeclaration || member.kind === SyntaxKind.GetAccessor || member.kind === SyntaxKind.SetAccessor) {
|
|
54
|
-
const text = getNameText(member.name);
|
|
55
|
-
if (!text) return;
|
|
56
|
-
const isStatic = member.modifiers?.some((modifier) => modifier.kind === SyntaxKind.StaticKeyword);
|
|
57
|
-
return {
|
|
58
|
-
group: member.kind === SyntaxKind.GetAccessor ? "getters" : member.kind === SyntaxKind.SetAccessor ? "setters" : "values",
|
|
59
|
-
isStatic: !!isStatic,
|
|
60
|
-
node: member.name,
|
|
61
|
-
text
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function getNameText(name) {
|
|
66
|
-
if (name.kind === SyntaxKind.Identifier || name.kind === SyntaxKind.NumericLiteral || name.kind === SyntaxKind.BigIntLiteral || name.kind === SyntaxKind.StringLiteral || name.kind === SyntaxKind.NoSubstitutionTemplateLiteral || name.kind === SyntaxKind.PrivateIdentifier) return name.text;
|
|
67
|
-
}
|
|
68
|
-
//#endregion
|
|
69
|
-
export { classMemberDuplicates_default as default };
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=classMemberDuplicates.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { z } from "zod/v4";
|
|
2
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
3
|
-
readonly description: "Reports class methods that do not use `this`.";
|
|
4
|
-
readonly id: "classMethodsThis";
|
|
5
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
6
|
-
} & {
|
|
7
|
-
readonly pluginId: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
}, "missingThis", {
|
|
10
|
-
ignoreClassesThatImplementAnInterface: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"public-fields">]>>;
|
|
11
|
-
ignoreOverrideMethods: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
-
}>;
|
|
13
|
-
export default _default;
|
|
14
|
-
//# sourceMappingURL=classMethodsThis.d.ts.map
|