@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,140 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { parseRegexpAst } from "./utils/parseRegexpAst.js";
3
- import { getRegExpConstruction } from "./utils/getRegExpConstruction.js";
4
- import { getRegExpLiteralDetails } from "./utils/getRegExpLiteralDetails.js";
5
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
6
- //#region src/rules/regexSuperLinearMoves.ts
7
- function canMatchEmpty(element) {
8
- switch (element.type) {
9
- case "Assertion": return true;
10
- case "CapturingGroup":
11
- case "Group": return element.alternatives.some((alternative) => alternative.elements.every(canMatchEmpty));
12
- case "Quantifier": return element.min === 0;
13
- default: return false;
14
- }
15
- }
16
- function canReject(element) {
17
- switch (element.type) {
18
- case "Assertion": return element.kind === "end" || element.kind === "word";
19
- case "Backreference":
20
- case "Character":
21
- case "ExpressionCharacterClass": return true;
22
- case "CapturingGroup":
23
- case "Group": return element.alternatives.some((alternative) => alternative.elements.some(canReject));
24
- case "CharacterClass": return !isMatchAll(element);
25
- case "CharacterSet": return element.kind !== "any" || element.raw !== "[\\s\\S]";
26
- case "Quantifier": return element.min !== 0 && canReject(element.element);
27
- default: return false;
28
- }
29
- }
30
- function findReachableQuantifiers(pattern) {
31
- const quantifiers = [];
32
- function walkAlternative(alternative) {
33
- for (const element of alternative.elements) {
34
- switch (element.type) {
35
- case "CapturingGroup":
36
- case "Group":
37
- for (const innerAlternative of element.alternatives) walkAlternative(innerAlternative);
38
- break;
39
- case "Quantifier":
40
- if (element.max === Infinity && element.min === 0) quantifiers.push(element);
41
- break;
42
- }
43
- if (!canMatchEmpty(element)) return;
44
- }
45
- }
46
- for (const alternative of pattern.alternatives) walkAlternative(alternative);
47
- return quantifiers;
48
- }
49
- function generateAttackString(quantifier) {
50
- let character;
51
- switch (quantifier.element.type) {
52
- case "Character":
53
- character = String.fromCharCode(quantifier.element.value);
54
- break;
55
- case "CharacterClass": {
56
- const first = quantifier.element.elements[0];
57
- if (first.type === "Character") character = String.fromCharCode(first.value);
58
- break;
59
- }
60
- case "CharacterSet":
61
- switch (quantifier.element.kind) {
62
- case "any":
63
- character = "x";
64
- break;
65
- case "digit":
66
- character = "0";
67
- break;
68
- case "space":
69
- character = " ";
70
- break;
71
- }
72
- break;
73
- }
74
- return (character ?? "a").repeat(20);
75
- }
76
- function getFollowingElements(quantifier) {
77
- const index = quantifier.parent.elements.indexOf(quantifier);
78
- const following = quantifier.parent.elements.slice(index + 1);
79
- const grandparent = quantifier.parent.parent;
80
- if (grandparent.type === "CapturingGroup" || grandparent.type === "Group") {
81
- const groupParent = grandparent.parent;
82
- if (groupParent.type === "Alternative") following.push(...groupParent.elements.slice(groupParent.elements.indexOf(grandparent) + 1));
83
- }
84
- return following;
85
- }
86
- function hasRejectingSuffix(quantifier) {
87
- return getFollowingElements(quantifier).some(canReject);
88
- }
89
- function isAnchoredAtStart(pattern) {
90
- return pattern.alternatives.every((alternative) => {
91
- const first = alternative.elements[0];
92
- return first.type === "Assertion" && first.kind === "start";
93
- });
94
- }
95
- function isMatchAll(characterClass) {
96
- return characterClass.negate && !characterClass.elements.length;
97
- }
98
- var regexSuperLinearMoves_default = ruleCreator.createRule(typescriptLanguage, {
99
- about: {
100
- description: "Reports quantifiers that can cause quadratic regex matching time.",
101
- id: "regexSuperLinearMoves",
102
- presets: ["logical"]
103
- },
104
- messages: { superLinear: {
105
- primary: "This quantifier can cause quadratic regex matching time. An input like `{{ attack }}` could trigger slow matching.",
106
- secondary: ["When a quantifier at the start of a pattern is followed by elements that can fail to match, the regex engine may try the pattern from each position in the input string.", "For an input of length n, this can result in O(n²) time complexity."],
107
- suggestions: ["Anchor the pattern with `^` to prevent repeated matching attempts.", "Ensure the quantifier is preceded by a required consuming element."]
108
- } },
109
- setup(context) {
110
- function checkPattern(pattern, patternStart, flags) {
111
- const regexpAst = parseRegexpAst(pattern, flags);
112
- if (!regexpAst || isAnchoredAtStart(regexpAst)) return;
113
- const quantifiers = findReachableQuantifiers(regexpAst).filter(hasRejectingSuffix);
114
- for (const quantifier of quantifiers) context.report({
115
- data: { attack: generateAttackString(quantifier) },
116
- message: "superLinear",
117
- range: {
118
- begin: patternStart + quantifier.start,
119
- end: patternStart + quantifier.end
120
- }
121
- });
122
- }
123
- function checkRegexLiteral(node, services) {
124
- const details = getRegExpLiteralDetails(node, services);
125
- checkPattern(details.pattern, details.start, details.flags);
126
- }
127
- function checkRegExpConstructor(node, services) {
128
- const construction = getRegExpConstruction(node, services);
129
- if (!construction) return;
130
- checkPattern(construction.pattern, construction.start + 1, construction.flags);
131
- }
132
- return { visitors: {
133
- CallExpression: checkRegExpConstructor,
134
- NewExpression: checkRegExpConstructor,
135
- RegularExpressionLiteral: checkRegexLiteral
136
- } };
137
- }
138
- });
139
- //#endregion
140
- export { regexSuperLinearMoves_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports match() and exec() calls that should use RegExp.prototype.test() for boolean checks.";
3
- readonly id: "regexTestMethods";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferTest", undefined>;
9
- export default _default;
@@ -1,81 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { isBuiltinSymbolLike } from "./utils/isBuiltinSymbolLike.js";
4
- import { isInBooleanContext } from "./utils/isInBooleanContext.js";
5
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
6
- import ts from "typescript";
7
- //#region src/rules/regexTestMethods.ts
8
- function getRegexFlags(node, sourceFile) {
9
- switch (node.kind) {
10
- case ts.SyntaxKind.CallExpression:
11
- case ts.SyntaxKind.NewExpression:
12
- if (ts.isIdentifier(node.expression) && node.expression.text === "RegExp" && node.arguments) {
13
- if (node.arguments.length < 2) return "";
14
- const flagsArg = node.arguments[1];
15
- if (flagsArg && ts.isStringLiteral(flagsArg)) return flagsArg.text;
16
- }
17
- return;
18
- case ts.SyntaxKind.RegularExpressionLiteral: {
19
- const text = node.getText(sourceFile);
20
- const lastSlash = text.lastIndexOf("/");
21
- return lastSlash >= 0 ? text.slice(lastSlash + 1) : "";
22
- }
23
- default: return;
24
- }
25
- }
26
- function needsParentheses(node) {
27
- return !(ts.isIdentifier(node) || ts.isRegularExpressionLiteral(node) || ts.isParenthesizedExpression(node) || ts.isCallExpression(node) || ts.isNewExpression(node));
28
- }
29
- var regexTestMethods_default = ruleCreator.createRule(typescriptLanguage, {
30
- about: {
31
- description: "Reports match() and exec() calls that should use RegExp.prototype.test() for boolean checks.",
32
- id: "regexTestMethods",
33
- presets: ["stylistic", "stylisticStrict"]
34
- },
35
- messages: { preferTest: {
36
- primary: "Prefer the faster `RegExp.test()` for boolean checks instead of the slower `RegExp.{{ method }}()`.",
37
- secondary: ["`RegExp.prototype.test()` is more efficient and semantically clearer when only checking for existence.", "`RegExp.prototype.exec()` returns a full matches array, including capture groups, which is slower to execute."],
38
- suggestions: ["Replace with `RegExp.prototype.test()` for boolean context checks."]
39
- } },
40
- setup(context) {
41
- return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
42
- if (!ts.isPropertyAccessExpression(node.expression) || node.arguments.length !== 1) return;
43
- const methodName = node.expression.name.text;
44
- if (methodName !== "match" && methodName !== "exec") return;
45
- if (!isInBooleanContext(node)) return;
46
- const argument = node.arguments[0];
47
- const range = getTSNodeRange(node, sourceFile);
48
- if (methodName === "exec") {
49
- if (!isBuiltinSymbolLike(program, getConstrainedTypeAtLocation(node.expression.expression, typeChecker), "RegExp")) return;
50
- const flags = getRegexFlags(node.expression.expression, sourceFile);
51
- const hasGlobalFlag = flags === void 0 || flags.includes("g");
52
- context.report({
53
- data: { method: "exec" },
54
- fix: hasGlobalFlag ? void 0 : {
55
- range,
56
- text: `${node.expression.expression.getText(sourceFile)}.test(${argument.getText(sourceFile)})`
57
- },
58
- message: "preferTest",
59
- range
60
- });
61
- return;
62
- }
63
- if (!(getConstrainedTypeAtLocation(node.expression.expression, typeChecker).flags & ts.TypeFlags.StringLike)) return;
64
- if (!isBuiltinSymbolLike(program, getConstrainedTypeAtLocation(argument, typeChecker), "RegExp")) return;
65
- const flags = getRegexFlags(argument, sourceFile);
66
- const hasGlobalFlag = flags === void 0 || flags.includes("g");
67
- const regexText = needsParentheses(argument) ? `(${argument.getText(sourceFile)})` : argument.getText(sourceFile);
68
- context.report({
69
- data: { method: "match" },
70
- fix: hasGlobalFlag ? void 0 : {
71
- range,
72
- text: `${regexText}.test(${node.expression.expression.getText(sourceFile)})`
73
- },
74
- message: "preferTest",
75
- range
76
- });
77
- } } };
78
- }
79
- });
80
- //#endregion
81
- export { regexTestMethods_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports surrogate pair escapes in regular expressions that can be replaced with Unicode codepoint escapes.";
3
- readonly id: "regexUnicodeCodepointEscapes";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "useSurrogatePair", undefined>;
9
- export default _default;
@@ -1,105 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { parseRegexpAst } from "./utils/parseRegexpAst.js";
3
- import { getRegExpConstruction } from "./utils/getRegExpConstruction.js";
4
- import { getRegExpLiteralDetails } from "./utils/getRegExpLiteralDetails.js";
5
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
6
- import { visitRegExpAST } from "@eslint-community/regexpp";
7
- //#region src/rules/regexUnicodeCodepointEscapes.ts
8
- function isSurrogatePairEscape(raw) {
9
- return /^(?:\\u[\da-f]{4}){2}$/i.test(raw);
10
- }
11
- var regexUnicodeCodepointEscapes_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports surrogate pair escapes in regular expressions that can be replaced with Unicode codepoint escapes.",
14
- id: "regexUnicodeCodepointEscapes",
15
- presets: ["stylistic", "stylisticStrict"]
16
- },
17
- messages: { useSurrogatePair: {
18
- primary: "Prefer the more expressive Unicode codepoint escape `{{ replacement }}` instead of surrogate pair `{{ raw }}`.",
19
- secondary: ["Unicode codepoint escapes are clearer and more maintainable than surrogate pairs."],
20
- suggestions: ["Replace `{{ raw }}` with `{{ replacement }}`."]
21
- } },
22
- setup(context) {
23
- function checkPattern(pattern, patternStart, flags) {
24
- if (!flags.includes("u") && !flags.includes("v")) return;
25
- const regexpAst = parseRegexpAst(pattern, flags);
26
- if (!regexpAst) return;
27
- visitRegExpAST(regexpAst, { onCharacterEnter(charNode) {
28
- if (charNode.value < 65536 || !isSurrogatePairEscape(charNode.raw)) return;
29
- let hex = charNode.value.toString(16);
30
- if (/[A-F]/.test(charNode.raw)) hex = hex.toUpperCase();
31
- const replacement = `\\u{${hex}}`;
32
- context.report({
33
- data: {
34
- raw: charNode.raw,
35
- replacement
36
- },
37
- fix: {
38
- range: {
39
- begin: patternStart + charNode.start,
40
- end: patternStart + charNode.end
41
- },
42
- text: replacement
43
- },
44
- message: "useSurrogatePair",
45
- range: {
46
- begin: patternStart + charNode.start,
47
- end: patternStart + charNode.end
48
- }
49
- });
50
- } });
51
- }
52
- function checkStringPattern(rawPattern, patternStart, flags) {
53
- if (!flags.includes("u") && !flags.includes("v")) return;
54
- const surrogatePairPattern = /\\\\u([\da-f]{4})\\\\u([\da-f]{4})/gi;
55
- let match;
56
- while ((match = surrogatePairPattern.exec(rawPattern)) !== null) {
57
- const [fullMatch, highHex, lowHex] = match;
58
- if (!highHex || !lowHex) continue;
59
- const high = parseInt(highHex, 16);
60
- if (high < 55296 || high > 56319) continue;
61
- const low = parseInt(lowHex, 16);
62
- if (low < 56320 || low > 57343) continue;
63
- let hex = ((high - 55296) * 1024 + (low - 56320) + 65536).toString(16);
64
- if (/[A-F]/.test(fullMatch)) hex = hex.toUpperCase();
65
- const raw = `\\u${highHex}\\u${lowHex}`;
66
- const displayReplacement = `\\u{${hex}}`;
67
- const fixText = `\\${displayReplacement}`;
68
- context.report({
69
- data: {
70
- raw,
71
- replacement: displayReplacement
72
- },
73
- fix: {
74
- range: {
75
- begin: patternStart + match.index,
76
- end: patternStart + match.index + match[0].length
77
- },
78
- text: fixText
79
- },
80
- message: "useSurrogatePair",
81
- range: {
82
- begin: patternStart + match.index,
83
- end: patternStart + match.index + match[0].length
84
- }
85
- });
86
- }
87
- }
88
- function checkRegexLiteral(node, services) {
89
- const details = getRegExpLiteralDetails(node, services);
90
- checkPattern(details.pattern, details.start, details.flags);
91
- }
92
- function checkRegExpConstructor(node, services) {
93
- const construction = getRegExpConstruction(node, services);
94
- if (!construction) return;
95
- checkStringPattern(construction.pattern, construction.start + 1, construction.flags);
96
- }
97
- return { visitors: {
98
- CallExpression: checkRegExpConstructor,
99
- NewExpression: checkRegExpConstructor,
100
- RegularExpressionLiteral: checkRegexLiteral
101
- } };
102
- }
103
- });
104
- //#endregion
105
- export { regexUnicodeCodepointEscapes_default as default };
@@ -1,8 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Enforces consistent Unicode escape style in regex patterns by preferring codepoint escapes.";
3
- readonly id: "regexUnicodeEscapes";
4
- } & {
5
- readonly pluginId: string;
6
- readonly url: string;
7
- }, "preferCodepointEscape", undefined>;
8
- export default _default;
@@ -1,95 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { parseRegexpAst } from "./utils/parseRegexpAst.js";
3
- import { getRegExpConstruction } from "./utils/getRegExpConstruction.js";
4
- import { getRegExpLiteralDetails } from "./utils/getRegExpLiteralDetails.js";
5
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
6
- import { visitRegExpAST } from "@eslint-community/regexpp";
7
- //#region src/rules/regexUnicodeEscapes.ts
8
- function collectSurrogatePairIndices(characters) {
9
- const surrogateIndices = /* @__PURE__ */ new Set();
10
- for (let index = 0; index < characters.length - 1; index++) {
11
- const current = characters[index];
12
- const next = characters[index + 1];
13
- if (isFourDigitUnicodeEscape(current.raw) && isFourDigitUnicodeEscape(next.raw) && isHighSurrogate(current.value) && isLowSurrogate(next.value) && current.end === next.start) {
14
- surrogateIndices.add(index);
15
- surrogateIndices.add(index + 1);
16
- }
17
- }
18
- return surrogateIndices;
19
- }
20
- function isFourDigitUnicodeEscape(raw) {
21
- return /^\\u[0-9a-f]{4}$/i.test(raw);
22
- }
23
- function isHighSurrogate(codePoint) {
24
- return codePoint >= 55296 && codePoint <= 56319;
25
- }
26
- function isLowSurrogate(codePoint) {
27
- return codePoint >= 56320 && codePoint <= 57343;
28
- }
29
- var regexUnicodeEscapes_default = ruleCreator.createRule(typescriptLanguage, {
30
- about: {
31
- description: "Enforces consistent Unicode escape style in regex patterns by preferring codepoint escapes.",
32
- id: "regexUnicodeEscapes"
33
- },
34
- messages: { preferCodepointEscape: {
35
- primary: "Prefer the Unicode codepoint escape '{{ replacement }}' instead of 4-digit escape '{{ raw }}'.",
36
- secondary: ["The \\u{...} format is more flexible, readable, and consistent with modern Unicode handling in JavaScript."],
37
- suggestions: ["Replace `{{ raw }}` with `{{ replacement }}`."]
38
- } },
39
- setup(context) {
40
- function checkPattern(pattern, patternStart, flags, canFix) {
41
- if (!flags.includes("u") && !flags.includes("v")) return;
42
- const regexpAst = parseRegexpAst(pattern, flags);
43
- if (!regexpAst) return;
44
- const characters = [];
45
- visitRegExpAST(regexpAst, { onCharacterEnter(charNode) {
46
- if (isFourDigitUnicodeEscape(charNode.raw)) characters.push({
47
- end: charNode.end,
48
- raw: charNode.raw,
49
- start: charNode.start,
50
- value: charNode.value
51
- });
52
- } });
53
- const surrogateIndices = collectSurrogatePairIndices(characters);
54
- for (let index = 0; index < characters.length; index++) {
55
- if (surrogateIndices.has(index)) continue;
56
- const charInfo = characters[index];
57
- const replacement = `\\u{${charInfo.raw.slice(2)}}`;
58
- context.report({
59
- data: {
60
- raw: charInfo.raw,
61
- replacement
62
- },
63
- fix: canFix ? {
64
- range: {
65
- begin: patternStart + charInfo.start,
66
- end: patternStart + charInfo.end
67
- },
68
- text: replacement
69
- } : void 0,
70
- message: "preferCodepointEscape",
71
- range: {
72
- begin: patternStart + charInfo.start,
73
- end: patternStart + charInfo.end
74
- }
75
- });
76
- }
77
- }
78
- function checkRegexLiteral(node, services) {
79
- const details = getRegExpLiteralDetails(node, services);
80
- checkPattern(details.pattern, details.start, details.flags, true);
81
- }
82
- function checkRegExpConstructor(node, services) {
83
- const construction = getRegExpConstruction(node, services);
84
- if (!construction) return;
85
- checkPattern(construction.raw, construction.start + 1, construction.flags, false);
86
- }
87
- return { visitors: {
88
- CallExpression: checkRegExpConstructor,
89
- NewExpression: checkRegExpConstructor,
90
- RegularExpressionLiteral: checkRegexLiteral
91
- } };
92
- }
93
- });
94
- //#endregion
95
- export { regexUnicodeEscapes_default as default };
@@ -1,8 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Require regex patterns to have the unicode ('u') or unicodeSets ('v') flag for proper Unicode character handling.";
3
- readonly id: "regexUnicodeFlag";
4
- } & {
5
- readonly pluginId: string;
6
- readonly url: string;
7
- }, "missing", undefined>;
8
- export default _default;
@@ -1,95 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { parseRegexpAst } from "./utils/parseRegexpAst.js";
3
- import { getRegExpConstruction } from "./utils/getRegExpConstruction.js";
4
- import { getRegExpLiteralDetails } from "./utils/getRegExpLiteralDetails.js";
5
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
6
- import * as ts$1 from "typescript";
7
- //#region src/rules/regexUnicodeFlag.ts
8
- function canAddUnicodeFlag(pattern, flags) {
9
- return !hasUnicodeFlag(flags) && parseRegexpAst(pattern, flags + "u") !== void 0;
10
- }
11
- function hasUnicodeFlag(flags) {
12
- return flags.includes("u") || flags.includes("v");
13
- }
14
- var regexUnicodeFlag_default = ruleCreator.createRule(typescriptLanguage, {
15
- about: {
16
- description: "Require regex patterns to have the unicode ('u') or unicodeSets ('v') flag for proper Unicode character handling.",
17
- id: "regexUnicodeFlag"
18
- },
19
- messages: { missing: {
20
- primary: "This regular expression is missing the Unicode ('u') flag for proper Unicode character handling.",
21
- secondary: ["Without the unicode flag, regex patterns may fail to match Unicode characters correctly, especially surrogate pairs like emoji."],
22
- suggestions: ["Add the `u` flag to enable unicode mode.", "Use the `v` flag for unicodeSets mode (ES2024)."]
23
- } },
24
- setup(context) {
25
- function checkRegexLiteral(node, services) {
26
- const details = getRegExpLiteralDetails(node, services);
27
- if (hasUnicodeFlag(details.flags)) return;
28
- const nodeEnd = node.getEnd();
29
- context.report({
30
- fix: canAddUnicodeFlag(details.pattern, details.flags) ? {
31
- range: {
32
- begin: details.start - 1,
33
- end: nodeEnd
34
- },
35
- text: `${node.getText(services.sourceFile)}u`
36
- } : void 0,
37
- message: "missing",
38
- range: {
39
- begin: details.start - 1,
40
- end: nodeEnd
41
- }
42
- });
43
- }
44
- function checkRegExpConstructor(node, services) {
45
- const construction = getRegExpConstruction(node, services);
46
- if (!construction) return;
47
- const firstArgument = construction.args[0];
48
- const secondArgument = construction.args[1];
49
- const hasSecondArgument = secondArgument !== void 0;
50
- const secondIsStringLiteral = secondArgument?.kind === ts$1.SyntaxKind.StringLiteral;
51
- if (hasUnicodeFlag(construction.flags)) return;
52
- const nodeStart = node.getStart(services.sourceFile);
53
- const nodeEnd = node.getEnd();
54
- let fix;
55
- if (canAddUnicodeFlag(construction.raw, construction.flags)) {
56
- if (secondIsStringLiteral) {
57
- const secondStart = secondArgument.getStart(services.sourceFile);
58
- const secondEnd = secondArgument.getEnd();
59
- const quote = secondArgument.getText(services.sourceFile)[0];
60
- fix = {
61
- range: {
62
- begin: secondStart,
63
- end: secondEnd
64
- },
65
- text: `${quote}${construction.flags}u${quote}`
66
- };
67
- } else if (!hasSecondArgument) {
68
- const firstEnd = firstArgument.getEnd();
69
- fix = {
70
- range: {
71
- begin: firstEnd,
72
- end: firstEnd
73
- },
74
- text: `, "u"`
75
- };
76
- }
77
- }
78
- context.report({
79
- fix,
80
- message: "missing",
81
- range: {
82
- begin: nodeStart,
83
- end: nodeEnd
84
- }
85
- });
86
- }
87
- return { visitors: {
88
- CallExpression: checkRegExpConstructor,
89
- NewExpression: checkRegExpConstructor,
90
- RegularExpressionLiteral: checkRegexLiteral
91
- } };
92
- }
93
- });
94
- //#endregion
95
- export { regexUnicodeFlag_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports inconsistent Unicode property names in regular expressions.";
3
- readonly id: "regexUnicodeProperties";
4
- readonly presets: readonly ["stylistic"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferLongScript" | "unnecessaryPrefix", undefined>;
9
- export default _default;