@flint.fyi/ts 0.21.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} +1 -1
- package/dist/index.mjs +22467 -0
- package/package.json +8 -7
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/plugin.js +0 -619
- package/lib/rules/accessorPairGroups.d.ts +0 -9
- package/lib/rules/accessorPairGroups.js +0 -46
- package/lib/rules/accessorPairTypes.d.ts +0 -9
- package/lib/rules/accessorPairTypes.js +0 -70
- package/lib/rules/accessorThisRecursion.d.ts +0 -9
- package/lib/rules/accessorThisRecursion.js +0 -63
- package/lib/rules/anyArguments.d.ts +0 -9
- package/lib/rules/anyArguments.js +0 -232
- package/lib/rules/anyAssignments.d.ts +0 -9
- package/lib/rules/anyAssignments.js +0 -263
- package/lib/rules/anyCalls.d.ts +0 -9
- package/lib/rules/anyCalls.js +0 -66
- package/lib/rules/anyMemberAccess.d.ts +0 -9
- package/lib/rules/anyMemberAccess.js +0 -83
- package/lib/rules/anyReturns.d.ts +0 -9
- package/lib/rules/anyReturns.js +0 -100
- package/lib/rules/arguments.d.ts +0 -9
- package/lib/rules/arguments.js +0 -36
- package/lib/rules/arrayCallbackReturns.d.ts +0 -9
- package/lib/rules/arrayCallbackReturns.js +0 -71
- package/lib/rules/arrayConstructors.d.ts +0 -9
- package/lib/rules/arrayConstructors.js +0 -45
- package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
- package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
- package/lib/rules/arrayElementDeletions.d.ts +0 -9
- package/lib/rules/arrayElementDeletions.js +0 -41
- package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
- package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
- package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
- package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
- package/lib/rules/arrayFilteredFinds.d.ts +0 -9
- package/lib/rules/arrayFilteredFinds.js +0 -72
- package/lib/rules/arrayFinds.d.ts +0 -9
- package/lib/rules/arrayFinds.js +0 -39
- package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
- package/lib/rules/arrayFlatMapMethods.js +0 -45
- package/lib/rules/arrayFlatMethods.d.ts +0 -9
- package/lib/rules/arrayFlatMethods.js +0 -81
- package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
- package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
- package/lib/rules/arrayIncludes.d.ts +0 -9
- package/lib/rules/arrayIncludes.js +0 -51
- package/lib/rules/arrayIncludesMethods.d.ts +0 -9
- package/lib/rules/arrayIncludesMethods.js +0 -35
- package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
- package/lib/rules/arrayIndexOfMethods.js +0 -49
- package/lib/rules/arrayLoops.d.ts +0 -9
- package/lib/rules/arrayLoops.js +0 -34
- package/lib/rules/arrayMapIdentities.d.ts +0 -9
- package/lib/rules/arrayMapIdentities.js +0 -72
- package/lib/rules/arrayMutableReverses.d.ts +0 -9
- package/lib/rules/arrayMutableReverses.js +0 -37
- package/lib/rules/arrayMutableSorts.d.ts +0 -9
- package/lib/rules/arrayMutableSorts.js +0 -70
- package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
- package/lib/rules/arrayReduceTypeArguments.js +0 -62
- package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
- package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
- package/lib/rules/arraySomeMethods.d.ts +0 -9
- package/lib/rules/arraySomeMethods.js +0 -75
- package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
- package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
- package/lib/rules/arrayTypes.d.ts +0 -16
- package/lib/rules/arrayTypes.js +0 -109
- package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
- package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
- package/lib/rules/asConstAssertions.d.ts +0 -9
- package/lib/rules/asConstAssertions.js +0 -55
- package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
- package/lib/rules/assignmentOperatorShorthands.js +0 -45
- package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
- package/lib/rules/asyncFunctionAwaits.js +0 -53
- package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
- package/lib/rules/asyncPromiseExecutors.js +0 -39
- package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
- package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
- package/lib/rules/atAccesses.d.ts +0 -9
- package/lib/rules/atAccesses.js +0 -50
- package/lib/rules/builtinCoercions.d.ts +0 -9
- package/lib/rules/builtinCoercions.js +0 -115
- package/lib/rules/builtinConstructorNews.d.ts +0 -9
- package/lib/rules/builtinConstructorNews.js +0 -87
- package/lib/rules/caseDeclarations.d.ts +0 -9
- package/lib/rules/caseDeclarations.js +0 -38
- package/lib/rules/caseDuplicates.d.ts +0 -9
- package/lib/rules/caseDuplicates.js +0 -34
- package/lib/rules/caseFallthroughs.d.ts +0 -9
- package/lib/rules/caseFallthroughs.js +0 -74
- package/lib/rules/catchCallbackTypes.d.ts +0 -9
- package/lib/rules/catchCallbackTypes.js +0 -65
- package/lib/rules/caughtVariableNames.d.ts +0 -9
- package/lib/rules/caughtVariableNames.js +0 -38
- package/lib/rules/chainedAssignments.d.ts +0 -9
- package/lib/rules/chainedAssignments.js +0 -31
- package/lib/rules/charAtComparisons.d.ts +0 -9
- package/lib/rules/charAtComparisons.js +0 -53
- package/lib/rules/classAssignments.d.ts +0 -9
- package/lib/rules/classAssignments.js +0 -27
- package/lib/rules/classFieldDeclarations.d.ts +0 -9
- package/lib/rules/classFieldDeclarations.js +0 -38
- package/lib/rules/classLiteralProperties.d.ts +0 -9
- package/lib/rules/classLiteralProperties.js +0 -43
- package/lib/rules/classMemberDuplicates.d.ts +0 -9
- package/lib/rules/classMemberDuplicates.js +0 -69
- package/lib/rules/classMethodsThis.d.ts +0 -13
- package/lib/rules/classMethodsThis.js +0 -122
- package/lib/rules/combinedPushes.d.ts +0 -9
- package/lib/rules/combinedPushes.js +0 -54
- package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
- package/lib/rules/consecutiveNonNullAssertions.js +0 -37
- package/lib/rules/consoleCalls.d.ts +0 -8
- package/lib/rules/consoleCalls.js +0 -26
- package/lib/rules/constantAssignments.d.ts +0 -9
- package/lib/rules/constantAssignments.js +0 -39
- package/lib/rules/constructorGenericCalls.d.ts +0 -15
- package/lib/rules/constructorGenericCalls.js +0 -136
- package/lib/rules/constructorReturns.d.ts +0 -9
- package/lib/rules/constructorReturns.js +0 -39
- package/lib/rules/constructorSupers.d.ts +0 -9
- package/lib/rules/constructorSupers.js +0 -75
- package/lib/rules/dateConstructorClones.d.ts +0 -9
- package/lib/rules/dateConstructorClones.js +0 -35
- package/lib/rules/dateNowTimestamps.d.ts +0 -9
- package/lib/rules/dateNowTimestamps.js +0 -55
- package/lib/rules/debuggerStatements.d.ts +0 -9
- package/lib/rules/debuggerStatements.js +0 -31
- package/lib/rules/defaultCaseLast.d.ts +0 -9
- package/lib/rules/defaultCaseLast.js +0 -34
- package/lib/rules/defaultParameterLast.d.ts +0 -9
- package/lib/rules/defaultParameterLast.js +0 -40
- package/lib/rules/deprecated.d.ts +0 -9
- package/lib/rules/deprecated.js +0 -241
- package/lib/rules/destructuringConsistency.d.ts +0 -9
- package/lib/rules/destructuringConsistency.js +0 -104
- package/lib/rules/duplicateArguments.d.ts +0 -9
- package/lib/rules/duplicateArguments.js +0 -43
- package/lib/rules/dynamicDeletes.d.ts +0 -9
- package/lib/rules/dynamicDeletes.js +0 -35
- package/lib/rules/elseIfDuplicates.d.ts +0 -9
- package/lib/rules/elseIfDuplicates.js +0 -36
- package/lib/rules/elseReturns.d.ts +0 -9
- package/lib/rules/elseReturns.js +0 -65
- package/lib/rules/emptyBlocks.d.ts +0 -9
- package/lib/rules/emptyBlocks.js +0 -54
- package/lib/rules/emptyDestructures.d.ts +0 -9
- package/lib/rules/emptyDestructures.js +0 -32
- package/lib/rules/emptyEnums.d.ts +0 -9
- package/lib/rules/emptyEnums.js +0 -28
- package/lib/rules/emptyExports.d.ts +0 -9
- package/lib/rules/emptyExports.js +0 -58
- package/lib/rules/emptyFiles.d.ts +0 -9
- package/lib/rules/emptyFiles.js +0 -42
- package/lib/rules/emptyFunctions.d.ts +0 -9
- package/lib/rules/emptyFunctions.js +0 -59
- package/lib/rules/emptyModuleAttributes.d.ts +0 -9
- package/lib/rules/emptyModuleAttributes.js +0 -33
- package/lib/rules/emptyObjectTypes.d.ts +0 -9
- package/lib/rules/emptyObjectTypes.js +0 -45
- package/lib/rules/emptyStaticBlocks.d.ts +0 -9
- package/lib/rules/emptyStaticBlocks.js +0 -40
- package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
- package/lib/rules/emptyTypeParameterLists.js +0 -29
- package/lib/rules/enumInitializers.d.ts +0 -9
- package/lib/rules/enumInitializers.js +0 -52
- package/lib/rules/enumMemberLiterals.d.ts +0 -9
- package/lib/rules/enumMemberLiterals.js +0 -37
- package/lib/rules/enumValueConsistency.d.ts +0 -9
- package/lib/rules/enumValueConsistency.js +0 -54
- package/lib/rules/enumValueDuplicates.d.ts +0 -9
- package/lib/rules/enumValueDuplicates.js +0 -43
- package/lib/rules/equalityOperatorNegations.d.ts +0 -8
- package/lib/rules/equalityOperatorNegations.js +0 -58
- package/lib/rules/equalityOperators.d.ts +0 -9
- package/lib/rules/equalityOperators.js +0 -42
- package/lib/rules/errorMessages.d.ts +0 -9
- package/lib/rules/errorMessages.js +0 -54
- package/lib/rules/errorSubclassProperties.d.ts +0 -9
- package/lib/rules/errorSubclassProperties.js +0 -142
- package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
- package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
- package/lib/rules/escapeSequenceCasing.d.ts +0 -9
- package/lib/rules/escapeSequenceCasing.js +0 -73
- package/lib/rules/evals.d.ts +0 -9
- package/lib/rules/evals.js +0 -29
- package/lib/rules/evolvingVariableTypes.d.ts +0 -9
- package/lib/rules/evolvingVariableTypes.js +0 -31
- package/lib/rules/exceptionAssignments.d.ts +0 -9
- package/lib/rules/exceptionAssignments.js +0 -37
- package/lib/rules/explicitAnys.d.ts +0 -9
- package/lib/rules/explicitAnys.js +0 -53
- package/lib/rules/exponentiationOperators.d.ts +0 -9
- package/lib/rules/exponentiationOperators.js +0 -32
- package/lib/rules/exportFromImports.d.ts +0 -9
- package/lib/rules/exportFromImports.js +0 -117
- package/lib/rules/exportMutables.d.ts +0 -9
- package/lib/rules/exportMutables.js +0 -31
- package/lib/rules/exportUniqueNames.d.ts +0 -9
- package/lib/rules/exportUniqueNames.js +0 -63
- package/lib/rules/extraneousClasses.d.ts +0 -15
- package/lib/rules/extraneousClasses.js +0 -109
- package/lib/rules/fetchMethodBodies.d.ts +0 -9
- package/lib/rules/fetchMethodBodies.js +0 -70
- package/lib/rules/finallyStatementSafety.d.ts +0 -9
- package/lib/rules/finallyStatementSafety.js +0 -45
- package/lib/rules/forDirections.d.ts +0 -9
- package/lib/rules/forDirections.js +0 -73
- package/lib/rules/forInArrays.d.ts +0 -9
- package/lib/rules/forInArrays.js +0 -44
- package/lib/rules/forInGuards.d.ts +0 -8
- package/lib/rules/forInGuards.js +0 -42
- package/lib/rules/functionApplySpreads.d.ts +0 -9
- package/lib/rules/functionApplySpreads.js +0 -61
- package/lib/rules/functionAssignments.d.ts +0 -9
- package/lib/rules/functionAssignments.js +0 -27
- package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
- package/lib/rules/functionCurryingRedundancy.js +0 -51
- package/lib/rules/functionDeclarationStyles.d.ts +0 -15
- package/lib/rules/functionDeclarationStyles.js +0 -65
- package/lib/rules/functionNameMatches.d.ts +0 -9
- package/lib/rules/functionNameMatches.js +0 -72
- package/lib/rules/functionNewCalls.d.ts +0 -9
- package/lib/rules/functionNewCalls.js +0 -40
- package/lib/rules/generatorFunctionYields.d.ts +0 -9
- package/lib/rules/generatorFunctionYields.js +0 -48
- package/lib/rules/getterReturns.d.ts +0 -9
- package/lib/rules/getterReturns.js +0 -63
- package/lib/rules/globalAssignments.d.ts +0 -9
- package/lib/rules/globalAssignments.js +0 -45
- package/lib/rules/globalObjectCalls.d.ts +0 -9
- package/lib/rules/globalObjectCalls.js +0 -40
- package/lib/rules/globalThisAliases.d.ts +0 -9
- package/lib/rules/globalThisAliases.js +0 -45
- package/lib/rules/impliedEvals.d.ts +0 -9
- package/lib/rules/impliedEvals.js +0 -128
- package/lib/rules/importEmptyBlocks.d.ts +0 -9
- package/lib/rules/importEmptyBlocks.js +0 -51
- package/lib/rules/importTypeSideEffects.d.ts +0 -9
- package/lib/rules/importTypeSideEffects.js +0 -29
- package/lib/rules/indexedObjectTypes.d.ts +0 -15
- package/lib/rules/indexedObjectTypes.js +0 -81
- package/lib/rules/instanceOfArrays.d.ts +0 -9
- package/lib/rules/instanceOfArrays.js +0 -29
- package/lib/rules/irregularWhitespaces.d.ts +0 -15
- package/lib/rules/irregularWhitespaces.js +0 -95
- package/lib/rules/isNaNComparisons.d.ts +0 -9
- package/lib/rules/isNaNComparisons.js +0 -41
- package/lib/rules/literalConstructorWrappers.d.ts +0 -9
- package/lib/rules/literalConstructorWrappers.js +0 -62
- package/lib/rules/mathMethods.d.ts +0 -9
- package/lib/rules/mathMethods.js +0 -126
- package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
- package/lib/rules/meaninglessVoidOperators.js +0 -37
- package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
- package/lib/rules/misleadingVoidExpressions.js +0 -126
- package/lib/rules/moduleSpecifierLists.d.ts +0 -9
- package/lib/rules/moduleSpecifierLists.js +0 -90
- package/lib/rules/multilineAmbiguities.d.ts +0 -9
- package/lib/rules/multilineAmbiguities.js +0 -62
- package/lib/rules/namedDefaultExports.d.ts +0 -9
- package/lib/rules/namedDefaultExports.js +0 -58
- package/lib/rules/namespaceDeclarations.d.ts +0 -13
- package/lib/rules/namespaceDeclarations.js +0 -35
- package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
- package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
- package/lib/rules/namespaceKeywords.d.ts +0 -9
- package/lib/rules/namespaceKeywords.js +0 -38
- package/lib/rules/nativeObjectExtensions.d.ts +0 -9
- package/lib/rules/nativeObjectExtensions.js +0 -112
- package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
- package/lib/rules/negativeIndexLengthMethods.js +0 -178
- package/lib/rules/negativeZeroComparisons.d.ts +0 -9
- package/lib/rules/negativeZeroComparisons.js +0 -46
- package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
- package/lib/rules/nestedStandaloneIfs.js +0 -103
- package/lib/rules/newDefinitions.d.ts +0 -9
- package/lib/rules/newDefinitions.js +0 -82
- package/lib/rules/newExpressions.d.ts +0 -9
- package/lib/rules/newExpressions.js +0 -36
- package/lib/rules/newNativeNonConstructors.d.ts +0 -9
- package/lib/rules/newNativeNonConstructors.js +0 -37
- package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
- package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
- package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
- package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
- package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
- package/lib/rules/nonNullAssertionPlacement.js +0 -92
- package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
- package/lib/rules/nonNullableTypeAssertions.js +0 -76
- package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
- package/lib/rules/nonOctalDecimalEscapes.js +0 -46
- package/lib/rules/nullishCheckStyle.d.ts +0 -20
- package/lib/rules/nullishCheckStyle.js +0 -142
- package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
- package/lib/rules/nullishCoalescingOperators.js +0 -321
- package/lib/rules/numberMethodRanges.d.ts +0 -9
- package/lib/rules/numberMethodRanges.js +0 -72
- package/lib/rules/numberStaticMethods.d.ts +0 -9
- package/lib/rules/numberStaticMethods.js +0 -51
- package/lib/rules/numericErasingOperations.d.ts +0 -9
- package/lib/rules/numericErasingOperations.js +0 -44
- package/lib/rules/numericLiteralParsing.d.ts +0 -9
- package/lib/rules/numericLiteralParsing.js +0 -55
- package/lib/rules/numericPrecision.d.ts +0 -9
- package/lib/rules/numericPrecision.js +0 -100
- package/lib/rules/numericSeparatorGroups.d.ts +0 -9
- package/lib/rules/numericSeparatorGroups.js +0 -99
- package/lib/rules/objectAssignSpreads.d.ts +0 -9
- package/lib/rules/objectAssignSpreads.js +0 -51
- package/lib/rules/objectCalls.d.ts +0 -9
- package/lib/rules/objectCalls.js +0 -36
- package/lib/rules/objectEntriesMethods.d.ts +0 -9
- package/lib/rules/objectEntriesMethods.js +0 -80
- package/lib/rules/objectHasOwns.d.ts +0 -9
- package/lib/rules/objectHasOwns.js +0 -48
- package/lib/rules/objectKeyDuplicates.d.ts +0 -9
- package/lib/rules/objectKeyDuplicates.js +0 -61
- package/lib/rules/objectProto.d.ts +0 -9
- package/lib/rules/objectProto.js +0 -48
- package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
- package/lib/rules/objectPrototypeBuiltIns.js +0 -52
- package/lib/rules/objectShorthand.d.ts +0 -9
- package/lib/rules/objectShorthand.js +0 -82
- package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
- package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
- package/lib/rules/objectTypeDefinitions.d.ts +0 -9
- package/lib/rules/objectTypeDefinitions.js +0 -32
- package/lib/rules/octalEscapes.d.ts +0 -9
- package/lib/rules/octalEscapes.js +0 -56
- package/lib/rules/octalNumbers.d.ts +0 -9
- package/lib/rules/octalNumbers.js +0 -53
- package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
- package/lib/rules/operatorAssignmentShorthand.js +0 -75
- package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
- package/lib/rules/overloadSignaturesAdjacent.js +0 -138
- package/lib/rules/parameterReassignments.d.ts +0 -9
- package/lib/rules/parameterReassignments.js +0 -43
- package/lib/rules/parseIntRadixes.d.ts +0 -9
- package/lib/rules/parseIntRadixes.js +0 -57
- package/lib/rules/propertyAccessNotation.d.ts +0 -12
- package/lib/rules/propertyAccessNotation.js +0 -117
- package/lib/rules/recursionOnlyArguments.d.ts +0 -9
- package/lib/rules/recursionOnlyArguments.js +0 -62
- package/lib/rules/redundantTypeConstituents.d.ts +0 -9
- package/lib/rules/redundantTypeConstituents.js +0 -275
- package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
- package/lib/rules/regexAllGlobalFlags.js +0 -54
- package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
- package/lib/rules/regexAmbiguousInvalidity.js +0 -295
- package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
- package/lib/rules/regexCharacterClassRanges.js +0 -135
- package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
- package/lib/rules/regexCharacterClassSetOperations.js +0 -79
- package/lib/rules/regexCharacterClasses.d.ts +0 -9
- package/lib/rules/regexCharacterClasses.js +0 -232
- package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
- package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
- package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
- package/lib/rules/regexContradictoryAssertions.js +0 -208
- package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
- package/lib/rules/regexControlCharacterEscapes.js +0 -128
- package/lib/rules/regexControlCharacters.d.ts +0 -9
- package/lib/rules/regexControlCharacters.js +0 -93
- package/lib/rules/regexDigitMatchers.d.ts +0 -9
- package/lib/rules/regexDigitMatchers.js +0 -178
- package/lib/rules/regexDollarEscapes.d.ts +0 -9
- package/lib/rules/regexDollarEscapes.js +0 -89
- package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
- package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
- package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
- package/lib/rules/regexEmptyAlternatives.js +0 -138
- package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
- package/lib/rules/regexEmptyCapturingGroups.js +0 -65
- package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
- package/lib/rules/regexEmptyCharacterClasses.js +0 -66
- package/lib/rules/regexEmptyGroups.d.ts +0 -9
- package/lib/rules/regexEmptyGroups.js +0 -64
- package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
- package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
- package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
- package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
- package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
- package/lib/rules/regexEmptyStringLiterals.js +0 -64
- package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
- package/lib/rules/regexEscapeBackspaces.js +0 -67
- package/lib/rules/regexExecutors.d.ts +0 -9
- package/lib/rules/regexExecutors.js +0 -56
- package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
- package/lib/rules/regexGraphemeStringLiterals.js +0 -49
- package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
- package/lib/rules/regexHexadecimalEscapes.js +0 -69
- package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
- package/lib/rules/regexIgnoreCaseFlags.js +0 -143
- package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
- package/lib/rules/regexInvisibleCharacters.js +0 -88
- package/lib/rules/regexLetterCasing.d.ts +0 -9
- package/lib/rules/regexLetterCasing.js +0 -184
- package/lib/rules/regexLiterals.d.ts +0 -9
- package/lib/rules/regexLiterals.js +0 -87
- package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
- package/lib/rules/regexLookaroundAssertions.js +0 -161
- package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
- package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
- package/lib/rules/regexMatchNotation.d.ts +0 -9
- package/lib/rules/regexMatchNotation.js +0 -137
- package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
- package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
- package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
- package/lib/rules/regexMisleadingQuantifiers.js +0 -76
- package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
- package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
- package/lib/rules/regexNamedBackreferences.d.ts +0 -9
- package/lib/rules/regexNamedBackreferences.js +0 -46
- package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
- package/lib/rules/regexNamedCaptureGroups.js +0 -65
- package/lib/rules/regexNamedReplacements.d.ts +0 -9
- package/lib/rules/regexNamedReplacements.js +0 -91
- package/lib/rules/regexNonStandardFlags.d.ts +0 -9
- package/lib/rules/regexNonStandardFlags.js +0 -64
- package/lib/rules/regexObscureRanges.d.ts +0 -9
- package/lib/rules/regexObscureRanges.js +0 -91
- package/lib/rules/regexOctalEscapes.d.ts +0 -9
- package/lib/rules/regexOctalEscapes.js +0 -68
- package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
- package/lib/rules/regexPlusQuantifiers.js +0 -66
- package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
- package/lib/rules/regexPredefinedAssertions.js +0 -125
- package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
- package/lib/rules/regexQuestionQuantifiers.js +0 -102
- package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
- package/lib/rules/regexRepeatQuantifiers.js +0 -94
- package/lib/rules/regexResultArrayGroups.d.ts +0 -9
- package/lib/rules/regexResultArrayGroups.js +0 -185
- package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
- package/lib/rules/regexSetOperationOptimizations.js +0 -175
- package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
- package/lib/rules/regexStandaloneBackslashes.js +0 -57
- package/lib/rules/regexStarQuantifiers.d.ts +0 -9
- package/lib/rules/regexStarQuantifiers.js +0 -66
- package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
- package/lib/rules/regexSuperLinearBacktracking.js +0 -96
- package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
- package/lib/rules/regexSuperLinearMoves.js +0 -140
- package/lib/rules/regexTestMethods.d.ts +0 -9
- package/lib/rules/regexTestMethods.js +0 -81
- package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
- package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
- package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
- package/lib/rules/regexUnicodeEscapes.js +0 -95
- package/lib/rules/regexUnicodeFlag.d.ts +0 -8
- package/lib/rules/regexUnicodeFlag.js +0 -95
- package/lib/rules/regexUnicodeProperties.d.ts +0 -9
- package/lib/rules/regexUnicodeProperties.js +0 -131
- package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryAssertions.js +0 -221
- package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
- package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
- package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
- package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
- package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
- package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
- package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
- package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
- package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
- package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
- package/lib/rules/regexUnnecessaryEscapes.js +0 -134
- package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
- package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
- package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
- package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
- package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
- package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
- package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
- package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
- package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
- package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
- package/lib/rules/regexUnnecessarySetOperands.js +0 -134
- package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
- package/lib/rules/regexUnusedCapturingGroups.js +0 -67
- package/lib/rules/regexUnusedFlags.d.ts +0 -9
- package/lib/rules/regexUnusedFlags.js +0 -114
- package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
- package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
- package/lib/rules/regexUnusedQuantifiers.js +0 -61
- package/lib/rules/regexValidity.d.ts +0 -9
- package/lib/rules/regexValidity.js +0 -144
- package/lib/rules/regexWordMatchers.d.ts +0 -9
- package/lib/rules/regexWordMatchers.js +0 -144
- package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
- package/lib/rules/regexZeroQuantifiers.js +0 -58
- package/lib/rules/requireImports.d.ts +0 -9
- package/lib/rules/requireImports.js +0 -46
- package/lib/rules/responseJsonMethods.d.ts +0 -9
- package/lib/rules/responseJsonMethods.js +0 -49
- package/lib/rules/restrictedIdentifiers.d.ts +0 -12
- package/lib/rules/restrictedIdentifiers.js +0 -39
- package/lib/rules/restrictedImports.d.ts +0 -26
- package/lib/rules/restrictedImports.js +0 -164
- package/lib/rules/returnAssignments.d.ts +0 -9
- package/lib/rules/returnAssignments.js +0 -36
- package/lib/rules/returnThisTypes.d.ts +0 -9
- package/lib/rules/returnThisTypes.js +0 -92
- package/lib/rules/ruleCreator.d.ts +0 -2
- package/lib/rules/ruleCreator.js +0 -15
- package/lib/rules/selfAssignments.d.ts +0 -9
- package/lib/rules/selfAssignments.js +0 -27
- package/lib/rules/sequences.d.ts +0 -9
- package/lib/rules/sequences.js +0 -26
- package/lib/rules/setSizeLengthChecks.d.ts +0 -9
- package/lib/rules/setSizeLengthChecks.js +0 -46
- package/lib/rules/setterReturns.d.ts +0 -9
- package/lib/rules/setterReturns.js +0 -39
- package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
- package/lib/rules/shadowedRestrictedNames.js +0 -66
- package/lib/rules/singleVariableDeclarations.d.ts +0 -9
- package/lib/rules/singleVariableDeclarations.js +0 -34
- package/lib/rules/sizeComparisonOperators.d.ts +0 -15
- package/lib/rules/sizeComparisonOperators.js +0 -146
- package/lib/rules/sparseArrays.d.ts +0 -9
- package/lib/rules/sparseArrays.js +0 -41
- package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
- package/lib/rules/staticMemberOnlyClasses.js +0 -75
- package/lib/rules/stringCaseMismatches.d.ts +0 -9
- package/lib/rules/stringCaseMismatches.js +0 -53
- package/lib/rules/stringCodePoints.d.ts +0 -9
- package/lib/rules/stringCodePoints.js +0 -48
- package/lib/rules/stringSliceMethods.d.ts +0 -9
- package/lib/rules/stringSliceMethods.js +0 -45
- package/lib/rules/stringStartsEndsWith.d.ts +0 -9
- package/lib/rules/stringStartsEndsWith.js +0 -77
- package/lib/rules/structuredCloneMethods.d.ts +0 -9
- package/lib/rules/structuredCloneMethods.js +0 -37
- package/lib/rules/symbolDescriptions.d.ts +0 -9
- package/lib/rules/symbolDescriptions.js +0 -30
- package/lib/rules/thisAliases.d.ts +0 -9
- package/lib/rules/thisAliases.js +0 -42
- package/lib/rules/thisBeforeSuper.d.ts +0 -9
- package/lib/rules/thisBeforeSuper.js +0 -84
- package/lib/rules/throwErrors.d.ts +0 -9
- package/lib/rules/throwErrors.js +0 -59
- package/lib/rules/topLevelAwaits.d.ts +0 -9
- package/lib/rules/topLevelAwaits.js +0 -47
- package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
- package/lib/rules/tripleSlashReferenceValidity.js +0 -52
- package/lib/rules/tripleSlashReferences.d.ts +0 -9
- package/lib/rules/tripleSlashReferences.js +0 -32
- package/lib/rules/tsComments.d.ts +0 -21
- package/lib/rules/tsComments.js +0 -128
- package/lib/rules/tslintComments.d.ts +0 -9
- package/lib/rules/tslintComments.js +0 -34
- package/lib/rules/typeAssertionStyles.d.ts +0 -9
- package/lib/rules/typeAssertionStyles.js +0 -30
- package/lib/rules/typeImports.d.ts +0 -19
- package/lib/rules/typeImports.js +0 -281
- package/lib/rules/typeofComparisons.d.ts +0 -9
- package/lib/rules/typeofComparisons.js +0 -53
- package/lib/rules/unassignedVariables.d.ts +0 -9
- package/lib/rules/unassignedVariables.js +0 -32
- package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
- package/lib/rules/undefinedTypeofChecks.js +0 -39
- package/lib/rules/undefinedVariables.d.ts +0 -9
- package/lib/rules/undefinedVariables.js +0 -37
- package/lib/rules/unicodeBOMs.d.ts +0 -9
- package/lib/rules/unicodeBOMs.js +0 -37
- package/lib/rules/unnecessaryBinds.d.ts +0 -9
- package/lib/rules/unnecessaryBinds.js +0 -76
- package/lib/rules/unnecessaryBlocks.d.ts +0 -9
- package/lib/rules/unnecessaryBlocks.js +0 -58
- package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
- package/lib/rules/unnecessaryBooleanCasts.js +0 -56
- package/lib/rules/unnecessaryCatches.d.ts +0 -9
- package/lib/rules/unnecessaryCatches.js +0 -46
- package/lib/rules/unnecessaryComparisons.d.ts +0 -9
- package/lib/rules/unnecessaryComparisons.js +0 -291
- package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
- package/lib/rules/unnecessaryConcatenation.js +0 -26
- package/lib/rules/unnecessaryEscapes.d.ts +0 -9
- package/lib/rules/unnecessaryEscapes.js +0 -132
- package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
- package/lib/rules/unnecessaryMathClamps.js +0 -106
- package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
- package/lib/rules/unnecessaryNumericFractions.js +0 -48
- package/lib/rules/unnecessaryRenames.d.ts +0 -9
- package/lib/rules/unnecessaryRenames.js +0 -90
- package/lib/rules/unnecessaryTernaries.d.ts +0 -9
- package/lib/rules/unnecessaryTernaries.js +0 -86
- package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
- package/lib/rules/unnecessaryUseStricts.js +0 -38
- package/lib/rules/unsafeNegations.d.ts +0 -9
- package/lib/rules/unsafeNegations.js +0 -36
- package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
- package/lib/rules/utils/collectAccessorPairs.js +0 -27
- package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
- package/lib/rules/utils/countCommentsInRange.js +0 -10
- package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
- package/lib/rules/utils/discriminateAnyType.js +0 -36
- package/lib/rules/utils/equalityOperators.d.ts +0 -8
- package/lib/rules/utils/equalityOperators.js +0 -34
- package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
- package/lib/rules/utils/forEachReturnStatement.js +0 -27
- package/lib/rules/utils/formatReportedType.d.ts +0 -3
- package/lib/rules/utils/formatReportedType.js +0 -7
- package/lib/rules/utils/getConstrainedType.d.ts +0 -2
- package/lib/rules/utils/getConstrainedType.js +0 -7
- package/lib/rules/utils/getFunctionName.d.ts +0 -2
- package/lib/rules/utils/getFunctionName.js +0 -14
- package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
- package/lib/rules/utils/getRegExpConstruction.js +0 -25
- package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
- package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
- package/lib/rules/utils/getThisExpression.d.ts +0 -2
- package/lib/rules/utils/getThisExpression.js +0 -14
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
- package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
- package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
- package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
- package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
- package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
- package/lib/rules/utils/isErrorSubclass.js +0 -25
- package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
- package/lib/rules/utils/isInBooleanContext.js +0 -20
- package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
- package/lib/rules/utils/isTypeRecursive.js +0 -6
- package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
- package/lib/rules/utils/isUnsafeAssignment.js +0 -43
- package/lib/rules/utils/operators.d.ts +0 -4
- package/lib/rules/utils/operators.js +0 -33
- package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
- package/lib/rules/utils/parseRegexpAst.js +0 -15
- package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
- package/lib/rules/utils/parseRegexpAstFull.js +0 -16
- package/lib/rules/utils/skipParentheses.d.ts +0 -2
- package/lib/rules/utils/skipParentheses.js +0 -8
- package/lib/rules/variableDeletions.d.ts +0 -9
- package/lib/rules/variableDeletions.js +0 -33
- package/lib/rules/voidOperator.d.ts +0 -9
- package/lib/rules/voidOperator.js +0 -32
- package/lib/rules/withStatements.d.ts +0 -9
- package/lib/rules/withStatements.js +0 -28
- package/lib/rules/wrapperObjects.d.ts +0 -9
- package/lib/rules/wrapperObjects.js +0 -34
- package/lib/type-utils/getSpecifierNames.d.ts +0 -2
- package/lib/type-utils/getSpecifierNames.js +0 -7
- package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
- package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
- package/lib/type-utils/isFromFile.d.ts +0 -2
- package/lib/type-utils/isFromFile.js +0 -11
- package/lib/type-utils/isFromPackage.d.ts +0 -2
- package/lib/type-utils/isFromPackage.js +0 -13
- package/lib/type-utils/matchesSpecifier.d.ts +0 -3
- package/lib/type-utils/matchesSpecifier.js +0 -18
- package/lib/type-utils/schemas.d.ts +0 -14
- package/lib/type-utils/schemas.js +0 -23
|
@@ -1,32 +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 };
|
|
@@ -1,9 +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;
|
package/lib/rules/emptyEnums.js
DELETED
|
@@ -1,28 +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 };
|
|
@@ -1,9 +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;
|
|
@@ -1,58 +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 = /* @__PURE__ */ 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 };
|
|
@@ -1,9 +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;
|
package/lib/rules/emptyFiles.js
DELETED
|
@@ -1,42 +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 };
|
|
@@ -1,9 +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;
|
|
@@ -1,59 +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 };
|
|
@@ -1,9 +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;
|
|
@@ -1,33 +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 };
|
|
@@ -1,9 +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;
|
|
@@ -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/emptyObjectTypes.ts
|
|
5
|
-
var emptyObjectTypes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports empty object type literals and empty interfaces that are often used incorrectly.",
|
|
8
|
-
id: "emptyObjectTypes",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: {
|
|
12
|
-
emptyInterface: {
|
|
13
|
-
primary: "Empty interfaces are often used incorrectly and should be avoided.",
|
|
14
|
-
secondary: ["An empty interface `interface Foo {}` is equivalent to the `{}` type, which matches any non-nullish value.", "Consider using `object` for any object, `unknown` for any value, or adding members to the interface."],
|
|
15
|
-
suggestions: ["Add members to the interface, or use `object` or `unknown` instead."]
|
|
16
|
-
},
|
|
17
|
-
emptyObjectType: {
|
|
18
|
-
primary: "The `{}` type means 'any non-nullish value' and is often used incorrectly.",
|
|
19
|
-
secondary: ["The `{}` type allows any value except `null` and `undefined`, including primitives like strings and numbers.", "If you want to represent any object, use `object`. If you want any value, use `unknown`."],
|
|
20
|
-
suggestions: ["Use `object` for any object value, or `unknown` for any value including `null` and `undefined`."]
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
setup(context) {
|
|
24
|
-
return { visitors: {
|
|
25
|
-
InterfaceDeclaration: (node, { sourceFile }) => {
|
|
26
|
-
if (node.members.length) return false;
|
|
27
|
-
const extendsClause = node.heritageClauses?.find((clause) => clause.token === SyntaxKind.ExtendsKeyword);
|
|
28
|
-
if (extendsClause && extendsClause.types.length > 1) return;
|
|
29
|
-
context.report({
|
|
30
|
-
message: "emptyInterface",
|
|
31
|
-
range: getTSNodeRange(node, sourceFile)
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
TypeLiteral: (node, { sourceFile }) => {
|
|
35
|
-
if (node.members.length || node.parent.kind === SyntaxKind.IntersectionType || node.parent.kind === SyntaxKind.MappedType) return;
|
|
36
|
-
context.report({
|
|
37
|
-
message: "emptyObjectType",
|
|
38
|
-
range: getTSNodeRange(node, sourceFile)
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
} };
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
//#endregion
|
|
45
|
-
export { emptyObjectTypes_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty static initialization blocks within class declarations.";
|
|
3
|
-
readonly id: "emptyStaticBlocks";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyStaticBlock", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/emptyStaticBlocks.ts
|
|
4
|
-
var emptyStaticBlocks_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports empty static initialization blocks within class declarations.",
|
|
7
|
-
id: "emptyStaticBlocks",
|
|
8
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
9
|
-
},
|
|
10
|
-
messages: { emptyStaticBlock: {
|
|
11
|
-
primary: "Empty static blocks serve no purpose and should be removed for cleaner code.",
|
|
12
|
-
secondary: ["Static blocks are used to initialize static class properties or perform other one-time setup when a class is loaded.", "An empty static block has no statements and therefore serves no purpose."],
|
|
13
|
-
suggestions: ["Remove the empty static block, or add initialization logic if needed."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { ClassStaticBlockDeclaration: (node, { sourceFile }) => {
|
|
17
|
-
if (node.body.statements.length) return;
|
|
18
|
-
const openBrace = node.body.getFirstToken(sourceFile);
|
|
19
|
-
if (!openBrace) return;
|
|
20
|
-
const range = {
|
|
21
|
-
begin: node.getStart(sourceFile),
|
|
22
|
-
end: openBrace.getEnd()
|
|
23
|
-
};
|
|
24
|
-
context.report({
|
|
25
|
-
message: "emptyStaticBlock",
|
|
26
|
-
range,
|
|
27
|
-
suggestions: [{
|
|
28
|
-
id: "removeEmptyStaticBlock",
|
|
29
|
-
range: {
|
|
30
|
-
begin: node.getStart(sourceFile),
|
|
31
|
-
end: node.getEnd()
|
|
32
|
-
},
|
|
33
|
-
text: ""
|
|
34
|
-
}]
|
|
35
|
-
});
|
|
36
|
-
} } };
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//#endregion
|
|
40
|
-
export { emptyStaticBlocks_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty type parameter lists in type aliases and interfaces.";
|
|
3
|
-
readonly id: "emptyTypeParameterLists";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "emptyTypeParameters", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/emptyTypeParameterLists.ts
|
|
4
|
-
var emptyTypeParameterLists_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports empty type parameter lists in type aliases and interfaces.",
|
|
7
|
-
id: "emptyTypeParameterLists",
|
|
8
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
9
|
-
},
|
|
10
|
-
messages: { emptyTypeParameters: {
|
|
11
|
-
primary: "Empty type parameter lists are unnecessary.",
|
|
12
|
-
secondary: ["TypeScript permits empty type parameter lists like `<>`, but this practice is discouraged.", "Empty type parameter lists can lead to unclear or ambiguous code."],
|
|
13
|
-
suggestions: ["Remove the empty type parameter list, or add type parameters if needed."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
function checkNode(node, { sourceFile }) {
|
|
17
|
-
if (node.typeParameters && !node.typeParameters.length) context.report({
|
|
18
|
-
message: "emptyTypeParameters",
|
|
19
|
-
range: getTSNodeRange(node, sourceFile)
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return { visitors: {
|
|
23
|
-
InterfaceDeclaration: checkNode,
|
|
24
|
-
TypeAliasDeclaration: checkNode
|
|
25
|
-
} };
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
//#endregion
|
|
29
|
-
export { emptyTypeParameterLists_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports enum members without explicit initial values.";
|
|
3
|
-
readonly id: "enumInitializers";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "defineInitializer", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,52 +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/enumInitializers.ts
|
|
5
|
-
var enumInitializers_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports enum members without explicit initial values.",
|
|
8
|
-
id: "enumInitializers",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { defineInitializer: {
|
|
12
|
-
primary: "Enum member '{{ name }}' has an implicit initializer that may change if the enum is reordered.",
|
|
13
|
-
secondary: ["Enum members without explicit values are assigned sequentially increasing numbers.", "This can cause unintended value changes if enum members are reordered or removed."],
|
|
14
|
-
suggestions: ["For numeric enums, add an index-based value such as `{{ name }} = {{ suggestedIndex }}`.", "For string enums, add a string value such as `{{ name }} = '{{ name }}'`."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { EnumDeclaration: (node, { sourceFile }) => {
|
|
18
|
-
for (const [index, member] of node.members.entries()) {
|
|
19
|
-
if (member.initializer !== void 0) continue;
|
|
20
|
-
const name = member.name.kind === SyntaxKind.Identifier ? member.name.text : member.name.getText(sourceFile);
|
|
21
|
-
const range = getTSNodeRange(member, sourceFile);
|
|
22
|
-
context.report({
|
|
23
|
-
data: {
|
|
24
|
-
name,
|
|
25
|
-
suggestedIndex: index
|
|
26
|
-
},
|
|
27
|
-
message: "defineInitializer",
|
|
28
|
-
range,
|
|
29
|
-
suggestions: [
|
|
30
|
-
{
|
|
31
|
-
id: "assignIndex",
|
|
32
|
-
range,
|
|
33
|
-
text: `${name} = ${index}`
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
id: "assignIncrementedIndex",
|
|
37
|
-
range,
|
|
38
|
-
text: `${name} = ${index + 1}`
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
id: "assignStringValue",
|
|
42
|
-
range,
|
|
43
|
-
text: `${name} = '${name}'`
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
} } };
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
//#endregion
|
|
52
|
-
export { enumInitializers_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Requires all enum members to be literal values.";
|
|
3
|
-
readonly id: "enumMemberLiterals";
|
|
4
|
-
readonly presets: readonly ["logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "requireLiteral", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,37 +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/enumMemberLiterals.ts
|
|
5
|
-
function isLiteralExpression$1(expression) {
|
|
6
|
-
switch (expression.kind) {
|
|
7
|
-
case SyntaxKind.NoSubstitutionTemplateLiteral:
|
|
8
|
-
case SyntaxKind.NumericLiteral:
|
|
9
|
-
case SyntaxKind.StringLiteral: return true;
|
|
10
|
-
case SyntaxKind.PrefixUnaryExpression:
|
|
11
|
-
if (expression.operator === SyntaxKind.PlusToken || expression.operator === SyntaxKind.MinusToken) return expression.operand.kind === SyntaxKind.NumericLiteral;
|
|
12
|
-
return false;
|
|
13
|
-
default: return false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
var enumMemberLiterals_default = ruleCreator.createRule(typescriptLanguage, {
|
|
17
|
-
about: {
|
|
18
|
-
description: "Requires all enum members to be literal values.",
|
|
19
|
-
id: "enumMemberLiterals",
|
|
20
|
-
presets: ["logicalStrict"]
|
|
21
|
-
},
|
|
22
|
-
messages: { requireLiteral: {
|
|
23
|
-
primary: "Prefer initializing enum members with literal values for predictability.",
|
|
24
|
-
secondary: ["Using computed values in enum initializers can lead to unexpected results.", "Enum members create their own scope, so variable references may not work as expected."],
|
|
25
|
-
suggestions: ["Use a literal string or number value instead of a computed expression."]
|
|
26
|
-
} },
|
|
27
|
-
setup(context) {
|
|
28
|
-
return { visitors: { EnumMember: (node, { sourceFile }) => {
|
|
29
|
-
if (node.initializer && !isLiteralExpression$1(node.initializer)) context.report({
|
|
30
|
-
message: "requireLiteral",
|
|
31
|
-
range: getTSNodeRange(node, sourceFile)
|
|
32
|
-
});
|
|
33
|
-
} } };
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
//#endregion
|
|
37
|
-
export { enumMemberLiterals_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports enums that contain both string and number members.";
|
|
3
|
-
readonly id: "enumValueConsistency";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "mixedTypes", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/enumValueConsistency.ts
|
|
5
|
-
const enumMemberKinds = {
|
|
6
|
-
Number: "number",
|
|
7
|
-
String: "string",
|
|
8
|
-
Unknown: "unknown"
|
|
9
|
-
};
|
|
10
|
-
function getEnumMemberKind(member, typeChecker) {
|
|
11
|
-
const type = typeChecker.getTypeAtLocation(member);
|
|
12
|
-
if (type.isNumberLiteral()) {
|
|
13
|
-
if ((type.flags & ts.TypeFlags.NumberLike) !== 0) return enumMemberKinds.Number;
|
|
14
|
-
} else if (type.isStringLiteral() && (type.flags & ts.TypeFlags.StringLike) !== 0) return enumMemberKinds.String;
|
|
15
|
-
return enumMemberKinds.Unknown;
|
|
16
|
-
}
|
|
17
|
-
var enumValueConsistency_default = ruleCreator.createRule(typescriptLanguage, {
|
|
18
|
-
about: {
|
|
19
|
-
description: "Reports enums that contain both string and number members.",
|
|
20
|
-
id: "enumValueConsistency",
|
|
21
|
-
presets: ["logical", "logicalStrict"]
|
|
22
|
-
},
|
|
23
|
-
messages: { mixedTypes: {
|
|
24
|
-
primary: "Enum '{{ name }}' contains both number and string members, which can cause unexpected iteration behavior.",
|
|
25
|
-
secondary: [
|
|
26
|
-
"When iterating over a mixed enum with Object.keys(), Object.values(), or Object.entries(), numeric members will also include reverse mappings.",
|
|
27
|
-
"This results in a different number of items than the actual enum members.",
|
|
28
|
-
"Pure string enums don't have this issue since they don't create reverse mappings."
|
|
29
|
-
],
|
|
30
|
-
suggestions: ["Convert all members to strings for predictable iteration.", "Convert all members to numbers if reverse mappings are intentional."]
|
|
31
|
-
} },
|
|
32
|
-
setup(context) {
|
|
33
|
-
return { visitors: { EnumDeclaration: (node, { sourceFile, typeChecker }) => {
|
|
34
|
-
if (node.members.length < 2) return;
|
|
35
|
-
let hasNumber = false;
|
|
36
|
-
let hasString = false;
|
|
37
|
-
for (const member of node.members) {
|
|
38
|
-
const kind = getEnumMemberKind(member, typeChecker);
|
|
39
|
-
if (kind === enumMemberKinds.Number) hasNumber = true;
|
|
40
|
-
else if (kind === enumMemberKinds.String) hasString = true;
|
|
41
|
-
if (hasNumber && hasString) {
|
|
42
|
-
context.report({
|
|
43
|
-
data: { name: node.name.text },
|
|
44
|
-
message: "mixedTypes",
|
|
45
|
-
range: getTSNodeRange(node.name, sourceFile)
|
|
46
|
-
});
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
} } };
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
//#endregion
|
|
54
|
-
export { enumValueConsistency_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports enum members with duplicate values.";
|
|
3
|
-
readonly id: "enumValueDuplicates";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "duplicateValue", undefined>;
|
|
9
|
-
export default _default;
|