@flint.fyi/ts 0.14.6 → 0.15.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 (433) hide show
  1. package/lib/collectReferencedFilePaths.d.ts +1 -0
  2. package/lib/collectReferencedFilePaths.js +3 -2
  3. package/lib/convertTypeScriptDiagnosticToLanguageFileDiagnostic.d.ts +14 -0
  4. package/lib/{formatDiagnostic.js → convertTypeScriptDiagnosticToLanguageFileDiagnostic.js} +22 -14
  5. package/lib/createTypeScriptFileFromProgram.d.ts +4 -1
  6. package/lib/createTypeScriptFileFromProgram.js +25 -30
  7. package/lib/createTypeScriptFileFromProjectService.d.ts +3 -6
  8. package/lib/createTypeScriptFileFromProjectService.js +5 -11
  9. package/lib/directives/parseDirectivesFromTypeScriptFile.d.ts +8 -0
  10. package/lib/directives/parseDirectivesFromTypeScriptFile.js +12 -4
  11. package/lib/directives/parseDirectivesFromTypeScriptFile.test.d.ts +1 -0
  12. package/lib/directives/parseDirectivesFromTypeScriptFile.test.js +1 -0
  13. package/lib/getFirstEnumValues.d.ts +1 -0
  14. package/lib/getFirstEnumValues.js +1 -0
  15. package/lib/getFirstEnumValues.test.d.ts +1 -0
  16. package/lib/getFirstEnumValues.test.js +1 -0
  17. package/lib/getTSNodeRange.d.ts +1 -0
  18. package/lib/getTSNodeRange.js +1 -0
  19. package/lib/index.d.ts +6 -0
  20. package/lib/index.js +5 -0
  21. package/lib/language.d.ts +3 -2
  22. package/lib/language.js +7 -52
  23. package/lib/nodes.d.ts +1 -0
  24. package/lib/nodes.js +1 -0
  25. package/lib/normalizeRange.d.ts +1 -0
  26. package/lib/normalizeRange.js +1 -0
  27. package/lib/plugin.d.ts +79 -50
  28. package/lib/plugin.js +15 -0
  29. package/lib/prepareTypeScriptBasedLanguage.d.ts +11 -0
  30. package/lib/prepareTypeScriptBasedLanguage.js +59 -0
  31. package/lib/prepareTypeScriptFile.d.ts +9 -4
  32. package/lib/prepareTypeScriptFile.js +8 -2
  33. package/lib/rules/anyReturns.d.ts +2 -1
  34. package/lib/rules/anyReturns.js +22 -22
  35. package/lib/rules/anyReturns.test.d.ts +1 -0
  36. package/lib/rules/anyReturns.test.js +1 -0
  37. package/lib/rules/asyncPromiseExecutors.d.ts +2 -1
  38. package/lib/rules/asyncPromiseExecutors.js +4 -3
  39. package/lib/rules/asyncPromiseExecutors.test.d.ts +1 -0
  40. package/lib/rules/asyncPromiseExecutors.test.js +1 -0
  41. package/lib/rules/caseDeclarations.d.ts +3 -1
  42. package/lib/rules/caseDeclarations.js +7 -6
  43. package/lib/rules/caseDeclarations.test.d.ts +1 -0
  44. package/lib/rules/caseDeclarations.test.js +1 -0
  45. package/lib/rules/caseDuplicates.d.ts +2 -1
  46. package/lib/rules/caseDuplicates.js +4 -3
  47. package/lib/rules/caseDuplicates.test.d.ts +1 -0
  48. package/lib/rules/caseDuplicates.test.js +1 -0
  49. package/lib/rules/chainedAssignments.d.ts +2 -1
  50. package/lib/rules/chainedAssignments.js +3 -2
  51. package/lib/rules/chainedAssignments.test.d.ts +1 -0
  52. package/lib/rules/chainedAssignments.test.js +1 -0
  53. package/lib/rules/classAssignments.d.ts +2 -1
  54. package/lib/rules/classAssignments.js +4 -3
  55. package/lib/rules/classAssignments.test.d.ts +1 -0
  56. package/lib/rules/classAssignments.test.js +1 -0
  57. package/lib/rules/consecutiveNonNullAssertions.d.ts +2 -1
  58. package/lib/rules/consecutiveNonNullAssertions.js +1 -0
  59. package/lib/rules/consecutiveNonNullAssertions.test.d.ts +1 -0
  60. package/lib/rules/consecutiveNonNullAssertions.test.js +1 -0
  61. package/lib/rules/constantAssignments.d.ts +2 -1
  62. package/lib/rules/constantAssignments.js +4 -3
  63. package/lib/rules/constantAssignments.test.d.ts +1 -0
  64. package/lib/rules/constantAssignments.test.js +1 -0
  65. package/lib/rules/constructorReturns.d.ts +2 -1
  66. package/lib/rules/constructorReturns.js +3 -2
  67. package/lib/rules/constructorReturns.test.d.ts +1 -0
  68. package/lib/rules/constructorReturns.test.js +1 -0
  69. package/lib/rules/debuggerStatements.d.ts +2 -1
  70. package/lib/rules/debuggerStatements.js +1 -0
  71. package/lib/rules/debuggerStatements.test.d.ts +1 -0
  72. package/lib/rules/debuggerStatements.test.js +1 -0
  73. package/lib/rules/defaultCaseLast.d.ts +2 -1
  74. package/lib/rules/defaultCaseLast.js +4 -3
  75. package/lib/rules/defaultCaseLast.test.d.ts +1 -0
  76. package/lib/rules/defaultCaseLast.test.js +1 -0
  77. package/lib/rules/duplicateArguments.d.ts +3 -1
  78. package/lib/rules/duplicateArguments.js +3 -2
  79. package/lib/rules/duplicateArguments.test.d.ts +1 -0
  80. package/lib/rules/duplicateArguments.test.js +1 -0
  81. package/lib/rules/elseIfDuplicates.d.ts +2 -1
  82. package/lib/rules/elseIfDuplicates.js +6 -5
  83. package/lib/rules/elseIfDuplicates.test.d.ts +1 -0
  84. package/lib/rules/elseIfDuplicates.test.js +1 -0
  85. package/lib/rules/emptyBlocks.d.ts +2 -1
  86. package/lib/rules/emptyBlocks.js +12 -10
  87. package/lib/rules/emptyBlocks.test.d.ts +1 -0
  88. package/lib/rules/emptyBlocks.test.js +1 -0
  89. package/lib/rules/emptyDestructures.d.ts +3 -1
  90. package/lib/rules/emptyDestructures.js +3 -2
  91. package/lib/rules/emptyDestructures.test.d.ts +1 -0
  92. package/lib/rules/emptyDestructures.test.js +1 -0
  93. package/lib/rules/emptyStaticBlocks.d.ts +2 -1
  94. package/lib/rules/emptyStaticBlocks.js +5 -4
  95. package/lib/rules/emptyStaticBlocks.test.d.ts +1 -0
  96. package/lib/rules/emptyStaticBlocks.test.js +1 -0
  97. package/lib/rules/exceptionAssignments.d.ts +2 -1
  98. package/lib/rules/exceptionAssignments.js +4 -3
  99. package/lib/rules/exceptionAssignments.test.d.ts +1 -0
  100. package/lib/rules/exceptionAssignments.test.js +1 -0
  101. package/lib/rules/finallyStatementSafety.d.ts +7 -0
  102. package/lib/rules/finallyStatementSafety.js +71 -0
  103. package/lib/rules/finallyStatementSafety.test.d.ts +2 -0
  104. package/lib/rules/finallyStatementSafety.test.js +307 -0
  105. package/lib/rules/forDirections.d.ts +2 -1
  106. package/lib/rules/forDirections.js +3 -2
  107. package/lib/rules/forDirections.test.d.ts +1 -0
  108. package/lib/rules/forDirections.test.js +1 -0
  109. package/lib/rules/forInArrays.d.ts +2 -1
  110. package/lib/rules/forInArrays.js +8 -7
  111. package/lib/rules/forInArrays.test.d.ts +1 -0
  112. package/lib/rules/forInArrays.test.js +1 -0
  113. package/lib/rules/functionAssignments.d.ts +2 -1
  114. package/lib/rules/functionAssignments.js +4 -3
  115. package/lib/rules/functionAssignments.test.d.ts +1 -0
  116. package/lib/rules/functionAssignments.test.js +1 -0
  117. package/lib/rules/functionCurryingRedundancy.d.ts +7 -0
  118. package/lib/rules/functionCurryingRedundancy.js +77 -0
  119. package/lib/rules/functionCurryingRedundancy.test.d.ts +2 -0
  120. package/lib/rules/functionCurryingRedundancy.test.js +172 -0
  121. package/lib/rules/functionNewCalls.d.ts +3 -1
  122. package/lib/rules/functionNewCalls.js +7 -6
  123. package/lib/rules/functionNewCalls.test.d.ts +1 -0
  124. package/lib/rules/functionNewCalls.test.js +1 -0
  125. package/lib/rules/generatorFunctionYields.d.ts +3 -1
  126. package/lib/rules/generatorFunctionYields.js +3 -2
  127. package/lib/rules/generatorFunctionYields.test.d.ts +1 -0
  128. package/lib/rules/generatorFunctionYields.test.js +1 -0
  129. package/lib/rules/globalAssignments.d.ts +2 -1
  130. package/lib/rules/globalAssignments.js +10 -9
  131. package/lib/rules/globalAssignments.test.d.ts +1 -0
  132. package/lib/rules/globalAssignments.test.js +1 -0
  133. package/lib/rules/globalObjectCalls.d.ts +3 -1
  134. package/lib/rules/globalObjectCalls.js +5 -4
  135. package/lib/rules/globalObjectCalls.test.d.ts +1 -0
  136. package/lib/rules/globalObjectCalls.test.js +1 -0
  137. package/lib/rules/namespaceDeclarations.d.ts +2 -1
  138. package/lib/rules/namespaceDeclarations.js +7 -6
  139. package/lib/rules/namespaceDeclarations.test.d.ts +1 -0
  140. package/lib/rules/namespaceDeclarations.test.js +1 -0
  141. package/lib/rules/negativeZeroComparisons.d.ts +2 -1
  142. package/lib/rules/negativeZeroComparisons.js +8 -7
  143. package/lib/rules/negativeZeroComparisons.test.d.ts +1 -0
  144. package/lib/rules/negativeZeroComparisons.test.js +1 -0
  145. package/lib/rules/newExpressions.d.ts +2 -1
  146. package/lib/rules/newExpressions.js +3 -2
  147. package/lib/rules/newExpressions.test.d.ts +1 -0
  148. package/lib/rules/newExpressions.test.js +1 -0
  149. package/lib/rules/newNativeNonConstructors.d.ts +2 -1
  150. package/lib/rules/newNativeNonConstructors.js +6 -5
  151. package/lib/rules/newNativeNonConstructors.test.d.ts +1 -0
  152. package/lib/rules/newNativeNonConstructors.test.js +1 -0
  153. package/lib/rules/nonOctalDecimalEscapes.d.ts +3 -1
  154. package/lib/rules/nonOctalDecimalEscapes.js +4 -3
  155. package/lib/rules/nonOctalDecimalEscapes.test.d.ts +1 -0
  156. package/lib/rules/nonOctalDecimalEscapes.test.js +1 -0
  157. package/lib/rules/numericLiteralParsing.d.ts +2 -1
  158. package/lib/rules/numericLiteralParsing.js +8 -7
  159. package/lib/rules/numericLiteralParsing.test.d.ts +1 -0
  160. package/lib/rules/numericLiteralParsing.test.js +1 -0
  161. package/lib/rules/objectCalls.d.ts +7 -0
  162. package/lib/rules/objectCalls.js +47 -0
  163. package/lib/rules/objectCalls.test.d.ts +2 -0
  164. package/lib/rules/objectCalls.test.js +172 -0
  165. package/lib/rules/objectHasOwns.d.ts +7 -0
  166. package/lib/rules/objectHasOwns.js +74 -0
  167. package/lib/rules/objectHasOwns.test.d.ts +2 -0
  168. package/lib/rules/objectHasOwns.test.js +112 -0
  169. package/lib/rules/objectKeyDuplicates.d.ts +7 -0
  170. package/lib/rules/objectKeyDuplicates.js +91 -0
  171. package/lib/rules/objectKeyDuplicates.test.d.ts +2 -0
  172. package/lib/rules/objectKeyDuplicates.test.js +180 -0
  173. package/lib/rules/objectProto.d.ts +2 -1
  174. package/lib/rules/objectProto.js +5 -4
  175. package/lib/rules/objectProto.test.d.ts +1 -0
  176. package/lib/rules/objectProto.test.js +1 -0
  177. package/lib/rules/objectPrototypeBuiltIns.d.ts +7 -0
  178. package/lib/rules/objectPrototypeBuiltIns.js +65 -0
  179. package/lib/rules/objectPrototypeBuiltIns.test.d.ts +2 -0
  180. package/lib/rules/objectPrototypeBuiltIns.test.js +146 -0
  181. package/lib/rules/octalEscapes.d.ts +2 -1
  182. package/lib/rules/octalEscapes.js +13 -8
  183. package/lib/rules/octalEscapes.test.d.ts +1 -0
  184. package/lib/rules/octalEscapes.test.js +1 -0
  185. package/lib/rules/octalNumbers.d.ts +2 -1
  186. package/lib/rules/octalNumbers.js +4 -3
  187. package/lib/rules/octalNumbers.test.d.ts +1 -0
  188. package/lib/rules/octalNumbers.test.js +1 -0
  189. package/lib/rules/returnAssignments.d.ts +2 -1
  190. package/lib/rules/returnAssignments.js +7 -6
  191. package/lib/rules/returnAssignments.test.d.ts +1 -0
  192. package/lib/rules/returnAssignments.test.js +1 -0
  193. package/lib/rules/ruleTester.d.ts +1 -0
  194. package/lib/rules/ruleTester.js +6 -1
  195. package/lib/rules/selfAssignments.d.ts +2 -1
  196. package/lib/rules/selfAssignments.js +4 -3
  197. package/lib/rules/selfAssignments.test.d.ts +1 -0
  198. package/lib/rules/selfAssignments.test.js +1 -0
  199. package/lib/rules/selfComparisons.d.ts +2 -1
  200. package/lib/rules/selfComparisons.js +4 -3
  201. package/lib/rules/selfComparisons.test.d.ts +1 -0
  202. package/lib/rules/selfComparisons.test.js +1 -0
  203. package/lib/rules/sequences.d.ts +2 -1
  204. package/lib/rules/sequences.js +3 -2
  205. package/lib/rules/sequences.test.d.ts +1 -0
  206. package/lib/rules/sequences.test.js +1 -0
  207. package/lib/rules/shadowedRestrictedNames.d.ts +2 -1
  208. package/lib/rules/shadowedRestrictedNames.js +24 -23
  209. package/lib/rules/shadowedRestrictedNames.test.d.ts +1 -0
  210. package/lib/rules/shadowedRestrictedNames.test.js +1 -0
  211. package/lib/rules/sparseArrays.d.ts +2 -1
  212. package/lib/rules/sparseArrays.js +5 -4
  213. package/lib/rules/sparseArrays.test.d.ts +1 -0
  214. package/lib/rules/sparseArrays.test.js +1 -0
  215. package/lib/rules/symbolDescriptions.d.ts +2 -1
  216. package/lib/rules/symbolDescriptions.js +3 -2
  217. package/lib/rules/symbolDescriptions.test.d.ts +1 -0
  218. package/lib/rules/symbolDescriptions.test.js +1 -0
  219. package/lib/rules/typeofComparisons.d.ts +2 -1
  220. package/lib/rules/typeofComparisons.js +5 -4
  221. package/lib/rules/typeofComparisons.test.d.ts +1 -0
  222. package/lib/rules/typeofComparisons.test.js +1 -0
  223. package/lib/rules/unassignedVariables.d.ts +2 -1
  224. package/lib/rules/unassignedVariables.js +4 -3
  225. package/lib/rules/unassignedVariables.test.d.ts +1 -0
  226. package/lib/rules/unassignedVariables.test.js +1 -0
  227. package/lib/rules/undefinedVariables.d.ts +2 -1
  228. package/lib/rules/undefinedVariables.js +5 -4
  229. package/lib/rules/undefinedVariables.test.d.ts +1 -0
  230. package/lib/rules/undefinedVariables.test.js +1 -0
  231. package/lib/rules/unicodeBOMs.d.ts +2 -1
  232. package/lib/rules/unicodeBOMs.js +27 -20
  233. package/lib/rules/unicodeBOMs.test.d.ts +1 -0
  234. package/lib/rules/unicodeBOMs.test.js +1 -0
  235. package/lib/rules/unnecessaryBlocks.d.ts +2 -1
  236. package/lib/rules/unnecessaryBlocks.js +4 -3
  237. package/lib/rules/unnecessaryBlocks.test.d.ts +1 -0
  238. package/lib/rules/unnecessaryBlocks.test.js +1 -0
  239. package/lib/rules/unnecessaryCatches.d.ts +2 -1
  240. package/lib/rules/unnecessaryCatches.js +4 -3
  241. package/lib/rules/unnecessaryCatches.test.d.ts +1 -0
  242. package/lib/rules/unnecessaryCatches.test.js +1 -0
  243. package/lib/rules/unnecessaryConcatenation.d.ts +2 -1
  244. package/lib/rules/unnecessaryConcatenation.js +3 -2
  245. package/lib/rules/unnecessaryConcatenation.test.d.ts +1 -0
  246. package/lib/rules/unnecessaryConcatenation.test.js +1 -0
  247. package/lib/rules/unsafeNegations.d.ts +2 -1
  248. package/lib/rules/unsafeNegations.js +3 -2
  249. package/lib/rules/unsafeNegations.test.d.ts +1 -0
  250. package/lib/rules/unsafeNegations.test.js +1 -0
  251. package/lib/rules/utils/discriminateAnyType.d.ts +1 -0
  252. package/lib/rules/utils/discriminateAnyType.js +1 -0
  253. package/lib/rules/utils/getConstrainedType.d.ts +1 -0
  254. package/lib/rules/utils/getConstrainedType.js +1 -0
  255. package/lib/rules/utils/getThisExpression.d.ts +1 -0
  256. package/lib/rules/utils/getThisExpression.js +1 -0
  257. package/lib/rules/utils/isTypeRecursive.d.ts +1 -0
  258. package/lib/rules/utils/isTypeRecursive.js +1 -0
  259. package/lib/rules/utils/isUnsafeAssignment.d.ts +1 -0
  260. package/lib/rules/utils/isUnsafeAssignment.js +1 -0
  261. package/lib/rules/utils/operators.d.ts +1 -0
  262. package/lib/rules/utils/operators.js +1 -0
  263. package/lib/rules/variableDeletions.d.ts +2 -1
  264. package/lib/rules/variableDeletions.js +3 -2
  265. package/lib/rules/variableDeletions.test.d.ts +1 -0
  266. package/lib/rules/variableDeletions.test.js +1 -0
  267. package/lib/rules/voidOperator.d.ts +2 -1
  268. package/lib/rules/voidOperator.js +3 -2
  269. package/lib/rules/voidOperator.test.d.ts +1 -0
  270. package/lib/rules/voidOperator.test.js +1 -0
  271. package/lib/rules/withStatements.d.ts +7 -0
  272. package/lib/rules/withStatements.js +37 -0
  273. package/lib/rules/withStatements.test.d.ts +2 -0
  274. package/lib/rules/withStatements.test.js +27 -0
  275. package/lib/utils/declarationIncludesGlobal.d.ts +1 -0
  276. package/lib/utils/declarationIncludesGlobal.js +1 -0
  277. package/lib/utils/declarationsIncludeGlobal.d.ts +1 -0
  278. package/lib/utils/declarationsIncludeGlobal.js +1 -0
  279. package/lib/utils/getDeclarationsIfGlobal.d.ts +1 -0
  280. package/lib/utils/getDeclarationsIfGlobal.js +1 -0
  281. package/lib/utils/getModifyingReferences.d.ts +1 -0
  282. package/lib/utils/getModifyingReferences.js +1 -0
  283. package/lib/utils/hasSameTokens.d.ts +1 -0
  284. package/lib/utils/hasSameTokens.js +1 -0
  285. package/lib/utils/isFunction.d.ts +3 -0
  286. package/lib/utils/isFunction.js +6 -0
  287. package/lib/utils/isGlobalDeclaration.d.ts +1 -0
  288. package/lib/utils/isGlobalDeclaration.js +1 -0
  289. package/lib/utils/isGlobalDeclarationOfName.d.ts +1 -0
  290. package/lib/utils/isGlobalDeclarationOfName.js +1 -0
  291. package/lib/utils/isGlobalVariable.d.ts +1 -0
  292. package/lib/utils/isGlobalVariable.js +1 -0
  293. package/lib/utils/unwrapParentParenthesizedExpressions.d.ts +1 -0
  294. package/lib/utils/unwrapParentParenthesizedExpressions.js +1 -0
  295. package/lib/utils/unwrapParenthesizedExpression.d.ts +1 -0
  296. package/lib/utils/unwrapParenthesizedExpression.js +1 -0
  297. package/package.json +17 -7
  298. package/CHANGELOG.md +0 -91
  299. package/lib/formatDiagnostic.d.ts +0 -10
  300. package/src/collectReferencedFilePaths.ts +0 -37
  301. package/src/createTypeScriptFileFromProgram.ts +0 -86
  302. package/src/createTypeScriptFileFromProjectService.ts +0 -31
  303. package/src/directives/parseDirectivesFromTypeScriptFile.test.ts +0 -108
  304. package/src/directives/parseDirectivesFromTypeScriptFile.ts +0 -31
  305. package/src/formatDiagnostic.ts +0 -166
  306. package/src/getFirstEnumValues.test.ts +0 -51
  307. package/src/getFirstEnumValues.ts +0 -59
  308. package/src/getTSNodeRange.ts +0 -13
  309. package/src/index.ts +0 -7
  310. package/src/language.ts +0 -122
  311. package/src/nodes.ts +0 -146
  312. package/src/normalizeRange.ts +0 -25
  313. package/src/plugin.ts +0 -111
  314. package/src/prepareTypeScriptFile.ts +0 -14
  315. package/src/rules/anyReturns.test.ts +0 -649
  316. package/src/rules/anyReturns.ts +0 -263
  317. package/src/rules/asyncPromiseExecutors.test.ts +0 -72
  318. package/src/rules/asyncPromiseExecutors.ts +0 -61
  319. package/src/rules/caseDeclarations.test.ts +0 -228
  320. package/src/rules/caseDeclarations.ts +0 -70
  321. package/src/rules/caseDuplicates.test.ts +0 -308
  322. package/src/rules/caseDuplicates.ts +0 -57
  323. package/src/rules/chainedAssignments.test.ts +0 -263
  324. package/src/rules/chainedAssignments.ts +0 -58
  325. package/src/rules/classAssignments.test.ts +0 -157
  326. package/src/rules/classAssignments.ts +0 -50
  327. package/src/rules/consecutiveNonNullAssertions.test.ts +0 -33
  328. package/src/rules/consecutiveNonNullAssertions.ts +0 -46
  329. package/src/rules/constantAssignments.test.ts +0 -222
  330. package/src/rules/constantAssignments.ts +0 -78
  331. package/src/rules/constructorReturns.test.ts +0 -97
  332. package/src/rules/constructorReturns.ts +0 -59
  333. package/src/rules/debuggerStatements.test.ts +0 -81
  334. package/src/rules/debuggerStatements.ts +0 -45
  335. package/src/rules/defaultCaseLast.test.ts +0 -196
  336. package/src/rules/defaultCaseLast.ts +0 -54
  337. package/src/rules/duplicateArguments.test.ts +0 -140
  338. package/src/rules/duplicateArguments.ts +0 -58
  339. package/src/rules/elseIfDuplicates.test.ts +0 -177
  340. package/src/rules/elseIfDuplicates.ts +0 -69
  341. package/src/rules/emptyBlocks.test.ts +0 -136
  342. package/src/rules/emptyBlocks.ts +0 -73
  343. package/src/rules/emptyDestructures.test.ts +0 -187
  344. package/src/rules/emptyDestructures.ts +0 -48
  345. package/src/rules/emptyStaticBlocks.test.ts +0 -168
  346. package/src/rules/emptyStaticBlocks.ts +0 -60
  347. package/src/rules/exceptionAssignments.test.ts +0 -265
  348. package/src/rules/exceptionAssignments.ts +0 -77
  349. package/src/rules/forDirections.test.ts +0 -125
  350. package/src/rules/forDirections.ts +0 -174
  351. package/src/rules/forInArrays.test.ts +0 -25
  352. package/src/rules/forInArrays.ts +0 -70
  353. package/src/rules/functionAssignments.test.ts +0 -210
  354. package/src/rules/functionAssignments.ts +0 -51
  355. package/src/rules/functionNewCalls.test.ts +0 -116
  356. package/src/rules/functionNewCalls.ts +0 -75
  357. package/src/rules/generatorFunctionYields.test.ts +0 -152
  358. package/src/rules/generatorFunctionYields.ts +0 -71
  359. package/src/rules/globalAssignments.test.ts +0 -216
  360. package/src/rules/globalAssignments.ts +0 -67
  361. package/src/rules/globalObjectCalls.test.ts +0 -94
  362. package/src/rules/globalObjectCalls.ts +0 -52
  363. package/src/rules/namespaceDeclarations.test.ts +0 -41
  364. package/src/rules/namespaceDeclarations.ts +0 -74
  365. package/src/rules/negativeZeroComparisons.test.ts +0 -210
  366. package/src/rules/negativeZeroComparisons.ts +0 -87
  367. package/src/rules/newExpressions.test.ts +0 -80
  368. package/src/rules/newExpressions.ts +0 -67
  369. package/src/rules/newNativeNonConstructors.test.ts +0 -95
  370. package/src/rules/newNativeNonConstructors.ts +0 -59
  371. package/src/rules/nonOctalDecimalEscapes.test.ts +0 -70
  372. package/src/rules/nonOctalDecimalEscapes.ts +0 -70
  373. package/src/rules/numericLiteralParsing.test.ts +0 -100
  374. package/src/rules/numericLiteralParsing.ts +0 -116
  375. package/src/rules/objectProto.test.ts +0 -97
  376. package/src/rules/objectProto.ts +0 -62
  377. package/src/rules/octalEscapes.test.ts +0 -214
  378. package/src/rules/octalEscapes.ts +0 -85
  379. package/src/rules/octalNumbers.test.ts +0 -246
  380. package/src/rules/octalNumbers.ts +0 -75
  381. package/src/rules/returnAssignments.test.ts +0 -186
  382. package/src/rules/returnAssignments.ts +0 -57
  383. package/src/rules/ruleTester.ts +0 -4
  384. package/src/rules/selfAssignments.test.ts +0 -67
  385. package/src/rules/selfAssignments.ts +0 -50
  386. package/src/rules/selfComparisons.test.ts +0 -298
  387. package/src/rules/selfComparisons.ts +0 -45
  388. package/src/rules/sequences.test.ts +0 -49
  389. package/src/rules/sequences.ts +0 -37
  390. package/src/rules/shadowedRestrictedNames.test.ts +0 -148
  391. package/src/rules/shadowedRestrictedNames.ts +0 -105
  392. package/src/rules/sparseArrays.test.ts +0 -111
  393. package/src/rules/sparseArrays.ts +0 -61
  394. package/src/rules/symbolDescriptions.test.ts +0 -90
  395. package/src/rules/symbolDescriptions.ts +0 -47
  396. package/src/rules/typeofComparisons.test.ts +0 -86
  397. package/src/rules/typeofComparisons.ts +0 -88
  398. package/src/rules/unassignedVariables.test.ts +0 -73
  399. package/src/rules/unassignedVariables.ts +0 -69
  400. package/src/rules/undefinedVariables.test.ts +0 -81
  401. package/src/rules/undefinedVariables.ts +0 -97
  402. package/src/rules/unicodeBOMs.test.ts +0 -67
  403. package/src/rules/unicodeBOMs.ts +0 -44
  404. package/src/rules/unnecessaryBlocks.test.ts +0 -148
  405. package/src/rules/unnecessaryBlocks.ts +0 -89
  406. package/src/rules/unnecessaryCatches.test.ts +0 -211
  407. package/src/rules/unnecessaryCatches.ts +0 -84
  408. package/src/rules/unnecessaryConcatenation.test.ts +0 -88
  409. package/src/rules/unnecessaryConcatenation.ts +0 -44
  410. package/src/rules/unsafeNegations.test.ts +0 -64
  411. package/src/rules/unsafeNegations.ts +0 -59
  412. package/src/rules/utils/discriminateAnyType.ts +0 -66
  413. package/src/rules/utils/getConstrainedType.ts +0 -9
  414. package/src/rules/utils/getThisExpression.ts +0 -24
  415. package/src/rules/utils/isTypeRecursive.ts +0 -10
  416. package/src/rules/utils/isUnsafeAssignment.ts +0 -113
  417. package/src/rules/utils/operators.ts +0 -39
  418. package/src/rules/variableDeletions.test.ts +0 -76
  419. package/src/rules/variableDeletions.ts +0 -43
  420. package/src/rules/voidOperator.test.ts +0 -99
  421. package/src/rules/voidOperator.ts +0 -38
  422. package/src/utils/declarationIncludesGlobal.ts +0 -9
  423. package/src/utils/declarationsIncludeGlobal.ts +0 -7
  424. package/src/utils/getDeclarationsIfGlobal.ts +0 -14
  425. package/src/utils/getModifyingReferences.ts +0 -58
  426. package/src/utils/hasSameTokens.ts +0 -45
  427. package/src/utils/isGlobalDeclaration.ts +0 -10
  428. package/src/utils/isGlobalDeclarationOfName.ts +0 -56
  429. package/src/utils/isGlobalVariable.ts +0 -30
  430. package/src/utils/unwrapParentParenthesizedExpressions.ts +0 -7
  431. package/src/utils/unwrapParenthesizedExpression.ts +0 -9
  432. package/tsconfig.json +0 -9
  433. package/tsconfig.tsbuildinfo +0 -1
