@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,47 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalVariable, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/globalAssignments.ts
|
|
6
|
-
var globalAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc.",
|
|
9
|
-
id: "globalAssignments",
|
|
10
|
-
presets: ["javascript"]
|
|
11
|
-
},
|
|
12
|
-
messages: { noGlobalAssign: {
|
|
13
|
-
primary: "Read-only global variables should not be reassigned or modified.",
|
|
14
|
-
secondary: [
|
|
15
|
-
"Global variables like undefined, NaN, Infinity, and built-in objects like Object and Array are read-only and should not be modified.",
|
|
16
|
-
"Attempting to reassign these globals can lead to confusing behavior and potential bugs in your code.",
|
|
17
|
-
"In strict mode, reassigning these globals will throw a TypeError at runtime."
|
|
18
|
-
],
|
|
19
|
-
suggestions: ["Use a different variable name instead of shadowing or reassigning globals.", "If you need a similar name, consider using a more specific name that doesn't conflict with global variables."]
|
|
20
|
-
} },
|
|
21
|
-
setup(context) {
|
|
22
|
-
return { visitors: {
|
|
23
|
-
BinaryExpression: (node, { sourceFile, typeChecker }) => {
|
|
24
|
-
if (tsutils.isAssignmentKind(node.operatorToken.kind) && isGlobalVariable(node.left, typeChecker)) context.report({
|
|
25
|
-
message: "noGlobalAssign",
|
|
26
|
-
range: getTSNodeRange(node.left, sourceFile)
|
|
27
|
-
});
|
|
28
|
-
},
|
|
29
|
-
PostfixUnaryExpression: (node, { sourceFile, typeChecker }) => {
|
|
30
|
-
if (isGlobalVariable(node.operand, typeChecker)) context.report({
|
|
31
|
-
message: "noGlobalAssign",
|
|
32
|
-
range: getTSNodeRange(node.operand, sourceFile)
|
|
33
|
-
});
|
|
34
|
-
},
|
|
35
|
-
PrefixUnaryExpression: (node, { sourceFile, typeChecker }) => {
|
|
36
|
-
if ((node.operator === SyntaxKind.PlusPlusToken || node.operator === SyntaxKind.MinusMinusToken) && isGlobalVariable(node.operand, typeChecker)) context.report({
|
|
37
|
-
message: "noGlobalAssign",
|
|
38
|
-
range: getTSNodeRange(node.operand, sourceFile)
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
} };
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
//#endregion
|
|
45
|
-
export { globalAssignments_default as default };
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=globalAssignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports calling global objects like Math, JSON, or Reflect as functions.";
|
|
3
|
-
readonly id: "globalObjectCalls";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noGlobalObjectCall", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=globalObjectCalls.d.ts.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/globalObjectCalls.ts
|
|
5
|
-
const globalObjects = new Set([
|
|
6
|
-
"Atomics",
|
|
7
|
-
"JSON",
|
|
8
|
-
"Math",
|
|
9
|
-
"Reflect"
|
|
10
|
-
]);
|
|
11
|
-
var globalObjectCalls_default = ruleCreator.createRule(typescriptLanguage, {
|
|
12
|
-
about: {
|
|
13
|
-
description: "Reports calling global objects like Math, JSON, or Reflect as functions.",
|
|
14
|
-
id: "globalObjectCalls",
|
|
15
|
-
presets: ["javascript"]
|
|
16
|
-
},
|
|
17
|
-
messages: { noGlobalObjectCall: {
|
|
18
|
-
primary: "{{ name }} is not a function and cannot be called directly.",
|
|
19
|
-
secondary: ["{{ name }} is a built-in global object that provides utility methods and properties.", "It is not a constructor or function and cannot be called or instantiated."],
|
|
20
|
-
suggestions: ["Use the static methods available on {{ name }} instead (e.g., {{ name }}.methodName())."]
|
|
21
|
-
} },
|
|
22
|
-
setup(context) {
|
|
23
|
-
function reportGlobalObjectCall(expression, name, sourceFile) {
|
|
24
|
-
context.report({
|
|
25
|
-
data: { name },
|
|
26
|
-
message: "noGlobalObjectCall",
|
|
27
|
-
range: getTSNodeRange(expression, sourceFile)
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function checkNode({ expression }, { sourceFile }) {
|
|
31
|
-
if (expression.kind === SyntaxKind.Identifier && globalObjects.has(expression.text)) reportGlobalObjectCall(expression, expression.text, sourceFile);
|
|
32
|
-
}
|
|
33
|
-
return { visitors: {
|
|
34
|
-
CallExpression: checkNode,
|
|
35
|
-
NewExpression: checkNode
|
|
36
|
-
} };
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//#endregion
|
|
40
|
-
export { globalObjectCalls_default as default };
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=globalObjectCalls.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using window, self, or global instead of globalThis.";
|
|
3
|
-
readonly id: "globalThisAliases";
|
|
4
|
-
readonly presets: readonly ["stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferGlobalThis", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=globalThisAliases.d.ts.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { declarationIncludesGlobal, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/rules/globalThisAliases.ts
|
|
5
|
-
const globalAliases = new Set([
|
|
6
|
-
"global",
|
|
7
|
-
"self",
|
|
8
|
-
"window"
|
|
9
|
-
]);
|
|
10
|
-
function isOnlyGlobalDeclaration(node, typeChecker) {
|
|
11
|
-
const symbol = typeChecker.getSymbolAtLocation(node);
|
|
12
|
-
if (!symbol) return false;
|
|
13
|
-
const declarations = symbol.getDeclarations();
|
|
14
|
-
if (!declarations?.length) return false;
|
|
15
|
-
return declarations.every(declarationIncludesGlobal);
|
|
16
|
-
}
|
|
17
|
-
function isPropertyAccess(node) {
|
|
18
|
-
return ts.isPropertyAccessExpression(node.parent) && node.parent.name === node;
|
|
19
|
-
}
|
|
20
|
-
function isPropertyShorthand(node) {
|
|
21
|
-
return ts.isShorthandPropertyAssignment(node.parent) && node.parent.name === node;
|
|
22
|
-
}
|
|
23
|
-
var globalThisAliases_default = ruleCreator.createRule(typescriptLanguage, {
|
|
24
|
-
about: {
|
|
25
|
-
description: "Reports using window, self, or global instead of globalThis.",
|
|
26
|
-
id: "globalThisAliases",
|
|
27
|
-
presets: ["stylisticStrict"]
|
|
28
|
-
},
|
|
29
|
-
messages: { preferGlobalThis: {
|
|
30
|
-
primary: "Prefer the standard `globalThis` over the platform-specific `{{ name }}` for accessing the global object.",
|
|
31
|
-
secondary: ["`globalThis` is the standard way to access the global object across all JavaScript environments.", "Using `window`, `self`, or `global` ties your code to specific environments (browser, web worker, or Node.js)."],
|
|
32
|
-
suggestions: ["Replace `{{ name }}` with `globalThis`."]
|
|
33
|
-
} },
|
|
34
|
-
setup(context) {
|
|
35
|
-
return { visitors: { Identifier: (node, { sourceFile, typeChecker }) => {
|
|
36
|
-
if (globalAliases.has(node.text) && !isPropertyAccess(node) && !isPropertyShorthand(node) && isOnlyGlobalDeclaration(node, typeChecker)) context.report({
|
|
37
|
-
data: { name: node.text },
|
|
38
|
-
message: "preferGlobalThis",
|
|
39
|
-
range: getTSNodeRange(node, sourceFile)
|
|
40
|
-
});
|
|
41
|
-
} } };
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
//#endregion
|
|
45
|
-
export { globalThisAliases_default as default };
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=globalThisAliases.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor.";
|
|
3
|
-
readonly id: "impliedEvals";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "functionConstructor" | "impliedEval", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=impliedEvals.d.ts.map
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { isBuiltinSymbolLike } from "./utils/isBuiltinSymbolLike.js";
|
|
3
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
4
|
-
import * as ts$1 from "typescript";
|
|
5
|
-
import * as tsutils from "ts-api-utils";
|
|
6
|
-
//#region src/rules/impliedEvals.ts
|
|
7
|
-
const globalCandidates = new Set([
|
|
8
|
-
"global",
|
|
9
|
-
"globalThis",
|
|
10
|
-
"window"
|
|
11
|
-
]);
|
|
12
|
-
const evalLikeFunctions = new Set([
|
|
13
|
-
"execScript",
|
|
14
|
-
"setImmediate",
|
|
15
|
-
"setInterval",
|
|
16
|
-
"setTimeout"
|
|
17
|
-
]);
|
|
18
|
-
function getCalleeName(node) {
|
|
19
|
-
switch (node.kind) {
|
|
20
|
-
case ts$1.SyntaxKind.ElementAccessExpression:
|
|
21
|
-
if (ts$1.isIdentifier(node.expression) && globalCandidates.has(node.expression.text) && ts$1.isStringLiteral(node.argumentExpression)) return node.argumentExpression.text;
|
|
22
|
-
break;
|
|
23
|
-
case ts$1.SyntaxKind.Identifier: return node.text;
|
|
24
|
-
case ts$1.SyntaxKind.PropertyAccessExpression:
|
|
25
|
-
if (ts$1.isIdentifier(node.expression) && globalCandidates.has(node.expression.text)) return node.name.text;
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function isBind(node) {
|
|
30
|
-
switch (node.kind) {
|
|
31
|
-
case ts$1.SyntaxKind.Identifier: return node.text === "bind";
|
|
32
|
-
case ts$1.SyntaxKind.PropertyAccessExpression: return isBind(node.name);
|
|
33
|
-
default: return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function isDefinitelyString(type) {
|
|
37
|
-
if (tsutils.isTypeFlagSet(type, ts$1.TypeFlags.Any | ts$1.TypeFlags.Unknown | ts$1.TypeFlags.Never)) return false;
|
|
38
|
-
if (type.isUnion()) return type.types.every(isDefinitelyString);
|
|
39
|
-
return tsutils.isTypeFlagSet(type, ts$1.TypeFlags.StringLike);
|
|
40
|
-
}
|
|
41
|
-
function isFunction$1(node, typeChecker, program) {
|
|
42
|
-
switch (node.kind) {
|
|
43
|
-
case ts$1.SyntaxKind.ArrowFunction:
|
|
44
|
-
case ts$1.SyntaxKind.FunctionDeclaration:
|
|
45
|
-
case ts$1.SyntaxKind.FunctionExpression: return true;
|
|
46
|
-
case ts$1.SyntaxKind.CallExpression:
|
|
47
|
-
if (isBind(node.expression)) return true;
|
|
48
|
-
return !isDefinitelyString(typeChecker.getTypeAtLocation(node)) && isFunctionType(node, typeChecker, program);
|
|
49
|
-
case ts$1.SyntaxKind.NoSubstitutionTemplateLiteral:
|
|
50
|
-
case ts$1.SyntaxKind.StringLiteral:
|
|
51
|
-
case ts$1.SyntaxKind.TemplateExpression: return false;
|
|
52
|
-
default: return !isDefinitelyString(typeChecker.getTypeAtLocation(node)) && isFunctionType(node, typeChecker, program);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function isFunctionType(node, typeChecker, program) {
|
|
56
|
-
const type = typeChecker.getTypeAtLocation(node);
|
|
57
|
-
if (tsutils.isTypeFlagSet(type, ts$1.TypeFlags.Any | ts$1.TypeFlags.Unknown) || isBuiltinSymbolLike(program, type, "Function")) return true;
|
|
58
|
-
const symbol = type.getSymbol();
|
|
59
|
-
if (symbol && tsutils.isSymbolFlagSet(symbol, ts$1.SymbolFlags.Function | ts$1.SymbolFlags.Method)) return true;
|
|
60
|
-
return !!typeChecker.getSignaturesOfType(type, ts$1.SignatureKind.Call).length;
|
|
61
|
-
}
|
|
62
|
-
function isReferenceToGlobalFunction(node, typeChecker) {
|
|
63
|
-
if (ts$1.isPropertyAccessExpression(node.expression) || ts$1.isElementAccessExpression(node.expression)) return true;
|
|
64
|
-
const symbol = typeChecker.getSymbolAtLocation(node.expression);
|
|
65
|
-
if (!symbol) return true;
|
|
66
|
-
return !!symbol.getDeclarations()?.some((declaration) => {
|
|
67
|
-
const sourceFile = declaration.getSourceFile();
|
|
68
|
-
return sourceFile.hasNoDefaultLib || sourceFile.fileName.includes("node_modules/@types/node/") || /\/lib\.[^/]*\.d\.ts$/.test(sourceFile.fileName);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
var impliedEvals_default = ruleCreator.createRule(typescriptLanguage, {
|
|
72
|
-
about: {
|
|
73
|
-
description: "Reports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor.",
|
|
74
|
-
id: "impliedEvals",
|
|
75
|
-
presets: ["logical", "logicalStrict"]
|
|
76
|
-
},
|
|
77
|
-
messages: {
|
|
78
|
-
functionConstructor: {
|
|
79
|
-
primary: "Avoid using the unsafe Function constructor to create functions.",
|
|
80
|
-
secondary: ["The Function constructor evaluates strings as code, similar to eval().", "This makes the code harder to analyze, optimize, and can introduce security vulnerabilities."],
|
|
81
|
-
suggestions: ["Use a function expression or arrow function instead."]
|
|
82
|
-
},
|
|
83
|
-
impliedEval: {
|
|
84
|
-
primary: "Avoid passing unsafe strings to {{ name }}; pass a function instead.",
|
|
85
|
-
secondary: ["Passing a string to {{ name }} causes it to be evaluated as code, similar to eval().", "This makes the code harder to analyze, optimize, and can introduce security vulnerabilities."],
|
|
86
|
-
suggestions: ["Pass a function expression or arrow function as the first argument."]
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
setup(context) {
|
|
90
|
-
function checkCalleeFunction(node, { program, sourceFile, typeChecker }) {
|
|
91
|
-
if (!node.arguments?.length) return;
|
|
92
|
-
if (!isBuiltinSymbolLike(program, typeChecker.getTypeAtLocation(node.expression), "FunctionConstructor")) return;
|
|
93
|
-
context.report({
|
|
94
|
-
message: "functionConstructor",
|
|
95
|
-
range: getTSNodeRange(node.expression, sourceFile)
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
function checkCalleeEval(node, calleeName, { program, sourceFile, typeChecker }) {
|
|
99
|
-
const args = node.arguments;
|
|
100
|
-
if (!args?.length) return;
|
|
101
|
-
const handler = args[0];
|
|
102
|
-
if (!evalLikeFunctions.has(calleeName) || isFunction$1(handler, typeChecker, program) || !isReferenceToGlobalFunction(node, typeChecker)) return;
|
|
103
|
-
context.report({
|
|
104
|
-
data: { name: calleeName },
|
|
105
|
-
message: "impliedEval",
|
|
106
|
-
range: getTSNodeRange(handler, sourceFile)
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
function checkNode(node, services) {
|
|
110
|
-
const calleeName = getCalleeName(node.expression);
|
|
111
|
-
switch (calleeName) {
|
|
112
|
-
case "Function":
|
|
113
|
-
checkCalleeFunction(node, services);
|
|
114
|
-
break;
|
|
115
|
-
case void 0: return;
|
|
116
|
-
default:
|
|
117
|
-
checkCalleeEval(node, calleeName, services);
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return { visitors: {
|
|
122
|
-
CallExpression: checkNode,
|
|
123
|
-
NewExpression: checkNode
|
|
124
|
-
} };
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
//#endregion
|
|
128
|
-
export { impliedEvals_default as default };
|
|
129
|
-
|
|
130
|
-
//# sourceMappingURL=impliedEvals.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports empty named import blocks.";
|
|
3
|
-
readonly id: "importEmptyBlocks";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noEmptyNamedBlocksOnly" | "noEmptyNamedBlocksWithOther", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=importEmptyBlocks.d.ts.map
|
|
@@ -1,53 +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/importEmptyBlocks.ts
|
|
5
|
-
var importEmptyBlocks_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports empty named import blocks.",
|
|
8
|
-
id: "importEmptyBlocks",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: {
|
|
12
|
-
noEmptyNamedBlocksOnly: {
|
|
13
|
-
primary: "Empty named import blocks are unnecessary.",
|
|
14
|
-
secondary: ["An empty `{ }` in an import statement has no effect and can be removed."],
|
|
15
|
-
suggestions: ["Remove the entire import statement.", "Convert to a side-effect only import."]
|
|
16
|
-
},
|
|
17
|
-
noEmptyNamedBlocksWithOther: {
|
|
18
|
-
primary: "Empty named import blocks are unnecessary.",
|
|
19
|
-
secondary: ["An empty `{ }` in an import statement has no effect and can be removed."],
|
|
20
|
-
suggestions: ["Remove the empty block."]
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
setup(context) {
|
|
24
|
-
return { visitors: { ImportDeclaration: (node, { sourceFile }) => {
|
|
25
|
-
if (!node.importClause?.namedBindings || !ts.isNamedImports(node.importClause.namedBindings) || node.importClause.namedBindings.elements.length) return;
|
|
26
|
-
if (!node.importClause.name) context.report({
|
|
27
|
-
fix: {
|
|
28
|
-
range: getTSNodeRange(node, sourceFile),
|
|
29
|
-
text: `import ${node.moduleSpecifier.getText(sourceFile)};`
|
|
30
|
-
},
|
|
31
|
-
message: "noEmptyNamedBlocksOnly",
|
|
32
|
-
range: getTSNodeRange(node.importClause.namedBindings, sourceFile)
|
|
33
|
-
});
|
|
34
|
-
const commaToken = node.importClause.getChildren(sourceFile).find((child) => child.kind === ts.SyntaxKind.CommaToken);
|
|
35
|
-
if (!commaToken) return;
|
|
36
|
-
context.report({
|
|
37
|
-
fix: {
|
|
38
|
-
range: {
|
|
39
|
-
begin: commaToken.getStart(sourceFile),
|
|
40
|
-
end: node.importClause.namedBindings.getEnd()
|
|
41
|
-
},
|
|
42
|
-
text: ""
|
|
43
|
-
},
|
|
44
|
-
message: "noEmptyNamedBlocksWithOther",
|
|
45
|
-
range: getTSNodeRange(node.importClause.namedBindings, sourceFile)
|
|
46
|
-
});
|
|
47
|
-
} } };
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
//#endregion
|
|
51
|
-
export { importEmptyBlocks_default as default };
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=importEmptyBlocks.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead.";
|
|
3
|
-
readonly id: "importTypeSideEffects";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "useTopLevelQualifier", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=importTypeSideEffects.d.ts.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts, { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/importTypeSideEffects.ts
|
|
5
|
-
var importTypeSideEffects_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead.",
|
|
8
|
-
id: "importTypeSideEffects",
|
|
9
|
-
presets: ["logical"]
|
|
10
|
-
},
|
|
11
|
-
messages: { useTopLevelQualifier: {
|
|
12
|
-
primary: "Every specifier in this import is a type, so a single top-level `import type` would be cleaner.",
|
|
13
|
-
secondary: ["When all specifiers in an import have inline `type` qualifiers, TypeScript's `verbatimModuleSyntax` leaves behind an empty import statement.", "This creates an unnecessary side-effect import at runtime."],
|
|
14
|
-
suggestions: ["Replace `import { type A, type B }` with `import type { A, B }`."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { ImportDeclaration: (node, { sourceFile }) => {
|
|
18
|
-
if (!node.importClause || node.importClause.name || node.importClause.phaseModifier === SyntaxKind.TypeKeyword) return;
|
|
19
|
-
const namedBindings = node.importClause.namedBindings;
|
|
20
|
-
if (!namedBindings || !ts.isNamedImports(namedBindings) || !namedBindings.elements.length || namedBindings.elements.some((element) => !element.isTypeOnly)) return;
|
|
21
|
-
context.report({
|
|
22
|
-
message: "useTopLevelQualifier",
|
|
23
|
-
range: getTSNodeRange(node, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
} } };
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
//#endregion
|
|
29
|
-
export { importTypeSideEffects_default as default };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=importTypeSideEffects.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 indexed object types that don't match the configured style.";
|
|
4
|
-
readonly id: "indexedObjectTypes";
|
|
5
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
6
|
-
} & {
|
|
7
|
-
readonly pluginId: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
}, "preferIndexSignature" | "preferRecord", {
|
|
10
|
-
style: z.ZodDefault<z.ZodEnum<{
|
|
11
|
-
record: "record";
|
|
12
|
-
"index-signature": "index-signature";
|
|
13
|
-
}>>;
|
|
14
|
-
}>;
|
|
15
|
-
export default _default;
|
|
16
|
-
//# sourceMappingURL=indexedObjectTypes.d.ts.map
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclaration, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
import { z } from "zod/v4";
|
|
5
|
-
//#region src/rules/indexedObjectTypes.ts
|
|
6
|
-
function getSingleIndexSignature(members) {
|
|
7
|
-
if (members.length !== 1) return;
|
|
8
|
-
const member = members[0];
|
|
9
|
-
if (member.kind !== ts$1.SyntaxKind.IndexSignature) return;
|
|
10
|
-
return member;
|
|
11
|
-
}
|
|
12
|
-
function getTypeName(node) {
|
|
13
|
-
if (node.kind === ts$1.SyntaxKind.InterfaceDeclaration) return node.name.text;
|
|
14
|
-
let current = node.parent;
|
|
15
|
-
while (current) {
|
|
16
|
-
if (ts$1.isTypeAliasDeclaration(current)) return current.name.text;
|
|
17
|
-
current = current.parent;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function isDirectlyRecursive(node, parentTypeName) {
|
|
21
|
-
switch (node.kind) {
|
|
22
|
-
case ts$1.SyntaxKind.ConditionalType: return isDirectlyRecursive(node.checkType, parentTypeName) || isDirectlyRecursive(node.extendsType, parentTypeName) || isDirectlyRecursive(node.trueType, parentTypeName) || isDirectlyRecursive(node.falseType, parentTypeName);
|
|
23
|
-
case ts$1.SyntaxKind.IndexedAccessType: return isDirectlyRecursive(node.objectType, parentTypeName) || isDirectlyRecursive(node.indexType, parentTypeName);
|
|
24
|
-
case ts$1.SyntaxKind.IntersectionType:
|
|
25
|
-
case ts$1.SyntaxKind.UnionType: return node.types.some((type) => isDirectlyRecursive(type, parentTypeName));
|
|
26
|
-
case ts$1.SyntaxKind.ParenthesizedType: return isDirectlyRecursive(node.type, parentTypeName);
|
|
27
|
-
case ts$1.SyntaxKind.TypeReference:
|
|
28
|
-
if (node.typeName.kind === ts$1.SyntaxKind.Identifier && node.typeName.text === parentTypeName) return true;
|
|
29
|
-
if (node.typeArguments) return node.typeArguments.some((arg) => isDirectlyRecursive(arg, parentTypeName));
|
|
30
|
-
return false;
|
|
31
|
-
default: return false;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
var indexedObjectTypes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
35
|
-
about: {
|
|
36
|
-
description: "Reports indexed object types that don't match the configured style.",
|
|
37
|
-
id: "indexedObjectTypes",
|
|
38
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
39
|
-
},
|
|
40
|
-
messages: {
|
|
41
|
-
preferIndexSignature: {
|
|
42
|
-
primary: "Prefer an index signature over `Record<K, V>`.",
|
|
43
|
-
secondary: ["TypeScript provides two equivalent ways to define indexed object types: `Record<K, V>` and `{ [key: K]: V }`.", "Using index signatures consistently matches the more traditional TypeScript syntax."],
|
|
44
|
-
suggestions: ["Replace `Record<K, V>` with `{ [key: K]: V }`."]
|
|
45
|
-
},
|
|
46
|
-
preferRecord: {
|
|
47
|
-
primary: "Prefer `Record<K, V>` over an index signature.",
|
|
48
|
-
secondary: ["TypeScript provides two equivalent ways to define indexed object types: `Record<K, V>` and `{ [key: K]: V }`.", "Using `Record<K, V>` consistently is more concise and idiomatic."],
|
|
49
|
-
suggestions: ["Replace the index signature with `Record<K, V>`."]
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
options: { style: z.enum(["index-signature", "record"]).default("record").describe("Which indexed object type syntax to enforce: 'record' for `Record<K, V>`, or 'index-signature' for `{ [key: K]: V }`.") },
|
|
53
|
-
setup(context) {
|
|
54
|
-
function checkForRecord(node, members, sourceFile) {
|
|
55
|
-
const member = getSingleIndexSignature(members);
|
|
56
|
-
if (!member?.type) return;
|
|
57
|
-
const typeName = getTypeName(node);
|
|
58
|
-
if (typeName && isDirectlyRecursive(member.type, typeName)) return;
|
|
59
|
-
context.report({
|
|
60
|
-
message: "preferRecord",
|
|
61
|
-
range: getTSNodeRange(node, sourceFile)
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return { visitors: {
|
|
65
|
-
InterfaceDeclaration: (node, { options, sourceFile }) => {
|
|
66
|
-
if (options.style === "record" && !node.heritageClauses?.length) checkForRecord(node, node.members, sourceFile);
|
|
67
|
-
},
|
|
68
|
-
TypeLiteral: (node, { options, sourceFile }) => {
|
|
69
|
-
if (options.style === "record") checkForRecord(node, node.members, sourceFile);
|
|
70
|
-
},
|
|
71
|
-
TypeReference: (node, { options, sourceFile, typeChecker }) => {
|
|
72
|
-
if (options.style === "index-signature" && node.typeName.kind === ts$1.SyntaxKind.Identifier && node.typeName.text === "Record" && isGlobalDeclaration(node.typeName, typeChecker) && node.typeArguments?.length === 2) context.report({
|
|
73
|
-
message: "preferIndexSignature",
|
|
74
|
-
range: getTSNodeRange(node, sourceFile)
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
} };
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
//#endregion
|
|
81
|
-
export { indexedObjectTypes_default as default };
|
|
82
|
-
|
|
83
|
-
//# sourceMappingURL=indexedObjectTypes.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using `instanceof Array` instead of `Array.isArray()`.";
|
|
3
|
-
readonly id: "instanceOfArrays";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "useArrayIsArray", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=instanceOfArrays.d.ts.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/instanceOfArrays.ts
|
|
5
|
-
var instanceOfArrays_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports using `instanceof Array` instead of `Array.isArray()`.",
|
|
8
|
-
id: "instanceOfArrays",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { useArrayIsArray: {
|
|
12
|
-
primary: "Use `Array.isArray()` instead of `instanceof Array`.",
|
|
13
|
-
secondary: ["The `instanceof Array` check can fail across different execution contexts (e.g., iframes or realms).", "It may also give incorrect results for array-like objects."],
|
|
14
|
-
suggestions: ["Use `Array.isArray(value)` for reliable array detection."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { BinaryExpression: (node, { sourceFile, typeChecker }) => {
|
|
18
|
-
if (node.operatorToken.kind !== SyntaxKind.InstanceOfKeyword) return;
|
|
19
|
-
const right = unwrapParenthesizedNode(node.right);
|
|
20
|
-
if (right.kind !== SyntaxKind.Identifier || right.text !== "Array" || !isGlobalDeclarationOfName(right, "Array", typeChecker)) return;
|
|
21
|
-
context.report({
|
|
22
|
-
message: "useArrayIsArray",
|
|
23
|
-
range: getTSNodeRange(node, sourceFile)
|
|
24
|
-
});
|
|
25
|
-
} } };
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
//#endregion
|
|
29
|
-
export { instanceOfArrays_default as default };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=instanceOfArrays.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 irregular whitespace characters that can cause issues with code parsing and display.";
|
|
4
|
-
readonly id: "irregularWhitespaces";
|
|
5
|
-
readonly presets: readonly ["logical"];
|
|
6
|
-
} & {
|
|
7
|
-
readonly pluginId: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
}, "irregularWhitespace", {
|
|
10
|
-
skipComments: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
-
skipJSXText: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
-
skipRegularExpressions: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
-
skipTemplates: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
-
}>;
|
|
15
|
-
export default _default;
|
|
16
|
-
//# sourceMappingURL=irregularWhitespaces.d.ts.map
|