@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,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports attempting to reassign variables declared with const.";
|
|
3
|
-
readonly id: "constantAssignments";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noConstAssign", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getModifyingReferences, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts, { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/constantAssignments.ts
|
|
5
|
-
var constantAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports attempting to reassign variables declared with const.",
|
|
8
|
-
id: "constantAssignments",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { noConstAssign: {
|
|
12
|
-
primary: "Variables declared with const cannot be reassigned; use let or var instead if reassignment is needed.",
|
|
13
|
-
secondary: ["The const keyword creates a read-only reference to a value, preventing reassignment.", "While properties of const objects and elements of const arrays can be mutated, the binding itself cannot be reassigned."],
|
|
14
|
-
suggestions: ["Use let instead of const if you need to reassign the variable."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function collectBindingElements(name) {
|
|
18
|
-
if (name.kind === SyntaxKind.Identifier) return [name];
|
|
19
|
-
const identifiers = [];
|
|
20
|
-
for (const element of name.elements) if (element.kind === SyntaxKind.BindingElement) identifiers.push(...collectBindingElements(element.name));
|
|
21
|
-
return identifiers;
|
|
22
|
-
}
|
|
23
|
-
return { visitors: { VariableDeclarationList: (node, { sourceFile }) => {
|
|
24
|
-
if (!(node.flags & ts.NodeFlags.Const) || !node.declarations.length) return;
|
|
25
|
-
for (const declaration of node.declarations) {
|
|
26
|
-
const identifiers = collectBindingElements(declaration.name);
|
|
27
|
-
for (const identifier of identifiers) {
|
|
28
|
-
const modifyingReferences = getModifyingReferences(identifier, sourceFile);
|
|
29
|
-
for (const reference of modifyingReferences) context.report({
|
|
30
|
-
message: "noConstAssign",
|
|
31
|
-
range: getTSNodeRange(reference, sourceFile)
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
} } };
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
//#endregion
|
|
39
|
-
export { constantAssignments_default as default };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { z } from "zod/v4";
|
|
2
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
3
|
-
readonly description: "Reports inconsistent placement of type arguments in constructor calls.";
|
|
4
|
-
readonly id: "constructorGenericCalls";
|
|
5
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
6
|
-
} & {
|
|
7
|
-
readonly pluginId: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
}, "preferConstructor" | "preferTypeAnnotation", {
|
|
10
|
-
style: z.ZodDefault<z.ZodEnum<{
|
|
11
|
-
constructor: "constructor";
|
|
12
|
-
"type-annotation": "type-annotation";
|
|
13
|
-
}>>;
|
|
14
|
-
}>;
|
|
15
|
-
export default _default;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import { z as z$1 } from "zod/v4";
|
|
5
|
-
//#region src/rules/constructorGenericCalls.ts
|
|
6
|
-
const builtInTypedArrays = /* @__PURE__ */ new Set([
|
|
7
|
-
"Float32Array",
|
|
8
|
-
"Float64Array",
|
|
9
|
-
"Int8Array",
|
|
10
|
-
"Int16Array",
|
|
11
|
-
"Int32Array",
|
|
12
|
-
"Uint8Array",
|
|
13
|
-
"Uint8ClampedArray",
|
|
14
|
-
"Uint16Array",
|
|
15
|
-
"Uint32Array"
|
|
16
|
-
]);
|
|
17
|
-
function getTypeArgumentsRange(parent, typeArguments, sourceFile) {
|
|
18
|
-
const children = parent.getChildren(sourceFile);
|
|
19
|
-
let begin = typeArguments.pos;
|
|
20
|
-
let end = typeArguments.end;
|
|
21
|
-
for (const child of children) if (child.kind === ts.SyntaxKind.LessThanToken) begin = child.getStart(sourceFile);
|
|
22
|
-
else if (child.kind === ts.SyntaxKind.GreaterThanToken) end = child.getEnd();
|
|
23
|
-
return {
|
|
24
|
-
begin,
|
|
25
|
-
end
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function getTypeArgumentsText(parent, typeArguments, sourceFile) {
|
|
29
|
-
const range = getTypeArgumentsRange(parent, typeArguments, sourceFile);
|
|
30
|
-
return sourceFile.text.slice(range.begin, range.end);
|
|
31
|
-
}
|
|
32
|
-
function isBuiltInTypedArray(name) {
|
|
33
|
-
return builtInTypedArrays.has(name);
|
|
34
|
-
}
|
|
35
|
-
const options = { style: z$1.enum(["constructor", "type-annotation"]).default("constructor").describe("Where to prefer type arguments: 'constructor' for the constructor call, 'type-annotation' for the type annotation.") };
|
|
36
|
-
var constructorGenericCalls_default = ruleCreator.createRule(typescriptLanguage, {
|
|
37
|
-
about: {
|
|
38
|
-
description: "Reports inconsistent placement of type arguments in constructor calls.",
|
|
39
|
-
id: "constructorGenericCalls",
|
|
40
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
41
|
-
},
|
|
42
|
-
messages: {
|
|
43
|
-
preferConstructor: {
|
|
44
|
-
primary: "Prefer specifying the type argument on the constructor call instead of the type annotation.",
|
|
45
|
-
secondary: ["When type arguments are needed, specifying them on the constructor is more explicit.", "This makes the code more readable by keeping the type information with the value."],
|
|
46
|
-
suggestions: ["Move the type argument from the type annotation to the constructor call."]
|
|
47
|
-
},
|
|
48
|
-
preferTypeAnnotation: {
|
|
49
|
-
primary: "Prefer specifying the type argument on the type annotation instead of the constructor call.",
|
|
50
|
-
secondary: ["Specifying type arguments on the type annotation keeps the variable's type explicit.", "This approach can make refactoring easier when changing the right-hand side."],
|
|
51
|
-
suggestions: ["Move the type argument from the constructor call to the type annotation."]
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
options,
|
|
55
|
-
setup(context) {
|
|
56
|
-
function checkNode(node, { options, sourceFile }) {
|
|
57
|
-
const identifier = node.name;
|
|
58
|
-
const typeAnnotation = node.type;
|
|
59
|
-
const initializer = node.initializer;
|
|
60
|
-
const style = options.style;
|
|
61
|
-
if (!initializer || !ts.isNewExpression(initializer) || !ts.isIdentifier(initializer.expression)) return;
|
|
62
|
-
const constructorName = initializer.expression.text;
|
|
63
|
-
if (!typeAnnotation) {
|
|
64
|
-
if (style === "type-annotation" && initializer.typeArguments) {
|
|
65
|
-
const typeArgsText = getTypeArgumentsText(initializer, initializer.typeArguments, sourceFile);
|
|
66
|
-
const identifierEnd = identifier.getEnd();
|
|
67
|
-
const typeAnnotationText = `${constructorName}${typeArgsText}`;
|
|
68
|
-
const typeArgumentsRange = getTypeArgumentsRange(initializer, initializer.typeArguments, sourceFile);
|
|
69
|
-
context.report({
|
|
70
|
-
fix: [{
|
|
71
|
-
range: typeArgumentsRange,
|
|
72
|
-
text: ""
|
|
73
|
-
}, {
|
|
74
|
-
range: {
|
|
75
|
-
begin: identifierEnd,
|
|
76
|
-
end: identifierEnd
|
|
77
|
-
},
|
|
78
|
-
text: `: ${typeAnnotationText}`
|
|
79
|
-
}],
|
|
80
|
-
message: "preferTypeAnnotation",
|
|
81
|
-
range: typeArgumentsRange
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (!ts.isTypeReferenceNode(typeAnnotation) || !ts.isIdentifier(typeAnnotation.typeName) || typeAnnotation.typeName.text !== constructorName || isBuiltInTypedArray(typeAnnotation.typeName.text) || !!typeAnnotation.typeArguments !== !initializer.typeArguments) return;
|
|
87
|
-
if (style === "constructor" && typeAnnotation.typeArguments && !initializer.typeArguments) {
|
|
88
|
-
const typeArgsText = getTypeArgumentsText(typeAnnotation, typeAnnotation.typeArguments, sourceFile);
|
|
89
|
-
const typeArgsRange = getTypeArgumentsRange(typeAnnotation, typeAnnotation.typeArguments, sourceFile);
|
|
90
|
-
const constructorEnd = initializer.expression.getEnd();
|
|
91
|
-
const hasParens = initializer.arguments !== void 0;
|
|
92
|
-
context.report({
|
|
93
|
-
fix: [{
|
|
94
|
-
range: {
|
|
95
|
-
begin: typeAnnotation.getStart(sourceFile),
|
|
96
|
-
end: typeAnnotation.getEnd()
|
|
97
|
-
},
|
|
98
|
-
text: constructorName
|
|
99
|
-
}, {
|
|
100
|
-
range: {
|
|
101
|
-
begin: constructorEnd,
|
|
102
|
-
end: constructorEnd
|
|
103
|
-
},
|
|
104
|
-
text: typeArgsText + (hasParens ? "" : "()")
|
|
105
|
-
}],
|
|
106
|
-
message: "preferConstructor",
|
|
107
|
-
range: typeArgsRange
|
|
108
|
-
});
|
|
109
|
-
} else if (style === "type-annotation" && !typeAnnotation.typeArguments && initializer.typeArguments) {
|
|
110
|
-
const typeArgumentsText = getTypeArgumentsText(initializer, initializer.typeArguments, sourceFile);
|
|
111
|
-
const typeArgumentsRange = getTypeArgumentsRange(initializer, initializer.typeArguments, sourceFile);
|
|
112
|
-
const newTypeAnnotation = `${typeAnnotation.typeName.text}${typeArgumentsText}`;
|
|
113
|
-
context.report({
|
|
114
|
-
fix: [{
|
|
115
|
-
range: {
|
|
116
|
-
begin: typeAnnotation.getStart(sourceFile),
|
|
117
|
-
end: typeAnnotation.getEnd()
|
|
118
|
-
},
|
|
119
|
-
text: newTypeAnnotation
|
|
120
|
-
}, {
|
|
121
|
-
range: typeArgumentsRange,
|
|
122
|
-
text: ""
|
|
123
|
-
}],
|
|
124
|
-
message: "preferTypeAnnotation",
|
|
125
|
-
range: typeArgumentsRange
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return { visitors: {
|
|
130
|
-
PropertyDeclaration: checkNode,
|
|
131
|
-
VariableDeclaration: checkNode
|
|
132
|
-
} };
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
//#endregion
|
|
136
|
-
export { constructorGenericCalls_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports returning values from constructor functions.";
|
|
3
|
-
readonly id: "constructorReturns";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noConstructorReturn", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/constructorReturns.ts
|
|
6
|
-
var constructorReturns_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports returning values from constructor functions.",
|
|
9
|
-
id: "constructorReturns",
|
|
10
|
-
presets: ["javascript"]
|
|
11
|
-
},
|
|
12
|
-
messages: { noConstructorReturn: {
|
|
13
|
-
primary: "Returning a value from a constructor function overrides the newly created instance.",
|
|
14
|
-
secondary: ["This behavior is often unintentional and can lead to unexpected results.", "If you need to return a different object, consider using a factory function instead."],
|
|
15
|
-
suggestions: ["Remove the return statement, or return without a value to exit early."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
return { visitors: { Constructor: (node, { sourceFile }) => {
|
|
19
|
-
if (!node.body) return;
|
|
20
|
-
function checkForReturnStatements(node) {
|
|
21
|
-
if (ts.isReturnStatement(node)) {
|
|
22
|
-
if (node.expression) context.report({
|
|
23
|
-
message: "noConstructorReturn",
|
|
24
|
-
range: {
|
|
25
|
-
begin: node.getStart(sourceFile),
|
|
26
|
-
end: node.getEnd()
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (tsutils.isFunctionScopeBoundary(node)) return;
|
|
32
|
-
ts.forEachChild(node, checkForReturnStatements);
|
|
33
|
-
}
|
|
34
|
-
ts.forEachChild(node.body, checkForReturnStatements);
|
|
35
|
-
} } };
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
//#endregion
|
|
39
|
-
export { constructorReturns_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports constructors of derived classes that do not call `super()`, and constructors of non-derived classes that call `super()`.";
|
|
3
|
-
readonly id: "constructorSupers";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "missingSuperCall" | "unexpectedSuperCall", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/constructorSupers.ts
|
|
6
|
-
function classHasExtendsClause(node) {
|
|
7
|
-
return node.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword);
|
|
8
|
-
}
|
|
9
|
-
function containsSuperCall(node) {
|
|
10
|
-
if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.SuperKeyword) return true;
|
|
11
|
-
if (tsutils.isFunctionScopeBoundary(node)) return false;
|
|
12
|
-
return ts.forEachChild(node, containsSuperCall) ?? false;
|
|
13
|
-
}
|
|
14
|
-
var constructorSupers_default = ruleCreator.createRule(typescriptLanguage, {
|
|
15
|
-
about: {
|
|
16
|
-
description: "Reports constructors of derived classes that do not call `super()`, and constructors of non-derived classes that call `super()`.",
|
|
17
|
-
id: "constructorSupers",
|
|
18
|
-
presets: ["javascript"]
|
|
19
|
-
},
|
|
20
|
-
messages: {
|
|
21
|
-
missingSuperCall: {
|
|
22
|
-
primary: "Constructors of derived classes must call `super()` before using `this` or returning.",
|
|
23
|
-
secondary: ["The derived class constructor must initialize the parent class by calling `super()` before accessing `this`.", "Failing to call `super()` in a derived class constructor causes a runtime error."],
|
|
24
|
-
suggestions: ["Add a `super()` call at the beginning of the constructor.", "Pass required arguments to `super()` if the parent constructor expects them."]
|
|
25
|
-
},
|
|
26
|
-
unexpectedSuperCall: {
|
|
27
|
-
primary: "Constructors of non-derived classes must not call `super()`.",
|
|
28
|
-
secondary: ["This class does not extend another class, so there is no parent constructor to call.", "Calling `super()` in a non-derived class causes a syntax error."],
|
|
29
|
-
suggestions: ["Remove the `super()` call.", "If this class should inherit from another class, add an `extends` clause."]
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
setup(context) {
|
|
33
|
-
function checkConstructor(classNode, constructor, sourceFile) {
|
|
34
|
-
if (!constructor.body) return;
|
|
35
|
-
const isDerivedClass = classHasExtendsClause(classNode) ?? false;
|
|
36
|
-
const hasSuperCall = containsSuperCall(constructor.body);
|
|
37
|
-
if (isDerivedClass && !hasSuperCall) {
|
|
38
|
-
const constructorKeyword = constructor.getChildren(sourceFile).find((child) => child.kind === ts.SyntaxKind.Constructor);
|
|
39
|
-
context.report({
|
|
40
|
-
message: "missingSuperCall",
|
|
41
|
-
range: {
|
|
42
|
-
begin: constructorKeyword?.getStart(sourceFile) ?? constructor.getStart(sourceFile),
|
|
43
|
-
end: constructorKeyword?.getEnd() ?? constructor.getStart(sourceFile) + 11
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
if (!isDerivedClass && hasSuperCall) findAndReportSuperCalls(constructor.body, sourceFile);
|
|
48
|
-
}
|
|
49
|
-
function findAndReportSuperCalls(node, sourceFile) {
|
|
50
|
-
if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.SuperKeyword) {
|
|
51
|
-
context.report({
|
|
52
|
-
message: "unexpectedSuperCall",
|
|
53
|
-
range: {
|
|
54
|
-
begin: node.getStart(sourceFile),
|
|
55
|
-
end: node.getEnd()
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (tsutils.isFunctionScopeBoundary(node)) return;
|
|
61
|
-
ts.forEachChild(node, (child) => {
|
|
62
|
-
findAndReportSuperCalls(child, sourceFile);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
function checkClass(node, { sourceFile }) {
|
|
66
|
-
for (const member of node.members) if (member.kind === ts.SyntaxKind.Constructor) checkConstructor(node, member, sourceFile);
|
|
67
|
-
}
|
|
68
|
-
return { visitors: {
|
|
69
|
-
ClassDeclaration: checkClass,
|
|
70
|
-
ClassExpression: checkClass
|
|
71
|
-
} };
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
//#endregion
|
|
75
|
-
export { constructorSupers_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Prefer passing a `Date` directly to the `Date` constructor when cloning, rather than calling `getTime()`.";
|
|
3
|
-
readonly id: "dateConstructorClones";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "unnecessaryGetTime", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/dateConstructorClones.ts
|
|
5
|
-
function isDateType(node, typeChecker) {
|
|
6
|
-
return typeChecker.getTypeAtLocation(node).getSymbol()?.getName() === "Date";
|
|
7
|
-
}
|
|
8
|
-
var dateConstructorClones_default = ruleCreator.createRule(typescriptLanguage, {
|
|
9
|
-
about: {
|
|
10
|
-
description: "Prefer passing a `Date` directly to the `Date` constructor when cloning, rather than calling `getTime()`.",
|
|
11
|
-
id: "dateConstructorClones",
|
|
12
|
-
presets: ["logical"]
|
|
13
|
-
},
|
|
14
|
-
messages: { unnecessaryGetTime: {
|
|
15
|
-
primary: "Prefer passing the Date directly instead of calling getTime().",
|
|
16
|
-
secondary: ["The Date constructor can clone a Date object directly when passed as an argument.", "Calling getTime() first is unnecessary since ES2015."],
|
|
17
|
-
suggestions: ["Remove the `.getTime()` call and pass the Date directly."]
|
|
18
|
-
} },
|
|
19
|
-
setup(context) {
|
|
20
|
-
return { visitors: { NewExpression: (node, { program, sourceFile, typeChecker }) => {
|
|
21
|
-
if (node.expression.kind !== SyntaxKind.Identifier || node.expression.text !== "Date" || node.arguments?.length !== 1 || !isGlobalDeclarationOfName(node.expression, "Date", typeChecker, program)) return;
|
|
22
|
-
const argument = node.arguments[0];
|
|
23
|
-
if (argument.kind !== SyntaxKind.CallExpression || argument.expression.kind !== SyntaxKind.PropertyAccessExpression || argument.expression.name.kind !== SyntaxKind.Identifier || argument.expression.name.text !== "getTime" || !!argument.arguments.length || !isDateType(argument.expression.expression, typeChecker)) return;
|
|
24
|
-
context.report({
|
|
25
|
-
message: "unnecessaryGetTime",
|
|
26
|
-
range: {
|
|
27
|
-
begin: argument.expression.name.getStart(sourceFile),
|
|
28
|
-
end: argument.getEnd()
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
} } };
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
//#endregion
|
|
35
|
-
export { dateConstructorClones_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Prefer the shorter `Date.now()` to get the number of milliseconds since the Unix Epoch.";
|
|
3
|
-
readonly id: "dateNowTimestamps";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferDateNow", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/dateNowTimestamps.ts
|
|
5
|
-
var dateNowTimestamps_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Prefer the shorter `Date.now()` to get the number of milliseconds since the Unix Epoch.",
|
|
8
|
-
id: "dateNowTimestamps",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { preferDateNow: {
|
|
12
|
-
primary: "Prefer the shorter `Date.now()` to get the current timestamp.",
|
|
13
|
-
secondary: ["`Date.now()` is shorter and avoids unnecessary instantiation of `Date` objects.", "It's more efficient and clearer than alternatives like `new Date().getTime()`."],
|
|
14
|
-
suggestions: ["Replace with `Date.now()`."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function isNewDateWithNoArguments(node, typeChecker, program) {
|
|
18
|
-
return node.expression.kind === SyntaxKind.Identifier && node.expression.text === "Date" && !node.arguments?.length && isGlobalDeclarationOfName(node.expression, "Date", typeChecker, program);
|
|
19
|
-
}
|
|
20
|
-
return { visitors: {
|
|
21
|
-
CallExpression: (node, { program, sourceFile, typeChecker }) => {
|
|
22
|
-
if (node.expression.kind !== SyntaxKind.PropertyAccessExpression || node.expression.name.kind !== SyntaxKind.Identifier || !!node.arguments.length) return;
|
|
23
|
-
const methodName = node.expression.name.text;
|
|
24
|
-
if (methodName !== "getTime" && methodName !== "valueOf") return;
|
|
25
|
-
if (node.expression.expression.kind !== SyntaxKind.NewExpression || !isNewDateWithNoArguments(node.expression.expression, typeChecker, program)) return;
|
|
26
|
-
context.report({
|
|
27
|
-
message: "preferDateNow",
|
|
28
|
-
range: {
|
|
29
|
-
begin: node.expression.expression.getStart(sourceFile),
|
|
30
|
-
end: node.getEnd()
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
NewExpression: (node, { program, sourceFile, typeChecker }) => {
|
|
35
|
-
if (!isNewDateWithNoArguments(node, typeChecker, program)) return;
|
|
36
|
-
switch (node.parent.kind) {
|
|
37
|
-
case SyntaxKind.CallExpression:
|
|
38
|
-
if (node.parent.expression.kind === SyntaxKind.Identifier && (node.parent.expression.text === "BigInt" || node.parent.expression.text === "Number") && node.parent.arguments.length === 1 && isGlobalDeclarationOfName(node.parent.expression, node.parent.expression.text, typeChecker, program)) context.report({
|
|
39
|
-
message: "preferDateNow",
|
|
40
|
-
range: getTSNodeRange(node.parent, sourceFile)
|
|
41
|
-
});
|
|
42
|
-
break;
|
|
43
|
-
case SyntaxKind.PrefixUnaryExpression:
|
|
44
|
-
if (node.parent.operator === SyntaxKind.MinusToken || node.parent.operator === SyntaxKind.PlusToken) context.report({
|
|
45
|
-
message: "preferDateNow",
|
|
46
|
-
range: getTSNodeRange(node, sourceFile)
|
|
47
|
-
});
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
} };
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
//#endregion
|
|
55
|
-
export { dateNowTimestamps_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using debugger statements.";
|
|
3
|
-
readonly id: "debuggerStatements";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noDebugger", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/debuggerStatements.ts
|
|
4
|
-
var debuggerStatements_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports using debugger statements.",
|
|
7
|
-
id: "debuggerStatements",
|
|
8
|
-
presets: ["logical", "logicalStrict"]
|
|
9
|
-
},
|
|
10
|
-
messages: { noDebugger: {
|
|
11
|
-
primary: "Debugger statements should not be used in production code.",
|
|
12
|
-
secondary: ["The `debugger` statement causes the JavaScript runtime to pause execution and start a debugger if one is available, such as when browser developer tools are open.", "This can be useful during development, but should not be left in production code."],
|
|
13
|
-
suggestions: ["Remove the `debugger` statement before shipping this code to users."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { DebuggerStatement: (node, { sourceFile }) => {
|
|
17
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
18
|
-
context.report({
|
|
19
|
-
message: "noDebugger",
|
|
20
|
-
range,
|
|
21
|
-
suggestions: [{
|
|
22
|
-
id: "removeDebugger",
|
|
23
|
-
range,
|
|
24
|
-
text: ""
|
|
25
|
-
}]
|
|
26
|
-
});
|
|
27
|
-
} } };
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
//#endregion
|
|
31
|
-
export { debuggerStatements_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports switch statements where the default clause is not last.";
|
|
3
|
-
readonly id: "defaultCaseLast";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "defaultCaseShouldBeLast", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
import { nullThrows } from "@flint.fyi/utils";
|
|
5
|
-
//#region src/rules/defaultCaseLast.ts
|
|
6
|
-
var defaultCaseLast_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports switch statements where the default clause is not last.",
|
|
9
|
-
id: "defaultCaseLast",
|
|
10
|
-
presets: ["logical", "logicalStrict"]
|
|
11
|
-
},
|
|
12
|
-
messages: { defaultCaseShouldBeLast: {
|
|
13
|
-
primary: "Default clauses in switch statements should be last.",
|
|
14
|
-
secondary: ["Placing the default clause in a position other than last can lead to confusion and unexpected behavior.", "While the default clause is executed when no case matches, having it in the middle of other cases makes the control flow harder to follow."],
|
|
15
|
-
suggestions: ["Move the default clause to the end of the switch statement to improve code clarity."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
return { visitors: { SwitchStatement: (node, { sourceFile }) => {
|
|
19
|
-
const clauses = node.caseBlock.clauses;
|
|
20
|
-
const defaultClauseIndex = clauses.findIndex((clause) => clause.kind === SyntaxKind.DefaultClause);
|
|
21
|
-
if (defaultClauseIndex === -1 || defaultClauseIndex === clauses.length - 1) return;
|
|
22
|
-
const defaultClause = nullThrows(clauses[defaultClauseIndex], "Default clause is expected to be present by prior length check");
|
|
23
|
-
context.report({
|
|
24
|
-
message: "defaultCaseShouldBeLast",
|
|
25
|
-
range: {
|
|
26
|
-
begin: defaultClause.getStart(sourceFile),
|
|
27
|
-
end: defaultClause.getStart(sourceFile) + 7
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
} } };
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
//#endregion
|
|
34
|
-
export { defaultCaseLast_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Enforce default parameters to be last.";
|
|
3
|
-
readonly id: "defaultParameterLast";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "defaultParameterLast", undefined>;
|
|
9
|
-
export default _default;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/defaultParameterLast.ts
|
|
4
|
-
var defaultParameterLast_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Enforce default parameters to be last.",
|
|
7
|
-
id: "defaultParameterLast",
|
|
8
|
-
presets: ["javascript"]
|
|
9
|
-
},
|
|
10
|
-
messages: { defaultParameterLast: {
|
|
11
|
-
primary: "Default parameters should be last to allow omitting optional tail arguments.",
|
|
12
|
-
secondary: ["Putting default parameters last allows function calls to omit optional tail arguments.", "Non-default parameters after default ones must always be explicitly provided."],
|
|
13
|
-
suggestions: ["Move the default parameter to the end of the parameter list."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
function checkNode(node, { sourceFile }) {
|
|
17
|
-
let hasSeenDefaultParameter = false;
|
|
18
|
-
for (const parameter of node.parameters) {
|
|
19
|
-
if (parameter.dotDotDotToken) continue;
|
|
20
|
-
if (parameter.questionToken || parameter.initializer) {
|
|
21
|
-
hasSeenDefaultParameter = true;
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
if (hasSeenDefaultParameter) context.report({
|
|
25
|
-
message: "defaultParameterLast",
|
|
26
|
-
range: getTSNodeRange(parameter, sourceFile)
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return { visitors: {
|
|
31
|
-
ArrowFunction: checkNode,
|
|
32
|
-
Constructor: checkNode,
|
|
33
|
-
FunctionDeclaration: checkNode,
|
|
34
|
-
FunctionExpression: checkNode,
|
|
35
|
-
MethodDeclaration: checkNode
|
|
36
|
-
} };
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//#endregion
|
|
40
|
-
export { defaultParameterLast_default as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Disallow using code marked as @deprecated.";
|
|
3
|
-
readonly id: "deprecated";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "deprecated", undefined>;
|
|
9
|
-
export default _default;
|