@flint.fyi/ts 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{lib/plugin.d.ts → dist/index.d.mts} +360 -365
- package/dist/index.mjs +22467 -0
- package/package.json +10 -10
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/plugin.js +0 -621
- package/lib/rules/accessorPairGroups.d.ts +0 -10
- package/lib/rules/accessorPairGroups.js +0 -48
- package/lib/rules/accessorPairTypes.d.ts +0 -10
- package/lib/rules/accessorPairTypes.js +0 -72
- package/lib/rules/accessorThisRecursion.d.ts +0 -10
- package/lib/rules/accessorThisRecursion.js +0 -65
- package/lib/rules/anyArguments.d.ts +0 -10
- package/lib/rules/anyArguments.js +0 -234
- package/lib/rules/anyAssignments.d.ts +0 -10
- package/lib/rules/anyAssignments.js +0 -265
- package/lib/rules/anyCalls.d.ts +0 -10
- package/lib/rules/anyCalls.js +0 -68
- package/lib/rules/anyMemberAccess.d.ts +0 -10
- package/lib/rules/anyMemberAccess.js +0 -85
- package/lib/rules/anyReturns.d.ts +0 -10
- package/lib/rules/anyReturns.js +0 -102
- package/lib/rules/arguments.d.ts +0 -10
- package/lib/rules/arguments.js +0 -38
- package/lib/rules/arrayCallbackReturns.d.ts +0 -10
- package/lib/rules/arrayCallbackReturns.js +0 -73
- package/lib/rules/arrayConstructors.d.ts +0 -10
- package/lib/rules/arrayConstructors.js +0 -47
- package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -10
- package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -54
- package/lib/rules/arrayElementDeletions.d.ts +0 -10
- package/lib/rules/arrayElementDeletions.js +0 -43
- package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -10
- package/lib/rules/arrayEmptyCallbackSlots.js +0 -45
- package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -10
- package/lib/rules/arrayExistenceChecksConsistency.js +0 -86
- package/lib/rules/arrayFilteredFinds.d.ts +0 -10
- package/lib/rules/arrayFilteredFinds.js +0 -80
- package/lib/rules/arrayFinds.d.ts +0 -10
- package/lib/rules/arrayFinds.js +0 -41
- package/lib/rules/arrayFlatMapMethods.d.ts +0 -10
- package/lib/rules/arrayFlatMapMethods.js +0 -47
- package/lib/rules/arrayFlatMethods.d.ts +0 -10
- package/lib/rules/arrayFlatMethods.js +0 -83
- package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -10
- package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -33
- package/lib/rules/arrayIncludes.d.ts +0 -10
- package/lib/rules/arrayIncludes.js +0 -59
- package/lib/rules/arrayIncludesMethods.d.ts +0 -10
- package/lib/rules/arrayIncludesMethods.js +0 -37
- package/lib/rules/arrayIndexOfMethods.d.ts +0 -10
- package/lib/rules/arrayIndexOfMethods.js +0 -51
- package/lib/rules/arrayLoops.d.ts +0 -10
- package/lib/rules/arrayLoops.js +0 -36
- package/lib/rules/arrayMapIdentities.d.ts +0 -10
- package/lib/rules/arrayMapIdentities.js +0 -74
- package/lib/rules/arrayMutableReverses.d.ts +0 -10
- package/lib/rules/arrayMutableReverses.js +0 -39
- package/lib/rules/arrayMutableSorts.d.ts +0 -10
- package/lib/rules/arrayMutableSorts.js +0 -72
- package/lib/rules/arrayReduceTypeArguments.d.ts +0 -10
- package/lib/rules/arrayReduceTypeArguments.js +0 -64
- package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -10
- package/lib/rules/arraySliceUnnecessaryEnd.js +0 -51
- package/lib/rules/arraySomeMethods.d.ts +0 -10
- package/lib/rules/arraySomeMethods.js +0 -77
- package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -10
- package/lib/rules/arrayTernarySpreadingConsistency.js +0 -74
- package/lib/rules/arrayTypes.d.ts +0 -17
- package/lib/rules/arrayTypes.js +0 -111
- package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -10
- package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -97
- package/lib/rules/asConstAssertions.d.ts +0 -10
- package/lib/rules/asConstAssertions.js +0 -57
- package/lib/rules/assignmentOperatorShorthands.d.ts +0 -10
- package/lib/rules/assignmentOperatorShorthands.js +0 -47
- package/lib/rules/asyncFunctionAwaits.d.ts +0 -10
- package/lib/rules/asyncFunctionAwaits.js +0 -55
- package/lib/rules/asyncPromiseExecutors.d.ts +0 -10
- package/lib/rules/asyncPromiseExecutors.js +0 -41
- package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -10
- package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -52
- package/lib/rules/atAccesses.d.ts +0 -10
- package/lib/rules/atAccesses.js +0 -52
- package/lib/rules/builtinCoercions.d.ts +0 -10
- package/lib/rules/builtinCoercions.js +0 -117
- package/lib/rules/builtinConstructorNews.d.ts +0 -10
- package/lib/rules/builtinConstructorNews.js +0 -89
- package/lib/rules/caseDeclarations.d.ts +0 -10
- package/lib/rules/caseDeclarations.js +0 -40
- package/lib/rules/caseDuplicates.d.ts +0 -10
- package/lib/rules/caseDuplicates.js +0 -36
- package/lib/rules/caseFallthroughs.d.ts +0 -10
- package/lib/rules/caseFallthroughs.js +0 -76
- package/lib/rules/catchCallbackTypes.d.ts +0 -10
- package/lib/rules/catchCallbackTypes.js +0 -67
- package/lib/rules/caughtVariableNames.d.ts +0 -10
- package/lib/rules/caughtVariableNames.js +0 -40
- package/lib/rules/chainedAssignments.d.ts +0 -10
- package/lib/rules/chainedAssignments.js +0 -33
- package/lib/rules/charAtComparisons.d.ts +0 -10
- package/lib/rules/charAtComparisons.js +0 -58
- package/lib/rules/classAssignments.d.ts +0 -10
- package/lib/rules/classAssignments.js +0 -29
- package/lib/rules/classFieldDeclarations.d.ts +0 -10
- package/lib/rules/classFieldDeclarations.js +0 -40
- package/lib/rules/classLiteralProperties.d.ts +0 -10
- package/lib/rules/classLiteralProperties.js +0 -45
- package/lib/rules/classMemberDuplicates.d.ts +0 -10
- package/lib/rules/classMemberDuplicates.js +0 -71
- package/lib/rules/classMethodsThis.d.ts +0 -14
- package/lib/rules/classMethodsThis.js +0 -124
- package/lib/rules/combinedPushes.d.ts +0 -10
- package/lib/rules/combinedPushes.js +0 -56
- package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -10
- package/lib/rules/consecutiveNonNullAssertions.js +0 -39
- package/lib/rules/consoleCalls.d.ts +0 -9
- package/lib/rules/consoleCalls.js +0 -28
- package/lib/rules/constantAssignments.d.ts +0 -10
- package/lib/rules/constantAssignments.js +0 -41
- package/lib/rules/constructorGenericCalls.d.ts +0 -16
- package/lib/rules/constructorGenericCalls.js +0 -138
- package/lib/rules/constructorReturns.d.ts +0 -10
- package/lib/rules/constructorReturns.js +0 -41
- package/lib/rules/constructorSupers.d.ts +0 -10
- package/lib/rules/constructorSupers.js +0 -77
- package/lib/rules/dateConstructorClones.d.ts +0 -10
- package/lib/rules/dateConstructorClones.js +0 -37
- package/lib/rules/dateNowTimestamps.d.ts +0 -10
- package/lib/rules/dateNowTimestamps.js +0 -57
- package/lib/rules/debuggerStatements.d.ts +0 -10
- package/lib/rules/debuggerStatements.js +0 -33
- package/lib/rules/defaultCaseLast.d.ts +0 -10
- package/lib/rules/defaultCaseLast.js +0 -36
- package/lib/rules/defaultParameterLast.d.ts +0 -10
- package/lib/rules/defaultParameterLast.js +0 -42
- package/lib/rules/deprecated.d.ts +0 -10
- package/lib/rules/deprecated.js +0 -243
- package/lib/rules/destructuringConsistency.d.ts +0 -10
- package/lib/rules/destructuringConsistency.js +0 -112
- package/lib/rules/duplicateArguments.d.ts +0 -10
- package/lib/rules/duplicateArguments.js +0 -45
- package/lib/rules/dynamicDeletes.d.ts +0 -10
- package/lib/rules/dynamicDeletes.js +0 -37
- package/lib/rules/elseIfDuplicates.d.ts +0 -10
- package/lib/rules/elseIfDuplicates.js +0 -38
- package/lib/rules/elseReturns.d.ts +0 -10
- package/lib/rules/elseReturns.js +0 -67
- package/lib/rules/emptyBlocks.d.ts +0 -10
- package/lib/rules/emptyBlocks.js +0 -56
- package/lib/rules/emptyDestructures.d.ts +0 -10
- package/lib/rules/emptyDestructures.js +0 -34
- package/lib/rules/emptyEnums.d.ts +0 -10
- package/lib/rules/emptyEnums.js +0 -30
- package/lib/rules/emptyExports.d.ts +0 -10
- package/lib/rules/emptyExports.js +0 -60
- package/lib/rules/emptyFiles.d.ts +0 -10
- package/lib/rules/emptyFiles.js +0 -44
- package/lib/rules/emptyFunctions.d.ts +0 -10
- package/lib/rules/emptyFunctions.js +0 -61
- package/lib/rules/emptyModuleAttributes.d.ts +0 -10
- package/lib/rules/emptyModuleAttributes.js +0 -35
- package/lib/rules/emptyObjectTypes.d.ts +0 -10
- package/lib/rules/emptyObjectTypes.js +0 -47
- package/lib/rules/emptyStaticBlocks.d.ts +0 -10
- package/lib/rules/emptyStaticBlocks.js +0 -42
- package/lib/rules/emptyTypeParameterLists.d.ts +0 -10
- package/lib/rules/emptyTypeParameterLists.js +0 -31
- package/lib/rules/enumInitializers.d.ts +0 -10
- package/lib/rules/enumInitializers.js +0 -54
- package/lib/rules/enumMemberLiterals.d.ts +0 -10
- package/lib/rules/enumMemberLiterals.js +0 -39
- package/lib/rules/enumValueConsistency.d.ts +0 -10
- package/lib/rules/enumValueConsistency.js +0 -56
- package/lib/rules/enumValueDuplicates.d.ts +0 -10
- package/lib/rules/enumValueDuplicates.js +0 -60
- package/lib/rules/equalityOperatorNegations.d.ts +0 -9
- package/lib/rules/equalityOperatorNegations.js +0 -60
- package/lib/rules/equalityOperators.d.ts +0 -10
- package/lib/rules/equalityOperators.js +0 -44
- package/lib/rules/errorMessages.d.ts +0 -10
- package/lib/rules/errorMessages.js +0 -60
- package/lib/rules/errorSubclassProperties.d.ts +0 -10
- package/lib/rules/errorSubclassProperties.js +0 -144
- package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -10
- package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -55
- package/lib/rules/escapeSequenceCasing.d.ts +0 -10
- package/lib/rules/escapeSequenceCasing.js +0 -75
- package/lib/rules/evals.d.ts +0 -10
- package/lib/rules/evals.js +0 -31
- package/lib/rules/evolvingVariableTypes.d.ts +0 -10
- package/lib/rules/evolvingVariableTypes.js +0 -33
- package/lib/rules/exceptionAssignments.d.ts +0 -10
- package/lib/rules/exceptionAssignments.js +0 -39
- package/lib/rules/explicitAnys.d.ts +0 -10
- package/lib/rules/explicitAnys.js +0 -55
- package/lib/rules/exponentiationOperators.d.ts +0 -10
- package/lib/rules/exponentiationOperators.js +0 -34
- package/lib/rules/exportFromImports.d.ts +0 -10
- package/lib/rules/exportFromImports.js +0 -119
- package/lib/rules/exportMutables.d.ts +0 -10
- package/lib/rules/exportMutables.js +0 -33
- package/lib/rules/exportUniqueNames.d.ts +0 -10
- package/lib/rules/exportUniqueNames.js +0 -65
- package/lib/rules/extraneousClasses.d.ts +0 -16
- package/lib/rules/extraneousClasses.js +0 -111
- package/lib/rules/fetchMethodBodies.d.ts +0 -10
- package/lib/rules/fetchMethodBodies.js +0 -72
- package/lib/rules/finallyStatementSafety.d.ts +0 -10
- package/lib/rules/finallyStatementSafety.js +0 -47
- package/lib/rules/forDirections.d.ts +0 -10
- package/lib/rules/forDirections.js +0 -75
- package/lib/rules/forInArrays.d.ts +0 -10
- package/lib/rules/forInArrays.js +0 -46
- package/lib/rules/forInGuards.d.ts +0 -9
- package/lib/rules/forInGuards.js +0 -44
- package/lib/rules/functionApplySpreads.d.ts +0 -10
- package/lib/rules/functionApplySpreads.js +0 -63
- package/lib/rules/functionAssignments.d.ts +0 -10
- package/lib/rules/functionAssignments.js +0 -29
- package/lib/rules/functionCurryingRedundancy.d.ts +0 -10
- package/lib/rules/functionCurryingRedundancy.js +0 -53
- package/lib/rules/functionDeclarationStyles.d.ts +0 -16
- package/lib/rules/functionDeclarationStyles.js +0 -67
- package/lib/rules/functionNameMatches.d.ts +0 -10
- package/lib/rules/functionNameMatches.js +0 -74
- package/lib/rules/functionNewCalls.d.ts +0 -10
- package/lib/rules/functionNewCalls.js +0 -42
- package/lib/rules/generatorFunctionYields.d.ts +0 -10
- package/lib/rules/generatorFunctionYields.js +0 -50
- package/lib/rules/getterReturns.d.ts +0 -10
- package/lib/rules/getterReturns.js +0 -65
- package/lib/rules/globalAssignments.d.ts +0 -10
- package/lib/rules/globalAssignments.js +0 -47
- package/lib/rules/globalObjectCalls.d.ts +0 -10
- package/lib/rules/globalObjectCalls.js +0 -42
- package/lib/rules/globalThisAliases.d.ts +0 -10
- package/lib/rules/globalThisAliases.js +0 -47
- package/lib/rules/impliedEvals.d.ts +0 -10
- package/lib/rules/impliedEvals.js +0 -130
- package/lib/rules/importEmptyBlocks.d.ts +0 -10
- package/lib/rules/importEmptyBlocks.js +0 -53
- package/lib/rules/importTypeSideEffects.d.ts +0 -10
- package/lib/rules/importTypeSideEffects.js +0 -31
- package/lib/rules/indexedObjectTypes.d.ts +0 -16
- package/lib/rules/indexedObjectTypes.js +0 -83
- package/lib/rules/instanceOfArrays.d.ts +0 -10
- package/lib/rules/instanceOfArrays.js +0 -31
- package/lib/rules/irregularWhitespaces.d.ts +0 -16
- package/lib/rules/irregularWhitespaces.js +0 -97
- package/lib/rules/isNaNComparisons.d.ts +0 -10
- package/lib/rules/isNaNComparisons.js +0 -43
- package/lib/rules/literalConstructorWrappers.d.ts +0 -10
- package/lib/rules/literalConstructorWrappers.js +0 -64
- package/lib/rules/mathMethods.d.ts +0 -10
- package/lib/rules/mathMethods.js +0 -128
- package/lib/rules/meaninglessVoidOperators.d.ts +0 -10
- package/lib/rules/meaninglessVoidOperators.js +0 -39
- package/lib/rules/misleadingVoidExpressions.d.ts +0 -10
- package/lib/rules/misleadingVoidExpressions.js +0 -128
- package/lib/rules/moduleSpecifierLists.d.ts +0 -10
- package/lib/rules/moduleSpecifierLists.js +0 -92
- package/lib/rules/multilineAmbiguities.d.ts +0 -10
- package/lib/rules/multilineAmbiguities.js +0 -64
- package/lib/rules/namedDefaultExports.d.ts +0 -10
- package/lib/rules/namedDefaultExports.js +0 -60
- package/lib/rules/namespaceDeclarations.d.ts +0 -14
- package/lib/rules/namespaceDeclarations.js +0 -37
- package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -10
- package/lib/rules/namespaceImplicitAmbientImports.js +0 -40
- package/lib/rules/namespaceKeywords.d.ts +0 -10
- package/lib/rules/namespaceKeywords.js +0 -40
- package/lib/rules/nativeObjectExtensions.d.ts +0 -10
- package/lib/rules/nativeObjectExtensions.js +0 -114
- package/lib/rules/negativeIndexLengthMethods.d.ts +0 -10
- package/lib/rules/negativeIndexLengthMethods.js +0 -180
- package/lib/rules/negativeZeroComparisons.d.ts +0 -10
- package/lib/rules/negativeZeroComparisons.js +0 -48
- package/lib/rules/nestedStandaloneIfs.d.ts +0 -10
- package/lib/rules/nestedStandaloneIfs.js +0 -105
- package/lib/rules/newDefinitions.d.ts +0 -10
- package/lib/rules/newDefinitions.js +0 -84
- package/lib/rules/newExpressions.d.ts +0 -10
- package/lib/rules/newExpressions.js +0 -38
- package/lib/rules/newNativeNonConstructors.d.ts +0 -10
- package/lib/rules/newNativeNonConstructors.js +0 -39
- package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -10
- package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -63
- package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -10
- package/lib/rules/nonNullAssertedOptionalChains.js +0 -69
- package/lib/rules/nonNullAssertionPlacement.d.ts +0 -10
- package/lib/rules/nonNullAssertionPlacement.js +0 -94
- package/lib/rules/nonNullableTypeAssertions.d.ts +0 -10
- package/lib/rules/nonNullableTypeAssertions.js +0 -78
- package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -10
- package/lib/rules/nonOctalDecimalEscapes.js +0 -48
- package/lib/rules/nullishCheckStyle.d.ts +0 -21
- package/lib/rules/nullishCheckStyle.js +0 -144
- package/lib/rules/nullishCoalescingOperators.d.ts +0 -22
- package/lib/rules/nullishCoalescingOperators.js +0 -323
- package/lib/rules/numberMethodRanges.d.ts +0 -10
- package/lib/rules/numberMethodRanges.js +0 -74
- package/lib/rules/numberStaticMethods.d.ts +0 -10
- package/lib/rules/numberStaticMethods.js +0 -53
- package/lib/rules/numericErasingOperations.d.ts +0 -10
- package/lib/rules/numericErasingOperations.js +0 -46
- package/lib/rules/numericLiteralParsing.d.ts +0 -10
- package/lib/rules/numericLiteralParsing.js +0 -66
- package/lib/rules/numericPrecision.d.ts +0 -10
- package/lib/rules/numericPrecision.js +0 -102
- package/lib/rules/numericSeparatorGroups.d.ts +0 -10
- package/lib/rules/numericSeparatorGroups.js +0 -101
- package/lib/rules/objectAssignSpreads.d.ts +0 -10
- package/lib/rules/objectAssignSpreads.js +0 -53
- package/lib/rules/objectCalls.d.ts +0 -10
- package/lib/rules/objectCalls.js +0 -38
- package/lib/rules/objectEntriesMethods.d.ts +0 -10
- package/lib/rules/objectEntriesMethods.js +0 -82
- package/lib/rules/objectHasOwns.d.ts +0 -10
- package/lib/rules/objectHasOwns.js +0 -50
- package/lib/rules/objectKeyDuplicates.d.ts +0 -10
- package/lib/rules/objectKeyDuplicates.js +0 -63
- package/lib/rules/objectProto.d.ts +0 -10
- package/lib/rules/objectProto.js +0 -50
- package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -10
- package/lib/rules/objectPrototypeBuiltIns.js +0 -54
- package/lib/rules/objectShorthand.d.ts +0 -10
- package/lib/rules/objectShorthand.js +0 -84
- package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -10
- package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -43
- package/lib/rules/objectTypeDefinitions.d.ts +0 -10
- package/lib/rules/objectTypeDefinitions.js +0 -34
- package/lib/rules/octalEscapes.d.ts +0 -10
- package/lib/rules/octalEscapes.js +0 -58
- package/lib/rules/octalNumbers.d.ts +0 -10
- package/lib/rules/octalNumbers.js +0 -55
- package/lib/rules/operatorAssignmentShorthand.d.ts +0 -10
- package/lib/rules/operatorAssignmentShorthand.js +0 -77
- package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -10
- package/lib/rules/overloadSignaturesAdjacent.js +0 -140
- package/lib/rules/parameterReassignments.d.ts +0 -10
- package/lib/rules/parameterReassignments.js +0 -45
- package/lib/rules/parseIntRadixes.d.ts +0 -10
- package/lib/rules/parseIntRadixes.js +0 -62
- package/lib/rules/propertyAccessNotation.d.ts +0 -13
- package/lib/rules/propertyAccessNotation.js +0 -119
- package/lib/rules/recursionOnlyArguments.d.ts +0 -10
- package/lib/rules/recursionOnlyArguments.js +0 -71
- package/lib/rules/redundantTypeConstituents.d.ts +0 -10
- package/lib/rules/redundantTypeConstituents.js +0 -277
- package/lib/rules/regexAllGlobalFlags.d.ts +0 -10
- package/lib/rules/regexAllGlobalFlags.js +0 -56
- package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -10
- package/lib/rules/regexAmbiguousInvalidity.js +0 -297
- package/lib/rules/regexCharacterClassRanges.d.ts +0 -10
- package/lib/rules/regexCharacterClassRanges.js +0 -137
- package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -10
- package/lib/rules/regexCharacterClassSetOperations.js +0 -81
- package/lib/rules/regexCharacterClasses.d.ts +0 -10
- package/lib/rules/regexCharacterClasses.js +0 -234
- package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -10
- package/lib/rules/regexConciseCharacterClassNegations.js +0 -52
- package/lib/rules/regexContradictoryAssertions.d.ts +0 -10
- package/lib/rules/regexContradictoryAssertions.js +0 -210
- package/lib/rules/regexControlCharacterEscapes.d.ts +0 -10
- package/lib/rules/regexControlCharacterEscapes.js +0 -130
- package/lib/rules/regexControlCharacters.d.ts +0 -10
- package/lib/rules/regexControlCharacters.js +0 -95
- package/lib/rules/regexDigitMatchers.d.ts +0 -10
- package/lib/rules/regexDigitMatchers.js +0 -180
- package/lib/rules/regexDollarEscapes.d.ts +0 -10
- package/lib/rules/regexDollarEscapes.js +0 -91
- package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -10
- package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -128
- package/lib/rules/regexEmptyAlternatives.d.ts +0 -10
- package/lib/rules/regexEmptyAlternatives.js +0 -140
- package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -10
- package/lib/rules/regexEmptyCapturingGroups.js +0 -67
- package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -10
- package/lib/rules/regexEmptyCharacterClasses.js +0 -68
- package/lib/rules/regexEmptyGroups.d.ts +0 -10
- package/lib/rules/regexEmptyGroups.js +0 -66
- package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -10
- package/lib/rules/regexEmptyLazyQuantifiers.js +0 -92
- package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -10
- package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -68
- package/lib/rules/regexEmptyStringLiterals.d.ts +0 -10
- package/lib/rules/regexEmptyStringLiterals.js +0 -66
- package/lib/rules/regexEscapeBackspaces.d.ts +0 -10
- package/lib/rules/regexEscapeBackspaces.js +0 -69
- package/lib/rules/regexExecutors.d.ts +0 -10
- package/lib/rules/regexExecutors.js +0 -58
- package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -10
- package/lib/rules/regexGraphemeStringLiterals.js +0 -51
- package/lib/rules/regexHexadecimalEscapes.d.ts +0 -10
- package/lib/rules/regexHexadecimalEscapes.js +0 -71
- package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -10
- package/lib/rules/regexIgnoreCaseFlags.js +0 -145
- package/lib/rules/regexInvisibleCharacters.d.ts +0 -10
- package/lib/rules/regexInvisibleCharacters.js +0 -90
- package/lib/rules/regexLetterCasing.d.ts +0 -10
- package/lib/rules/regexLetterCasing.js +0 -186
- package/lib/rules/regexLiterals.d.ts +0 -10
- package/lib/rules/regexLiterals.js +0 -92
- package/lib/rules/regexLookaroundAssertions.d.ts +0 -10
- package/lib/rules/regexLookaroundAssertions.js +0 -163
- package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -10
- package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -94
- package/lib/rules/regexMatchNotation.d.ts +0 -10
- package/lib/rules/regexMatchNotation.js +0 -139
- package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -10
- package/lib/rules/regexMisleadingCapturingGroups.js +0 -229
- package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -10
- package/lib/rules/regexMisleadingQuantifiers.js +0 -78
- package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -10
- package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -203
- package/lib/rules/regexNamedBackreferences.d.ts +0 -10
- package/lib/rules/regexNamedBackreferences.js +0 -48
- package/lib/rules/regexNamedCaptureGroups.d.ts +0 -9
- package/lib/rules/regexNamedCaptureGroups.js +0 -67
- package/lib/rules/regexNamedReplacements.d.ts +0 -10
- package/lib/rules/regexNamedReplacements.js +0 -93
- package/lib/rules/regexNonStandardFlags.d.ts +0 -10
- package/lib/rules/regexNonStandardFlags.js +0 -66
- package/lib/rules/regexObscureRanges.d.ts +0 -10
- package/lib/rules/regexObscureRanges.js +0 -93
- package/lib/rules/regexOctalEscapes.d.ts +0 -10
- package/lib/rules/regexOctalEscapes.js +0 -70
- package/lib/rules/regexPlusQuantifiers.d.ts +0 -10
- package/lib/rules/regexPlusQuantifiers.js +0 -68
- package/lib/rules/regexPredefinedAssertions.d.ts +0 -10
- package/lib/rules/regexPredefinedAssertions.js +0 -127
- package/lib/rules/regexQuestionQuantifiers.d.ts +0 -10
- package/lib/rules/regexQuestionQuantifiers.js +0 -104
- package/lib/rules/regexRepeatQuantifiers.d.ts +0 -10
- package/lib/rules/regexRepeatQuantifiers.js +0 -96
- package/lib/rules/regexResultArrayGroups.d.ts +0 -10
- package/lib/rules/regexResultArrayGroups.js +0 -187
- package/lib/rules/regexSetOperationOptimizations.d.ts +0 -10
- package/lib/rules/regexSetOperationOptimizations.js +0 -177
- package/lib/rules/regexStandaloneBackslashes.d.ts +0 -10
- package/lib/rules/regexStandaloneBackslashes.js +0 -59
- package/lib/rules/regexStarQuantifiers.d.ts +0 -10
- package/lib/rules/regexStarQuantifiers.js +0 -68
- package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -10
- package/lib/rules/regexSuperLinearBacktracking.js +0 -98
- package/lib/rules/regexSuperLinearMoves.d.ts +0 -10
- package/lib/rules/regexSuperLinearMoves.js +0 -142
- package/lib/rules/regexTestMethods.d.ts +0 -10
- package/lib/rules/regexTestMethods.js +0 -83
- package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -10
- package/lib/rules/regexUnicodeCodepointEscapes.js +0 -107
- package/lib/rules/regexUnicodeEscapes.d.ts +0 -9
- package/lib/rules/regexUnicodeEscapes.js +0 -97
- package/lib/rules/regexUnicodeFlag.d.ts +0 -9
- package/lib/rules/regexUnicodeFlag.js +0 -97
- package/lib/rules/regexUnicodeProperties.d.ts +0 -10
- package/lib/rules/regexUnicodeProperties.js +0 -133
- package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryAssertions.js +0 -223
- package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -10
- package/lib/rules/regexUnnecessaryBackreferences.js +0 -125
- package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -10
- package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -74
- package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -10
- package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -108
- package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryDisjunctions.js +0 -118
- package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -10
- package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -144
- package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -10
- package/lib/rules/regexUnnecessaryEscapes.js +0 -136
- package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -80
- package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -198
- package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -93
- package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -104
- package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -69
- package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -10
- package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -137
- package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -10
- package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -123
- package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -10
- package/lib/rules/regexUnnecessarySetOperands.js +0 -136
- package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -10
- package/lib/rules/regexUnusedCapturingGroups.js +0 -69
- package/lib/rules/regexUnusedFlags.d.ts +0 -10
- package/lib/rules/regexUnusedFlags.js +0 -116
- package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnusedLazyQuantifiers.js +0 -63
- package/lib/rules/regexUnusedQuantifiers.d.ts +0 -10
- package/lib/rules/regexUnusedQuantifiers.js +0 -63
- package/lib/rules/regexValidity.d.ts +0 -10
- package/lib/rules/regexValidity.js +0 -146
- package/lib/rules/regexWordMatchers.d.ts +0 -10
- package/lib/rules/regexWordMatchers.js +0 -146
- package/lib/rules/regexZeroQuantifiers.d.ts +0 -10
- package/lib/rules/regexZeroQuantifiers.js +0 -60
- package/lib/rules/requireImports.d.ts +0 -10
- package/lib/rules/requireImports.js +0 -48
- package/lib/rules/responseJsonMethods.d.ts +0 -10
- package/lib/rules/responseJsonMethods.js +0 -51
- package/lib/rules/restrictedIdentifiers.d.ts +0 -13
- package/lib/rules/restrictedIdentifiers.js +0 -41
- package/lib/rules/restrictedImports.d.ts +0 -27
- package/lib/rules/restrictedImports.js +0 -166
- package/lib/rules/returnAssignments.d.ts +0 -10
- package/lib/rules/returnAssignments.js +0 -38
- package/lib/rules/returnThisTypes.d.ts +0 -10
- package/lib/rules/returnThisTypes.js +0 -94
- package/lib/rules/ruleCreator.d.ts +0 -3
- package/lib/rules/ruleCreator.js +0 -17
- package/lib/rules/selfAssignments.d.ts +0 -10
- package/lib/rules/selfAssignments.js +0 -29
- package/lib/rules/sequences.d.ts +0 -10
- package/lib/rules/sequences.js +0 -28
- package/lib/rules/setSizeLengthChecks.d.ts +0 -10
- package/lib/rules/setSizeLengthChecks.js +0 -48
- package/lib/rules/setterReturns.d.ts +0 -10
- package/lib/rules/setterReturns.js +0 -41
- package/lib/rules/shadowedRestrictedNames.d.ts +0 -10
- package/lib/rules/shadowedRestrictedNames.js +0 -68
- package/lib/rules/singleVariableDeclarations.d.ts +0 -10
- package/lib/rules/singleVariableDeclarations.js +0 -36
- package/lib/rules/sizeComparisonOperators.d.ts +0 -16
- package/lib/rules/sizeComparisonOperators.js +0 -148
- package/lib/rules/sparseArrays.d.ts +0 -10
- package/lib/rules/sparseArrays.js +0 -43
- package/lib/rules/staticMemberOnlyClasses.d.ts +0 -10
- package/lib/rules/staticMemberOnlyClasses.js +0 -77
- package/lib/rules/stringCaseMismatches.d.ts +0 -10
- package/lib/rules/stringCaseMismatches.js +0 -58
- package/lib/rules/stringCodePoints.d.ts +0 -10
- package/lib/rules/stringCodePoints.js +0 -50
- package/lib/rules/stringSliceMethods.d.ts +0 -10
- package/lib/rules/stringSliceMethods.js +0 -47
- package/lib/rules/stringStartsEndsWith.d.ts +0 -10
- package/lib/rules/stringStartsEndsWith.js +0 -79
- package/lib/rules/structuredCloneMethods.d.ts +0 -10
- package/lib/rules/structuredCloneMethods.js +0 -39
- package/lib/rules/symbolDescriptions.d.ts +0 -10
- package/lib/rules/symbolDescriptions.js +0 -32
- package/lib/rules/thisAliases.d.ts +0 -10
- package/lib/rules/thisAliases.js +0 -44
- package/lib/rules/thisBeforeSuper.d.ts +0 -10
- package/lib/rules/thisBeforeSuper.js +0 -86
- package/lib/rules/throwErrors.d.ts +0 -10
- package/lib/rules/throwErrors.js +0 -61
- package/lib/rules/topLevelAwaits.d.ts +0 -10
- package/lib/rules/topLevelAwaits.js +0 -49
- package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -10
- package/lib/rules/tripleSlashReferenceValidity.js +0 -54
- package/lib/rules/tripleSlashReferences.d.ts +0 -10
- package/lib/rules/tripleSlashReferences.js +0 -34
- package/lib/rules/tsComments.d.ts +0 -22
- package/lib/rules/tsComments.js +0 -130
- package/lib/rules/tslintComments.d.ts +0 -10
- package/lib/rules/tslintComments.js +0 -36
- package/lib/rules/typeAssertionStyles.d.ts +0 -10
- package/lib/rules/typeAssertionStyles.js +0 -32
- package/lib/rules/typeImports.d.ts +0 -20
- package/lib/rules/typeImports.js +0 -283
- package/lib/rules/typeofComparisons.d.ts +0 -10
- package/lib/rules/typeofComparisons.js +0 -58
- package/lib/rules/unassignedVariables.d.ts +0 -10
- package/lib/rules/unassignedVariables.js +0 -34
- package/lib/rules/undefinedTypeofChecks.d.ts +0 -10
- package/lib/rules/undefinedTypeofChecks.js +0 -41
- package/lib/rules/undefinedVariables.d.ts +0 -10
- package/lib/rules/undefinedVariables.js +0 -39
- package/lib/rules/unicodeBOMs.d.ts +0 -10
- package/lib/rules/unicodeBOMs.js +0 -39
- package/lib/rules/unnecessaryBinds.d.ts +0 -10
- package/lib/rules/unnecessaryBinds.js +0 -78
- package/lib/rules/unnecessaryBlocks.d.ts +0 -10
- package/lib/rules/unnecessaryBlocks.js +0 -60
- package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -10
- package/lib/rules/unnecessaryBooleanCasts.js +0 -58
- package/lib/rules/unnecessaryCatches.d.ts +0 -10
- package/lib/rules/unnecessaryCatches.js +0 -48
- package/lib/rules/unnecessaryComparisons.d.ts +0 -10
- package/lib/rules/unnecessaryComparisons.js +0 -300
- package/lib/rules/unnecessaryConcatenation.d.ts +0 -10
- package/lib/rules/unnecessaryConcatenation.js +0 -28
- package/lib/rules/unnecessaryEscapes.d.ts +0 -10
- package/lib/rules/unnecessaryEscapes.js +0 -134
- package/lib/rules/unnecessaryMathClamps.d.ts +0 -10
- package/lib/rules/unnecessaryMathClamps.js +0 -114
- package/lib/rules/unnecessaryNumericFractions.d.ts +0 -10
- package/lib/rules/unnecessaryNumericFractions.js +0 -50
- package/lib/rules/unnecessaryRenames.d.ts +0 -10
- package/lib/rules/unnecessaryRenames.js +0 -92
- package/lib/rules/unnecessaryTernaries.d.ts +0 -10
- package/lib/rules/unnecessaryTernaries.js +0 -88
- package/lib/rules/unnecessaryUseStricts.d.ts +0 -10
- package/lib/rules/unnecessaryUseStricts.js +0 -40
- package/lib/rules/unsafeNegations.d.ts +0 -10
- package/lib/rules/unsafeNegations.js +0 -38
- package/lib/rules/utils/collectAccessorPairs.d.ts +0 -12
- package/lib/rules/utils/collectAccessorPairs.js +0 -29
- package/lib/rules/utils/countCommentsInRange.d.ts +0 -3
- package/lib/rules/utils/countCommentsInRange.js +0 -12
- package/lib/rules/utils/discriminateAnyType.d.ts +0 -16
- package/lib/rules/utils/discriminateAnyType.js +0 -38
- package/lib/rules/utils/equalityOperators.d.ts +0 -9
- package/lib/rules/utils/equalityOperators.js +0 -36
- package/lib/rules/utils/forEachReturnStatement.d.ts +0 -3
- package/lib/rules/utils/forEachReturnStatement.js +0 -29
- package/lib/rules/utils/formatReportedType.d.ts +0 -4
- package/lib/rules/utils/formatReportedType.js +0 -9
- package/lib/rules/utils/getConstrainedType.d.ts +0 -3
- package/lib/rules/utils/getConstrainedType.js +0 -9
- package/lib/rules/utils/getFunctionName.d.ts +0 -3
- package/lib/rules/utils/getFunctionName.js +0 -16
- package/lib/rules/utils/getRegExpConstruction.d.ts +0 -10
- package/lib/rules/utils/getRegExpConstruction.js +0 -26
- package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -7
- package/lib/rules/utils/getRegExpLiteralDetails.js +0 -13
- package/lib/rules/utils/getThisExpression.d.ts +0 -3
- package/lib/rules/utils/getThisExpression.js +0 -16
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -3
- package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -13
- package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -3
- package/lib/rules/utils/isBuiltinSymbolLike.js +0 -33
- package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -4
- package/lib/rules/utils/isDirectEqualityCheck.js +0 -29
- package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
- package/lib/rules/utils/isErrorSubclass.js +0 -27
- package/lib/rules/utils/isInBooleanContext.d.ts +0 -3
- package/lib/rules/utils/isInBooleanContext.js +0 -22
- package/lib/rules/utils/isTypeRecursive.d.ts +0 -3
- package/lib/rules/utils/isTypeRecursive.js +0 -8
- package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -15
- package/lib/rules/utils/isUnsafeAssignment.js +0 -45
- package/lib/rules/utils/operators.d.ts +0 -5
- package/lib/rules/utils/operators.js +0 -35
- package/lib/rules/utils/parseRegexpAst.d.ts +0 -2
- package/lib/rules/utils/parseRegexpAst.js +0 -17
- package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -3
- package/lib/rules/utils/parseRegexpAstFull.js +0 -18
- package/lib/rules/utils/skipParentheses.d.ts +0 -3
- package/lib/rules/utils/skipParentheses.js +0 -10
- package/lib/rules/variableDeletions.d.ts +0 -10
- package/lib/rules/variableDeletions.js +0 -35
- package/lib/rules/voidOperator.d.ts +0 -10
- package/lib/rules/voidOperator.js +0 -34
- package/lib/rules/withStatements.d.ts +0 -10
- package/lib/rules/withStatements.js +0 -30
- package/lib/rules/wrapperObjects.d.ts +0 -10
- package/lib/rules/wrapperObjects.js +0 -36
- package/lib/type-utils/getSpecifierNames.d.ts +0 -3
- package/lib/type-utils/getSpecifierNames.js +0 -9
- package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -3
- package/lib/type-utils/isDeclaredInModuleBlock.js +0 -14
- package/lib/type-utils/isFromFile.d.ts +0 -3
- package/lib/type-utils/isFromFile.js +0 -13
- package/lib/type-utils/isFromPackage.d.ts +0 -3
- package/lib/type-utils/isFromPackage.js +0 -16
- package/lib/type-utils/matchesSpecifier.d.ts +0 -4
- package/lib/type-utils/matchesSpecifier.js +0 -20
- package/lib/type-utils/schemas.d.ts +0 -15
- package/lib/type-utils/schemas.js +0 -25
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import { z } from "zod/v4";
|
|
5
|
-
//#region src/rules/classMethodsThis.ts
|
|
6
|
-
function classImplementsSomething(classNode) {
|
|
7
|
-
return classNode.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ImplementsKeyword) ?? false;
|
|
8
|
-
}
|
|
9
|
-
function containsThis(node) {
|
|
10
|
-
switch (node.kind) {
|
|
11
|
-
case ts.SyntaxKind.ClassDeclaration:
|
|
12
|
-
case ts.SyntaxKind.ClassExpression: {
|
|
13
|
-
const classNode = node;
|
|
14
|
-
for (const member of classNode.members) if (ts.isPropertyDeclaration(member) && ts.isComputedPropertyName(member.name) && containsThis(member.name.expression)) return true;
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
case ts.SyntaxKind.ClassStaticBlockDeclaration:
|
|
18
|
-
case ts.SyntaxKind.FunctionDeclaration:
|
|
19
|
-
case ts.SyntaxKind.FunctionExpression: return false;
|
|
20
|
-
case ts.SyntaxKind.SuperKeyword:
|
|
21
|
-
case ts.SyntaxKind.ThisKeyword: return true;
|
|
22
|
-
default: return ts.forEachChild(node, containsThis) ?? false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function getMemberDisplayName(member, sourceFile) {
|
|
26
|
-
const name = member.name;
|
|
27
|
-
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) return name.text;
|
|
28
|
-
if (ts.isPrivateIdentifier(name)) return name.text;
|
|
29
|
-
if (ts.isComputedPropertyName(name)) {
|
|
30
|
-
const expr = name.expression;
|
|
31
|
-
if (ts.isStringLiteral(expr) || ts.isNoSubstitutionTemplateLiteral(expr) || ts.isNumericLiteral(expr)) return expr.text;
|
|
32
|
-
return `[${expr.getText(sourceFile)}]`;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function hasModifier(modifiers, kind) {
|
|
36
|
-
return modifiers?.some((modifier) => modifier.kind === kind) ?? false;
|
|
37
|
-
}
|
|
38
|
-
function isPublicMember(member) {
|
|
39
|
-
if (ts.isPrivateIdentifier(member.name)) return false;
|
|
40
|
-
const modifiers = member.modifiers;
|
|
41
|
-
if (!modifiers) return true;
|
|
42
|
-
if (modifiers.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword || m.kind === ts.SyntaxKind.ProtectedKeyword)) return false;
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
function shouldSkipMember(member, classNode, options) {
|
|
46
|
-
if (hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword)) return true;
|
|
47
|
-
if (options.ignoreOverrideMethods && hasModifier(member.modifiers, ts.SyntaxKind.OverrideKeyword)) return true;
|
|
48
|
-
const implementsInterface = classImplementsSomething(classNode);
|
|
49
|
-
const ignoreImpl = options.ignoreClassesThatImplementAnInterface;
|
|
50
|
-
if (implementsInterface && ignoreImpl) {
|
|
51
|
-
if (ignoreImpl === true) return true;
|
|
52
|
-
if (isPublicMember(member)) return true;
|
|
53
|
-
}
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
var classMethodsThis_default = ruleCreator.createRule(typescriptLanguage, {
|
|
57
|
-
about: {
|
|
58
|
-
description: "Reports class methods that do not use `this`.",
|
|
59
|
-
id: "classMethodsThis",
|
|
60
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
61
|
-
},
|
|
62
|
-
messages: { missingThis: {
|
|
63
|
-
primary: "Expected 'this' to be used by class {{ kind }} '{{ name }}'.",
|
|
64
|
-
secondary: ["Methods that don't use `this` could be static methods or standalone functions.", "Using instance methods that don't access instance state can be misleading."],
|
|
65
|
-
suggestions: ["Add the `static` keyword to make this a static method.", "Extract this to a standalone function if it doesn't need class context."]
|
|
66
|
-
} },
|
|
67
|
-
options: {
|
|
68
|
-
ignoreClassesThatImplementAnInterface: z.union([z.boolean(), z.literal("public-fields")]).default(false).describe("Whether to ignore classes that implement interfaces. Set to 'public-fields' to only ignore public members."),
|
|
69
|
-
ignoreOverrideMethods: z.boolean().default(false).describe("Whether to ignore members with the 'override' modifier.")
|
|
70
|
-
},
|
|
71
|
-
setup(context) {
|
|
72
|
-
function reportMember(member, kind, sourceFile, reportFromStart) {
|
|
73
|
-
const name = getMemberDisplayName(member, sourceFile);
|
|
74
|
-
if (!name) return;
|
|
75
|
-
const beginNode = reportFromStart ? member : member.name;
|
|
76
|
-
context.report({
|
|
77
|
-
data: {
|
|
78
|
-
kind,
|
|
79
|
-
name
|
|
80
|
-
},
|
|
81
|
-
message: "missingThis",
|
|
82
|
-
range: {
|
|
83
|
-
begin: beginNode.getStart(sourceFile),
|
|
84
|
-
end: member.name.getEnd()
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
function checkMethod(member, classNode, sourceFile, options) {
|
|
89
|
-
if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, "method", sourceFile, false);
|
|
90
|
-
}
|
|
91
|
-
function checkAccessor(member, classNode, sourceFile, options, kind) {
|
|
92
|
-
if (member.body && !shouldSkipMember(member, classNode, options) && !containsThis(member.body)) reportMember(member, kind, sourceFile, true);
|
|
93
|
-
}
|
|
94
|
-
function checkPropertyInitializerFunction(member, classNode, sourceFile, options) {
|
|
95
|
-
if (!member.initializer) return;
|
|
96
|
-
if (member.initializer.kind !== ts.SyntaxKind.ArrowFunction && member.initializer.kind !== ts.SyntaxKind.FunctionExpression) return;
|
|
97
|
-
if (!shouldSkipMember(member, classNode, options) && !containsThis(member.initializer.body)) reportMember(member, "method", sourceFile, false);
|
|
98
|
-
}
|
|
99
|
-
function checkClass(node, { options, sourceFile }) {
|
|
100
|
-
for (const member of node.members) switch (member.kind) {
|
|
101
|
-
case ts.SyntaxKind.GetAccessor:
|
|
102
|
-
checkAccessor(member, node, sourceFile, options, "getter");
|
|
103
|
-
break;
|
|
104
|
-
case ts.SyntaxKind.MethodDeclaration:
|
|
105
|
-
checkMethod(member, node, sourceFile, options);
|
|
106
|
-
break;
|
|
107
|
-
case ts.SyntaxKind.PropertyDeclaration:
|
|
108
|
-
checkPropertyInitializerFunction(member, node, sourceFile, options);
|
|
109
|
-
break;
|
|
110
|
-
case ts.SyntaxKind.SetAccessor:
|
|
111
|
-
checkAccessor(member, node, sourceFile, options, "setter");
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return { visitors: {
|
|
116
|
-
ClassDeclaration: checkClass,
|
|
117
|
-
ClassExpression: checkClass
|
|
118
|
-
} };
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
//#endregion
|
|
122
|
-
export { classMethodsThis_default as default };
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=classMethodsThis.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports consecutive array.push() calls that could be combined into a single call.";
|
|
3
|
-
readonly id: "combinedPushes";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "combinePushes", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=combinedPushes.d.ts.map
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/combinedPushes.ts
|
|
5
|
-
var combinedPushes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports consecutive array.push() calls that could be combined into a single call.",
|
|
8
|
-
id: "combinedPushes",
|
|
9
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { combinePushes: {
|
|
12
|
-
primary: "Consecutive `.push()` calls can be combined into a single call.",
|
|
13
|
-
secondary: ["Multiple consecutive `.push()` calls on the same array can be combined.", "Use `.push(a, b, c)` instead of separate `.push(a)`, `.push(b)`, `.push(c)` calls."],
|
|
14
|
-
suggestions: ["Combine consecutive `.push()` calls into one."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function isArrayPushCall(node, typeChecker) {
|
|
18
|
-
return ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "push" && typeChecker.isArrayType(typeChecker.getTypeAtLocation(node.expression.expression));
|
|
19
|
-
}
|
|
20
|
-
function getArrayName(node, sourceFile) {
|
|
21
|
-
return ts.isPropertyAccessExpression(node.expression) && node.expression.expression.getText(sourceFile);
|
|
22
|
-
}
|
|
23
|
-
function isPushCallStatement(statement, sourceFile, typeChecker) {
|
|
24
|
-
if (!ts.isExpressionStatement(statement) || !ts.isCallExpression(statement.expression) || !isArrayPushCall(statement.expression, typeChecker)) return;
|
|
25
|
-
const arrayName = getArrayName(statement.expression, sourceFile);
|
|
26
|
-
if (!arrayName) return;
|
|
27
|
-
return {
|
|
28
|
-
arrayName,
|
|
29
|
-
callExpression: statement.expression
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function checkNode({ statements }, { sourceFile, typeChecker }) {
|
|
33
|
-
for (let i = 0; i < statements.length - 1; i += 1) {
|
|
34
|
-
const currentStatement = statements[i];
|
|
35
|
-
const currentPush = isPushCallStatement(currentStatement, sourceFile, typeChecker);
|
|
36
|
-
if (!currentPush) continue;
|
|
37
|
-
const nextStatement = statements[i + 1];
|
|
38
|
-
if (isPushCallStatement(nextStatement, sourceFile, typeChecker)?.arrayName === currentPush.arrayName) context.report({
|
|
39
|
-
message: "combinePushes",
|
|
40
|
-
range: {
|
|
41
|
-
begin: currentStatement.getStart(sourceFile),
|
|
42
|
-
end: nextStatement.getEnd()
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return { visitors: {
|
|
48
|
-
Block: checkNode,
|
|
49
|
-
SourceFile: checkNode
|
|
50
|
-
} };
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
//#endregion
|
|
54
|
-
export { combinedPushes_default as default };
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=combinedPushes.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports unnecessary extra non-null assertions.";
|
|
3
|
-
readonly id: "consecutiveNonNullAssertions";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "consecutiveNonNullAssertion", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=consecutiveNonNullAssertions.d.ts.map
|
|
@@ -1,39 +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/consecutiveNonNullAssertions.ts
|
|
5
|
-
var consecutiveNonNullAssertions_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports unnecessary extra non-null assertions.",
|
|
8
|
-
id: "consecutiveNonNullAssertions",
|
|
9
|
-
presets: ["logical"]
|
|
10
|
-
},
|
|
11
|
-
messages: { consecutiveNonNullAssertion: {
|
|
12
|
-
primary: "Consecutive non-null assertion operators are unnecessary.",
|
|
13
|
-
secondary: ["The non-null assertion operator (`!`) is used to assert that a value is not null or undefined.", "Using it multiple times in a row does not do anything, and just takes up space unnecessarily."],
|
|
14
|
-
suggestions: ["Remove the redundant non-null assertion operator."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { NonNullExpression: (node) => {
|
|
18
|
-
if (node.parent.kind !== SyntaxKind.NonNullExpression) return;
|
|
19
|
-
context.report({
|
|
20
|
-
fix: {
|
|
21
|
-
range: {
|
|
22
|
-
begin: node.end,
|
|
23
|
-
end: node.parent.end
|
|
24
|
-
},
|
|
25
|
-
text: ""
|
|
26
|
-
},
|
|
27
|
-
message: "consecutiveNonNullAssertion",
|
|
28
|
-
range: {
|
|
29
|
-
begin: node.end - 1,
|
|
30
|
-
end: node.parent.end
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
} } };
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
//#endregion
|
|
37
|
-
export { consecutiveNonNullAssertions_default as default };
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=consecutiveNonNullAssertions.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports calls to console methods.";
|
|
3
|
-
readonly id: "consoleCalls";
|
|
4
|
-
} & {
|
|
5
|
-
readonly pluginId: string;
|
|
6
|
-
readonly url: string;
|
|
7
|
-
}, "noConsole", undefined>;
|
|
8
|
-
export default _default;
|
|
9
|
-
//# sourceMappingURL=consoleCalls.d.ts.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalVariable, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/consoleCalls.ts
|
|
5
|
-
var consoleCalls_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports calls to console methods.",
|
|
8
|
-
id: "consoleCalls"
|
|
9
|
-
},
|
|
10
|
-
messages: { noConsole: {
|
|
11
|
-
primary: "Console method calls should not be used in production code.",
|
|
12
|
-
secondary: ["Console methods like `console.log`, `console.warn`, and `console.error` are useful during development but should typically be removed before shipping to production.", "Consider using a proper logging library that can be configured for different environments."],
|
|
13
|
-
suggestions: ["Remove the console call before shipping this code to users."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
|
|
17
|
-
if (!ts.isPropertyAccessExpression(node.expression) || !ts.isIdentifier(node.expression.expression) || node.expression.expression.text !== "console" || !isGlobalVariable(node.expression.expression, typeChecker)) return;
|
|
18
|
-
context.report({
|
|
19
|
-
message: "noConsole",
|
|
20
|
-
range: getTSNodeRange(node, sourceFile)
|
|
21
|
-
});
|
|
22
|
-
} } };
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
//#endregion
|
|
26
|
-
export { consoleCalls_default as default };
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=consoleCalls.js.map
|
|
@@ -1,10 +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;
|
|
10
|
-
//# sourceMappingURL=constantAssignments.d.ts.map
|
|
@@ -1,41 +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 };
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=constantAssignments.js.map
|
|
@@ -1,16 +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;
|
|
16
|
-
//# sourceMappingURL=constructorGenericCalls.d.ts.map
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import { z } from "zod/v4";
|
|
5
|
-
//#region src/rules/constructorGenericCalls.ts
|
|
6
|
-
const builtInTypedArrays = 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.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 };
|
|
137
|
-
|
|
138
|
-
//# sourceMappingURL=constructorGenericCalls.js.map
|
|
@@ -1,10 +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;
|
|
10
|
-
//# sourceMappingURL=constructorReturns.d.ts.map
|
|
@@ -1,41 +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 };
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=constructorReturns.js.map
|
|
@@ -1,10 +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;
|
|
10
|
-
//# sourceMappingURL=constructorSupers.d.ts.map
|
|
@@ -1,77 +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 };
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=constructorSupers.js.map
|
|
@@ -1,10 +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;
|
|
10
|
-
//# sourceMappingURL=dateConstructorClones.d.ts.map
|