@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,166 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getSpecifierNames } from "../type-utils/getSpecifierNames.js";
|
|
3
|
-
import { matchesSpecifier } from "../type-utils/matchesSpecifier.js";
|
|
4
|
-
import { typeOrValueSpecifierSchema } from "../type-utils/schemas.js";
|
|
5
|
-
import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
6
|
-
import ts, { SyntaxKind } from "typescript";
|
|
7
|
-
import { z } from "zod/v4";
|
|
8
|
-
//#region src/rules/restrictedImports.ts
|
|
9
|
-
const restrictionSchema = z.object({
|
|
10
|
-
allowTypeImports: z.boolean().optional().describe("Whether type-only imports are exempt from the restriction."),
|
|
11
|
-
message: z.string().optional().describe("A custom message to display when the restriction is triggered."),
|
|
12
|
-
specifier: typeOrValueSpecifierSchema.describe("A TypeOrValueSpecifier identifying the restricted import.")
|
|
13
|
-
});
|
|
14
|
-
function resolveModuleDeclarations(moduleSpecifier, typeChecker) {
|
|
15
|
-
return typeChecker.getSymbolAtLocation(moduleSpecifier)?.getDeclarations();
|
|
16
|
-
}
|
|
17
|
-
function resolveSymbolDeclarations(nameNode, typeChecker) {
|
|
18
|
-
let symbol = typeChecker.getSymbolAtLocation(nameNode);
|
|
19
|
-
if (!symbol) return;
|
|
20
|
-
if (symbol.flags & ts.SymbolFlags.Alias) symbol = typeChecker.getAliasedSymbol(symbol);
|
|
21
|
-
return symbol.getDeclarations();
|
|
22
|
-
}
|
|
23
|
-
var restrictedImports_default = ruleCreator.createRule(typescriptLanguage, {
|
|
24
|
-
about: {
|
|
25
|
-
description: "Restricts specified modules from being imported.",
|
|
26
|
-
id: "restrictedImports"
|
|
27
|
-
},
|
|
28
|
-
messages: {
|
|
29
|
-
moduleRestricted: {
|
|
30
|
-
primary: "'{{ source }}' import is restricted.",
|
|
31
|
-
secondary: ["This module has been restricted by project configuration."],
|
|
32
|
-
suggestions: ["Remove this import or replace it with an allowed alternative."]
|
|
33
|
-
},
|
|
34
|
-
moduleRestrictedWithMessage: {
|
|
35
|
-
primary: "'{{ source }}' import is restricted. {{ customMessage }}",
|
|
36
|
-
secondary: ["This module has been restricted by project configuration."],
|
|
37
|
-
suggestions: ["Remove this import or replace it with an allowed alternative."]
|
|
38
|
-
},
|
|
39
|
-
namespaceRestricted: {
|
|
40
|
-
primary: "* import is invalid because '{{ restrictedNames }}' from '{{ source }}' is restricted.",
|
|
41
|
-
secondary: ["This import uses a namespace or wildcard import, but specific names from this module are restricted."],
|
|
42
|
-
suggestions: ["Replace the namespace import with named imports that are allowed."]
|
|
43
|
-
},
|
|
44
|
-
namespaceRestrictedWithMessage: {
|
|
45
|
-
primary: "* import is invalid because '{{ restrictedNames }}' from '{{ source }}' is restricted. {{ customMessage }}",
|
|
46
|
-
secondary: ["This import uses a namespace or wildcard import, but specific names from this module are restricted."],
|
|
47
|
-
suggestions: ["Replace the namespace import with named imports that are allowed."]
|
|
48
|
-
},
|
|
49
|
-
restricted: {
|
|
50
|
-
primary: "'{{ importName }}' import from '{{ source }}' is restricted.",
|
|
51
|
-
secondary: ["This import name has been restricted by project configuration."],
|
|
52
|
-
suggestions: ["Remove this import or replace it with an allowed alternative."]
|
|
53
|
-
},
|
|
54
|
-
restrictedWithMessage: {
|
|
55
|
-
primary: "'{{ importName }}' import from '{{ source }}' is restricted. {{ customMessage }}",
|
|
56
|
-
secondary: ["This import name has been restricted by project configuration."],
|
|
57
|
-
suggestions: ["Remove this import or replace it with an allowed alternative."]
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
options: { restrictions: z.array(restrictionSchema).default([]).describe("Restrictions on imports, using TypeOrValueSpecifier to identify targets.") },
|
|
61
|
-
setup(context) {
|
|
62
|
-
function checkNamedRestrictions(restrictions, declarations, importedName, isTypeOnly, source, range, program) {
|
|
63
|
-
for (const restriction of restrictions) {
|
|
64
|
-
if (restriction.allowTypeImports && isTypeOnly) continue;
|
|
65
|
-
if (matchesSpecifier(importedName, declarations, restriction.specifier, program)) context.report({
|
|
66
|
-
data: {
|
|
67
|
-
customMessage: restriction.message ?? "",
|
|
68
|
-
importName: importedName,
|
|
69
|
-
source
|
|
70
|
-
},
|
|
71
|
-
message: restriction.message ? "restrictedWithMessage" : "restricted",
|
|
72
|
-
range
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function checkWildcardRestrictions(restrictions, moduleDeclarations, source, topLevelTypeOnly, range, program) {
|
|
77
|
-
for (const restriction of restrictions) {
|
|
78
|
-
if (restriction.allowTypeImports && topLevelTypeOnly) continue;
|
|
79
|
-
const names = getSpecifierNames(restriction.specifier);
|
|
80
|
-
if (names !== void 0) {
|
|
81
|
-
if (matchesSpecifier(void 0, moduleDeclarations, {
|
|
82
|
-
...restriction.specifier,
|
|
83
|
-
name: void 0
|
|
84
|
-
}, program)) context.report({
|
|
85
|
-
data: {
|
|
86
|
-
customMessage: restriction.message ?? "",
|
|
87
|
-
restrictedNames: names.join("', '"),
|
|
88
|
-
source
|
|
89
|
-
},
|
|
90
|
-
message: restriction.message ? "namespaceRestrictedWithMessage" : "namespaceRestricted",
|
|
91
|
-
range
|
|
92
|
-
});
|
|
93
|
-
} else if (matchesSpecifier(void 0, moduleDeclarations, restriction.specifier, program)) context.report({
|
|
94
|
-
data: {
|
|
95
|
-
customMessage: restriction.message ?? "",
|
|
96
|
-
source
|
|
97
|
-
},
|
|
98
|
-
message: restriction.message ? "moduleRestrictedWithMessage" : "moduleRestricted",
|
|
99
|
-
range
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return { visitors: {
|
|
104
|
-
ExportDeclaration: (node, { options, program, sourceFile, typeChecker }) => {
|
|
105
|
-
if (!node.moduleSpecifier || !ts.isStringLiteral(node.moduleSpecifier)) return;
|
|
106
|
-
const source = node.moduleSpecifier.text;
|
|
107
|
-
const topLevelTypeOnly = node.isTypeOnly;
|
|
108
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
109
|
-
if (node.exportClause && ts.isNamedExports(node.exportClause)) for (const element of node.exportClause.elements) {
|
|
110
|
-
const isTypeOnly = topLevelTypeOnly || element.isTypeOnly;
|
|
111
|
-
const importedName = element.propertyName ? element.propertyName.text : element.name.text;
|
|
112
|
-
const declarations = resolveSymbolDeclarations(element.name, typeChecker);
|
|
113
|
-
if (!declarations?.length) continue;
|
|
114
|
-
checkNamedRestrictions(options.restrictions, declarations, importedName, isTypeOnly, source, range, program);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
const moduleDeclarations = resolveModuleDeclarations(node.moduleSpecifier, typeChecker);
|
|
118
|
-
if (!moduleDeclarations?.length) return;
|
|
119
|
-
checkWildcardRestrictions(options.restrictions, moduleDeclarations, source, topLevelTypeOnly, range, program);
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
ImportDeclaration: (node, { options, program, sourceFile, typeChecker }) => {
|
|
123
|
-
if (!ts.isStringLiteral(node.moduleSpecifier)) return;
|
|
124
|
-
const source = node.moduleSpecifier.text;
|
|
125
|
-
const range = getTSNodeRange(node, sourceFile);
|
|
126
|
-
if (!node.importClause) {
|
|
127
|
-
const moduleDeclarations = resolveModuleDeclarations(node.moduleSpecifier, typeChecker);
|
|
128
|
-
if (!moduleDeclarations?.length) return;
|
|
129
|
-
for (const restriction of options.restrictions) if (matchesSpecifier(void 0, moduleDeclarations, restriction.specifier, program)) context.report({
|
|
130
|
-
data: {
|
|
131
|
-
customMessage: restriction.message ?? "",
|
|
132
|
-
source
|
|
133
|
-
},
|
|
134
|
-
message: restriction.message ? "moduleRestrictedWithMessage" : "moduleRestricted",
|
|
135
|
-
range
|
|
136
|
-
});
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const topLevelTypeOnly = node.importClause.phaseModifier === SyntaxKind.TypeKeyword;
|
|
140
|
-
if (node.importClause.name) {
|
|
141
|
-
const declarations = resolveSymbolDeclarations(node.importClause.name, typeChecker);
|
|
142
|
-
if (declarations?.length) checkNamedRestrictions(options.restrictions, declarations, "default", topLevelTypeOnly, source, range, program);
|
|
143
|
-
}
|
|
144
|
-
const bindings = node.importClause.namedBindings;
|
|
145
|
-
if (!bindings) return;
|
|
146
|
-
if (ts.isNamedImports(bindings)) {
|
|
147
|
-
for (const element of bindings.elements) {
|
|
148
|
-
const isTypeOnly = topLevelTypeOnly || element.isTypeOnly;
|
|
149
|
-
const importedName = element.propertyName ? element.propertyName.text : element.name.text;
|
|
150
|
-
const declarations = resolveSymbolDeclarations(element.name, typeChecker);
|
|
151
|
-
if (!declarations?.length) continue;
|
|
152
|
-
checkNamedRestrictions(options.restrictions, declarations, importedName, isTypeOnly, source, range, program);
|
|
153
|
-
}
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const moduleDeclarations = resolveModuleDeclarations(node.moduleSpecifier, typeChecker);
|
|
157
|
-
if (!moduleDeclarations?.length) return;
|
|
158
|
-
checkWildcardRestrictions(options.restrictions, moduleDeclarations, source, topLevelTypeOnly, range, program);
|
|
159
|
-
}
|
|
160
|
-
} };
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
//#endregion
|
|
164
|
-
export { restrictedImports_default as default };
|
|
165
|
-
|
|
166
|
-
//# sourceMappingURL=restrictedImports.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using assignment expressions in return statements.";
|
|
3
|
-
readonly id: "returnAssignments";
|
|
4
|
-
readonly presets: readonly ["stylistic", "stylisticStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noReturnAssign", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=returnAssignments.d.ts.map
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/returnAssignments.ts
|
|
6
|
-
var returnAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports using assignment expressions in return statements.",
|
|
9
|
-
id: "returnAssignments",
|
|
10
|
-
presets: ["stylistic", "stylisticStrict"]
|
|
11
|
-
},
|
|
12
|
-
messages: { noReturnAssign: {
|
|
13
|
-
primary: "Placing an assignment inside a return statement can be misleading and is often a sign of a logical mistake.",
|
|
14
|
-
secondary: ["Using assignments in return statements can make code harder to read and can lead to confusion about whether the assignment or the returned value is the primary intent.", "Assignment expressions return the assigned value, but mixing assignment with return makes the control flow less clear."],
|
|
15
|
-
suggestions: ["Perform the assignment on a separate line before the return statement."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
function checkForAssignment(node, sourceFile) {
|
|
19
|
-
const unwrapped = unwrapParenthesizedNode(node);
|
|
20
|
-
if (unwrapped.kind === SyntaxKind.BinaryExpression && tsutils.isAssignmentKind(unwrapped.operatorToken.kind)) context.report({
|
|
21
|
-
message: "noReturnAssign",
|
|
22
|
-
range: getTSNodeRange(unwrapped.operatorToken, sourceFile)
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return { visitors: {
|
|
26
|
-
ArrowFunction: (node, { sourceFile }) => {
|
|
27
|
-
if (node.body.kind !== SyntaxKind.Block) checkForAssignment(node.body, sourceFile);
|
|
28
|
-
},
|
|
29
|
-
ReturnStatement: (node, { sourceFile }) => {
|
|
30
|
-
if (node.expression) checkForAssignment(node.expression, sourceFile);
|
|
31
|
-
}
|
|
32
|
-
} };
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
//#endregion
|
|
36
|
-
export { returnAssignments_default as default };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=returnAssignments.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Enforce that `this` is used when only `this` type is returned.";
|
|
3
|
-
readonly id: "returnThisTypes";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferThis", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=returnThisTypes.d.ts.map
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { forEachReturnStatement } from "./utils/forEachReturnStatement.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/returnThisTypes.ts
|
|
7
|
-
var returnThisTypes_default = ruleCreator.createRule(typescriptLanguage, {
|
|
8
|
-
about: {
|
|
9
|
-
description: "Enforce that `this` is used when only `this` type is returned.",
|
|
10
|
-
id: "returnThisTypes",
|
|
11
|
-
presets: ["logical"]
|
|
12
|
-
},
|
|
13
|
-
messages: { preferThis: {
|
|
14
|
-
primary: "Prefer `this` as the return type instead of the class name for polymorphic chaining.",
|
|
15
|
-
secondary: [
|
|
16
|
-
"Annotating this method as returning the class extends to sub-classes as well.",
|
|
17
|
-
"Any sub-class will be implicitly typed as returning this parent class, rather than itself.",
|
|
18
|
-
"Using `this` preserves method chaining behavior in subclasses."
|
|
19
|
-
],
|
|
20
|
-
suggestions: ["Replace the class name with `this`."]
|
|
21
|
-
} },
|
|
22
|
-
setup(context) {
|
|
23
|
-
function checkFunction(functionNode, originalClassNode, { sourceFile, typeChecker }) {
|
|
24
|
-
if (originalClassNode.kind !== ts$1.SyntaxKind.ClassDeclaration && originalClassNode.kind !== ts$1.SyntaxKind.ClassExpression) return;
|
|
25
|
-
const className = originalClassNode.name?.text;
|
|
26
|
-
if (!className || !functionNode.type) return;
|
|
27
|
-
const nameNode = tryGetNameInType(className, functionNode.type);
|
|
28
|
-
if (!nameNode || !isFunctionReturningThis(functionNode, originalClassNode, typeChecker)) return;
|
|
29
|
-
const range = getTSNodeRange(nameNode, sourceFile);
|
|
30
|
-
context.report({
|
|
31
|
-
fix: {
|
|
32
|
-
range,
|
|
33
|
-
text: "this"
|
|
34
|
-
},
|
|
35
|
-
message: "preferThis",
|
|
36
|
-
range
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
function isFunctionReturningThis(functionNode, originalClassNode, typeChecker) {
|
|
40
|
-
if (!functionNode.body || isThisSpecifiedInParameters(functionNode)) return false;
|
|
41
|
-
const classType = typeChecker.getTypeAtLocation(originalClassNode);
|
|
42
|
-
if (functionNode.body.kind !== ts$1.SyntaxKind.Block) return classType.thisType === typeChecker.getTypeAtLocation(functionNode.body);
|
|
43
|
-
let hasReturnThis = false;
|
|
44
|
-
let hasReturnClassType = false;
|
|
45
|
-
forEachReturnStatement(functionNode.body, (statement) => {
|
|
46
|
-
if (!statement.expression) return;
|
|
47
|
-
if (statement.expression.kind === ts$1.SyntaxKind.ThisKeyword) {
|
|
48
|
-
hasReturnThis = true;
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const type = typeChecker.getTypeAtLocation(statement.expression);
|
|
52
|
-
if (classType === type) {
|
|
53
|
-
hasReturnClassType = true;
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
if (classType.thisType === type) {
|
|
57
|
-
hasReturnThis = true;
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (tsutils.isUnionType(type) && type.types.includes(classType)) {
|
|
61
|
-
hasReturnClassType = true;
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return !hasReturnClassType && hasReturnThis;
|
|
66
|
-
}
|
|
67
|
-
function isThisSpecifiedInParameters(functionNode) {
|
|
68
|
-
if (!functionNode.parameters.length) return false;
|
|
69
|
-
const firstArgument = functionNode.parameters[0];
|
|
70
|
-
return ts$1.isIdentifier(firstArgument.name) && firstArgument.name.text === "this";
|
|
71
|
-
}
|
|
72
|
-
function tryGetNameInType(name, typeNode) {
|
|
73
|
-
if (ts$1.isTypeReferenceNode(typeNode) && ts$1.isIdentifier(typeNode.typeName) && typeNode.typeName.text === name) return typeNode;
|
|
74
|
-
if (ts$1.isUnionTypeNode(typeNode)) for (const type of typeNode.types) {
|
|
75
|
-
const found = tryGetNameInType(name, type);
|
|
76
|
-
if (found) return found;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function checkMethodLike(node, services) {
|
|
80
|
-
checkFunction(node, node.parent, services);
|
|
81
|
-
}
|
|
82
|
-
return { visitors: {
|
|
83
|
-
GetAccessor: checkMethodLike,
|
|
84
|
-
MethodDeclaration: checkMethodLike,
|
|
85
|
-
PropertyDeclaration(node, services) {
|
|
86
|
-
if (node.initializer && (ts$1.isFunctionExpression(node.initializer) || ts$1.isArrowFunction(node.initializer))) checkFunction(node.initializer, node.parent, services);
|
|
87
|
-
}
|
|
88
|
-
} };
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
//#endregion
|
|
92
|
-
export { returnThisTypes_default as default };
|
|
93
|
-
|
|
94
|
-
//# sourceMappingURL=returnThisTypes.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { RuleCreator } from "@flint.fyi/core";
|
|
2
|
-
export declare const ruleCreator: RuleCreator<"javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict", import("@flint.fyi/core").RuleAbout<"javascript" | "logical" | "logicalStrict" | "stylistic" | "stylisticStrict">>;
|
|
3
|
-
//# sourceMappingURL=ruleCreator.d.ts.map
|
package/lib/rules/ruleCreator.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { RuleCreator } from "@flint.fyi/core";
|
|
2
|
-
//#region src/rules/ruleCreator.ts
|
|
3
|
-
const ruleCreator = new RuleCreator({
|
|
4
|
-
docs: (ruleId) => `https://flint.fyi/rules/ts/${ruleId.toLowerCase()}`,
|
|
5
|
-
pluginId: "ts",
|
|
6
|
-
presets: [
|
|
7
|
-
"javascript",
|
|
8
|
-
"logical",
|
|
9
|
-
"logicalStrict",
|
|
10
|
-
"stylistic",
|
|
11
|
-
"stylisticStrict"
|
|
12
|
-
]
|
|
13
|
-
});
|
|
14
|
-
//#endregion
|
|
15
|
-
export { ruleCreator };
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=ruleCreator.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports self-assignments which have no effect and are likely errors.";
|
|
3
|
-
readonly id: "selfAssignments";
|
|
4
|
-
readonly presets: readonly ["logical", "logicalStrict"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "selfAssignment", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=selfAssignments.d.ts.map
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import { SyntaxKind } from "typescript";
|
|
4
|
-
//#region src/rules/selfAssignments.ts
|
|
5
|
-
var selfAssignments_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports self-assignments which have no effect and are likely errors.",
|
|
8
|
-
id: "selfAssignments",
|
|
9
|
-
presets: ["logical", "logicalStrict"]
|
|
10
|
-
},
|
|
11
|
-
messages: { selfAssignment: {
|
|
12
|
-
primary: "This value is being assigned to itself, which does nothing.",
|
|
13
|
-
secondary: ["Self-assignments have no effect and typically indicate an incomplete refactoring or copy-paste error."],
|
|
14
|
-
suggestions: ["Review the assignment and ensure you're assigning the correct value."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { BinaryExpression: (node, { sourceFile }) => {
|
|
18
|
-
if (node.operatorToken.kind !== SyntaxKind.EqualsToken && node.operatorToken.kind !== SyntaxKind.AmpersandAmpersandEqualsToken && node.operatorToken.kind !== SyntaxKind.BarBarEqualsToken && node.operatorToken.kind !== SyntaxKind.QuestionQuestionEqualsToken) return;
|
|
19
|
-
if (hasSameTokens(node.left, node.right, sourceFile)) context.report({
|
|
20
|
-
message: "selfAssignment",
|
|
21
|
-
range: getTSNodeRange(node, sourceFile)
|
|
22
|
-
});
|
|
23
|
-
} } };
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
//#endregion
|
|
27
|
-
export { selfAssignments_default as default };
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=selfAssignments.js.map
|
package/lib/rules/sequences.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports using the comma operator in expressions.";
|
|
3
|
-
readonly id: "sequences";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noSequences", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=sequences.d.ts.map
|
package/lib/rules/sequences.js
DELETED
|
@@ -1,28 +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/sequences.ts
|
|
5
|
-
var sequences_default = ruleCreator.createRule(typescriptLanguage, {
|
|
6
|
-
about: {
|
|
7
|
-
description: "Reports using the comma operator in expressions.",
|
|
8
|
-
id: "sequences",
|
|
9
|
-
presets: ["javascript"]
|
|
10
|
-
},
|
|
11
|
-
messages: { noSequences: {
|
|
12
|
-
primary: "The \"sequence\" (comma) operator is often confusing and a sign of mistaken logic.",
|
|
13
|
-
secondary: ["The comma operator can make code harder to read and may hide side effects.", "Prefer separate expressions instead of using a single sequence."],
|
|
14
|
-
suggestions: ["Split the expression into separate statements."]
|
|
15
|
-
} },
|
|
16
|
-
setup(context) {
|
|
17
|
-
return { visitors: { BinaryExpression: (node, { sourceFile }) => {
|
|
18
|
-
if (node.operatorToken.kind === SyntaxKind.CommaToken) context.report({
|
|
19
|
-
message: "noSequences",
|
|
20
|
-
range: getTSNodeRange(node.operatorToken, sourceFile)
|
|
21
|
-
});
|
|
22
|
-
} } };
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
//#endregion
|
|
26
|
-
export { sequences_default as default };
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=sequences.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Prefer `Set.size` over spreading into an array and accessing `.length`.";
|
|
3
|
-
readonly id: "setSizeLengthChecks";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "preferSize", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=setSizeLengthChecks.d.ts.map
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import * as ts$1 from "typescript";
|
|
4
|
-
//#region src/rules/setSizeLengthChecks.ts
|
|
5
|
-
function isNewSetExpression(expression, typeChecker) {
|
|
6
|
-
return ts$1.isNewExpression(expression) && ts$1.isIdentifier(expression.expression) && expression.expression.text === "Set" && isGlobalDeclarationOfName(expression.expression, "Set", typeChecker);
|
|
7
|
-
}
|
|
8
|
-
function isSetExpression(expression, typeChecker) {
|
|
9
|
-
const unwrapped = unwrapParentheses(expression);
|
|
10
|
-
if (isNewSetExpression(unwrapped, typeChecker)) return true;
|
|
11
|
-
if (!ts$1.isIdentifier(unwrapped)) return false;
|
|
12
|
-
const symbol = typeChecker.getSymbolAtLocation(unwrapped);
|
|
13
|
-
if (!symbol?.valueDeclaration || !ts$1.isVariableDeclaration(symbol.valueDeclaration)) return false;
|
|
14
|
-
const declaration = symbol.valueDeclaration;
|
|
15
|
-
if (declaration.parent.kind !== ts$1.SyntaxKind.VariableDeclarationList || !(declaration.parent.flags & ts$1.NodeFlags.Const) || !declaration.initializer) return false;
|
|
16
|
-
return isNewSetExpression(unwrapParentheses(declaration.initializer), typeChecker);
|
|
17
|
-
}
|
|
18
|
-
function unwrapParentheses(expression) {
|
|
19
|
-
while (ts$1.isParenthesizedExpression(expression)) expression = expression.expression;
|
|
20
|
-
return expression;
|
|
21
|
-
}
|
|
22
|
-
var setSizeLengthChecks_default = ruleCreator.createRule(typescriptLanguage, {
|
|
23
|
-
about: {
|
|
24
|
-
description: "Prefer `Set.size` over spreading into an array and accessing `.length`.",
|
|
25
|
-
id: "setSizeLengthChecks",
|
|
26
|
-
presets: ["logical"]
|
|
27
|
-
},
|
|
28
|
-
messages: { preferSize: {
|
|
29
|
-
primary: "Prefer `Set.size` instead of spreading into an array and accessing `.length`.",
|
|
30
|
-
secondary: ["`Set` has a built-in `.size` property that directly returns the number of elements.", "It is faster and more idiomatic to use that instead of creating an intermediate array."],
|
|
31
|
-
suggestions: ["Use `.size` directly on the `Set` instead."]
|
|
32
|
-
} },
|
|
33
|
-
setup(context) {
|
|
34
|
-
return { visitors: { PropertyAccessExpression: (node, { sourceFile, typeChecker }) => {
|
|
35
|
-
if (node.questionDotToken || node.name.text !== "length" || !ts$1.isArrayLiteralExpression(node.expression) || node.expression.elements.length !== 1) return;
|
|
36
|
-
const element = node.expression.elements[0];
|
|
37
|
-
if (!ts$1.isSpreadElement(element) || !isSetExpression(element.expression, typeChecker)) return;
|
|
38
|
-
context.report({
|
|
39
|
-
message: "preferSize",
|
|
40
|
-
range: getTSNodeRange(node, sourceFile)
|
|
41
|
-
});
|
|
42
|
-
} } };
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
//#endregion
|
|
46
|
-
export { setSizeLengthChecks_default as default };
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=setSizeLengthChecks.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports return statements with values inside setters.";
|
|
3
|
-
readonly id: "setterReturns";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "noSetterReturn", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=setterReturns.d.ts.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ruleCreator } from "./ruleCreator.js";
|
|
2
|
-
import { typescriptLanguage } from "@flint.fyi/typescript-language";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
import * as tsutils from "ts-api-utils";
|
|
5
|
-
//#region src/rules/setterReturns.ts
|
|
6
|
-
var setterReturns_default = ruleCreator.createRule(typescriptLanguage, {
|
|
7
|
-
about: {
|
|
8
|
-
description: "Reports return statements with values inside setters.",
|
|
9
|
-
id: "setterReturns",
|
|
10
|
-
presets: ["javascript"]
|
|
11
|
-
},
|
|
12
|
-
messages: { noSetterReturn: {
|
|
13
|
-
primary: "Values returned by setters are always ignored.",
|
|
14
|
-
secondary: ["Setters are expected to have side effects only and not produce a return value.", "Any returned value from a setter is ignored."],
|
|
15
|
-
suggestions: ["Remove the return value.", "Use a regular method instead."]
|
|
16
|
-
} },
|
|
17
|
-
setup(context) {
|
|
18
|
-
return { visitors: { SetAccessor: (node, { sourceFile }) => {
|
|
19
|
-
if (!node.body) return;
|
|
20
|
-
function checkForReturnStatements(node) {
|
|
21
|
-
if (ts.isReturnStatement(node)) {
|
|
22
|
-
if (node.expression) context.report({
|
|
23
|
-
message: "noSetterReturn",
|
|
24
|
-
range: {
|
|
25
|
-
begin: node.getStart(sourceFile),
|
|
26
|
-
end: node.getEnd()
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (tsutils.isFunctionScopeBoundary(node)) return;
|
|
32
|
-
ts.forEachChild(node, checkForReturnStatements);
|
|
33
|
-
}
|
|
34
|
-
ts.forEachChild(node.body, checkForReturnStatements);
|
|
35
|
-
} } };
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
//#endregion
|
|
39
|
-
export { setterReturns_default as default };
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=setterReturns.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Reports variable declarations that shadow JavaScript's restricted names.";
|
|
3
|
-
readonly id: "shadowedRestrictedNames";
|
|
4
|
-
readonly presets: readonly ["javascript"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "shadowedRestrictedName", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=shadowedRestrictedNames.d.ts.map
|
|
@@ -1,68 +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/shadowedRestrictedNames.ts
|
|
5
|
-
const restrictedNames = new Set([
|
|
6
|
-
"arguments",
|
|
7
|
-
"eval",
|
|
8
|
-
"Infinity",
|
|
9
|
-
"NaN",
|
|
10
|
-
"undefined"
|
|
11
|
-
]);
|
|
12
|
-
var shadowedRestrictedNames_default = ruleCreator.createRule(typescriptLanguage, {
|
|
13
|
-
about: {
|
|
14
|
-
description: "Reports variable declarations that shadow JavaScript's restricted names.",
|
|
15
|
-
id: "shadowedRestrictedNames",
|
|
16
|
-
presets: ["javascript"]
|
|
17
|
-
},
|
|
18
|
-
messages: { shadowedRestrictedName: {
|
|
19
|
-
primary: "This variable misleadingly shadows the global `{{ name }}`.",
|
|
20
|
-
secondary: ["JavaScript has certain built-in global identifiers that are considered restricted because shadowing them can lead to confusing or erroneous code.", "When you declare a variable with a restricted name, it shadows the global identifier and can cause unexpected behavior."],
|
|
21
|
-
suggestions: ["Use a different variable name that doesn't shadow a restricted name."]
|
|
22
|
-
} },
|
|
23
|
-
setup(context) {
|
|
24
|
-
function checkIdentifier(node, sourceFile) {
|
|
25
|
-
if (restrictedNames.has(node.text)) context.report({
|
|
26
|
-
data: { name: node.text },
|
|
27
|
-
message: "shadowedRestrictedName",
|
|
28
|
-
range: getTSNodeRange(node, sourceFile)
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
function checkBindingName(name, sourceFile) {
|
|
32
|
-
if (name.kind === SyntaxKind.Identifier) checkIdentifier(name, sourceFile);
|
|
33
|
-
else for (const element of name.elements) if (element.kind === SyntaxKind.BindingElement) checkBindingName(element.name, sourceFile);
|
|
34
|
-
}
|
|
35
|
-
function checkParameters(parameters, sourceFile) {
|
|
36
|
-
for (const parameter of parameters) checkBindingName(parameter.name, sourceFile);
|
|
37
|
-
}
|
|
38
|
-
return { visitors: {
|
|
39
|
-
ArrowFunction: (node, { sourceFile }) => {
|
|
40
|
-
checkParameters(node.parameters, sourceFile);
|
|
41
|
-
},
|
|
42
|
-
ClassDeclaration: (node, { sourceFile }) => {
|
|
43
|
-
if (node.name) checkIdentifier(node.name, sourceFile);
|
|
44
|
-
},
|
|
45
|
-
ClassExpression: (node, { sourceFile }) => {
|
|
46
|
-
if (node.name) checkIdentifier(node.name, sourceFile);
|
|
47
|
-
},
|
|
48
|
-
FunctionDeclaration: (node, { sourceFile }) => {
|
|
49
|
-
if (node.name) checkIdentifier(node.name, sourceFile);
|
|
50
|
-
checkParameters(node.parameters, sourceFile);
|
|
51
|
-
},
|
|
52
|
-
FunctionExpression: (node, { sourceFile }) => {
|
|
53
|
-
if (node.name) checkIdentifier(node.name, sourceFile);
|
|
54
|
-
checkParameters(node.parameters, sourceFile);
|
|
55
|
-
},
|
|
56
|
-
MethodDeclaration: (node, { sourceFile }) => {
|
|
57
|
-
checkParameters(node.parameters, sourceFile);
|
|
58
|
-
},
|
|
59
|
-
VariableDeclaration: (node, { sourceFile }) => {
|
|
60
|
-
checkBindingName(node.name, sourceFile);
|
|
61
|
-
}
|
|
62
|
-
} };
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
//#endregion
|
|
66
|
-
export { shadowedRestrictedNames_default as default };
|
|
67
|
-
|
|
68
|
-
//# sourceMappingURL=shadowedRestrictedNames.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const _default: import("@flint.fyi/core").Rule<{
|
|
2
|
-
readonly description: "Enforces one variable per declaration statement.";
|
|
3
|
-
readonly id: "singleVariableDeclarations";
|
|
4
|
-
readonly presets: readonly ["logical"];
|
|
5
|
-
} & {
|
|
6
|
-
readonly pluginId: string;
|
|
7
|
-
readonly url: string;
|
|
8
|
-
}, "singleVariable", undefined>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=singleVariableDeclarations.d.ts.map
|