@@ -1,308 +0,0 @@
1
- import rule from "./caseDuplicates.js";
2
- import { ruleTester } from "./ruleTester.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- switch (value) {
9
- case 1:
10
- break;
11
- case 1:
12
- break;
13
- }
14
- `,
15
- snapshot: `
16
- switch (value) {
17
- case 1:
18
- break;
19
- case 1:
20
- ~~~~~~
21
- This case duplicates a previous case, so it will never be reached.
22
- break;
23
- }
24
- `,
25
- },
26
- {
27
- code: `
28
- switch (value) {
29
- case "a":
30
- break;
31
- case "b":
32
- break;
33
- case "a":
34
- break;
35
- }
36
- `,
37
- snapshot: `
38
- switch (value) {
39
- case "a":
40
- break;
41
- case "b":
42
- break;
43
- case "a":
44
- ~~~~~~~~
45
- This case duplicates a previous case, so it will never be reached.
46
- break;
47
- }
48
- `,
49
- },
50
- {
51
- code: `
52
- switch (value) {
53
- case x + 1:
54
- break;
55
- case x + 1:
56
- break;
57
- }
58
- `,
59
- snapshot: `
60
- switch (value) {
61
- case x + 1:
62
- break;
63
- case x + 1:
64
- ~~~~~~~~~~
65
- This case duplicates a previous case, so it will never be reached.
66
- break;
67
- }
68
- `,
69
- },
70
- {
71
- code: `
72
- switch (value) {
73
- case 1:
74
- break;
75
- case 2:
76
- break;
77
- case 1:
78
- break;
79
- }
80
- `,
81
- snapshot: `
82
- switch (value) {
83
- case 1:
84
- break;
85
- case 2:
86
- break;
87
- case 1:
88
- ~~~~~~
89
- This case duplicates a previous case, so it will never be reached.
90
- break;
91
- }
92
- `,
93
- },
94
- {
95
- code: `
96
- switch (value) {
97
- case true:
98
- break;
99
- case false:
100
- break;
101
- case true:
102
- break;
103
- }
104
- `,
105
- snapshot: `
106
- switch (value) {
107
- case true:
108
- break;
109
- case false:
110
- break;
111
- case true:
112
- ~~~~~~~~~
113
- This case duplicates a previous case, so it will never be reached.
114
- break;
115
- }
116
- `,
117
- },
118
- {
119
- code: `
120
- switch (value) {
121
- case obj.property:
122
- break;
123
- case obj.property:
124
- break;
125
- }
126
- `,
127
- snapshot: `
128
- switch (value) {
129
- case obj.property:
130
- break;
131
- case obj.property:
132
- ~~~~~~~~~~~~~~~~~
133
- This case duplicates a previous case, so it will never be reached.
134
- break;
135
- }
136
- `,
137
- },
138
- {
139
- code: `
140
- const result = (input: number) => {
141
- switch (input) {
142
- case 1:
143
- return "one";
144
- case 2:
145
- return "two";
146
- case 1:
147
- return "duplicate";
148
- }
149
- };
150
- `,
151
- snapshot: `
152
- const result = (input: number) => {
153
- switch (input) {
154
- case 1:
155
- return "one";
156
- case 2:
157
- return "two";
158
- case 1:
159
- ~~~~~~
160
- This case duplicates a previous case, so it will never be reached.
161
- return "duplicate";
162
- }
163
- };
164
- `,
165
- },
166
- {
167
- code: `
168
- switch (value) {
169
- case 1: case 1: break;
170
- }
171
- `,
172
- snapshot: `
173
- switch (value) {
174
- case 1: case 1: break;
175
- ~~~~~~
176
- This case duplicates a previous case, so it will never be reached.
177
- }
178
- `,
179
- },
180
- {
181
- code: `
182
- const condition = true;
183
- switch (value) {
184
- case condition ? "a" : "b":
185
- break;
186
- case condition ? "a" : "b":
187
- break;
188
- }
189
- `,
190
- snapshot: `
191
- const condition = true;
192
- switch (value) {
193
- case condition ? "a" : "b":
194
- break;
195
- case condition ? "a" : "b":
196
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
197
- This case duplicates a previous case, so it will never be reached.
198
- break;
199
- }
200
- `,
201
- },
202
- {
203
- code: `
204
- switch (value) {
205
- case /* comment */ 1:
206
- break;
207
- case 1:
208
- break;
209
- }
210
- `,
211
- snapshot: `
212
- switch (value) {
213
- case /* comment */ 1:
214
- break;
215
- case 1:
216
- ~~~~~~
217
- This case duplicates a previous case, so it will never be reached.
218
- break;
219
- }
220
- `,
221
- },
222
- {
223
- code: `
224
- switch (value) {
225
- case obj.property:
226
- break;
227
- case obj /* comment */ .property:
228
- break;
229
- }
230
- `,
231
- snapshot: `
232
- switch (value) {
233
- case obj.property:
234
- break;
235
- case obj /* comment */ .property:
236
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
237
- This case duplicates a previous case, so it will never be reached.
238
- break;
239
- }
240
- `,
241
- },
242
- ],
243
- valid: [
244
- `switch (value) { case 1: break; case 2: break; }`,
245
- `switch (value) { case 1: break; case 2: break; case 3: break; }`,
246
- `switch (value) { case "a": break; case "b": break; }`,
247
- `switch (value) { case true: break; case false: break; }`,
248
- `switch (value) { case 1: case 2: break; }`,
249
- `switch (value) { default: break; }`,
250
- `
251
- switch (value) {
252
- case 1:
253
- break;
254
- case 2:
255
- break;
256
- }
257
- `,
258
- `
259
- switch (value) {
260
- case x:
261
- break;
262
- case y:
263
- break;
264
- }
265
- `,
266
- `
267
- switch (value) {
268
- case obj.a:
269
- break;
270
- case obj.b:
271
- break;
272
- }
273
- `,
274
- `
275
- switch (value) {
276
- case 1:
277
- console.log("one");
278
- break;
279
- case 2:
280
- console.log("two");
281
- break;
282
- default:
283
- console.log("default");
284
- break;
285
- }
286
- `,
287
- `
288
- switch (value) {
289
- case x + 1:
290
- break;
291
- case x + 2:
292
- break;
293
- }
294
- `,
295
- `
296
- const result = (input: number) => {
297
- switch (input) {
298
- case 1:
299
- return "one";
300
- case 2:
301
- return "two";
302
- default:
303
- return "unknown";
304
- }
305
- };
306
- `,
307
- ],
308
- });
@@ -1,57 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { typescriptLanguage } from "../language.js";
4
- import { hasSameTokens } from "../utils/hasSameTokens.js";
5
-
6
- export default typescriptLanguage.createRule({
7
- about: {
8
- description:
9
- "Reports switch statements with duplicate case clause test expressions.",
10
- id: "caseDuplicates",
11
- preset: "logical",
12
- },
13
- messages: {
14
- duplicateCase: {
15
- primary:
16
- "This case duplicates a previous case, so it will never be reached.",
17
- secondary: [
18
- "Having duplicate case clauses in a switch statement is a logic error.",
19
- "The second case clause will never be reached because the first matching case will always execute first.",
20
- ],
21
- suggestions: [
22
- "Remove the duplicate case clause or modify its test expression to be unique.",
23
- ],
24
- },
25
- },
26
- setup(context) {
27
- return {
28
- visitors: {
29
- SwitchStatement: (node) => {
30
- const seenCases: ts.Expression[] = [];
31
-
32
- for (const clause of node.caseBlock.clauses) {
33
- if (!ts.isCaseClause(clause)) {
34
- continue;
35
- }
36
-
37
- const isDuplicate = seenCases.some((seenCase) =>
38
- hasSameTokens(seenCase, clause.expression, context.sourceFile),
39
- );
40
-
41
- if (isDuplicate) {
42
- context.report({
43
- message: "duplicateCase",
44
- range: {
45
- begin: clause.getStart(context.sourceFile),
46
- end: clause.expression.getEnd(),
47
- },
48
- });
49
- } else {
50
- seenCases.push(clause.expression);
51
- }
52
- }
53
- },
54
- },
55
- };
56
- },
57
- });
@@ -1,263 +0,0 @@
1
- import rule from "./chainedAssignments.js";
2
- import { ruleTester } from "./ruleTester.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- let first;
9
- let second;
10
- first = second = 1;
11
- `,
12
- snapshot: `
13
- let first;
14
- let second;
15
- first = second = 1;
16
- ~
17
- Prefer separate assignment statements for readability instead of chaining assignments.
18
- `,
19
- },
20
- {
21
- code: `
22
- let first;
23
- let second;
24
- let third;
25
- first = second = third = 0;
26
- `,
27
- snapshot: `
28
- let first;
29
- let second;
30
- let third;
31
- first = second = third = 0;
32
- ~
33
- Prefer separate assignment statements for readability instead of chaining assignments.
34
- `,
35
- },
36
- {
37
- code: `
38
- let value;
39
- let another;
40
- value = another = getValue();
41
- `,
42
- snapshot: `
43
- let value;
44
- let another;
45
- value = another = getValue();
46
- ~
47
- Prefer separate assignment statements for readability instead of chaining assignments.
48
- `,
49
- },
50
- {
51
- code: `
52
- let first;
53
- let second;
54
- (first = second = 1);
55
- `,
56
- snapshot: `
57
- let first;
58
- let second;
59
- (first = second = 1);
60
- ~
61
- Prefer separate assignment statements for readability instead of chaining assignments.
62
- `,
63
- },
64
- {
65
- code: `
66
- const calculate = (value: number) => {
67
- let first;
68
- let second;
69
- first = second = value;
70
- return first + second;
71
- };
72
- `,
73
- snapshot: `
74
- const calculate = (value: number) => {
75
- let first;
76
- let second;
77
- first = second = value;
78
- ~
79
- Prefer separate assignment statements for readability instead of chaining assignments.
80
- return first + second;
81
- };
82
- `,
83
- },
84
- {
85
- code: `
86
- let first;
87
- let second;
88
- if (true) {
89
- first = second = 10;
90
- }
91
- `,
92
- snapshot: `
93
- let first;
94
- let second;
95
- if (true) {
96
- first = second = 10;
97
- ~
98
- Prefer separate assignment statements for readability instead of chaining assignments.
99
- }
100
- `,
101
- },
102
- {
103
- code: `
104
- class MyClass {
105
- method() {
106
- let first;
107
- let second;
108
- first = second = 0;
109
- }
110
- }
111
- `,
112
- snapshot: `
113
- class MyClass {
114
- method() {
115
- let first;
116
- let second;
117
- first = second = 0;
118
- ~
119
- Prefer separate assignment statements for readability instead of chaining assignments.
120
- }
121
- }
122
- `,
123
- },
124
- {
125
- code: `
126
- let first;
127
- let second;
128
- let third;
129
- first = (second = third = 5);
130
- `,
131
- snapshot: `
132
- let first;
133
- let second;
134
- let third;
135
- first = (second = third = 5);
136
- ~
137
- Prefer separate assignment statements for readability instead of chaining assignments.
138
- `,
139
- },
140
- {
141
- code: `
142
- let first;
143
- let second;
144
- first ||= second ||= 1;
145
- `,
146
- snapshot: `
147
- let first;
148
- let second;
149
- first ||= second ||= 1;
150
- ~~~
151
- Prefer separate assignment statements for readability instead of chaining assignments.
152
- `,
153
- },
154
- {
155
- code: `
156
- let first;
157
- let second;
158
- first ??= second ??= 0;
159
- `,
160
- snapshot: `
161
- let first;
162
- let second;
163
- first ??= second ??= 0;
164
- ~~~
165
- Prefer separate assignment statements for readability instead of chaining assignments.
166
- `,
167
- },
168
- {
169
- code: `
170
- let first;
171
- let second;
172
- first += second += 5;
173
- `,
174
- snapshot: `
175
- let first;
176
- let second;
177
- first += second += 5;
178
- ~~
179
- Prefer separate assignment statements for readability instead of chaining assignments.
180
- `,
181
- },
182
- {
183
- code: `
184
- let first;
185
- let second;
186
- first |= second |= 3;
187
- `,
188
- snapshot: `
189
- let first;
190
- let second;
191
- first |= second |= 3;
192
- ~~
193
- Prefer separate assignment statements for readability instead of chaining assignments.
194
- `,
195
- },
196
- ],
197
- valid: [
198
- `let first = 1;`,
199
- `let first = 1, second = 2;`,
200
- `let first = 1; let second = 2;`,
201
- `let first; let second; first = 1; second = 2;`,
202
- `let first; let second; first = 1; second = first;`,
203
- `const value = getValue();`,
204
- `let first; first = 1;`,
205
- `
206
- let first;
207
- let second;
208
- first = 1;
209
- second = 2;
210
- `,
211
- `
212
- let first;
213
- let second;
214
- let third;
215
- first = 1;
216
- second = 2;
217
- third = 3;
218
- `,
219
- `
220
- const calculate = (value: number) => {
221
- let first;
222
- let second;
223
- first = value;
224
- second = value;
225
- return first + second;
226
- };
227
- `,
228
- `
229
- class MyClass {
230
- method() {
231
- let first;
232
- let second;
233
- first = 0;
234
- second = 0;
235
- }
236
- }
237
- `,
238
- `
239
- let result = "";
240
- result += "a" + "b";
241
- `,
242
- `
243
- let result = 0;
244
- result += 1 + 2;
245
- `,
246
- `
247
- let result = 0;
248
- result += 1 * 2;
249
- `,
250
- `
251
- let result = 0;
252
- result += 1 - 2;
253
- `,
254
- `
255
- let result = 0;
256
- result += 1 / 2;
257
- `,
258
- `
259
- let result = 0;
260
- result += 1 ** 2;
261
- `,
262
- ],
263
- });
@@ -1,58 +0,0 @@
1
- import * as tsutils from "ts-api-utils";
2
- import * as ts from "typescript";
3
-
4
- import { getTSNodeRange } from "../getTSNodeRange.js";
5
- import { typescriptLanguage } from "../language.js";
6
- import { unwrapParenthesizedExpression } from "../utils/unwrapParenthesizedExpression.js";
7
- import { unwrapParenthesizedExpressionsParent } from "../utils/unwrapParentParenthesizedExpressions.js";
8
-
9
- export default typescriptLanguage.createRule({
10
- about: {
11
- description:
12
- "Reports using chained assignment expressions (e.g., a = b = c).",
13
- id: "chainedAssignments",
14
- preset: "stylistic",
15
- },
16
- messages: {
17
- noChainedAssignment: {
18
- primary:
19
- "Prefer separate assignment statements for readability instead of chaining assignments.",
20
- secondary: [
21
- "Chained assignments can be hard to read and can lead to unexpected behavior with variable scoping and type inference.",
22
- "Each assignment creates a reference to the same value, which may cause confusion when dealing with mutable values.",
23
- ],
24
- suggestions: [
25
- "Break the chained assignment into separate assignment statements, one for each variable.",
26
- ],
27
- },
28
- },
29
- setup(context) {
30
- return {
31
- visitors: {
32
- BinaryExpression: (node) => {
33
- if (!tsutils.isAssignmentKind(node.operatorToken.kind)) {
34
- return;
35
- }
36
-
37
- const rightSide = unwrapParenthesizedExpression(node.right);
38
- if (
39
- !ts.isBinaryExpression(rightSide) ||
40
- !tsutils.isAssignmentKind(rightSide.operatorToken.kind)
41
- ) {
42
- return;
43
- }
44
-
45
- const parent = unwrapParenthesizedExpressionsParent(node);
46
- if (ts.isBinaryExpression(parent)) {
47
- return;
48
- }
49
-
50
- context.report({
51
- message: "noChainedAssignment",
52
- range: getTSNodeRange(node.operatorToken, context.sourceFile),
53
- });
54
- },
55
- },
56
- };
57
- },
58
- });