@flint.fyi/ts 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/{lib/plugin.d.ts → dist/index.d.mts} +1 -1
  2. package/dist/index.mjs +22467 -0
  3. package/package.json +8 -7
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/plugin.js +0 -619
  7. package/lib/rules/accessorPairGroups.d.ts +0 -9
  8. package/lib/rules/accessorPairGroups.js +0 -46
  9. package/lib/rules/accessorPairTypes.d.ts +0 -9
  10. package/lib/rules/accessorPairTypes.js +0 -70
  11. package/lib/rules/accessorThisRecursion.d.ts +0 -9
  12. package/lib/rules/accessorThisRecursion.js +0 -63
  13. package/lib/rules/anyArguments.d.ts +0 -9
  14. package/lib/rules/anyArguments.js +0 -232
  15. package/lib/rules/anyAssignments.d.ts +0 -9
  16. package/lib/rules/anyAssignments.js +0 -263
  17. package/lib/rules/anyCalls.d.ts +0 -9
  18. package/lib/rules/anyCalls.js +0 -66
  19. package/lib/rules/anyMemberAccess.d.ts +0 -9
  20. package/lib/rules/anyMemberAccess.js +0 -83
  21. package/lib/rules/anyReturns.d.ts +0 -9
  22. package/lib/rules/anyReturns.js +0 -100
  23. package/lib/rules/arguments.d.ts +0 -9
  24. package/lib/rules/arguments.js +0 -36
  25. package/lib/rules/arrayCallbackReturns.d.ts +0 -9
  26. package/lib/rules/arrayCallbackReturns.js +0 -71
  27. package/lib/rules/arrayConstructors.d.ts +0 -9
  28. package/lib/rules/arrayConstructors.js +0 -45
  29. package/lib/rules/arrayDeleteUnnecessaryCounts.d.ts +0 -9
  30. package/lib/rules/arrayDeleteUnnecessaryCounts.js +0 -52
  31. package/lib/rules/arrayElementDeletions.d.ts +0 -9
  32. package/lib/rules/arrayElementDeletions.js +0 -41
  33. package/lib/rules/arrayEmptyCallbackSlots.d.ts +0 -9
  34. package/lib/rules/arrayEmptyCallbackSlots.js +0 -38
  35. package/lib/rules/arrayExistenceChecksConsistency.d.ts +0 -9
  36. package/lib/rules/arrayExistenceChecksConsistency.js +0 -84
  37. package/lib/rules/arrayFilteredFinds.d.ts +0 -9
  38. package/lib/rules/arrayFilteredFinds.js +0 -72
  39. package/lib/rules/arrayFinds.d.ts +0 -9
  40. package/lib/rules/arrayFinds.js +0 -39
  41. package/lib/rules/arrayFlatMapMethods.d.ts +0 -9
  42. package/lib/rules/arrayFlatMapMethods.js +0 -45
  43. package/lib/rules/arrayFlatMethods.d.ts +0 -9
  44. package/lib/rules/arrayFlatMethods.js +0 -81
  45. package/lib/rules/arrayFlatUnnecessaryDepths.d.ts +0 -9
  46. package/lib/rules/arrayFlatUnnecessaryDepths.js +0 -31
  47. package/lib/rules/arrayIncludes.d.ts +0 -9
  48. package/lib/rules/arrayIncludes.js +0 -51
  49. package/lib/rules/arrayIncludesMethods.d.ts +0 -9
  50. package/lib/rules/arrayIncludesMethods.js +0 -35
  51. package/lib/rules/arrayIndexOfMethods.d.ts +0 -9
  52. package/lib/rules/arrayIndexOfMethods.js +0 -49
  53. package/lib/rules/arrayLoops.d.ts +0 -9
  54. package/lib/rules/arrayLoops.js +0 -34
  55. package/lib/rules/arrayMapIdentities.d.ts +0 -9
  56. package/lib/rules/arrayMapIdentities.js +0 -72
  57. package/lib/rules/arrayMutableReverses.d.ts +0 -9
  58. package/lib/rules/arrayMutableReverses.js +0 -37
  59. package/lib/rules/arrayMutableSorts.d.ts +0 -9
  60. package/lib/rules/arrayMutableSorts.js +0 -70
  61. package/lib/rules/arrayReduceTypeArguments.d.ts +0 -9
  62. package/lib/rules/arrayReduceTypeArguments.js +0 -62
  63. package/lib/rules/arraySliceUnnecessaryEnd.d.ts +0 -9
  64. package/lib/rules/arraySliceUnnecessaryEnd.js +0 -49
  65. package/lib/rules/arraySomeMethods.d.ts +0 -9
  66. package/lib/rules/arraySomeMethods.js +0 -75
  67. package/lib/rules/arrayTernarySpreadingConsistency.d.ts +0 -9
  68. package/lib/rules/arrayTernarySpreadingConsistency.js +0 -72
  69. package/lib/rules/arrayTypes.d.ts +0 -16
  70. package/lib/rules/arrayTypes.js +0 -109
  71. package/lib/rules/arrayUnnecessaryLengthChecks.d.ts +0 -9
  72. package/lib/rules/arrayUnnecessaryLengthChecks.js +0 -95
  73. package/lib/rules/asConstAssertions.d.ts +0 -9
  74. package/lib/rules/asConstAssertions.js +0 -55
  75. package/lib/rules/assignmentOperatorShorthands.d.ts +0 -9
  76. package/lib/rules/assignmentOperatorShorthands.js +0 -45
  77. package/lib/rules/asyncFunctionAwaits.d.ts +0 -9
  78. package/lib/rules/asyncFunctionAwaits.js +0 -53
  79. package/lib/rules/asyncPromiseExecutors.d.ts +0 -9
  80. package/lib/rules/asyncPromiseExecutors.js +0 -39
  81. package/lib/rules/asyncUnnecessaryPromiseWrappers.d.ts +0 -9
  82. package/lib/rules/asyncUnnecessaryPromiseWrappers.js +0 -50
  83. package/lib/rules/atAccesses.d.ts +0 -9
  84. package/lib/rules/atAccesses.js +0 -50
  85. package/lib/rules/builtinCoercions.d.ts +0 -9
  86. package/lib/rules/builtinCoercions.js +0 -115
  87. package/lib/rules/builtinConstructorNews.d.ts +0 -9
  88. package/lib/rules/builtinConstructorNews.js +0 -87
  89. package/lib/rules/caseDeclarations.d.ts +0 -9
  90. package/lib/rules/caseDeclarations.js +0 -38
  91. package/lib/rules/caseDuplicates.d.ts +0 -9
  92. package/lib/rules/caseDuplicates.js +0 -34
  93. package/lib/rules/caseFallthroughs.d.ts +0 -9
  94. package/lib/rules/caseFallthroughs.js +0 -74
  95. package/lib/rules/catchCallbackTypes.d.ts +0 -9
  96. package/lib/rules/catchCallbackTypes.js +0 -65
  97. package/lib/rules/caughtVariableNames.d.ts +0 -9
  98. package/lib/rules/caughtVariableNames.js +0 -38
  99. package/lib/rules/chainedAssignments.d.ts +0 -9
  100. package/lib/rules/chainedAssignments.js +0 -31
  101. package/lib/rules/charAtComparisons.d.ts +0 -9
  102. package/lib/rules/charAtComparisons.js +0 -53
  103. package/lib/rules/classAssignments.d.ts +0 -9
  104. package/lib/rules/classAssignments.js +0 -27
  105. package/lib/rules/classFieldDeclarations.d.ts +0 -9
  106. package/lib/rules/classFieldDeclarations.js +0 -38
  107. package/lib/rules/classLiteralProperties.d.ts +0 -9
  108. package/lib/rules/classLiteralProperties.js +0 -43
  109. package/lib/rules/classMemberDuplicates.d.ts +0 -9
  110. package/lib/rules/classMemberDuplicates.js +0 -69
  111. package/lib/rules/classMethodsThis.d.ts +0 -13
  112. package/lib/rules/classMethodsThis.js +0 -122
  113. package/lib/rules/combinedPushes.d.ts +0 -9
  114. package/lib/rules/combinedPushes.js +0 -54
  115. package/lib/rules/consecutiveNonNullAssertions.d.ts +0 -9
  116. package/lib/rules/consecutiveNonNullAssertions.js +0 -37
  117. package/lib/rules/consoleCalls.d.ts +0 -8
  118. package/lib/rules/consoleCalls.js +0 -26
  119. package/lib/rules/constantAssignments.d.ts +0 -9
  120. package/lib/rules/constantAssignments.js +0 -39
  121. package/lib/rules/constructorGenericCalls.d.ts +0 -15
  122. package/lib/rules/constructorGenericCalls.js +0 -136
  123. package/lib/rules/constructorReturns.d.ts +0 -9
  124. package/lib/rules/constructorReturns.js +0 -39
  125. package/lib/rules/constructorSupers.d.ts +0 -9
  126. package/lib/rules/constructorSupers.js +0 -75
  127. package/lib/rules/dateConstructorClones.d.ts +0 -9
  128. package/lib/rules/dateConstructorClones.js +0 -35
  129. package/lib/rules/dateNowTimestamps.d.ts +0 -9
  130. package/lib/rules/dateNowTimestamps.js +0 -55
  131. package/lib/rules/debuggerStatements.d.ts +0 -9
  132. package/lib/rules/debuggerStatements.js +0 -31
  133. package/lib/rules/defaultCaseLast.d.ts +0 -9
  134. package/lib/rules/defaultCaseLast.js +0 -34
  135. package/lib/rules/defaultParameterLast.d.ts +0 -9
  136. package/lib/rules/defaultParameterLast.js +0 -40
  137. package/lib/rules/deprecated.d.ts +0 -9
  138. package/lib/rules/deprecated.js +0 -241
  139. package/lib/rules/destructuringConsistency.d.ts +0 -9
  140. package/lib/rules/destructuringConsistency.js +0 -104
  141. package/lib/rules/duplicateArguments.d.ts +0 -9
  142. package/lib/rules/duplicateArguments.js +0 -43
  143. package/lib/rules/dynamicDeletes.d.ts +0 -9
  144. package/lib/rules/dynamicDeletes.js +0 -35
  145. package/lib/rules/elseIfDuplicates.d.ts +0 -9
  146. package/lib/rules/elseIfDuplicates.js +0 -36
  147. package/lib/rules/elseReturns.d.ts +0 -9
  148. package/lib/rules/elseReturns.js +0 -65
  149. package/lib/rules/emptyBlocks.d.ts +0 -9
  150. package/lib/rules/emptyBlocks.js +0 -54
  151. package/lib/rules/emptyDestructures.d.ts +0 -9
  152. package/lib/rules/emptyDestructures.js +0 -32
  153. package/lib/rules/emptyEnums.d.ts +0 -9
  154. package/lib/rules/emptyEnums.js +0 -28
  155. package/lib/rules/emptyExports.d.ts +0 -9
  156. package/lib/rules/emptyExports.js +0 -58
  157. package/lib/rules/emptyFiles.d.ts +0 -9
  158. package/lib/rules/emptyFiles.js +0 -42
  159. package/lib/rules/emptyFunctions.d.ts +0 -9
  160. package/lib/rules/emptyFunctions.js +0 -59
  161. package/lib/rules/emptyModuleAttributes.d.ts +0 -9
  162. package/lib/rules/emptyModuleAttributes.js +0 -33
  163. package/lib/rules/emptyObjectTypes.d.ts +0 -9
  164. package/lib/rules/emptyObjectTypes.js +0 -45
  165. package/lib/rules/emptyStaticBlocks.d.ts +0 -9
  166. package/lib/rules/emptyStaticBlocks.js +0 -40
  167. package/lib/rules/emptyTypeParameterLists.d.ts +0 -9
  168. package/lib/rules/emptyTypeParameterLists.js +0 -29
  169. package/lib/rules/enumInitializers.d.ts +0 -9
  170. package/lib/rules/enumInitializers.js +0 -52
  171. package/lib/rules/enumMemberLiterals.d.ts +0 -9
  172. package/lib/rules/enumMemberLiterals.js +0 -37
  173. package/lib/rules/enumValueConsistency.d.ts +0 -9
  174. package/lib/rules/enumValueConsistency.js +0 -54
  175. package/lib/rules/enumValueDuplicates.d.ts +0 -9
  176. package/lib/rules/enumValueDuplicates.js +0 -43
  177. package/lib/rules/equalityOperatorNegations.d.ts +0 -8
  178. package/lib/rules/equalityOperatorNegations.js +0 -58
  179. package/lib/rules/equalityOperators.d.ts +0 -9
  180. package/lib/rules/equalityOperators.js +0 -42
  181. package/lib/rules/errorMessages.d.ts +0 -9
  182. package/lib/rules/errorMessages.js +0 -54
  183. package/lib/rules/errorSubclassProperties.d.ts +0 -9
  184. package/lib/rules/errorSubclassProperties.js +0 -142
  185. package/lib/rules/errorUnnecessaryCaptureStackTraces.d.ts +0 -9
  186. package/lib/rules/errorUnnecessaryCaptureStackTraces.js +0 -53
  187. package/lib/rules/escapeSequenceCasing.d.ts +0 -9
  188. package/lib/rules/escapeSequenceCasing.js +0 -73
  189. package/lib/rules/evals.d.ts +0 -9
  190. package/lib/rules/evals.js +0 -29
  191. package/lib/rules/evolvingVariableTypes.d.ts +0 -9
  192. package/lib/rules/evolvingVariableTypes.js +0 -31
  193. package/lib/rules/exceptionAssignments.d.ts +0 -9
  194. package/lib/rules/exceptionAssignments.js +0 -37
  195. package/lib/rules/explicitAnys.d.ts +0 -9
  196. package/lib/rules/explicitAnys.js +0 -53
  197. package/lib/rules/exponentiationOperators.d.ts +0 -9
  198. package/lib/rules/exponentiationOperators.js +0 -32
  199. package/lib/rules/exportFromImports.d.ts +0 -9
  200. package/lib/rules/exportFromImports.js +0 -117
  201. package/lib/rules/exportMutables.d.ts +0 -9
  202. package/lib/rules/exportMutables.js +0 -31
  203. package/lib/rules/exportUniqueNames.d.ts +0 -9
  204. package/lib/rules/exportUniqueNames.js +0 -63
  205. package/lib/rules/extraneousClasses.d.ts +0 -15
  206. package/lib/rules/extraneousClasses.js +0 -109
  207. package/lib/rules/fetchMethodBodies.d.ts +0 -9
  208. package/lib/rules/fetchMethodBodies.js +0 -70
  209. package/lib/rules/finallyStatementSafety.d.ts +0 -9
  210. package/lib/rules/finallyStatementSafety.js +0 -45
  211. package/lib/rules/forDirections.d.ts +0 -9
  212. package/lib/rules/forDirections.js +0 -73
  213. package/lib/rules/forInArrays.d.ts +0 -9
  214. package/lib/rules/forInArrays.js +0 -44
  215. package/lib/rules/forInGuards.d.ts +0 -8
  216. package/lib/rules/forInGuards.js +0 -42
  217. package/lib/rules/functionApplySpreads.d.ts +0 -9
  218. package/lib/rules/functionApplySpreads.js +0 -61
  219. package/lib/rules/functionAssignments.d.ts +0 -9
  220. package/lib/rules/functionAssignments.js +0 -27
  221. package/lib/rules/functionCurryingRedundancy.d.ts +0 -9
  222. package/lib/rules/functionCurryingRedundancy.js +0 -51
  223. package/lib/rules/functionDeclarationStyles.d.ts +0 -15
  224. package/lib/rules/functionDeclarationStyles.js +0 -65
  225. package/lib/rules/functionNameMatches.d.ts +0 -9
  226. package/lib/rules/functionNameMatches.js +0 -72
  227. package/lib/rules/functionNewCalls.d.ts +0 -9
  228. package/lib/rules/functionNewCalls.js +0 -40
  229. package/lib/rules/generatorFunctionYields.d.ts +0 -9
  230. package/lib/rules/generatorFunctionYields.js +0 -48
  231. package/lib/rules/getterReturns.d.ts +0 -9
  232. package/lib/rules/getterReturns.js +0 -63
  233. package/lib/rules/globalAssignments.d.ts +0 -9
  234. package/lib/rules/globalAssignments.js +0 -45
  235. package/lib/rules/globalObjectCalls.d.ts +0 -9
  236. package/lib/rules/globalObjectCalls.js +0 -40
  237. package/lib/rules/globalThisAliases.d.ts +0 -9
  238. package/lib/rules/globalThisAliases.js +0 -45
  239. package/lib/rules/impliedEvals.d.ts +0 -9
  240. package/lib/rules/impliedEvals.js +0 -128
  241. package/lib/rules/importEmptyBlocks.d.ts +0 -9
  242. package/lib/rules/importEmptyBlocks.js +0 -51
  243. package/lib/rules/importTypeSideEffects.d.ts +0 -9
  244. package/lib/rules/importTypeSideEffects.js +0 -29
  245. package/lib/rules/indexedObjectTypes.d.ts +0 -15
  246. package/lib/rules/indexedObjectTypes.js +0 -81
  247. package/lib/rules/instanceOfArrays.d.ts +0 -9
  248. package/lib/rules/instanceOfArrays.js +0 -29
  249. package/lib/rules/irregularWhitespaces.d.ts +0 -15
  250. package/lib/rules/irregularWhitespaces.js +0 -95
  251. package/lib/rules/isNaNComparisons.d.ts +0 -9
  252. package/lib/rules/isNaNComparisons.js +0 -41
  253. package/lib/rules/literalConstructorWrappers.d.ts +0 -9
  254. package/lib/rules/literalConstructorWrappers.js +0 -62
  255. package/lib/rules/mathMethods.d.ts +0 -9
  256. package/lib/rules/mathMethods.js +0 -126
  257. package/lib/rules/meaninglessVoidOperators.d.ts +0 -9
  258. package/lib/rules/meaninglessVoidOperators.js +0 -37
  259. package/lib/rules/misleadingVoidExpressions.d.ts +0 -9
  260. package/lib/rules/misleadingVoidExpressions.js +0 -126
  261. package/lib/rules/moduleSpecifierLists.d.ts +0 -9
  262. package/lib/rules/moduleSpecifierLists.js +0 -90
  263. package/lib/rules/multilineAmbiguities.d.ts +0 -9
  264. package/lib/rules/multilineAmbiguities.js +0 -62
  265. package/lib/rules/namedDefaultExports.d.ts +0 -9
  266. package/lib/rules/namedDefaultExports.js +0 -58
  267. package/lib/rules/namespaceDeclarations.d.ts +0 -13
  268. package/lib/rules/namespaceDeclarations.js +0 -35
  269. package/lib/rules/namespaceImplicitAmbientImports.d.ts +0 -9
  270. package/lib/rules/namespaceImplicitAmbientImports.js +0 -38
  271. package/lib/rules/namespaceKeywords.d.ts +0 -9
  272. package/lib/rules/namespaceKeywords.js +0 -38
  273. package/lib/rules/nativeObjectExtensions.d.ts +0 -9
  274. package/lib/rules/nativeObjectExtensions.js +0 -112
  275. package/lib/rules/negativeIndexLengthMethods.d.ts +0 -9
  276. package/lib/rules/negativeIndexLengthMethods.js +0 -178
  277. package/lib/rules/negativeZeroComparisons.d.ts +0 -9
  278. package/lib/rules/negativeZeroComparisons.js +0 -46
  279. package/lib/rules/nestedStandaloneIfs.d.ts +0 -9
  280. package/lib/rules/nestedStandaloneIfs.js +0 -103
  281. package/lib/rules/newDefinitions.d.ts +0 -9
  282. package/lib/rules/newDefinitions.js +0 -82
  283. package/lib/rules/newExpressions.d.ts +0 -9
  284. package/lib/rules/newExpressions.js +0 -36
  285. package/lib/rules/newNativeNonConstructors.d.ts +0 -9
  286. package/lib/rules/newNativeNonConstructors.js +0 -37
  287. package/lib/rules/nonNullAssertedNullishCoalesces.d.ts +0 -9
  288. package/lib/rules/nonNullAssertedNullishCoalesces.js +0 -61
  289. package/lib/rules/nonNullAssertedOptionalChains.d.ts +0 -9
  290. package/lib/rules/nonNullAssertedOptionalChains.js +0 -67
  291. package/lib/rules/nonNullAssertionPlacement.d.ts +0 -9
  292. package/lib/rules/nonNullAssertionPlacement.js +0 -92
  293. package/lib/rules/nonNullableTypeAssertions.d.ts +0 -9
  294. package/lib/rules/nonNullableTypeAssertions.js +0 -76
  295. package/lib/rules/nonOctalDecimalEscapes.d.ts +0 -9
  296. package/lib/rules/nonOctalDecimalEscapes.js +0 -46
  297. package/lib/rules/nullishCheckStyle.d.ts +0 -20
  298. package/lib/rules/nullishCheckStyle.js +0 -142
  299. package/lib/rules/nullishCoalescingOperators.d.ts +0 -21
  300. package/lib/rules/nullishCoalescingOperators.js +0 -321
  301. package/lib/rules/numberMethodRanges.d.ts +0 -9
  302. package/lib/rules/numberMethodRanges.js +0 -72
  303. package/lib/rules/numberStaticMethods.d.ts +0 -9
  304. package/lib/rules/numberStaticMethods.js +0 -51
  305. package/lib/rules/numericErasingOperations.d.ts +0 -9
  306. package/lib/rules/numericErasingOperations.js +0 -44
  307. package/lib/rules/numericLiteralParsing.d.ts +0 -9
  308. package/lib/rules/numericLiteralParsing.js +0 -55
  309. package/lib/rules/numericPrecision.d.ts +0 -9
  310. package/lib/rules/numericPrecision.js +0 -100
  311. package/lib/rules/numericSeparatorGroups.d.ts +0 -9
  312. package/lib/rules/numericSeparatorGroups.js +0 -99
  313. package/lib/rules/objectAssignSpreads.d.ts +0 -9
  314. package/lib/rules/objectAssignSpreads.js +0 -51
  315. package/lib/rules/objectCalls.d.ts +0 -9
  316. package/lib/rules/objectCalls.js +0 -36
  317. package/lib/rules/objectEntriesMethods.d.ts +0 -9
  318. package/lib/rules/objectEntriesMethods.js +0 -80
  319. package/lib/rules/objectHasOwns.d.ts +0 -9
  320. package/lib/rules/objectHasOwns.js +0 -48
  321. package/lib/rules/objectKeyDuplicates.d.ts +0 -9
  322. package/lib/rules/objectKeyDuplicates.js +0 -61
  323. package/lib/rules/objectProto.d.ts +0 -9
  324. package/lib/rules/objectProto.js +0 -48
  325. package/lib/rules/objectPrototypeBuiltIns.d.ts +0 -9
  326. package/lib/rules/objectPrototypeBuiltIns.js +0 -52
  327. package/lib/rules/objectShorthand.d.ts +0 -9
  328. package/lib/rules/objectShorthand.js +0 -82
  329. package/lib/rules/objectSpreadUnnecessaryFallbacks.d.ts +0 -9
  330. package/lib/rules/objectSpreadUnnecessaryFallbacks.js +0 -41
  331. package/lib/rules/objectTypeDefinitions.d.ts +0 -9
  332. package/lib/rules/objectTypeDefinitions.js +0 -32
  333. package/lib/rules/octalEscapes.d.ts +0 -9
  334. package/lib/rules/octalEscapes.js +0 -56
  335. package/lib/rules/octalNumbers.d.ts +0 -9
  336. package/lib/rules/octalNumbers.js +0 -53
  337. package/lib/rules/operatorAssignmentShorthand.d.ts +0 -9
  338. package/lib/rules/operatorAssignmentShorthand.js +0 -75
  339. package/lib/rules/overloadSignaturesAdjacent.d.ts +0 -9
  340. package/lib/rules/overloadSignaturesAdjacent.js +0 -138
  341. package/lib/rules/parameterReassignments.d.ts +0 -9
  342. package/lib/rules/parameterReassignments.js +0 -43
  343. package/lib/rules/parseIntRadixes.d.ts +0 -9
  344. package/lib/rules/parseIntRadixes.js +0 -57
  345. package/lib/rules/propertyAccessNotation.d.ts +0 -12
  346. package/lib/rules/propertyAccessNotation.js +0 -117
  347. package/lib/rules/recursionOnlyArguments.d.ts +0 -9
  348. package/lib/rules/recursionOnlyArguments.js +0 -62
  349. package/lib/rules/redundantTypeConstituents.d.ts +0 -9
  350. package/lib/rules/redundantTypeConstituents.js +0 -275
  351. package/lib/rules/regexAllGlobalFlags.d.ts +0 -9
  352. package/lib/rules/regexAllGlobalFlags.js +0 -54
  353. package/lib/rules/regexAmbiguousInvalidity.d.ts +0 -9
  354. package/lib/rules/regexAmbiguousInvalidity.js +0 -295
  355. package/lib/rules/regexCharacterClassRanges.d.ts +0 -9
  356. package/lib/rules/regexCharacterClassRanges.js +0 -135
  357. package/lib/rules/regexCharacterClassSetOperations.d.ts +0 -9
  358. package/lib/rules/regexCharacterClassSetOperations.js +0 -79
  359. package/lib/rules/regexCharacterClasses.d.ts +0 -9
  360. package/lib/rules/regexCharacterClasses.js +0 -232
  361. package/lib/rules/regexConciseCharacterClassNegations.d.ts +0 -9
  362. package/lib/rules/regexConciseCharacterClassNegations.js +0 -50
  363. package/lib/rules/regexContradictoryAssertions.d.ts +0 -9
  364. package/lib/rules/regexContradictoryAssertions.js +0 -208
  365. package/lib/rules/regexControlCharacterEscapes.d.ts +0 -9
  366. package/lib/rules/regexControlCharacterEscapes.js +0 -128
  367. package/lib/rules/regexControlCharacters.d.ts +0 -9
  368. package/lib/rules/regexControlCharacters.js +0 -93
  369. package/lib/rules/regexDigitMatchers.d.ts +0 -9
  370. package/lib/rules/regexDigitMatchers.js +0 -178
  371. package/lib/rules/regexDollarEscapes.d.ts +0 -9
  372. package/lib/rules/regexDollarEscapes.js +0 -89
  373. package/lib/rules/regexDuplicateCharacterClassCharacters.d.ts +0 -9
  374. package/lib/rules/regexDuplicateCharacterClassCharacters.js +0 -126
  375. package/lib/rules/regexEmptyAlternatives.d.ts +0 -9
  376. package/lib/rules/regexEmptyAlternatives.js +0 -138
  377. package/lib/rules/regexEmptyCapturingGroups.d.ts +0 -9
  378. package/lib/rules/regexEmptyCapturingGroups.js +0 -65
  379. package/lib/rules/regexEmptyCharacterClasses.d.ts +0 -9
  380. package/lib/rules/regexEmptyCharacterClasses.js +0 -66
  381. package/lib/rules/regexEmptyGroups.d.ts +0 -9
  382. package/lib/rules/regexEmptyGroups.js +0 -64
  383. package/lib/rules/regexEmptyLazyQuantifiers.d.ts +0 -9
  384. package/lib/rules/regexEmptyLazyQuantifiers.js +0 -90
  385. package/lib/rules/regexEmptyLookaroundsAssertions.d.ts +0 -9
  386. package/lib/rules/regexEmptyLookaroundsAssertions.js +0 -66
  387. package/lib/rules/regexEmptyStringLiterals.d.ts +0 -9
  388. package/lib/rules/regexEmptyStringLiterals.js +0 -64
  389. package/lib/rules/regexEscapeBackspaces.d.ts +0 -9
  390. package/lib/rules/regexEscapeBackspaces.js +0 -67
  391. package/lib/rules/regexExecutors.d.ts +0 -9
  392. package/lib/rules/regexExecutors.js +0 -56
  393. package/lib/rules/regexGraphemeStringLiterals.d.ts +0 -9
  394. package/lib/rules/regexGraphemeStringLiterals.js +0 -49
  395. package/lib/rules/regexHexadecimalEscapes.d.ts +0 -9
  396. package/lib/rules/regexHexadecimalEscapes.js +0 -69
  397. package/lib/rules/regexIgnoreCaseFlags.d.ts +0 -9
  398. package/lib/rules/regexIgnoreCaseFlags.js +0 -143
  399. package/lib/rules/regexInvisibleCharacters.d.ts +0 -9
  400. package/lib/rules/regexInvisibleCharacters.js +0 -88
  401. package/lib/rules/regexLetterCasing.d.ts +0 -9
  402. package/lib/rules/regexLetterCasing.js +0 -184
  403. package/lib/rules/regexLiterals.d.ts +0 -9
  404. package/lib/rules/regexLiterals.js +0 -87
  405. package/lib/rules/regexLookaroundAssertions.d.ts +0 -9
  406. package/lib/rules/regexLookaroundAssertions.js +0 -161
  407. package/lib/rules/regexLookaroundQuantifierOptimizations.d.ts +0 -9
  408. package/lib/rules/regexLookaroundQuantifierOptimizations.js +0 -92
  409. package/lib/rules/regexMatchNotation.d.ts +0 -9
  410. package/lib/rules/regexMatchNotation.js +0 -137
  411. package/lib/rules/regexMisleadingCapturingGroups.d.ts +0 -9
  412. package/lib/rules/regexMisleadingCapturingGroups.js +0 -227
  413. package/lib/rules/regexMisleadingQuantifiers.d.ts +0 -9
  414. package/lib/rules/regexMisleadingQuantifiers.js +0 -76
  415. package/lib/rules/regexMisleadingUnicodeCharacters.d.ts +0 -9
  416. package/lib/rules/regexMisleadingUnicodeCharacters.js +0 -201
  417. package/lib/rules/regexNamedBackreferences.d.ts +0 -9
  418. package/lib/rules/regexNamedBackreferences.js +0 -46
  419. package/lib/rules/regexNamedCaptureGroups.d.ts +0 -8
  420. package/lib/rules/regexNamedCaptureGroups.js +0 -65
  421. package/lib/rules/regexNamedReplacements.d.ts +0 -9
  422. package/lib/rules/regexNamedReplacements.js +0 -91
  423. package/lib/rules/regexNonStandardFlags.d.ts +0 -9
  424. package/lib/rules/regexNonStandardFlags.js +0 -64
  425. package/lib/rules/regexObscureRanges.d.ts +0 -9
  426. package/lib/rules/regexObscureRanges.js +0 -91
  427. package/lib/rules/regexOctalEscapes.d.ts +0 -9
  428. package/lib/rules/regexOctalEscapes.js +0 -68
  429. package/lib/rules/regexPlusQuantifiers.d.ts +0 -9
  430. package/lib/rules/regexPlusQuantifiers.js +0 -66
  431. package/lib/rules/regexPredefinedAssertions.d.ts +0 -9
  432. package/lib/rules/regexPredefinedAssertions.js +0 -125
  433. package/lib/rules/regexQuestionQuantifiers.d.ts +0 -9
  434. package/lib/rules/regexQuestionQuantifiers.js +0 -102
  435. package/lib/rules/regexRepeatQuantifiers.d.ts +0 -9
  436. package/lib/rules/regexRepeatQuantifiers.js +0 -94
  437. package/lib/rules/regexResultArrayGroups.d.ts +0 -9
  438. package/lib/rules/regexResultArrayGroups.js +0 -185
  439. package/lib/rules/regexSetOperationOptimizations.d.ts +0 -9
  440. package/lib/rules/regexSetOperationOptimizations.js +0 -175
  441. package/lib/rules/regexStandaloneBackslashes.d.ts +0 -9
  442. package/lib/rules/regexStandaloneBackslashes.js +0 -57
  443. package/lib/rules/regexStarQuantifiers.d.ts +0 -9
  444. package/lib/rules/regexStarQuantifiers.js +0 -66
  445. package/lib/rules/regexSuperLinearBacktracking.d.ts +0 -9
  446. package/lib/rules/regexSuperLinearBacktracking.js +0 -96
  447. package/lib/rules/regexSuperLinearMoves.d.ts +0 -9
  448. package/lib/rules/regexSuperLinearMoves.js +0 -140
  449. package/lib/rules/regexTestMethods.d.ts +0 -9
  450. package/lib/rules/regexTestMethods.js +0 -81
  451. package/lib/rules/regexUnicodeCodepointEscapes.d.ts +0 -9
  452. package/lib/rules/regexUnicodeCodepointEscapes.js +0 -105
  453. package/lib/rules/regexUnicodeEscapes.d.ts +0 -8
  454. package/lib/rules/regexUnicodeEscapes.js +0 -95
  455. package/lib/rules/regexUnicodeFlag.d.ts +0 -8
  456. package/lib/rules/regexUnicodeFlag.js +0 -95
  457. package/lib/rules/regexUnicodeProperties.d.ts +0 -9
  458. package/lib/rules/regexUnicodeProperties.js +0 -131
  459. package/lib/rules/regexUnnecessaryAssertions.d.ts +0 -9
  460. package/lib/rules/regexUnnecessaryAssertions.js +0 -221
  461. package/lib/rules/regexUnnecessaryBackreferences.d.ts +0 -9
  462. package/lib/rules/regexUnnecessaryBackreferences.js +0 -123
  463. package/lib/rules/regexUnnecessaryCharacterClasses.d.ts +0 -9
  464. package/lib/rules/regexUnnecessaryCharacterClasses.js +0 -72
  465. package/lib/rules/regexUnnecessaryCharacterRanges.d.ts +0 -9
  466. package/lib/rules/regexUnnecessaryCharacterRanges.js +0 -106
  467. package/lib/rules/regexUnnecessaryDisjunctions.d.ts +0 -9
  468. package/lib/rules/regexUnnecessaryDisjunctions.js +0 -116
  469. package/lib/rules/regexUnnecessaryDollarReplacements.d.ts +0 -9
  470. package/lib/rules/regexUnnecessaryDollarReplacements.js +0 -142
  471. package/lib/rules/regexUnnecessaryEscapes.d.ts +0 -9
  472. package/lib/rules/regexUnnecessaryEscapes.js +0 -134
  473. package/lib/rules/regexUnnecessaryLookaroundAssertions.d.ts +0 -9
  474. package/lib/rules/regexUnnecessaryLookaroundAssertions.js +0 -78
  475. package/lib/rules/regexUnnecessaryNestedAssertions.d.ts +0 -9
  476. package/lib/rules/regexUnnecessaryNestedAssertions.js +0 -196
  477. package/lib/rules/regexUnnecessaryNestedQuantifiers.d.ts +0 -9
  478. package/lib/rules/regexUnnecessaryNestedQuantifiers.js +0 -91
  479. package/lib/rules/regexUnnecessaryNonCapturingGroups.d.ts +0 -9
  480. package/lib/rules/regexUnnecessaryNonCapturingGroups.js +0 -102
  481. package/lib/rules/regexUnnecessaryNumericQuantifiers.d.ts +0 -9
  482. package/lib/rules/regexUnnecessaryNumericQuantifiers.js +0 -67
  483. package/lib/rules/regexUnnecessaryOptionalAssertions.d.ts +0 -9
  484. package/lib/rules/regexUnnecessaryOptionalAssertions.js +0 -135
  485. package/lib/rules/regexUnnecessaryReferentialBackreferences.d.ts +0 -9
  486. package/lib/rules/regexUnnecessaryReferentialBackreferences.js +0 -121
  487. package/lib/rules/regexUnnecessarySetOperands.d.ts +0 -9
  488. package/lib/rules/regexUnnecessarySetOperands.js +0 -134
  489. package/lib/rules/regexUnusedCapturingGroups.d.ts +0 -9
  490. package/lib/rules/regexUnusedCapturingGroups.js +0 -67
  491. package/lib/rules/regexUnusedFlags.d.ts +0 -9
  492. package/lib/rules/regexUnusedFlags.js +0 -114
  493. package/lib/rules/regexUnusedLazyQuantifiers.d.ts +0 -9
  494. package/lib/rules/regexUnusedLazyQuantifiers.js +0 -61
  495. package/lib/rules/regexUnusedQuantifiers.d.ts +0 -9
  496. package/lib/rules/regexUnusedQuantifiers.js +0 -61
  497. package/lib/rules/regexValidity.d.ts +0 -9
  498. package/lib/rules/regexValidity.js +0 -144
  499. package/lib/rules/regexWordMatchers.d.ts +0 -9
  500. package/lib/rules/regexWordMatchers.js +0 -144
  501. package/lib/rules/regexZeroQuantifiers.d.ts +0 -9
  502. package/lib/rules/regexZeroQuantifiers.js +0 -58
  503. package/lib/rules/requireImports.d.ts +0 -9
  504. package/lib/rules/requireImports.js +0 -46
  505. package/lib/rules/responseJsonMethods.d.ts +0 -9
  506. package/lib/rules/responseJsonMethods.js +0 -49
  507. package/lib/rules/restrictedIdentifiers.d.ts +0 -12
  508. package/lib/rules/restrictedIdentifiers.js +0 -39
  509. package/lib/rules/restrictedImports.d.ts +0 -26
  510. package/lib/rules/restrictedImports.js +0 -164
  511. package/lib/rules/returnAssignments.d.ts +0 -9
  512. package/lib/rules/returnAssignments.js +0 -36
  513. package/lib/rules/returnThisTypes.d.ts +0 -9
  514. package/lib/rules/returnThisTypes.js +0 -92
  515. package/lib/rules/ruleCreator.d.ts +0 -2
  516. package/lib/rules/ruleCreator.js +0 -15
  517. package/lib/rules/selfAssignments.d.ts +0 -9
  518. package/lib/rules/selfAssignments.js +0 -27
  519. package/lib/rules/sequences.d.ts +0 -9
  520. package/lib/rules/sequences.js +0 -26
  521. package/lib/rules/setSizeLengthChecks.d.ts +0 -9
  522. package/lib/rules/setSizeLengthChecks.js +0 -46
  523. package/lib/rules/setterReturns.d.ts +0 -9
  524. package/lib/rules/setterReturns.js +0 -39
  525. package/lib/rules/shadowedRestrictedNames.d.ts +0 -9
  526. package/lib/rules/shadowedRestrictedNames.js +0 -66
  527. package/lib/rules/singleVariableDeclarations.d.ts +0 -9
  528. package/lib/rules/singleVariableDeclarations.js +0 -34
  529. package/lib/rules/sizeComparisonOperators.d.ts +0 -15
  530. package/lib/rules/sizeComparisonOperators.js +0 -146
  531. package/lib/rules/sparseArrays.d.ts +0 -9
  532. package/lib/rules/sparseArrays.js +0 -41
  533. package/lib/rules/staticMemberOnlyClasses.d.ts +0 -9
  534. package/lib/rules/staticMemberOnlyClasses.js +0 -75
  535. package/lib/rules/stringCaseMismatches.d.ts +0 -9
  536. package/lib/rules/stringCaseMismatches.js +0 -53
  537. package/lib/rules/stringCodePoints.d.ts +0 -9
  538. package/lib/rules/stringCodePoints.js +0 -48
  539. package/lib/rules/stringSliceMethods.d.ts +0 -9
  540. package/lib/rules/stringSliceMethods.js +0 -45
  541. package/lib/rules/stringStartsEndsWith.d.ts +0 -9
  542. package/lib/rules/stringStartsEndsWith.js +0 -77
  543. package/lib/rules/structuredCloneMethods.d.ts +0 -9
  544. package/lib/rules/structuredCloneMethods.js +0 -37
  545. package/lib/rules/symbolDescriptions.d.ts +0 -9
  546. package/lib/rules/symbolDescriptions.js +0 -30
  547. package/lib/rules/thisAliases.d.ts +0 -9
  548. package/lib/rules/thisAliases.js +0 -42
  549. package/lib/rules/thisBeforeSuper.d.ts +0 -9
  550. package/lib/rules/thisBeforeSuper.js +0 -84
  551. package/lib/rules/throwErrors.d.ts +0 -9
  552. package/lib/rules/throwErrors.js +0 -59
  553. package/lib/rules/topLevelAwaits.d.ts +0 -9
  554. package/lib/rules/topLevelAwaits.js +0 -47
  555. package/lib/rules/tripleSlashReferenceValidity.d.ts +0 -9
  556. package/lib/rules/tripleSlashReferenceValidity.js +0 -52
  557. package/lib/rules/tripleSlashReferences.d.ts +0 -9
  558. package/lib/rules/tripleSlashReferences.js +0 -32
  559. package/lib/rules/tsComments.d.ts +0 -21
  560. package/lib/rules/tsComments.js +0 -128
  561. package/lib/rules/tslintComments.d.ts +0 -9
  562. package/lib/rules/tslintComments.js +0 -34
  563. package/lib/rules/typeAssertionStyles.d.ts +0 -9
  564. package/lib/rules/typeAssertionStyles.js +0 -30
  565. package/lib/rules/typeImports.d.ts +0 -19
  566. package/lib/rules/typeImports.js +0 -281
  567. package/lib/rules/typeofComparisons.d.ts +0 -9
  568. package/lib/rules/typeofComparisons.js +0 -53
  569. package/lib/rules/unassignedVariables.d.ts +0 -9
  570. package/lib/rules/unassignedVariables.js +0 -32
  571. package/lib/rules/undefinedTypeofChecks.d.ts +0 -9
  572. package/lib/rules/undefinedTypeofChecks.js +0 -39
  573. package/lib/rules/undefinedVariables.d.ts +0 -9
  574. package/lib/rules/undefinedVariables.js +0 -37
  575. package/lib/rules/unicodeBOMs.d.ts +0 -9
  576. package/lib/rules/unicodeBOMs.js +0 -37
  577. package/lib/rules/unnecessaryBinds.d.ts +0 -9
  578. package/lib/rules/unnecessaryBinds.js +0 -76
  579. package/lib/rules/unnecessaryBlocks.d.ts +0 -9
  580. package/lib/rules/unnecessaryBlocks.js +0 -58
  581. package/lib/rules/unnecessaryBooleanCasts.d.ts +0 -9
  582. package/lib/rules/unnecessaryBooleanCasts.js +0 -56
  583. package/lib/rules/unnecessaryCatches.d.ts +0 -9
  584. package/lib/rules/unnecessaryCatches.js +0 -46
  585. package/lib/rules/unnecessaryComparisons.d.ts +0 -9
  586. package/lib/rules/unnecessaryComparisons.js +0 -291
  587. package/lib/rules/unnecessaryConcatenation.d.ts +0 -9
  588. package/lib/rules/unnecessaryConcatenation.js +0 -26
  589. package/lib/rules/unnecessaryEscapes.d.ts +0 -9
  590. package/lib/rules/unnecessaryEscapes.js +0 -132
  591. package/lib/rules/unnecessaryMathClamps.d.ts +0 -9
  592. package/lib/rules/unnecessaryMathClamps.js +0 -106
  593. package/lib/rules/unnecessaryNumericFractions.d.ts +0 -9
  594. package/lib/rules/unnecessaryNumericFractions.js +0 -48
  595. package/lib/rules/unnecessaryRenames.d.ts +0 -9
  596. package/lib/rules/unnecessaryRenames.js +0 -90
  597. package/lib/rules/unnecessaryTernaries.d.ts +0 -9
  598. package/lib/rules/unnecessaryTernaries.js +0 -86
  599. package/lib/rules/unnecessaryUseStricts.d.ts +0 -9
  600. package/lib/rules/unnecessaryUseStricts.js +0 -38
  601. package/lib/rules/unsafeNegations.d.ts +0 -9
  602. package/lib/rules/unsafeNegations.js +0 -36
  603. package/lib/rules/utils/collectAccessorPairs.d.ts +0 -11
  604. package/lib/rules/utils/collectAccessorPairs.js +0 -27
  605. package/lib/rules/utils/countCommentsInRange.d.ts +0 -2
  606. package/lib/rules/utils/countCommentsInRange.js +0 -10
  607. package/lib/rules/utils/discriminateAnyType.d.ts +0 -15
  608. package/lib/rules/utils/discriminateAnyType.js +0 -36
  609. package/lib/rules/utils/equalityOperators.d.ts +0 -8
  610. package/lib/rules/utils/equalityOperators.js +0 -34
  611. package/lib/rules/utils/forEachReturnStatement.d.ts +0 -2
  612. package/lib/rules/utils/forEachReturnStatement.js +0 -27
  613. package/lib/rules/utils/formatReportedType.d.ts +0 -3
  614. package/lib/rules/utils/formatReportedType.js +0 -7
  615. package/lib/rules/utils/getConstrainedType.d.ts +0 -2
  616. package/lib/rules/utils/getConstrainedType.js +0 -7
  617. package/lib/rules/utils/getFunctionName.d.ts +0 -2
  618. package/lib/rules/utils/getFunctionName.js +0 -14
  619. package/lib/rules/utils/getRegExpConstruction.d.ts +0 -8
  620. package/lib/rules/utils/getRegExpConstruction.js +0 -25
  621. package/lib/rules/utils/getRegExpLiteralDetails.d.ts +0 -6
  622. package/lib/rules/utils/getRegExpLiteralDetails.js +0 -11
  623. package/lib/rules/utils/getThisExpression.d.ts +0 -2
  624. package/lib/rules/utils/getThisExpression.js +0 -14
  625. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.d.ts +0 -2
  626. package/lib/rules/utils/isArrayOrTupleTypeAtLocation.js +0 -11
  627. package/lib/rules/utils/isBuiltinSymbolLike.d.ts +0 -2
  628. package/lib/rules/utils/isBuiltinSymbolLike.js +0 -31
  629. package/lib/rules/utils/isDirectEqualityCheck.d.ts +0 -3
  630. package/lib/rules/utils/isDirectEqualityCheck.js +0 -27
  631. package/lib/rules/utils/isErrorSubclass.d.ts +0 -3
  632. package/lib/rules/utils/isErrorSubclass.js +0 -25
  633. package/lib/rules/utils/isInBooleanContext.d.ts +0 -2
  634. package/lib/rules/utils/isInBooleanContext.js +0 -20
  635. package/lib/rules/utils/isTypeRecursive.d.ts +0 -2
  636. package/lib/rules/utils/isTypeRecursive.js +0 -6
  637. package/lib/rules/utils/isUnsafeAssignment.d.ts +0 -14
  638. package/lib/rules/utils/isUnsafeAssignment.js +0 -43
  639. package/lib/rules/utils/operators.d.ts +0 -4
  640. package/lib/rules/utils/operators.js +0 -33
  641. package/lib/rules/utils/parseRegexpAst.d.ts +0 -1
  642. package/lib/rules/utils/parseRegexpAst.js +0 -15
  643. package/lib/rules/utils/parseRegexpAstFull.d.ts +0 -2
  644. package/lib/rules/utils/parseRegexpAstFull.js +0 -16
  645. package/lib/rules/utils/skipParentheses.d.ts +0 -2
  646. package/lib/rules/utils/skipParentheses.js +0 -8
  647. package/lib/rules/variableDeletions.d.ts +0 -9
  648. package/lib/rules/variableDeletions.js +0 -33
  649. package/lib/rules/voidOperator.d.ts +0 -9
  650. package/lib/rules/voidOperator.js +0 -32
  651. package/lib/rules/withStatements.d.ts +0 -9
  652. package/lib/rules/withStatements.js +0 -28
  653. package/lib/rules/wrapperObjects.d.ts +0 -9
  654. package/lib/rules/wrapperObjects.js +0 -34
  655. package/lib/type-utils/getSpecifierNames.d.ts +0 -2
  656. package/lib/type-utils/getSpecifierNames.js +0 -7
  657. package/lib/type-utils/isDeclaredInModuleBlock.d.ts +0 -2
  658. package/lib/type-utils/isDeclaredInModuleBlock.js +0 -12
  659. package/lib/type-utils/isFromFile.d.ts +0 -2
  660. package/lib/type-utils/isFromFile.js +0 -11
  661. package/lib/type-utils/isFromPackage.d.ts +0 -2
  662. package/lib/type-utils/isFromPackage.js +0 -13
  663. package/lib/type-utils/matchesSpecifier.d.ts +0 -3
  664. package/lib/type-utils/matchesSpecifier.js +0 -18
  665. package/lib/type-utils/schemas.d.ts +0 -14
  666. package/lib/type-utils/schemas.js +0 -23
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports unnecessary duplicate keys that override previous values.";
3
- readonly id: "objectKeyDuplicates";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "duplicateKey", undefined>;
9
- export default _default;
@@ -1,61 +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/objectKeyDuplicates.ts
5
- var objectKeyDuplicates_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports unnecessary duplicate keys that override previous values.",
8
- id: "objectKeyDuplicates",
9
- presets: ["javascript"]
10
- },
11
- messages: { duplicateKey: {
12
- primary: "This key is made redundant by an identical key later in the object.",
13
- secondary: [
14
- "Duplicate object keys are legal in JavaScript, but they can lead to unexpected behavior.",
15
- "When duplicate keys exist, only the last value for a given key is used.",
16
- "This can cause confusion and bugs, especially when maintaining the code."
17
- ],
18
- suggestions: ["If both values are meant to exist, change one of the keys to be different.", "If only the last value is meant to exist, remove any prior values."]
19
- } },
20
- setup(context) {
21
- return { visitors: { ObjectLiteralExpression(node, { sourceFile }) {
22
- const seenKeys = {
23
- getters: /* @__PURE__ */ new Map(),
24
- setters: /* @__PURE__ */ new Map(),
25
- values: /* @__PURE__ */ new Map()
26
- };
27
- for (const property of node.properties.toReversed()) {
28
- const key = getPropertyKeyName(property);
29
- if (!key) continue;
30
- if (seenKeys[key.group].get(key.text)) context.report({
31
- message: "duplicateKey",
32
- range: getTSNodeRange(key.node, sourceFile)
33
- });
34
- seenKeys[key.group].set(key.text, property);
35
- }
36
- } } };
37
- }
38
- });
39
- function getNameText(name) {
40
- if (name.kind === SyntaxKind.Identifier || name.kind === SyntaxKind.NumericLiteral || name.kind === SyntaxKind.BigIntLiteral || name.kind === SyntaxKind.StringLiteral || name.kind === SyntaxKind.NoSubstitutionTemplateLiteral) return name.text;
41
- if (name.kind === SyntaxKind.PrivateIdentifier) return `#${name.text}`;
42
- }
43
- function getPropertyKeyName(property) {
44
- if (property.kind === SyntaxKind.ShorthandPropertyAssignment) return {
45
- group: "values",
46
- node: property.name,
47
- text: property.name.text
48
- };
49
- if (property.kind === SyntaxKind.PropertyAssignment || property.kind === SyntaxKind.MethodDeclaration || property.kind === SyntaxKind.GetAccessor || property.kind === SyntaxKind.SetAccessor) {
50
- const { name } = property;
51
- const text = getNameText(name);
52
- if (!text) return;
53
- return {
54
- group: property.kind === SyntaxKind.GetAccessor ? "getters" : property.kind === SyntaxKind.SetAccessor ? "setters" : "values",
55
- node: name,
56
- text
57
- };
58
- }
59
- }
60
- //#endregion
61
- export { objectKeyDuplicates_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using the deprecated __proto__ property to access or modify an object's prototype.";
3
- readonly id: "objectProto";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noProto", undefined>;
9
- export default _default;
@@ -1,48 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- //#region src/rules/objectProto.ts
5
- var objectProto_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using the deprecated __proto__ property to access or modify an object's prototype.",
8
- id: "objectProto",
9
- presets: ["javascript"]
10
- },
11
- messages: { noProto: {
12
- primary: "Use Object.getPrototypeOf or Object.setPrototypeOf instead of the deprecated __proto__ property.",
13
- secondary: [
14
- "The __proto__ property is deprecated and not part of the ECMAScript standard.",
15
- "It is maintained for compatibility with older browsers but can cause performance issues and unexpected behavior.",
16
- "Direct manipulation of an object's prototype can lead to hidden classes deoptimizations in JavaScript engines."
17
- ],
18
- suggestions: [
19
- "Use Object.getPrototypeOf(obj) to read the prototype of an object.",
20
- "Use Object.setPrototypeOf(obj, proto) to set the prototype of an object.",
21
- "Use Object.create(proto) when creating new objects with a specific prototype."
22
- ]
23
- } },
24
- setup(context) {
25
- return { visitors: {
26
- ElementAccessExpression: (node, { sourceFile }) => {
27
- if (node.argumentExpression.kind === SyntaxKind.StringLiteral && node.argumentExpression.text === "__proto__") context.report({
28
- message: "noProto",
29
- range: {
30
- begin: node.argumentExpression.getStart(sourceFile),
31
- end: node.argumentExpression.getEnd()
32
- }
33
- });
34
- },
35
- PropertyAccessExpression: (node, { sourceFile }) => {
36
- if (node.name.kind === SyntaxKind.Identifier && node.name.text === "__proto__") context.report({
37
- message: "noProto",
38
- range: {
39
- begin: node.name.getStart(sourceFile),
40
- end: node.name.getEnd()
41
- }
42
- });
43
- }
44
- } };
45
- }
46
- });
47
- //#endregion
48
- export { objectProto_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports direct calls to Object.prototype methods on object instances.";
3
- readonly id: "objectPrototypeBuiltIns";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "prototypeBuiltIn", undefined>;
9
- export default _default;
@@ -1,52 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { SyntaxKind } from "typescript";
4
- import { nullThrows } from "@flint.fyi/utils";
5
- //#region src/rules/objectPrototypeBuiltIns.ts
6
- const prototypeMethods = /* @__PURE__ */ new Set([
7
- "hasOwnProperty",
8
- "isPrototypeOf",
9
- "propertyIsEnumerable"
10
- ]);
11
- var objectPrototypeBuiltIns_default = ruleCreator.createRule(typescriptLanguage, {
12
- about: {
13
- description: "Reports direct calls to Object.prototype methods on object instances.",
14
- id: "objectPrototypeBuiltIns",
15
- presets: ["logical", "logicalStrict"]
16
- },
17
- messages: { prototypeBuiltIn: {
18
- primary: "Prefer the safer `Object.prototype.{{ method }}.call()` over calling `{{ method }}()` directly on objects.",
19
- secondary: [
20
- "Objects can have properties that shadow built-in methods from `Object.prototype` such as `{{ method }}()`.",
21
- "Objects created with `Object.create(null)` do not inherit from `Object.prototype` and will not have these methods.",
22
- "Calling these methods directly can fail or execute unintended code if the object has shadowing properties."
23
- ],
24
- suggestions: ["Call the method through `Object.prototype` using `.call()`."]
25
- } },
26
- setup(context) {
27
- return { visitors: { CallExpression: (node, { sourceFile }) => {
28
- if (node.expression.kind !== SyntaxKind.PropertyAccessExpression || node.expression.name.kind !== SyntaxKind.Identifier) return;
29
- const method = node.expression.name.text;
30
- if (!prototypeMethods.has(method)) return;
31
- const openParenthesisToken = findToken(node, SyntaxKind.OpenParenToken, sourceFile);
32
- const closeParenthesisToken = findToken(node, SyntaxKind.CloseParenToken, sourceFile);
33
- const objectText = sourceFile.text.slice(node.expression.expression.getStart(sourceFile), node.expression.expression.getEnd());
34
- const argumentsText = sourceFile.text.slice(openParenthesisToken.getEnd(), closeParenthesisToken.getStart(sourceFile));
35
- context.report({
36
- data: { method },
37
- message: "prototypeBuiltIn",
38
- range: getTSNodeRange(node, sourceFile),
39
- suggestions: [{
40
- id: "usePrototypeCall",
41
- range: getTSNodeRange(node, sourceFile),
42
- text: `Object.prototype.${method}.call(${objectText}, ${argumentsText})`
43
- }]
44
- });
45
- } } };
46
- }
47
- });
48
- function findToken(node, token, sourceFile) {
49
- return nullThrows(node.getChildren(sourceFile).find((child) => child.kind === token), "Token is expected to be present by the find call");
50
- }
51
- //#endregion
52
- export { objectPrototypeBuiltIns_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Object property and method definitions can use shorthand syntax when the key matches the value identifier or when a function expression is assigned.";
3
- readonly id: "objectShorthand";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "expectedMethodShorthand" | "expectedPropertyShorthand", undefined>;
9
- export default _default;
@@ -1,82 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage, unwrapParenthesizedNode } from "@flint.fyi/typescript-language";
3
- import ts, { SyntaxKind } from "typescript";
4
- //#region src/rules/objectShorthand.ts
5
- function containsThisOrArguments(node) {
6
- function visit(current) {
7
- if (current.kind === SyntaxKind.ThisKeyword || current.kind === SyntaxKind.SuperKeyword) return true;
8
- if (ts.isIdentifier(current) && current.text === "arguments") return true;
9
- if (ts.isMetaProperty(current) && current.keywordToken === SyntaxKind.NewKeyword) return true;
10
- if (ts.isFunctionDeclaration(current) || ts.isFunctionExpression(current) || ts.isClassDeclaration(current) || ts.isClassExpression(current)) return false;
11
- return ts.forEachChild(current, visit) ?? false;
12
- }
13
- return visit(node);
14
- }
15
- function getPropertyKeyText(name) {
16
- switch (name.kind) {
17
- case SyntaxKind.ComputedPropertyName:
18
- if (name.expression.kind === SyntaxKind.Identifier) return name.expression.text;
19
- return;
20
- case SyntaxKind.Identifier:
21
- case SyntaxKind.NoSubstitutionTemplateLiteral:
22
- case SyntaxKind.NumericLiteral:
23
- case SyntaxKind.StringLiteral: return name.text;
24
- default: return;
25
- }
26
- }
27
- function hasAsyncModifier(modifiers) {
28
- return modifiers?.some((modifier) => modifier.kind === SyntaxKind.AsyncKeyword);
29
- }
30
- var objectShorthand_default = ruleCreator.createRule(typescriptLanguage, {
31
- about: {
32
- description: "Object property and method definitions can use shorthand syntax when the key matches the value identifier or when a function expression is assigned.",
33
- id: "objectShorthand",
34
- presets: ["stylistic", "stylisticStrict"]
35
- },
36
- messages: {
37
- expectedMethodShorthand: {
38
- primary: "Function expressions in object literals can use method shorthand syntax.",
39
- secondary: ["Method shorthand syntax is more concise and clearly indicates the property is a method.", "Instead of `{ method: function() {} }`, use `{ method() {} }`."],
40
- suggestions: ["Use method shorthand syntax."]
41
- },
42
- expectedPropertyShorthand: {
43
- primary: "Object properties where the key matches the value identifier can use shorthand syntax.",
44
- secondary: ["Property shorthand syntax reduces redundancy when the property name matches the variable name.", "Instead of `{ x: x }`, use `{ x }`."],
45
- suggestions: ["Use property shorthand syntax."]
46
- }
47
- },
48
- setup(context) {
49
- return { visitors: { PropertyAssignment: (node, { sourceFile }) => {
50
- const keyText = getPropertyKeyText(node.name);
51
- if (keyText === void 0) return;
52
- const initializer = unwrapParenthesizedNode(node.initializer);
53
- switch (initializer.kind) {
54
- case SyntaxKind.ArrowFunction:
55
- if (initializer.body.kind === SyntaxKind.Block && !hasAsyncModifier(initializer.modifiers) && !containsThisOrArguments(initializer.body)) context.report({
56
- message: "expectedMethodShorthand",
57
- range: getTSNodeRange(node, sourceFile)
58
- });
59
- return;
60
- case SyntaxKind.FunctionExpression:
61
- if (!initializer.name) context.report({
62
- message: "expectedMethodShorthand",
63
- range: getTSNodeRange(node, sourceFile)
64
- });
65
- return;
66
- case SyntaxKind.Identifier:
67
- if (initializer.text !== keyText) return;
68
- if (node.name.kind === SyntaxKind.StringLiteral && !isValidIdentifier(keyText)) return;
69
- context.report({
70
- message: "expectedPropertyShorthand",
71
- range: getTSNodeRange(node, sourceFile)
72
- });
73
- return;
74
- }
75
- } } };
76
- }
77
- });
78
- function isValidIdentifier(name) {
79
- return /^[\p{ID_Start}$_][\p{ID_Continue}$]*$/u.test(name);
80
- }
81
- //#endregion
82
- export { objectShorthand_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports empty object fallbacks in object spread expressions that have no effect.";
3
- readonly id: "objectSpreadUnnecessaryFallbacks";
4
- readonly presets: readonly ["logical", "logicalStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "unnecessaryFallback", undefined>;
9
- export default _default;
@@ -1,41 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import * as ts$1 from "typescript";
4
- //#region src/rules/objectSpreadUnnecessaryFallbacks.ts
5
- function isEmptyObjectLiteral(node) {
6
- const unwrapped = unwrapParentheses(node);
7
- return ts$1.isObjectLiteralExpression(unwrapped) && !unwrapped.properties.length;
8
- }
9
- function unwrapParentheses(node) {
10
- return ts$1.isParenthesizedExpression(node) ? unwrapParentheses(node.expression) : node;
11
- }
12
- var objectSpreadUnnecessaryFallbacks_default = ruleCreator.createRule(typescriptLanguage, {
13
- about: {
14
- description: "Reports empty object fallbacks in object spread expressions that have no effect.",
15
- id: "objectSpreadUnnecessaryFallbacks",
16
- presets: ["logical", "logicalStrict"]
17
- },
18
- messages: { unnecessaryFallback: {
19
- primary: "Spreading `undefined` or `null` in an object literal has no effect, making this empty object fallback unnecessary.",
20
- secondary: ["When spreading `undefined` or `null` in an object literal, JavaScript skips those values without throwing an error.", "A fallback like `|| {}` or `?? {}` is not needed because the spread will work correctly without it."],
21
- suggestions: ["Remove the empty object fallback and spread the value directly."]
22
- } },
23
- setup(context) {
24
- return { visitors: { ObjectLiteralExpression: (node, { sourceFile }) => {
25
- for (const property of node.properties) {
26
- if (!ts$1.isSpreadAssignment(property)) continue;
27
- const spreadExpression = unwrapParentheses(property.expression);
28
- if (!ts$1.isBinaryExpression(spreadExpression)) continue;
29
- const operatorKind = spreadExpression.operatorToken.kind;
30
- if (operatorKind !== ts$1.SyntaxKind.BarBarToken && operatorKind !== ts$1.SyntaxKind.QuestionQuestionToken) continue;
31
- if (!isEmptyObjectLiteral(spreadExpression.right)) continue;
32
- context.report({
33
- message: "unnecessaryFallback",
34
- range: getTSNodeRange(spreadExpression.right, sourceFile)
35
- });
36
- }
37
- } } };
38
- }
39
- });
40
- //#endregion
41
- export { objectSpreadUnnecessaryFallbacks_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer interface declarations over type aliases for object types.";
3
- readonly id: "objectTypeDefinitions";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferInterface", undefined>;
9
- export default _default;
@@ -1,32 +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/objectTypeDefinitions.ts
5
- var objectTypeDefinitions_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Prefer interface declarations over type aliases for object types.",
8
- id: "objectTypeDefinitions",
9
- presets: ["stylistic", "stylisticStrict"]
10
- },
11
- messages: { preferInterface: {
12
- primary: "Type aliases for object types have different behavior from interfaces in some cases.",
13
- secondary: [
14
- "Interfaces support declaration merging and can be extended with the `extends` keyword.",
15
- "Interfaces can be implemented by classes, providing clearer contracts.",
16
- "Error messages from the TypeScript compiler often display the interface name directly, making them more readable."
17
- ],
18
- suggestions: ["Use an interface declaration instead: `interface Name { ... }`."]
19
- } },
20
- setup(context) {
21
- return { visitors: { TypeAliasDeclaration: (node, { sourceFile }) => {
22
- if (node.type.kind !== SyntaxKind.TypeLiteral) return;
23
- const typeKeyword = node.getChildren(sourceFile).find((child) => child.kind === SyntaxKind.TypeKeyword);
24
- context.report({
25
- message: "preferInterface",
26
- range: typeKeyword ? getTSNodeRange(typeKeyword, sourceFile) : getTSNodeRange(node, sourceFile)
27
- });
28
- } } };
29
- }
30
- });
31
- //#endregion
32
- export { objectTypeDefinitions_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using octal escape sequences in string literals.";
3
- readonly id: "octalEscapes";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noOctalEscape", undefined>;
9
- export default _default;
@@ -1,56 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- //#region src/rules/octalEscapes.ts
4
- /**
5
- * Finds the position and length of an octal escape sequence in a string.
6
- * Returns undefined if no octal escape is found.
7
- */
8
- function findOctalEscape(text) {
9
- const content = text.slice(1, -1);
10
- const match = /(?<!\\)\\0[0-7]|(?<!\\)\\[1-7][0-7]*/.exec(content);
11
- if (!match) return;
12
- return {
13
- index: match.index + 1,
14
- length: match[0].length
15
- };
16
- }
17
- var octalEscapes_default = ruleCreator.createRule(typescriptLanguage, {
18
- about: {
19
- description: "Reports using octal escape sequences in string literals.",
20
- id: "octalEscapes",
21
- presets: ["javascript"]
22
- },
23
- messages: { noOctalEscape: {
24
- primary: "Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.",
25
- secondary: ["Octal escape sequences (e.g., `\\01`, `\\02`, `\\377`) are a deprecated feature in JavaScript that can lead to confusion and are forbidden in strict mode and template literals.", "They are less readable than their modern alternatives and can cause portability issues."],
26
- suggestions: ["Use hexadecimal escape sequences (e.g., `\\x01`) or Unicode escape sequences (e.g., `\\u0001`) instead."]
27
- } },
28
- setup(context) {
29
- function checkNode(node, sourceFile) {
30
- const octalEscape = findOctalEscape(node.getText(sourceFile));
31
- if (!octalEscape) return;
32
- const nodeStart = node.getStart(sourceFile);
33
- context.report({
34
- message: "noOctalEscape",
35
- range: {
36
- begin: nodeStart + octalEscape.index,
37
- end: nodeStart + octalEscape.index + octalEscape.length
38
- }
39
- });
40
- }
41
- return { visitors: {
42
- NoSubstitutionTemplateLiteral: (node, { sourceFile }) => {
43
- checkNode(node, sourceFile);
44
- },
45
- StringLiteral: (node, { sourceFile }) => {
46
- checkNode(node, sourceFile);
47
- },
48
- TemplateExpression: (node, { sourceFile }) => {
49
- checkNode(node.head, sourceFile);
50
- for (const span of node.templateSpans) checkNode(span.literal, sourceFile);
51
- }
52
- } };
53
- }
54
- });
55
- //#endregion
56
- export { octalEscapes_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Reports using legacy octal numeric literals.";
3
- readonly id: "octalNumbers";
4
- readonly presets: readonly ["javascript"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "noOctalNumber", undefined>;
9
- export default _default;
@@ -1,53 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import { nullThrows } from "@flint.fyi/utils";
4
- //#region src/rules/octalNumbers.ts
5
- var octalNumbers_default = ruleCreator.createRule(typescriptLanguage, {
6
- about: {
7
- description: "Reports using legacy octal numeric literals.",
8
- id: "octalNumbers",
9
- presets: ["javascript"]
10
- },
11
- messages: { noOctalNumber: {
12
- primary: "This legacy octal numeric literal evaluates to {{ raw }}. Did you mean that value, or to use a modern octal syntax such as {{ equivalent }}?",
13
- secondary: [
14
- "Legacy octal numeric literals (e.g., `077`, `0123`) are a deprecated feature in JavaScript that can lead to confusion and errors.",
15
- "They are forbidden in strict mode and are less readable than their modern alternatives.",
16
- "The digit `0` by itself is allowed as it represents zero, not an octal literal."
17
- ],
18
- suggestions: ["Use the explicit octal syntax (e.g., `0o77`) introduced in ES6, which is clearer and works in both strict and non-strict modes.", "Remove the leading `0` if you intended to use the decimal value."]
19
- } },
20
- setup(context) {
21
- return { visitors: { NumericLiteral: (node, { sourceFile }) => {
22
- const text = node.getText(sourceFile);
23
- if (text.length > 1 && text.startsWith("0") && nullThrows(text[1], "Second character is expected to be present by prior length check") >= "0" && nullThrows(text[1], "Second character is expected to be present by prior length check") <= "7" && !/^0[xobi]/i.test(text)) {
24
- const range = {
25
- begin: node.getStart(sourceFile),
26
- end: node.getEnd()
27
- };
28
- const octalValue = parseInt(text, 8);
29
- const modernOctalSyntax = `0o${text.slice(1)}`;
30
- const decimalWithoutLeadingZero = text.slice(1);
31
- context.report({
32
- data: {
33
- equivalent: modernOctalSyntax,
34
- raw: octalValue.toString()
35
- },
36
- message: "noOctalNumber",
37
- range,
38
- suggestions: [{
39
- id: "useModernOctalSyntax",
40
- range,
41
- text: modernOctalSyntax
42
- }, {
43
- id: "removeLeadingZero",
44
- range,
45
- text: decimalWithoutLeadingZero
46
- }]
47
- });
48
- }
49
- } } };
50
- }
51
- });
52
- //#endregion
53
- export { octalNumbers_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Prefer assignment operator shorthand where possible.";
3
- readonly id: "operatorAssignmentShorthand";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "preferShorthand", undefined>;
9
- export default _default;
@@ -1,75 +0,0 @@
1
- import { ruleCreator } from "./ruleCreator.js";
2
- import { getTSNodeRange, hasSameTokens, typescriptLanguage } from "@flint.fyi/typescript-language";
3
- import ts from "typescript";
4
- //#region src/rules/operatorAssignmentShorthand.ts
5
- const operatorTexts = /* @__PURE__ */ new Map([
6
- [ts.SyntaxKind.AmpersandToken, "&"],
7
- [ts.SyntaxKind.AsteriskAsteriskToken, "**"],
8
- [ts.SyntaxKind.AsteriskToken, "*"],
9
- [ts.SyntaxKind.BarToken, "|"],
10
- [ts.SyntaxKind.CaretToken, "^"],
11
- [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken, ">>>"],
12
- [ts.SyntaxKind.GreaterThanGreaterThanToken, ">>"],
13
- [ts.SyntaxKind.LessThanLessThanToken, "<<"],
14
- [ts.SyntaxKind.MinusToken, "-"],
15
- [ts.SyntaxKind.PercentToken, "%"],
16
- [ts.SyntaxKind.PlusToken, "+"],
17
- [ts.SyntaxKind.SlashToken, "/"]
18
- ]);
19
- const commutativeOperatorsWithShorthand = /* @__PURE__ */ new Set([
20
- "&",
21
- "*",
22
- "^",
23
- "|"
24
- ]);
25
- const nonCommutativeOperatorsWithShorthand = /* @__PURE__ */ new Set([
26
- "%",
27
- "**",
28
- "+",
29
- "-",
30
- "/",
31
- "<<",
32
- ">>",
33
- ">>>"
34
- ]);
35
- var operatorAssignmentShorthand_default = ruleCreator.createRule(typescriptLanguage, {
36
- about: {
37
- description: "Prefer assignment operator shorthand where possible.",
38
- id: "operatorAssignmentShorthand",
39
- presets: ["stylistic", "stylisticStrict"]
40
- },
41
- messages: { preferShorthand: {
42
- primary: "This `=` assignment can be replaced with an `{{ operator }}=` operator assignment.",
43
- secondary: ["The shorthand operator assignment accomplishes the same operation with less code."],
44
- suggestions: ["Switch the `=` assignment with an `{{ operator }}` operator assignment."]
45
- } },
46
- setup(context) {
47
- function report(operator, node, right, sourceFile) {
48
- const range = getTSNodeRange(node, sourceFile);
49
- context.report({
50
- data: { operator },
51
- fix: {
52
- range,
53
- text: [
54
- node.left.getText(sourceFile),
55
- `${operator}=`,
56
- right.getText(sourceFile)
57
- ].join(" ")
58
- },
59
- message: "preferShorthand",
60
- range
61
- });
62
- }
63
- return { visitors: { BinaryExpression: (node, { sourceFile }) => {
64
- if (node.operatorToken.kind !== ts.SyntaxKind.EqualsToken || !ts.isBinaryExpression(node.right)) return;
65
- const operator = operatorTexts.get(node.right.operatorToken.kind);
66
- if (!operator) return;
67
- const isCommutative = commutativeOperatorsWithShorthand.has(operator);
68
- if (!isCommutative && !nonCommutativeOperatorsWithShorthand.has(operator)) return;
69
- if (hasSameTokens(node.left, node.right.left, sourceFile)) report(operator, node, node.right.right, sourceFile);
70
- else if (isCommutative && hasSameTokens(node.left, node.right.right, sourceFile)) report(operator, node, node.right.left, sourceFile);
71
- } } };
72
- }
73
- });
74
- //#endregion
75
- export { operatorAssignmentShorthand_default as default };
@@ -1,9 +0,0 @@
1
- declare const _default: import("@flint.fyi/core").Rule<{
2
- readonly description: "Require that function overload signatures be consecutive.";
3
- readonly id: "overloadSignaturesAdjacent";
4
- readonly presets: readonly ["stylistic", "stylisticStrict"];
5
- } & {
6
- readonly pluginId: string;
7
- readonly url: string;
8
- }, "overloadSignatureSeparated", undefined>;
9
- export default _default;