@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,46 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- //#region src/rules/nonOctalDecimalEscapes.ts
4
- const nonOctalDecimalEscapePattern = /\\[89]/g;
5
- var nonOctalDecimalEscapes_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports non-octal decimal escape sequences (\\8 and \\9) in string literals.",
8
- id: "nonOctalDecimalEscapes",
9
- presets: ["logical", "logicalStrict"]
10
- },
11
- messages: { unexpectedEscape: {
12
- primary: "Non-octal decimal escape sequences (\\8 and \\9) should not be used in string literals.",
13
- secondary: [
14
- "Non-octal decimal escape sequences \\8 and \\9 are legacy features that are treated as identity escapes (the same as the literal digits).",
15
- "They are optional in the ECMAScript specification and not supported in strict mode in all environments.",
16
- "Use the literal digits directly instead."
17
- ],
18
- suggestions: ["Remove the backslash to use the literal digit.", "If an escape sequence is needed, use a Unicode escape like \\u0038 or \\u0039."]
19
- } },
20
- setup(context) {
21
- function checkNode(node, { sourceFile }) {
22
- const text = node.getText(sourceFile);
23
- const matches = [...text.matchAll(nonOctalDecimalEscapePattern)];
24
- for (const match of matches) {
25
- const matchIndex = match.index;
26
- let backslashesBefore = 0;
27
- for (let i = matchIndex - 1; i >= 0 && text[i] === "\\"; i--) backslashesBefore++;
28
- if (backslashesBefore % 2 === 1) continue;
29
- const start = node.getStart(sourceFile) + matchIndex;
30
- context.report({
31
- message: "unexpectedEscape",
32
- range: {
33
- begin: start,
34
- end: start + match[0].length
35
- }
36
- });
37
- }
38
- }
39
- return { visitors: {
40
- NoSubstitutionTemplateLiteral: checkNode,
41
- StringLiteral: checkNode
42
- } };
43
- }
44
- });
45
- //#endregion
46
- export { nonOctalDecimalEscapes_default as default };
@@ -1,20 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Enforces consistent equality operator usage when comparing with null or undefined.";
4
- readonly id: "nullishCheckStyle";
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferLooseNull" | "preferLooseNullish" | "preferLooseUndefined" | "preferStrictNullish", {
9
- looseNullishComparisonStyle: z.ZodDefault<z.ZodEnum<{
10
- "prefer-null": "prefer-null";
11
- "prefer-undefined": "prefer-undefined";
12
- ignore: "ignore";
13
- }>>;
14
- nullishComparisonStrictness: z.ZodDefault<z.ZodEnum<{
15
- ignore: "ignore";
16
- "double-equals": "double-equals";
17
- "triple-equals": "triple-equals";
18
- }>>;
19
- }>;
20
- export default _default;
@@ -1,142 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { isNullishLiteral, isUndefinedIdentifier, toEqualityOperator, toLooseOperator, toStrictOperator } from "./utils/equalityOperators.js";
3
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
- import { isNullKeyword } from "ts-api-utils";
5
- import { z as z$1 } from "zod/v4";
6
- //#region src/rules/nullishCheckStyle.ts
7
- var nullishCheckStyle_default = ruleCreator.createRule(typescriptLanguage, {
8
- about: {
9
- description: "Enforces consistent equality operator usage when comparing with null or undefined.",
10
- id: "nullishCheckStyle"
11
- },
12
- messages: {
13
- preferLooseNull: {
14
- primary: "Compare with 'null' rather than 'undefined'.",
15
- secondary: ["`x == null` and `x == undefined` are equivalent to each other; both check `x === null || x === undefined`.", "Use `x == null` since it is shorter."],
16
- suggestions: ["Replace 'undefined' with 'null'."]
17
- },
18
- preferLooseNullish: {
19
- primary: "Use loose equality ('{{ looseOperator }}') for nullish comparisons.",
20
- secondary: ["When checking for nullish values (null or undefined), loose equality is more concise.", "`x == null` checks for both null and undefined, equivalent to `x === null || x === undefined`."],
21
- suggestions: ["Replace '{{ strictOperator }}' with '{{ looseOperator }}'."]
22
- },
23
- preferLooseUndefined: {
24
- primary: "Compare with 'undefined' rather than 'null'.",
25
- secondary: ["`x == null` and `x == undefined` are equivalent to each other; both check `x === null || x === undefined`.", "Use `x == undefined`."],
26
- suggestions: ["Replace 'null' with 'undefined'."]
27
- },
28
- preferStrictNullish: {
29
- primary: "Use strict equality ('{{ strictOperator }}') for nullish comparisons.",
30
- secondary: ["When nullish comparison strictness is set to 'strict', use strict equality operators for nullish comparisons."],
31
- suggestions: ["Replace '{{ looseOperator }}' with '{{ strictOperator }}'."]
32
- }
33
- },
34
- options: {
35
- looseNullishComparisonStyle: z$1.enum([
36
- "prefer-null",
37
- "prefer-undefined",
38
- "ignore"
39
- ]).default("prefer-null"),
40
- nullishComparisonStrictness: z$1.enum([
41
- "double-equals",
42
- "triple-equals",
43
- "ignore"
44
- ]).default("double-equals")
45
- },
46
- setup(context) {
47
- return { visitors: { BinaryExpression: (node, { options, sourceFile }) => {
48
- const operator = toEqualityOperator(node.operatorToken.kind);
49
- if (operator == null) return;
50
- const leftIsNullish = isNullishLiteral(node.left);
51
- if (leftIsNullish === isNullishLiteral(node.right)) return;
52
- const isLooseComparison = operator === "==" || operator === "!=";
53
- if (options.nullishComparisonStrictness === "double-equals" && !isLooseComparison) {
54
- const looseOperator = toLooseOperator(operator);
55
- const operatorRange = getTSNodeRange(node.operatorToken, sourceFile);
56
- context.report({
57
- data: {
58
- looseOperator,
59
- strictOperator: operator
60
- },
61
- message: "preferLooseNullish",
62
- range: leftIsNullish ? {
63
- begin: node.left.getStart(sourceFile),
64
- end: operatorRange.end
65
- } : {
66
- begin: operatorRange.begin,
67
- end: node.right.getEnd()
68
- },
69
- suggestions: [{
70
- id: "useLooseOperator",
71
- range: operatorRange,
72
- text: looseOperator
73
- }]
74
- });
75
- return;
76
- }
77
- if (options.nullishComparisonStrictness === "triple-equals" && isLooseComparison) {
78
- const strictOperator = toStrictOperator(operator);
79
- const operatorRange = getTSNodeRange(node.operatorToken, sourceFile);
80
- context.report({
81
- data: {
82
- looseOperator: operator,
83
- strictOperator
84
- },
85
- message: "preferStrictNullish",
86
- range: leftIsNullish ? {
87
- begin: node.left.getStart(sourceFile),
88
- end: operatorRange.end
89
- } : {
90
- begin: operatorRange.begin,
91
- end: node.right.getEnd()
92
- },
93
- suggestions: [{
94
- id: "useStrictOperator",
95
- range: operatorRange,
96
- text: strictOperator
97
- }]
98
- });
99
- return;
100
- }
101
- if (isLooseComparison) {
102
- if (options.looseNullishComparisonStyle === "prefer-null") {
103
- const leftIsUndefined = isUndefinedIdentifier(node.left);
104
- const rightIsUndefined = isUndefinedIdentifier(node.right);
105
- if (leftIsUndefined || rightIsUndefined) context.report({
106
- fix: [{
107
- range: getTSNodeRange(leftIsUndefined ? node.left : node.right, sourceFile),
108
- text: "null"
109
- }],
110
- message: "preferLooseNull",
111
- range: leftIsUndefined ? {
112
- begin: node.left.getStart(sourceFile),
113
- end: node.operatorToken.getEnd()
114
- } : {
115
- begin: node.operatorToken.getStart(sourceFile),
116
- end: node.right.getEnd()
117
- }
118
- });
119
- } else if (options.looseNullishComparisonStyle === "prefer-undefined") {
120
- const leftIsNull = isNullKeyword(node.left);
121
- const rightIsNull = isNullKeyword(node.right);
122
- if (leftIsNull || rightIsNull) context.report({
123
- fix: [{
124
- range: getTSNodeRange(leftIsNull ? node.left : node.right, sourceFile),
125
- text: "undefined"
126
- }],
127
- message: "preferLooseUndefined",
128
- range: leftIsNull ? {
129
- begin: node.left.getStart(sourceFile),
130
- end: node.operatorToken.getEnd()
131
- } : {
132
- begin: node.operatorToken.getStart(sourceFile),
133
- end: node.right.getEnd()
134
- }
135
- });
136
- }
137
- }
138
- } } };
139
- }
140
- });
141
- //#endregion
142
- export { nullishCheckStyle_default as default };
@@ -1,21 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Prefer nullish coalescing operator (??) over logical OR (||) for nullish values.";
4
- readonly id: "nullishCoalescingOperators";
5
- readonly presets: readonly ["stylistic", "stylisticStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferNullish" | "preferNullishAssignment" | "preferNullishTernary", {
10
- ignoreConditionalTests: z.ZodDefault<z.ZodBoolean>;
11
- ignoreIfStatements: z.ZodDefault<z.ZodBoolean>;
12
- ignoreMixedLogicalExpressions: z.ZodDefault<z.ZodBoolean>;
13
- ignorePrimitives: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodRecord<z.ZodEnum<{
14
- string: "string";
15
- number: "number";
16
- bigint: "bigint";
17
- boolean: "boolean";
18
- }>, z.ZodBoolean>]>>;
19
- ignoreTernaryTests: z.ZodDefault<z.ZodBoolean>;
20
- }>;
21
- export default _default;
@@ -1,321 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- import { z as z$1 } from "zod/v4";
6
- //#region src/rules/nullishCoalescingOperators.ts
7
- function analyzeConditionalForNullish(node, sourceFile) {
8
- const { condition, whenFalse, whenTrue } = node;
9
- if (ts.isIdentifier(condition) && ts.isIdentifier(whenTrue) && condition.text === whenTrue.text) return {
10
- alternate: whenFalse,
11
- consequent: whenTrue,
12
- operator: "",
13
- test: condition
14
- };
15
- if (ts.isPrefixUnaryExpression(condition) && condition.operator === ts.SyntaxKind.ExclamationToken) {
16
- const operand = condition.operand;
17
- if (ts.isIdentifier(operand) && ts.isIdentifier(whenFalse) && operand.text === whenFalse.text) return {
18
- alternate: whenTrue,
19
- consequent: whenFalse,
20
- operator: "!",
21
- test: operand
22
- };
23
- }
24
- if (ts.isBinaryExpression(condition) && isNullLikeComparison(condition)) {
25
- const { isNegation, value: testValue } = extractValueFromComparison(condition);
26
- if (!testValue) return {};
27
- const operator = getComparisonOperator(condition);
28
- const [alternate, consequent] = isNegation ? [whenFalse, whenTrue] : [whenTrue, whenFalse];
29
- if (!consequentMatchesTest(consequent, testValue, sourceFile)) return {};
30
- return {
31
- alternate,
32
- consequent,
33
- operator,
34
- test: testValue
35
- };
36
- }
37
- if (ts.isBinaryExpression(condition) && condition.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
38
- const leftIsComparison = ts.isBinaryExpression(condition.left) ? isNullLikeComparison(condition.left) : false;
39
- const rightIsComparison = ts.isBinaryExpression(condition.right) ? isNullLikeComparison(condition.right) : false;
40
- if (leftIsComparison && rightIsComparison) {
41
- const leftComp = condition.left;
42
- const rightComp = condition.right;
43
- const leftValue = extractValueFromComparison(leftComp).value;
44
- const rightValue = extractValueFromComparison(rightComp).value;
45
- if (leftValue && rightValue && hasSameTokens(leftValue, rightValue, sourceFile)) return {
46
- alternate: whenFalse,
47
- consequent: whenTrue,
48
- operator: "===",
49
- test: leftValue
50
- };
51
- }
52
- }
53
- if (ts.isBinaryExpression(condition) && condition.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
54
- const leftIsComparison = ts.isBinaryExpression(condition.left) ? isNullLikeComparison(condition.left) : false;
55
- const rightIsComparison = ts.isBinaryExpression(condition.right) ? isNullLikeComparison(condition.right) : false;
56
- if (leftIsComparison && rightIsComparison) {
57
- const leftComp = condition.left;
58
- const rightComp = condition.right;
59
- const leftValue = extractValueFromComparison(leftComp).value;
60
- const rightValue = extractValueFromComparison(rightComp).value;
61
- if (leftValue && rightValue && hasSameTokens(leftValue, rightValue, sourceFile)) return {
62
- alternate: whenTrue,
63
- consequent: whenFalse,
64
- operator: "===",
65
- test: leftValue
66
- };
67
- }
68
- }
69
- return {};
70
- }
71
- function consequentMatchesTest(consequent, test, sourceFile) {
72
- if (hasSameTokens(consequent, test, sourceFile)) return true;
73
- if (ts.isPropertyAccessExpression(consequent) || ts.isElementAccessExpression(consequent) || ts.isCallExpression(consequent)) return consequentMatchesTest(consequent.expression, test, sourceFile);
74
- return false;
75
- }
76
- function extractAssignmentFromIfStatement(node) {
77
- let assignmentExpr;
78
- if (ts.isBlock(node.thenStatement)) {
79
- if (node.thenStatement.statements.length === 1) {
80
- const stmt = node.thenStatement.statements[0];
81
- if (stmt && ts.isExpressionStatement(stmt)) assignmentExpr = stmt.expression;
82
- }
83
- } else if (ts.isExpressionStatement(node.thenStatement)) assignmentExpr = node.thenStatement.expression;
84
- if (!assignmentExpr || !ts.isBinaryExpression(assignmentExpr) || assignmentExpr.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;
85
- return {
86
- left: assignmentExpr.left,
87
- right: assignmentExpr.right
88
- };
89
- }
90
- function extractValueFromComparison(node) {
91
- const isNegation = node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken;
92
- if (isNullLike(node.left)) return {
93
- isNegation,
94
- value: node.right
95
- };
96
- if (isNullLike(node.right)) return {
97
- isNegation,
98
- value: node.left
99
- };
100
- return {
101
- isNegation,
102
- value: null
103
- };
104
- }
105
- function getComparisonOperator(node) {
106
- switch (node.operatorToken.kind) {
107
- case ts.SyntaxKind.EqualsEqualsEqualsToken: return "===";
108
- case ts.SyntaxKind.EqualsEqualsToken: return "==";
109
- case ts.SyntaxKind.ExclamationEqualsEqualsToken: return "!==";
110
- case ts.SyntaxKind.ExclamationEqualsToken: return "!=";
111
- default: return "";
112
- }
113
- }
114
- function getIfStatementNullishCheckValue(node) {
115
- switch (node.expression.kind) {
116
- case ts.SyntaxKind.BinaryExpression:
117
- if (isNullLikeComparison(node.expression)) return extractValueFromComparison(node.expression).value ?? void 0;
118
- return;
119
- case ts.SyntaxKind.PrefixUnaryExpression:
120
- if (node.expression.operator === ts.SyntaxKind.ExclamationToken) return node.expression.operand;
121
- return;
122
- default: return;
123
- }
124
- }
125
- function getTypeFlags(type) {
126
- let flags = 0;
127
- for (const constituent of tsutils.unionConstituents(type)) for (const subConstituent of tsutils.intersectionConstituents(constituent)) flags |= subConstituent.getFlags();
128
- return flags;
129
- }
130
- function isConditionalTest(node) {
131
- switch (node.parent.kind) {
132
- case ts.SyntaxKind.BinaryExpression:
133
- if (node.parent.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken || node.parent.operatorToken.kind === ts.SyntaxKind.BarBarToken) return isConditionalTest(node.parent);
134
- return false;
135
- case ts.SyntaxKind.ConditionalExpression: return node.parent.condition === node || isConditionalTest(node.parent);
136
- case ts.SyntaxKind.DoStatement:
137
- case ts.SyntaxKind.IfStatement:
138
- case ts.SyntaxKind.WhileStatement: return node.parent.expression === node;
139
- case ts.SyntaxKind.ForStatement: return node.parent.condition === node;
140
- case ts.SyntaxKind.PrefixUnaryExpression: return node.parent.operator === ts.SyntaxKind.ExclamationToken && isConditionalTest(node.parent);
141
- default: return false;
142
- }
143
- }
144
- function isFalsyLiteralType(part) {
145
- if (part.isNumberLiteral() && part.value === 0) return true;
146
- if (part.isStringLiteral() && part.value === "") return true;
147
- const flags = part.getFlags();
148
- if (flags & ts.TypeFlags.BooleanLiteral) {
149
- if (part.intrinsicName === "false") return true;
150
- }
151
- if (flags & ts.TypeFlags.BigIntLiteral) {
152
- const value = part.value;
153
- if (!value.negative && value.base10Value === "0") return true;
154
- }
155
- return false;
156
- }
157
- function isMixedLogicalExpression(node) {
158
- const seen = /* @__PURE__ */ new Set();
159
- const queue = [
160
- node.parent,
161
- node.left,
162
- node.right
163
- ];
164
- for (const current of queue) {
165
- if (!seen.has(current)) continue;
166
- seen.add(current);
167
- if (ts.isBinaryExpression(current)) {
168
- if (current.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) return true;
169
- if (current.operatorToken.kind === ts.SyntaxKind.BarBarToken || current.operatorToken.kind === ts.SyntaxKind.BarBarEqualsToken) queue.push(current.parent, current.left, current.right);
170
- }
171
- }
172
- return false;
173
- }
174
- function isNullishType(type) {
175
- return tsutils.isTypeFlagSet(type, ts.TypeFlags.Null | ts.TypeFlags.Undefined);
176
- }
177
- function isNullLike(node) {
178
- switch (node.kind) {
179
- case ts.SyntaxKind.Identifier: return node.text === "undefined";
180
- case ts.SyntaxKind.NullKeyword: return true;
181
- default: return false;
182
- }
183
- }
184
- function isNullLikeComparison(node) {
185
- return (node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsToken || node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken) && (isNullLike(node.left) || isNullLike(node.right));
186
- }
187
- function isTypeEligibleForPreferNullish(type, ignorePrimitives) {
188
- if (!typeCanBeNullish(type) || tsutils.isTypeFlagSet(type, ts.TypeFlags.Any | ts.TypeFlags.Unknown) || !ignorePrimitives) return true;
189
- const ignorableFlags = [
190
- (ignorePrimitives === true || typeof ignorePrimitives === "object" && ignorePrimitives.bigint) && ts.TypeFlags.BigIntLike,
191
- (ignorePrimitives === true || typeof ignorePrimitives === "object" && ignorePrimitives.boolean) && ts.TypeFlags.BooleanLike,
192
- (ignorePrimitives === true || typeof ignorePrimitives === "object" && ignorePrimitives.number) && ts.TypeFlags.NumberLike,
193
- (ignorePrimitives === true || typeof ignorePrimitives === "object" && ignorePrimitives.string) && ts.TypeFlags.StringLike
194
- ].filter((flag) => typeof flag === "number").reduce((previous, flag) => previous | flag, 0);
195
- return ignorableFlags === 0 || !(getTypeFlags(type) & ignorableFlags);
196
- }
197
- function shouldIgnoreNode(node, ignorePrimitives, typeChecker) {
198
- const type = typeChecker.getTypeAtLocation(node);
199
- return tsutils.isTypeFlagSet(type, ts.TypeFlags.Any | ts.TypeFlags.Unknown) || !typeCanBeNullish(type) || typeHasNonNullishFalsyValues(type) || !isTypeEligibleForPreferNullish(type, ignorePrimitives);
200
- }
201
- function typeCanBeNullish(type) {
202
- return tsutils.unionConstituents(type).some(isNullishType);
203
- }
204
- function typeHasNonNullishFalsyValues(type) {
205
- return tsutils.unionConstituents(type).some((constituent) => isFalsyLiteralType(constituent) || constituent.getFlags() & (ts.TypeFlags.String | ts.TypeFlags.Number | ts.TypeFlags.BigInt | ts.TypeFlags.Boolean));
206
- }
207
- var nullishCoalescingOperators_default = ruleCreator.createRule(typescriptLanguage, {
208
- about: {
209
- description: "Prefer nullish coalescing operator (??) over logical OR (||) for nullish values.",
210
- id: "nullishCoalescingOperators",
211
- presets: ["stylistic", "stylisticStrict"]
212
- },
213
- messages: {
214
- preferNullish: {
215
- primary: "Prefer nullish coalescing operator (`??`) over logical OR (`||`) for nullish checks.",
216
- secondary: ["The `||` operator returns the right operand for any falsy value (empty string, 0, false, null, undefined).", "The `??` operator only returns the right operand for null or undefined, preserving other falsy values."],
217
- suggestions: ["Replace `||` with `??`."]
218
- },
219
- preferNullishAssignment: {
220
- primary: "Prefer nullish coalescing assignment (`??=`) over assignment with null/undefined check.",
221
- secondary: [],
222
- suggestions: ["Replace with nullish coalescing assignment."]
223
- },
224
- preferNullishTernary: {
225
- primary: "Prefer nullish coalescing operator (`??`) over ternary expression for nullish checks.",
226
- secondary: [],
227
- suggestions: ["Replace with nullish coalescing."]
228
- }
229
- },
230
- options: {
231
- ignoreConditionalTests: z$1.boolean().default(true).describe("Whether to skip cases where the expression is in a conditional context."),
232
- ignoreIfStatements: z$1.boolean().default(false).describe("Whether to skip if statement patterns with nullish checks."),
233
- ignoreMixedLogicalExpressions: z$1.boolean().default(false).describe("Whether to skip expressions that mix && and || operators."),
234
- ignorePrimitives: z$1.union([z$1.boolean(), z$1.record(z$1.enum([
235
- "bigint",
236
- "boolean",
237
- "number",
238
- "string"
239
- ]), z$1.boolean())]).default({
240
- bigint: false,
241
- boolean: false,
242
- number: false,
243
- string: false
244
- }).describe("Whether to skip primitive types. Can be a boolean or an object with per-type configuration."),
245
- ignoreTernaryTests: z$1.boolean().default(false).describe("Whether to skip ternary expressions.")
246
- },
247
- setup(context) {
248
- function getOptionalChainInsertPosition(node, test, sourceFile) {
249
- if (node.kind === ts.SyntaxKind.PropertyAccessExpression || node.kind === ts.SyntaxKind.ElementAccessExpression) {
250
- if (hasSameTokens(node.expression, test, sourceFile)) return {
251
- needsDot: ts.isElementAccessExpression(node),
252
- pos: node.expression.getEnd()
253
- };
254
- return getOptionalChainInsertPosition(node.expression, test, sourceFile);
255
- }
256
- if (ts.isCallExpression(node)) return getOptionalChainInsertPosition(node.expression, test, sourceFile);
257
- }
258
- function createNullishNodesFix(consequent, alternate, sourceFile, range, test) {
259
- const getText = (node) => sourceFile.text.substring(node.getStart(sourceFile), node.getEnd());
260
- let leftText = getText(consequent);
261
- if (test && test !== consequent) {
262
- const insert = getOptionalChainInsertPosition(consequent, test, sourceFile);
263
- if (insert) {
264
- const offset = insert.pos - consequent.getStart(sourceFile);
265
- leftText = leftText.slice(0, offset) + (insert.needsDot ? "?." : "?") + leftText.slice(offset);
266
- }
267
- }
268
- return {
269
- range,
270
- text: `${leftText} ?? ${getText(alternate)}`
271
- };
272
- }
273
- function createNullishAssignmentFix(left, right, sourceFile, range) {
274
- const getText = (node) => sourceFile.text.substring(node.getStart(sourceFile), node.getEnd());
275
- return {
276
- range,
277
- text: `${getText(left)} ??= ${getText(right)};`
278
- };
279
- }
280
- return { visitors: {
281
- BinaryExpression: (node, { options, sourceFile, typeChecker }) => {
282
- if (options.ignoreConditionalTests && isConditionalTest(node) || options.ignoreMixedLogicalExpressions && isMixedLogicalExpression(node) || ![ts.SyntaxKind.BarBarEqualsToken, ts.SyntaxKind.BarBarToken].includes(node.operatorToken.kind) || shouldIgnoreNode(node.left, options.ignorePrimitives, typeChecker)) return;
283
- const range = getTSNodeRange(node.operatorToken, sourceFile);
284
- const fullRange = getTSNodeRange(node, sourceFile);
285
- context.report({
286
- fix: {
287
- range,
288
- text: node.operatorToken.kind === ts.SyntaxKind.BarBarToken ? "??" : "??="
289
- },
290
- message: "preferNullish",
291
- range: fullRange
292
- });
293
- },
294
- ConditionalExpression: (node, { options, sourceFile, typeChecker }) => {
295
- if (options.ignoreTernaryTests || options.ignoreConditionalTests && isConditionalTest(node)) return;
296
- const { alternate, consequent, test } = analyzeConditionalForNullish(node, sourceFile);
297
- if (!test || !consequent || !alternate || shouldIgnoreNode(test, options.ignorePrimitives, typeChecker)) return;
298
- const range = getTSNodeRange(node, sourceFile);
299
- context.report({
300
- fix: createNullishNodesFix(consequent, alternate, sourceFile, range, test),
301
- message: "preferNullishTernary",
302
- range
303
- });
304
- },
305
- IfStatement: (node, { options, sourceFile, typeChecker }) => {
306
- const checkedValue = getIfStatementNullishCheckValue(node);
307
- if (options.ignoreIfStatements || node.elseStatement || !checkedValue) return;
308
- const assignmentExpression = extractAssignmentFromIfStatement(node);
309
- if (!assignmentExpression || !hasSameTokens(assignmentExpression.left, checkedValue, sourceFile) || shouldIgnoreNode(assignmentExpression.left, options.ignorePrimitives, typeChecker)) return;
310
- const range = getTSNodeRange(node, sourceFile);
311
- context.report({
312
- fix: createNullishAssignmentFix(assignmentExpression.left, assignmentExpression.right, sourceFile, range),
313
- message: "preferNullishAssignment",
314
- range
315
- });
316
- }
317
- } };
318
- }
319
- });
320
- //#endregion
321
- export { nullishCoalescingOperators_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports when number method arguments are outside their valid range.";
3
- readonly id: "numberMethodRanges";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "outOfRange", undefined>;
9
- export default _default;
@@ -1,72 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/numberMethodRanges.ts
5
- const methodSpecs = /* @__PURE__ */ new Map([
6
- ["toExponential", {
7
- max: 100,
8
- min: 0,
9
- name: "toExponential"
10
- }],
11
- ["toFixed", {
12
- max: 100,
13
- min: 0,
14
- name: "toFixed"
15
- }],
16
- ["toPrecision", {
17
- max: 100,
18
- min: 1,
19
- name: "toPrecision"
20
- }],
21
- ["toString", {
22
- max: 36,
23
- min: 2,
24
- name: "toString"
25
- }]
26
- ]);
27
- function getMethodName(expression) {
28
- if (expression.kind === SyntaxKind.PropertyAccessExpression && expression.name.kind === SyntaxKind.Identifier) return expression.name.text;
29
- if (expression.kind === SyntaxKind.ElementAccessExpression && expression.argumentExpression.kind === SyntaxKind.StringLiteral) return expression.argumentExpression.text;
30
- }
31
- function getNumericValue(node) {
32
- if (node.kind === SyntaxKind.NumericLiteral) return Number(node.text);
33
- if (node.kind === SyntaxKind.PrefixUnaryExpression && node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral) return -Number(node.operand.text);
34
- }
35
- var numberMethodRanges_default = ruleCreator.createRule(typescriptLanguage, {
36
- about: {
37
- description: "Reports when number method arguments are outside their valid range.",
38
- id: "numberMethodRanges",
39
- presets: ["logical", "logicalStrict"]
40
- },
41
- messages: { outOfRange: {
42
- primary: "The argument `{{ value }}` is out of range for `{{ method }}`. Use a value between {{ min }} and {{ max }}.",
43
- secondary: ["Passing an out-of-range argument to `{{ method }}` will throw a RangeError at runtime."],
44
- suggestions: ["Check the documentation for `{{ method }}` to see the valid range of values."]
45
- } },
46
- setup(context) {
47
- return { visitors: { CallExpression: (node, { sourceFile }) => {
48
- if (!node.arguments.length) return;
49
- const methodName = getMethodName(node.expression);
50
- if (!methodName) return;
51
- const spec = methodSpecs.get(methodName);
52
- if (!spec) return;
53
- const argument = node.arguments[0];
54
- if (argument.kind === SyntaxKind.SpreadElement) return;
55
- const value = getNumericValue(argument);
56
- if (value === void 0) return;
57
- if (Number.isInteger(value) && value >= spec.min && value <= spec.max) return;
58
- context.report({
59
- data: {
60
- max: String(spec.max),
61
- method: spec.name,
62
- min: String(spec.min),
63
- value: String(value)
64
- },
65
- message: "outOfRange",
66
- range: getTSNodeRange(argument, sourceFile)
67
- });
68
- } } };
69
- }
70
- });
71
- //#endregion
72
- export { numberMethodRanges_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using legacy global functions instead of `Number` static methods.";
3
- readonly id: "numberStaticMethods";
4
- readonly presets: readonly ["logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferNumberMethod", undefined>;
9
- export default _default;