@flint.fyi/ts 0.14.5 → 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} +23 -15
  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 +4 -6
  27. package/lib/plugin.d.ts +79 -50
  28. package/lib/plugin.js +16 -1
  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 +18 -10
  107. package/lib/rules/forDirections.test.d.ts +1 -0
  108. package/lib/rules/forDirections.test.js +26 -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 -82
  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 -30
  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 -100
  350. package/src/rules/forDirections.ts +0 -163
  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,49 +0,0 @@
1
- import { ruleTester } from "./ruleTester.js";
2
- import rule from "./sequences.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- const a = (1, 2);
9
- `,
10
- snapshot: `
11
- const a = (1, 2);
12
- ~
13
- The "sequence" (comma) operator is often confusing and a sign of mistaken logic.
14
- `,
15
- },
16
- {
17
- code: `
18
- function f() {
19
- return (g(), h());
20
- }
21
- `,
22
- snapshot: `
23
- function f() {
24
- return (g(), h());
25
- ~
26
- The "sequence" (comma) operator is often confusing and a sign of mistaken logic.
27
- }
28
- `,
29
- },
30
- {
31
- code: `
32
- for ((a = 1, b = 2); ; ) {
33
- }
34
- `,
35
- snapshot: `
36
- for ((a = 1, b = 2); ; ) {
37
- ~
38
- The "sequence" (comma) operator is often confusing and a sign of mistaken logic.
39
- }
40
- `,
41
- },
42
- ],
43
- valid: [
44
- `const a = [1, 2];`,
45
- `const a = (1 + 2);`,
46
- `function f() { g(); h(); }`,
47
- `for (let i = 0; i < 10; i += 1) {}`,
48
- ],
49
- });
@@ -1,37 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { getTSNodeRange } from "../getTSNodeRange.js";
4
- import { typescriptLanguage } from "../language.js";
5
-
6
- export default typescriptLanguage.createRule({
7
- about: {
8
- description: "Reports using the comma operator in expressions.",
9
- id: "sequences",
10
- preset: "untyped",
11
- },
12
- messages: {
13
- noSequences: {
14
- primary:
15
- 'The "sequence" (comma) operator is often confusing and a sign of mistaken logic.',
16
- secondary: [
17
- "The comma operator can make code harder to read and may hide side effects.",
18
- "Prefer separate expressions instead of using a single sequence.",
19
- ],
20
- suggestions: ["Split the expression into separate statements."],
21
- },
22
- },
23
- setup(context) {
24
- return {
25
- visitors: {
26
- BinaryExpression: (node) => {
27
- if (node.operatorToken.kind === ts.SyntaxKind.CommaToken) {
28
- context.report({
29
- message: "noSequences",
30
- range: getTSNodeRange(node.operatorToken, context.sourceFile),
31
- });
32
- }
33
- },
34
- },
35
- };
36
- },
37
- });
@@ -1,148 +0,0 @@
1
- import { ruleTester } from "./ruleTester.js";
2
- import rule from "./shadowedRestrictedNames.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- let undefined = 5;
9
- `,
10
- snapshot: `
11
- let undefined = 5;
12
- ~~~~~~~~~
13
- This variable misleadingly shadows the global \`undefined\`.
14
- `,
15
- },
16
- {
17
- code: `
18
- const NaN = 123;
19
- `,
20
- snapshot: `
21
- const NaN = 123;
22
- ~~~
23
- This variable misleadingly shadows the global \`NaN\`.
24
- `,
25
- },
26
- {
27
- code: `
28
- var Infinity = 100;
29
- `,
30
- snapshot: `
31
- var Infinity = 100;
32
- ~~~~~~~~
33
- This variable misleadingly shadows the global \`Infinity\`.
34
- `,
35
- },
36
- {
37
- code: `
38
- function test(arguments) {
39
- return arguments.length;
40
- }
41
- `,
42
- snapshot: `
43
- function test(arguments) {
44
- ~~~~~~~~~
45
- This variable misleadingly shadows the global \`arguments\`.
46
- return arguments.length;
47
- }
48
- `,
49
- },
50
- {
51
- code: `
52
- function eval() {
53
- return 42;
54
- }
55
- `,
56
- snapshot: `
57
- function eval() {
58
- ~~~~
59
- This variable misleadingly shadows the global \`eval\`.
60
- return 42;
61
- }
62
- `,
63
- },
64
- {
65
- code: `
66
- const arrowFunc = (undefined) => undefined;
67
- `,
68
- snapshot: `
69
- const arrowFunc = (undefined) => undefined;
70
- ~~~~~~~~~
71
- This variable misleadingly shadows the global \`undefined\`.
72
- `,
73
- },
74
- {
75
- code: `
76
- class NaN {
77
- constructor() {}
78
- }
79
- `,
80
- snapshot: `
81
- class NaN {
82
- ~~~
83
- This variable misleadingly shadows the global \`NaN\`.
84
- constructor() {}
85
- }
86
- `,
87
- },
88
- {
89
- code: `
90
- const obj = {
91
- method(eval) {
92
- return eval;
93
- }
94
- };
95
- `,
96
- snapshot: `
97
- const obj = {
98
- method(eval) {
99
- ~~~~
100
- This variable misleadingly shadows the global \`eval\`.
101
- return eval;
102
- }
103
- };
104
- `,
105
- },
106
- {
107
- code: `
108
- function test() {
109
- const { undefined } = obj;
110
- }
111
- `,
112
- snapshot: `
113
- function test() {
114
- const { undefined } = obj;
115
- ~~~~~~~~~
116
- This variable misleadingly shadows the global \`undefined\`.
117
- }
118
- `,
119
- },
120
- {
121
- code: `
122
- function test() {
123
- const [NaN] = array;
124
- }
125
- `,
126
- snapshot: `
127
- function test() {
128
- const [NaN] = array;
129
- ~~~
130
- This variable misleadingly shadows the global \`NaN\`.
131
- }
132
- `,
133
- },
134
- ],
135
- valid: [
136
- `let value = undefined;`,
137
- `const result = NaN;`,
138
- `const max = Infinity;`,
139
- `function test() { return arguments; }`,
140
- `const code = eval("1 + 1");`,
141
- `let myValue = 5;`,
142
- `function myFunction() {}`,
143
- `class MyClass {}`,
144
- `const obj = { undefined: 5 };`,
145
- `const key = "undefined";`,
146
- `obj.undefined = 5;`,
147
- ],
148
- });
@@ -1,105 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { getTSNodeRange } from "../getTSNodeRange.js";
4
- import { typescriptLanguage } from "../language.js";
5
-
6
- const restrictedNames = new Set([
7
- "arguments",
8
- "eval",
9
- "Infinity",
10
- "NaN",
11
- "undefined",
12
- ]);
13
-
14
- export default typescriptLanguage.createRule({
15
- about: {
16
- description:
17
- "Reports variable declarations that shadow JavaScript's restricted names.",
18
- id: "shadowedRestrictedNames",
19
- preset: "untyped",
20
- },
21
- messages: {
22
- shadowedRestrictedName: {
23
- primary: "This variable misleadingly shadows the global `{{ name }}`.",
24
- secondary: [
25
- "JavaScript has certain built-in global identifiers that are considered restricted because shadowing them can lead to confusing or erroneous code.",
26
- "When you declare a variable with a restricted name, it shadows the global identifier and can cause unexpected behavior.",
27
- ],
28
- suggestions: [
29
- "Use a different variable name that doesn't shadow a restricted name.",
30
- ],
31
- },
32
- },
33
- setup(context) {
34
- function checkIdentifier(node: ts.Identifier): void {
35
- if (restrictedNames.has(node.text)) {
36
- context.report({
37
- data: {
38
- name: node.text,
39
- },
40
- message: "shadowedRestrictedName",
41
- range: getTSNodeRange(node, context.sourceFile),
42
- });
43
- }
44
- }
45
-
46
- function checkBindingName(name: ts.BindingName): void {
47
- if (ts.isIdentifier(name)) {
48
- checkIdentifier(name);
49
- } else if (
50
- ts.isObjectBindingPattern(name) ||
51
- ts.isArrayBindingPattern(name)
52
- ) {
53
- for (const element of name.elements) {
54
- if (ts.isBindingElement(element)) {
55
- checkBindingName(element.name);
56
- }
57
- }
58
- }
59
- }
60
-
61
- function checkParameters(
62
- parameters: ts.NodeArray<ts.ParameterDeclaration>,
63
- ): void {
64
- for (const parameter of parameters) {
65
- checkBindingName(parameter.name);
66
- }
67
- }
68
-
69
- return {
70
- visitors: {
71
- ArrowFunction: (node) => {
72
- checkParameters(node.parameters);
73
- },
74
- ClassDeclaration: (node) => {
75
- if (node.name) {
76
- checkIdentifier(node.name);
77
- }
78
- },
79
- ClassExpression: (node) => {
80
- if (node.name) {
81
- checkIdentifier(node.name);
82
- }
83
- },
84
- FunctionDeclaration: (node) => {
85
- if (node.name) {
86
- checkIdentifier(node.name);
87
- }
88
- checkParameters(node.parameters);
89
- },
90
- FunctionExpression: (node) => {
91
- if (node.name) {
92
- checkIdentifier(node.name);
93
- }
94
- checkParameters(node.parameters);
95
- },
96
- MethodDeclaration: (node) => {
97
- checkParameters(node.parameters);
98
- },
99
- VariableDeclaration: (node) => {
100
- checkBindingName(node.name);
101
- },
102
- },
103
- };
104
- },
105
- });
@@ -1,111 +0,0 @@
1
- import { ruleTester } from "./ruleTester.js";
2
- import rule from "./sparseArrays.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- const array = [1, , 3];
9
- `,
10
- snapshot: `
11
- const array = [1, , 3];
12
- ~
13
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
14
- `,
15
- },
16
- {
17
- code: `
18
- const array = [, 2, 3];
19
- `,
20
- snapshot: `
21
- const array = [, 2, 3];
22
- ~
23
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
24
- `,
25
- },
26
- {
27
- code: `
28
- const array = [1, , , 4];
29
- `,
30
- snapshot: `
31
- const array = [1, , , 4];
32
- ~
33
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
34
- ~
35
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
36
- `,
37
- },
38
- {
39
- code: `
40
- const nested = [[1, , 3], [4, 5, 6]];
41
- `,
42
- snapshot: `
43
- const nested = [[1, , 3], [4, 5, 6]];
44
- ~
45
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
46
- `,
47
- },
48
- {
49
- code: `
50
- const result = [
51
- 1,
52
- ,
53
- 3
54
- ];
55
- `,
56
- snapshot: `
57
- const result = [
58
- 1,
59
- ,
60
- ~
61
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
62
- 3
63
- ];
64
- `,
65
- },
66
- {
67
- code: `
68
- const matrix = [
69
- [1, 2, 3],
70
- [4, , 6],
71
- [7, 8, 9]
72
- ];
73
- `,
74
- snapshot: `
75
- const matrix = [
76
- [1, 2, 3],
77
- [4, , 6],
78
- ~
79
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
80
- [7, 8, 9]
81
- ];
82
- `,
83
- },
84
- {
85
- code: `
86
- function getArray() {
87
- return [1, , 3];
88
- }
89
- `,
90
- snapshot: `
91
- function getArray() {
92
- return [1, , 3];
93
- ~
94
- Sparse arrays with "holes" (empty slots) are misleading and behave differently from \`undefined\` values.
95
- }
96
- `,
97
- },
98
- ],
99
- valid: [
100
- `const array = [1, 2, 3];`,
101
- `const array = [];`,
102
- `const array = [1];`,
103
- `const array = [1, undefined, 3];`,
104
- `const array = [undefined, 2, 3];`,
105
- `const array = [1, 2, undefined];`,
106
- `const array = [1, 2, 3,];`,
107
- `const nested = [[1, undefined, 3], [4, 5, 6]];`,
108
- `const matrix = [[1, 2, 3], [4, undefined, 6], [7, 8, 9]];`,
109
- `const values = [null, undefined, 0, false, ""];`,
110
- ],
111
- });
@@ -1,61 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { typescriptLanguage } from "../language.js";
4
-
5
- export default typescriptLanguage.createRule({
6
- about: {
7
- description: "Reports array literals with holes (sparse arrays).",
8
- id: "sparseArrays",
9
- preset: "logical",
10
- },
11
- messages: {
12
- noSparseArray: {
13
- primary:
14
- 'Sparse arrays with "holes" (empty slots) are misleading and behave differently from `undefined` values.',
15
- secondary: [
16
- "Array methods treat holes inconsistently, which can lead to unexpected behavior and bugs.",
17
- "Using explicit `undefined` values makes the intent clear and ensures consistent behavior.",
18
- ],
19
- suggestions: [
20
- "Replace holes with explicit `undefined` values.",
21
- "Remove unintended commas if the holes are accidental.",
22
- ],
23
- },
24
- },
25
- setup(context) {
26
- return {
27
- visitors: {
28
- OmittedExpression: (node) => {
29
- const parent = node.parent;
30
- if (!ts.isArrayLiteralExpression(parent)) {
31
- return;
32
- }
33
-
34
- const syntaxList = parent
35
- .getChildren(context.sourceFile)
36
- .find((child) => child.kind === ts.SyntaxKind.SyntaxList);
37
-
38
- if (!syntaxList) {
39
- return;
40
- }
41
-
42
- const children = syntaxList.getChildren(context.sourceFile);
43
- const omittedIndex = children.indexOf(node);
44
-
45
- for (let i = omittedIndex + 1; i < children.length; i++) {
46
- if (children[i].kind === ts.SyntaxKind.CommaToken) {
47
- context.report({
48
- message: "noSparseArray",
49
- range: {
50
- begin: children[i].getStart(context.sourceFile),
51
- end: children[i].getEnd(),
52
- },
53
- });
54
- break;
55
- }
56
- }
57
- },
58
- },
59
- };
60
- },
61
- });
@@ -1,90 +0,0 @@
1
- import { ruleTester } from "./ruleTester.js";
2
- import rule from "./symbolDescriptions.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- const symbol = Symbol();
9
- `,
10
- snapshot: `
11
- const symbol = Symbol();
12
- ~~~~~~~~
13
- Symbols without descriptions are more difficult to debug or reason about.
14
- `,
15
- },
16
- {
17
- code: `
18
- const uniqueKey = Symbol();
19
- `,
20
- snapshot: `
21
- const uniqueKey = Symbol();
22
- ~~~~~~~~
23
- Symbols without descriptions are more difficult to debug or reason about.
24
- `,
25
- },
26
- {
27
- code: `
28
- const symbols = [Symbol(), Symbol()];
29
- `,
30
- snapshot: `
31
- const symbols = [Symbol(), Symbol()];
32
- ~~~~~~~~
33
- Symbols without descriptions are more difficult to debug or reason about.
34
- ~~~~~~~~
35
- Symbols without descriptions are more difficult to debug or reason about.
36
- `,
37
- },
38
- {
39
- code: `
40
- function createSymbol() {
41
- return Symbol();
42
- }
43
- `,
44
- snapshot: `
45
- function createSymbol() {
46
- return Symbol();
47
- ~~~~~~~~
48
- Symbols without descriptions are more difficult to debug or reason about.
49
- }
50
- `,
51
- },
52
- {
53
- code: `
54
- const obj = {
55
- key: Symbol(),
56
- };
57
- `,
58
- snapshot: `
59
- const obj = {
60
- key: Symbol(),
61
- ~~~~~~~~
62
- Symbols without descriptions are more difficult to debug or reason about.
63
- };
64
- `,
65
- },
66
- {
67
- code: `
68
- const value = condition ? Symbol() : null;
69
- `,
70
- snapshot: `
71
- const value = condition ? Symbol() : null;
72
- ~~~~~~~~
73
- Symbols without descriptions are more difficult to debug or reason about.
74
- `,
75
- },
76
- ],
77
- valid: [
78
- `const symbol = Symbol("description");`,
79
- `const uniqueKey = Symbol("uniqueKey");`,
80
- `const mySymbol = Symbol("my symbol");`,
81
- `const symbols = [Symbol("first"), Symbol("second")];`,
82
- `function createSymbol() { return Symbol("created"); }`,
83
- `const obj = { key: Symbol("key") };`,
84
- `const value = Symbol.for("global");`,
85
- `const iterator = Symbol.iterator;`,
86
- `const hasInstance = Symbol.hasInstance;`,
87
- `const primitiveValue = Symbol.toPrimitive;`,
88
- `Symbol("valid")`,
89
- ],
90
- });
@@ -1,47 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { typescriptLanguage } from "../language.js";
4
-
5
- export default typescriptLanguage.createRule({
6
- about: {
7
- description: "Reports Symbol() calls without description arguments.",
8
- id: "symbolDescriptions",
9
- preset: "stylistic",
10
- },
11
- messages: {
12
- missingDescription: {
13
- primary:
14
- "Symbols without descriptions are more difficult to debug or reason about.",
15
- secondary: [
16
- "Creating a symbol without a description makes debugging difficult, as the symbol's purpose isn't clear when inspecting it.",
17
- "While the description doesn't affect the symbol's uniqueness, it appears in the symbol's string representation and can be accessed via `Symbol.prototype.description`.",
18
- ],
19
- suggestions: [
20
- "Add a descriptive string argument to the Symbol constructor that explains the symbol's purpose.",
21
- ],
22
- },
23
- },
24
- setup(context) {
25
- return {
26
- visitors: {
27
- CallExpression: (node) => {
28
- if (
29
- !ts.isIdentifier(node.expression) ||
30
- node.expression.text !== "Symbol" ||
31
- node.arguments.length
32
- ) {
33
- return;
34
- }
35
-
36
- context.report({
37
- message: "missingDescription",
38
- range: {
39
- begin: node.getStart(context.sourceFile),
40
- end: node.getEnd(),
41
- },
42
- });
43
- },
44
- },
45
- };
46
- },
47
- });