@flint.fyi/ts 0.21.0 → 0.23.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.
Files changed (666) hide show
  1. package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
  2. package/dist/index.mjs +22468 -0
  3. package/package.json +9 -8
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -619
  7. package/lib/rules/accessorPairGroups.d.ts +0 -9
  8. package/lib/rules/accessorPairGroups.js +0 -46
  9. package/lib/rules/accessorPairTypes.d.ts +0 -9
  10. package/lib/rules/accessorPairTypes.js +0 -70
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -9
  12. package/lib/rules/accessorThisRecursion.js +0 -63
  13. package/lib/rules/anyArguments.d.ts +0 -9
  14. package/lib/rules/anyArguments.js +0 -232
  15. package/lib/rules/anyAssignments.d.ts +0 -9
  16. package/lib/rules/anyAssignments.js +0 -263
  17. package/lib/rules/anyCalls.d.ts +0 -9
  18. package/lib/rules/anyCalls.js +0 -66
  19. package/lib/rules/anyMemberAccess.d.ts +0 -9
  20. package/lib/rules/anyMemberAccess.js +0 -83
  21. package/lib/rules/anyReturns.d.ts +0 -9
  22. package/lib/rules/anyReturns.js +0 -100
  23. package/lib/rules/arguments.d.ts +0 -9
  24. package/lib/rules/arguments.js +0 -36
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -9
  26. package/lib/rules/arrayCallbackReturns.js +0 -71
  27. package/lib/rules/arrayConstructors.d.ts +0 -9
  28. package/lib/rules/arrayConstructors.js +0 -45
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -9
  32. package/lib/rules/arrayElementDeletions.js +0 -41
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -9
  38. package/lib/rules/arrayFilteredFinds.js +0 -72
  39. package/lib/rules/arrayFinds.d.ts +0 -9
  40. package/lib/rules/arrayFinds.js +0 -39
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
  42. package/lib/rules/arrayFlatMapMethods.js +0 -45
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -9
  44. package/lib/rules/arrayFlatMethods.js +0 -81
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
  47. package/lib/rules/arrayIncludes.d.ts +0 -9
  48. package/lib/rules/arrayIncludes.js +0 -51
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -9
  50. package/lib/rules/arrayIncludesMethods.js +0 -35
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
  52. package/lib/rules/arrayIndexOfMethods.js +0 -49
  53. package/lib/rules/arrayLoops.d.ts +0 -9
  54. package/lib/rules/arrayLoops.js +0 -34
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -9
  56. package/lib/rules/arrayMapIdentities.js +0 -72
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -9
  58. package/lib/rules/arrayMutableReverses.js +0 -37
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -9
  60. package/lib/rules/arrayMutableSorts.js +0 -70
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -62
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
  65. package/lib/rules/arraySomeMethods.d.ts +0 -9
  66. package/lib/rules/arraySomeMethods.js +0 -75
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
  69. package/lib/rules/arrayTypes.d.ts +0 -16
  70. package/lib/rules/arrayTypes.js +0 -109
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
  73. package/lib/rules/asConstAssertions.d.ts +0 -9
  74. package/lib/rules/asConstAssertions.js +0 -55
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -45
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
  78. package/lib/rules/asyncFunctionAwaits.js +0 -53
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
  80. package/lib/rules/asyncPromiseExecutors.js +0 -39
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
  83. package/lib/rules/atAccesses.d.ts +0 -9
  84. package/lib/rules/atAccesses.js +0 -50
  85. package/lib/rules/builtinCoercions.d.ts +0 -9
  86. package/lib/rules/builtinCoercions.js +0 -115
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -9
  88. package/lib/rules/builtinConstructorNews.js +0 -87
  89. package/lib/rules/caseDeclarations.d.ts +0 -9
  90. package/lib/rules/caseDeclarations.js +0 -38
  91. package/lib/rules/caseDuplicates.d.ts +0 -9
  92. package/lib/rules/caseDuplicates.js +0 -34
  93. package/lib/rules/caseFallthroughs.d.ts +0 -9
  94. package/lib/rules/caseFallthroughs.js +0 -74
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -9
  96. package/lib/rules/catchCallbackTypes.js +0 -65
  97. package/lib/rules/caughtVariableNames.d.ts +0 -9
  98. package/lib/rules/caughtVariableNames.js +0 -38
  99. package/lib/rules/chainedAssignments.d.ts +0 -9
  100. package/lib/rules/chainedAssignments.js +0 -31
  101. package/lib/rules/charAtComparisons.d.ts +0 -9
  102. package/lib/rules/charAtComparisons.js +0 -53
  103. package/lib/rules/classAssignments.d.ts +0 -9
  104. package/lib/rules/classAssignments.js +0 -27
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -9
  106. package/lib/rules/classFieldDeclarations.js +0 -38
  107. package/lib/rules/classLiteralProperties.d.ts +0 -9
  108. package/lib/rules/classLiteralProperties.js +0 -43
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -9
  110. package/lib/rules/classMemberDuplicates.js +0 -69
  111. package/lib/rules/classMethodsThis.d.ts +0 -13
  112. package/lib/rules/classMethodsThis.js +0 -122
  113. package/lib/rules/combinedPushes.d.ts +0 -9
  114. package/lib/rules/combinedPushes.js +0 -54
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -37
  117. package/lib/rules/consoleCalls.d.ts +0 -8
  118. package/lib/rules/consoleCalls.js +0 -26
  119. package/lib/rules/constantAssignments.d.ts +0 -9
  120. package/lib/rules/constantAssignments.js +0 -39
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -15
  122. package/lib/rules/constructorGenericCalls.js +0 -136
  123. package/lib/rules/constructorReturns.d.ts +0 -9
  124. package/lib/rules/constructorReturns.js +0 -39
  125. package/lib/rules/constructorSupers.d.ts +0 -9
  126. package/lib/rules/constructorSupers.js +0 -75
  127. package/lib/rules/dateConstructorClones.d.ts +0 -9
  128. package/lib/rules/dateConstructorClones.js +0 -35
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -9
  130. package/lib/rules/dateNowTimestamps.js +0 -55
  131. package/lib/rules/debuggerStatements.d.ts +0 -9
  132. package/lib/rules/debuggerStatements.js +0 -31
  133. package/lib/rules/defaultCaseLast.d.ts +0 -9
  134. package/lib/rules/defaultCaseLast.js +0 -34
  135. package/lib/rules/defaultParameterLast.d.ts +0 -9
  136. package/lib/rules/defaultParameterLast.js +0 -40
  137. package/lib/rules/deprecated.d.ts +0 -9
  138. package/lib/rules/deprecated.js +0 -241
  139. package/lib/rules/destructuringConsistency.d.ts +0 -9
  140. package/lib/rules/destructuringConsistency.js +0 -104
  141. package/lib/rules/duplicateArguments.d.ts +0 -9
  142. package/lib/rules/duplicateArguments.js +0 -43
  143. package/lib/rules/dynamicDeletes.d.ts +0 -9
  144. package/lib/rules/dynamicDeletes.js +0 -35
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -9
  146. package/lib/rules/elseIfDuplicates.js +0 -36
  147. package/lib/rules/elseReturns.d.ts +0 -9
  148. package/lib/rules/elseReturns.js +0 -65
  149. package/lib/rules/emptyBlocks.d.ts +0 -9
  150. package/lib/rules/emptyBlocks.js +0 -54
  151. package/lib/rules/emptyDestructures.d.ts +0 -9
  152. package/lib/rules/emptyDestructures.js +0 -32
  153. package/lib/rules/emptyEnums.d.ts +0 -9
  154. package/lib/rules/emptyEnums.js +0 -28
  155. package/lib/rules/emptyExports.d.ts +0 -9
  156. package/lib/rules/emptyExports.js +0 -58
  157. package/lib/rules/emptyFiles.d.ts +0 -9
  158. package/lib/rules/emptyFiles.js +0 -42
  159. package/lib/rules/emptyFunctions.d.ts +0 -9
  160. package/lib/rules/emptyFunctions.js +0 -59
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -9
  162. package/lib/rules/emptyModuleAttributes.js +0 -33
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -9
  164. package/lib/rules/emptyObjectTypes.js +0 -45
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -9
  166. package/lib/rules/emptyStaticBlocks.js +0 -40
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
  168. package/lib/rules/emptyTypeParameterLists.js +0 -29
  169. package/lib/rules/enumInitializers.d.ts +0 -9
  170. package/lib/rules/enumInitializers.js +0 -52
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -9
  172. package/lib/rules/enumMemberLiterals.js +0 -37
  173. package/lib/rules/enumValueConsistency.d.ts +0 -9
  174. package/lib/rules/enumValueConsistency.js +0 -54
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -9
  176. package/lib/rules/enumValueDuplicates.js +0 -43
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -8
  178. package/lib/rules/equalityOperatorNegations.js +0 -58
  179. package/lib/rules/equalityOperators.d.ts +0 -9
  180. package/lib/rules/equalityOperators.js +0 -42
  181. package/lib/rules/errorMessages.d.ts +0 -9
  182. package/lib/rules/errorMessages.js +0 -54
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -9
  184. package/lib/rules/errorSubclassProperties.js +0 -142
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -9
  188. package/lib/rules/escapeSequenceCasing.js +0 -73
  189. package/lib/rules/evals.d.ts +0 -9
  190. package/lib/rules/evals.js +0 -29
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -9
  192. package/lib/rules/evolvingVariableTypes.js +0 -31
  193. package/lib/rules/exceptionAssignments.d.ts +0 -9
  194. package/lib/rules/exceptionAssignments.js +0 -37
  195. package/lib/rules/explicitAnys.d.ts +0 -9
  196. package/lib/rules/explicitAnys.js +0 -53
  197. package/lib/rules/exponentiationOperators.d.ts +0 -9
  198. package/lib/rules/exponentiationOperators.js +0 -32
  199. package/lib/rules/exportFromImports.d.ts +0 -9
  200. package/lib/rules/exportFromImports.js +0 -117
  201. package/lib/rules/exportMutables.d.ts +0 -9
  202. package/lib/rules/exportMutables.js +0 -31
  203. package/lib/rules/exportUniqueNames.d.ts +0 -9
  204. package/lib/rules/exportUniqueNames.js +0 -63
  205. package/lib/rules/extraneousClasses.d.ts +0 -15
  206. package/lib/rules/extraneousClasses.js +0 -109
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -9
  208. package/lib/rules/fetchMethodBodies.js +0 -70
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -9
  210. package/lib/rules/finallyStatementSafety.js +0 -45
  211. package/lib/rules/forDirections.d.ts +0 -9
  212. package/lib/rules/forDirections.js +0 -73
  213. package/lib/rules/forInArrays.d.ts +0 -9
  214. package/lib/rules/forInArrays.js +0 -44
  215. package/lib/rules/forInGuards.d.ts +0 -8
  216. package/lib/rules/forInGuards.js +0 -42
  217. package/lib/rules/functionApplySpreads.d.ts +0 -9
  218. package/lib/rules/functionApplySpreads.js +0 -61
  219. package/lib/rules/functionAssignments.d.ts +0 -9
  220. package/lib/rules/functionAssignments.js +0 -27
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
  222. package/lib/rules/functionCurryingRedundancy.js +0 -51
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -15
  224. package/lib/rules/functionDeclarationStyles.js +0 -65
  225. package/lib/rules/functionNameMatches.d.ts +0 -9
  226. package/lib/rules/functionNameMatches.js +0 -72
  227. package/lib/rules/functionNewCalls.d.ts +0 -9
  228. package/lib/rules/functionNewCalls.js +0 -40
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -9
  230. package/lib/rules/generatorFunctionYields.js +0 -48
  231. package/lib/rules/getterReturns.d.ts +0 -9
  232. package/lib/rules/getterReturns.js +0 -63
  233. package/lib/rules/globalAssignments.d.ts +0 -9
  234. package/lib/rules/globalAssignments.js +0 -45
  235. package/lib/rules/globalObjectCalls.d.ts +0 -9
  236. package/lib/rules/globalObjectCalls.js +0 -40
  237. package/lib/rules/globalThisAliases.d.ts +0 -9
  238. package/lib/rules/globalThisAliases.js +0 -45
  239. package/lib/rules/impliedEvals.d.ts +0 -9
  240. package/lib/rules/impliedEvals.js +0 -128
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -9
  242. package/lib/rules/importEmptyBlocks.js +0 -51
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -9
  244. package/lib/rules/importTypeSideEffects.js +0 -29
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -15
  246. package/lib/rules/indexedObjectTypes.js +0 -81
  247. package/lib/rules/instanceOfArrays.d.ts +0 -9
  248. package/lib/rules/instanceOfArrays.js +0 -29
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -15
  250. package/lib/rules/irregularWhitespaces.js +0 -95
  251. package/lib/rules/isNaNComparisons.d.ts +0 -9
  252. package/lib/rules/isNaNComparisons.js +0 -41
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -9
  254. package/lib/rules/literalConstructorWrappers.js +0 -62
  255. package/lib/rules/mathMethods.d.ts +0 -9
  256. package/lib/rules/mathMethods.js +0 -126
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
  258. package/lib/rules/meaninglessVoidOperators.js +0 -37
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
  260. package/lib/rules/misleadingVoidExpressions.js +0 -126
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -9
  262. package/lib/rules/moduleSpecifierLists.js +0 -90
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -9
  264. package/lib/rules/multilineAmbiguities.js +0 -62
  265. package/lib/rules/namedDefaultExports.d.ts +0 -9
  266. package/lib/rules/namedDefaultExports.js +0 -58
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -13
  268. package/lib/rules/namespaceDeclarations.js +0 -35
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
  271. package/lib/rules/namespaceKeywords.d.ts +0 -9
  272. package/lib/rules/namespaceKeywords.js +0 -38
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -9
  274. package/lib/rules/nativeObjectExtensions.js +0 -112
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -178
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -9
  278. package/lib/rules/negativeZeroComparisons.js +0 -46
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
  280. package/lib/rules/nestedStandaloneIfs.js +0 -103
  281. package/lib/rules/newDefinitions.d.ts +0 -9
  282. package/lib/rules/newDefinitions.js +0 -82
  283. package/lib/rules/newExpressions.d.ts +0 -9
  284. package/lib/rules/newExpressions.js +0 -36
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -9
  286. package/lib/rules/newNativeNonConstructors.js +0 -37
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -92
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -76
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -46
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -20
  298. package/lib/rules/nullishCheckStyle.js +0 -142
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
  300. package/lib/rules/nullishCoalescingOperators.js +0 -321
  301. package/lib/rules/numberMethodRanges.d.ts +0 -9
  302. package/lib/rules/numberMethodRanges.js +0 -72
  303. package/lib/rules/numberStaticMethods.d.ts +0 -9
  304. package/lib/rules/numberStaticMethods.js +0 -51
  305. package/lib/rules/numericErasingOperations.d.ts +0 -9
  306. package/lib/rules/numericErasingOperations.js +0 -44
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -9
  308. package/lib/rules/numericLiteralParsing.js +0 -55
  309. package/lib/rules/numericPrecision.d.ts +0 -9
  310. package/lib/rules/numericPrecision.js +0 -100
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -9
  312. package/lib/rules/numericSeparatorGroups.js +0 -99
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -9
  314. package/lib/rules/objectAssignSpreads.js +0 -51
  315. package/lib/rules/objectCalls.d.ts +0 -9
  316. package/lib/rules/objectCalls.js +0 -36
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -9
  318. package/lib/rules/objectEntriesMethods.js +0 -80
  319. package/lib/rules/objectHasOwns.d.ts +0 -9
  320. package/lib/rules/objectHasOwns.js +0 -48
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -9
  322. package/lib/rules/objectKeyDuplicates.js +0 -61
  323. package/lib/rules/objectProto.d.ts +0 -9
  324. package/lib/rules/objectProto.js +0 -48
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -52
  327. package/lib/rules/objectShorthand.d.ts +0 -9
  328. package/lib/rules/objectShorthand.js +0 -82
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -9
  332. package/lib/rules/objectTypeDefinitions.js +0 -32
  333. package/lib/rules/octalEscapes.d.ts +0 -9
  334. package/lib/rules/octalEscapes.js +0 -56
  335. package/lib/rules/octalNumbers.d.ts +0 -9
  336. package/lib/rules/octalNumbers.js +0 -53
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -75
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -138
  341. package/lib/rules/parameterReassignments.d.ts +0 -9
  342. package/lib/rules/parameterReassignments.js +0 -43
  343. package/lib/rules/parseIntRadixes.d.ts +0 -9
  344. package/lib/rules/parseIntRadixes.js +0 -57
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -12
  346. package/lib/rules/propertyAccessNotation.js +0 -117
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -9
  348. package/lib/rules/recursionOnlyArguments.js +0 -62
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -9
  350. package/lib/rules/redundantTypeConstituents.js +0 -275
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
  352. package/lib/rules/regexAllGlobalFlags.js +0 -54
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -295
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
  356. package/lib/rules/regexCharacterClassRanges.js +0 -135
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -79
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -9
  360. package/lib/rules/regexCharacterClasses.js +0 -232
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
  364. package/lib/rules/regexContradictoryAssertions.js +0 -208
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -128
  367. package/lib/rules/regexControlCharacters.d.ts +0 -9
  368. package/lib/rules/regexControlCharacters.js +0 -93
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -9
  370. package/lib/rules/regexDigitMatchers.js +0 -178
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -9
  372. package/lib/rules/regexDollarEscapes.js +0 -89
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
  376. package/lib/rules/regexEmptyAlternatives.js +0 -138
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -65
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -66
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -9
  382. package/lib/rules/regexEmptyGroups.js +0 -64
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -64
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
  390. package/lib/rules/regexEscapeBackspaces.js +0 -67
  391. package/lib/rules/regexExecutors.d.ts +0 -9
  392. package/lib/rules/regexExecutors.js +0 -56
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -49
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -69
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -143
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
  400. package/lib/rules/regexInvisibleCharacters.js +0 -88
  401. package/lib/rules/regexLetterCasing.d.ts +0 -9
  402. package/lib/rules/regexLetterCasing.js +0 -184
  403. package/lib/rules/regexLiterals.d.ts +0 -9
  404. package/lib/rules/regexLiterals.js +0 -87
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
  406. package/lib/rules/regexLookaroundAssertions.js +0 -161
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
  409. package/lib/rules/regexMatchNotation.d.ts +0 -9
  410. package/lib/rules/regexMatchNotation.js +0 -137
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -76
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -9
  418. package/lib/rules/regexNamedBackreferences.js +0 -46
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -65
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -9
  422. package/lib/rules/regexNamedReplacements.js +0 -91
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -9
  424. package/lib/rules/regexNonStandardFlags.js +0 -64
  425. package/lib/rules/regexObscureRanges.d.ts +0 -9
  426. package/lib/rules/regexObscureRanges.js +0 -91
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -9
  428. package/lib/rules/regexOctalEscapes.js +0 -68
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
  430. package/lib/rules/regexPlusQuantifiers.js +0 -66
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
  432. package/lib/rules/regexPredefinedAssertions.js +0 -125
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -102
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -94
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -9
  438. package/lib/rules/regexResultArrayGroups.js +0 -185
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -175
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -57
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -9
  444. package/lib/rules/regexStarQuantifiers.js +0 -66
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -96
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
  448. package/lib/rules/regexSuperLinearMoves.js +0 -140
  449. package/lib/rules/regexTestMethods.d.ts +0 -9
  450. package/lib/rules/regexTestMethods.js +0 -81
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
  454. package/lib/rules/regexUnicodeEscapes.js +0 -95
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -8
  456. package/lib/rules/regexUnicodeFlag.js +0 -95
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -9
  458. package/lib/rules/regexUnicodeProperties.js +0 -131
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -221
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -134
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -134
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -67
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -9
  492. package/lib/rules/regexUnusedFlags.js +0 -114
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -61
  497. package/lib/rules/regexValidity.d.ts +0 -9
  498. package/lib/rules/regexValidity.js +0 -144
  499. package/lib/rules/regexWordMatchers.d.ts +0 -9
  500. package/lib/rules/regexWordMatchers.js +0 -144
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
  502. package/lib/rules/regexZeroQuantifiers.js +0 -58
  503. package/lib/rules/requireImports.d.ts +0 -9
  504. package/lib/rules/requireImports.js +0 -46
  505. package/lib/rules/responseJsonMethods.d.ts +0 -9
  506. package/lib/rules/responseJsonMethods.js +0 -49
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -12
  508. package/lib/rules/restrictedIdentifiers.js +0 -39
  509. package/lib/rules/restrictedImports.d.ts +0 -26
  510. package/lib/rules/restrictedImports.js +0 -164
  511. package/lib/rules/returnAssignments.d.ts +0 -9
  512. package/lib/rules/returnAssignments.js +0 -36
  513. package/lib/rules/returnThisTypes.d.ts +0 -9
  514. package/lib/rules/returnThisTypes.js +0 -92
  515. package/lib/rules/ruleCreator.d.ts +0 -2
  516. package/lib/rules/ruleCreator.js +0 -15
  517. package/lib/rules/selfAssignments.d.ts +0 -9
  518. package/lib/rules/selfAssignments.js +0 -27
  519. package/lib/rules/sequences.d.ts +0 -9
  520. package/lib/rules/sequences.js +0 -26
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -9
  522. package/lib/rules/setSizeLengthChecks.js +0 -46
  523. package/lib/rules/setterReturns.d.ts +0 -9
  524. package/lib/rules/setterReturns.js +0 -39
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
  526. package/lib/rules/shadowedRestrictedNames.js +0 -66
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -9
  528. package/lib/rules/singleVariableDeclarations.js +0 -34
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -15
  530. package/lib/rules/sizeComparisonOperators.js +0 -146
  531. package/lib/rules/sparseArrays.d.ts +0 -9
  532. package/lib/rules/sparseArrays.js +0 -41
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -75
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -9
  536. package/lib/rules/stringCaseMismatches.js +0 -53
  537. package/lib/rules/stringCodePoints.d.ts +0 -9
  538. package/lib/rules/stringCodePoints.js +0 -48
  539. package/lib/rules/stringSliceMethods.d.ts +0 -9
  540. package/lib/rules/stringSliceMethods.js +0 -45
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -9
  542. package/lib/rules/stringStartsEndsWith.js +0 -77
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -9
  544. package/lib/rules/structuredCloneMethods.js +0 -37
  545. package/lib/rules/symbolDescriptions.d.ts +0 -9
  546. package/lib/rules/symbolDescriptions.js +0 -30
  547. package/lib/rules/thisAliases.d.ts +0 -9
  548. package/lib/rules/thisAliases.js +0 -42
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -9
  550. package/lib/rules/thisBeforeSuper.js +0 -84
  551. package/lib/rules/throwErrors.d.ts +0 -9
  552. package/lib/rules/throwErrors.js +0 -59
  553. package/lib/rules/topLevelAwaits.d.ts +0 -9
  554. package/lib/rules/topLevelAwaits.js +0 -47
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -52
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -9
  558. package/lib/rules/tripleSlashReferences.js +0 -32
  559. package/lib/rules/tsComments.d.ts +0 -21
  560. package/lib/rules/tsComments.js +0 -128
  561. package/lib/rules/tslintComments.d.ts +0 -9
  562. package/lib/rules/tslintComments.js +0 -34
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -9
  564. package/lib/rules/typeAssertionStyles.js +0 -30
  565. package/lib/rules/typeImports.d.ts +0 -19
  566. package/lib/rules/typeImports.js +0 -281
  567. package/lib/rules/typeofComparisons.d.ts +0 -9
  568. package/lib/rules/typeofComparisons.js +0 -53
  569. package/lib/rules/unassignedVariables.d.ts +0 -9
  570. package/lib/rules/unassignedVariables.js +0 -32
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
  572. package/lib/rules/undefinedTypeofChecks.js +0 -39
  573. package/lib/rules/undefinedVariables.d.ts +0 -9
  574. package/lib/rules/undefinedVariables.js +0 -37
  575. package/lib/rules/unicodeBOMs.d.ts +0 -9
  576. package/lib/rules/unicodeBOMs.js +0 -37
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -9
  578. package/lib/rules/unnecessaryBinds.js +0 -76
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -9
  580. package/lib/rules/unnecessaryBlocks.js +0 -58
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -56
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -9
  584. package/lib/rules/unnecessaryCatches.js +0 -46
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -9
  586. package/lib/rules/unnecessaryComparisons.js +0 -291
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
  588. package/lib/rules/unnecessaryConcatenation.js +0 -26
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -9
  590. package/lib/rules/unnecessaryEscapes.js +0 -132
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
  592. package/lib/rules/unnecessaryMathClamps.js +0 -106
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -48
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -9
  596. package/lib/rules/unnecessaryRenames.js +0 -90
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -9
  598. package/lib/rules/unnecessaryTernaries.js +0 -86
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
  600. package/lib/rules/unnecessaryUseStricts.js +0 -38
  601. package/lib/rules/unsafeNegations.d.ts +0 -9
  602. package/lib/rules/unsafeNegations.js +0 -36
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -27
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
  606. package/lib/rules/utils/countCommentsInRange.js +0 -10
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
  608. package/lib/rules/utils/discriminateAnyType.js +0 -36
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -8
  610. package/lib/rules/utils/equalityOperators.js +0 -34
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -27
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -3
  614. package/lib/rules/utils/formatReportedType.js +0 -7
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -2
  616. package/lib/rules/utils/getConstrainedType.js +0 -7
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -2
  618. package/lib/rules/utils/getFunctionName.js +0 -14
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -25
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -2
  624. package/lib/rules/utils/getThisExpression.js +0 -14
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -25
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
  634. package/lib/rules/utils/isInBooleanContext.js +0 -20
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
  636. package/lib/rules/utils/isTypeRecursive.js +0 -6
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -43
  639. package/lib/rules/utils/operators.d.ts +0 -4
  640. package/lib/rules/utils/operators.js +0 -33
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
  642. package/lib/rules/utils/parseRegexpAst.js +0 -15
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -16
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -2
  646. package/lib/rules/utils/skipParentheses.js +0 -8
  647. package/lib/rules/variableDeletions.d.ts +0 -9
  648. package/lib/rules/variableDeletions.js +0 -33
  649. package/lib/rules/voidOperator.d.ts +0 -9
  650. package/lib/rules/voidOperator.js +0 -32
  651. package/lib/rules/withStatements.d.ts +0 -9
  652. package/lib/rules/withStatements.js +0 -28
  653. package/lib/rules/wrapperObjects.d.ts +0 -9
  654. package/lib/rules/wrapperObjects.js +0 -34
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -2
  656. package/lib/type-utils/getSpecifierNames.js +0 -7
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
  659. package/lib/type-utils/isFromFile.d.ts +0 -2
  660. package/lib/type-utils/isFromFile.js +0 -11
  661. package/lib/type-utils/isFromPackage.d.ts +0 -2
  662. package/lib/type-utils/isFromPackage.js +0 -13
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -3
  664. package/lib/type-utils/matchesSpecifier.js +0 -18
  665. package/lib/type-utils/schemas.d.ts +0 -14
  666. package/lib/type-utils/schemas.js +0 -23
