@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,9 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports for-in loops without an if statement to filter inherited properties.";
|
|
3
|
-
readonly id: "forInGuards";
|
|
4
|
-
} & {
|
|
5
|
-
readonly pluginId: string;
|
|
6
|
-
readonly url: string;
|
|
7
|
-
}, "missingGuard", undefined>;
|
|
8
|
-
export default _default;
|
|
9
|
-
//# sourceMappingURL=forInGuards.d.ts.map
|
package/lib/rules/forInGuards.js
DELETED
|
@@ -1,44 +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/forInGuards.ts
|
|
5
|
-
function isIfStatementGuard(node) {
|
|
6
|
-
if (ts.isContinueStatement(node.thenStatement)) return true;
|
|
7
|
-
if (ts.isBlock(node.thenStatement) && node.thenStatement.statements.length === 1 && ts.isContinueStatement(node.thenStatement.statements[0])) return true;
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
var forInGuards_default = ruleCreator.createRule(typescriptLanguage, {
|
|
11
|
-
about: {
|
|
12
|
-
description: "Reports for-in loops without an if statement to filter inherited properties.",
|
|
13
|
-
id: "forInGuards"
|
|
14
|
-
},
|
|
15
|
-
messages: { missingGuard: {
|
|
16
|
-
primary: "For-in loop body should be wrapped in an if statement to filter inherited properties.",
|
|
17
|
-
secondary: ["Looping over objects with a for-in loop will include properties inherited through the prototype chain.", "This behavior can lead to unexpected items being iterated over."],
|
|
18
|
-
suggestions: ["Wrap the loop body with `if (Object.hasOwn(object, key))` or `if (Object.prototype.hasOwnProperty.call(object, key))`."]
|
|
19
|
-
} },
|
|
20
|
-
setup(context) {
|
|
21
|
-
return { visitors: { ForInStatement: (node, { sourceFile }) => {
|
|
22
|
-
switch (node.statement.kind) {
|
|
23
|
-
case ts.SyntaxKind.EmptyStatement:
|
|
24
|
-
case ts.SyntaxKind.IfStatement: return;
|
|
25
|
-
case ts.SyntaxKind.Block: {
|
|
26
|
-
if (!node.statement.statements.length) return;
|
|
27
|
-
const firstStatement = node.statement.statements[0];
|
|
28
|
-
if (firstStatement.kind === ts.SyntaxKind.IfStatement && (node.statement.statements.length === 1 || isIfStatementGuard(firstStatement))) return;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
context.report({
|
|
32
|
-
message: "missingGuard",
|
|
33
|
-
range: {
|
|
34
|
-
begin: node.getStart(sourceFile),
|
|
35
|
-
end: node.statement.getStart(sourceFile)
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
} } };
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
//#endregion
|
|
42
|
-
export { forInGuards_default as default };
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=forInGuards.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Prefer the spread operator over `.apply()` calls.";
|
|
3
|
-
readonly id: "functionApplySpreads";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferSpread", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=functionApplySpreads.d.ts.map
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, hasSameTokens, isFunction, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts, { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/functionApplySpreads.ts
|
|
5
|
-
var functionApplySpreads_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Prefer the spread operator over `.apply()` calls.",
|
|
8
|
-
id: "functionApplySpreads",
|
|
9
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { preferSpread: {
|
|
12
|
-
primary: "Use the spread operator instead of `.apply()`.",
|
|
13
|
-
secondary: ["The spread operator (`...`) provides cleaner syntax for variadic function calls.", "`func.apply(thisArg, args)` can be replaced with `func.call(thisArg, ...args)` or `thisArg.func(...args)`."],
|
|
14
|
-
suggestions: ["Replace `.apply(thisArg, args)` with spread syntax like `func(...args)`."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function isNullOrUndefined(node) {
|
|
18
|
-
return node.kind === SyntaxKind.NullKeyword || node.kind === SyntaxKind.Identifier && node.text === "undefined";
|
|
19
|
-
}
|
|
20
|
-
function isApplyCall(node) {
|
|
21
|
-
if (node.expression.kind !== SyntaxKind.PropertyAccessExpression) return false;
|
|
22
|
-
const propertyAccess = node.expression;
|
|
23
|
-
if (propertyAccess.name.kind !== SyntaxKind.Identifier) return false;
|
|
24
|
-
return propertyAccess.name.text === "apply";
|
|
25
|
-
}
|
|
26
|
-
function getVariadicArgumentsNode(node) {
|
|
27
|
-
if (!isApplyCall(node) || node.arguments.length !== 2) return;
|
|
28
|
-
const argumentsNode = node.arguments[1];
|
|
29
|
-
if (argumentsNode.kind === SyntaxKind.ArrayLiteralExpression || argumentsNode.kind === SyntaxKind.SpreadElement) return;
|
|
30
|
-
return argumentsNode;
|
|
31
|
-
}
|
|
32
|
-
function getExpectedThis(node) {
|
|
33
|
-
const applied = node.expression;
|
|
34
|
-
if (applied.kind === SyntaxKind.PropertyAccessExpression) return applied.expression;
|
|
35
|
-
}
|
|
36
|
-
function isValidThisArg(expectedThis, thisArg, sourceFile) {
|
|
37
|
-
return expectedThis ? hasSameTokens(expectedThis, thisArg, sourceFile) : isNullOrUndefined(thisArg);
|
|
38
|
-
}
|
|
39
|
-
return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
|
|
40
|
-
const argumentsNode = getVariadicArgumentsNode(node);
|
|
41
|
-
if (!argumentsNode) return;
|
|
42
|
-
if (!ts.isPropertyAccessExpression(node.expression) || !isFunction(node.expression.expression, typeChecker)) return;
|
|
43
|
-
const expectedThis = getExpectedThis(node.expression);
|
|
44
|
-
const thisArg = node.arguments[0];
|
|
45
|
-
if (!isValidThisArg(expectedThis, thisArg, sourceFile)) return;
|
|
46
|
-
const argumentsText = argumentsNode.getText(sourceFile);
|
|
47
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
48
|
-
const fixedText = `${node.expression.expression.getText(sourceFile)}(...${argumentsText})`;
|
|
49
|
-
context.report({
|
|
50
|
-
fix: {
|
|
51
|
-
range,
|
|
52
|
-
text: fixedText
|
|
53
|
-
},
|
|
54
|
-
message: "preferSpread",
|
|
55
|
-
range
|
|
56
|
-
});
|
|
57
|
-
} } };
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
//#endregion
|
|
61
|
-
export { functionApplySpreads_default as default };
|
|
62
|
-
|
|
63
|
-
//# sourceMappingURL=functionApplySpreads.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports reassigning variables declared with function declarations.";
|
|
3
|
-
readonly id: "functionAssignments";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noFunctionAssignment", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=functionAssignments.d.ts.map
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getModifyingReferences, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
//#region src/rules/functionAssignments.ts
|
|
4
|
-
var functionAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
5
|
-
about: {
|
|
6
|
-
description: "Reports reassigning variables declared with function declarations.",
|
|
7
|
-
id: "functionAssignments",
|
|
8
|
-
presets: ["javascript"]
|
|
9
|
-
},
|
|
10
|
-
messages: { noFunctionAssignment: {
|
|
11
|
-
primary: "Variables declared with function declarations should not be reassigned.",
|
|
12
|
-
secondary: ["Reassigning a function declaration can make code harder to understand and maintain.", "Function declarations are hoisted to the top of their scope, and reassigning them can lead to unexpected behavior."],
|
|
13
|
-
suggestions: ["Use a function expression or const variable instead if you need to reassign the function."]
|
|
14
|
-
} },
|
|
15
|
-
setup(context) {
|
|
16
|
-
return { visitors: { FunctionDeclaration: (node, { sourceFile }) => {
|
|
17
|
-
if (!node.name) return;
|
|
18
|
-
const modifyingReferences = getModifyingReferences(node.name, sourceFile);
|
|
19
|
-
for (const reference of modifyingReferences) context.report({
|
|
20
|
-
message: "noFunctionAssignment",
|
|
21
|
-
range: getTSNodeRange(reference, sourceFile)
|
|
22
|
-
});
|
|
23
|
-
} } };
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
//#endregion
|
|
27
|
-
export { functionAssignments_default as default };
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=functionAssignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using `.apply()` or `.call()` or when the context (`this` value) provides no benefit.";
|
|
3
|
-
readonly id: "functionCurryingRedundancy";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "unnecessaryCall", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=functionCurryingRedundancy.d.ts.map
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { isFunction, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
import { nullThrows } from "@flint.fyi/utils";
|
|
5
|
-
//#region src/rules/functionCurryingRedundancy.ts
|
|
6
|
-
var functionCurryingRedundancy_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports using `.apply()` or `.call()` or when the context (`this` value) provides no benefit.",
|
|
9
|
-
id: "functionCurryingRedundancy",
|
|
10
|
-
presets: ["logical", "logicalStrict"]
|
|
11
|
-
},
|
|
12
|
-
messages: { unnecessaryCall: {
|
|
13
|
-
primary: "This \"currying\" of a function without a defined context does nothing and can be simplified.",
|
|
14
|
-
secondary: ["Using `.{{ method }}()` with null or undefined as the context provides no benefit over a direct function call.", "This adds unnecessary complexity and reduces code readability."],
|
|
15
|
-
suggestions: ["Replace the `.{{ method }}()` with a direct function call."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
|
|
19
|
-
if (node.expression.kind !== SyntaxKind.PropertyAccessExpression) return;
|
|
20
|
-
const method = node.expression.name.text;
|
|
21
|
-
if (method !== "call" && method !== "apply" || !node.arguments.length || !isFunction(node.expression.expression, typeChecker)) return;
|
|
22
|
-
const firstArgument = nullThrows(node.arguments[0], "First argument is expected to be present by prior length check");
|
|
23
|
-
if (firstArgument.kind !== SyntaxKind.NullKeyword && !(firstArgument.kind === SyntaxKind.Identifier && firstArgument.text === "undefined")) return;
|
|
24
|
-
const fixTextCreator = method === "apply" ? createApplyFixText : createCallFixText;
|
|
25
|
-
context.report({
|
|
26
|
-
data: { method },
|
|
27
|
-
fix: {
|
|
28
|
-
range: {
|
|
29
|
-
begin: node.getStart(sourceFile),
|
|
30
|
-
end: node.getEnd()
|
|
31
|
-
},
|
|
32
|
-
text: fixTextCreator(node.expression.expression.getText(sourceFile), node.arguments.slice(1), sourceFile)
|
|
33
|
-
},
|
|
34
|
-
message: "unnecessaryCall",
|
|
35
|
-
range: {
|
|
36
|
-
begin: node.expression.name.getStart(sourceFile) - 1,
|
|
37
|
-
end: node.getEnd()
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
} } };
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
function createApplyFixText(functionExpression, methodArguments, sourceFile) {
|
|
44
|
-
if (!methodArguments.length) return `${functionExpression}()`;
|
|
45
|
-
return `${functionExpression}(...${nullThrows(methodArguments[0], "First argument is expected to be present by prior length check").getText(sourceFile)})`;
|
|
46
|
-
}
|
|
47
|
-
function createCallFixText(functionExpression, methodArguments, sourceFile) {
|
|
48
|
-
return `${functionExpression}(${methodArguments.map((arg) => arg.getText(sourceFile)).join(", ")})`;
|
|
49
|
-
}
|
|
50
|
-
//#endregion
|
|
51
|
-
export { functionCurryingRedundancy_default as default };
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=functionCurryingRedundancy.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 functions that don't match the configured style (declaration vs expression).";
|
|
4
|
-
readonly id: "functionDeclarationStyles";
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferDeclaration" | "preferExpression", {
|
|
9
|
-
allowArrowFunctions: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
-
style: z.ZodDefault<z.ZodEnum<{
|
|
11
|
-
expression: "expression";
|
|
12
|
-
declaration: "declaration";
|
|
13
|
-
}>>;
|
|
14
|
-
}>;
|
|
15
|
-
export default _default;
|
|
16
|
-
//# sourceMappingURL=functionDeclarationStyles.d.ts.map
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import { z } from "zod/v4";
|
|
5
|
-
//#region src/rules/functionDeclarationStyles.ts
|
|
6
|
-
function isOverloadedDeclaration(node, sourceFile) {
|
|
7
|
-
if (!node.name) return false;
|
|
8
|
-
const statements = sourceFile.statements;
|
|
9
|
-
let count = 0;
|
|
10
|
-
for (const statement of statements) if (ts.isFunctionDeclaration(statement) && statement.name?.text === node.name.text) {
|
|
11
|
-
count++;
|
|
12
|
-
if (count > 1) return true;
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
var functionDeclarationStyles_default = ruleCreator.createRule(typescriptLanguage, {
|
|
17
|
-
about: {
|
|
18
|
-
description: "Reports functions that don't match the configured style (declaration vs expression).",
|
|
19
|
-
id: "functionDeclarationStyles"
|
|
20
|
-
},
|
|
21
|
-
messages: {
|
|
22
|
-
preferDeclaration: {
|
|
23
|
-
primary: "For consistency, this project prefers a function declaration instead of a function expression.",
|
|
24
|
-
secondary: ["Function declarations are hoisted and provide clearer intent for named functions."],
|
|
25
|
-
suggestions: ["Convert this function expression to a function declaration."]
|
|
26
|
-
},
|
|
27
|
-
preferExpression: {
|
|
28
|
-
primary: "For consistency, this project prefers a function expression instead of a function declaration.",
|
|
29
|
-
secondary: ["Function expressions assigned to variables provide consistent syntax with arrow functions."],
|
|
30
|
-
suggestions: ["Convert this function declaration to a function expression assigned to a variable."]
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
options: {
|
|
34
|
-
allowArrowFunctions: z.boolean().default(false).describe("Whether to allow arrow functions when style is 'declaration'."),
|
|
35
|
-
style: z.enum(["declaration", "expression"]).default("expression").describe("Which function style to enforce: 'declaration' for function declarations or 'expression' for function expressions.")
|
|
36
|
-
},
|
|
37
|
-
setup(context) {
|
|
38
|
-
return { visitors: {
|
|
39
|
-
FunctionDeclaration: (node, { options, sourceFile }) => {
|
|
40
|
-
if (options.style !== "expression" || !node.name || isOverloadedDeclaration(node, sourceFile)) return;
|
|
41
|
-
context.report({
|
|
42
|
-
message: "preferExpression",
|
|
43
|
-
range: getTSNodeRange(node.name, sourceFile)
|
|
44
|
-
});
|
|
45
|
-
},
|
|
46
|
-
VariableStatement: (node, { options, sourceFile }) => {
|
|
47
|
-
if (options.style !== "declaration") return;
|
|
48
|
-
for (const declaration of node.declarationList.declarations) switch (declaration.initializer?.kind) {
|
|
49
|
-
case ts.SyntaxKind.ArrowFunction:
|
|
50
|
-
if (!options.allowArrowFunctions) context.report({
|
|
51
|
-
message: "preferDeclaration",
|
|
52
|
-
range: getTSNodeRange(declaration.name, sourceFile)
|
|
53
|
-
});
|
|
54
|
-
break;
|
|
55
|
-
case ts.SyntaxKind.FunctionExpression: context.report({
|
|
56
|
-
message: "preferDeclaration",
|
|
57
|
-
range: getTSNodeRange(declaration.name, sourceFile)
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
} };
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
//#endregion
|
|
65
|
-
export { functionDeclarationStyles_default as default };
|
|
66
|
-
|
|
67
|
-
//# sourceMappingURL=functionDeclarationStyles.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports function names that don't match the variable or property they're assigned to.";
|
|
3
|
-
readonly id: "functionNameMatches";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "mismatch", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=functionNameMatches.d.ts.map
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/functionNameMatches.ts
|
|
5
|
-
function getNameText(name) {
|
|
6
|
-
return ts.isIdentifier(name) || ts.isPrivateIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name) ? name.text : void 0;
|
|
7
|
-
}
|
|
8
|
-
function getNameTextIfMismatched(functionName, name) {
|
|
9
|
-
const nameText = getNameText(name);
|
|
10
|
-
if (!nameText || nameText === functionName || !isValidIdentifier(nameText)) return;
|
|
11
|
-
return nameText;
|
|
12
|
-
}
|
|
13
|
-
function isValidIdentifier(name) {
|
|
14
|
-
return /^[\p{L}_$][\p{L}\d_$]*$/u.test(name);
|
|
15
|
-
}
|
|
16
|
-
var functionNameMatches_default = ruleCreator.createRule(typescriptLanguage, {
|
|
17
|
-
about: {
|
|
18
|
-
description: "Reports function names that don't match the variable or property they're assigned to.",
|
|
19
|
-
id: "functionNameMatches",
|
|
20
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
21
|
-
},
|
|
22
|
-
messages: { mismatch: {
|
|
23
|
-
primary: "Function name `{{ functionName }}` does not match assigned name `{{ assignedName }}`.",
|
|
24
|
-
secondary: ["When a named function expression is assigned to a variable or property, the function name should match to avoid confusion."],
|
|
25
|
-
suggestions: ["Rename the function to `{{ assignedName }}`", "Use an anonymous function."]
|
|
26
|
-
} },
|
|
27
|
-
setup(context) {
|
|
28
|
-
return { visitors: {
|
|
29
|
-
PropertyAssignment: (node, { sourceFile }) => {
|
|
30
|
-
if (!ts.isFunctionExpression(node.initializer) || !node.initializer.name) return;
|
|
31
|
-
const propertyName = getNameTextIfMismatched(node.initializer.name.text, node.name);
|
|
32
|
-
if (!propertyName) return;
|
|
33
|
-
context.report({
|
|
34
|
-
data: {
|
|
35
|
-
assignedName: propertyName,
|
|
36
|
-
functionName: node.initializer.name.text
|
|
37
|
-
},
|
|
38
|
-
message: "mismatch",
|
|
39
|
-
range: getTSNodeRange(node.initializer.name, sourceFile)
|
|
40
|
-
});
|
|
41
|
-
},
|
|
42
|
-
PropertyDeclaration: (node, { sourceFile }) => {
|
|
43
|
-
if (!node.initializer || !ts.isFunctionExpression(node.initializer) || node.name.kind !== ts.SyntaxKind.Identifier || !node.initializer.name) return;
|
|
44
|
-
const propertyName = getNameTextIfMismatched(node.initializer.name.text, node.name);
|
|
45
|
-
if (!propertyName) return;
|
|
46
|
-
context.report({
|
|
47
|
-
data: {
|
|
48
|
-
assignedName: propertyName,
|
|
49
|
-
functionName: node.initializer.name.text
|
|
50
|
-
},
|
|
51
|
-
message: "mismatch",
|
|
52
|
-
range: getTSNodeRange(node.initializer.name, sourceFile)
|
|
53
|
-
});
|
|
54
|
-
},
|
|
55
|
-
VariableDeclaration: (node, { sourceFile }) => {
|
|
56
|
-
if (!node.initializer || !ts.isFunctionExpression(node.initializer) || !node.initializer.name || !ts.isIdentifier(node.name)) return;
|
|
57
|
-
const variableName = getNameTextIfMismatched(node.initializer.name.text, node.name);
|
|
58
|
-
if (!variableName) return;
|
|
59
|
-
context.report({
|
|
60
|
-
data: {
|
|
61
|
-
assignedName: variableName,
|
|
62
|
-
functionName: node.initializer.name.text
|
|
63
|
-
},
|
|
64
|
-
message: "mismatch",
|
|
65
|
-
range: getTSNodeRange(node.initializer.name, sourceFile)
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
} };
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
//#endregion
|
|
72
|
-
export { functionNameMatches_default as default };
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=functionNameMatches.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using the Function constructor to create functions from strings.";
|
|
3
|
-
readonly id: "functionNewCalls";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noFunctionConstructor", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=functionNewCalls.d.ts.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclaration, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/functionNewCalls.ts
|
|
5
|
-
var functionNewCalls_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports using the Function constructor to create functions from strings.",
|
|
8
|
-
id: "functionNewCalls",
|
|
9
|
-
presets: ["logical"]
|
|
10
|
-
},
|
|
11
|
-
messages: { noFunctionConstructor: {
|
|
12
|
-
primary: "Dynamically creating functions with the Function constructor is insecure and slow.",
|
|
13
|
-
secondary: ["Using the `Function` constructor to create functions from strings is similar to `eval()` and introduces security risks and performance issues.", "Code passed to the Function constructor is executed in the global scope, making it harder to optimize and potentially allowing arbitrary code execution if user input is involved."],
|
|
14
|
-
suggestions: ["Define functions using function declarations (`function name() {}`) or arrow functions (`() => {}`) instead.", "If dynamic code generation is truly necessary, consider safer alternatives like passing functions as parameters or using a more constrained domain-specific approach."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
function checkNode(node, { sourceFile, typeChecker }) {
|
|
18
|
-
if (isFunctionConstructor(node, typeChecker)) context.report({
|
|
19
|
-
message: "noFunctionConstructor",
|
|
20
|
-
range: getTSNodeRange(node.expression, sourceFile)
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function isFunctionConstructor(node, typeChecker) {
|
|
24
|
-
if (node.expression.kind === SyntaxKind.Identifier) {
|
|
25
|
-
if (isGlobalDeclarationOfName(node.expression, "Function", typeChecker)) return true;
|
|
26
|
-
} else if (node.expression.kind === SyntaxKind.PropertyAccessExpression && isGlobalDeclaration(node.expression, typeChecker)) {
|
|
27
|
-
if (node.expression.name.text !== "Function") return false;
|
|
28
|
-
const object = node.expression.expression;
|
|
29
|
-
if (object.kind === SyntaxKind.Identifier) return object.text === "globalThis" || object.text === "window";
|
|
30
|
-
}
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
return { visitors: {
|
|
34
|
-
CallExpression: checkNode,
|
|
35
|
-
NewExpression: checkNode
|
|
36
|
-
} };
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//#endregion
|
|
40
|
-
export { functionNewCalls_default as default };
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=functionNewCalls.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports generator functions that do not yield values.";
|
|
3
|
-
readonly id: "generatorFunctionYields";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "missingYield", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=generatorFunctionYields.d.ts.map
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts, { SyntaxKind } from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/generatorFunctionYields.ts
|
|
6
|
-
var generatorFunctionYields_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports generator functions that do not yield values.",
|
|
9
|
-
id: "generatorFunctionYields",
|
|
10
|
-
presets: ["logical"]
|
|
11
|
-
},
|
|
12
|
-
messages: { missingYield: {
|
|
13
|
-
primary: "Generator functions must contain at least one yield expression to produce values.",
|
|
14
|
-
secondary: [
|
|
15
|
-
"Generator functions use the `function*` syntax to create iterators that can produce multiple values over time.",
|
|
16
|
-
"Without a yield expression, the generator will not produce any values and behaves like an empty iterator.",
|
|
17
|
-
"This is likely unintentional and indicates incomplete implementation or a misunderstanding of generator functions."
|
|
18
|
-
],
|
|
19
|
-
suggestions: ["Add a `yield` expression to produce values from the generator.", "If the function should not be a generator, remove the asterisk (`*`) from the function declaration."]
|
|
20
|
-
} },
|
|
21
|
-
setup(context) {
|
|
22
|
-
return { visitors: {
|
|
23
|
-
FunctionDeclaration: checkFunction,
|
|
24
|
-
FunctionExpression: checkFunction,
|
|
25
|
-
MethodDeclaration: checkFunction
|
|
26
|
-
} };
|
|
27
|
-
function checkFunction(node, { sourceFile }) {
|
|
28
|
-
if (!node.asteriskToken || !node.body || blockContainsYield(node.body)) return;
|
|
29
|
-
context.report({
|
|
30
|
-
message: "missingYield",
|
|
31
|
-
range: {
|
|
32
|
-
begin: node.asteriskToken.getStart(sourceFile),
|
|
33
|
-
end: node.asteriskToken.getEnd()
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
function blockContainsYield(block) {
|
|
40
|
-
function checkForYield(node) {
|
|
41
|
-
if (node.kind === SyntaxKind.YieldExpression) return true;
|
|
42
|
-
if (tsutils.isFunctionScopeBoundary(node)) return false;
|
|
43
|
-
return ts.forEachChild(node, checkForYield);
|
|
44
|
-
}
|
|
45
|
-
return ts.forEachChild(block, checkForYield);
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { generatorFunctionYields_default as default };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=generatorFunctionYields.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports getter functions that do not return values.";
|
|
3
|
-
readonly id: "getterReturns";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "missingReturn", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=getterReturns.d.ts.map
|
|
@@ -1,65 +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/getterReturns.ts
|
|
5
|
-
var getterReturns_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports getter functions that do not return values.",
|
|
8
|
-
id: "getterReturns",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { missingReturn: {
|
|
12
|
-
primary: "This getter implicitly returns `undefined` because it does not explicitly `return` a value.",
|
|
13
|
-
secondary: ["A `get` accessor is expected to return a value when the property is accessed.", "A getter without a return statement will implicitly return `undefined`, which is likely unintentional."],
|
|
14
|
-
suggestions: ["Add a return statement with the desired value.", "If the property should not have a value, consider using a regular method instead."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { GetAccessor: (node, { sourceFile }) => {
|
|
18
|
-
if (node.body && !statementsReturnValue(node.body.statements)) context.report({
|
|
19
|
-
message: "missingReturn",
|
|
20
|
-
range: {
|
|
21
|
-
begin: node.name.getStart(sourceFile),
|
|
22
|
-
end: node.name.getEnd()
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
} } };
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
function ifStatementReturnsValue(statement) {
|
|
29
|
-
return !!(statement.elseStatement && statementReturnsValue(statement.thenStatement) && statementReturnsValue(statement.elseStatement));
|
|
30
|
-
}
|
|
31
|
-
function statementReturnsValue(statement) {
|
|
32
|
-
switch (statement.kind) {
|
|
33
|
-
case SyntaxKind.Block: return statementsReturnValue(statement.statements);
|
|
34
|
-
case SyntaxKind.IfStatement: return ifStatementReturnsValue(statement);
|
|
35
|
-
case SyntaxKind.ReturnStatement: return statement.expression !== void 0;
|
|
36
|
-
case SyntaxKind.SwitchStatement: return switchStatementReturnsValue(statement);
|
|
37
|
-
case SyntaxKind.ThrowStatement: return true;
|
|
38
|
-
case SyntaxKind.TryStatement: return tryStatementReturnsValue(statement);
|
|
39
|
-
default: return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function statementsReturnValue(statements) {
|
|
43
|
-
return statements.some(statementReturnsValue);
|
|
44
|
-
}
|
|
45
|
-
function switchStatementReturnsValue(statement) {
|
|
46
|
-
const clauses = statement.caseBlock.clauses;
|
|
47
|
-
if (!clauses.length) return false;
|
|
48
|
-
let hasDefault = false;
|
|
49
|
-
for (const clause of clauses) {
|
|
50
|
-
if (clause.kind === SyntaxKind.DefaultClause) hasDefault = true;
|
|
51
|
-
if (!statementsReturnValue(clause.statements)) return false;
|
|
52
|
-
}
|
|
53
|
-
return hasDefault;
|
|
54
|
-
}
|
|
55
|
-
function tryStatementReturnsValue(statement) {
|
|
56
|
-
if (statement.finallyBlock && statementsReturnValue(statement.finallyBlock.statements)) return true;
|
|
57
|
-
const tryReturns = statementsReturnValue(statement.tryBlock.statements);
|
|
58
|
-
if (!statement.catchClause) return tryReturns;
|
|
59
|
-
const catchReturns = statementsReturnValue(statement.catchClause.block.statements);
|
|
60
|
-
return tryReturns && catchReturns;
|
|
61
|
-
}
|
|
62
|
-
//#endregion
|
|
63
|
-
export { getterReturns_default as default };
|
|
64
|
-
|
|
65
|
-
//# sourceMappingURL=getterReturns.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc.";
|
|
3
|
-
readonly id: "globalAssignments";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noGlobalAssign", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=globalAssignments.d.ts.map
|