@flint.fyi/ts 0.19.1 → 0.21.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 (665) hide show
  1. package/lib/plugin.d.ts +371 -346
  2. package/lib/plugin.js +4 -2
  3. package/lib/rules/accessorPairGroups.d.ts +0 -1
  4. package/lib/rules/accessorPairGroups.js +0 -2
  5. package/lib/rules/accessorPairTypes.d.ts +0 -1
  6. package/lib/rules/accessorPairTypes.js +0 -2
  7. package/lib/rules/accessorThisRecursion.d.ts +0 -1
  8. package/lib/rules/accessorThisRecursion.js +0 -2
  9. package/lib/rules/anyArguments.d.ts +0 -1
  10. package/lib/rules/anyArguments.js +0 -2
  11. package/lib/rules/anyAssignments.d.ts +0 -1
  12. package/lib/rules/anyAssignments.js +0 -2
  13. package/lib/rules/anyCalls.d.ts +0 -1
  14. package/lib/rules/anyCalls.js +0 -2
  15. package/lib/rules/anyMemberAccess.d.ts +0 -1
  16. package/lib/rules/anyMemberAccess.js +0 -2
  17. package/lib/rules/anyReturns.d.ts +0 -1
  18. package/lib/rules/anyReturns.js +0 -2
  19. package/lib/rules/arguments.d.ts +0 -1
  20. package/lib/rules/arguments.js +0 -2
  21. package/lib/rules/arrayCallbackReturns.d.ts +0 -1
  22. package/lib/rules/arrayCallbackReturns.js +1 -3
  23. package/lib/rules/arrayConstructors.d.ts +0 -1
  24. package/lib/rules/arrayConstructors.js +2 -4
  25. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -1
  26. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -2
  27. package/lib/rules/arrayElementDeletions.d.ts +0 -1
  28. package/lib/rules/arrayElementDeletions.js +0 -2
  29. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -1
  30. package/lib/rules/arrayEmptyCallbackSlots.js +4 -11
  31. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -1
  32. package/lib/rules/arrayExistenceChecksConsistency.js +1 -3
  33. package/lib/rules/arrayFilteredFinds.d.ts +0 -1
  34. package/lib/rules/arrayFilteredFinds.js +4 -12
  35. package/lib/rules/arrayFinds.d.ts +0 -1
  36. package/lib/rules/arrayFinds.js +0 -2
  37. package/lib/rules/arrayFlatMapMethods.d.ts +0 -1
  38. package/lib/rules/arrayFlatMapMethods.js +2 -4
  39. package/lib/rules/arrayFlatMethods.d.ts +0 -1
  40. package/lib/rules/arrayFlatMethods.js +0 -2
  41. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -1
  42. package/lib/rules/arrayFlatUnnecessaryDepths.js +2 -4
  43. package/lib/rules/arrayIncludes.d.ts +0 -1
  44. package/lib/rules/arrayIncludes.js +3 -11
  45. package/lib/rules/arrayIncludesMethods.d.ts +0 -1
  46. package/lib/rules/arrayIncludesMethods.js +0 -2
  47. package/lib/rules/arrayIndexOfMethods.d.ts +0 -1
  48. package/lib/rules/arrayIndexOfMethods.js +0 -2
  49. package/lib/rules/arrayLoops.d.ts +0 -1
  50. package/lib/rules/arrayLoops.js +0 -2
  51. package/lib/rules/arrayMapIdentities.d.ts +0 -1
  52. package/lib/rules/arrayMapIdentities.js +0 -2
  53. package/lib/rules/arrayMutableReverses.d.ts +0 -1
  54. package/lib/rules/arrayMutableReverses.js +0 -2
  55. package/lib/rules/arrayMutableSorts.d.ts +0 -1
  56. package/lib/rules/arrayMutableSorts.js +2 -4
  57. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -1
  58. package/lib/rules/arrayReduceTypeArguments.js +0 -2
  59. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -1
  60. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -2
  61. package/lib/rules/arraySomeMethods.d.ts +0 -1
  62. package/lib/rules/arraySomeMethods.js +0 -2
  63. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -1
  64. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -2
  65. package/lib/rules/arrayTypes.d.ts +0 -1
  66. package/lib/rules/arrayTypes.js +4 -6
  67. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -1
  68. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -2
  69. package/lib/rules/asConstAssertions.d.ts +0 -1
  70. package/lib/rules/asConstAssertions.js +0 -2
  71. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -1
  72. package/lib/rules/assignmentOperatorShorthands.js +0 -2
  73. package/lib/rules/asyncFunctionAwaits.d.ts +9 -0
  74. package/lib/rules/asyncFunctionAwaits.js +53 -0
  75. package/lib/rules/asyncPromiseExecutors.d.ts +0 -1
  76. package/lib/rules/asyncPromiseExecutors.js +2 -4
  77. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -1
  78. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -2
  79. package/lib/rules/atAccesses.d.ts +0 -1
  80. package/lib/rules/atAccesses.js +0 -2
  81. package/lib/rules/builtinCoercions.d.ts +0 -1
  82. package/lib/rules/builtinCoercions.js +2 -4
  83. package/lib/rules/builtinConstructorNews.d.ts +0 -1
  84. package/lib/rules/builtinConstructorNews.js +4 -6
  85. package/lib/rules/caseDeclarations.d.ts +0 -1
  86. package/lib/rules/caseDeclarations.js +0 -2
  87. package/lib/rules/caseDuplicates.d.ts +0 -1
  88. package/lib/rules/caseDuplicates.js +0 -2
  89. package/lib/rules/caseFallthroughs.d.ts +0 -1
  90. package/lib/rules/caseFallthroughs.js +0 -2
  91. package/lib/rules/catchCallbackTypes.d.ts +0 -1
  92. package/lib/rules/catchCallbackTypes.js +10 -12
  93. package/lib/rules/caughtVariableNames.d.ts +0 -1
  94. package/lib/rules/caughtVariableNames.js +0 -2
  95. package/lib/rules/chainedAssignments.d.ts +0 -1
  96. package/lib/rules/chainedAssignments.js +0 -2
  97. package/lib/rules/charAtComparisons.d.ts +0 -1
  98. package/lib/rules/charAtComparisons.js +5 -10
  99. package/lib/rules/classAssignments.d.ts +0 -1
  100. package/lib/rules/classAssignments.js +4 -9
  101. package/lib/rules/classFieldDeclarations.d.ts +0 -1
  102. package/lib/rules/classFieldDeclarations.js +0 -2
  103. package/lib/rules/classLiteralProperties.d.ts +0 -1
  104. package/lib/rules/classLiteralProperties.js +0 -2
  105. package/lib/rules/classMemberDuplicates.d.ts +0 -1
  106. package/lib/rules/classMemberDuplicates.js +0 -2
  107. package/lib/rules/classMethodsThis.d.ts +0 -1
  108. package/lib/rules/classMethodsThis.js +3 -5
  109. package/lib/rules/combinedPushes.d.ts +0 -1
  110. package/lib/rules/combinedPushes.js +0 -2
  111. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -1
  112. package/lib/rules/consecutiveNonNullAssertions.js +0 -2
  113. package/lib/rules/consoleCalls.d.ts +0 -1
  114. package/lib/rules/consoleCalls.js +2 -4
  115. package/lib/rules/constantAssignments.d.ts +0 -1
  116. package/lib/rules/constantAssignments.js +4 -9
  117. package/lib/rules/constructorGenericCalls.d.ts +0 -1
  118. package/lib/rules/constructorGenericCalls.js +3 -5
  119. package/lib/rules/constructorReturns.d.ts +0 -1
  120. package/lib/rules/constructorReturns.js +0 -2
  121. package/lib/rules/constructorSupers.d.ts +0 -1
  122. package/lib/rules/constructorSupers.js +0 -2
  123. package/lib/rules/dateConstructorClones.d.ts +0 -1
  124. package/lib/rules/dateConstructorClones.js +2 -4
  125. package/lib/rules/dateNowTimestamps.d.ts +0 -1
  126. package/lib/rules/dateNowTimestamps.js +7 -9
  127. package/lib/rules/debuggerStatements.d.ts +0 -1
  128. package/lib/rules/debuggerStatements.js +0 -2
  129. package/lib/rules/defaultCaseLast.d.ts +0 -1
  130. package/lib/rules/defaultCaseLast.js +0 -2
  131. package/lib/rules/defaultParameterLast.d.ts +0 -1
  132. package/lib/rules/defaultParameterLast.js +0 -2
  133. package/lib/rules/deprecated.d.ts +0 -1
  134. package/lib/rules/deprecated.js +0 -2
  135. package/lib/rules/destructuringConsistency.d.ts +0 -1
  136. package/lib/rules/destructuringConsistency.js +27 -35
  137. package/lib/rules/duplicateArguments.d.ts +0 -1
  138. package/lib/rules/duplicateArguments.js +0 -2
  139. package/lib/rules/dynamicDeletes.d.ts +0 -1
  140. package/lib/rules/dynamicDeletes.js +0 -2
  141. package/lib/rules/elseIfDuplicates.d.ts +0 -1
  142. package/lib/rules/elseIfDuplicates.js +0 -2
  143. package/lib/rules/elseReturns.d.ts +0 -1
  144. package/lib/rules/elseReturns.js +0 -2
  145. package/lib/rules/emptyBlocks.d.ts +0 -1
  146. package/lib/rules/emptyBlocks.js +1 -3
  147. package/lib/rules/emptyDestructures.d.ts +0 -1
  148. package/lib/rules/emptyDestructures.js +0 -2
  149. package/lib/rules/emptyEnums.d.ts +0 -1
  150. package/lib/rules/emptyEnums.js +0 -2
  151. package/lib/rules/emptyExports.d.ts +0 -1
  152. package/lib/rules/emptyExports.js +1 -3
  153. package/lib/rules/emptyFiles.d.ts +0 -1
  154. package/lib/rules/emptyFiles.js +0 -2
  155. package/lib/rules/emptyFunctions.d.ts +0 -1
  156. package/lib/rules/emptyFunctions.js +0 -2
  157. package/lib/rules/emptyModuleAttributes.d.ts +0 -1
  158. package/lib/rules/emptyModuleAttributes.js +0 -2
  159. package/lib/rules/emptyObjectTypes.d.ts +0 -1
  160. package/lib/rules/emptyObjectTypes.js +0 -2
  161. package/lib/rules/emptyStaticBlocks.d.ts +0 -1
  162. package/lib/rules/emptyStaticBlocks.js +0 -2
  163. package/lib/rules/emptyTypeParameterLists.d.ts +0 -1
  164. package/lib/rules/emptyTypeParameterLists.js +0 -2
  165. package/lib/rules/enumInitializers.d.ts +0 -1
  166. package/lib/rules/enumInitializers.js +0 -2
  167. package/lib/rules/enumMemberLiterals.d.ts +0 -1
  168. package/lib/rules/enumMemberLiterals.js +2 -4
  169. package/lib/rules/enumValueConsistency.d.ts +0 -1
  170. package/lib/rules/enumValueConsistency.js +0 -2
  171. package/lib/rules/enumValueDuplicates.d.ts +0 -1
  172. package/lib/rules/enumValueDuplicates.js +3 -20
  173. package/lib/rules/equalityOperatorNegations.d.ts +0 -1
  174. package/lib/rules/equalityOperatorNegations.js +3 -5
  175. package/lib/rules/equalityOperators.d.ts +0 -1
  176. package/lib/rules/equalityOperators.js +0 -2
  177. package/lib/rules/errorMessages.d.ts +0 -1
  178. package/lib/rules/errorMessages.js +6 -12
  179. package/lib/rules/errorSubclassProperties.d.ts +0 -1
  180. package/lib/rules/errorSubclassProperties.js +2 -4
  181. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -1
  182. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +2 -4
  183. package/lib/rules/escapeSequenceCasing.d.ts +0 -1
  184. package/lib/rules/escapeSequenceCasing.js +0 -2
  185. package/lib/rules/evals.d.ts +0 -1
  186. package/lib/rules/evals.js +2 -4
  187. package/lib/rules/evolvingVariableTypes.d.ts +0 -1
  188. package/lib/rules/evolvingVariableTypes.js +0 -2
  189. package/lib/rules/exceptionAssignments.d.ts +0 -1
  190. package/lib/rules/exceptionAssignments.js +4 -9
  191. package/lib/rules/explicitAnys.d.ts +0 -1
  192. package/lib/rules/explicitAnys.js +0 -2
  193. package/lib/rules/exponentiationOperators.d.ts +0 -1
  194. package/lib/rules/exponentiationOperators.js +2 -4
  195. package/lib/rules/exportFromImports.d.ts +0 -1
  196. package/lib/rules/exportFromImports.js +2 -4
  197. package/lib/rules/exportMutables.d.ts +0 -1
  198. package/lib/rules/exportMutables.js +0 -2
  199. package/lib/rules/exportUniqueNames.d.ts +0 -1
  200. package/lib/rules/exportUniqueNames.js +0 -2
  201. package/lib/rules/extraneousClasses.d.ts +0 -1
  202. package/lib/rules/extraneousClasses.js +5 -7
  203. package/lib/rules/fetchMethodBodies.d.ts +0 -1
  204. package/lib/rules/fetchMethodBodies.js +0 -2
  205. package/lib/rules/finallyStatementSafety.d.ts +0 -1
  206. package/lib/rules/finallyStatementSafety.js +0 -2
  207. package/lib/rules/forDirections.d.ts +0 -1
  208. package/lib/rules/forDirections.js +0 -2
  209. package/lib/rules/forInArrays.d.ts +0 -1
  210. package/lib/rules/forInArrays.js +0 -2
  211. package/lib/rules/forInGuards.d.ts +0 -1
  212. package/lib/rules/forInGuards.js +0 -2
  213. package/lib/rules/functionApplySpreads.d.ts +0 -1
  214. package/lib/rules/functionApplySpreads.js +0 -2
  215. package/lib/rules/functionAssignments.d.ts +0 -1
  216. package/lib/rules/functionAssignments.js +4 -9
  217. package/lib/rules/functionCurryingRedundancy.d.ts +0 -1
  218. package/lib/rules/functionCurryingRedundancy.js +0 -2
  219. package/lib/rules/functionDeclarationStyles.d.ts +0 -1
  220. package/lib/rules/functionDeclarationStyles.js +3 -5
  221. package/lib/rules/functionNameMatches.d.ts +0 -1
  222. package/lib/rules/functionNameMatches.js +0 -2
  223. package/lib/rules/functionNewCalls.d.ts +0 -1
  224. package/lib/rules/functionNewCalls.js +5 -7
  225. package/lib/rules/generatorFunctionYields.d.ts +0 -1
  226. package/lib/rules/generatorFunctionYields.js +0 -2
  227. package/lib/rules/getterReturns.d.ts +0 -1
  228. package/lib/rules/getterReturns.js +0 -2
  229. package/lib/rules/globalAssignments.d.ts +0 -1
  230. package/lib/rules/globalAssignments.js +6 -8
  231. package/lib/rules/globalObjectCalls.d.ts +0 -1
  232. package/lib/rules/globalObjectCalls.js +1 -3
  233. package/lib/rules/globalThisAliases.d.ts +0 -1
  234. package/lib/rules/globalThisAliases.js +8 -10
  235. package/lib/rules/impliedEvals.d.ts +0 -1
  236. package/lib/rules/impliedEvals.js +26 -28
  237. package/lib/rules/importEmptyBlocks.d.ts +0 -1
  238. package/lib/rules/importEmptyBlocks.js +0 -2
  239. package/lib/rules/importTypeSideEffects.d.ts +0 -1
  240. package/lib/rules/importTypeSideEffects.js +0 -2
  241. package/lib/rules/indexedObjectTypes.d.ts +0 -1
  242. package/lib/rules/indexedObjectTypes.js +4 -6
  243. package/lib/rules/instanceOfArrays.d.ts +0 -1
  244. package/lib/rules/instanceOfArrays.js +2 -4
  245. package/lib/rules/irregularWhitespaces.d.ts +0 -1
  246. package/lib/rules/irregularWhitespaces.js +5 -7
  247. package/lib/rules/isNaNComparisons.d.ts +0 -1
  248. package/lib/rules/isNaNComparisons.js +5 -7
  249. package/lib/rules/literalConstructorWrappers.d.ts +0 -1
  250. package/lib/rules/literalConstructorWrappers.js +10 -12
  251. package/lib/rules/mathMethods.d.ts +0 -1
  252. package/lib/rules/mathMethods.js +14 -16
  253. package/lib/rules/meaninglessVoidOperators.d.ts +0 -1
  254. package/lib/rules/meaninglessVoidOperators.js +0 -2
  255. package/lib/rules/misleadingVoidExpressions.d.ts +0 -1
  256. package/lib/rules/misleadingVoidExpressions.js +0 -2
  257. package/lib/rules/moduleSpecifierLists.d.ts +0 -1
  258. package/lib/rules/moduleSpecifierLists.js +0 -2
  259. package/lib/rules/multilineAmbiguities.d.ts +0 -1
  260. package/lib/rules/multilineAmbiguities.js +0 -2
  261. package/lib/rules/namedDefaultExports.d.ts +0 -1
  262. package/lib/rules/namedDefaultExports.js +0 -2
  263. package/lib/rules/namespaceDeclarations.d.ts +0 -1
  264. package/lib/rules/namespaceDeclarations.js +3 -5
  265. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -1
  266. package/lib/rules/namespaceImplicitAmbientImports.js +0 -2
  267. package/lib/rules/namespaceKeywords.d.ts +0 -1
  268. package/lib/rules/namespaceKeywords.js +0 -2
  269. package/lib/rules/nativeObjectExtensions.d.ts +0 -1
  270. package/lib/rules/nativeObjectExtensions.js +4 -6
  271. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -1
  272. package/lib/rules/negativeIndexLengthMethods.js +7 -9
  273. package/lib/rules/negativeZeroComparisons.d.ts +0 -1
  274. package/lib/rules/negativeZeroComparisons.js +0 -2
  275. package/lib/rules/nestedStandaloneIfs.d.ts +0 -1
  276. package/lib/rules/nestedStandaloneIfs.js +1 -3
  277. package/lib/rules/newDefinitions.d.ts +0 -1
  278. package/lib/rules/newDefinitions.js +0 -2
  279. package/lib/rules/newExpressions.d.ts +0 -1
  280. package/lib/rules/newExpressions.js +0 -2
  281. package/lib/rules/newNativeNonConstructors.d.ts +0 -1
  282. package/lib/rules/newNativeNonConstructors.js +2 -4
  283. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -1
  284. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -2
  285. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -1
  286. package/lib/rules/nonNullAssertedOptionalChains.js +0 -2
  287. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -1
  288. package/lib/rules/nonNullAssertionPlacement.js +1 -3
  289. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -1
  290. package/lib/rules/nonNullableTypeAssertions.js +0 -2
  291. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -1
  292. package/lib/rules/nonOctalDecimalEscapes.js +0 -2
  293. package/lib/rules/nullishCheckStyle.d.ts +0 -1
  294. package/lib/rules/nullishCheckStyle.js +3 -5
  295. package/lib/rules/nullishCoalescingOperators.d.ts +0 -1
  296. package/lib/rules/nullishCoalescingOperators.js +29 -19
  297. package/lib/rules/numberMethodRanges.d.ts +0 -1
  298. package/lib/rules/numberMethodRanges.js +1 -3
  299. package/lib/rules/numberStaticMethods.d.ts +0 -1
  300. package/lib/rules/numberStaticMethods.js +3 -5
  301. package/lib/rules/numericErasingOperations.d.ts +0 -1
  302. package/lib/rules/numericErasingOperations.js +2 -4
  303. package/lib/rules/numericLiteralParsing.d.ts +0 -1
  304. package/lib/rules/numericLiteralParsing.js +11 -22
  305. package/lib/rules/numericPrecision.d.ts +0 -1
  306. package/lib/rules/numericPrecision.js +0 -2
  307. package/lib/rules/numericSeparatorGroups.d.ts +0 -1
  308. package/lib/rules/numericSeparatorGroups.js +0 -2
  309. package/lib/rules/objectAssignSpreads.d.ts +0 -1
  310. package/lib/rules/objectAssignSpreads.js +4 -6
  311. package/lib/rules/objectCalls.d.ts +0 -1
  312. package/lib/rules/objectCalls.js +2 -4
  313. package/lib/rules/objectEntriesMethods.d.ts +0 -1
  314. package/lib/rules/objectEntriesMethods.js +13 -15
  315. package/lib/rules/objectHasOwns.d.ts +0 -1
  316. package/lib/rules/objectHasOwns.js +7 -9
  317. package/lib/rules/objectKeyDuplicates.d.ts +0 -1
  318. package/lib/rules/objectKeyDuplicates.js +0 -2
  319. package/lib/rules/objectProto.d.ts +0 -1
  320. package/lib/rules/objectProto.js +0 -2
  321. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -1
  322. package/lib/rules/objectPrototypeBuiltIns.js +1 -3
  323. package/lib/rules/objectShorthand.d.ts +0 -1
  324. package/lib/rules/objectShorthand.js +0 -2
  325. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -1
  326. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -2
  327. package/lib/rules/objectTypeDefinitions.d.ts +0 -1
  328. package/lib/rules/objectTypeDefinitions.js +0 -2
  329. package/lib/rules/octalEscapes.d.ts +0 -1
  330. package/lib/rules/octalEscapes.js +0 -2
  331. package/lib/rules/octalNumbers.d.ts +0 -1
  332. package/lib/rules/octalNumbers.js +0 -2
  333. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -1
  334. package/lib/rules/operatorAssignmentShorthand.js +3 -5
  335. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -1
  336. package/lib/rules/overloadSignaturesAdjacent.js +0 -2
  337. package/lib/rules/parameterReassignments.d.ts +0 -1
  338. package/lib/rules/parameterReassignments.js +18 -51
  339. package/lib/rules/parseIntRadixes.d.ts +0 -1
  340. package/lib/rules/parseIntRadixes.js +10 -15
  341. package/lib/rules/propertyAccessNotation.d.ts +0 -1
  342. package/lib/rules/propertyAccessNotation.js +3 -5
  343. package/lib/rules/recursionOnlyArguments.d.ts +0 -1
  344. package/lib/rules/recursionOnlyArguments.js +8 -17
  345. package/lib/rules/redundantTypeConstituents.d.ts +0 -1
  346. package/lib/rules/redundantTypeConstituents.js +0 -2
  347. package/lib/rules/regexAllGlobalFlags.d.ts +0 -1
  348. package/lib/rules/regexAllGlobalFlags.js +0 -2
  349. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -1
  350. package/lib/rules/regexAmbiguousInvalidity.js +2 -4
  351. package/lib/rules/regexCharacterClassRanges.d.ts +0 -1
  352. package/lib/rules/regexCharacterClassRanges.js +0 -2
  353. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -1
  354. package/lib/rules/regexCharacterClassSetOperations.js +0 -2
  355. package/lib/rules/regexCharacterClasses.d.ts +0 -1
  356. package/lib/rules/regexCharacterClasses.js +1 -3
  357. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -1
  358. package/lib/rules/regexConciseCharacterClassNegations.js +0 -2
  359. package/lib/rules/regexContradictoryAssertions.d.ts +0 -1
  360. package/lib/rules/regexContradictoryAssertions.js +0 -2
  361. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -1
  362. package/lib/rules/regexControlCharacterEscapes.js +0 -2
  363. package/lib/rules/regexControlCharacters.d.ts +0 -1
  364. package/lib/rules/regexControlCharacters.js +0 -2
  365. package/lib/rules/regexDigitMatchers.d.ts +0 -1
  366. package/lib/rules/regexDigitMatchers.js +0 -2
  367. package/lib/rules/regexDollarEscapes.d.ts +0 -1
  368. package/lib/rules/regexDollarEscapes.js +0 -2
  369. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -1
  370. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -2
  371. package/lib/rules/regexEmptyAlternatives.d.ts +0 -1
  372. package/lib/rules/regexEmptyAlternatives.js +0 -2
  373. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -1
  374. package/lib/rules/regexEmptyCapturingGroups.js +0 -2
  375. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -1
  376. package/lib/rules/regexEmptyCharacterClasses.js +0 -2
  377. package/lib/rules/regexEmptyGroups.d.ts +0 -1
  378. package/lib/rules/regexEmptyGroups.js +0 -2
  379. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -1
  380. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -2
  381. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -1
  382. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -2
  383. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -1
  384. package/lib/rules/regexEmptyStringLiterals.js +0 -2
  385. package/lib/rules/regexEscapeBackspaces.d.ts +0 -1
  386. package/lib/rules/regexEscapeBackspaces.js +0 -2
  387. package/lib/rules/regexExecutors.d.ts +0 -1
  388. package/lib/rules/regexExecutors.js +2 -4
  389. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -1
  390. package/lib/rules/regexGraphemeStringLiterals.js +0 -2
  391. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -1
  392. package/lib/rules/regexHexadecimalEscapes.js +0 -2
  393. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -1
  394. package/lib/rules/regexIgnoreCaseFlags.js +0 -2
  395. package/lib/rules/regexInvisibleCharacters.d.ts +0 -1
  396. package/lib/rules/regexInvisibleCharacters.js +0 -2
  397. package/lib/rules/regexLetterCasing.d.ts +0 -1
  398. package/lib/rules/regexLetterCasing.js +0 -2
  399. package/lib/rules/regexLiterals.d.ts +0 -1
  400. package/lib/rules/regexLiterals.js +4 -9
  401. package/lib/rules/regexLookaroundAssertions.d.ts +0 -1
  402. package/lib/rules/regexLookaroundAssertions.js +0 -2
  403. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -1
  404. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -2
  405. package/lib/rules/regexMatchNotation.d.ts +0 -1
  406. package/lib/rules/regexMatchNotation.js +0 -2
  407. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -1
  408. package/lib/rules/regexMisleadingCapturingGroups.js +0 -2
  409. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -1
  410. package/lib/rules/regexMisleadingQuantifiers.js +0 -2
  411. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -1
  412. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -2
  413. package/lib/rules/regexNamedBackreferences.d.ts +0 -1
  414. package/lib/rules/regexNamedBackreferences.js +0 -2
  415. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -1
  416. package/lib/rules/regexNamedCaptureGroups.js +0 -2
  417. package/lib/rules/regexNamedReplacements.d.ts +0 -1
  418. package/lib/rules/regexNamedReplacements.js +0 -2
  419. package/lib/rules/regexNonStandardFlags.d.ts +0 -1
  420. package/lib/rules/regexNonStandardFlags.js +1 -3
  421. package/lib/rules/regexObscureRanges.d.ts +0 -1
  422. package/lib/rules/regexObscureRanges.js +0 -2
  423. package/lib/rules/regexOctalEscapes.d.ts +0 -1
  424. package/lib/rules/regexOctalEscapes.js +0 -2
  425. package/lib/rules/regexPlusQuantifiers.d.ts +0 -1
  426. package/lib/rules/regexPlusQuantifiers.js +0 -2
  427. package/lib/rules/regexPredefinedAssertions.d.ts +0 -1
  428. package/lib/rules/regexPredefinedAssertions.js +0 -2
  429. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -1
  430. package/lib/rules/regexQuestionQuantifiers.js +0 -2
  431. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -1
  432. package/lib/rules/regexRepeatQuantifiers.js +0 -2
  433. package/lib/rules/regexResultArrayGroups.d.ts +0 -1
  434. package/lib/rules/regexResultArrayGroups.js +0 -2
  435. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -1
  436. package/lib/rules/regexSetOperationOptimizations.js +0 -2
  437. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -1
  438. package/lib/rules/regexStandaloneBackslashes.js +0 -2
  439. package/lib/rules/regexStarQuantifiers.d.ts +0 -1
  440. package/lib/rules/regexStarQuantifiers.js +0 -2
  441. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -1
  442. package/lib/rules/regexSuperLinearBacktracking.js +0 -2
  443. package/lib/rules/regexSuperLinearMoves.d.ts +0 -1
  444. package/lib/rules/regexSuperLinearMoves.js +0 -2
  445. package/lib/rules/regexTestMethods.d.ts +0 -1
  446. package/lib/rules/regexTestMethods.js +0 -2
  447. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -1
  448. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -2
  449. package/lib/rules/regexUnicodeEscapes.d.ts +0 -1
  450. package/lib/rules/regexUnicodeEscapes.js +0 -2
  451. package/lib/rules/regexUnicodeFlag.d.ts +0 -1
  452. package/lib/rules/regexUnicodeFlag.js +0 -2
  453. package/lib/rules/regexUnicodeProperties.d.ts +0 -1
  454. package/lib/rules/regexUnicodeProperties.js +0 -2
  455. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -1
  456. package/lib/rules/regexUnnecessaryAssertions.js +0 -2
  457. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -1
  458. package/lib/rules/regexUnnecessaryBackreferences.js +0 -2
  459. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -1
  460. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -2
  461. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -1
  462. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -2
  463. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -1
  464. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -2
  465. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -1
  466. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -2
  467. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -1
  468. package/lib/rules/regexUnnecessaryEscapes.js +2 -4
  469. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -1
  470. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -2
  471. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -1
  472. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -2
  473. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -1
  474. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -2
  475. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -1
  476. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -2
  477. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -1
  478. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -2
  479. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -1
  480. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -2
  481. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -1
  482. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -2
  483. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -1
  484. package/lib/rules/regexUnnecessarySetOperands.js +0 -2
  485. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -1
  486. package/lib/rules/regexUnusedCapturingGroups.js +0 -2
  487. package/lib/rules/regexUnusedFlags.d.ts +0 -1
  488. package/lib/rules/regexUnusedFlags.js +0 -2
  489. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -1
  490. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -2
  491. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -1
  492. package/lib/rules/regexUnusedQuantifiers.js +0 -2
  493. package/lib/rules/regexValidity.d.ts +0 -1
  494. package/lib/rules/regexValidity.js +1 -3
  495. package/lib/rules/regexWordMatchers.d.ts +0 -1
  496. package/lib/rules/regexWordMatchers.js +0 -2
  497. package/lib/rules/regexZeroQuantifiers.d.ts +0 -1
  498. package/lib/rules/regexZeroQuantifiers.js +0 -2
  499. package/lib/rules/requireImports.d.ts +0 -1
  500. package/lib/rules/requireImports.js +0 -2
  501. package/lib/rules/responseJsonMethods.d.ts +0 -1
  502. package/lib/rules/responseJsonMethods.js +0 -2
  503. package/lib/rules/restrictedIdentifiers.d.ts +0 -1
  504. package/lib/rules/restrictedIdentifiers.js +2 -4
  505. package/lib/rules/restrictedImports.d.ts +26 -0
  506. package/lib/rules/restrictedImports.js +164 -0
  507. package/lib/rules/returnAssignments.d.ts +0 -1
  508. package/lib/rules/returnAssignments.js +0 -2
  509. package/lib/rules/returnThisTypes.d.ts +0 -1
  510. package/lib/rules/returnThisTypes.js +0 -2
  511. package/lib/rules/ruleCreator.d.ts +0 -1
  512. package/lib/rules/ruleCreator.js +0 -2
  513. package/lib/rules/selfAssignments.d.ts +0 -1
  514. package/lib/rules/selfAssignments.js +0 -2
  515. package/lib/rules/sequences.d.ts +0 -1
  516. package/lib/rules/sequences.js +0 -2
  517. package/lib/rules/setSizeLengthChecks.d.ts +0 -1
  518. package/lib/rules/setSizeLengthChecks.js +13 -15
  519. package/lib/rules/setterReturns.d.ts +0 -1
  520. package/lib/rules/setterReturns.js +0 -2
  521. package/lib/rules/shadowedRestrictedNames.d.ts +0 -1
  522. package/lib/rules/shadowedRestrictedNames.js +1 -3
  523. package/lib/rules/singleVariableDeclarations.d.ts +0 -1
  524. package/lib/rules/singleVariableDeclarations.js +0 -2
  525. package/lib/rules/sizeComparisonOperators.d.ts +0 -1
  526. package/lib/rules/sizeComparisonOperators.js +5 -7
  527. package/lib/rules/sparseArrays.d.ts +0 -1
  528. package/lib/rules/sparseArrays.js +0 -2
  529. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -1
  530. package/lib/rules/staticMemberOnlyClasses.js +0 -2
  531. package/lib/rules/stringCaseMismatches.d.ts +0 -1
  532. package/lib/rules/stringCaseMismatches.js +3 -8
  533. package/lib/rules/stringCodePoints.d.ts +0 -1
  534. package/lib/rules/stringCodePoints.js +2 -4
  535. package/lib/rules/stringSliceMethods.d.ts +0 -1
  536. package/lib/rules/stringSliceMethods.js +0 -2
  537. package/lib/rules/stringStartsEndsWith.d.ts +0 -1
  538. package/lib/rules/stringStartsEndsWith.js +0 -2
  539. package/lib/rules/structuredCloneMethods.d.ts +0 -1
  540. package/lib/rules/structuredCloneMethods.js +7 -9
  541. package/lib/rules/symbolDescriptions.d.ts +0 -1
  542. package/lib/rules/symbolDescriptions.js +0 -2
  543. package/lib/rules/thisAliases.d.ts +0 -1
  544. package/lib/rules/thisAliases.js +0 -2
  545. package/lib/rules/thisBeforeSuper.d.ts +0 -1
  546. package/lib/rules/thisBeforeSuper.js +0 -2
  547. package/lib/rules/throwErrors.d.ts +0 -1
  548. package/lib/rules/throwErrors.js +11 -13
  549. package/lib/rules/topLevelAwaits.d.ts +0 -1
  550. package/lib/rules/topLevelAwaits.js +0 -2
  551. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -1
  552. package/lib/rules/tripleSlashReferenceValidity.js +1 -3
  553. package/lib/rules/tripleSlashReferences.d.ts +0 -1
  554. package/lib/rules/tripleSlashReferences.js +0 -2
  555. package/lib/rules/tsComments.d.ts +0 -1
  556. package/lib/rules/tsComments.js +8 -10
  557. package/lib/rules/tslintComments.d.ts +0 -1
  558. package/lib/rules/tslintComments.js +0 -2
  559. package/lib/rules/typeAssertionStyles.d.ts +0 -1
  560. package/lib/rules/typeAssertionStyles.js +0 -2
  561. package/lib/rules/typeImports.d.ts +0 -1
  562. package/lib/rules/typeImports.js +4 -7
  563. package/lib/rules/typeofComparisons.d.ts +0 -1
  564. package/lib/rules/typeofComparisons.js +4 -9
  565. package/lib/rules/unassignedVariables.d.ts +0 -1
  566. package/lib/rules/unassignedVariables.js +2 -7
  567. package/lib/rules/undefinedTypeofChecks.d.ts +0 -1
  568. package/lib/rules/undefinedTypeofChecks.js +0 -2
  569. package/lib/rules/undefinedVariables.d.ts +0 -1
  570. package/lib/rules/undefinedVariables.js +0 -2
  571. package/lib/rules/unicodeBOMs.d.ts +0 -1
  572. package/lib/rules/unicodeBOMs.js +0 -2
  573. package/lib/rules/unnecessaryBinds.d.ts +0 -1
  574. package/lib/rules/unnecessaryBinds.js +0 -2
  575. package/lib/rules/unnecessaryBlocks.d.ts +0 -1
  576. package/lib/rules/unnecessaryBlocks.js +0 -2
  577. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -1
  578. package/lib/rules/unnecessaryBooleanCasts.js +0 -2
  579. package/lib/rules/unnecessaryCatches.d.ts +0 -1
  580. package/lib/rules/unnecessaryCatches.js +0 -2
  581. package/lib/rules/unnecessaryComparisons.d.ts +0 -1
  582. package/lib/rules/unnecessaryComparisons.js +3 -12
  583. package/lib/rules/unnecessaryConcatenation.d.ts +0 -1
  584. package/lib/rules/unnecessaryConcatenation.js +0 -2
  585. package/lib/rules/unnecessaryEscapes.d.ts +0 -1
  586. package/lib/rules/unnecessaryEscapes.js +1 -3
  587. package/lib/rules/unnecessaryMathClamps.d.ts +0 -1
  588. package/lib/rules/unnecessaryMathClamps.js +13 -21
  589. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -1
  590. package/lib/rules/unnecessaryNumericFractions.js +0 -2
  591. package/lib/rules/unnecessaryRenames.d.ts +0 -1
  592. package/lib/rules/unnecessaryRenames.js +0 -2
  593. package/lib/rules/unnecessaryTernaries.d.ts +0 -1
  594. package/lib/rules/unnecessaryTernaries.js +0 -2
  595. package/lib/rules/unnecessaryUseStricts.d.ts +0 -1
  596. package/lib/rules/unnecessaryUseStricts.js +0 -2
  597. package/lib/rules/unsafeNegations.d.ts +0 -1
  598. package/lib/rules/unsafeNegations.js +1 -3
  599. package/lib/rules/utils/collectAccessorPairs.d.ts +1 -2
  600. package/lib/rules/utils/collectAccessorPairs.js +0 -2
  601. package/lib/rules/utils/countCommentsInRange.d.ts +0 -1
  602. package/lib/rules/utils/countCommentsInRange.js +0 -2
  603. package/lib/rules/utils/discriminateAnyType.d.ts +1 -2
  604. package/lib/rules/utils/discriminateAnyType.js +0 -2
  605. package/lib/rules/utils/equalityOperators.d.ts +1 -2
  606. package/lib/rules/utils/equalityOperators.js +0 -2
  607. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -1
  608. package/lib/rules/utils/forEachReturnStatement.js +0 -2
  609. package/lib/rules/utils/formatReportedType.d.ts +1 -2
  610. package/lib/rules/utils/formatReportedType.js +0 -2
  611. package/lib/rules/utils/getConstrainedType.d.ts +0 -1
  612. package/lib/rules/utils/getConstrainedType.js +0 -2
  613. package/lib/rules/utils/getFunctionName.d.ts +0 -1
  614. package/lib/rules/utils/getFunctionName.js +0 -2
  615. package/lib/rules/utils/getRegExpConstruction.d.ts +2 -4
  616. package/lib/rules/utils/getRegExpConstruction.js +7 -8
  617. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -1
  618. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -2
  619. package/lib/rules/utils/getThisExpression.d.ts +0 -1
  620. package/lib/rules/utils/getThisExpression.js +0 -2
  621. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -1
  622. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -2
  623. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -1
  624. package/lib/rules/utils/isBuiltinSymbolLike.js +1 -3
  625. package/lib/rules/utils/isDirectEqualityCheck.d.ts +1 -2
  626. package/lib/rules/utils/isDirectEqualityCheck.js +0 -2
  627. package/lib/rules/utils/isErrorSubclass.d.ts +2 -2
  628. package/lib/rules/utils/isErrorSubclass.js +5 -7
  629. package/lib/rules/utils/isInBooleanContext.d.ts +0 -1
  630. package/lib/rules/utils/isInBooleanContext.js +0 -2
  631. package/lib/rules/utils/isTypeRecursive.d.ts +0 -1
  632. package/lib/rules/utils/isTypeRecursive.js +0 -2
  633. package/lib/rules/utils/isUnsafeAssignment.d.ts +1 -2
  634. package/lib/rules/utils/isUnsafeAssignment.js +1 -3
  635. package/lib/rules/utils/operators.d.ts +0 -1
  636. package/lib/rules/utils/operators.js +0 -2
  637. package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
  638. package/lib/rules/utils/parseRegexpAst.js +0 -2
  639. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -1
  640. package/lib/rules/utils/parseRegexpAstFull.js +0 -2
  641. package/lib/rules/utils/skipParentheses.d.ts +0 -1
  642. package/lib/rules/utils/skipParentheses.js +0 -2
  643. package/lib/rules/variableDeletions.d.ts +0 -1
  644. package/lib/rules/variableDeletions.js +0 -2
  645. package/lib/rules/voidOperator.d.ts +0 -1
  646. package/lib/rules/voidOperator.js +0 -2
  647. package/lib/rules/withStatements.d.ts +0 -1
  648. package/lib/rules/withStatements.js +0 -2
  649. package/lib/rules/wrapperObjects.d.ts +0 -1
  650. package/lib/rules/wrapperObjects.js +3 -5
  651. package/lib/type-utils/getSpecifierNames.d.ts +2 -0
  652. package/lib/type-utils/getSpecifierNames.js +7 -0
  653. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +2 -0
  654. package/lib/type-utils/isDeclaredInModuleBlock.js +12 -0
  655. package/lib/type-utils/isFromFile.d.ts +2 -0
  656. package/lib/type-utils/isFromFile.js +11 -0
  657. package/lib/type-utils/isFromPackage.d.ts +2 -0
  658. package/lib/type-utils/isFromPackage.js +13 -0
  659. package/lib/type-utils/matchesSpecifier.d.ts +3 -0
  660. package/lib/type-utils/matchesSpecifier.js +18 -0
  661. package/lib/type-utils/schemas.d.ts +14 -0
  662. package/lib/type-utils/schemas.js +23 -0
  663. package/package.json +9 -10
  664. package/lib/rules/utils/forEachChild.d.ts +0 -4
  665. package/lib/rules/utils/forEachChild.js +0 -7
