@flint.fyi/ts 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
  2. package/dist/index.mjs +22467 -0
  3. package/package.json +8 -7
  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,275 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- //#region src/rules/redundantTypeConstituents.ts
6
- const literalToPrimitiveTypeFlags = {
7
- [ts.TypeFlags.BigIntLiteral]: ts.TypeFlags.BigInt,
8
- [ts.TypeFlags.BooleanLiteral]: ts.TypeFlags.Boolean,
9
- [ts.TypeFlags.NumberLiteral]: ts.TypeFlags.Number,
10
- [ts.TypeFlags.StringLiteral]: ts.TypeFlags.String,
11
- [ts.TypeFlags.TemplateLiteral]: ts.TypeFlags.String
12
- };
13
- const literalTypeFlags = [
14
- ts.TypeFlags.BigIntLiteral,
15
- ts.TypeFlags.BooleanLiteral,
16
- ts.TypeFlags.NumberLiteral,
17
- ts.TypeFlags.StringLiteral,
18
- ts.TypeFlags.TemplateLiteral
19
- ];
20
- const primitiveTypeFlags = [
21
- ts.TypeFlags.BigInt,
22
- ts.TypeFlags.Boolean,
23
- ts.TypeFlags.Number,
24
- ts.TypeFlags.String
25
- ];
26
- const primitiveTypeFlagNames = {
27
- [ts.TypeFlags.BigInt]: "bigint",
28
- [ts.TypeFlags.Boolean]: "boolean",
29
- [ts.TypeFlags.Number]: "number",
30
- [ts.TypeFlags.String]: "string"
31
- };
32
- function describeLiteralType(type) {
33
- if (type.isStringLiteral()) return JSON.stringify(type.value);
34
- if (tsutils.isBigIntLiteralType(type)) return `${type.value.negative ? "-" : ""}${type.value.base10Value}n`;
35
- if (type.isLiteral()) return String(type.value);
36
- if (tsutils.isIntrinsicErrorType(type) && type.aliasSymbol) return String(type.aliasSymbol.escapedName);
37
- if (type.flags & ts.TypeFlags.Any) return "any";
38
- if (type.flags & ts.TypeFlags.Never) return "never";
39
- if (type.flags & ts.TypeFlags.Unknown) return "unknown";
40
- if (tsutils.isTemplateLiteralType(type)) return "template literal type";
41
- if (tsutils.isTrueLiteralType(type)) return "true";
42
- if (tsutils.isFalseLiteralType(type)) return "false";
43
- return "literal type";
44
- }
45
- function isDescendantOf(node, potentialAncestor) {
46
- let current = node;
47
- while (current) {
48
- if (current === potentialAncestor) return true;
49
- current = current.parent;
50
- }
51
- return false;
52
- }
53
- function isNodeInsideReturnType(node) {
54
- let current = node.parent;
55
- while (current) {
56
- if (current.kind === ts.SyntaxKind.FunctionDeclaration || current.kind === ts.SyntaxKind.FunctionExpression || current.kind === ts.SyntaxKind.ArrowFunction || current.kind === ts.SyntaxKind.MethodDeclaration || current.kind === ts.SyntaxKind.MethodSignature || current.kind === ts.SyntaxKind.FunctionType || current.kind === ts.SyntaxKind.CallSignature || current.kind === ts.SyntaxKind.ConstructSignature || current.kind === ts.SyntaxKind.ConstructorType) return !!current.type && isDescendantOf(node, current.type);
57
- current = current.parent;
58
- }
59
- return false;
60
- }
61
- function unionTypePartsUnlessBoolean(type) {
62
- if (type.isUnion() && type.types.length === 2 && type.types[0] && type.types[1] && tsutils.isFalseLiteralType(type.types[0]) && tsutils.isTrueLiteralType(type.types[1])) return [type];
63
- return tsutils.unionConstituents(type);
64
- }
65
- var redundantTypeConstituents_default = ruleCreator.createRule(typescriptLanguage, {
66
- about: {
67
- description: "Reports union and intersection type constituents that are redundant or override other types.",
68
- id: "redundantTypeConstituents",
69
- presets: ["logical", "logicalStrict"]
70
- },
71
- messages: {
72
- errorTypeOverrides: {
73
- primary: "{{ typeName }} is an 'error' type that acts as 'any' and overrides all other types in this {{ container }} type.",
74
- secondary: ["Error types that resolve to 'any' make the entire union or intersection effectively 'any'.", "This typically indicates a type reference that TypeScript couldn't resolve."],
75
- suggestions: ["Remove the redundant type constituent."]
76
- },
77
- literalOverridden: {
78
- primary: "{{ literal }} is overridden by {{ primitive }} in this union type.",
79
- secondary: ["When a primitive type like 'string' is in a union with a string literal, the literal is redundant.", "The primitive type already includes all possible literal values."],
80
- suggestions: ["Remove the literal type."]
81
- },
82
- overridden: {
83
- primary: "{{ typeName }} is overridden by other types in this {{ container }} type.",
84
- secondary: ["This type constituent has no effect because it is subsumed by other types in the {{ container }}.", "Consider removing it to simplify the type."],
85
- suggestions: ["Remove the redundant type."]
86
- },
87
- overrides: {
88
- primary: "{{ typeName }} overrides all other types in this {{ container }} type.",
89
- secondary: ["This type makes all other constituents in the {{ container }} redundant.", "Consider simplifying to just this type."],
90
- suggestions: ["Simplify to just this type."]
91
- },
92
- primitiveOverridden: {
93
- primary: "{{ primitive }} is overridden by {{ literal }} in this intersection type.",
94
- secondary: ["When a primitive type intersects with its literal type, the result is the literal type.", "The primitive type is redundant in this intersection."],
95
- suggestions: ["Remove the primitive type."]
96
- }
97
- },
98
- setup(context) {
99
- return { visitors: {
100
- IntersectionType: (node, { sourceFile, typeChecker }) => {
101
- const seenLiteralTypes = /* @__PURE__ */ new Map();
102
- const seenPrimitiveTypes = /* @__PURE__ */ new Map();
103
- const seenUnionTypes = /* @__PURE__ */ new Map();
104
- for (const typeNode of node.types) {
105
- const typeParts = unionTypePartsUnlessBoolean(typeChecker.getTypeAtLocation(typeNode));
106
- for (const typePart of typeParts) {
107
- const typeName = describeLiteralType(typePart);
108
- if (typePart.flags === ts.TypeFlags.Any) {
109
- context.report({
110
- data: {
111
- container: "intersection",
112
- typeName
113
- },
114
- message: typeName !== "any" ? "errorTypeOverrides" : "overrides",
115
- range: getTSNodeRange(typeNode, sourceFile)
116
- });
117
- continue;
118
- }
119
- if (typePart.flags === ts.TypeFlags.Never) {
120
- context.report({
121
- data: {
122
- container: "intersection",
123
- typeName
124
- },
125
- message: "overrides",
126
- range: getTSNodeRange(typeNode, sourceFile)
127
- });
128
- continue;
129
- }
130
- if (typePart.flags === ts.TypeFlags.Unknown) {
131
- context.report({
132
- data: {
133
- container: "intersection",
134
- typeName
135
- },
136
- message: "overridden",
137
- range: getTSNodeRange(typeNode, sourceFile)
138
- });
139
- continue;
140
- }
141
- for (const literalTypeFlag of literalTypeFlags) if (typePart.flags === literalTypeFlag) {
142
- const primitiveFlag = literalToPrimitiveTypeFlags[literalTypeFlag];
143
- if (primitiveFlag) {
144
- const existing = seenLiteralTypes.get(primitiveFlag);
145
- if (existing) existing.push(typeName);
146
- else seenLiteralTypes.set(primitiveFlag, [typeName]);
147
- }
148
- break;
149
- }
150
- for (const primitiveTypeFlag of primitiveTypeFlags) if (typePart.flags === primitiveTypeFlag) {
151
- const existing = seenPrimitiveTypes.get(primitiveTypeFlag);
152
- if (existing) existing.push(typeNode);
153
- else seenPrimitiveTypes.set(primitiveTypeFlag, [typeNode]);
154
- }
155
- }
156
- if (typeParts.length >= 2) seenUnionTypes.set(typeNode, typeParts.map((typePart) => ({
157
- typeFlags: typePart.flags,
158
- typeName: describeLiteralType(typePart)
159
- })));
160
- }
161
- if (seenUnionTypes.size) {
162
- for (const [typeRef, typeValues] of seenUnionTypes) {
163
- let primitiveFlag;
164
- for (const { typeFlags } of typeValues) {
165
- const mapped = literalToPrimitiveTypeFlags[typeFlags];
166
- if (mapped && seenPrimitiveTypes.has(mapped)) primitiveFlag = mapped;
167
- else {
168
- primitiveFlag = void 0;
169
- break;
170
- }
171
- }
172
- if (primitiveFlag !== void 0) context.report({
173
- data: {
174
- literal: typeValues.map((v) => v.typeName).join(" | "),
175
- primitive: primitiveTypeFlagNames[primitiveFlag] ?? ""
176
- },
177
- message: "primitiveOverridden",
178
- range: getTSNodeRange(typeRef, sourceFile)
179
- });
180
- }
181
- return;
182
- }
183
- for (const [primitiveTypeFlag, typeNodes] of seenPrimitiveTypes) {
184
- const matchedLiteralTypes = seenLiteralTypes.get(primitiveTypeFlag);
185
- if (matchedLiteralTypes) for (const typeNode of typeNodes) context.report({
186
- data: {
187
- literal: matchedLiteralTypes.join(" | "),
188
- primitive: primitiveTypeFlagNames[primitiveTypeFlag] ?? ""
189
- },
190
- message: "primitiveOverridden",
191
- range: getTSNodeRange(typeNode, sourceFile)
192
- });
193
- }
194
- },
195
- UnionType: (node, { sourceFile, typeChecker }) => {
196
- const seenLiteralTypes = /* @__PURE__ */ new Map();
197
- const seenPrimitiveTypes = /* @__PURE__ */ new Set();
198
- for (const typeNode of node.types) {
199
- const typeParts = unionTypePartsUnlessBoolean(typeChecker.getTypeAtLocation(typeNode));
200
- for (const typePart of typeParts) {
201
- const typeName = describeLiteralType(typePart);
202
- if (typePart.flags === ts.TypeFlags.Any || typePart.flags === ts.TypeFlags.Unknown) {
203
- context.report({
204
- data: {
205
- container: "union",
206
- typeName
207
- },
208
- message: typePart.flags === ts.TypeFlags.Any && typeName !== "any" ? "errorTypeOverrides" : "overrides",
209
- range: getTSNodeRange(typeNode, sourceFile)
210
- });
211
- continue;
212
- }
213
- if (typePart.flags === ts.TypeFlags.Never && !isNodeInsideReturnType(node)) {
214
- context.report({
215
- data: {
216
- container: "union",
217
- typeName: "never"
218
- },
219
- message: "overridden",
220
- range: getTSNodeRange(typeNode, sourceFile)
221
- });
222
- continue;
223
- }
224
- for (const literalTypeFlag of literalTypeFlags) if (typePart.flags === literalTypeFlag) {
225
- const primitiveFlag = literalToPrimitiveTypeFlags[literalTypeFlag];
226
- if (primitiveFlag) {
227
- const existing = seenLiteralTypes.get(primitiveFlag);
228
- if (existing) existing.push({
229
- literalValue: typeName,
230
- typeNode
231
- });
232
- else seenLiteralTypes.set(primitiveFlag, [{
233
- literalValue: typeName,
234
- typeNode
235
- }]);
236
- }
237
- break;
238
- }
239
- for (const primitiveTypeFlag of primitiveTypeFlags) if ((typePart.flags & primitiveTypeFlag) !== 0) seenPrimitiveTypes.add(primitiveTypeFlag);
240
- }
241
- }
242
- const overriddenTypeNodes = /* @__PURE__ */ new Map();
243
- for (const [primitiveTypeFlag, typeNodesWithText] of seenLiteralTypes) if (seenPrimitiveTypes.has(primitiveTypeFlag)) for (const { literalValue, typeNode } of typeNodesWithText) {
244
- const existing = overriddenTypeNodes.get(typeNode);
245
- if (existing) existing.push({
246
- literalValue,
247
- primitiveTypeFlag
248
- });
249
- else overriddenTypeNodes.set(typeNode, [{
250
- literalValue,
251
- primitiveTypeFlag
252
- }]);
253
- }
254
- for (const [typeNode, typeFlagsWithText] of overriddenTypeNodes) {
255
- const grouped = /* @__PURE__ */ new Map();
256
- for (const { literalValue, primitiveTypeFlag } of typeFlagsWithText) {
257
- const existing = grouped.get(primitiveTypeFlag);
258
- if (existing) existing.push(literalValue);
259
- else grouped.set(primitiveTypeFlag, [literalValue]);
260
- }
261
- for (const [primitiveTypeFlag, literals] of grouped) context.report({
262
- data: {
263
- literal: literals.join(" | "),
264
- primitive: primitiveTypeFlagNames[primitiveTypeFlag] ?? ""
265
- },
266
- message: "literalOverridden",
267
- range: getTSNodeRange(typeNode, sourceFile)
268
- });
269
- }
270
- }
271
- } };
272
- }
273
- });
274
- //#endregion
275
- export { redundantTypeConstituents_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports `matchAll()` and `replaceAll()` calls with regex arguments missing the global flag.";
3
- readonly id: "regexAllGlobalFlags";
4
- readonly presets: readonly ["logical"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "missingGlobalFlag", undefined>;
9
- export default _default;
@@ -1,54 +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/regexAllGlobalFlags.ts
5
- function getRegexFlags(node, sourceFile) {
6
- switch (node.kind) {
7
- case ts.SyntaxKind.CallExpression:
8
- case ts.SyntaxKind.NewExpression:
9
- if (ts.isIdentifier(node.expression) && node.expression.text === "RegExp" && node.arguments) {
10
- if (node.arguments.length < 2) return "";
11
- const flagsArg = node.arguments[1];
12
- if (ts.isStringLiteral(flagsArg)) return flagsArg.text;
13
- }
14
- return;
15
- case ts.SyntaxKind.RegularExpressionLiteral: {
16
- const text = node.getText(sourceFile);
17
- const lastSlash = text.lastIndexOf("/");
18
- return lastSlash >= 0 ? text.slice(lastSlash + 1) : "";
19
- }
20
- default: return;
21
- }
22
- }
23
- var regexAllGlobalFlags_default = ruleCreator.createRule(typescriptLanguage, {
24
- about: {
25
- description: "Reports `matchAll()` and `replaceAll()` calls with regex arguments missing the global flag.",
26
- id: "regexAllGlobalFlags",
27
- presets: ["logical"]
28
- },
29
- messages: { missingGlobalFlag: {
30
- primary: "The regex argument to `{{ method }}()` requires the global (`g`) flag.",
31
- secondary: ["String.prototype.{{ method }}() throws a TypeError at runtime if the regex argument lacks the global flag."],
32
- suggestions: ["Add the global (g) flag to the regex."]
33
- } },
34
- setup(context) {
35
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
36
- if (!ts.isPropertyAccessExpression(node.expression)) return;
37
- const methodName = node.expression.name.text;
38
- if (methodName !== "matchAll" && methodName !== "replaceAll") return;
39
- const expectedArgCount = methodName === "matchAll" ? 1 : 2;
40
- if (node.arguments.length < expectedArgCount) return;
41
- const firstArg = node.arguments[0];
42
- if (!(typeChecker.getTypeAtLocation(node.expression.expression).flags & ts.TypeFlags.StringLike)) return;
43
- const flags = getRegexFlags(firstArg, sourceFile);
44
- if (flags === void 0 || flags.includes("g")) return;
45
- context.report({
46
- data: { method: methodName },
47
- message: "missingGlobalFlag",
48
- range: getTSNodeRange(firstArg, sourceFile)
49
- });
50
- } } };
51
- }
52
- });
53
- //#endregion
54
- export { regexAllGlobalFlags_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports regex patterns that use ambiguous or invalid syntax from Annex B.";
3
- readonly id: "regexAmbiguousInvalidity";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "incompleteBackreference" | "incompleteEscapeSequence" | "invalidControlEscape" | "invalidPropertyEscape" | "invalidRange" | "octalEscape" | "quantifiedAssertion" | "regexMessage" | "unescapedSourceCharacter" | "uselessEscape", undefined>;
9
- export default _default;
@@ -1,295 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import { RegExpParser, RegExpValidator, visitRegExpAST } from "@eslint-community/regexpp";
5
- //#region src/rules/regexAmbiguousInvalidity.ts
6
- const validator = new RegExpValidator({
7
- ecmaVersion: 2020,
8
- strict: true
9
- });
10
- const CHARACTER_CLASS_SYNTAX_CHARACTERS = new Set("\\/()[]{}^$.|-+*?".split(""));
11
- const SYNTAX_CHARACTERS = new Set("\\/()[]{}^$.|+*?".split(""));
12
- function isControlEscape(raw) {
13
- return /^\\c[A-Za-z]$/u.test(raw);
14
- }
15
- function isEscapeSequence(raw) {
16
- return isOctalEscape(raw) || isControlEscape(raw) || isHexadecimalEscape(raw) || isUnicodeEscape(raw) || isUnicodeCodePointEscape(raw);
17
- }
18
- function isHexadecimalEscape(raw) {
19
- return /^\\x[\dA-Fa-f]{2}$/u.test(raw);
20
- }
21
- function isOctalEscape(raw) {
22
- return /^\\[0-7]{1,3}$/u.test(raw);
23
- }
24
- function isUnicodeCodePointEscape(raw) {
25
- return /^\\u\{[\dA-Fa-f]{1,8}\}$/u.test(raw);
26
- }
27
- function isUnicodeEscape(raw) {
28
- return /^\\u[\dA-Fa-f]{4}$/u.test(raw);
29
- }
30
- function parseFlags(flagsStr) {
31
- return {
32
- unicode: flagsStr.includes("u"),
33
- unicodeSets: flagsStr.includes("v")
34
- };
35
- }
36
- function validateRegExpPattern(pattern, flags) {
37
- try {
38
- validator.validatePattern(pattern, void 0, void 0, flags);
39
- return null;
40
- } catch (error) {
41
- return error instanceof Error ? error.message : null;
42
- }
43
- }
44
- function checkPatternWithRegexpp(pattern, flags) {
45
- if (flags.unicode || flags.unicodeSets) return [];
46
- const issues = [];
47
- const parser = new RegExpParser();
48
- let ast;
49
- try {
50
- ast = parser.parsePattern(pattern, void 0, void 0, flags);
51
- } catch {
52
- const message = validateRegExpPattern(pattern, flags);
53
- if (message) issues.push({
54
- data: { message },
55
- end: pattern.length,
56
- message: "regexMessage",
57
- start: 0
58
- });
59
- return issues;
60
- }
61
- let reported = false;
62
- let hasNamedBackreference = false;
63
- visitRegExpAST(ast, {
64
- onBackreferenceEnter(bNode) {
65
- if (typeof bNode.ref === "string") hasNamedBackreference = true;
66
- },
67
- onCharacterClassEnter(ccNode) {
68
- for (let i = 0; i < ccNode.elements.length; i++) {
69
- const current = ccNode.elements[i];
70
- if (current?.type === "CharacterSet") {
71
- const next = ccNode.elements[i + 1];
72
- const nextNext = ccNode.elements[i + 2];
73
- if (next?.raw === "-" && nextNext) {
74
- issues.push({
75
- data: {},
76
- end: current.end,
77
- message: "invalidRange",
78
- start: current.start
79
- });
80
- reported = true;
81
- return;
82
- }
83
- const prev = ccNode.elements[i - 1];
84
- const prevPrev = ccNode.elements[i - 2];
85
- if (prev?.raw === "-" && prevPrev && prevPrev.type !== "CharacterClassRange") {
86
- issues.push({
87
- data: {},
88
- end: current.end,
89
- message: "invalidRange",
90
- start: current.start
91
- });
92
- reported = true;
93
- return;
94
- }
95
- }
96
- }
97
- },
98
- onCharacterEnter(cNode) {
99
- if (cNode.raw === "\\") {
100
- issues.push({
101
- data: {},
102
- end: cNode.end,
103
- message: "invalidControlEscape",
104
- start: cNode.start
105
- });
106
- reported = true;
107
- return;
108
- }
109
- if (cNode.raw === "\\u" || cNode.raw === "\\x") {
110
- issues.push({
111
- data: { expr: cNode.raw },
112
- end: cNode.end,
113
- message: "incompleteEscapeSequence",
114
- start: cNode.start
115
- });
116
- reported = true;
117
- return;
118
- }
119
- if (cNode.raw === "\\p" || cNode.raw === "\\P") {
120
- issues.push({
121
- data: { expr: cNode.raw },
122
- end: cNode.end,
123
- message: "invalidPropertyEscape",
124
- start: cNode.start
125
- });
126
- reported = true;
127
- return;
128
- }
129
- if (cNode.value !== 0 && isOctalEscape(cNode.raw)) {
130
- issues.push({
131
- data: {
132
- escape: cNode.raw,
133
- hex: `\\x${cNode.value.toString(16).padStart(2, "0")}`
134
- },
135
- end: cNode.end,
136
- message: "octalEscape",
137
- start: cNode.start
138
- });
139
- reported = true;
140
- return;
141
- }
142
- const insideCharClass = cNode.parent.type === "CharacterClass" || cNode.parent.type === "CharacterClassRange";
143
- if (!insideCharClass) {
144
- if (cNode.raw === "\\k") {
145
- issues.push({
146
- data: { expr: cNode.raw },
147
- end: cNode.end,
148
- message: "incompleteBackreference",
149
- start: cNode.start
150
- });
151
- reported = true;
152
- return;
153
- }
154
- if (cNode.raw === "{" || cNode.raw === "}" || cNode.raw === "]") {
155
- issues.push({
156
- data: { character: cNode.raw },
157
- end: cNode.end,
158
- message: "unescapedSourceCharacter",
159
- start: cNode.start
160
- });
161
- reported = true;
162
- return;
163
- }
164
- }
165
- if (isEscapeSequence(cNode.raw)) return;
166
- if (cNode.raw.startsWith("\\")) {
167
- const identity = cNode.raw.slice(1);
168
- const syntaxChars = insideCharClass ? CHARACTER_CLASS_SYNTAX_CHARACTERS : SYNTAX_CHARACTERS;
169
- if (cNode.value === identity.charCodeAt(0) && !syntaxChars.has(identity)) {
170
- issues.push({
171
- data: { escaped: identity },
172
- end: cNode.end,
173
- message: "uselessEscape",
174
- start: cNode.start
175
- });
176
- reported = true;
177
- }
178
- }
179
- },
180
- onQuantifierEnter(quantifierNode) {
181
- if (quantifierNode.element.type === "Assertion") {
182
- issues.push({
183
- data: {},
184
- end: quantifierNode.end,
185
- message: "quantifiedAssertion",
186
- start: quantifierNode.start
187
- });
188
- reported = true;
189
- }
190
- }
191
- });
192
- if (hasNamedBackreference) return issues;
193
- if (!reported) {
194
- const message = validateRegExpPattern(pattern, flags);
195
- if (message) issues.push({
196
- data: { message },
197
- end: pattern.length,
198
- message: "regexMessage",
199
- start: 0
200
- });
201
- }
202
- return issues;
203
- }
204
- var regexAmbiguousInvalidity_default = ruleCreator.createRule(typescriptLanguage, {
205
- about: {
206
- description: "Reports regex patterns that use ambiguous or invalid syntax from Annex B.",
207
- id: "regexAmbiguousInvalidity",
208
- presets: ["logical", "logicalStrict"]
209
- },
210
- messages: {
211
- incompleteBackreference: {
212
- primary: "Incomplete backreference '{{ expr }}'.",
213
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Either use a valid backreference or remove the useless escaping."],
214
- suggestions: ["Complete the backreference or remove the escape."]
215
- },
216
- incompleteEscapeSequence: {
217
- primary: "Incomplete escape sequence '{{ expr }}'.",
218
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Either use a valid escape sequence or remove the useless escaping."],
219
- suggestions: ["Complete the escape sequence or remove the escape."]
220
- },
221
- invalidControlEscape: {
222
- primary: "Invalid or incomplete control escape sequence.",
223
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Either use a valid control escape sequence or escape the standalone backslash."],
224
- suggestions: ["Use a valid control escape like \\cA or escape the backslash."]
225
- },
226
- invalidPropertyEscape: {
227
- primary: "Invalid property escape sequence '{{ expr }}'.",
228
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Either use a valid property escape sequence or remove the useless escaping."],
229
- suggestions: ["Use a valid Unicode property escape like \\p{L} with the 'u' flag."]
230
- },
231
- invalidRange: {
232
- primary: "Invalid character class range. A character set cannot be the minimum or maximum of a character class range.",
233
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Either escape the `-` or fix the character class range."],
234
- suggestions: ["Escape the `-` character or reorder the character class."]
235
- },
236
- octalEscape: {
237
- primary: "Invalid legacy octal escape sequence '{{ escape }}'. Use a hexadecimal escape instead.",
238
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Octal escapes can be confused with backreferences."],
239
- suggestions: ["Replace with hexadecimal escape '{{ hex }}'."]
240
- },
241
- quantifiedAssertion: {
242
- primary: "Assertions are not allowed to be quantified directly.",
243
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Wrap the assertion in a non-capturing group if you need to quantify it."],
244
- suggestions: ["Wrap the assertion in a non-capturing group: (?:...)"]
245
- },
246
- regexMessage: {
247
- primary: "{{ message }}.",
248
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Consider using strict regex syntax for clarity and cross-platform compatibility."],
249
- suggestions: ["Fix the regex syntax error."]
250
- },
251
- unescapedSourceCharacter: {
252
- primary: "Unescaped source character '{{ character }}' should be escaped.",
253
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Consider using strict regex syntax for clarity and cross-platform compatibility."],
254
- suggestions: ["Escape the character with a backslash."]
255
- },
256
- uselessEscape: {
257
- primary: "Useless escape '\\{{ escaped }}'.",
258
- secondary: ["This regex uses syntax from ECMAScript Annex B which is ambiguous or deprecated.", "Identity escapes with non-syntax characters are forbidden in strict mode."],
259
- suggestions: ["Remove the unnecessary backslash."]
260
- }
261
- },
262
- setup(context) {
263
- function reportIssues(issues, start) {
264
- for (const issue of issues) context.report({
265
- data: issue.data,
266
- message: issue.message,
267
- range: {
268
- begin: start + issue.start + 1,
269
- end: start + issue.end + 1
270
- }
271
- });
272
- }
273
- function checkCallOrNewExpression(node, { program, sourceFile, typeChecker }) {
274
- if (!ts.isIdentifier(node.expression) || node.expression.text !== "RegExp" || !isGlobalDeclarationOfName(node.expression, "RegExp", typeChecker, program) || !node.arguments?.length) return;
275
- const patternArg = node.arguments[0];
276
- if (!ts.isStringLiteral(patternArg)) return;
277
- const flagsArg = node.arguments[1];
278
- const flags = parseFlags(flagsArg && ts.isStringLiteral(flagsArg) ? flagsArg.text : "");
279
- reportIssues(checkPatternWithRegexpp(patternArg.text, flags), patternArg.getStart(sourceFile));
280
- }
281
- return { visitors: {
282
- CallExpression: checkCallOrNewExpression,
283
- NewExpression: checkCallOrNewExpression,
284
- RegularExpressionLiteral: (node, { sourceFile }) => {
285
- const text = node.getText(sourceFile);
286
- const lastSlash = text.lastIndexOf("/");
287
- if (lastSlash <= 0) return;
288
- const flags = parseFlags(text.slice(lastSlash + 1));
289
- reportIssues(checkPatternWithRegexpp(text.slice(1, lastSlash), flags), node.getStart(sourceFile));
290
- }
291
- } };
292
- }
293
- });
294
- //#endregion
295
- export { regexAmbiguousInvalidity_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports character class elements that can be simplified to ranges.";
3
- readonly id: "regexCharacterClassRanges";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferRange", undefined>;
9
- export default _default;