@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,214 +0,0 @@
1
- import rule from "./octalEscapes.js";
2
- import { ruleTester } from "./ruleTester.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- const a = "\\1";
9
- `,
10
- snapshot: `
11
- const a = "\\1";
12
- ~~
13
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
14
- `,
15
- },
16
- {
17
- code: `
18
- const a = "\\2";
19
- `,
20
- snapshot: `
21
- const a = "\\2";
22
- ~~
23
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
24
- `,
25
- },
26
- {
27
- code: `
28
- const a = "\\7";
29
- `,
30
- snapshot: `
31
- const a = "\\7";
32
- ~~
33
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
34
- `,
35
- },
36
- {
37
- code: `
38
- const a = "\\00";
39
- `,
40
- snapshot: `
41
- const a = "\\00";
42
- ~~~
43
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
44
- `,
45
- },
46
- {
47
- code: `
48
- const a = "\\01";
49
- `,
50
- snapshot: `
51
- const a = "\\01";
52
- ~~~
53
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
54
- `,
55
- },
56
- {
57
- code: `
58
- const a = "\\02";
59
- `,
60
- snapshot: `
61
- const a = "\\02";
62
- ~~~
63
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
64
- `,
65
- },
66
- {
67
- code: `
68
- const a = "\\07";
69
- `,
70
- snapshot: `
71
- const a = "\\07";
72
- ~~~
73
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
74
- `,
75
- },
76
- {
77
- code: `
78
- const a = "\\377";
79
- `,
80
- snapshot: `
81
- const a = "\\377";
82
- ~~~~
83
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
84
- `,
85
- },
86
- {
87
- code: `
88
- const a = "\\12";
89
- `,
90
- snapshot: `
91
- const a = "\\12";
92
- ~~~
93
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
94
- `,
95
- },
96
- {
97
- code: `
98
- const a = "before\\1after";
99
- `,
100
- snapshot: `
101
- const a = "before\\1after";
102
- ~~
103
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
104
- `,
105
- },
106
- {
107
- code: `
108
- const a = "before\\01after";
109
- `,
110
- snapshot: `
111
- const a = "before\\01after";
112
- ~~~
113
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
114
- `,
115
- },
116
- {
117
- code: `
118
- const a = '\\1';
119
- `,
120
- snapshot: `
121
- const a = '\\1';
122
- ~~
123
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
124
- `,
125
- },
126
- {
127
- code: `
128
- const a = '\\01';
129
- `,
130
- snapshot: `
131
- const a = '\\01';
132
- ~~~
133
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
134
- `,
135
- },
136
- {
137
- code: `
138
- const a = \`\\1\`;
139
- `,
140
- snapshot: `
141
- const a = \`\\1\`;
142
- ~~
143
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
144
- `,
145
- },
146
- {
147
- code: `
148
- const a = \`\\01\`;
149
- `,
150
- snapshot: `
151
- const a = \`\\01\`;
152
- ~~~
153
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
154
- `,
155
- },
156
- {
157
- code: `
158
- const a = \`before\\1after\`;
159
- `,
160
- snapshot: `
161
- const a = \`before\\1after\`;
162
- ~~
163
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
164
- `,
165
- },
166
- {
167
- code: `
168
- const x = 5;
169
- const a = \`value: \${x} \\1\`;
170
- `,
171
- snapshot: `
172
- const x = 5;
173
- const a = \`value: \${x} \\1\`;
174
- ~~
175
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
176
- `,
177
- },
178
- {
179
- code: `
180
- const x = 5;
181
- const a = \`\\01 value: \${x}\`;
182
- `,
183
- snapshot: `
184
- const x = 5;
185
- const a = \`\\01 value: \${x}\`;
186
- ~~~
187
- Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.
188
- `,
189
- },
190
- ],
191
- valid: [
192
- `const a = "\\0";`,
193
- `const a = "\\8";`,
194
- `const a = "\\9";`,
195
- `const a = "\\x01";`,
196
- `const a = "\\u0001";`,
197
- `const a = "\\n";`,
198
- `const a = "\\t";`,
199
- `const a = "\\\\0";`,
200
- `const a = "\\\\1";`,
201
- `const a = "before\\0after";`,
202
- `const a = "before\\8after";`,
203
- `const a = "before\\9after";`,
204
- `const a = '\\0';`,
205
- `const a = '\\8';`,
206
- `const a = '\\9';`,
207
- `const a = \`\\0\`;`,
208
- `const a = \`\\8\`;`,
209
- `const a = \`\\9\`;`,
210
- `const x = 5; const a = \`value: \${x} \\0\`;`,
211
- `const x = 5; const a = \`\\0 value: \${x}\`;`,
212
- `const x = 5; const a = \`\\8 \${x} \\9\`;`,
213
- ],
214
- });
@@ -1,85 +0,0 @@
1
- import * as ts from "typescript";
2
-
3
- import { typescriptLanguage } from "../language.js";
4
-
5
- /**
6
- * Finds the position and length of an octal escape sequence in a string.
7
- * Returns undefined if no octal escape is found.
8
- */
9
- function findOctalEscape(
10
- text: string,
11
- ): undefined | { index: number; length: number } {
12
- // Remove quotes from the string literal
13
- const content = text.slice(1, -1);
14
-
15
- // Match octal escapes: \0 followed by [0-7], or \1-7 optionally followed by [0-7]
16
- // But exclude escaped backslashes (\\)
17
- const octalEscapePattern = /(?<!\\)\\0[0-7]|(?<!\\)\\[1-7][0-7]*/;
18
- const match = octalEscapePattern.exec(content);
19
-
20
- if (!match) {
21
- return undefined;
22
- }
23
-
24
- // Add 1 to account for the opening quote
25
- return {
26
- index: match.index + 1,
27
- length: match[0].length,
28
- };
29
- }
30
-
31
- export default typescriptLanguage.createRule({
32
- about: {
33
- description: "Reports using octal escape sequences in string literals.",
34
- id: "octalEscapes",
35
- preset: "logical",
36
- },
37
- messages: {
38
- noOctalEscape: {
39
- primary:
40
- "Prefer hexadecimal or Unicode escape sequences over legacy octal escape sequences.",
41
- secondary: [
42
- "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.",
43
- "They are less readable than their modern alternatives and can cause portability issues.",
44
- ],
45
- suggestions: [
46
- "Use hexadecimal escape sequences (e.g., `\\x01`) or Unicode escape sequences (e.g., `\\u0001`) instead.",
47
- ],
48
- },
49
- },
50
- setup(context) {
51
- function checkNode(node: ts.Node) {
52
- const text = node.getText(context.sourceFile);
53
- const octalEscape = findOctalEscape(text);
54
-
55
- if (!octalEscape) {
56
- return;
57
- }
58
-
59
- const nodeStart = node.getStart(context.sourceFile);
60
- context.report({
61
- message: "noOctalEscape",
62
- range: {
63
- begin: nodeStart + octalEscape.index,
64
- end: nodeStart + octalEscape.index + octalEscape.length,
65
- },
66
- });
67
- }
68
-
69
- return {
70
- visitors: {
71
- NoSubstitutionTemplateLiteral: checkNode,
72
- StringLiteral: checkNode,
73
- TemplateExpression: (node) => {
74
- // Check the head of the template
75
- checkNode(node.head);
76
-
77
- // Check each template span
78
- for (const span of node.templateSpans) {
79
- checkNode(span.literal);
80
- }
81
- },
82
- },
83
- };
84
- },
85
- });
@@ -1,246 +0,0 @@
1
- import rule from "./octalNumbers.js";
2
- import { ruleTester } from "./ruleTester.js";
3
-
4
- ruleTester.describe(rule, {
5
- invalid: [
6
- {
7
- code: `
8
- const value = 07;
9
- `,
10
- snapshot: `
11
- const value = 07;
12
- ~~
13
- This legacy octal numeric literal evaluates to 7. Did you mean that value, or to use a modern octal syntax such as 0o7?
14
- `,
15
- suggestions: [
16
- {
17
- id: "useModernOctalSyntax",
18
- updated: `
19
- const value = 0o7;
20
- `,
21
- },
22
- {
23
- id: "removeLeadingZero",
24
- updated: `
25
- const value = 7;
26
- `,
27
- },
28
- ],
29
- },
30
- {
31
- code: `
32
- const value = 077;
33
- `,
34
- snapshot: `
35
- const value = 077;
36
- ~~~
37
- This legacy octal numeric literal evaluates to 63. Did you mean that value, or to use a modern octal syntax such as 0o77?
38
- `,
39
- suggestions: [
40
- {
41
- id: "useModernOctalSyntax",
42
- updated: `
43
- const value = 0o77;
44
- `,
45
- },
46
- {
47
- id: "removeLeadingZero",
48
- updated: `
49
- const value = 77;
50
- `,
51
- },
52
- ],
53
- },
54
- {
55
- code: `
56
- const value = 0123;
57
- `,
58
- snapshot: `
59
- const value = 0123;
60
- ~~~~
61
- This legacy octal numeric literal evaluates to 83. Did you mean that value, or to use a modern octal syntax such as 0o123?
62
- `,
63
- suggestions: [
64
- {
65
- id: "useModernOctalSyntax",
66
- updated: `
67
- const value = 0o123;
68
- `,
69
- },
70
- {
71
- id: "removeLeadingZero",
72
- updated: `
73
- const value = 123;
74
- `,
75
- },
76
- ],
77
- },
78
- {
79
- code: `
80
- const value = 01234567;
81
- `,
82
- snapshot: `
83
- const value = 01234567;
84
- ~~~~~~~~
85
- This legacy octal numeric literal evaluates to 342391. Did you mean that value, or to use a modern octal syntax such as 0o1234567?
86
- `,
87
- suggestions: [
88
- {
89
- id: "useModernOctalSyntax",
90
- updated: `
91
- const value = 0o1234567;
92
- `,
93
- },
94
- {
95
- id: "removeLeadingZero",
96
- updated: `
97
- const value = 1234567;
98
- `,
99
- },
100
- ],
101
- },
102
- {
103
- code: `
104
- const values = [01, 02, 03];
105
- `,
106
- snapshot: `
107
- const values = [01, 02, 03];
108
- ~~
109
- This legacy octal numeric literal evaluates to 1. Did you mean that value, or to use a modern octal syntax such as 0o1?
110
- ~~
111
- This legacy octal numeric literal evaluates to 2. Did you mean that value, or to use a modern octal syntax such as 0o2?
112
- ~~
113
- This legacy octal numeric literal evaluates to 3. Did you mean that value, or to use a modern octal syntax such as 0o3?
114
- `,
115
- suggestions: [
116
- {
117
- id: "useModernOctalSyntax",
118
- updated: `
119
- const values = [0o1, 02, 03];
120
- `,
121
- },
122
- {
123
- id: "removeLeadingZero",
124
- updated: `
125
- const values = [1, 02, 03];
126
- `,
127
- },
128
- {
129
- id: "useModernOctalSyntax",
130
- updated: `
131
- const values = [01, 0o2, 03];
132
- `,
133
- },
134
- {
135
- id: "removeLeadingZero",
136
- updated: `
137
- const values = [01, 2, 03];
138
- `,
139
- },
140
- {
141
- id: "useModernOctalSyntax",
142
- updated: `
143
- const values = [01, 02, 0o3];
144
- `,
145
- },
146
- {
147
- id: "removeLeadingZero",
148
- updated: `
149
- const values = [01, 02, 3];
150
- `,
151
- },
152
- ],
153
- },
154
- {
155
- code: `
156
- function calculate() {
157
- return 077;
158
- }
159
- `,
160
- snapshot: `
161
- function calculate() {
162
- return 077;
163
- ~~~
164
- This legacy octal numeric literal evaluates to 63. Did you mean that value, or to use a modern octal syntax such as 0o77?
165
- }
166
- `,
167
- suggestions: [
168
- {
169
- id: "useModernOctalSyntax",
170
- updated: `
171
- function calculate() {
172
- return 0o77;
173
- }
174
- `,
175
- },
176
- {
177
- id: "removeLeadingZero",
178
- updated: `
179
- function calculate() {
180
- return 77;
181
- }
182
- `,
183
- },
184
- ],
185
- },
186
- {
187
- code: `
188
- const result = 010 + 020;
189
- `,
190
- snapshot: `
191
- const result = 010 + 020;
192
- ~~~
193
- This legacy octal numeric literal evaluates to 8. Did you mean that value, or to use a modern octal syntax such as 0o10?
194
- ~~~
195
- This legacy octal numeric literal evaluates to 16. Did you mean that value, or to use a modern octal syntax such as 0o20?
196
- `,
197
- suggestions: [
198
- {
199
- id: "useModernOctalSyntax",
200
- updated: `
201
- const result = 0o10 + 020;
202
- `,
203
- },
204
- {
205
- id: "removeLeadingZero",
206
- updated: `
207
- const result = 10 + 020;
208
- `,
209
- },
210
- {
211
- id: "useModernOctalSyntax",
212
- updated: `
213
- const result = 010 + 0o20;
214
- `,
215
- },
216
- {
217
- id: "removeLeadingZero",
218
- updated: `
219
- const result = 010 + 20;
220
- `,
221
- },
222
- ],
223
- },
224
- ],
225
- valid: [
226
- `const value = 0;`,
227
- `const value = 1;`,
228
- `const value = 10;`,
229
- `const value = 100;`,
230
- `const value = 0x7F;`,
231
- `const value = 0o77;`,
232
- `const value = 0O77;`,
233
- `const value = 0b111;`,
234
- `const value = 0B111;`,
235
- `const value = 0.8;`,
236
- `const value = 8;`,
237
- `const value = 9;`,
238
- `const value = 123;`,
239
- `const values = [0, 1, 10, 100];`,
240
- `const hex = 0xFF;`,
241
- `const binary = 0b1010;`,
242
- `const octal = 0o755;`,
243
- `const notOctal = 08;`,
244
- `const alsoNotOctal = 09;`,
245
- ],
246
- });
@@ -1,75 +0,0 @@
1
- import { typescriptLanguage } from "../language.js";
2
-
3
- export default typescriptLanguage.createRule({
4
- about: {
5
- description: "Reports using legacy octal numeric literals.",
6
- id: "octalNumbers",
7
- preset: "untyped",
8
- },
9
- messages: {
10
- noOctalNumber: {
11
- primary:
12
- "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: [
19
- "Use the explicit octal syntax (e.g., `0o77`) introduced in ES6, which is clearer and works in both strict and non-strict modes.",
20
- "Remove the leading `0` if you intended to use the decimal value.",
21
- ],
22
- },
23
- },
24
- setup(context) {
25
- return {
26
- visitors: {
27
- NumericLiteral: (node) => {
28
- const text = node.getText(context.sourceFile);
29
-
30
- // Check for legacy octal literal: starts with 0 followed by octal digits (0-7)
31
- // But not just "0" alone, and not modern formats like 0x, 0o, 0b
32
- // cspell:ignore xobi
33
- if (
34
- text.length > 1 &&
35
- text.startsWith("0") &&
36
- text[1] >= "0" &&
37
- text[1] <= "7" &&
38
- !/^0[xobi]/i.test(text)
39
- ) {
40
- const range = {
41
- begin: node.getStart(context.sourceFile),
42
- end: node.getEnd(),
43
- };
44
-
45
- // Parse the octal value
46
- const octalValue = parseInt(text, 8);
47
- const modernOctalSyntax = `0o${text.slice(1)}`;
48
- const decimalWithoutLeadingZero = text.slice(1);
49
-
50
- context.report({
51
- data: {
52
- equivalent: modernOctalSyntax,
53
- raw: octalValue.toString(),
54
- },
55
- message: "noOctalNumber",
56
- range,
57
- suggestions: [
58
- {
59
- id: "useModernOctalSyntax",
60
- range,
61
- text: modernOctalSyntax,
62
- },
63
- {
64
- id: "removeLeadingZero",
65
- range,
66
- text: decimalWithoutLeadingZero,
67
- },
68
- ],
69
- });
70
- }
71
- },
72
- },
73
- };
74
- },
75
- });