@@ -1,5 +1,5 @@
1
1
  import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclaration, typescriptLanguage } from "@flint.fyi/typescript-language";
2
+ import { getStaticNumberValue, getStaticStringValue, getTSNodeRange, isGlobalDeclaration, typescriptLanguage } from "@flint.fyi/typescript-language";
3
3
  import { SyntaxKind } from "typescript";
4
4
  import { nullThrows } from "@flint.fyi/utils";
5
5
  //#region src/rules/numericLiteralParsing.ts
@@ -13,19 +13,6 @@ function convertToLiteral(value, radix) {
13
13
  default: return value;
14
14
  }
15
15
  }
16
- function getRadixValue(node) {
17
- if (node.kind !== SyntaxKind.NumericLiteral) return;
18
- const value = Number(node.text);
19
- if (![
20
- 2,
21
- 8,
22
- 16
23
- ].includes(value)) return;
24
- return value;
25
- }
26
- function getStringValue(node) {
27
- return node.kind === SyntaxKind.StringLiteral || node.kind === SyntaxKind.NoSubstitutionTemplateLiteral ? node.text : void 0;
28
- }
29
16
  var numericLiteralParsing_default = ruleCreator.createRule(typescriptLanguage, {
30
17
  about: {
31
18
  description: "Reports parseInt calls with binary, hexadecimal, or octal strings that can be replaced with numeric literals.",
@@ -40,10 +27,14 @@ var numericLiteralParsing_default = ruleCreator.createRule(typescriptLanguage, {
40
27
  setup(context) {
41
28
  function checkParseIntCall(node, sourceFile) {
42
29
  if (node.arguments.length !== 2) return;
43
- const stringValue = getStringValue(nullThrows(node.arguments[0], "First argument is expected to be present by prior length check"));
30
+ const stringValue = getStaticStringValue(nullThrows(node.arguments[0], "First argument is expected to be present by prior length check"));
44
31
  if (!stringValue) return;
45
- const radixValue = getRadixValue(nullThrows(node.arguments[1], "Second argument is expected to be present by prior length check"));
46
- if (!radixValue) return;
32
+ const radixValue = getStaticNumberValue(nullThrows(node.arguments[1], "Second argument is expected to be present by prior length check"));
33
+ if (radixValue === void 0 || ![
34
+ 2,
35
+ 8,
36
+ 16
37
+ ].includes(radixValue)) return;
47
38
  context.report({
48
39
  data: {
49
40
  literal: convertToLiteral(stringValue, radixValue),
@@ -53,14 +44,12 @@ var numericLiteralParsing_default = ruleCreator.createRule(typescriptLanguage, {
53
44
  range: getTSNodeRange(node, sourceFile)
54
45
  });
55
46
  }
56
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
47
+ return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
57
48
  if (node.expression.kind === SyntaxKind.Identifier) {
58
- if (node.expression.text === "parseInt" && isGlobalDeclaration(node.expression, typeChecker)) checkParseIntCall(node, sourceFile);
59
- } else if (node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.expression.kind === SyntaxKind.Identifier && node.expression.expression.text === "Number" && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === "parseInt" && isGlobalDeclaration(node.expression.expression, typeChecker)) checkParseIntCall(node, sourceFile);
49
+ if (node.expression.text === "parseInt" && isGlobalDeclaration(node.expression, typeChecker, program)) checkParseIntCall(node, sourceFile);
50
+ } else if (node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.expression.kind === SyntaxKind.Identifier && node.expression.expression.text === "Number" && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === "parseInt" && isGlobalDeclaration(node.expression.expression, typeChecker, program)) checkParseIntCall(node, sourceFile);
60
51
  } } };
61
52
  }
62
53
  });
63
54
  //#endregion
64
55
  export { numericLiteralParsing_default as default };
65
-
66
- //# sourceMappingURL=numericLiteralParsing.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "lossOfPrecision", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=numericPrecision.d.ts.map
@@ -98,5 +98,3 @@ var numericPrecision_default = ruleCreator.createRule(typescriptLanguage, {
98
98
  });
99
99
  //#endregion
100
100
  export { numericPrecision_default as default };
101
-
102
- //# sourceMappingURL=numericPrecision.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "invalidGrouping", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=numericSeparatorGroups.d.ts.map
@@ -97,5 +97,3 @@ var numericSeparatorGroups_default = ruleCreator.createRule(typescriptLanguage,
97
97
  });
98
98
  //#endregion
99
99
  export { numericSeparatorGroups_default as default };
100
-
101
- //# sourceMappingURL=numericSeparatorGroups.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferObjectLiteral" | "preferObjectSpread", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectAssignSpreads.d.ts.map
@@ -11,8 +11,8 @@ function hasArgumentsWithAccessors(node) {
11
11
  function hasArraySpread(node) {
12
12
  return node.arguments.some((argument) => argument.kind === SyntaxKind.SpreadElement);
13
13
  }
14
- function isObjectAssignCall(node, typeChecker) {
15
- return node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === "assign" && node.expression.expression.kind === SyntaxKind.Identifier && isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker);
14
+ function isObjectAssignCall(node, typeChecker, program) {
15
+ return node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === "assign" && node.expression.expression.kind === SyntaxKind.Identifier && isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker, program);
16
16
  }
17
17
  var objectAssignSpreads_default = ruleCreator.createRule(typescriptLanguage, {
18
18
  about: {
@@ -37,8 +37,8 @@ var objectAssignSpreads_default = ruleCreator.createRule(typescriptLanguage, {
37
37
  }
38
38
  },
39
39
  setup(context) {
40
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
41
- if (!isObjectAssignCall(node, typeChecker) || node.arguments.length < 1) return;
40
+ return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
41
+ if (!isObjectAssignCall(node, typeChecker, program) || node.arguments.length < 1) return;
42
42
  if (node.arguments[0].kind !== SyntaxKind.ObjectLiteralExpression || hasArraySpread(node) || hasArgumentsWithAccessors(node)) return;
43
43
  context.report({
44
44
  message: node.arguments.length === 1 ? "preferObjectLiteral" : "preferObjectSpread",
@@ -49,5 +49,3 @@ var objectAssignSpreads_default = ruleCreator.createRule(typescriptLanguage, {
49
49
  });
50
50
  //#endregion
51
51
  export { objectAssignSpreads_default as default };
52
-
53
- //# sourceMappingURL=objectAssignSpreads.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferObjectLiteral", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectCalls.d.ts.map
@@ -18,8 +18,8 @@ var objectCalls_default = ruleCreator.createRule(typescriptLanguage, {
18
18
  suggestions: ["Replace `Object()` or `new Object()` with `{}` to create an empty object.", "Use `Object.create(null)` when you need an object without a prototype."]
19
19
  } },
20
20
  setup(context) {
21
- function checkNode(node, { sourceFile, typeChecker }) {
22
- if (node.expression.kind !== SyntaxKind.Identifier || !isGlobalDeclarationOfName(node.expression, "Object", typeChecker)) return;
21
+ function checkNode(node, { program, sourceFile, typeChecker }) {
22
+ if (node.expression.kind !== SyntaxKind.Identifier || !isGlobalDeclarationOfName(node.expression, "Object", typeChecker, program)) return;
23
23
  const reportNode = node.kind === SyntaxKind.NewExpression ? node.getChildAt(0, sourceFile) : node.expression;
24
24
  context.report({
25
25
  message: "preferObjectLiteral",
@@ -34,5 +34,3 @@ var objectCalls_default = ruleCreator.createRule(typescriptLanguage, {
34
34
  });
35
35
  //#endregion
36
36
  export { objectCalls_default as default };
37
-
38
- //# sourceMappingURL=objectCalls.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferFromEntries", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectEntriesMethods.d.ts.map
@@ -7,20 +7,20 @@ import { SyntaxKind } from "typescript";
7
7
  function isArrowFunctionWithParams(node) {
8
8
  return node.kind === SyntaxKind.ArrowFunction && !!node.parameters.length;
9
9
  }
10
- function isEmptyObject(node, typeChecker) {
10
+ function isEmptyObject(node, typeChecker, program) {
11
11
  const unwrapped = skipParentheses(node);
12
- return isEmptyObjectLiteral(unwrapped) || isObjectCreateNull(unwrapped, typeChecker);
12
+ return isEmptyObjectLiteral(unwrapped) || isObjectCreateNull(unwrapped, typeChecker, program);
13
13
  }
14
14
  function isEmptyObjectLiteral(node) {
15
15
  return node.kind === SyntaxKind.ObjectLiteralExpression && !node.properties.length;
16
16
  }
17
- function isObjectAssignPattern(callback, typeChecker) {
17
+ function isObjectAssignPattern(callback, typeChecker, program) {
18
18
  if (callback.parameters.length < 1) return false;
19
19
  const firstParameter = callback.parameters[0];
20
20
  if (firstParameter.name.kind !== SyntaxKind.Identifier) return false;
21
21
  const accumulatorName = firstParameter.name.text;
22
22
  const body = skipParentheses(callback.body);
23
- if (!isObjectMethodCall(body, "assign", typeChecker) || body.arguments.length !== 2 || !isGlobalDeclarationOfName(body.expression.expression, "Object", typeChecker)) return false;
23
+ if (!isObjectMethodCall(body, "assign", typeChecker, program) || body.arguments.length !== 2 || !isGlobalDeclarationOfName(body.expression.expression, "Object", typeChecker, program)) return false;
24
24
  const firstArg = body.arguments[0];
25
25
  if (firstArg.kind !== SyntaxKind.Identifier || firstArg.text !== accumulatorName) return false;
26
26
  const secondArg = body.arguments[1];
@@ -28,17 +28,17 @@ function isObjectAssignPattern(callback, typeChecker) {
28
28
  const property = secondArg.properties[0];
29
29
  return property.kind === SyntaxKind.PropertyAssignment && property.name.kind === SyntaxKind.ComputedPropertyName;
30
30
  }
31
- function isObjectCreateNull(node, typeChecker) {
32
- if (!isObjectMethodCall(node, "create", typeChecker) || !isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker) || node.arguments.length !== 1) return false;
31
+ function isObjectCreateNull(node, typeChecker, program) {
32
+ if (!isObjectMethodCall(node, "create", typeChecker, program) || !isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker, program) || node.arguments.length !== 1) return false;
33
33
  return node.arguments[0].kind === SyntaxKind.NullKeyword;
34
34
  }
35
- function isObjectMethodCall(node, text, typeChecker) {
36
- return node.kind === SyntaxKind.CallExpression && node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === text && isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker);
35
+ function isObjectMethodCall(node, text, typeChecker, program) {
36
+ return node.kind === SyntaxKind.CallExpression && node.expression.kind === SyntaxKind.PropertyAccessExpression && node.expression.name.kind === SyntaxKind.Identifier && node.expression.name.text === text && isGlobalDeclarationOfName(node.expression.expression, "Object", typeChecker, program);
37
37
  }
38
- function isReduceCallWithEmptyObject(node, typeChecker) {
38
+ function isReduceCallWithEmptyObject(node, typeChecker, program) {
39
39
  if (node.expression.kind !== SyntaxKind.PropertyAccessExpression || node.expression.name.kind !== SyntaxKind.Identifier || node.expression.name.text !== "reduce" || node.questionDotToken !== void 0 || node.arguments.length !== 2) return false;
40
40
  const initialValue = node.arguments[1];
41
- return isEmptyObject(initialValue, typeChecker) && isArrayOrTupleTypeAtLocation(node.expression.expression, typeChecker);
41
+ return isEmptyObject(initialValue, typeChecker, program) && isArrayOrTupleTypeAtLocation(node.expression.expression, typeChecker);
42
42
  }
43
43
  function isSpreadAccumulatorPattern(callback) {
44
44
  if (callback.parameters.length < 1) return false;
@@ -64,11 +64,11 @@ var objectEntriesMethods_default = ruleCreator.createRule(typescriptLanguage, {
64
64
  suggestions: ["Convert the array to key-value pairs with map() and use Object.fromEntries()."]
65
65
  } },
66
66
  setup(context) {
67
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
68
- if (!isReduceCallWithEmptyObject(node, typeChecker)) return;
67
+ return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
68
+ if (!isReduceCallWithEmptyObject(node, typeChecker, program)) return;
69
69
  const callback = node.arguments[0];
70
70
  if (!isArrowFunctionWithParams(callback) || callback.body.kind === SyntaxKind.Block) return;
71
- if (!isObjectAssignPattern(callback, typeChecker) && !isSpreadAccumulatorPattern(callback)) return;
71
+ if (!isObjectAssignPattern(callback, typeChecker, program) && !isSpreadAccumulatorPattern(callback)) return;
72
72
  context.report({
73
73
  message: "preferFromEntries",
74
74
  range: getTSNodeRange(node, sourceFile)
@@ -78,5 +78,3 @@ var objectEntriesMethods_default = ruleCreator.createRule(typescriptLanguage, {
78
78
  });
79
79
  //#endregion
80
80
  export { objectEntriesMethods_default as default };
81
-
82
- //# sourceMappingURL=objectEntriesMethods.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferHasOwn", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectHasOwns.d.ts.map
@@ -18,26 +18,26 @@ var objectHasOwns_default = ruleCreator.createRule(typescriptLanguage, {
18
18
  suggestions: ["Use the safer, more modern `Object.hasOwn(obj, key)`.", "Use an alternative key check such as the `in` operator."]
19
19
  } },
20
20
  setup(context) {
21
- function isObjectPrototypeHasOwnProperty(node, typeChecker) {
22
- return node.kind === SyntaxKind.PropertyAccessExpression && node.name.kind === SyntaxKind.Identifier && node.name.text === "prototype" && node.expression.kind === SyntaxKind.Identifier && isGlobalDeclarationOfName(node.expression, "Object", typeChecker);
21
+ function isObjectPrototypeHasOwnProperty(node, typeChecker, program) {
22
+ return node.kind === SyntaxKind.PropertyAccessExpression && node.name.kind === SyntaxKind.Identifier && node.name.text === "prototype" && node.expression.kind === SyntaxKind.Identifier && isGlobalDeclarationOfName(node.expression, "Object", typeChecker, program);
23
23
  }
24
24
  function isObjectLiteralHasOwnProperty(node) {
25
25
  return node.kind === SyntaxKind.ObjectLiteralExpression && !node.properties.length;
26
26
  }
27
- function isHasOwnProperty(node, typeChecker) {
27
+ function isHasOwnProperty(node, typeChecker, program) {
28
28
  if (node.kind !== SyntaxKind.PropertyAccessExpression || node.name.kind !== SyntaxKind.Identifier || node.name.text !== "hasOwnProperty") return false;
29
- return isObjectPrototypeHasOwnProperty(node.expression, typeChecker) || isObjectLiteralHasOwnProperty(node.expression);
29
+ return isObjectPrototypeHasOwnProperty(node.expression, typeChecker, program) || isObjectLiteralHasOwnProperty(node.expression);
30
30
  }
31
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
31
+ return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
32
32
  if (node.expression.kind !== SyntaxKind.PropertyAccessExpression || node.expression.name.kind !== SyntaxKind.Identifier) return;
33
- if (node.expression.name.text === "call" && node.arguments.length >= 2 && isHasOwnProperty(node.expression.expression, typeChecker)) {
33
+ if (node.expression.name.text === "call" && node.arguments.length >= 2 && isHasOwnProperty(node.expression.expression, typeChecker, program)) {
34
34
  context.report({
35
35
  message: "preferHasOwn",
36
36
  range: getTSNodeRange(node, sourceFile)
37
37
  });
38
38
  return;
39
39
  }
40
- if (node.expression.name.text === "hasOwnProperty" && node.arguments.length >= 1 && !isHasOwnProperty(node.expression, typeChecker)) context.report({
40
+ if (node.expression.name.text === "hasOwnProperty" && node.arguments.length >= 1 && !isHasOwnProperty(node.expression, typeChecker, program)) context.report({
41
41
  message: "preferHasOwn",
42
42
  range: getTSNodeRange(node, sourceFile)
43
43
  });
@@ -46,5 +46,3 @@ var objectHasOwns_default = ruleCreator.createRule(typescriptLanguage, {
46
46
  });
47
47
  //#endregion
48
48
  export { objectHasOwns_default as default };
49
-
50
- //# sourceMappingURL=objectHasOwns.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "duplicateKey", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectKeyDuplicates.d.ts.map
@@ -59,5 +59,3 @@ function getPropertyKeyName(property) {
59
59
  }
60
60
  //#endregion
61
61
  export { objectKeyDuplicates_default as default };
62
-
63
- //# sourceMappingURL=objectKeyDuplicates.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "noProto", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectProto.d.ts.map
@@ -46,5 +46,3 @@ var objectProto_default = ruleCreator.createRule(typescriptLanguage, {
46
46
  });
47
47
  //#endregion
48
48
  export { objectProto_default as default };
49
-
50
- //# sourceMappingURL=objectProto.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "prototypeBuiltIn", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectPrototypeBuiltIns.d.ts.map
@@ -3,7 +3,7 @@ import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-langua
3
3
  import { SyntaxKind } from "typescript";
4
4
  import { nullThrows } from "@flint.fyi/utils";
5
5
  //#region src/rules/objectPrototypeBuiltIns.ts
6
- const prototypeMethods = new Set([
6
+ const prototypeMethods = /* @__PURE__ */ new Set([
7
7
  "hasOwnProperty",
8
8
  "isPrototypeOf",
9
9
  "propertyIsEnumerable"
@@ -50,5 +50,3 @@ function findToken(node, token, sourceFile) {
50
50
  }
51
51
  //#endregion
52
52
  export { objectPrototypeBuiltIns_default as default };
53
-
54
- //# sourceMappingURL=objectPrototypeBuiltIns.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "expectedMethodShorthand" | "expectedPropertyShorthand", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectShorthand.d.ts.map
@@ -80,5 +80,3 @@ function isValidIdentifier(name) {
80
80
  }
81
81
  //#endregion
82
82
  export { objectShorthand_default as default };
83
-
84
- //# sourceMappingURL=objectShorthand.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "unnecessaryFallback", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectSpreadUnnecessaryFallbacks.d.ts.map
@@ -39,5 +39,3 @@ var objectSpreadUnnecessaryFallbacks_default = ruleCreator.createRule(typescript
39
39
  });
40
40
  //#endregion
41
41
  export { objectSpreadUnnecessaryFallbacks_default as default };
42
-
43
- //# sourceMappingURL=objectSpreadUnnecessaryFallbacks.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferInterface", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=objectTypeDefinitions.d.ts.map
@@ -30,5 +30,3 @@ var objectTypeDefinitions_default = ruleCreator.createRule(typescriptLanguage, {
30
30
  });
31
31
  //#endregion
32
32
  export { objectTypeDefinitions_default as default };
33
-
34
- //# sourceMappingURL=objectTypeDefinitions.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "noOctalEscape", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=octalEscapes.d.ts.map
@@ -54,5 +54,3 @@ var octalEscapes_default = ruleCreator.createRule(typescriptLanguage, {
54
54
  });
55
55
  //#endregion
56
56
  export { octalEscapes_default as default };
57
-
58
- //# sourceMappingURL=octalEscapes.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "noOctalNumber", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=octalNumbers.d.ts.map
@@ -51,5 +51,3 @@ var octalNumbers_default = ruleCreator.createRule(typescriptLanguage, {
51
51
  });
52
52
  //#endregion
53
53
  export { octalNumbers_default as default };
54
-
55
- //# sourceMappingURL=octalNumbers.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "preferShorthand", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=operatorAssignmentShorthand.d.ts.map
@@ -2,7 +2,7 @@ import { ruleCreator } from "./ruleCreator.js";
2
2
  import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
3
  import ts from "typescript";
4
4
  //#region src/rules/operatorAssignmentShorthand.ts
5
- const operatorTexts = new Map([
5
+ const operatorTexts = /* @__PURE__ */ new Map([
6
6
  [ts.SyntaxKind.AmpersandToken, "&"],
7
7
  [ts.SyntaxKind.AsteriskAsteriskToken, "**"],
8
8
  [ts.SyntaxKind.AsteriskToken, "*"],
@@ -16,13 +16,13 @@ const operatorTexts = new Map([
16
16
  [ts.SyntaxKind.PlusToken, "+"],
17
17
  [ts.SyntaxKind.SlashToken, "/"]
18
18
  ]);
19
- const commutativeOperatorsWithShorthand = new Set([
19
+ const commutativeOperatorsWithShorthand = /* @__PURE__ */ new Set([
20
20
  "&",
21
21
  "*",
22
22
  "^",
23
23
  "|"
24
24
  ]);
25
- const nonCommutativeOperatorsWithShorthand = new Set([
25
+ const nonCommutativeOperatorsWithShorthand = /* @__PURE__ */ new Set([
26
26
  "%",
27
27
  "**",
28
28
  "+",
@@ -73,5 +73,3 @@ var operatorAssignmentShorthand_default = ruleCreator.createRule(typescriptLangu
73
73
  });
74
74
  //#endregion
75
75
  export { operatorAssignmentShorthand_default as default };
76
-
77
- //# sourceMappingURL=operatorAssignmentShorthand.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "overloadSignatureSeparated", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=overloadSignaturesAdjacent.d.ts.map
@@ -136,5 +136,3 @@ var overloadSignaturesAdjacent_default = ruleCreator.createRule(typescriptLangua
136
136
  });
137
137
  //#endregion
138
138
  export { overloadSignaturesAdjacent_default as default };
139
-
140
- //# sourceMappingURL=overloadSignaturesAdjacent.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "parameterReassignment", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=parameterReassignments.d.ts.map
@@ -1,20 +1,6 @@
1
1
  import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
2
+ import { getScopeManager, getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
4
3
  //#region src/rules/parameterReassignments.ts
5
- function collectParameterNames(parameters) {
6
- const names = /* @__PURE__ */ new Set();
7
- const collectNames = (node) => {
8
- if (node.kind === ts.SyntaxKind.Identifier) names.add(node.text);
9
- else if (ts.isObjectBindingPattern(node)) {
10
- for (const element of node.elements) if (!ts.isOmittedExpression(element)) collectNames(element.name);
11
- } else if (ts.isArrayBindingPattern(node)) {
12
- for (const element of node.elements) if (!ts.isOmittedExpression(element)) collectNames(element.name);
13
- }
14
- };
15
- for (const parameter of parameters) collectNames(parameter.name);
16
- return names;
17
- }
18
4
  var parameterReassignments_default = ruleCreator.createRule(typescriptLanguage, {
19
5
  about: {
20
6
  description: "Disallow reassignment of function parameters.",
@@ -31,46 +17,27 @@ var parameterReassignments_default = ruleCreator.createRule(typescriptLanguage,
31
17
  suggestions: ["Use a new variable if you need to modify the value.", "Use a different pattern such as a helper function."]
32
18
  } },
33
19
  setup(context) {
34
- const scopes = /* @__PURE__ */ new Map();
35
- const checkParameterAssignment = (name, node, sourceFile) => {
36
- let currentNode = node;
37
- while (currentNode !== void 0) {
38
- if (ts.isFunctionDeclaration(currentNode) || ts.isFunctionExpression(currentNode) || ts.isArrowFunction(currentNode)) {
39
- if (scopes.get(currentNode)?.has(name)) context.report({
40
- message: "parameterReassignment",
41
- range: getTSNodeRange(node, sourceFile)
42
- });
43
- return;
44
- }
45
- currentNode = currentNode.parent;
20
+ function reportParameterReassignments(node, { sourceFile }) {
21
+ const scopeManager = getScopeManager(sourceFile);
22
+ const parameterVariables = new Set(node.parameters.flatMap((parameter) => scopeManager.getDeclaredVariables(parameter)));
23
+ for (const reference of scopeManager.getReferencesInScope(node)) {
24
+ if (!reference.isWrite || !reference.variable || !parameterVariables.has(reference.variable)) continue;
25
+ context.report({
26
+ message: "parameterReassignment",
27
+ range: getTSNodeRange(reference.identifier, sourceFile)
28
+ });
46
29
  }
47
- };
48
- const handleUnaryExpression = (node, { sourceFile }) => {
49
- if ((node.operator === ts.SyntaxKind.PlusPlusToken || node.operator === ts.SyntaxKind.MinusMinusToken) && ts.isIdentifier(node.operand)) checkParameterAssignment(node.operand.text, node.operand, sourceFile);
50
- };
30
+ }
51
31
  return { visitors: {
52
- ArrowFunction: (node) => {
53
- scopes.set(node, collectParameterNames(node.parameters));
54
- },
55
- BinaryExpression: (node, { sourceFile }) => {
56
- if (!(node.operatorToken.kind === ts.SyntaxKind.EqualsToken || node.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken || node.operatorToken.kind === ts.SyntaxKind.MinusEqualsToken || node.operatorToken.kind === ts.SyntaxKind.AsteriskEqualsToken || node.operatorToken.kind === ts.SyntaxKind.SlashEqualsToken) || !ts.isIdentifier(node.left)) return;
57
- checkParameterAssignment(node.left.text, node.left, sourceFile);
58
- },
59
- FunctionDeclaration: (node) => {
60
- scopes.set(node, collectParameterNames(node.parameters));
61
- },
62
- FunctionExpression: (node) => {
63
- scopes.set(node, collectParameterNames(node.parameters));
64
- },
65
- PostfixUnaryExpression: handleUnaryExpression,
66
- PrefixUnaryExpression: handleUnaryExpression,
67
- Program: () => {
68
- scopes.clear();
69
- }
32
+ ArrowFunction: reportParameterReassignments,
33
+ Constructor: reportParameterReassignments,
34
+ FunctionDeclaration: reportParameterReassignments,
35
+ FunctionExpression: reportParameterReassignments,
36
+ GetAccessor: reportParameterReassignments,
37
+ MethodDeclaration: reportParameterReassignments,
38
+ SetAccessor: reportParameterReassignments
70
39
  } };
71
40
  }
72
41
  });
73
42
  //#endregion
74
43
  export { parameterReassignments_default as default };
75
-
76
- //# sourceMappingURL=parameterReassignments.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "invalidRadix" | "missingRadix", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=parseIntRadixes.d.ts.map
@@ -1,21 +1,18 @@
1
1
  import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
2
+ import { getStaticNumberValue, getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
+ import { SyntaxKind, isIdentifier } from "typescript";
4
4
  //#region src/rules/parseIntRadixes.ts
5
- function isParseIntCall(node, typeChecker) {
5
+ function isParseIntCall(node, typeChecker, program) {
6
6
  switch (node.expression.kind) {
7
- case ts$1.SyntaxKind.Identifier: return isGlobalDeclarationOfName(node.expression, "parseInt", typeChecker);
8
- case ts$1.SyntaxKind.PropertyAccessExpression: return ts$1.isIdentifier(node.expression.name) && node.expression.name.text === "parseInt" && ts$1.isIdentifier(node.expression.expression) && node.expression.expression.text === "Number" && isGlobalDeclarationOfName(node.expression.expression, "Number", typeChecker);
7
+ case SyntaxKind.Identifier: return isGlobalDeclarationOfName(node.expression, "parseInt", typeChecker, program);
8
+ case SyntaxKind.PropertyAccessExpression: return isIdentifier(node.expression.name) && node.expression.name.text === "parseInt" && isIdentifier(node.expression.expression) && node.expression.expression.text === "Number" && isGlobalDeclarationOfName(node.expression.expression, "Number", typeChecker, program);
9
9
  default: return false;
10
10
  }
11
11
  }
12
12
  function isValidRadix(argument) {
13
- switch (argument.kind) {
14
- case ts$1.SyntaxKind.Identifier: return argument.text !== "undefined";
15
- case ts$1.SyntaxKind.NumericLiteral: return isValidRadixValue(Number(argument.text));
16
- case ts$1.SyntaxKind.PrefixUnaryExpression: return argument.operator === ts$1.SyntaxKind.MinusToken && ts$1.isNumericLiteral(argument.operand) && isValidRadixValue(-Number(argument.operand.text));
17
- default: return true;
18
- }
13
+ if (argument.kind === SyntaxKind.Identifier && argument.text === "undefined") return false;
14
+ const value = getStaticNumberValue(argument);
15
+ return value === void 0 ? true : isValidRadixValue(value);
19
16
  }
20
17
  function isValidRadixValue(value) {
21
18
  return value >= 2 && value <= 36;
@@ -39,8 +36,8 @@ var parseIntRadixes_default = ruleCreator.createRule(typescriptLanguage, {
39
36
  }
40
37
  },
41
38
  setup(context) {
42
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
43
- if (!isParseIntCall(node, typeChecker)) return;
39
+ return { visitors: { CallExpression: (node, { program, sourceFile, typeChecker }) => {
40
+ if (!isParseIntCall(node, typeChecker, program)) return;
44
41
  if (node.arguments.length <= 1) {
45
42
  context.report({
46
43
  message: "missingRadix",
@@ -58,5 +55,3 @@ var parseIntRadixes_default = ruleCreator.createRule(typescriptLanguage, {
58
55
  });
59
56
  //#endregion
60
57
  export { parseIntRadixes_default as default };
61
-
62
- //# sourceMappingURL=parseIntRadixes.js.map
@@ -10,4 +10,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
10
10
  allowIndexSignaturePropertyAccess: z.ZodDefault<z.ZodBoolean>;
11
11
  }>;
12
12
  export default _default;
13
- //# sourceMappingURL=propertyAccessNotation.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { ruleCreator } from "./ruleCreator.js";
2
2
  import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
3
  import ts from "typescript";
4
- import { z } from "zod/v4";
4
+ import { z as z$1 } from "zod/v4";
5
5
  //#region src/rules/propertyAccessNotation.ts
6
- const javascriptReservedWords = new Set([
6
+ const javascriptReservedWords = /* @__PURE__ */ new Set([
7
7
  "await",
8
8
  "break",
9
9
  "case",
@@ -77,7 +77,7 @@ var propertyAccessNotation_default = ruleCreator.createRule(typescriptLanguage,
77
77
  secondary: ["Dot notation is more concise and easier to read.", "Bracket notation should only be used when the property name is not a valid identifier or is a reserved word."],
78
78
  suggestions: ["Replace `[\"{{ key }}\"]` with `.{{ key }}`."]
79
79
  } },
80
- options: { allowIndexSignaturePropertyAccess: z.boolean().default(false).describe("Whether to allow accessing properties matching an index signature with bracket notation.") },
80
+ options: { allowIndexSignaturePropertyAccess: z$1.boolean().default(false).describe("Whether to allow accessing properties matching an index signature with bracket notation.") },
81
81
  setup(context) {
82
82
  function getKeyTypeInformation(node, typeChecker) {
83
83
  const propertySymbol = typeChecker.getSymbolAtLocation(node.argumentExpression) ?? typeChecker.getTypeAtLocation(node.expression).getNonNullableType().getProperties().find((propertySymbol) => ts.isStringLiteral(node.argumentExpression) && propertySymbol.escapedName === node.argumentExpression.text);
@@ -115,5 +115,3 @@ var propertyAccessNotation_default = ruleCreator.createRule(typescriptLanguage,
115
115
  });
116
116
  //#endregion
117
117
  export { propertyAccessNotation_default as default };
118
-
119
- //# sourceMappingURL=propertyAccessNotation.js.map
@@ -7,4 +7,3 @@ declare const _default: import("@flint.fyi/core").Rule<{
7
7
  readonly url: string;
8
8
  }, "onlyUsedInRecursion", undefined>;
9
9
  export default _default;
10
- //# sourceMappingURL=recursionOnlyArguments.d.ts.map