@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,45 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/duplicateArguments.ts
|
|
5
|
-
var duplicateArguments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports functions with duplicate parameter names in their signatures.",
|
|
8
|
-
id: "duplicateArguments",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { duplicateParam: {
|
|
12
|
-
primary: "This parameter overrides the previous parameter of the same name.",
|
|
13
|
-
secondary: [
|
|
14
|
-
"Duplicate parameter names in functions can lead to unexpected behavior and make code harder to understand.",
|
|
15
|
-
"In strict mode, duplicate parameter names are a syntax error.",
|
|
16
|
-
"Even in non-strict mode, only the last parameter with a given name is accessible."
|
|
17
|
-
],
|
|
18
|
-
suggestions: ["Rename one of the duplicate parameters to a unique name."]
|
|
19
|
-
} },
|
|
20
|
-
setup(context) {
|
|
21
|
-
function checkNode({ parameters }, { sourceFile }) {
|
|
22
|
-
const seenNames = /* @__PURE__ */ new Set();
|
|
23
|
-
for (const parameter of parameters) {
|
|
24
|
-
if (parameter.name.kind !== SyntaxKind.Identifier) continue;
|
|
25
|
-
const parameterName = parameter.name.text;
|
|
26
|
-
if (seenNames.has(parameterName)) context.report({
|
|
27
|
-
message: "duplicateParam",
|
|
28
|
-
range: getTSNodeRange(parameter.name, sourceFile)
|
|
29
|
-
});
|
|
30
|
-
else seenNames.add(parameterName);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return { visitors: {
|
|
34
|
-
ArrowFunction: checkNode,
|
|
35
|
-
Constructor: checkNode,
|
|
36
|
-
FunctionDeclaration: checkNode,
|
|
37
|
-
FunctionExpression: checkNode,
|
|
38
|
-
MethodDeclaration: checkNode
|
|
39
|
-
} };
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
//#endregion
|
|
43
|
-
export { duplicateArguments_default as default };
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=duplicateArguments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Disallow using the delete operator on computed key expressions.";
|
|
3
|
-
readonly id: "dynamicDeletes";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "dynamicDelete", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=dynamicDeletes.d.ts.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind, isElementAccessExpression, isNumericLiteral, isPrefixUnaryExpression, isStringLiteral } from "typescript";
|
|
4
|
-
//#region src/rules/dynamicDeletes.ts
|
|
5
|
-
function isAcceptableIndexExpression(property) {
|
|
6
|
-
return isStringLiteral(property) || isNumericLiteral(property) || isPrefixUnaryExpression(property) && property.operator === SyntaxKind.MinusToken && isNumericLiteral(property.operand);
|
|
7
|
-
}
|
|
8
|
-
var dynamicDeletes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
9
|
-
about: {
|
|
10
|
-
description: "Disallow using the delete operator on computed key expressions.",
|
|
11
|
-
id: "dynamicDeletes",
|
|
12
|
-
presets: ["logical", "logicalStrict"]
|
|
13
|
-
},
|
|
14
|
-
messages: { dynamicDelete: {
|
|
15
|
-
primary: "Using the `delete` operator on a computed key can be dangerous and is often not well optimized.",
|
|
16
|
-
secondary: ["In modern code, JavaScript objects are generally intended to be optimized as static shapes by engines.", "Consider using a `Map` or `Set` if you need to dynamically add and remove keys."],
|
|
17
|
-
suggestions: ["Use a `Map` or `Set` instead of an object for dynamic keys."]
|
|
18
|
-
} },
|
|
19
|
-
setup(context) {
|
|
20
|
-
return { visitors: { DeleteExpression: (node, { sourceFile }) => {
|
|
21
|
-
const argument = node.expression;
|
|
22
|
-
if (!isElementAccessExpression(argument) || isAcceptableIndexExpression(argument.argumentExpression)) return;
|
|
23
|
-
const property = argument.argumentExpression;
|
|
24
|
-
context.report({
|
|
25
|
-
message: "dynamicDelete",
|
|
26
|
-
range: {
|
|
27
|
-
begin: property.getStart(sourceFile),
|
|
28
|
-
end: property.getEnd()
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
} } };
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
//#endregion
|
|
35
|
-
export { dynamicDeletes_default as default };
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=dynamicDeletes.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports duplicate conditions in if-else-if chains that make code unreachable.";
|
|
3
|
-
readonly id: "elseIfDuplicates";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "duplicateCondition", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=elseIfDuplicates.d.ts.map
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/elseIfDuplicates.ts
|
|
5
|
-
var elseIfDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports duplicate conditions in if-else-if chains that make code unreachable.",
|
|
8
|
-
id: "elseIfDuplicates",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { duplicateCondition: {
|
|
12
|
-
primary: "This condition is identical to a previous condition in the if-else-if chain.",
|
|
13
|
-
secondary: ["When an if-else-if chain has duplicate conditions, the duplicate branch will never execute because the earlier identical condition will always be evaluated first.", "This typically indicates a copy-paste error or logic mistake."],
|
|
14
|
-
suggestions: ["Verify the condition logic is correct and update to check for the intended condition."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function checkIfStatement(node, sourceFile) {
|
|
18
|
-
const seen = [];
|
|
19
|
-
let current = node;
|
|
20
|
-
while (true) {
|
|
21
|
-
if (seen.some((previous) => hasSameTokens(previous, current.expression, sourceFile))) context.report({
|
|
22
|
-
message: "duplicateCondition",
|
|
23
|
-
range: getTSNodeRange(current.expression, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
if (current.elseStatement?.kind !== SyntaxKind.IfStatement) break;
|
|
26
|
-
seen.push(current.expression);
|
|
27
|
-
current = current.elseStatement;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return { visitors: { IfStatement: (node, { sourceFile }) => {
|
|
31
|
-
if (node.parent.kind !== SyntaxKind.IfStatement || node.parent.elseStatement !== node) checkIfStatement(node, sourceFile);
|
|
32
|
-
} } };
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
//#endregion
|
|
36
|
-
export { elseIfDuplicates_default as default };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=elseIfDuplicates.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports unnecessary `else` blocks following `if` statements that always return or throw.";
|
|
3
|
-
readonly id: "elseReturns";
|
|
4
|
-
readonly presets: readonly ["stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "unnecessaryElse", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=elseReturns.d.ts.map
|
package/lib/rules/elseReturns.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/elseReturns.ts
|
|
5
|
-
function alwaysTerminates(node) {
|
|
6
|
-
switch (node.kind) {
|
|
7
|
-
case SyntaxKind.Block: return node.statements.some((statement) => isTerminatingStatement(statement.kind) || hasNestedIfThatTerminates(statement));
|
|
8
|
-
case SyntaxKind.ReturnStatement:
|
|
9
|
-
case SyntaxKind.ThrowStatement: return true;
|
|
10
|
-
default: return hasNestedIfThatTerminates(node);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function findElseKeyword(node, sourceFile) {
|
|
14
|
-
return node.getChildren(sourceFile).find((child) => child.kind === SyntaxKind.ElseKeyword);
|
|
15
|
-
}
|
|
16
|
-
function hasNestedIfThatTerminates(node) {
|
|
17
|
-
return node.kind === SyntaxKind.IfStatement && node.elseStatement !== void 0 && naiveTerminates(node.thenStatement) && naiveTerminates(node.elseStatement);
|
|
18
|
-
}
|
|
19
|
-
function isInStatementListContext(node) {
|
|
20
|
-
return node.parent.kind === SyntaxKind.Block || node.parent.kind === SyntaxKind.SourceFile || node.parent.kind === SyntaxKind.ModuleBlock || node.parent.kind === SyntaxKind.CaseClause || node.parent.kind === SyntaxKind.DefaultClause;
|
|
21
|
-
}
|
|
22
|
-
function isTerminatingStatement(kind) {
|
|
23
|
-
return kind === SyntaxKind.ReturnStatement || kind === SyntaxKind.ThrowStatement;
|
|
24
|
-
}
|
|
25
|
-
function naiveTerminates(node) {
|
|
26
|
-
if (node.kind !== SyntaxKind.Block) return isTerminatingStatement(node.kind);
|
|
27
|
-
const lastStatement = node.statements.at(-1);
|
|
28
|
-
if (!lastStatement) return false;
|
|
29
|
-
return isTerminatingStatement(lastStatement.kind) || hasNestedIfThatTerminates(lastStatement);
|
|
30
|
-
}
|
|
31
|
-
var elseReturns_default = ruleCreator.createRule(typescriptLanguage, {
|
|
32
|
-
about: {
|
|
33
|
-
description: "Reports unnecessary `else` blocks following `if` statements that always return or throw.",
|
|
34
|
-
id: "elseReturns",
|
|
35
|
-
presets: ["stylisticStrict"]
|
|
36
|
-
},
|
|
37
|
-
messages: { unnecessaryElse: {
|
|
38
|
-
primary: "This `else` clause is unnecessary after a terminating statement.",
|
|
39
|
-
secondary: ["When an `if` block always returns or throws, the `else` block is redundant because the code after the `if` statement will only execute when the condition is false."],
|
|
40
|
-
suggestions: ["Remove the `else` keyword and un-indent the contents of the `else` block."]
|
|
41
|
-
} },
|
|
42
|
-
setup(context) {
|
|
43
|
-
return { visitors: { IfStatement: (node, { sourceFile }) => {
|
|
44
|
-
if (!isInStatementListContext(node) || !node.elseStatement) return;
|
|
45
|
-
const thenBranches = [];
|
|
46
|
-
let lastIfNode = node;
|
|
47
|
-
let currentNode = node;
|
|
48
|
-
while (currentNode.kind === SyntaxKind.IfStatement) {
|
|
49
|
-
if (!currentNode.elseStatement) return;
|
|
50
|
-
thenBranches.push(currentNode.thenStatement);
|
|
51
|
-
lastIfNode = currentNode;
|
|
52
|
-
currentNode = currentNode.elseStatement;
|
|
53
|
-
}
|
|
54
|
-
if (!thenBranches.every(alwaysTerminates)) return;
|
|
55
|
-
const elseKeyword = findElseKeyword(lastIfNode, sourceFile);
|
|
56
|
-
if (!elseKeyword) return;
|
|
57
|
-
context.report({
|
|
58
|
-
message: "unnecessaryElse",
|
|
59
|
-
range: getTSNodeRange(elseKeyword, sourceFile)
|
|
60
|
-
});
|
|
61
|
-
} } };
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
//#endregion
|
|
65
|
-
export { elseReturns_default as default };
|
|
66
|
-
|
|
67
|
-
//# sourceMappingURL=elseReturns.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty block statements that should contain code.";
|
|
3
|
-
readonly id: "emptyBlocks";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyBlock", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyBlocks.d.ts.map
|
package/lib/rules/emptyBlocks.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/emptyBlocks.ts
|
|
5
|
-
const allowedParents = new Set([
|
|
6
|
-
SyntaxKind.ArrowFunction,
|
|
7
|
-
SyntaxKind.CatchClause,
|
|
8
|
-
SyntaxKind.Constructor,
|
|
9
|
-
SyntaxKind.FunctionDeclaration,
|
|
10
|
-
SyntaxKind.FunctionExpression,
|
|
11
|
-
SyntaxKind.GetAccessor,
|
|
12
|
-
SyntaxKind.MethodDeclaration,
|
|
13
|
-
SyntaxKind.SetAccessor
|
|
14
|
-
]);
|
|
15
|
-
var emptyBlocks_default = ruleCreator.createRule(typescriptLanguage, {
|
|
16
|
-
about: {
|
|
17
|
-
description: "Reports empty block statements that should contain code.",
|
|
18
|
-
id: "emptyBlocks",
|
|
19
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
20
|
-
},
|
|
21
|
-
messages: { emptyBlock: {
|
|
22
|
-
primary: "Empty block statements should be removed or contain code.",
|
|
23
|
-
secondary: ["Empty blocks can indicate incomplete code or areas where logic was removed but the block structure was left behind.", "They can also reduce code readability by cluttering the codebase with unnecessary braces."],
|
|
24
|
-
suggestions: ["Add a comment explaining why the block is intentionally empty, or remove the empty block entirely."]
|
|
25
|
-
} },
|
|
26
|
-
setup(context) {
|
|
27
|
-
function hasComments(block, sourceFile) {
|
|
28
|
-
const fullText = sourceFile.getFullText();
|
|
29
|
-
const openBrace = block.getStart(sourceFile);
|
|
30
|
-
const closeBrace = block.getEnd();
|
|
31
|
-
const innerText = fullText.substring(openBrace + 1, closeBrace - 1);
|
|
32
|
-
return /\S+/.test(innerText.trim());
|
|
33
|
-
}
|
|
34
|
-
function isEmptyBlock(block, sourceFile) {
|
|
35
|
-
return !block.statements.length && !hasComments(block, sourceFile);
|
|
36
|
-
}
|
|
37
|
-
return { visitors: {
|
|
38
|
-
Block: (node, { sourceFile }) => {
|
|
39
|
-
if (!allowedParents.has(node.parent.kind) && isEmptyBlock(node, sourceFile)) context.report({
|
|
40
|
-
message: "emptyBlock",
|
|
41
|
-
range: getTSNodeRange(node, sourceFile)
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
CaseBlock: (node, { sourceFile }) => {
|
|
45
|
-
if (!node.clauses.length) context.report({
|
|
46
|
-
message: "emptyBlock",
|
|
47
|
-
range: getTSNodeRange(node, sourceFile)
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
} };
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
//#endregion
|
|
54
|
-
export { emptyBlocks_default as default };
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=emptyBlocks.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using empty destructuring patterns that destructure no values.";
|
|
3
|
-
readonly id: "emptyDestructures";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyPattern", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyDestructures.d.ts.map
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/emptyDestructures.ts
|
|
4
|
-
var emptyDestructures_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports using empty destructuring patterns that destructure no values.",
|
|
7
|
-
id: "emptyDestructures",
|
|
8
|
-
presets: ["logical", "logicalStrict"]
|
|
9
|
-
},
|
|
10
|
-
messages: { emptyPattern: {
|
|
11
|
-
primary: "Destructuring patterns that don't extract at least one value are unnecessary.",
|
|
12
|
-
secondary: ["Empty destructuring patterns like `{}` or `[]` don't extract any values and serve no practical purpose.", "These patterns are likely mistakes or leftover code from refactoring."],
|
|
13
|
-
suggestions: ["Remove the empty destructuring pattern if it's not needed.", "Add bindings to extract values if you intended to destructure specific properties."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
function checkBindingPattern(node, { sourceFile }) {
|
|
17
|
-
if (!node.elements.length) context.report({
|
|
18
|
-
message: "emptyPattern",
|
|
19
|
-
range: {
|
|
20
|
-
begin: node.getStart(sourceFile),
|
|
21
|
-
end: node.getEnd()
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return { visitors: {
|
|
26
|
-
ArrayBindingPattern: checkBindingPattern,
|
|
27
|
-
ObjectBindingPattern: checkBindingPattern
|
|
28
|
-
} };
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
//#endregion
|
|
32
|
-
export { emptyDestructures_default as default };
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=emptyDestructures.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty enum declarations with no members.";
|
|
3
|
-
readonly id: "emptyEnums";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyEnum", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyEnums.d.ts.map
|
package/lib/rules/emptyEnums.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/emptyEnums.ts
|
|
4
|
-
var emptyEnums_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports empty enum declarations with no members.",
|
|
7
|
-
id: "emptyEnums",
|
|
8
|
-
presets: ["logical"]
|
|
9
|
-
},
|
|
10
|
-
messages: { emptyEnum: {
|
|
11
|
-
primary: "Empty enums serve no purpose.",
|
|
12
|
-
secondary: ["An enum with no members cannot be used to represent any values.", "Empty enums are typically the result of incomplete implementation or mistaken deletion."],
|
|
13
|
-
suggestions: ["Add members to the enum to define valid values.", "Remove the empty enum if it is no longer needed."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { EnumDeclaration: (node, { sourceFile }) => {
|
|
17
|
-
if (!node.members.length) context.report({
|
|
18
|
-
message: "emptyEnum",
|
|
19
|
-
range: {
|
|
20
|
-
begin: node.getStart(sourceFile),
|
|
21
|
-
end: node.name.getEnd()
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
} } };
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
//#endregion
|
|
28
|
-
export { emptyEnums_default as default };
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=emptyEnums.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty export statements that don't make a file a module.";
|
|
3
|
-
readonly id: "emptyExports";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "uselessExport", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyExports.d.ts.map
|
|
@@ -1,60 +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/emptyExports.ts
|
|
5
|
-
const moduleIndicatorKinds = new Set([
|
|
6
|
-
SyntaxKind.ExportAssignment,
|
|
7
|
-
SyntaxKind.ExportDeclaration,
|
|
8
|
-
SyntaxKind.ImportDeclaration,
|
|
9
|
-
SyntaxKind.ImportEqualsDeclaration
|
|
10
|
-
]);
|
|
11
|
-
function hasExportModifier(node) {
|
|
12
|
-
return !!(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === SyntaxKind.ExportKeyword));
|
|
13
|
-
}
|
|
14
|
-
function hasOtherModuleIndicator(statements) {
|
|
15
|
-
return statements.some((statement) => hasExportModifier(statement) || moduleIndicatorKinds.has(statement.kind) && !isEmptyNamedExport(statement));
|
|
16
|
-
}
|
|
17
|
-
function isEmptyNamedExport(node) {
|
|
18
|
-
return node.kind === SyntaxKind.ExportDeclaration && !node.moduleSpecifier && node.exportClause?.kind === SyntaxKind.NamedExports && !node.exportClause.elements.length;
|
|
19
|
-
}
|
|
20
|
-
var emptyExports_default = ruleCreator.createRule(typescriptLanguage, {
|
|
21
|
-
about: {
|
|
22
|
-
description: "Reports empty export statements that don't make a file a module.",
|
|
23
|
-
id: "emptyExports",
|
|
24
|
-
presets: ["logical", "logicalStrict"]
|
|
25
|
-
},
|
|
26
|
-
messages: { uselessExport: {
|
|
27
|
-
primary: "Empty export does nothing and can be removed.",
|
|
28
|
-
secondary: ["An empty `export {}` statement is only useful when a file has no other imports or exports.", "When a file already has imports or exports, the empty export is redundant."],
|
|
29
|
-
suggestions: ["Remove the empty export statement."]
|
|
30
|
-
} },
|
|
31
|
-
setup(context) {
|
|
32
|
-
function checkStatements(statements, sourceFile) {
|
|
33
|
-
if (!hasOtherModuleIndicator(statements)) return;
|
|
34
|
-
for (const statement of statements) {
|
|
35
|
-
if (!isEmptyNamedExport(statement)) continue;
|
|
36
|
-
const range = getTSNodeRange(statement, sourceFile);
|
|
37
|
-
context.report({
|
|
38
|
-
fix: {
|
|
39
|
-
range,
|
|
40
|
-
text: ""
|
|
41
|
-
},
|
|
42
|
-
message: "uselessExport",
|
|
43
|
-
range
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return { visitors: {
|
|
48
|
-
ModuleBlock: (node, { sourceFile }) => {
|
|
49
|
-
checkStatements(node.statements, sourceFile);
|
|
50
|
-
},
|
|
51
|
-
SourceFile: (node, { sourceFile }) => {
|
|
52
|
-
if (!sourceFile.fileName.endsWith(".d.ts")) checkStatements(node.statements, sourceFile);
|
|
53
|
-
}
|
|
54
|
-
} };
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
//#endregion
|
|
58
|
-
export { emptyExports_default as default };
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=emptyExports.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports files that contain no meaningful code.";
|
|
3
|
-
readonly id: "emptyFiles";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyFile", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyFiles.d.ts.map
|
package/lib/rules/emptyFiles.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/emptyFiles.ts
|
|
5
|
-
function isDirective(statement) {
|
|
6
|
-
return statement.kind === SyntaxKind.ExpressionStatement && statement.expression.kind === SyntaxKind.StringLiteral && /^use \w+$/.test(statement.expression.text);
|
|
7
|
-
}
|
|
8
|
-
function isEmptyStatement(statement) {
|
|
9
|
-
switch (statement.kind) {
|
|
10
|
-
case SyntaxKind.Block: return !statement.statements.length;
|
|
11
|
-
case SyntaxKind.EmptyStatement: return true;
|
|
12
|
-
default: return false;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function isMeaningfulStatement(statement) {
|
|
16
|
-
return !isEmptyStatement(statement) && !isDirective(statement);
|
|
17
|
-
}
|
|
18
|
-
var emptyFiles_default = ruleCreator.createRule(typescriptLanguage, {
|
|
19
|
-
about: {
|
|
20
|
-
description: "Reports files that contain no meaningful code.",
|
|
21
|
-
id: "emptyFiles",
|
|
22
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
23
|
-
},
|
|
24
|
-
messages: { emptyFile: {
|
|
25
|
-
primary: "This file contains no meaningful code.",
|
|
26
|
-
secondary: ["Empty files clutter the codebase and often serve no purpose.", "Files containing only whitespace, comments, directives, or empty statements are considered empty."],
|
|
27
|
-
suggestions: ["Add meaningful code to the file.", "Delete the file if it's no longer needed."]
|
|
28
|
-
} },
|
|
29
|
-
setup(context) {
|
|
30
|
-
return { visitors: { SourceFile: (sourceFile) => {
|
|
31
|
-
if (!sourceFile.isDeclarationFile && !sourceFile.statements.some(isMeaningfulStatement)) context.report({
|
|
32
|
-
message: "emptyFile",
|
|
33
|
-
range: {
|
|
34
|
-
begin: 0,
|
|
35
|
-
end: 0
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
} } };
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
//#endregion
|
|
42
|
-
export { emptyFiles_default as default };
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=emptyFiles.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty functions that should contain code or a comment.";
|
|
3
|
-
readonly id: "emptyFunctions";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyFunction", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyFunctions.d.ts.map
|
|
@@ -1,61 +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/emptyFunctions.ts
|
|
5
|
-
function hasComments(block, sourceFile) {
|
|
6
|
-
const fullText = sourceFile.getFullText();
|
|
7
|
-
const openBrace = block.getStart(sourceFile);
|
|
8
|
-
const closeBrace = block.getEnd();
|
|
9
|
-
const innerText = fullText.substring(openBrace + 1, closeBrace - 1);
|
|
10
|
-
return /\S+/.test(innerText.trim());
|
|
11
|
-
}
|
|
12
|
-
function isEmptyBlock(block, sourceFile) {
|
|
13
|
-
return !block.statements.length && !hasComments(block, sourceFile);
|
|
14
|
-
}
|
|
15
|
-
var emptyFunctions_default = ruleCreator.createRule(typescriptLanguage, {
|
|
16
|
-
about: {
|
|
17
|
-
description: "Reports empty functions that should contain code or a comment.",
|
|
18
|
-
id: "emptyFunctions",
|
|
19
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
20
|
-
},
|
|
21
|
-
messages: { emptyFunction: {
|
|
22
|
-
primary: "Empty functions should contain code or a comment explaining why they are empty.",
|
|
23
|
-
secondary: ["Empty functions can reduce readability because readers need to guess whether it's intentional or not.", "Adding a comment makes the intention clear."],
|
|
24
|
-
suggestions: ["Add a comment explaining why the function is intentionally empty.", "Add to the function body."]
|
|
25
|
-
} },
|
|
26
|
-
setup(context) {
|
|
27
|
-
function checkFunctionBody(node, body, sourceFile) {
|
|
28
|
-
if (body && isEmptyBlock(body, sourceFile)) context.report({
|
|
29
|
-
message: "emptyFunction",
|
|
30
|
-
range: getTSNodeRange(node, sourceFile)
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return { visitors: {
|
|
34
|
-
ArrowFunction: (node, { sourceFile }) => {
|
|
35
|
-
if (node.body.kind === SyntaxKind.Block) checkFunctionBody(node, node.body, sourceFile);
|
|
36
|
-
},
|
|
37
|
-
Constructor: (node, { sourceFile }) => {
|
|
38
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
39
|
-
},
|
|
40
|
-
FunctionDeclaration: (node, { sourceFile }) => {
|
|
41
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
42
|
-
},
|
|
43
|
-
FunctionExpression: (node, { sourceFile }) => {
|
|
44
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
45
|
-
},
|
|
46
|
-
GetAccessor: (node, { sourceFile }) => {
|
|
47
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
48
|
-
},
|
|
49
|
-
MethodDeclaration: (node, { sourceFile }) => {
|
|
50
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
51
|
-
},
|
|
52
|
-
SetAccessor: (node, { sourceFile }) => {
|
|
53
|
-
checkFunctionBody(node, node.body, sourceFile);
|
|
54
|
-
}
|
|
55
|
-
} };
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
//#endregion
|
|
59
|
-
export { emptyFunctions_default as default };
|
|
60
|
-
|
|
61
|
-
//# sourceMappingURL=emptyFunctions.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty import/export attributes that serve no purpose.";
|
|
3
|
-
readonly id: "emptyModuleAttributes";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyAttributes", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyModuleAttributes.d.ts.map
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/emptyModuleAttributes.ts
|
|
4
|
-
var emptyModuleAttributes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports empty import/export attributes that serve no purpose.",
|
|
7
|
-
id: "emptyModuleAttributes",
|
|
8
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
9
|
-
},
|
|
10
|
-
messages: { emptyAttributes: {
|
|
11
|
-
primary: "Empty import attributes serve no purpose and should be removed.",
|
|
12
|
-
secondary: ["An empty `with {}` or `assert {}` clause provides no additional information about the import.", "Remove the empty attributes clause or add the intended attributes."],
|
|
13
|
-
suggestions: ["Remove the empty attributes clause."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
function checkNode({ attributes }, { sourceFile }) {
|
|
17
|
-
if (attributes && !attributes.elements.length) context.report({
|
|
18
|
-
fix: {
|
|
19
|
-
range: getTSNodeRange(attributes, sourceFile),
|
|
20
|
-
text: ""
|
|
21
|
-
},
|
|
22
|
-
message: "emptyAttributes",
|
|
23
|
-
range: getTSNodeRange(attributes, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return { visitors: {
|
|
27
|
-
ExportDeclaration: checkNode,
|
|
28
|
-
ImportDeclaration: checkNode
|
|
29
|
-
} };
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
//#endregion
|
|
33
|
-
export { emptyModuleAttributes_default as default };
|
|
34
|
-
|
|
35
|
-
//# sourceMappingURL=emptyModuleAttributes.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty object type literals and empty interfaces that are often used incorrectly.";
|
|
3
|
-
readonly id: "emptyObjectTypes";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyInterface" | "emptyObjectType", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=emptyObjectTypes.d.ts.map
|