@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,55 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { nullThrows } from "@flint.fyi/utils";
|
|
4
|
-
//#region src/rules/octalNumbers.ts
|
|
5
|
-
var octalNumbers_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports using legacy octal numeric literals.",
|
|
8
|
-
id: "octalNumbers",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { noOctalNumber: {
|
|
12
|
-
primary: "This legacy octal numeric literal evaluates to {{ raw }}. Did you mean that value, or to use a modern octal syntax such as {{ equivalent }}?",
|
|
13
|
-
secondary: [
|
|
14
|
-
"Legacy octal numeric literals (e.g., `077`, `0123`) are a deprecated feature in JavaScript that can lead to confusion and errors.",
|
|
15
|
-
"They are forbidden in strict mode and are less readable than their modern alternatives.",
|
|
16
|
-
"The digit `0` by itself is allowed as it represents zero, not an octal literal."
|
|
17
|
-
],
|
|
18
|
-
suggestions: ["Use the explicit octal syntax (e.g., `0o77`) introduced in ES6, which is clearer and works in both strict and non-strict modes.", "Remove the leading `0` if you intended to use the decimal value."]
|
|
19
|
-
} },
|
|
20
|
-
setup(context) {
|
|
21
|
-
return { visitors: { NumericLiteral: (node, { sourceFile }) => {
|
|
22
|
-
const text = node.getText(sourceFile);
|
|
23
|
-
if (text.length > 1 && text.startsWith("0") && nullThrows(text[1], "Second character is expected to be present by prior length check") >= "0" && nullThrows(text[1], "Second character is expected to be present by prior length check") <= "7" && !/^0[xobi]/i.test(text)) {
|
|
24
|
-
const range = {
|
|
25
|
-
begin: node.getStart(sourceFile),
|
|
26
|
-
end: node.getEnd()
|
|
27
|
-
};
|
|
28
|
-
const octalValue = parseInt(text, 8);
|
|
29
|
-
const modernOctalSyntax = `0o${text.slice(1)}`;
|
|
30
|
-
const decimalWithoutLeadingZero = text.slice(1);
|
|
31
|
-
context.report({
|
|
32
|
-
data: {
|
|
33
|
-
equivalent: modernOctalSyntax,
|
|
34
|
-
raw: octalValue.toString()
|
|
35
|
-
},
|
|
36
|
-
message: "noOctalNumber",
|
|
37
|
-
range,
|
|
38
|
-
suggestions: [{
|
|
39
|
-
id: "useModernOctalSyntax",
|
|
40
|
-
range,
|
|
41
|
-
text: modernOctalSyntax
|
|
42
|
-
}, {
|
|
43
|
-
id: "removeLeadingZero",
|
|
44
|
-
range,
|
|
45
|
-
text: decimalWithoutLeadingZero
|
|
46
|
-
}]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
} } };
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
//#endregion
|
|
53
|
-
export { octalNumbers_default as default };
|
|
54
|
-
|
|
55
|
-
//# sourceMappingURL=octalNumbers.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Prefer assignment operator shorthand where possible.";
|
|
3
|
-
readonly id: "operatorAssignmentShorthand";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferShorthand", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=operatorAssignmentShorthand.d.ts.map
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/operatorAssignmentShorthand.ts
|
|
5
|
-
const operatorTexts = new Map([
|
|
6
|
-
[ts.SyntaxKind.AmpersandToken, "&"],
|
|
7
|
-
[ts.SyntaxKind.AsteriskAsteriskToken, "**"],
|
|
8
|
-
[ts.SyntaxKind.AsteriskToken, "*"],
|
|
9
|
-
[ts.SyntaxKind.BarToken, "|"],
|
|
10
|
-
[ts.SyntaxKind.CaretToken, "^"],
|
|
11
|
-
[ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken, ">>>"],
|
|
12
|
-
[ts.SyntaxKind.GreaterThanGreaterThanToken, ">>"],
|
|
13
|
-
[ts.SyntaxKind.LessThanLessThanToken, "<<"],
|
|
14
|
-
[ts.SyntaxKind.MinusToken, "-"],
|
|
15
|
-
[ts.SyntaxKind.PercentToken, "%"],
|
|
16
|
-
[ts.SyntaxKind.PlusToken, "+"],
|
|
17
|
-
[ts.SyntaxKind.SlashToken, "/"]
|
|
18
|
-
]);
|
|
19
|
-
const commutativeOperatorsWithShorthand = new Set([
|
|
20
|
-
"&",
|
|
21
|
-
"*",
|
|
22
|
-
"^",
|
|
23
|
-
"|"
|
|
24
|
-
]);
|
|
25
|
-
const nonCommutativeOperatorsWithShorthand = new Set([
|
|
26
|
-
"%",
|
|
27
|
-
"**",
|
|
28
|
-
"+",
|
|
29
|
-
"-",
|
|
30
|
-
"/",
|
|
31
|
-
"<<",
|
|
32
|
-
">>",
|
|
33
|
-
">>>"
|
|
34
|
-
]);
|
|
35
|
-
var operatorAssignmentShorthand_default = ruleCreator.createRule(typescriptLanguage, {
|
|
36
|
-
about: {
|
|
37
|
-
description: "Prefer assignment operator shorthand where possible.",
|
|
38
|
-
id: "operatorAssignmentShorthand",
|
|
39
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
40
|
-
},
|
|
41
|
-
messages: { preferShorthand: {
|
|
42
|
-
primary: "This `=` assignment can be replaced with an `{{ operator }}=` operator assignment.",
|
|
43
|
-
secondary: ["The shorthand operator assignment accomplishes the same operation with less code."],
|
|
44
|
-
suggestions: ["Switch the `=` assignment with an `{{ operator }}` operator assignment."]
|
|
45
|
-
} },
|
|
46
|
-
setup(context) {
|
|
47
|
-
function report(operator, node, right, sourceFile) {
|
|
48
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
49
|
-
context.report({
|
|
50
|
-
data: { operator },
|
|
51
|
-
fix: {
|
|
52
|
-
range,
|
|
53
|
-
text: [
|
|
54
|
-
node.left.getText(sourceFile),
|
|
55
|
-
`${operator}=`,
|
|
56
|
-
right.getText(sourceFile)
|
|
57
|
-
].join(" ")
|
|
58
|
-
},
|
|
59
|
-
message: "preferShorthand",
|
|
60
|
-
range
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return { visitors: { BinaryExpression: (node, { sourceFile }) => {
|
|
64
|
-
if (node.operatorToken.kind !== ts.SyntaxKind.EqualsToken || !ts.isBinaryExpression(node.right)) return;
|
|
65
|
-
const operator = operatorTexts.get(node.right.operatorToken.kind);
|
|
66
|
-
if (!operator) return;
|
|
67
|
-
const isCommutative = commutativeOperatorsWithShorthand.has(operator);
|
|
68
|
-
if (!isCommutative && !nonCommutativeOperatorsWithShorthand.has(operator)) return;
|
|
69
|
-
if (hasSameTokens(node.left, node.right.left, sourceFile)) report(operator, node, node.right.right, sourceFile);
|
|
70
|
-
else if (isCommutative && hasSameTokens(node.left, node.right.right, sourceFile)) report(operator, node, node.right.left, sourceFile);
|
|
71
|
-
} } };
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
//#endregion
|
|
75
|
-
export { operatorAssignmentShorthand_default as default };
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=operatorAssignmentShorthand.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Require that function overload signatures be consecutive.";
|
|
3
|
-
readonly id: "overloadSignaturesAdjacent";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "overloadSignatureSeparated", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=overloadSignaturesAdjacent.d.ts.map
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts, { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/overloadSignaturesAdjacent.ts
|
|
5
|
-
function getMemberMethod(member) {
|
|
6
|
-
switch (member.kind) {
|
|
7
|
-
case SyntaxKind.CallSignature: return {
|
|
8
|
-
callSignature: true,
|
|
9
|
-
name: "call",
|
|
10
|
-
static: false,
|
|
11
|
-
type: "normal"
|
|
12
|
-
};
|
|
13
|
-
case SyntaxKind.Constructor: return {
|
|
14
|
-
callSignature: false,
|
|
15
|
-
name: "constructor",
|
|
16
|
-
static: false,
|
|
17
|
-
type: "normal"
|
|
18
|
-
};
|
|
19
|
-
case SyntaxKind.ConstructSignature: return {
|
|
20
|
-
callSignature: false,
|
|
21
|
-
name: "new",
|
|
22
|
-
static: false,
|
|
23
|
-
type: "normal"
|
|
24
|
-
};
|
|
25
|
-
case SyntaxKind.ExportAssignment:
|
|
26
|
-
case SyntaxKind.ExportDeclaration: return;
|
|
27
|
-
case SyntaxKind.FunctionDeclaration: {
|
|
28
|
-
const name = member.name?.text;
|
|
29
|
-
if (name == null) return;
|
|
30
|
-
return {
|
|
31
|
-
callSignature: false,
|
|
32
|
-
name,
|
|
33
|
-
static: false,
|
|
34
|
-
type: "normal"
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
case SyntaxKind.MethodDeclaration:
|
|
38
|
-
case SyntaxKind.MethodSignature: {
|
|
39
|
-
const nameInfo = getNameFromPropertyName(member.name);
|
|
40
|
-
if (!nameInfo) return;
|
|
41
|
-
return {
|
|
42
|
-
callSignature: false,
|
|
43
|
-
name: nameInfo.name,
|
|
44
|
-
static: isStatic(member),
|
|
45
|
-
type: nameInfo.type
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (ts.isExportDeclaration(member) || ts.isImportDeclaration(member) || ts.isTypeAliasDeclaration(member) || ts.isInterfaceDeclaration(member) || ts.isClassDeclaration(member) || ts.isEnumDeclaration(member) || ts.isModuleDeclaration(member)) return;
|
|
50
|
-
}
|
|
51
|
-
function getMembers(node) {
|
|
52
|
-
switch (node.kind) {
|
|
53
|
-
case SyntaxKind.Block:
|
|
54
|
-
case SyntaxKind.ModuleBlock:
|
|
55
|
-
case SyntaxKind.SourceFile: return node.statements;
|
|
56
|
-
case SyntaxKind.ClassDeclaration:
|
|
57
|
-
case SyntaxKind.ClassExpression: return node.members;
|
|
58
|
-
case SyntaxKind.InterfaceDeclaration: return node.members;
|
|
59
|
-
case SyntaxKind.TypeLiteral: return node.members;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function getMethodDisplayName(method) {
|
|
63
|
-
if (method.static) return `static ${method.name}`;
|
|
64
|
-
if (method.type === "quoted") return `"${method.name}"`;
|
|
65
|
-
return method.name;
|
|
66
|
-
}
|
|
67
|
-
function getNameFromPropertyName(name) {
|
|
68
|
-
switch (name.kind) {
|
|
69
|
-
case SyntaxKind.ComputedPropertyName:
|
|
70
|
-
if (ts.isStringLiteral(name.expression)) return {
|
|
71
|
-
name: name.expression.text,
|
|
72
|
-
type: "quoted"
|
|
73
|
-
};
|
|
74
|
-
return;
|
|
75
|
-
case SyntaxKind.Identifier:
|
|
76
|
-
case SyntaxKind.NumericLiteral:
|
|
77
|
-
case SyntaxKind.PrivateIdentifier: return {
|
|
78
|
-
name: name.text,
|
|
79
|
-
type: "normal"
|
|
80
|
-
};
|
|
81
|
-
case SyntaxKind.StringLiteral: return {
|
|
82
|
-
name: name.text,
|
|
83
|
-
type: "quoted"
|
|
84
|
-
};
|
|
85
|
-
default: return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
function isSameMethod(method1, method2) {
|
|
89
|
-
return !!method2 && method1.name === method2.name && method1.static === method2.static && method1.callSignature === method2.callSignature && method1.type === method2.type;
|
|
90
|
-
}
|
|
91
|
-
function isStatic(node) {
|
|
92
|
-
return ts.canHaveModifiers(node) && !!node.modifiers?.some((mod) => mod.kind === SyntaxKind.StaticKeyword);
|
|
93
|
-
}
|
|
94
|
-
var overloadSignaturesAdjacent_default = ruleCreator.createRule(typescriptLanguage, {
|
|
95
|
-
about: {
|
|
96
|
-
description: "Require that function overload signatures be consecutive.",
|
|
97
|
-
id: "overloadSignaturesAdjacent",
|
|
98
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
99
|
-
},
|
|
100
|
-
messages: { overloadSignatureSeparated: {
|
|
101
|
-
primary: "All {{ name }} signatures should be adjacent.",
|
|
102
|
-
secondary: ["Separating overload signatures makes code harder to read and maintain.", "Grouping all overloads for a function together makes it easier to read and understand that function."],
|
|
103
|
-
suggestions: ["Group all overload signatures for this function together."]
|
|
104
|
-
} },
|
|
105
|
-
setup(context) {
|
|
106
|
-
function checkNode(node, { sourceFile }) {
|
|
107
|
-
const members = getMembers(node);
|
|
108
|
-
let lastMethod;
|
|
109
|
-
const seenMethods = [];
|
|
110
|
-
for (const member of members) {
|
|
111
|
-
const method = getMemberMethod(member);
|
|
112
|
-
if (method == null) {
|
|
113
|
-
lastMethod = void 0;
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const indexOfSameMethod = seenMethods.findIndex((seenMethod) => isSameMethod(method, seenMethod));
|
|
117
|
-
if (indexOfSameMethod > -1 && !isSameMethod(method, lastMethod)) context.report({
|
|
118
|
-
data: { name: getMethodDisplayName(method) },
|
|
119
|
-
message: "overloadSignatureSeparated",
|
|
120
|
-
range: getTSNodeRange(member, sourceFile)
|
|
121
|
-
});
|
|
122
|
-
else if (indexOfSameMethod === -1) seenMethods.push(method);
|
|
123
|
-
lastMethod = method;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return { visitors: {
|
|
127
|
-
Block: checkNode,
|
|
128
|
-
ClassDeclaration: checkNode,
|
|
129
|
-
ClassExpression: checkNode,
|
|
130
|
-
InterfaceDeclaration: checkNode,
|
|
131
|
-
ModuleBlock: checkNode,
|
|
132
|
-
SourceFile: checkNode,
|
|
133
|
-
TypeLiteral: checkNode
|
|
134
|
-
} };
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
//#endregion
|
|
138
|
-
export { overloadSignaturesAdjacent_default as default };
|
|
139
|
-
|
|
140
|
-
//# sourceMappingURL=overloadSignaturesAdjacent.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Disallow reassignment of function parameters.";
|
|
3
|
-
readonly id: "parameterReassignments";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "parameterReassignment", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=parameterReassignments.d.ts.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getScopeManager, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/parameterReassignments.ts
|
|
4
|
-
var parameterReassignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Disallow reassignment of function parameters.",
|
|
7
|
-
id: "parameterReassignments",
|
|
8
|
-
presets: ["logical"]
|
|
9
|
-
},
|
|
10
|
-
messages: { parameterReassignment: {
|
|
11
|
-
primary: "Reassigning function parameters can make them more difficult to reason about.",
|
|
12
|
-
secondary: [
|
|
13
|
-
"Most code treats function parameters as constants.",
|
|
14
|
-
"Reassigning them inside the function removes that reference to the original value.",
|
|
15
|
-
"It's generally more understandable to write code that does not modify parameters."
|
|
16
|
-
],
|
|
17
|
-
suggestions: ["Use a new variable if you need to modify the value.", "Use a different pattern such as a helper function."]
|
|
18
|
-
} },
|
|
19
|
-
setup(context) {
|
|
20
|
-
function reportParameterReassignments(node, { sourceFile }) {
|
|
21
|
-
const scopeManager = getScopeManager(sourceFile);
|
|
22
|
-
const parameterVariables = new Set(node.parameters.flatMap((parameter) => scopeManager.getDeclaredVariables(parameter)));
|
|
23
|
-
for (const reference of scopeManager.getReferencesInScope(node)) {
|
|
24
|
-
if (!reference.isWrite || !reference.variable || !parameterVariables.has(reference.variable)) continue;
|
|
25
|
-
context.report({
|
|
26
|
-
message: "parameterReassignment",
|
|
27
|
-
range: getTSNodeRange(reference.identifier, sourceFile)
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return { visitors: {
|
|
32
|
-
ArrowFunction: reportParameterReassignments,
|
|
33
|
-
Constructor: reportParameterReassignments,
|
|
34
|
-
FunctionDeclaration: reportParameterReassignments,
|
|
35
|
-
FunctionExpression: reportParameterReassignments,
|
|
36
|
-
GetAccessor: reportParameterReassignments,
|
|
37
|
-
MethodDeclaration: reportParameterReassignments,
|
|
38
|
-
SetAccessor: reportParameterReassignments
|
|
39
|
-
} };
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
//#endregion
|
|
43
|
-
export { parameterReassignments_default as default };
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=parameterReassignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports parseInt calls that are missing or have an invalid radix parameter.";
|
|
3
|
-
readonly id: "parseIntRadixes";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "invalidRadix" | "missingRadix", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=parseIntRadixes.d.ts.map
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/parseIntRadixes.ts
|
|
5
|
-
function isParseIntCall(node, typeChecker) {
|
|
6
|
-
switch (node.expression.kind) {
|
|
7
|
-
case ts$1.SyntaxKind.Identifier: return isGlobalDeclarationOfName(node.expression, "parseInt", typeChecker);
|
|
8
|
-
case ts$1.SyntaxKind.PropertyAccessExpression: return ts$1.isIdentifier(node.expression.name) && node.expression.name.text === "parseInt" && ts$1.isIdentifier(node.expression.expression) && node.expression.expression.text === "Number" && isGlobalDeclarationOfName(node.expression.expression, "Number", typeChecker);
|
|
9
|
-
default: return false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function isValidRadix(argument) {
|
|
13
|
-
switch (argument.kind) {
|
|
14
|
-
case ts$1.SyntaxKind.Identifier: return argument.text !== "undefined";
|
|
15
|
-
case ts$1.SyntaxKind.NumericLiteral: return isValidRadixValue(Number(argument.text));
|
|
16
|
-
case ts$1.SyntaxKind.PrefixUnaryExpression: return argument.operator === ts$1.SyntaxKind.MinusToken && ts$1.isNumericLiteral(argument.operand) && isValidRadixValue(-Number(argument.operand.text));
|
|
17
|
-
default: return true;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function isValidRadixValue(value) {
|
|
21
|
-
return value >= 2 && value <= 36;
|
|
22
|
-
}
|
|
23
|
-
var parseIntRadixes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
24
|
-
about: {
|
|
25
|
-
description: "Reports parseInt calls that are missing or have an invalid radix parameter.",
|
|
26
|
-
id: "parseIntRadixes",
|
|
27
|
-
presets: ["logical", "logicalStrict"]
|
|
28
|
-
},
|
|
29
|
-
messages: {
|
|
30
|
-
invalidRadix: {
|
|
31
|
-
primary: "Invalid radix parameter; must be an integer between 2 and 36.",
|
|
32
|
-
secondary: ["The radix determines the base of the numeral system used for parsing.", "Valid radix values are integers from 2 (binary) to 36."],
|
|
33
|
-
suggestions: ["Use a valid radix value, typically 10 for decimal numbers."]
|
|
34
|
-
},
|
|
35
|
-
missingRadix: {
|
|
36
|
-
primary: "This `parseInt` call is missing a radix parameter to specify the numeral system base.",
|
|
37
|
-
secondary: ["Without a radix, parseInt may interpret the string differently based on its format.", "For example, strings starting with '0' were historically parsed as octal."],
|
|
38
|
-
suggestions: ["Add an explicit radix parameter."]
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
setup(context) {
|
|
42
|
-
return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
|
|
43
|
-
if (!isParseIntCall(node, typeChecker)) return;
|
|
44
|
-
if (node.arguments.length <= 1) {
|
|
45
|
-
context.report({
|
|
46
|
-
message: "missingRadix",
|
|
47
|
-
range: getTSNodeRange(node, sourceFile)
|
|
48
|
-
});
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const radixArgument = node.arguments[1];
|
|
52
|
-
if (!isValidRadix(radixArgument)) context.report({
|
|
53
|
-
message: "invalidRadix",
|
|
54
|
-
range: getTSNodeRange(radixArgument, sourceFile)
|
|
55
|
-
});
|
|
56
|
-
} } };
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
//#endregion
|
|
60
|
-
export { parseIntRadixes_default as default };
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=parseIntRadixes.js.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { z } from "zod/v4";
|
|
2
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
3
|
-
readonly description: "Reports bracket notation property access when dot notation can be used.";
|
|
4
|
-
readonly id: "propertyAccessNotation";
|
|
5
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
6
|
-
} & {
|
|
7
|
-
readonly pluginId: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
}, "preferDotNotation", {
|
|
10
|
-
allowIndexSignaturePropertyAccess: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
-
}>;
|
|
12
|
-
export default _default;
|
|
13
|
-
//# sourceMappingURL=propertyAccessNotation.d.ts.map
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import { z } from "zod/v4";
|
|
5
|
-
//#region src/rules/propertyAccessNotation.ts
|
|
6
|
-
const javascriptReservedWords = new Set([
|
|
7
|
-
"await",
|
|
8
|
-
"break",
|
|
9
|
-
"case",
|
|
10
|
-
"catch",
|
|
11
|
-
"class",
|
|
12
|
-
"const",
|
|
13
|
-
"continue",
|
|
14
|
-
"debugger",
|
|
15
|
-
"default",
|
|
16
|
-
"delete",
|
|
17
|
-
"do",
|
|
18
|
-
"else",
|
|
19
|
-
"enum",
|
|
20
|
-
"export",
|
|
21
|
-
"extends",
|
|
22
|
-
"false",
|
|
23
|
-
"finally",
|
|
24
|
-
"for",
|
|
25
|
-
"function",
|
|
26
|
-
"if",
|
|
27
|
-
"implements",
|
|
28
|
-
"import",
|
|
29
|
-
"in",
|
|
30
|
-
"instanceof",
|
|
31
|
-
"interface",
|
|
32
|
-
"let",
|
|
33
|
-
"new",
|
|
34
|
-
"null",
|
|
35
|
-
"package",
|
|
36
|
-
"private",
|
|
37
|
-
"protected",
|
|
38
|
-
"public",
|
|
39
|
-
"return",
|
|
40
|
-
"static",
|
|
41
|
-
"super",
|
|
42
|
-
"switch",
|
|
43
|
-
"this",
|
|
44
|
-
"throw",
|
|
45
|
-
"true",
|
|
46
|
-
"try",
|
|
47
|
-
"typeof",
|
|
48
|
-
"var",
|
|
49
|
-
"void",
|
|
50
|
-
"while",
|
|
51
|
-
"with",
|
|
52
|
-
"yield"
|
|
53
|
-
]);
|
|
54
|
-
function getModifiers(node) {
|
|
55
|
-
return node && ts.canHaveModifiers(node) ? ts.getModifiers(node) : void 0;
|
|
56
|
-
}
|
|
57
|
-
function getPropertyKeyText(node) {
|
|
58
|
-
switch (node.argumentExpression.kind) {
|
|
59
|
-
case ts.SyntaxKind.FalseKeyword: return "false";
|
|
60
|
-
case ts.SyntaxKind.NullKeyword: return "null";
|
|
61
|
-
case ts.SyntaxKind.StringLiteral: return node.argumentExpression.text;
|
|
62
|
-
case ts.SyntaxKind.TrueKeyword: return "true";
|
|
63
|
-
default: return;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function keyCannotBeUsedWithDotNotation(key) {
|
|
67
|
-
return !/^[\p{L}_$][\p{L}\d_$]*$/u.test(key) || javascriptReservedWords.has(key);
|
|
68
|
-
}
|
|
69
|
-
var propertyAccessNotation_default = ruleCreator.createRule(typescriptLanguage, {
|
|
70
|
-
about: {
|
|
71
|
-
description: "Reports bracket notation property access when dot notation can be used.",
|
|
72
|
-
id: "propertyAccessNotation",
|
|
73
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
74
|
-
},
|
|
75
|
-
messages: { preferDotNotation: {
|
|
76
|
-
primary: "Prefer the cleaner dot notation instead of bracket notation for `{{ key }}`.",
|
|
77
|
-
secondary: ["Dot notation is more concise and easier to read.", "Bracket notation should only be used when the property name is not a valid identifier or is a reserved word."],
|
|
78
|
-
suggestions: ["Replace `[\"{{ key }}\"]` with `.{{ key }}`."]
|
|
79
|
-
} },
|
|
80
|
-
options: { allowIndexSignaturePropertyAccess: z.boolean().default(false).describe("Whether to allow accessing properties matching an index signature with bracket notation.") },
|
|
81
|
-
setup(context) {
|
|
82
|
-
function getKeyTypeInformation(node, typeChecker) {
|
|
83
|
-
const propertySymbol = typeChecker.getSymbolAtLocation(node.argumentExpression) ?? typeChecker.getTypeAtLocation(node.expression).getNonNullableType().getProperties().find((propertySymbol) => ts.isStringLiteral(node.argumentExpression) && propertySymbol.escapedName === node.argumentExpression.text);
|
|
84
|
-
const modifierKind = getModifiers(propertySymbol?.getDeclarations()?.[0])?.[0]?.kind;
|
|
85
|
-
return {
|
|
86
|
-
inaccessible: modifierKind === ts.SyntaxKind.PrivateKeyword || modifierKind === ts.SyntaxKind.ProtectedKeyword,
|
|
87
|
-
propertySymbol
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
return { visitors: { ElementAccessExpression: (node, { options, sourceFile, typeChecker }) => {
|
|
91
|
-
const key = getPropertyKeyText(node);
|
|
92
|
-
if (!key || keyCannotBeUsedWithDotNotation(key)) return;
|
|
93
|
-
const { inaccessible, propertySymbol } = getKeyTypeInformation(node, typeChecker);
|
|
94
|
-
if (inaccessible) return;
|
|
95
|
-
if (options.allowIndexSignaturePropertyAccess && !propertySymbol) {
|
|
96
|
-
const objectType = typeChecker.getTypeAtLocation(node.expression).getNonNullableType();
|
|
97
|
-
if (typeChecker.getIndexInfosOfType(objectType).some((info) => info.keyType.flags & ts.TypeFlags.StringLike)) return;
|
|
98
|
-
}
|
|
99
|
-
const objectText = node.expression.getText(sourceFile);
|
|
100
|
-
const dotOperator = node.questionDotToken !== void 0 ? "?." : ".";
|
|
101
|
-
context.report({
|
|
102
|
-
data: { key },
|
|
103
|
-
fix: {
|
|
104
|
-
range: getTSNodeRange(node, sourceFile),
|
|
105
|
-
text: `${objectText}${dotOperator}${key}`
|
|
106
|
-
},
|
|
107
|
-
message: "preferDotNotation",
|
|
108
|
-
range: {
|
|
109
|
-
begin: node.argumentExpression.getStart(sourceFile),
|
|
110
|
-
end: node.argumentExpression.getEnd()
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
} } };
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
//#endregion
|
|
117
|
-
export { propertyAccessNotation_default as default };
|
|
118
|
-
|
|
119
|
-
//# sourceMappingURL=propertyAccessNotation.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports function parameters that are only used in recursive calls.";
|
|
3
|
-
readonly id: "recursionOnlyArguments";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "onlyUsedInRecursion", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=recursionOnlyArguments.d.ts.map
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getFunctionName } from "./utils/getFunctionName.js";
|
|
3
|
-
import { getTSNodeRange, 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/recursionOnlyArguments.ts
|
|
7
|
-
function collectParameterReferences(parameterName, parameterNode, functionNode, functionBody) {
|
|
8
|
-
const references = [];
|
|
9
|
-
function collectNode(node) {
|
|
10
|
-
if (tsutils.isFunctionScopeBoundary(node) && node !== functionNode) return;
|
|
11
|
-
if (ts$1.isIdentifier(node) && node.text === parameterName && node !== parameterNode) references.push(node);
|
|
12
|
-
ts$1.forEachChild(node, collectNode);
|
|
13
|
-
}
|
|
14
|
-
ts$1.forEachChild(functionBody, collectNode);
|
|
15
|
-
return references;
|
|
16
|
-
}
|
|
17
|
-
function isParameterOnlyUsedInRecursion(parameter, parameterIndex, functionName, functionNode) {
|
|
18
|
-
if (!ts$1.isIdentifier(parameter.name) || !functionNode.body) return false;
|
|
19
|
-
const references = collectParameterReferences(parameter.name.text, parameter.name, functionNode, functionNode.body);
|
|
20
|
-
return references.length && references.every((reference) => isReferenceOnlyUsedInRecursion(reference, parameterIndex, functionName, functionNode));
|
|
21
|
-
}
|
|
22
|
-
function isRecursiveCall(callExpression, functionName, functionNode) {
|
|
23
|
-
const callee = callExpression.expression;
|
|
24
|
-
let calleeMatchesFunctionName = false;
|
|
25
|
-
if (ts$1.isIdentifier(callee)) calleeMatchesFunctionName = callee.text === functionName;
|
|
26
|
-
else if (ts$1.isPropertyAccessExpression(callee) && callee.expression.kind === ts$1.SyntaxKind.ThisKeyword && ts$1.isIdentifier(callee.name)) calleeMatchesFunctionName = callee.name.text === functionName;
|
|
27
|
-
if (!calleeMatchesFunctionName) return false;
|
|
28
|
-
for (let current = callExpression.parent; current; current = current.parent) {
|
|
29
|
-
if (current === functionNode) return true;
|
|
30
|
-
if (tsutils.isFunctionScopeBoundary(current)) return false;
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
function isReferenceOnlyUsedInRecursion(reference, parameterIndex, functionName, functionNode) {
|
|
35
|
-
const parent = reference.parent;
|
|
36
|
-
if (!ts$1.isCallExpression(parent)) return false;
|
|
37
|
-
if (!isRecursiveCall(parent, functionName, functionNode)) return false;
|
|
38
|
-
return parent.arguments.findIndex((argument) => argument === reference) === parameterIndex;
|
|
39
|
-
}
|
|
40
|
-
var recursionOnlyArguments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
41
|
-
about: {
|
|
42
|
-
description: "Reports function parameters that are only used in recursive calls.",
|
|
43
|
-
id: "recursionOnlyArguments",
|
|
44
|
-
presets: ["logical", "logicalStrict"]
|
|
45
|
-
},
|
|
46
|
-
messages: { onlyUsedInRecursion: {
|
|
47
|
-
primary: "This parameter is only used in recursive calls.",
|
|
48
|
-
secondary: ["Parameters that are only passed through to recursive calls serve no functional purpose.", "This increases cognitive complexity and may impact performance."],
|
|
49
|
-
suggestions: ["Remove the parameter if it's not needed.", "Use the parameter in the function body for some computation."]
|
|
50
|
-
} },
|
|
51
|
-
setup(context) {
|
|
52
|
-
function checkFunction(node, { sourceFile }) {
|
|
53
|
-
const functionName = getFunctionName(node);
|
|
54
|
-
if (!functionName || !node.body) return;
|
|
55
|
-
for (const [parameterIndex, parameter] of node.parameters.entries()) if (isParameterOnlyUsedInRecursion(parameter, parameterIndex, functionName, node)) context.report({
|
|
56
|
-
message: "onlyUsedInRecursion",
|
|
57
|
-
range: getTSNodeRange(parameter.name, sourceFile)
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
return { visitors: {
|
|
61
|
-
ArrowFunction: checkFunction,
|
|
62
|
-
FunctionDeclaration: checkFunction,
|
|
63
|
-
FunctionExpression: checkFunction,
|
|
64
|
-
MethodDeclaration: checkFunction
|
|
65
|
-
} };
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
//#endregion
|
|
69
|
-
export { recursionOnlyArguments_default as default };
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=recursionOnlyArguments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports union and intersection type constituents that are redundant or override other types.";
|
|
3
|
-
readonly id: "redundantTypeConstituents";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "errorTypeOverrides" | "literalOverridden" | "overridden" | "overrides" | "primitiveOverridden", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=redundantTypeConstituents.d.ts.map
|