@@ -1,164 +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 as z$1 } from "zod/v4";
8
- //#region src/rules/restrictedImports.ts
9
- const restrictionSchema = z$1.object({
10
- allowTypeImports: z$1.boolean().optional().describe("Whether type-only imports are exempt from the restriction."),
11
- message: z$1.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$1.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 };
@@ -1,9 +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;
@@ -1,36 +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 };
@@ -1,9 +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;
@@ -1,92 +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 };
@@ -1,2 +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">>;
@@ -1,15 +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 };
@@ -1,9 +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;
@@ -1,27 +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 };
@@ -1,9 +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;
@@ -1,26 +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 };
@@ -1,9 +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;
@@ -1,46 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { NodeFlags, SyntaxKind, isArrayLiteralExpression, isIdentifier, isNewExpression, isParenthesizedExpression, isSpreadElement, isVariableDeclaration } from "typescript";
4
- //#region src/rules/setSizeLengthChecks.ts
5
- function isNewSetExpression(expression, typeChecker, program) {
6
- return isNewExpression(expression) && isIdentifier(expression.expression) && expression.expression.text === "Set" && isGlobalDeclarationOfName(expression.expression, "Set", typeChecker, program);
7
- }
8
- function isSetExpression(expression, typeChecker, program) {
9
- const unwrapped = unwrapParentheses(expression);
10
- if (isNewSetExpression(unwrapped, typeChecker, program)) return true;
11
- if (!isIdentifier(unwrapped)) return false;
12
- const symbol = typeChecker.getSymbolAtLocation(unwrapped);
13
- if (!symbol?.valueDeclaration || !isVariableDeclaration(symbol.valueDeclaration)) return false;
14
- const declaration = symbol.valueDeclaration;
15
- if (declaration.parent.kind !== SyntaxKind.VariableDeclarationList || !(declaration.parent.flags & NodeFlags.Const) || !declaration.initializer) return false;
16
- return isNewSetExpression(unwrapParentheses(declaration.initializer), typeChecker, program);
17
- }
18
- function unwrapParentheses(expression) {
19
- while (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, { program, sourceFile, typeChecker }) => {
35
- if (node.questionDotToken || node.name.text !== "length" || !isArrayLiteralExpression(node.expression) || node.expression.elements.length !== 1) return;
36
- const element = node.expression.elements[0];
37
- if (!isSpreadElement(element) || !isSetExpression(element.expression, typeChecker, program)) return;
38
- context.report({
39
- message: "preferSize",
40
- range: getTSNodeRange(node, sourceFile)
41
- });
42
- } } };
43
- }
44
- });
45
- //#endregion
46
- export { setSizeLengthChecks_default as default };
@@ -1,9 +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;
@@ -1,39 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/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 };
@@ -1,9 +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;
@@ -1,66 +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 = /* @__PURE__ */ 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 };
@@ -1,9 +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;
@@ -1,34 +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/singleVariableDeclarations.ts
5
- var singleVariableDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Enforces one variable per declaration statement.",
8
- id: "singleVariableDeclarations",
9
- presets: ["logical"]
10
- },
11
- messages: { singleVariable: {
12
- primary: "Split this into separate variable declarations.",
13
- secondary: ["Declaring multiple variables in one statement can reduce readability."],
14
- suggestions: ["Use separate declaration statements for each variable."]
15
- } },
16
- setup(context) {
17
- return { visitors: {
18
- ForStatement: (node, { sourceFile }) => {
19
- if (node.initializer && ts.isVariableDeclarationList(node.initializer) && node.initializer.declarations.length > 1) context.report({
20
- message: "singleVariable",
21
- range: getTSNodeRange(node.initializer, sourceFile)
22
- });
23
- },
24
- VariableStatement: (node, { sourceFile }) => {
25
- if (node.declarationList.declarations.length > 1) context.report({
26
- message: "singleVariable",
27
- range: getTSNodeRange(node.declarationList, sourceFile)
28
- });
29
- }
30
- } };
31
- }
32
- });
33
- //#endregion
34
- export { singleVariableDeclarations_default as default };
@@ -1,15 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Enforce consistent style for `.length` and `.size` checks.";
4
- readonly id: "sizeComparisonOperators";
5
- readonly presets: readonly ["stylisticStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "coercionNonZeroCheck" | "coercionZeroCheck" | "explicitNonZeroCheck" | "explicitZeroCheck", {
10
- style: z.ZodDefault<z.ZodEnum<{
11
- coercion: "coercion";
12
- explicit: "explicit";
13
- }>>;
14
- }>;
15
- export default _default;