@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
@@ -21,7 +21,7 @@ export default typescriptLanguage.createRule({
21
21
  setup(context) {
22
22
  return {
23
23
  visitors: {
24
- Identifier: (node) => {
24
+ Identifier: (node, { sourceFile, typeChecker }) => {
25
25
  if (ts.isVariableDeclaration(node.parent) &&
26
26
  node.parent.name === node) {
27
27
  return;
@@ -56,15 +56,15 @@ export default typescriptLanguage.createRule({
56
56
  return;
57
57
  }
58
58
  // TODO: This rule is untyped, so it should use scope analysis
59
- // https://github.com/JoshuaKGoldberg/flint/issues/400
60
- if (!context.typeChecker.getSymbolAtLocation(node)) {
59
+ // https://github.com/flint-fyi/flint/issues/400
60
+ if (!typeChecker.getSymbolAtLocation(node)) {
61
61
  context.report({
62
62
  data: {
63
63
  name: node.text,
64
64
  },
65
65
  message: "undefinedVariable",
66
66
  range: {
67
- begin: node.getStart(context.sourceFile),
67
+ begin: node.getStart(sourceFile),
68
68
  end: node.getEnd(),
69
69
  },
70
70
  });
@@ -74,3 +74,4 @@ export default typescriptLanguage.createRule({
74
74
  };
75
75
  },
76
76
  });
77
+ //# sourceMappingURL=undefinedVariables.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=undefinedVariables.test.d.ts.map
@@ -78,3 +78,4 @@ const result = first + second;
78
78
  `const array = [1, 2, 3]; array.forEach(item => console.log(item));`,
79
79
  ],
80
80
  });
81
+ //# sourceMappingURL=undefinedVariables.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports files with Unicode Byte Order Marks (BOMs).";
3
3
  readonly id: "unicodeBOMs";
4
4
  readonly preset: "stylistic";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noBOM", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noBOM", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=unicodeBOMs.d.ts.map
@@ -16,26 +16,33 @@ export default typescriptLanguage.createRule({
16
16
  },
17
17
  },
18
18
  setup(context) {
19
- const text = context.sourceFile.getFullText();
20
- if (text.charCodeAt(0) !== 0xfeff) {
21
- return {};
22
- }
23
- context.report({
24
- message: "noBOM",
25
- range: {
26
- begin: 0,
27
- end: 1,
28
- },
29
- suggestions: [
30
- {
31
- id: "removeBOM",
32
- range: {
33
- begin: 0,
34
- end: 1,
35
- },
36
- text: "",
19
+ return {
20
+ visitors: {
21
+ SourceFile: (node) => {
22
+ const text = node.getFullText();
23
+ if (text.charCodeAt(0) !== 0xfeff) {
24
+ return {};
25
+ }
26
+ context.report({
27
+ message: "noBOM",
28
+ range: {
29
+ begin: 0,
30
+ end: 1,
31
+ },
32
+ suggestions: [
33
+ {
34
+ id: "removeBOM",
35
+ range: {
36
+ begin: 0,
37
+ end: 1,
38
+ },
39
+ text: "",
40
+ },
41
+ ],
42
+ });
37
43
  },
38
- ],
39
- });
44
+ },
45
+ };
40
46
  },
41
47
  });
48
+ //# sourceMappingURL=unicodeBOMs.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=unicodeBOMs.test.d.ts.map
@@ -64,3 +64,4 @@ const value = 1;`,
64
64
  `function test() { return 42; }`,
65
65
  ],
66
66
  });
67
+ //# sourceMappingURL=unicodeBOMs.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports standalone block statements that don't create a meaningful scope.";
3
3
  readonly id: "unnecessaryBlocks";
4
4
  readonly preset: "stylistic";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "unnecessaryBlock", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "unnecessaryBlock", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=unnecessaryBlocks.d.ts.map
@@ -58,13 +58,13 @@ export default typescriptLanguage.createRule({
58
58
  }
59
59
  return {
60
60
  visitors: {
61
- Block: (node) => {
61
+ Block: (node, { sourceFile }) => {
62
62
  if (!isValidBlock(node)) {
63
63
  context.report({
64
64
  message: "unnecessaryBlock",
65
65
  range: {
66
- begin: node.getStart(context.sourceFile),
67
- end: node.getStart(context.sourceFile) + 1,
66
+ begin: node.getStart(sourceFile),
67
+ end: node.getStart(sourceFile) + 1,
68
68
  },
69
69
  });
70
70
  }
@@ -73,3 +73,4 @@ export default typescriptLanguage.createRule({
73
73
  };
74
74
  },
75
75
  });
76
+ //# sourceMappingURL=unnecessaryBlocks.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=unnecessaryBlocks.test.d.ts.map
@@ -145,3 +145,4 @@ label: {
145
145
  `,
146
146
  ],
147
147
  });
148
+ //# sourceMappingURL=unnecessaryBlocks.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports catch clauses that only rethrow the caught error without modification.";
3
3
  readonly id: "unnecessaryCatches";
4
4
  readonly preset: "logical";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "unnecessaryCatch", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "unnecessaryCatch", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=unnecessaryCatches.d.ts.map
@@ -21,7 +21,7 @@ export default typescriptLanguage.createRule({
21
21
  setup(context) {
22
22
  return {
23
23
  visitors: {
24
- CatchClause: (node) => {
24
+ CatchClause: (node, { sourceFile }) => {
25
25
  if (!node.variableDeclaration || !ts.isBlock(node.block)) {
26
26
  return;
27
27
  }
@@ -47,8 +47,8 @@ export default typescriptLanguage.createRule({
47
47
  return;
48
48
  }
49
49
  const range = {
50
- begin: node.getStart(context.sourceFile),
51
- end: node.getStart(context.sourceFile) + "catch".length,
50
+ begin: node.getStart(sourceFile),
51
+ end: node.getStart(sourceFile) + "catch".length,
52
52
  };
53
53
  context.report({
54
54
  fix: {
@@ -66,3 +66,4 @@ export default typescriptLanguage.createRule({
66
66
  };
67
67
  },
68
68
  });
69
+ //# sourceMappingURL=unnecessaryCatches.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=unnecessaryCatches.test.d.ts.map
@@ -208,3 +208,4 @@ try {
208
208
  `,
209
209
  ],
210
210
  });
211
+ //# sourceMappingURL=unnecessaryCatches.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports string concatenation using the + operator when both operands are string literals.";
3
3
  readonly id: "unnecessaryConcatenation";
4
4
  readonly preset: "stylistic";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "unnecessaryConcatenation", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "unnecessaryConcatenation", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=unnecessaryConcatenation.d.ts.map
@@ -22,13 +22,13 @@ export default typescriptLanguage.createRule({
22
22
  setup(context) {
23
23
  return {
24
24
  visitors: {
25
- BinaryExpression: (node) => {
25
+ BinaryExpression: (node, { sourceFile }) => {
26
26
  if (node.operatorToken.kind === ts.SyntaxKind.PlusToken &&
27
27
  ts.isStringLiteral(node.left) &&
28
28
  ts.isStringLiteral(node.right)) {
29
29
  context.report({
30
30
  message: "unnecessaryConcatenation",
31
- range: getTSNodeRange(node.operatorToken, context.sourceFile),
31
+ range: getTSNodeRange(node.operatorToken, sourceFile),
32
32
  });
33
33
  }
34
34
  },
@@ -36,3 +36,4 @@ export default typescriptLanguage.createRule({
36
36
  };
37
37
  },
38
38
  });
39
+ //# sourceMappingURL=unnecessaryConcatenation.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=unnecessaryConcatenation.test.d.ts.map
@@ -85,3 +85,4 @@ const longString = "This is a very long string that " +
85
85
  `const value = "prefix" + getValue();`,
86
86
  ],
87
87
  });
88
+ //# sourceMappingURL=unnecessaryConcatenation.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports negating the left operand of `in` or `instanceof` relations.";
3
3
  readonly id: "unsafeNegations";
4
4
  readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "preferNegatingRelation", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "preferNegatingRelation", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=unsafeNegations.d.ts.map
@@ -24,7 +24,7 @@ export default typescriptLanguage.createRule({
24
24
  setup(context) {
25
25
  return {
26
26
  visitors: {
27
- BinaryExpression: (node) => {
27
+ BinaryExpression: (node, { sourceFile }) => {
28
28
  const operator = operatorStrings.get(node.operatorToken.kind);
29
29
  if (!operator) {
30
30
  return;
@@ -34,7 +34,7 @@ export default typescriptLanguage.createRule({
34
34
  left.operator !== ts.SyntaxKind.ExclamationToken) {
35
35
  return;
36
36
  }
37
- const begin = left.getStart(context.sourceFile);
37
+ const begin = left.getStart(sourceFile);
38
38
  context.report({
39
39
  data: { operator },
40
40
  message: "preferNegatingRelation",
@@ -48,3 +48,4 @@ export default typescriptLanguage.createRule({
48
48
  };
49
49
  },
50
50
  });
51
+ //# sourceMappingURL=unsafeNegations.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=unsafeNegations.test.d.ts.map
@@ -61,3 +61,4 @@ const exists = !key in object;
61
61
  `!flag && key in object;`,
62
62
  ],
63
63
  });
64
+ //# sourceMappingURL=unsafeNegations.test.js.map
@@ -10,3 +10,4 @@ export declare enum AnyType {
10
10
  * otherwise it returns `AnyType.Safe`.
11
11
  */
12
12
  export declare function discriminateAnyType(type: ts.Type, checker: ts.TypeChecker, program: ts.Program, tsNode: ts.Node): AnyType;
13
+ //# sourceMappingURL=discriminateAnyType.d.ts.map
@@ -39,3 +39,4 @@ function discriminateAnyTypeWorker(type, checker, program, tsNode, visited) {
39
39
  }
40
40
  return AnyType.Safe;
41
41
  }
42
+ //# sourceMappingURL=discriminateAnyType.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function getConstrainedTypeAtLocation(node: ts.Node, typeChecker: ts.TypeChecker): ts.Type;
3
+ //# sourceMappingURL=getConstrainedType.d.ts.map
@@ -2,3 +2,4 @@ export function getConstrainedTypeAtLocation(node, typeChecker) {
2
2
  const type = typeChecker.getTypeAtLocation(node);
3
3
  return typeChecker.getBaseConstraintOfType(type) ?? type;
4
4
  }
5
+ //# sourceMappingURL=getConstrainedType.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function getThisExpression(node: ts.Node): null | ts.ThisExpression;
3
+ //# sourceMappingURL=getThisExpression.d.ts.map
@@ -21,3 +21,4 @@ function skipParentheses(node) {
21
21
  }
22
22
  return node;
23
23
  }
24
+ //# sourceMappingURL=getThisExpression.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function isTypeRecursive(type: ts.Type, predicate: (t: ts.Type) => boolean): boolean;
3
+ //# sourceMappingURL=isTypeRecursive.d.ts.map
@@ -3,3 +3,4 @@ export function isTypeRecursive(type, predicate) {
3
3
  ? type.types.some((subType) => isTypeRecursive(subType, predicate))
4
4
  : predicate(type);
5
5
  }
6
+ //# sourceMappingURL=isTypeRecursive.js.map
@@ -11,3 +11,4 @@ export declare function isUnsafeAssignment(type: ts.Type, receiver: ts.Type, che
11
11
  receiver: ts.Type;
12
12
  sender: ts.Type;
13
13
  };
14
+ //# sourceMappingURL=isUnsafeAssignment.d.ts.map
@@ -74,3 +74,4 @@ function isUnsafeAssignmentWorker(type, receiver, checker, senderNode, visited)
74
74
  }
75
75
  return false;
76
76
  }
77
+ //# sourceMappingURL=isUnsafeAssignment.js.map
@@ -2,3 +2,4 @@ import * as ts from "typescript";
2
2
  export declare function isComparisonOperator(token: ts.BinaryOperatorToken): boolean;
3
3
  export declare function isEqualityOperator(token: ts.BinaryOperatorToken): boolean;
4
4
  export declare function isNegatedEqualityOperator(token: ts.BinaryOperatorToken): boolean;
5
+ //# sourceMappingURL=operators.d.ts.map
@@ -34,3 +34,4 @@ export function isNegatedEqualityOperator(token) {
34
34
  return false;
35
35
  }
36
36
  }
37
+ //# sourceMappingURL=operators.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports attempting to delete variables with the delete operator.";
3
3
  readonly id: "variableDeletions";
4
4
  readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noDeleteVar", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noDeleteVar", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=variableDeletions.d.ts.map
@@ -22,12 +22,12 @@ export default typescriptLanguage.createRule({
22
22
  setup(context) {
23
23
  return {
24
24
  visitors: {
25
- DeleteExpression: (node) => {
25
+ DeleteExpression: (node, { sourceFile }) => {
26
26
  if (node.expression.kind === ts.SyntaxKind.Identifier) {
27
27
  context.report({
28
28
  message: "noDeleteVar",
29
29
  range: {
30
- begin: node.getStart(context.sourceFile),
30
+ begin: node.getStart(sourceFile),
31
31
  end: node.getEnd(),
32
32
  },
33
33
  });
@@ -37,3 +37,4 @@ export default typescriptLanguage.createRule({
37
37
  };
38
38
  },
39
39
  });
40
+ //# sourceMappingURL=variableDeletions.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=variableDeletions.test.d.ts.map
@@ -73,3 +73,4 @@ for (let index = 0; index < 10; index++) {
73
73
  `const array = [1, 2, 3]; delete array[0];`,
74
74
  ],
75
75
  });
76
+ //# sourceMappingURL=variableDeletions.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports using the void operator.";
3
3
  readonly id: "voidOperator";
4
4
  readonly preset: "stylistic";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noVoid", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noVoid", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=voidOperator.d.ts.map
@@ -21,11 +21,11 @@ export default typescriptLanguage.createRule({
21
21
  setup(context) {
22
22
  return {
23
23
  visitors: {
24
- VoidExpression: (node) => {
24
+ VoidExpression: (node, { sourceFile }) => {
25
25
  context.report({
26
26
  message: "noVoid",
27
27
  range: {
28
- begin: node.getStart(context.sourceFile),
28
+ begin: node.getStart(sourceFile),
29
29
  end: node.getEnd(),
30
30
  },
31
31
  });
@@ -34,3 +34,4 @@ export default typescriptLanguage.createRule({
34
34
  };
35
35
  },
36
36
  });
37
+ //# sourceMappingURL=voidOperator.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=voidOperator.test.d.ts.map
@@ -96,3 +96,4 @@ const callback = () => void action();
96
96
  `function returns() { return; }`,
97
97
  ],
98
98
  });
99
+ //# sourceMappingURL=voidOperator.test.js.map
@@ -0,0 +1,7 @@
1
+ declare const _default: import("@flint.fyi/core").Rule<{
2
+ readonly description: "Reports using with statements";
3
+ readonly id: "withStatements";
4
+ readonly preset: "untyped";
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "withStatement", undefined>;
6
+ export default _default;
7
+ //# sourceMappingURL=withStatements.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { typescriptLanguage } from "../language.js";
2
+ const withKeyword = "with";
3
+ export default typescriptLanguage.createRule({
4
+ about: {
5
+ description: "Reports using with statements",
6
+ id: "withStatements",
7
+ preset: "untyped",
8
+ },
9
+ messages: {
10
+ withStatement: {
11
+ primary: "`with` statements are deprecated, unreliable, and difficult to reason about.",
12
+ secondary: [
13
+ "The with statement is problematic because it adds members of an object to the current scope, making it impossible to tell what a variable inside the block actually refers to.",
14
+ "If an object doesn't have an expected variable, you'll end up modifying a global instead of the expected property.",
15
+ ],
16
+ suggestions: [
17
+ "Create a variable with the content of the with expression and access its properties instead.",
18
+ ],
19
+ },
20
+ },
21
+ setup(context) {
22
+ return {
23
+ visitors: {
24
+ WithStatement: (node) => {
25
+ context.report({
26
+ message: "withStatement",
27
+ range: {
28
+ begin: node.getStart(),
29
+ end: node.getStart() + withKeyword.length,
30
+ },
31
+ });
32
+ },
33
+ },
34
+ };
35
+ },
36
+ });
37
+ //# sourceMappingURL=withStatements.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=withStatements.test.d.ts.map
@@ -0,0 +1,27 @@
1
+ import { ruleTester } from "./ruleTester.js";
2
+ import rule from "./withStatements.js";
3
+ ruleTester.describe(rule, {
4
+ invalid: [
5
+ {
6
+ code: `
7
+ with (container.property) {
8
+ property.value = true;
9
+ }
10
+ `,
11
+ snapshot: `
12
+ with (container.property) {
13
+ ~~~~
14
+ \`with\` statements are deprecated, unreliable, and difficult to reason about.
15
+ property.value = true;
16
+ }
17
+ `,
18
+ },
19
+ ],
20
+ valid: [
21
+ `
22
+ let property = container.property;
23
+ property.value = true;
24
+ `,
25
+ ],
26
+ });
27
+ //# sourceMappingURL=withStatements.test.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function declarationIncludesGlobal(declaration: ts.Declaration): boolean;
3
+ //# sourceMappingURL=declarationIncludesGlobal.d.ts.map
@@ -3,3 +3,4 @@ export function declarationIncludesGlobal(declaration) {
3
3
  return (sourceFile.hasNoDefaultLib ||
4
4
  /\/lib\.[^/]*\.d\.ts$/.test(sourceFile.fileName));
5
5
  }
6
+ //# sourceMappingURL=declarationIncludesGlobal.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function declarationsIncludeGlobal(declarations: ts.Declaration[]): boolean;
3
+ //# sourceMappingURL=declarationsIncludeGlobal.d.ts.map
@@ -2,3 +2,4 @@ import { declarationIncludesGlobal } from "./declarationIncludesGlobal.js";
2
2
  export function declarationsIncludeGlobal(declarations) {
3
3
  return declarations.some(declarationIncludesGlobal);
4
4
  }
5
+ //# sourceMappingURL=declarationsIncludeGlobal.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function getDeclarationsIfGlobal(node: ts.Expression, typeChecker: ts.TypeChecker): ts.Declaration[] | undefined;
3
+ //# sourceMappingURL=getDeclarationsIfGlobal.d.ts.map
@@ -5,3 +5,4 @@ export function getDeclarationsIfGlobal(node, typeChecker) {
5
5
  ? declarations
6
6
  : undefined;
7
7
  }
8
+ //# sourceMappingURL=getDeclarationsIfGlobal.js.map
@@ -6,3 +6,4 @@ import * as ts from "typescript";
6
6
  * @returns An array of identifier nodes that modify the variable.
7
7
  */
8
8
  export declare function getModifyingReferences(identifier: ts.Identifier, sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): ts.Identifier[];
9
+ //# sourceMappingURL=getModifyingReferences.d.ts.map
@@ -40,3 +40,4 @@ export function getModifyingReferences(identifier, sourceFile, typeChecker) {
40
40
  visit(sourceFile);
41
41
  return modifyingReferences;
42
42
  }
43
+ //# sourceMappingURL=getModifyingReferences.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function hasSameTokens(nodeA: ts.Node, nodeB: ts.Node, sourceFile: ts.SourceFile): boolean;
3
+ //# sourceMappingURL=hasSameTokens.d.ts.map
@@ -28,3 +28,4 @@ export function hasSameTokens(nodeA, nodeB, sourceFile) {
28
28
  }
29
29
  return queueA.length === queueB.length;
30
30
  }
31
+ //# sourceMappingURL=hasSameTokens.js.map
@@ -0,0 +1,3 @@
1
+ import * as ts from "typescript";
2
+ export declare function isFunction(node: ts.Expression, typeChecker: ts.TypeChecker): boolean;
3
+ //# sourceMappingURL=isFunction.d.ts.map
@@ -0,0 +1,6 @@
1
+ export function isFunction(node, typeChecker) {
2
+ const objectType = typeChecker.getTypeAtLocation(node);
3
+ const callSignatures = objectType.getCallSignatures();
4
+ return !!callSignatures.length;
5
+ }
6
+ //# sourceMappingURL=isFunction.js.map
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function isGlobalDeclaration(node: ts.Expression, typeChecker: ts.TypeChecker): boolean;
3
+ //# sourceMappingURL=isGlobalDeclaration.d.ts.map
@@ -2,3 +2,4 @@ import { getDeclarationsIfGlobal } from "./getDeclarationsIfGlobal.js";
2
2
  export function isGlobalDeclaration(node, typeChecker) {
3
3
  return !!getDeclarationsIfGlobal(node, typeChecker);
4
4
  }
5
+ //# sourceMappingURL=isGlobalDeclaration.js.map
@@ -3,3 +3,4 @@ import * as ts from "typescript";
3
3
  * TODO: Use a scope analyzer (#400).
4
4
  */
5
5
  export declare function isGlobalDeclarationOfName(node: ts.Node, name: string, typeChecker: ts.TypeChecker): boolean;
6
+ //# sourceMappingURL=isGlobalDeclarationOfName.d.ts.map
@@ -33,3 +33,4 @@ function isDeclarationOfName(node, name) {
33
33
  }
34
34
  return false;
35
35
  }
36
+ //# sourceMappingURL=isGlobalDeclarationOfName.js.map
@@ -6,3 +6,4 @@ import * as ts from "typescript";
6
6
  * TODO: Use a scope manager (#400).
7
7
  */
8
8
  export declare function isGlobalVariable(node: ts.Expression, typeChecker: ts.TypeChecker): boolean;
9
+ //# sourceMappingURL=isGlobalVariable.d.ts.map