@flint.fyi/ts 0.20.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} +360 -365
  2. package/dist/index.mjs +22467 -0
  3. package/package.json +10 -10
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -621
  7. package/lib/rules/accessorPairGroups.d.ts +0 -10
  8. package/lib/rules/accessorPairGroups.js +0 -48
  9. package/lib/rules/accessorPairTypes.d.ts +0 -10
  10. package/lib/rules/accessorPairTypes.js +0 -72
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -10
  12. package/lib/rules/accessorThisRecursion.js +0 -65
  13. package/lib/rules/anyArguments.d.ts +0 -10
  14. package/lib/rules/anyArguments.js +0 -234
  15. package/lib/rules/anyAssignments.d.ts +0 -10
  16. package/lib/rules/anyAssignments.js +0 -265
  17. package/lib/rules/anyCalls.d.ts +0 -10
  18. package/lib/rules/anyCalls.js +0 -68
  19. package/lib/rules/anyMemberAccess.d.ts +0 -10
  20. package/lib/rules/anyMemberAccess.js +0 -85
  21. package/lib/rules/anyReturns.d.ts +0 -10
  22. package/lib/rules/anyReturns.js +0 -102
  23. package/lib/rules/arguments.d.ts +0 -10
  24. package/lib/rules/arguments.js +0 -38
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -10
  26. package/lib/rules/arrayCallbackReturns.js +0 -73
  27. package/lib/rules/arrayConstructors.d.ts +0 -10
  28. package/lib/rules/arrayConstructors.js +0 -47
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -10
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -54
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -10
  32. package/lib/rules/arrayElementDeletions.js +0 -43
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -10
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -45
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -10
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -86
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -10
  38. package/lib/rules/arrayFilteredFinds.js +0 -80
  39. package/lib/rules/arrayFinds.d.ts +0 -10
  40. package/lib/rules/arrayFinds.js +0 -41
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -10
  42. package/lib/rules/arrayFlatMapMethods.js +0 -47
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -10
  44. package/lib/rules/arrayFlatMethods.js +0 -83
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -10
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -33
  47. package/lib/rules/arrayIncludes.d.ts +0 -10
  48. package/lib/rules/arrayIncludes.js +0 -59
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -10
  50. package/lib/rules/arrayIncludesMethods.js +0 -37
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -10
  52. package/lib/rules/arrayIndexOfMethods.js +0 -51
  53. package/lib/rules/arrayLoops.d.ts +0 -10
  54. package/lib/rules/arrayLoops.js +0 -36
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -10
  56. package/lib/rules/arrayMapIdentities.js +0 -74
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -10
  58. package/lib/rules/arrayMutableReverses.js +0 -39
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -10
  60. package/lib/rules/arrayMutableSorts.js +0 -72
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -10
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -64
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -10
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -51
  65. package/lib/rules/arraySomeMethods.d.ts +0 -10
  66. package/lib/rules/arraySomeMethods.js +0 -77
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -10
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -74
  69. package/lib/rules/arrayTypes.d.ts +0 -17
  70. package/lib/rules/arrayTypes.js +0 -111
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -10
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -97
  73. package/lib/rules/asConstAssertions.d.ts +0 -10
  74. package/lib/rules/asConstAssertions.js +0 -57
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -10
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -47
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -10
  78. package/lib/rules/asyncFunctionAwaits.js +0 -55
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -10
  80. package/lib/rules/asyncPromiseExecutors.js +0 -41
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -10
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -52
  83. package/lib/rules/atAccesses.d.ts +0 -10
  84. package/lib/rules/atAccesses.js +0 -52
  85. package/lib/rules/builtinCoercions.d.ts +0 -10
  86. package/lib/rules/builtinCoercions.js +0 -117
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -10
  88. package/lib/rules/builtinConstructorNews.js +0 -89
  89. package/lib/rules/caseDeclarations.d.ts +0 -10
  90. package/lib/rules/caseDeclarations.js +0 -40
  91. package/lib/rules/caseDuplicates.d.ts +0 -10
  92. package/lib/rules/caseDuplicates.js +0 -36
  93. package/lib/rules/caseFallthroughs.d.ts +0 -10
  94. package/lib/rules/caseFallthroughs.js +0 -76
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -10
  96. package/lib/rules/catchCallbackTypes.js +0 -67
  97. package/lib/rules/caughtVariableNames.d.ts +0 -10
  98. package/lib/rules/caughtVariableNames.js +0 -40
  99. package/lib/rules/chainedAssignments.d.ts +0 -10
  100. package/lib/rules/chainedAssignments.js +0 -33
  101. package/lib/rules/charAtComparisons.d.ts +0 -10
  102. package/lib/rules/charAtComparisons.js +0 -58
  103. package/lib/rules/classAssignments.d.ts +0 -10
  104. package/lib/rules/classAssignments.js +0 -29
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -10
  106. package/lib/rules/classFieldDeclarations.js +0 -40
  107. package/lib/rules/classLiteralProperties.d.ts +0 -10
  108. package/lib/rules/classLiteralProperties.js +0 -45
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -10
  110. package/lib/rules/classMemberDuplicates.js +0 -71
  111. package/lib/rules/classMethodsThis.d.ts +0 -14
  112. package/lib/rules/classMethodsThis.js +0 -124
  113. package/lib/rules/combinedPushes.d.ts +0 -10
  114. package/lib/rules/combinedPushes.js +0 -56
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -10
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -39
  117. package/lib/rules/consoleCalls.d.ts +0 -9
  118. package/lib/rules/consoleCalls.js +0 -28
  119. package/lib/rules/constantAssignments.d.ts +0 -10
  120. package/lib/rules/constantAssignments.js +0 -41
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -16
  122. package/lib/rules/constructorGenericCalls.js +0 -138
  123. package/lib/rules/constructorReturns.d.ts +0 -10
  124. package/lib/rules/constructorReturns.js +0 -41
  125. package/lib/rules/constructorSupers.d.ts +0 -10
  126. package/lib/rules/constructorSupers.js +0 -77
  127. package/lib/rules/dateConstructorClones.d.ts +0 -10
  128. package/lib/rules/dateConstructorClones.js +0 -37
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -10
  130. package/lib/rules/dateNowTimestamps.js +0 -57
  131. package/lib/rules/debuggerStatements.d.ts +0 -10
  132. package/lib/rules/debuggerStatements.js +0 -33
  133. package/lib/rules/defaultCaseLast.d.ts +0 -10
  134. package/lib/rules/defaultCaseLast.js +0 -36
  135. package/lib/rules/defaultParameterLast.d.ts +0 -10
  136. package/lib/rules/defaultParameterLast.js +0 -42
  137. package/lib/rules/deprecated.d.ts +0 -10
  138. package/lib/rules/deprecated.js +0 -243
  139. package/lib/rules/destructuringConsistency.d.ts +0 -10
  140. package/lib/rules/destructuringConsistency.js +0 -112
  141. package/lib/rules/duplicateArguments.d.ts +0 -10
  142. package/lib/rules/duplicateArguments.js +0 -45
  143. package/lib/rules/dynamicDeletes.d.ts +0 -10
  144. package/lib/rules/dynamicDeletes.js +0 -37
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -10
  146. package/lib/rules/elseIfDuplicates.js +0 -38
  147. package/lib/rules/elseReturns.d.ts +0 -10
  148. package/lib/rules/elseReturns.js +0 -67
  149. package/lib/rules/emptyBlocks.d.ts +0 -10
  150. package/lib/rules/emptyBlocks.js +0 -56
  151. package/lib/rules/emptyDestructures.d.ts +0 -10
  152. package/lib/rules/emptyDestructures.js +0 -34
  153. package/lib/rules/emptyEnums.d.ts +0 -10
  154. package/lib/rules/emptyEnums.js +0 -30
  155. package/lib/rules/emptyExports.d.ts +0 -10
  156. package/lib/rules/emptyExports.js +0 -60
  157. package/lib/rules/emptyFiles.d.ts +0 -10
  158. package/lib/rules/emptyFiles.js +0 -44
  159. package/lib/rules/emptyFunctions.d.ts +0 -10
  160. package/lib/rules/emptyFunctions.js +0 -61
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -10
  162. package/lib/rules/emptyModuleAttributes.js +0 -35
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -10
  164. package/lib/rules/emptyObjectTypes.js +0 -47
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -10
  166. package/lib/rules/emptyStaticBlocks.js +0 -42
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -10
  168. package/lib/rules/emptyTypeParameterLists.js +0 -31
  169. package/lib/rules/enumInitializers.d.ts +0 -10
  170. package/lib/rules/enumInitializers.js +0 -54
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -10
  172. package/lib/rules/enumMemberLiterals.js +0 -39
  173. package/lib/rules/enumValueConsistency.d.ts +0 -10
  174. package/lib/rules/enumValueConsistency.js +0 -56
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -10
  176. package/lib/rules/enumValueDuplicates.js +0 -60
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -9
  178. package/lib/rules/equalityOperatorNegations.js +0 -60
  179. package/lib/rules/equalityOperators.d.ts +0 -10
  180. package/lib/rules/equalityOperators.js +0 -44
  181. package/lib/rules/errorMessages.d.ts +0 -10
  182. package/lib/rules/errorMessages.js +0 -60
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -10
  184. package/lib/rules/errorSubclassProperties.js +0 -144
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -10
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -55
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -10
  188. package/lib/rules/escapeSequenceCasing.js +0 -75
  189. package/lib/rules/evals.d.ts +0 -10
  190. package/lib/rules/evals.js +0 -31
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -10
  192. package/lib/rules/evolvingVariableTypes.js +0 -33
  193. package/lib/rules/exceptionAssignments.d.ts +0 -10
  194. package/lib/rules/exceptionAssignments.js +0 -39
  195. package/lib/rules/explicitAnys.d.ts +0 -10
  196. package/lib/rules/explicitAnys.js +0 -55
  197. package/lib/rules/exponentiationOperators.d.ts +0 -10
  198. package/lib/rules/exponentiationOperators.js +0 -34
  199. package/lib/rules/exportFromImports.d.ts +0 -10
  200. package/lib/rules/exportFromImports.js +0 -119
  201. package/lib/rules/exportMutables.d.ts +0 -10
  202. package/lib/rules/exportMutables.js +0 -33
  203. package/lib/rules/exportUniqueNames.d.ts +0 -10
  204. package/lib/rules/exportUniqueNames.js +0 -65
  205. package/lib/rules/extraneousClasses.d.ts +0 -16
  206. package/lib/rules/extraneousClasses.js +0 -111
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -10
  208. package/lib/rules/fetchMethodBodies.js +0 -72
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -10
  210. package/lib/rules/finallyStatementSafety.js +0 -47
  211. package/lib/rules/forDirections.d.ts +0 -10
  212. package/lib/rules/forDirections.js +0 -75
  213. package/lib/rules/forInArrays.d.ts +0 -10
  214. package/lib/rules/forInArrays.js +0 -46
  215. package/lib/rules/forInGuards.d.ts +0 -9
  216. package/lib/rules/forInGuards.js +0 -44
  217. package/lib/rules/functionApplySpreads.d.ts +0 -10
  218. package/lib/rules/functionApplySpreads.js +0 -63
  219. package/lib/rules/functionAssignments.d.ts +0 -10
  220. package/lib/rules/functionAssignments.js +0 -29
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -10
  222. package/lib/rules/functionCurryingRedundancy.js +0 -53
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -16
  224. package/lib/rules/functionDeclarationStyles.js +0 -67
  225. package/lib/rules/functionNameMatches.d.ts +0 -10
  226. package/lib/rules/functionNameMatches.js +0 -74
  227. package/lib/rules/functionNewCalls.d.ts +0 -10
  228. package/lib/rules/functionNewCalls.js +0 -42
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -10
  230. package/lib/rules/generatorFunctionYields.js +0 -50
  231. package/lib/rules/getterReturns.d.ts +0 -10
  232. package/lib/rules/getterReturns.js +0 -65
  233. package/lib/rules/globalAssignments.d.ts +0 -10
  234. package/lib/rules/globalAssignments.js +0 -47
  235. package/lib/rules/globalObjectCalls.d.ts +0 -10
  236. package/lib/rules/globalObjectCalls.js +0 -42
  237. package/lib/rules/globalThisAliases.d.ts +0 -10
  238. package/lib/rules/globalThisAliases.js +0 -47
  239. package/lib/rules/impliedEvals.d.ts +0 -10
  240. package/lib/rules/impliedEvals.js +0 -130
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -10
  242. package/lib/rules/importEmptyBlocks.js +0 -53
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -10
  244. package/lib/rules/importTypeSideEffects.js +0 -31
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -16
  246. package/lib/rules/indexedObjectTypes.js +0 -83
  247. package/lib/rules/instanceOfArrays.d.ts +0 -10
  248. package/lib/rules/instanceOfArrays.js +0 -31
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -16
  250. package/lib/rules/irregularWhitespaces.js +0 -97
  251. package/lib/rules/isNaNComparisons.d.ts +0 -10
  252. package/lib/rules/isNaNComparisons.js +0 -43
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -10
  254. package/lib/rules/literalConstructorWrappers.js +0 -64
  255. package/lib/rules/mathMethods.d.ts +0 -10
  256. package/lib/rules/mathMethods.js +0 -128
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -10
  258. package/lib/rules/meaninglessVoidOperators.js +0 -39
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -10
  260. package/lib/rules/misleadingVoidExpressions.js +0 -128
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -10
  262. package/lib/rules/moduleSpecifierLists.js +0 -92
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -10
  264. package/lib/rules/multilineAmbiguities.js +0 -64
  265. package/lib/rules/namedDefaultExports.d.ts +0 -10
  266. package/lib/rules/namedDefaultExports.js +0 -60
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -14
  268. package/lib/rules/namespaceDeclarations.js +0 -37
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -10
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -40
  271. package/lib/rules/namespaceKeywords.d.ts +0 -10
  272. package/lib/rules/namespaceKeywords.js +0 -40
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -10
  274. package/lib/rules/nativeObjectExtensions.js +0 -114
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -10
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -180
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -10
  278. package/lib/rules/negativeZeroComparisons.js +0 -48
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -10
  280. package/lib/rules/nestedStandaloneIfs.js +0 -105
  281. package/lib/rules/newDefinitions.d.ts +0 -10
  282. package/lib/rules/newDefinitions.js +0 -84
  283. package/lib/rules/newExpressions.d.ts +0 -10
  284. package/lib/rules/newExpressions.js +0 -38
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -10
  286. package/lib/rules/newNativeNonConstructors.js +0 -39
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -10
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -63
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -10
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -69
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -10
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -94
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -10
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -78
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -10
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -48
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -21
  298. package/lib/rules/nullishCheckStyle.js +0 -144
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -22
  300. package/lib/rules/nullishCoalescingOperators.js +0 -323
  301. package/lib/rules/numberMethodRanges.d.ts +0 -10
  302. package/lib/rules/numberMethodRanges.js +0 -74
  303. package/lib/rules/numberStaticMethods.d.ts +0 -10
  304. package/lib/rules/numberStaticMethods.js +0 -53
  305. package/lib/rules/numericErasingOperations.d.ts +0 -10
  306. package/lib/rules/numericErasingOperations.js +0 -46
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -10
  308. package/lib/rules/numericLiteralParsing.js +0 -66
  309. package/lib/rules/numericPrecision.d.ts +0 -10
  310. package/lib/rules/numericPrecision.js +0 -102
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -10
  312. package/lib/rules/numericSeparatorGroups.js +0 -101
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -10
  314. package/lib/rules/objectAssignSpreads.js +0 -53
  315. package/lib/rules/objectCalls.d.ts +0 -10
  316. package/lib/rules/objectCalls.js +0 -38
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -10
  318. package/lib/rules/objectEntriesMethods.js +0 -82
  319. package/lib/rules/objectHasOwns.d.ts +0 -10
  320. package/lib/rules/objectHasOwns.js +0 -50
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -10
  322. package/lib/rules/objectKeyDuplicates.js +0 -63
  323. package/lib/rules/objectProto.d.ts +0 -10
  324. package/lib/rules/objectProto.js +0 -50
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -10
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -54
  327. package/lib/rules/objectShorthand.d.ts +0 -10
  328. package/lib/rules/objectShorthand.js +0 -84
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -10
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -43
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -10
  332. package/lib/rules/objectTypeDefinitions.js +0 -34
  333. package/lib/rules/octalEscapes.d.ts +0 -10
  334. package/lib/rules/octalEscapes.js +0 -58
  335. package/lib/rules/octalNumbers.d.ts +0 -10
  336. package/lib/rules/octalNumbers.js +0 -55
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -10
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -77
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -10
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -140
  341. package/lib/rules/parameterReassignments.d.ts +0 -10
  342. package/lib/rules/parameterReassignments.js +0 -45
  343. package/lib/rules/parseIntRadixes.d.ts +0 -10
  344. package/lib/rules/parseIntRadixes.js +0 -62
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -13
  346. package/lib/rules/propertyAccessNotation.js +0 -119
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -10
  348. package/lib/rules/recursionOnlyArguments.js +0 -71
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -10
  350. package/lib/rules/redundantTypeConstituents.js +0 -277
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -10
  352. package/lib/rules/regexAllGlobalFlags.js +0 -56
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -10
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -297
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -10
  356. package/lib/rules/regexCharacterClassRanges.js +0 -137
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -10
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -81
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -10
  360. package/lib/rules/regexCharacterClasses.js +0 -234
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -10
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -52
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -10
  364. package/lib/rules/regexContradictoryAssertions.js +0 -210
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -10
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -130
  367. package/lib/rules/regexControlCharacters.d.ts +0 -10
  368. package/lib/rules/regexControlCharacters.js +0 -95
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -10
  370. package/lib/rules/regexDigitMatchers.js +0 -180
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -10
  372. package/lib/rules/regexDollarEscapes.js +0 -91
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -10
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -128
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -10
  376. package/lib/rules/regexEmptyAlternatives.js +0 -140
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -10
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -67
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -10
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -68
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -10
  382. package/lib/rules/regexEmptyGroups.js +0 -66
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -10
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -92
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -10
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -68
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -10
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -66
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -10
  390. package/lib/rules/regexEscapeBackspaces.js +0 -69
  391. package/lib/rules/regexExecutors.d.ts +0 -10
  392. package/lib/rules/regexExecutors.js +0 -58
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -10
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -51
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -10
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -71
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -10
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -145
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -10
  400. package/lib/rules/regexInvisibleCharacters.js +0 -90
  401. package/lib/rules/regexLetterCasing.d.ts +0 -10
  402. package/lib/rules/regexLetterCasing.js +0 -186
  403. package/lib/rules/regexLiterals.d.ts +0 -10
  404. package/lib/rules/regexLiterals.js +0 -92
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -10
  406. package/lib/rules/regexLookaroundAssertions.js +0 -163
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -10
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -94
  409. package/lib/rules/regexMatchNotation.d.ts +0 -10
  410. package/lib/rules/regexMatchNotation.js +0 -139
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -10
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -229
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -10
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -78
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -10
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -203
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -10
  418. package/lib/rules/regexNamedBackreferences.js +0 -48
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -9
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -67
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -10
  422. package/lib/rules/regexNamedReplacements.js +0 -93
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -10
  424. package/lib/rules/regexNonStandardFlags.js +0 -66
  425. package/lib/rules/regexObscureRanges.d.ts +0 -10
  426. package/lib/rules/regexObscureRanges.js +0 -93
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -10
  428. package/lib/rules/regexOctalEscapes.js +0 -70
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -10
  430. package/lib/rules/regexPlusQuantifiers.js +0 -68
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -10
  432. package/lib/rules/regexPredefinedAssertions.js +0 -127
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -10
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -104
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -10
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -96
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -10
  438. package/lib/rules/regexResultArrayGroups.js +0 -187
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -10
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -177
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -10
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -59
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -10
  444. package/lib/rules/regexStarQuantifiers.js +0 -68
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -10
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -98
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -10
  448. package/lib/rules/regexSuperLinearMoves.js +0 -142
  449. package/lib/rules/regexTestMethods.d.ts +0 -10
  450. package/lib/rules/regexTestMethods.js +0 -83
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -10
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -107
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -9
  454. package/lib/rules/regexUnicodeEscapes.js +0 -97
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -9
  456. package/lib/rules/regexUnicodeFlag.js +0 -97
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -10
  458. package/lib/rules/regexUnicodeProperties.js +0 -133
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -10
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -223
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -10
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -125
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -10
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -74
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -10
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -108
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -10
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -118
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -10
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -144
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -10
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -136
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -10
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -80
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -10
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -198
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -10
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -93
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -10
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -104
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -10
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -69
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -10
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -137
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -10
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -123
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -10
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -136
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -10
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -69
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -10
  492. package/lib/rules/regexUnusedFlags.js +0 -116
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -10
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -63
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -10
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -63
  497. package/lib/rules/regexValidity.d.ts +0 -10
  498. package/lib/rules/regexValidity.js +0 -146
  499. package/lib/rules/regexWordMatchers.d.ts +0 -10
  500. package/lib/rules/regexWordMatchers.js +0 -146
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -10
  502. package/lib/rules/regexZeroQuantifiers.js +0 -60
  503. package/lib/rules/requireImports.d.ts +0 -10
  504. package/lib/rules/requireImports.js +0 -48
  505. package/lib/rules/responseJsonMethods.d.ts +0 -10
  506. package/lib/rules/responseJsonMethods.js +0 -51
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -13
  508. package/lib/rules/restrictedIdentifiers.js +0 -41
  509. package/lib/rules/restrictedImports.d.ts +0 -27
  510. package/lib/rules/restrictedImports.js +0 -166
  511. package/lib/rules/returnAssignments.d.ts +0 -10
  512. package/lib/rules/returnAssignments.js +0 -38
  513. package/lib/rules/returnThisTypes.d.ts +0 -10
  514. package/lib/rules/returnThisTypes.js +0 -94
  515. package/lib/rules/ruleCreator.d.ts +0 -3
  516. package/lib/rules/ruleCreator.js +0 -17
  517. package/lib/rules/selfAssignments.d.ts +0 -10
  518. package/lib/rules/selfAssignments.js +0 -29
  519. package/lib/rules/sequences.d.ts +0 -10
  520. package/lib/rules/sequences.js +0 -28
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -10
  522. package/lib/rules/setSizeLengthChecks.js +0 -48
  523. package/lib/rules/setterReturns.d.ts +0 -10
  524. package/lib/rules/setterReturns.js +0 -41
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -10
  526. package/lib/rules/shadowedRestrictedNames.js +0 -68
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -10
  528. package/lib/rules/singleVariableDeclarations.js +0 -36
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -16
  530. package/lib/rules/sizeComparisonOperators.js +0 -148
  531. package/lib/rules/sparseArrays.d.ts +0 -10
  532. package/lib/rules/sparseArrays.js +0 -43
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -10
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -77
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -10
  536. package/lib/rules/stringCaseMismatches.js +0 -58
  537. package/lib/rules/stringCodePoints.d.ts +0 -10
  538. package/lib/rules/stringCodePoints.js +0 -50
  539. package/lib/rules/stringSliceMethods.d.ts +0 -10
  540. package/lib/rules/stringSliceMethods.js +0 -47
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -10
  542. package/lib/rules/stringStartsEndsWith.js +0 -79
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -10
  544. package/lib/rules/structuredCloneMethods.js +0 -39
  545. package/lib/rules/symbolDescriptions.d.ts +0 -10
  546. package/lib/rules/symbolDescriptions.js +0 -32
  547. package/lib/rules/thisAliases.d.ts +0 -10
  548. package/lib/rules/thisAliases.js +0 -44
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -10
  550. package/lib/rules/thisBeforeSuper.js +0 -86
  551. package/lib/rules/throwErrors.d.ts +0 -10
  552. package/lib/rules/throwErrors.js +0 -61
  553. package/lib/rules/topLevelAwaits.d.ts +0 -10
  554. package/lib/rules/topLevelAwaits.js +0 -49
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -10
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -54
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -10
  558. package/lib/rules/tripleSlashReferences.js +0 -34
  559. package/lib/rules/tsComments.d.ts +0 -22
  560. package/lib/rules/tsComments.js +0 -130
  561. package/lib/rules/tslintComments.d.ts +0 -10
  562. package/lib/rules/tslintComments.js +0 -36
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -10
  564. package/lib/rules/typeAssertionStyles.js +0 -32
  565. package/lib/rules/typeImports.d.ts +0 -20
  566. package/lib/rules/typeImports.js +0 -283
  567. package/lib/rules/typeofComparisons.d.ts +0 -10
  568. package/lib/rules/typeofComparisons.js +0 -58
  569. package/lib/rules/unassignedVariables.d.ts +0 -10
  570. package/lib/rules/unassignedVariables.js +0 -34
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -10
  572. package/lib/rules/undefinedTypeofChecks.js +0 -41
  573. package/lib/rules/undefinedVariables.d.ts +0 -10
  574. package/lib/rules/undefinedVariables.js +0 -39
  575. package/lib/rules/unicodeBOMs.d.ts +0 -10
  576. package/lib/rules/unicodeBOMs.js +0 -39
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -10
  578. package/lib/rules/unnecessaryBinds.js +0 -78
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -10
  580. package/lib/rules/unnecessaryBlocks.js +0 -60
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -10
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -58
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -10
  584. package/lib/rules/unnecessaryCatches.js +0 -48
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -10
  586. package/lib/rules/unnecessaryComparisons.js +0 -300
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -10
  588. package/lib/rules/unnecessaryConcatenation.js +0 -28
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -10
  590. package/lib/rules/unnecessaryEscapes.js +0 -134
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -10
  592. package/lib/rules/unnecessaryMathClamps.js +0 -114
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -10
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -50
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -10
  596. package/lib/rules/unnecessaryRenames.js +0 -92
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -10
  598. package/lib/rules/unnecessaryTernaries.js +0 -88
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -10
  600. package/lib/rules/unnecessaryUseStricts.js +0 -40
  601. package/lib/rules/unsafeNegations.d.ts +0 -10
  602. package/lib/rules/unsafeNegations.js +0 -38
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -12
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -29
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -3
  606. package/lib/rules/utils/countCommentsInRange.js +0 -12
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -16
  608. package/lib/rules/utils/discriminateAnyType.js +0 -38
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -9
  610. package/lib/rules/utils/equalityOperators.js +0 -36
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -3
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -29
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -4
  614. package/lib/rules/utils/formatReportedType.js +0 -9
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -3
  616. package/lib/rules/utils/getConstrainedType.js +0 -9
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -3
  618. package/lib/rules/utils/getFunctionName.js +0 -16
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -10
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -26
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -7
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -13
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -3
  624. package/lib/rules/utils/getThisExpression.js +0 -16
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -3
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -13
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -3
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -33
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -4
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -29
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -27
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -3
  634. package/lib/rules/utils/isInBooleanContext.js +0 -22
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -3
  636. package/lib/rules/utils/isTypeRecursive.js +0 -8
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -15
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -45
  639. package/lib/rules/utils/operators.d.ts +0 -5
  640. package/lib/rules/utils/operators.js +0 -35
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -2
  642. package/lib/rules/utils/parseRegexpAst.js +0 -17
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -3
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -18
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -3
  646. package/lib/rules/utils/skipParentheses.js +0 -10
  647. package/lib/rules/variableDeletions.d.ts +0 -10
  648. package/lib/rules/variableDeletions.js +0 -35
  649. package/lib/rules/voidOperator.d.ts +0 -10
  650. package/lib/rules/voidOperator.js +0 -34
  651. package/lib/rules/withStatements.d.ts +0 -10
  652. package/lib/rules/withStatements.js +0 -30
  653. package/lib/rules/wrapperObjects.d.ts +0 -10
  654. package/lib/rules/wrapperObjects.js +0 -36
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -3
  656. package/lib/type-utils/getSpecifierNames.js +0 -9
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -3
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -14
  659. package/lib/type-utils/isFromFile.d.ts +0 -3
  660. package/lib/type-utils/isFromFile.js +0 -13
  661. package/lib/type-utils/isFromPackage.d.ts +0 -3
  662. package/lib/type-utils/isFromPackage.js +0 -16
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -4
  664. package/lib/type-utils/matchesSpecifier.js +0 -20
  665. package/lib/type-utils/schemas.d.ts +0 -15
  666. package/lib/type-utils/schemas.js +0 -25
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports ambiguous multiline expressions that could be misinterpreted.";
3
- readonly id: "multilineAmbiguities";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "ambiguity", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=multilineAmbiguities.d.ts.map
@@ -1,64 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/multilineAmbiguities.ts
5
- var multilineAmbiguities_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports ambiguous multiline expressions that could be misinterpreted.",
8
- id: "multilineAmbiguities",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { ambiguity: {
12
- primary: "This ambiguous line break before {{ after }} will be misinterpreted as a {{ interpretation }}.",
13
- secondary: ["When a line ends with an expression and the next line starts with {{ after }}, it may be interpreted as a {{ interpretation }} instead of two separate statements.", "This can lead to unexpected behavior and runtime errors that are difficult to debug."],
14
- suggestions: ["Add a semicolon after the first line to make it clear they are separate statements.", "Alternatively, move the {{ after }} to the same line as the first expression if a {{ interpretation }} is intended."]
15
- } },
16
- setup(context) {
17
- function checkMultilineDelimiter(expressionEnd, delimiterStart, after, interpretation, sourceFile) {
18
- const { line: expressionEndLine } = sourceFile.getLineAndCharacterOfPosition(expressionEnd);
19
- const { line: delimiterLine } = sourceFile.getLineAndCharacterOfPosition(delimiterStart);
20
- if (expressionEndLine < delimiterLine) context.report({
21
- data: {
22
- after,
23
- interpretation
24
- },
25
- message: "ambiguity",
26
- range: {
27
- begin: delimiterStart,
28
- end: getLineEndPosition(delimiterLine, sourceFile)
29
- }
30
- });
31
- }
32
- return { visitors: {
33
- CallExpression: (node, { sourceFile }) => {
34
- if (!node.arguments.length || node.questionDotToken) return;
35
- const openParen = findChildToken(node, ts$1.SyntaxKind.OpenParenToken, sourceFile);
36
- if (!openParen) return;
37
- checkMultilineDelimiter(getExpressionEnd(node, sourceFile), openParen.getStart(sourceFile), "parentheses", "function call", sourceFile);
38
- },
39
- ElementAccessExpression: (node, { sourceFile }) => {
40
- if (node.questionDotToken) return;
41
- const openBracket = findChildToken(node, ts$1.SyntaxKind.OpenBracketToken, sourceFile);
42
- if (!openBracket) return;
43
- checkMultilineDelimiter(node.expression.getEnd(), openBracket.getStart(sourceFile), "brackets", "property access", sourceFile);
44
- },
45
- TaggedTemplateExpression: (node, { sourceFile }) => {
46
- checkMultilineDelimiter(node.tag.getEnd(), node.template.getStart(sourceFile), "a template literal", "tagged template", sourceFile);
47
- }
48
- } };
49
- }
50
- });
51
- function findChildToken(node, kind, sourceFile) {
52
- for (const child of node.getChildren(sourceFile)) if (child.kind === kind) return child;
53
- }
54
- function getExpressionEnd(node, sourceFile) {
55
- return (node.typeArguments && findChildToken(node, ts$1.SyntaxKind.GreaterThanToken, sourceFile))?.getEnd() ?? node.expression.getEnd();
56
- }
57
- function getLineEndPosition(lineNumber, sourceFile) {
58
- const nextLineStart = sourceFile.getLineStarts()[lineNumber + 1];
59
- return nextLineStart === void 0 ? sourceFile.getEnd() : nextLineStart - 1;
60
- }
61
- //#endregion
62
- export { multilineAmbiguities_default as default };
63
-
64
- //# sourceMappingURL=multilineAmbiguities.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports anonymous functions and classes as the default export.";
3
- readonly id: "namedDefaultExports";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "anonymousClass" | "anonymousFunction", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=namedDefaultExports.d.ts.map
@@ -1,60 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/namedDefaultExports.ts
5
- function hasDefaultModifier(modifiers) {
6
- return modifiers?.some((mod) => mod.kind === SyntaxKind.DefaultKeyword);
7
- }
8
- function hasExportModifier(modifiers) {
9
- return modifiers?.some((mod) => mod.kind === SyntaxKind.ExportKeyword);
10
- }
11
- var namedDefaultExports_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports anonymous functions and classes as the default export.",
14
- id: "namedDefaultExports",
15
- presets: ["stylisticStrict"]
16
- },
17
- messages: {
18
- anonymousClass: {
19
- primary: "This default-exported class is missing an informative name.",
20
- secondary: ["Named default exports improve codebase searchability by ensuring consistent identifier use for a module's default export.", "When a class is anonymous, it becomes harder to find all usages and references in the codebase."],
21
- suggestions: ["Add a name to the exported class."]
22
- },
23
- anonymousFunction: {
24
- primary: "This default-exported function is missing an informative name.",
25
- secondary: ["Named default exports improve codebase searchability by ensuring consistent identifier use for a module's default export.", "When a function is anonymous, it becomes harder to find all usages and references in the codebase."],
26
- suggestions: ["Add a name to the exported function.", "Assign the arrow function to a named variable, then export it."]
27
- }
28
- },
29
- setup(context) {
30
- return { visitors: {
31
- ClassDeclaration: (node, { sourceFile }) => {
32
- if (hasExportModifier(node.modifiers) && hasDefaultModifier(node.modifiers) && !node.name) context.report({
33
- message: "anonymousClass",
34
- range: getTSNodeRange(node, sourceFile)
35
- });
36
- },
37
- ExportAssignment: (node, { sourceFile }) => {
38
- if (node.isExportEquals) return;
39
- if (ts.isArrowFunction(node.expression) || ts.isFunctionExpression(node.expression) && !node.expression.name) context.report({
40
- message: "anonymousFunction",
41
- range: getTSNodeRange(node.expression, sourceFile)
42
- });
43
- else if (ts.isClassExpression(node.expression) && !node.expression.name) context.report({
44
- message: "anonymousClass",
45
- range: getTSNodeRange(node.expression, sourceFile)
46
- });
47
- },
48
- FunctionDeclaration: (node, { sourceFile }) => {
49
- if (hasExportModifier(node.modifiers) && hasDefaultModifier(node.modifiers) && !node.name) context.report({
50
- message: "anonymousFunction",
51
- range: getTSNodeRange(node, sourceFile)
52
- });
53
- }
54
- } };
55
- }
56
- });
57
- //#endregion
58
- export { namedDefaultExports_default as default };
59
-
60
- //# sourceMappingURL=namedDefaultExports.js.map
@@ -1,14 +0,0 @@
1
- import { z } from "zod/v4";
2
- declare const _default: import("@flint.fyi/core").Rule<{
3
- readonly description: "Reports using legacy `namespace` declarations.";
4
- readonly id: "namespaceDeclarations";
5
- readonly presets: readonly ["logical", "logicalStrict"];
6
- } & {
7
- readonly pluginId: string;
8
- readonly url: string;
9
- }, "preferModules", {
10
- allowDeclarations: z.ZodDefault<z.ZodBoolean>;
11
- allowDefinitionFiles: z.ZodDefault<z.ZodBoolean>;
12
- }>;
13
- export default _default;
14
- //# sourceMappingURL=namespaceDeclarations.d.ts.map
@@ -1,37 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- import * as tsutils from "ts-api-utils";
5
- import { z } from "zod/v4";
6
- //#region src/rules/namespaceDeclarations.ts
7
- var namespaceDeclarations_default = ruleCreator.createRule(typescriptLanguage, {
8
- about: {
9
- description: "Reports using legacy `namespace` declarations.",
10
- id: "namespaceDeclarations",
11
- presets: ["logical", "logicalStrict"]
12
- },
13
- messages: { preferModules: {
14
- primary: "Prefer using ECMAScript modules over legacy TypeScript namespaces.",
15
- secondary: ["Namespaces are a legacy feature of TypeScript that can lead to confusion and are not compatible with ECMAScript modules."],
16
- suggestions: ["Modern codebases generally use `export` and `import` statements to define and use ECMAScript modules instead."]
17
- } },
18
- options: {
19
- allowDeclarations: z.boolean().default(false).describe("Whether to allow namespaces declared with the `declare` keyword."),
20
- allowDefinitionFiles: z.boolean().default(false).describe("Whether to allow namespaces in `.d.ts` and other definition files.")
21
- },
22
- setup(context) {
23
- return { visitors: { ModuleDeclaration: (node, { options: { allowDeclarations, allowDefinitionFiles }, sourceFile }) => {
24
- if (allowDefinitionFiles && sourceFile.isDeclarationFile) return;
25
- if (node.parent.kind !== SyntaxKind.SourceFile || node.name.kind !== SyntaxKind.Identifier || node.name.text === "global") return;
26
- if (allowDeclarations && tsutils.includesModifier(node.modifiers, SyntaxKind.DeclareKeyword)) return;
27
- context.report({
28
- message: "preferModules",
29
- range: getTSNodeRange(node.getChildAt(0), sourceFile)
30
- });
31
- } } };
32
- }
33
- });
34
- //#endregion
35
- export { namespaceDeclarations_default as default };
36
-
37
- //# sourceMappingURL=namespaceDeclarations.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports declared namespaces that implicitly export all members.";
3
- readonly id: "namespaceImplicitAmbientImports";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "implicitExports", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=namespaceImplicitAmbientImports.d.ts.map
@@ -1,40 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/namespaceImplicitAmbientImports.ts
5
- function hasExportModifier(node) {
6
- return !!(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === SyntaxKind.ExportKeyword));
7
- }
8
- function hasNamedExport(statements) {
9
- return statements.some((statement) => statement.kind === SyntaxKind.ExportDeclaration && statement.exportClause?.kind === SyntaxKind.NamedExports);
10
- }
11
- function hasNonExportedMember(statements) {
12
- return statements.some((statement) => !hasExportModifier(statement) && (statement.kind === SyntaxKind.TypeAliasDeclaration || statement.kind === SyntaxKind.InterfaceDeclaration || statement.kind === SyntaxKind.ClassDeclaration || statement.kind === SyntaxKind.EnumDeclaration || statement.kind === SyntaxKind.FunctionDeclaration || statement.kind === SyntaxKind.VariableStatement || statement.kind === SyntaxKind.ModuleDeclaration));
13
- }
14
- var namespaceImplicitAmbientImports_default = ruleCreator.createRule(typescriptLanguage, {
15
- about: {
16
- description: "Reports declared namespaces that implicitly export all members.",
17
- id: "namespaceImplicitAmbientImports",
18
- presets: ["stylisticStrict"]
19
- },
20
- messages: { implicitExports: {
21
- primary: "Declared namespaces without explicit exports implicitly export all members.",
22
- secondary: ["When a declared namespace has no named export statements, all its members are implicitly exported.", "This can lead to unintended exports and make it harder to understand what the namespace exposes."],
23
- suggestions: ["Add an `export {};` statement to opt out of implicit exports, then explicitly export the members you intend to expose."]
24
- } },
25
- setup(context) {
26
- return { visitors: { ModuleDeclaration: (node, { sourceFile }) => {
27
- if (!node.modifiers?.some((modifier) => modifier.kind === SyntaxKind.DeclareKeyword) || node.name.kind !== SyntaxKind.Identifier || node.body?.kind !== SyntaxKind.ModuleBlock) return;
28
- const statements = node.body.statements;
29
- if (!statements.length || hasNamedExport(statements) || !hasNonExportedMember(statements)) return;
30
- context.report({
31
- message: "implicitExports",
32
- range: getTSNodeRange(node, sourceFile)
33
- });
34
- } } };
35
- }
36
- });
37
- //#endregion
38
- export { namespaceImplicitAmbientImports_default as default };
39
-
40
- //# sourceMappingURL=namespaceImplicitAmbientImports.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using `module` keyword instead of `namespace` for TypeScript namespaces.";
3
- readonly id: "namespaceKeywords";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferNamespace", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=namespaceKeywords.d.ts.map
@@ -1,40 +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/namespaceKeywords.ts
5
- var namespaceKeywords_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using `module` keyword instead of `namespace` for TypeScript namespaces.",
8
- id: "namespaceKeywords",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferNamespace: {
12
- primary: "The `namespace` keyword is preferred over `module` for TypeScript namespaces.",
13
- secondary: [
14
- "TypeScript originally used the `module` keyword to declare internal modules (namespaces).",
15
- "The `namespace` keyword was later introduced to avoid confusion with ES6 modules.",
16
- "Using `namespace` makes it clear you are defining a TypeScript namespace, not an ES6 module."
17
- ],
18
- suggestions: ["Replace `module` with `namespace`."]
19
- } },
20
- setup(context) {
21
- return { visitors: { ModuleDeclaration: (node, { sourceFile }) => {
22
- if (node.name.kind === SyntaxKind.StringLiteral) return;
23
- const moduleKeywordToken = node.getChildren(sourceFile).find((child) => child.kind === SyntaxKind.ModuleKeyword);
24
- if (!moduleKeywordToken) return;
25
- const range = getTSNodeRange(moduleKeywordToken, sourceFile);
26
- context.report({
27
- fix: {
28
- range,
29
- text: "namespace"
30
- },
31
- message: "preferNamespace",
32
- range
33
- });
34
- } } };
35
- }
36
- });
37
- //#endregion
38
- export { namespaceKeywords_default as default };
39
-
40
- //# sourceMappingURL=namespaceKeywords.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports extending the prototype of native JavaScript objects.";
3
- readonly id: "nativeObjectExtensions";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noExtendNative", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=nativeObjectExtensions.d.ts.map
@@ -1,114 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, isGlobalDeclarationOfName, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/nativeObjectExtensions.ts
5
- const nativeConstructors = new Set([
6
- "AggregateError",
7
- "Array",
8
- "ArrayBuffer",
9
- "BigInt",
10
- "BigInt64Array",
11
- "BigUint64Array",
12
- "Boolean",
13
- "DataView",
14
- "Date",
15
- "Error",
16
- "EvalError",
17
- "FinalizationRegistry",
18
- "Float16Array",
19
- "Float32Array",
20
- "Float64Array",
21
- "Function",
22
- "Int8Array",
23
- "Int16Array",
24
- "Int32Array",
25
- "Map",
26
- "Number",
27
- "Object",
28
- "Promise",
29
- "RangeError",
30
- "ReferenceError",
31
- "RegExp",
32
- "Set",
33
- "SharedArrayBuffer",
34
- "String",
35
- "Symbol",
36
- "SyntaxError",
37
- "TypeError",
38
- "Uint8Array",
39
- "Uint8ClampedArray",
40
- "Uint16Array",
41
- "Uint32Array",
42
- "URIError",
43
- "WeakMap",
44
- "WeakRef",
45
- "WeakSet"
46
- ]);
47
- function getPrototypeObject(node) {
48
- return ts$1.isIdentifier(node.expression) && node.expression;
49
- }
50
- function isPrototypeAccess(node) {
51
- switch (node.kind) {
52
- case ts$1.SyntaxKind.ElementAccessExpression: return ts$1.isStringLiteral(node.argumentExpression) && node.argumentExpression.text === "prototype";
53
- case ts$1.SyntaxKind.PropertyAccessExpression: return node.name.text === "prototype";
54
- default: return false;
55
- }
56
- }
57
- var nativeObjectExtensions_default = ruleCreator.createRule(typescriptLanguage, {
58
- about: {
59
- description: "Reports extending the prototype of native JavaScript objects.",
60
- id: "nativeObjectExtensions",
61
- presets: ["javascript"]
62
- },
63
- messages: { noExtendNative: {
64
- primary: "Extending the {{ name }} prototype modifies built-in behavior that other code depends on.",
65
- secondary: [
66
- "Adding properties to native prototypes affects all instances of that type across the codebase.",
67
- "This can cause conflicts with other libraries that expect standard prototype behavior.",
68
- "Future ECMAScript versions may add methods with the same name, causing unexpected behavior."
69
- ],
70
- suggestions: ["Create a wrapper class or utility function instead of extending the prototype.", "Use composition rather than modifying the prototype chain."]
71
- } },
72
- setup(context) {
73
- function checkNode(node, { sourceFile, typeChecker }) {
74
- if (!isPrototypeAccess(node)) return;
75
- const objectIdentifier = getPrototypeObject(node);
76
- if (!objectIdentifier) return;
77
- const name = objectIdentifier.text;
78
- if (!nativeConstructors.has(name) || !isGlobalDeclarationOfName(objectIdentifier, name, typeChecker)) return;
79
- switch (node.parent.kind) {
80
- case ts$1.SyntaxKind.CallExpression: {
81
- if (node.parent.arguments[0] !== node) break;
82
- const callee = node.parent.expression;
83
- if (!ts$1.isPropertyAccessExpression(callee) || !ts$1.isIdentifier(callee.expression) || callee.expression.text !== "Object" || callee.name.text !== "defineProperty" && callee.name.text !== "defineProperties" || !isGlobalDeclarationOfName(callee.expression, "Object", typeChecker)) break;
84
- context.report({
85
- data: { name },
86
- message: "noExtendNative",
87
- range: getTSNodeRange(node.parent, sourceFile)
88
- });
89
- break;
90
- }
91
- case ts$1.SyntaxKind.ElementAccessExpression:
92
- case ts$1.SyntaxKind.PropertyAccessExpression: {
93
- if (node.parent.expression !== node) break;
94
- const grandparent = node.parent.parent;
95
- if (!ts$1.isBinaryExpression(grandparent) || grandparent.operatorToken.kind !== ts$1.SyntaxKind.EqualsToken || grandparent.left !== node.parent) break;
96
- context.report({
97
- data: { name },
98
- message: "noExtendNative",
99
- range: getTSNodeRange(grandparent, sourceFile)
100
- });
101
- break;
102
- }
103
- }
104
- }
105
- return { visitors: {
106
- ElementAccessExpression: checkNode,
107
- PropertyAccessExpression: checkNode
108
- } };
109
- }
110
- });
111
- //#endregion
112
- export { nativeObjectExtensions_default as default };
113
-
114
- //# sourceMappingURL=nativeObjectExtensions.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer negative index over `.length - index` for `at`, `slice`, `splice`, and similar methods.";
3
- readonly id: "negativeIndexLengthMethods";
4
- readonly presets: readonly ["stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferNegativeIndex", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=negativeIndexLengthMethods.d.ts.map
@@ -1,180 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getConstrainedTypeAtLocation } from "./utils/getConstrainedType.js";
3
- import { isTypeRecursive } from "./utils/isTypeRecursive.js";
4
- import { getTSNodeRange, hasSameTokens, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
5
- import * as ts$1 from "typescript";
6
- //#region src/rules/negativeIndexLengthMethods.ts
7
- const typedArrayNames = new Set([
8
- "BigInt64Array",
9
- "BigUint64Array",
10
- "Float32Array",
11
- "Float64Array",
12
- "Int8Array",
13
- "Int16Array",
14
- "Int32Array",
15
- "Uint8Array",
16
- "Uint8ClampedArray",
17
- "Uint16Array",
18
- "Uint32Array"
19
- ]);
20
- const methodConfigurations = new Map([
21
- ["at", {
22
- argumentIndexes: [0],
23
- supportedTypes: new Set([
24
- "Array",
25
- "String",
26
- ...typedArrayNames
27
- ])
28
- }],
29
- ["slice", {
30
- argumentIndexes: [0, 1],
31
- supportedTypes: new Set([
32
- "Array",
33
- "String",
34
- ...typedArrayNames
35
- ])
36
- }],
37
- ["splice", {
38
- argumentIndexes: [0],
39
- supportedTypes: new Set(["Array"])
40
- }],
41
- ["subarray", {
42
- argumentIndexes: [0, 1],
43
- supportedTypes: new Set(typedArrayNames)
44
- }],
45
- ["toSpliced", {
46
- argumentIndexes: [0],
47
- supportedTypes: new Set(["Array"])
48
- }],
49
- ["with", {
50
- argumentIndexes: [0],
51
- supportedTypes: new Set(["Array", ...typedArrayNames])
52
- }]
53
- ]);
54
- function getNegativeIndexLengthNode(node, target, sourceFile) {
55
- const unwrapped = unwrapParenthesizedNode(node);
56
- if (!ts$1.isBinaryExpression(unwrapped) || unwrapped.operatorToken.kind !== ts$1.SyntaxKind.MinusToken) return;
57
- const right = unwrapParenthesizedNode(unwrapped.right);
58
- if (!isPositiveNumericLiteral(right)) return;
59
- const left = unwrapParenthesizedNode(unwrapped.left);
60
- if (isLengthPropertyAccess(left, target, sourceFile)) return {
61
- binaryExpression: unwrapped,
62
- lengthNode: left,
63
- rightOperand: right
64
- };
65
- return getNegativeIndexLengthNode(unwrapped.left, target, sourceFile);
66
- }
67
- function isLengthPropertyAccess(node, target, sourceFile) {
68
- return ts$1.isPropertyAccessExpression(node) && node.name.text === "length" && hasSameTokens(node.expression, target, sourceFile);
69
- }
70
- function isPositiveNumericLiteral(node) {
71
- if (!ts$1.isNumericLiteral(node)) return false;
72
- const value = Number(node.text);
73
- return Number.isInteger(value) && value > 0;
74
- }
75
- function isSupportedType(node, typeChecker, supportedTypes) {
76
- return isTypeRecursive(getConstrainedTypeAtLocation(node, typeChecker), (constituent) => {
77
- if ((constituent.flags & ts$1.TypeFlags.Any) !== 0) return true;
78
- if (typeChecker.isArrayType(constituent) || typeChecker.isTupleType(constituent)) return supportedTypes.has("Array");
79
- const typeName = constituent.getSymbol()?.getName();
80
- if (typeName) return supportedTypes.has(typeName);
81
- if (constituent.isStringLiteral() || (constituent.flags & ts$1.TypeFlags.String) !== 0) return supportedTypes.has("String");
82
- return false;
83
- });
84
- }
85
- function isValidPrototypePattern(node, method) {
86
- if (ts$1.isArrayLiteralExpression(node) && !node.elements.length) return true;
87
- if (method === "slice" && ts$1.isStringLiteral(node) && node.text === "") return true;
88
- if (!ts$1.isPropertyAccessExpression(node) || node.name.text !== "prototype") return false;
89
- const object = node.expression;
90
- if (!ts$1.isIdentifier(object)) return false;
91
- return !!methodConfigurations.get(method)?.supportedTypes.has(object.text);
92
- }
93
- function parseCallExpression(node) {
94
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
95
- const methodName = node.expression.name.text;
96
- const receiver = node.expression.expression;
97
- if (methodConfigurations.has(methodName)) return {
98
- argumentNodes: node.arguments,
99
- method: methodName,
100
- target: receiver
101
- };
102
- if (methodName !== "call" && methodName !== "apply") return;
103
- return parsePrototypeCall(node, methodName === "apply");
104
- }
105
- function parsePrototypeCall(node, isApply) {
106
- if (!ts$1.isPropertyAccessExpression(node.expression)) return;
107
- const callee = node.expression.expression;
108
- if (!ts$1.isPropertyAccessExpression(callee)) return;
109
- const method = callee.name.text;
110
- if (!methodConfigurations.has(method)) return;
111
- const prototypeObject = callee.expression;
112
- if (!isValidPrototypePattern(prototypeObject, method)) return;
113
- const [targetArgument, ...restArguments] = node.arguments;
114
- if (!targetArgument) return;
115
- if (isApply) {
116
- const arrayArgument = restArguments[0];
117
- if (!arrayArgument || !ts$1.isArrayLiteralExpression(arrayArgument)) return;
118
- return {
119
- argumentNodes: arrayArgument.elements.filter((element) => !ts$1.isSpreadElement(element)),
120
- method,
121
- target: targetArgument
122
- };
123
- }
124
- return {
125
- argumentNodes: restArguments,
126
- method,
127
- target: targetArgument
128
- };
129
- }
130
- var negativeIndexLengthMethods_default = ruleCreator.createRule(typescriptLanguage, {
131
- about: {
132
- description: "Prefer negative index over `.length - index` for `at`, `slice`, `splice`, and similar methods.",
133
- id: "negativeIndexLengthMethods",
134
- presets: ["stylisticStrict"]
135
- },
136
- messages: { preferNegativeIndex: {
137
- primary: "Prefer using a negative index over `.length - index` for `{{ method }}`.",
138
- secondary: ["Negative indices are more concise and express the intent of accessing from the end more clearly.", "Methods like `.at()`, `.slice()`, and `.splice()` support negative indices natively."],
139
- suggestions: ["Use a negative index instead of subtracting from `.length`."]
140
- } },
141
- setup(context) {
142
- return { visitors: { CallExpression: (node, { sourceFile, typeChecker }) => {
143
- const parsed = parseCallExpression(node);
144
- if (!parsed) return;
145
- const { argumentNodes, method, target } = parsed;
146
- const methodConfiguration = methodConfigurations.get(method);
147
- if (!methodConfiguration) return;
148
- if (!isSupportedType(target, typeChecker, methodConfiguration.supportedTypes)) return;
149
- const fixableArguments = [];
150
- for (const index of methodConfiguration.argumentIndexes) {
151
- const argument = argumentNodes[index];
152
- if (!argument) continue;
153
- const info = getNegativeIndexLengthNode(argument, target, sourceFile);
154
- if (info) fixableArguments.push({
155
- argument,
156
- info
157
- });
158
- }
159
- if (!fixableArguments.length) return;
160
- context.report({
161
- data: { method },
162
- fix: fixableArguments.map(({ info }) => {
163
- return {
164
- range: {
165
- begin: info.binaryExpression.getStart(sourceFile),
166
- end: info.binaryExpression.getEnd()
167
- },
168
- text: `-${info.rightOperand.getText(sourceFile)}`
169
- };
170
- }),
171
- message: "preferNegativeIndex",
172
- range: getTSNodeRange(node, sourceFile)
173
- });
174
- } } };
175
- }
176
- });
177
- //#endregion
178
- export { negativeIndexLengthMethods_default as default };
179
-
180
- //# sourceMappingURL=negativeIndexLengthMethods.js.map
@@ -1,10 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports comparisons with -0 that may not behave as expected.";
3
- readonly id: "negativeZeroComparisons";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unexpectedNegativeZeroComparison", undefined>;
9
- export default _default;
10
- //# sourceMappingURL=negativeZeroComparisons.d.ts.map