@flint.fyi/ts 0.14.6 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/lib/collectReferencedFilePaths.d.ts +1 -0
  2. package/lib/collectReferencedFilePaths.js +3 -2
  3. package/lib/convertTypeScriptDiagnosticToLanguageFileDiagnostic.d.ts +14 -0
  4. package/lib/{formatDiagnostic.js → convertTypeScriptDiagnosticToLanguageFileDiagnostic.js} +22 -14
  5. package/lib/createTypeScriptFileFromProgram.d.ts +4 -1
  6. package/lib/createTypeScriptFileFromProgram.js +25 -30
  7. package/lib/createTypeScriptFileFromProjectService.d.ts +3 -6
  8. package/lib/createTypeScriptFileFromProjectService.js +5 -11
  9. package/lib/directives/parseDirectivesFromTypeScriptFile.d.ts +8 -0
  10. package/lib/directives/parseDirectivesFromTypeScriptFile.js +12 -4
  11. package/lib/directives/parseDirectivesFromTypeScriptFile.test.d.ts +1 -0
  12. package/lib/directives/parseDirectivesFromTypeScriptFile.test.js +1 -0
  13. package/lib/getFirstEnumValues.d.ts +1 -0
  14. package/lib/getFirstEnumValues.js +1 -0
  15. package/lib/getFirstEnumValues.test.d.ts +1 -0
  16. package/lib/getFirstEnumValues.test.js +1 -0
  17. package/lib/getTSNodeRange.d.ts +1 -0
  18. package/lib/getTSNodeRange.js +1 -0
  19. package/lib/index.d.ts +6 -0
  20. package/lib/index.js +5 -0
  21. package/lib/language.d.ts +3 -2
  22. package/lib/language.js +7 -52
  23. package/lib/nodes.d.ts +1 -0
  24. package/lib/nodes.js +1 -0
  25. package/lib/normalizeRange.d.ts +1 -0
  26. package/lib/normalizeRange.js +1 -0
  27. package/lib/plugin.d.ts +79 -50
  28. package/lib/plugin.js +15 -0
  29. package/lib/prepareTypeScriptBasedLanguage.d.ts +11 -0
  30. package/lib/prepareTypeScriptBasedLanguage.js +59 -0
  31. package/lib/prepareTypeScriptFile.d.ts +9 -4
  32. package/lib/prepareTypeScriptFile.js +8 -2
  33. package/lib/rules/anyReturns.d.ts +2 -1
  34. package/lib/rules/anyReturns.js +22 -22
  35. package/lib/rules/anyReturns.test.d.ts +1 -0
  36. package/lib/rules/anyReturns.test.js +1 -0
  37. package/lib/rules/asyncPromiseExecutors.d.ts +2 -1
  38. package/lib/rules/asyncPromiseExecutors.js +4 -3
  39. package/lib/rules/asyncPromiseExecutors.test.d.ts +1 -0
  40. package/lib/rules/asyncPromiseExecutors.test.js +1 -0
  41. package/lib/rules/caseDeclarations.d.ts +3 -1
  42. package/lib/rules/caseDeclarations.js +7 -6
  43. package/lib/rules/caseDeclarations.test.d.ts +1 -0
  44. package/lib/rules/caseDeclarations.test.js +1 -0
  45. package/lib/rules/caseDuplicates.d.ts +2 -1
  46. package/lib/rules/caseDuplicates.js +4 -3
  47. package/lib/rules/caseDuplicates.test.d.ts +1 -0
  48. package/lib/rules/caseDuplicates.test.js +1 -0
  49. package/lib/rules/chainedAssignments.d.ts +2 -1
  50. package/lib/rules/chainedAssignments.js +3 -2
  51. package/lib/rules/chainedAssignments.test.d.ts +1 -0
  52. package/lib/rules/chainedAssignments.test.js +1 -0
  53. package/lib/rules/classAssignments.d.ts +2 -1
  54. package/lib/rules/classAssignments.js +4 -3
  55. package/lib/rules/classAssignments.test.d.ts +1 -0
  56. package/lib/rules/classAssignments.test.js +1 -0
  57. package/lib/rules/consecutiveNonNullAssertions.d.ts +2 -1
  58. package/lib/rules/consecutiveNonNullAssertions.js +1 -0
  59. package/lib/rules/consecutiveNonNullAssertions.test.d.ts +1 -0
  60. package/lib/rules/consecutiveNonNullAssertions.test.js +1 -0
  61. package/lib/rules/constantAssignments.d.ts +2 -1
  62. package/lib/rules/constantAssignments.js +4 -3
  63. package/lib/rules/constantAssignments.test.d.ts +1 -0
  64. package/lib/rules/constantAssignments.test.js +1 -0
  65. package/lib/rules/constructorReturns.d.ts +2 -1
  66. package/lib/rules/constructorReturns.js +3 -2
  67. package/lib/rules/constructorReturns.test.d.ts +1 -0
  68. package/lib/rules/constructorReturns.test.js +1 -0
  69. package/lib/rules/debuggerStatements.d.ts +2 -1
  70. package/lib/rules/debuggerStatements.js +1 -0
  71. package/lib/rules/debuggerStatements.test.d.ts +1 -0
  72. package/lib/rules/debuggerStatements.test.js +1 -0
  73. package/lib/rules/defaultCaseLast.d.ts +2 -1
  74. package/lib/rules/defaultCaseLast.js +4 -3
  75. package/lib/rules/defaultCaseLast.test.d.ts +1 -0
  76. package/lib/rules/defaultCaseLast.test.js +1 -0
  77. package/lib/rules/duplicateArguments.d.ts +3 -1
  78. package/lib/rules/duplicateArguments.js +3 -2
  79. package/lib/rules/duplicateArguments.test.d.ts +1 -0
  80. package/lib/rules/duplicateArguments.test.js +1 -0
  81. package/lib/rules/elseIfDuplicates.d.ts +2 -1
  82. package/lib/rules/elseIfDuplicates.js +6 -5
  83. package/lib/rules/elseIfDuplicates.test.d.ts +1 -0
  84. package/lib/rules/elseIfDuplicates.test.js +1 -0
  85. package/lib/rules/emptyBlocks.d.ts +2 -1
  86. package/lib/rules/emptyBlocks.js +12 -10
  87. package/lib/rules/emptyBlocks.test.d.ts +1 -0
  88. package/lib/rules/emptyBlocks.test.js +1 -0
  89. package/lib/rules/emptyDestructures.d.ts +3 -1
  90. package/lib/rules/emptyDestructures.js +3 -2
  91. package/lib/rules/emptyDestructures.test.d.ts +1 -0
  92. package/lib/rules/emptyDestructures.test.js +1 -0
  93. package/lib/rules/emptyStaticBlocks.d.ts +2 -1
  94. package/lib/rules/emptyStaticBlocks.js +5 -4
  95. package/lib/rules/emptyStaticBlocks.test.d.ts +1 -0
  96. package/lib/rules/emptyStaticBlocks.test.js +1 -0
  97. package/lib/rules/exceptionAssignments.d.ts +2 -1
  98. package/lib/rules/exceptionAssignments.js +4 -3
  99. package/lib/rules/exceptionAssignments.test.d.ts +1 -0
  100. package/lib/rules/exceptionAssignments.test.js +1 -0
  101. package/lib/rules/finallyStatementSafety.d.ts +7 -0
  102. package/lib/rules/finallyStatementSafety.js +71 -0
  103. package/lib/rules/finallyStatementSafety.test.d.ts +2 -0
  104. package/lib/rules/finallyStatementSafety.test.js +307 -0
  105. package/lib/rules/forDirections.d.ts +2 -1
  106. package/lib/rules/forDirections.js +3 -2
  107. package/lib/rules/forDirections.test.d.ts +1 -0
  108. package/lib/rules/forDirections.test.js +1 -0
  109. package/lib/rules/forInArrays.d.ts +2 -1
  110. package/lib/rules/forInArrays.js +8 -7
  111. package/lib/rules/forInArrays.test.d.ts +1 -0
  112. package/lib/rules/forInArrays.test.js +1 -0
  113. package/lib/rules/functionAssignments.d.ts +2 -1
  114. package/lib/rules/functionAssignments.js +4 -3
  115. package/lib/rules/functionAssignments.test.d.ts +1 -0
  116. package/lib/rules/functionAssignments.test.js +1 -0
  117. package/lib/rules/functionCurryingRedundancy.d.ts +7 -0
  118. package/lib/rules/functionCurryingRedundancy.js +77 -0
  119. package/lib/rules/functionCurryingRedundancy.test.d.ts +2 -0
  120. package/lib/rules/functionCurryingRedundancy.test.js +172 -0
  121. package/lib/rules/functionNewCalls.d.ts +3 -1
  122. package/lib/rules/functionNewCalls.js +7 -6
  123. package/lib/rules/functionNewCalls.test.d.ts +1 -0
  124. package/lib/rules/functionNewCalls.test.js +1 -0
  125. package/lib/rules/generatorFunctionYields.d.ts +3 -1
  126. package/lib/rules/generatorFunctionYields.js +3 -2
  127. package/lib/rules/generatorFunctionYields.test.d.ts +1 -0
  128. package/lib/rules/generatorFunctionYields.test.js +1 -0
  129. package/lib/rules/globalAssignments.d.ts +2 -1
  130. package/lib/rules/globalAssignments.js +10 -9
  131. package/lib/rules/globalAssignments.test.d.ts +1 -0
  132. package/lib/rules/globalAssignments.test.js +1 -0
  133. package/lib/rules/globalObjectCalls.d.ts +3 -1
  134. package/lib/rules/globalObjectCalls.js +5 -4
  135. package/lib/rules/globalObjectCalls.test.d.ts +1 -0
  136. package/lib/rules/globalObjectCalls.test.js +1 -0
  137. package/lib/rules/namespaceDeclarations.d.ts +2 -1
  138. package/lib/rules/namespaceDeclarations.js +7 -6
  139. package/lib/rules/namespaceDeclarations.test.d.ts +1 -0
  140. package/lib/rules/namespaceDeclarations.test.js +1 -0
  141. package/lib/rules/negativeZeroComparisons.d.ts +2 -1
  142. package/lib/rules/negativeZeroComparisons.js +8 -7
  143. package/lib/rules/negativeZeroComparisons.test.d.ts +1 -0
  144. package/lib/rules/negativeZeroComparisons.test.js +1 -0
  145. package/lib/rules/newExpressions.d.ts +2 -1
  146. package/lib/rules/newExpressions.js +3 -2
  147. package/lib/rules/newExpressions.test.d.ts +1 -0
  148. package/lib/rules/newExpressions.test.js +1 -0
  149. package/lib/rules/newNativeNonConstructors.d.ts +2 -1
  150. package/lib/rules/newNativeNonConstructors.js +6 -5
  151. package/lib/rules/newNativeNonConstructors.test.d.ts +1 -0
  152. package/lib/rules/newNativeNonConstructors.test.js +1 -0
  153. package/lib/rules/nonOctalDecimalEscapes.d.ts +3 -1
  154. package/lib/rules/nonOctalDecimalEscapes.js +4 -3
  155. package/lib/rules/nonOctalDecimalEscapes.test.d.ts +1 -0
  156. package/lib/rules/nonOctalDecimalEscapes.test.js +1 -0
  157. package/lib/rules/numericLiteralParsing.d.ts +2 -1
  158. package/lib/rules/numericLiteralParsing.js +8 -7
  159. package/lib/rules/numericLiteralParsing.test.d.ts +1 -0
  160. package/lib/rules/numericLiteralParsing.test.js +1 -0
  161. package/lib/rules/objectCalls.d.ts +7 -0
  162. package/lib/rules/objectCalls.js +47 -0
  163. package/lib/rules/objectCalls.test.d.ts +2 -0
  164. package/lib/rules/objectCalls.test.js +172 -0
  165. package/lib/rules/objectHasOwns.d.ts +7 -0
  166. package/lib/rules/objectHasOwns.js +74 -0
  167. package/lib/rules/objectHasOwns.test.d.ts +2 -0
  168. package/lib/rules/objectHasOwns.test.js +112 -0
  169. package/lib/rules/objectKeyDuplicates.d.ts +7 -0
  170. package/lib/rules/objectKeyDuplicates.js +91 -0
  171. package/lib/rules/objectKeyDuplicates.test.d.ts +2 -0
  172. package/lib/rules/objectKeyDuplicates.test.js +180 -0
  173. package/lib/rules/objectProto.d.ts +2 -1
  174. package/lib/rules/objectProto.js +5 -4
  175. package/lib/rules/objectProto.test.d.ts +1 -0
  176. package/lib/rules/objectProto.test.js +1 -0
  177. package/lib/rules/objectPrototypeBuiltIns.d.ts +7 -0
  178. package/lib/rules/objectPrototypeBuiltIns.js +65 -0
  179. package/lib/rules/objectPrototypeBuiltIns.test.d.ts +2 -0
  180. package/lib/rules/objectPrototypeBuiltIns.test.js +146 -0
  181. package/lib/rules/octalEscapes.d.ts +2 -1
  182. package/lib/rules/octalEscapes.js +13 -8
  183. package/lib/rules/octalEscapes.test.d.ts +1 -0
  184. package/lib/rules/octalEscapes.test.js +1 -0
  185. package/lib/rules/octalNumbers.d.ts +2 -1
  186. package/lib/rules/octalNumbers.js +4 -3
  187. package/lib/rules/octalNumbers.test.d.ts +1 -0
  188. package/lib/rules/octalNumbers.test.js +1 -0
  189. package/lib/rules/returnAssignments.d.ts +2 -1
  190. package/lib/rules/returnAssignments.js +7 -6
  191. package/lib/rules/returnAssignments.test.d.ts +1 -0
  192. package/lib/rules/returnAssignments.test.js +1 -0
  193. package/lib/rules/ruleTester.d.ts +1 -0
  194. package/lib/rules/ruleTester.js +6 -1
  195. package/lib/rules/selfAssignments.d.ts +2 -1
  196. package/lib/rules/selfAssignments.js +4 -3
  197. package/lib/rules/selfAssignments.test.d.ts +1 -0
  198. package/lib/rules/selfAssignments.test.js +1 -0
  199. package/lib/rules/selfComparisons.d.ts +2 -1
  200. package/lib/rules/selfComparisons.js +4 -3
  201. package/lib/rules/selfComparisons.test.d.ts +1 -0
  202. package/lib/rules/selfComparisons.test.js +1 -0
  203. package/lib/rules/sequences.d.ts +2 -1
  204. package/lib/rules/sequences.js +3 -2
  205. package/lib/rules/sequences.test.d.ts +1 -0
  206. package/lib/rules/sequences.test.js +1 -0
  207. package/lib/rules/shadowedRestrictedNames.d.ts +2 -1
  208. package/lib/rules/shadowedRestrictedNames.js +24 -23
  209. package/lib/rules/shadowedRestrictedNames.test.d.ts +1 -0
  210. package/lib/rules/shadowedRestrictedNames.test.js +1 -0
  211. package/lib/rules/sparseArrays.d.ts +2 -1
  212. package/lib/rules/sparseArrays.js +5 -4
  213. package/lib/rules/sparseArrays.test.d.ts +1 -0
  214. package/lib/rules/sparseArrays.test.js +1 -0
  215. package/lib/rules/symbolDescriptions.d.ts +2 -1
  216. package/lib/rules/symbolDescriptions.js +3 -2
  217. package/lib/rules/symbolDescriptions.test.d.ts +1 -0
  218. package/lib/rules/symbolDescriptions.test.js +1 -0
  219. package/lib/rules/typeofComparisons.d.ts +2 -1
  220. package/lib/rules/typeofComparisons.js +5 -4
  221. package/lib/rules/typeofComparisons.test.d.ts +1 -0
  222. package/lib/rules/typeofComparisons.test.js +1 -0
  223. package/lib/rules/unassignedVariables.d.ts +2 -1
  224. package/lib/rules/unassignedVariables.js +4 -3
  225. package/lib/rules/unassignedVariables.test.d.ts +1 -0
  226. package/lib/rules/unassignedVariables.test.js +1 -0
  227. package/lib/rules/undefinedVariables.d.ts +2 -1
  228. package/lib/rules/undefinedVariables.js +5 -4
  229. package/lib/rules/undefinedVariables.test.d.ts +1 -0
  230. package/lib/rules/undefinedVariables.test.js +1 -0
  231. package/lib/rules/unicodeBOMs.d.ts +2 -1
  232. package/lib/rules/unicodeBOMs.js +27 -20
  233. package/lib/rules/unicodeBOMs.test.d.ts +1 -0
  234. package/lib/rules/unicodeBOMs.test.js +1 -0
  235. package/lib/rules/unnecessaryBlocks.d.ts +2 -1
  236. package/lib/rules/unnecessaryBlocks.js +4 -3
  237. package/lib/rules/unnecessaryBlocks.test.d.ts +1 -0
  238. package/lib/rules/unnecessaryBlocks.test.js +1 -0
  239. package/lib/rules/unnecessaryCatches.d.ts +2 -1
  240. package/lib/rules/unnecessaryCatches.js +4 -3
  241. package/lib/rules/unnecessaryCatches.test.d.ts +1 -0
  242. package/lib/rules/unnecessaryCatches.test.js +1 -0
  243. package/lib/rules/unnecessaryConcatenation.d.ts +2 -1
  244. package/lib/rules/unnecessaryConcatenation.js +3 -2
  245. package/lib/rules/unnecessaryConcatenation.test.d.ts +1 -0
  246. package/lib/rules/unnecessaryConcatenation.test.js +1 -0
  247. package/lib/rules/unsafeNegations.d.ts +2 -1
  248. package/lib/rules/unsafeNegations.js +3 -2
  249. package/lib/rules/unsafeNegations.test.d.ts +1 -0
  250. package/lib/rules/unsafeNegations.test.js +1 -0
  251. package/lib/rules/utils/discriminateAnyType.d.ts +1 -0
  252. package/lib/rules/utils/discriminateAnyType.js +1 -0
  253. package/lib/rules/utils/getConstrainedType.d.ts +1 -0
  254. package/lib/rules/utils/getConstrainedType.js +1 -0
  255. package/lib/rules/utils/getThisExpression.d.ts +1 -0
  256. package/lib/rules/utils/getThisExpression.js +1 -0
  257. package/lib/rules/utils/isTypeRecursive.d.ts +1 -0
  258. package/lib/rules/utils/isTypeRecursive.js +1 -0
  259. package/lib/rules/utils/isUnsafeAssignment.d.ts +1 -0
  260. package/lib/rules/utils/isUnsafeAssignment.js +1 -0
  261. package/lib/rules/utils/operators.d.ts +1 -0
  262. package/lib/rules/utils/operators.js +1 -0
  263. package/lib/rules/variableDeletions.d.ts +2 -1
  264. package/lib/rules/variableDeletions.js +3 -2
  265. package/lib/rules/variableDeletions.test.d.ts +1 -0
  266. package/lib/rules/variableDeletions.test.js +1 -0
  267. package/lib/rules/voidOperator.d.ts +2 -1
  268. package/lib/rules/voidOperator.js +3 -2
  269. package/lib/rules/voidOperator.test.d.ts +1 -0
  270. package/lib/rules/voidOperator.test.js +1 -0
  271. package/lib/rules/withStatements.d.ts +7 -0
  272. package/lib/rules/withStatements.js +37 -0
  273. package/lib/rules/withStatements.test.d.ts +2 -0
  274. package/lib/rules/withStatements.test.js +27 -0
  275. package/lib/utils/declarationIncludesGlobal.d.ts +1 -0
  276. package/lib/utils/declarationIncludesGlobal.js +1 -0
  277. package/lib/utils/declarationsIncludeGlobal.d.ts +1 -0
  278. package/lib/utils/declarationsIncludeGlobal.js +1 -0
  279. package/lib/utils/getDeclarationsIfGlobal.d.ts +1 -0
  280. package/lib/utils/getDeclarationsIfGlobal.js +1 -0
  281. package/lib/utils/getModifyingReferences.d.ts +1 -0
  282. package/lib/utils/getModifyingReferences.js +1 -0
  283. package/lib/utils/hasSameTokens.d.ts +1 -0
  284. package/lib/utils/hasSameTokens.js +1 -0
  285. package/lib/utils/isFunction.d.ts +3 -0
  286. package/lib/utils/isFunction.js +6 -0
  287. package/lib/utils/isGlobalDeclaration.d.ts +1 -0
  288. package/lib/utils/isGlobalDeclaration.js +1 -0
  289. package/lib/utils/isGlobalDeclarationOfName.d.ts +1 -0
  290. package/lib/utils/isGlobalDeclarationOfName.js +1 -0
  291. package/lib/utils/isGlobalVariable.d.ts +1 -0
  292. package/lib/utils/isGlobalVariable.js +1 -0
  293. package/lib/utils/unwrapParentParenthesizedExpressions.d.ts +1 -0
  294. package/lib/utils/unwrapParentParenthesizedExpressions.js +1 -0
  295. package/lib/utils/unwrapParenthesizedExpression.d.ts +1 -0
  296. package/lib/utils/unwrapParenthesizedExpression.js +1 -0
  297. package/package.json +17 -7
  298. package/CHANGELOG.md +0 -91
  299. package/lib/formatDiagnostic.d.ts +0 -10
  300. package/src/collectReferencedFilePaths.ts +0 -37
  301. package/src/createTypeScriptFileFromProgram.ts +0 -86
  302. package/src/createTypeScriptFileFromProjectService.ts +0 -31
  303. package/src/directives/parseDirectivesFromTypeScriptFile.test.ts +0 -108
  304. package/src/directives/parseDirectivesFromTypeScriptFile.ts +0 -31
  305. package/src/formatDiagnostic.ts +0 -166
  306. package/src/getFirstEnumValues.test.ts +0 -51
  307. package/src/getFirstEnumValues.ts +0 -59
  308. package/src/getTSNodeRange.ts +0 -13
  309. package/src/index.ts +0 -7
  310. package/src/language.ts +0 -122
  311. package/src/nodes.ts +0 -146
  312. package/src/normalizeRange.ts +0 -25
  313. package/src/plugin.ts +0 -111
  314. package/src/prepareTypeScriptFile.ts +0 -14
  315. package/src/rules/anyReturns.test.ts +0 -649
  316. package/src/rules/anyReturns.ts +0 -263
  317. package/src/rules/asyncPromiseExecutors.test.ts +0 -72
  318. package/src/rules/asyncPromiseExecutors.ts +0 -61
  319. package/src/rules/caseDeclarations.test.ts +0 -228
  320. package/src/rules/caseDeclarations.ts +0 -70
  321. package/src/rules/caseDuplicates.test.ts +0 -308
  322. package/src/rules/caseDuplicates.ts +0 -57
  323. package/src/rules/chainedAssignments.test.ts +0 -263
  324. package/src/rules/chainedAssignments.ts +0 -58
  325. package/src/rules/classAssignments.test.ts +0 -157
  326. package/src/rules/classAssignments.ts +0 -50
  327. package/src/rules/consecutiveNonNullAssertions.test.ts +0 -33
  328. package/src/rules/consecutiveNonNullAssertions.ts +0 -46
  329. package/src/rules/constantAssignments.test.ts +0 -222
  330. package/src/rules/constantAssignments.ts +0 -78
  331. package/src/rules/constructorReturns.test.ts +0 -97
  332. package/src/rules/constructorReturns.ts +0 -59
  333. package/src/rules/debuggerStatements.test.ts +0 -81
  334. package/src/rules/debuggerStatements.ts +0 -45
  335. package/src/rules/defaultCaseLast.test.ts +0 -196
  336. package/src/rules/defaultCaseLast.ts +0 -54
  337. package/src/rules/duplicateArguments.test.ts +0 -140
  338. package/src/rules/duplicateArguments.ts +0 -58
  339. package/src/rules/elseIfDuplicates.test.ts +0 -177
  340. package/src/rules/elseIfDuplicates.ts +0 -69
  341. package/src/rules/emptyBlocks.test.ts +0 -136
  342. package/src/rules/emptyBlocks.ts +0 -73
  343. package/src/rules/emptyDestructures.test.ts +0 -187
  344. package/src/rules/emptyDestructures.ts +0 -48
  345. package/src/rules/emptyStaticBlocks.test.ts +0 -168
  346. package/src/rules/emptyStaticBlocks.ts +0 -60
  347. package/src/rules/exceptionAssignments.test.ts +0 -265
  348. package/src/rules/exceptionAssignments.ts +0 -77
  349. package/src/rules/forDirections.test.ts +0 -125
  350. package/src/rules/forDirections.ts +0 -174
  351. package/src/rules/forInArrays.test.ts +0 -25
  352. package/src/rules/forInArrays.ts +0 -70
  353. package/src/rules/functionAssignments.test.ts +0 -210
  354. package/src/rules/functionAssignments.ts +0 -51
  355. package/src/rules/functionNewCalls.test.ts +0 -116
  356. package/src/rules/functionNewCalls.ts +0 -75
  357. package/src/rules/generatorFunctionYields.test.ts +0 -152
  358. package/src/rules/generatorFunctionYields.ts +0 -71
  359. package/src/rules/globalAssignments.test.ts +0 -216
  360. package/src/rules/globalAssignments.ts +0 -67
  361. package/src/rules/globalObjectCalls.test.ts +0 -94
  362. package/src/rules/globalObjectCalls.ts +0 -52
  363. package/src/rules/namespaceDeclarations.test.ts +0 -41
  364. package/src/rules/namespaceDeclarations.ts +0 -74
  365. package/src/rules/negativeZeroComparisons.test.ts +0 -210
  366. package/src/rules/negativeZeroComparisons.ts +0 -87
  367. package/src/rules/newExpressions.test.ts +0 -80
  368. package/src/rules/newExpressions.ts +0 -67
  369. package/src/rules/newNativeNonConstructors.test.ts +0 -95
  370. package/src/rules/newNativeNonConstructors.ts +0 -59
  371. package/src/rules/nonOctalDecimalEscapes.test.ts +0 -70
  372. package/src/rules/nonOctalDecimalEscapes.ts +0 -70
  373. package/src/rules/numericLiteralParsing.test.ts +0 -100
  374. package/src/rules/numericLiteralParsing.ts +0 -116
  375. package/src/rules/objectProto.test.ts +0 -97
  376. package/src/rules/objectProto.ts +0 -62
  377. package/src/rules/octalEscapes.test.ts +0 -214
  378. package/src/rules/octalEscapes.ts +0 -85
  379. package/src/rules/octalNumbers.test.ts +0 -246
  380. package/src/rules/octalNumbers.ts +0 -75
  381. package/src/rules/returnAssignments.test.ts +0 -186
  382. package/src/rules/returnAssignments.ts +0 -57
  383. package/src/rules/ruleTester.ts +0 -4
  384. package/src/rules/selfAssignments.test.ts +0 -67
  385. package/src/rules/selfAssignments.ts +0 -50
  386. package/src/rules/selfComparisons.test.ts +0 -298
  387. package/src/rules/selfComparisons.ts +0 -45
  388. package/src/rules/sequences.test.ts +0 -49
  389. package/src/rules/sequences.ts +0 -37
  390. package/src/rules/shadowedRestrictedNames.test.ts +0 -148
  391. package/src/rules/shadowedRestrictedNames.ts +0 -105
  392. package/src/rules/sparseArrays.test.ts +0 -111
  393. package/src/rules/sparseArrays.ts +0 -61
  394. package/src/rules/symbolDescriptions.test.ts +0 -90
  395. package/src/rules/symbolDescriptions.ts +0 -47
  396. package/src/rules/typeofComparisons.test.ts +0 -86
  397. package/src/rules/typeofComparisons.ts +0 -88
  398. package/src/rules/unassignedVariables.test.ts +0 -73
  399. package/src/rules/unassignedVariables.ts +0 -69
  400. package/src/rules/undefinedVariables.test.ts +0 -81
  401. package/src/rules/undefinedVariables.ts +0 -97
  402. package/src/rules/unicodeBOMs.test.ts +0 -67
  403. package/src/rules/unicodeBOMs.ts +0 -44
  404. package/src/rules/unnecessaryBlocks.test.ts +0 -148
  405. package/src/rules/unnecessaryBlocks.ts +0 -89
  406. package/src/rules/unnecessaryCatches.test.ts +0 -211
  407. package/src/rules/unnecessaryCatches.ts +0 -84
  408. package/src/rules/unnecessaryConcatenation.test.ts +0 -88
  409. package/src/rules/unnecessaryConcatenation.ts +0 -44
  410. package/src/rules/unsafeNegations.test.ts +0 -64
  411. package/src/rules/unsafeNegations.ts +0 -59
  412. package/src/rules/utils/discriminateAnyType.ts +0 -66
  413. package/src/rules/utils/getConstrainedType.ts +0 -9
  414. package/src/rules/utils/getThisExpression.ts +0 -24
  415. package/src/rules/utils/isTypeRecursive.ts +0 -10
  416. package/src/rules/utils/isUnsafeAssignment.ts +0 -113
  417. package/src/rules/utils/operators.ts +0 -39
  418. package/src/rules/variableDeletions.test.ts +0 -76
  419. package/src/rules/variableDeletions.ts +0 -43
  420. package/src/rules/voidOperator.test.ts +0 -99
  421. package/src/rules/voidOperator.ts +0 -38
  422. package/src/utils/declarationIncludesGlobal.ts +0 -9
  423. package/src/utils/declarationsIncludeGlobal.ts +0 -7
  424. package/src/utils/getDeclarationsIfGlobal.ts +0 -14
  425. package/src/utils/getModifyingReferences.ts +0 -58
  426. package/src/utils/hasSameTokens.ts +0 -45
  427. package/src/utils/isGlobalDeclaration.ts +0 -10
  428. package/src/utils/isGlobalDeclarationOfName.ts +0 -56
  429. package/src/utils/isGlobalVariable.ts +0 -30
  430. package/src/utils/unwrapParentParenthesizedExpressions.ts +0 -7
  431. package/src/utils/unwrapParenthesizedExpression.ts +0 -9
  432. package/tsconfig.json +0 -9
  433. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,77 @@
1
+ import * as ts from "typescript";
2
+ import { typescriptLanguage } from "../language.js";
3
+ import { isFunction } from "../utils/isFunction.js";
4
+ export default typescriptLanguage.createRule({
5
+ about: {
6
+ description: "Reports using `.apply()` or `.call()` or when the context (`this` value) provides no benefit.",
7
+ id: "functionCurryingRedundancy",
8
+ preset: "logical",
9
+ },
10
+ messages: {
11
+ unnecessaryCall: {
12
+ primary: 'This "currying" of a function without a defined context does nothing and can be simplified.',
13
+ secondary: [
14
+ "Using `.{{ method }}()` with null or undefined as the context provides no benefit over a direct function call.",
15
+ "This adds unnecessary complexity and reduces code readability.",
16
+ ],
17
+ suggestions: [
18
+ "Replace the `.{{ method }}()` with a direct function call.",
19
+ ],
20
+ },
21
+ },
22
+ setup(context) {
23
+ return {
24
+ visitors: {
25
+ CallExpression: (node, { sourceFile, typeChecker }) => {
26
+ if (!ts.isPropertyAccessExpression(node.expression)) {
27
+ return;
28
+ }
29
+ const method = node.expression.name.text;
30
+ if ((method !== "call" && method !== "apply") ||
31
+ !node.arguments.length ||
32
+ !isFunction(node.expression.expression, typeChecker)) {
33
+ return;
34
+ }
35
+ const firstArgument = node.arguments[0];
36
+ if (firstArgument.kind !== ts.SyntaxKind.NullKeyword &&
37
+ !(ts.isIdentifier(firstArgument) &&
38
+ firstArgument.text === "undefined")) {
39
+ return;
40
+ }
41
+ const fixTextCreator = method === "apply" ? createApplyFixText : createCallFixText;
42
+ context.report({
43
+ data: { method },
44
+ fix: {
45
+ range: {
46
+ begin: node.getStart(sourceFile),
47
+ end: node.getEnd(),
48
+ },
49
+ text: fixTextCreator(node.expression.expression.getText(sourceFile), node.arguments.slice(1), sourceFile),
50
+ },
51
+ message: "unnecessaryCall",
52
+ range: {
53
+ begin: node.expression.name.getStart(sourceFile) - 1,
54
+ end: node.getEnd(),
55
+ },
56
+ });
57
+ },
58
+ },
59
+ };
60
+ },
61
+ });
62
+ function createApplyFixText(functionExpression, methodArguments, sourceFile) {
63
+ if (methodArguments.length > 0) {
64
+ const argsArray = methodArguments[0];
65
+ return `${functionExpression}(...${argsArray.getText(sourceFile)})`;
66
+ }
67
+ else {
68
+ return `${functionExpression}()`;
69
+ }
70
+ }
71
+ function createCallFixText(functionExpression, methodArguments, sourceFile) {
72
+ const argsText = methodArguments
73
+ .map((arg) => arg.getText(sourceFile))
74
+ .join(", ");
75
+ return `${functionExpression}(${argsText})`;
76
+ }
77
+ //# sourceMappingURL=functionCurryingRedundancy.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=functionCurryingRedundancy.test.d.ts.map
@@ -0,0 +1,172 @@
1
+ import rule from "./functionCurryingRedundancy.js";
2
+ import { ruleTester } from "./ruleTester.js";
3
+ ruleTester.describe(rule, {
4
+ invalid: [
5
+ {
6
+ code: `
7
+ function add(a, b) {
8
+ return a + b;
9
+ }
10
+ const result = add.call(undefined, 1, 2);
11
+ `,
12
+ output: `
13
+ function add(a, b) {
14
+ return a + b;
15
+ }
16
+ const result = add(1, 2);
17
+ `,
18
+ snapshot: `
19
+ function add(a, b) {
20
+ return a + b;
21
+ }
22
+ const result = add.call(undefined, 1, 2);
23
+ ~~~~~~~~~~~~~~~~~~~~~~
24
+ This "currying" of a function without a defined context does nothing and can be simplified.
25
+ `,
26
+ },
27
+ {
28
+ code: `
29
+ function add(a, b) {
30
+ return a + b;
31
+ }
32
+ const result = add.call(null, 1, 2);
33
+ `,
34
+ output: `
35
+ function add(a, b) {
36
+ return a + b;
37
+ }
38
+ const result = add(1, 2);
39
+ `,
40
+ snapshot: `
41
+ function add(a, b) {
42
+ return a + b;
43
+ }
44
+ const result = add.call(null, 1, 2);
45
+ ~~~~~~~~~~~~~~~~~
46
+ This "currying" of a function without a defined context does nothing and can be simplified.
47
+ `,
48
+ },
49
+ {
50
+ code: `
51
+ function add(a, b) {
52
+ return a + b;
53
+ }
54
+ const result = add.apply(undefined, [1, 2]);
55
+ `,
56
+ output: `
57
+ function add(a, b) {
58
+ return a + b;
59
+ }
60
+ const result = add(...[1, 2]);
61
+ `,
62
+ snapshot: `
63
+ function add(a, b) {
64
+ return a + b;
65
+ }
66
+ const result = add.apply(undefined, [1, 2]);
67
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
68
+ This "currying" of a function without a defined context does nothing and can be simplified.
69
+ `,
70
+ },
71
+ {
72
+ code: `
73
+ function add(a, b) {
74
+ return a + b;
75
+ }
76
+ const result = add.apply(null, [1, 2]);
77
+ `,
78
+ output: `
79
+ function add(a, b) {
80
+ return a + b;
81
+ }
82
+ const result = add(...[1, 2]);
83
+ `,
84
+ snapshot: `
85
+ function add(a, b) {
86
+ return a + b;
87
+ }
88
+ const result = add.apply(null, [1, 2]);
89
+ ~~~~~~~~~~~~~~~~~~~~
90
+ This "currying" of a function without a defined context does nothing and can be simplified.
91
+ `,
92
+ },
93
+ {
94
+ code: `
95
+ const fn = (x: number) => x * 2;
96
+ const value = fn.call(undefined, 5);
97
+ `,
98
+ output: `
99
+ const fn = (x: number) => x * 2;
100
+ const value = fn(5);
101
+ `,
102
+ snapshot: `
103
+ const fn = (x: number) => x * 2;
104
+ const value = fn.call(undefined, 5);
105
+ ~~~~~~~~~~~~~~~~~~~
106
+ This "currying" of a function without a defined context does nothing and can be simplified.
107
+ `,
108
+ },
109
+ {
110
+ code: `
111
+ const callback = function(name: string) {
112
+ return name.toUpperCase();
113
+ };
114
+ callback.apply(null, ["test"]);
115
+ `,
116
+ output: `
117
+ const callback = function(name: string) {
118
+ return name.toUpperCase();
119
+ };
120
+ callback(...["test"]);
121
+ `,
122
+ snapshot: `
123
+ const callback = function(name: string) {
124
+ return name.toUpperCase();
125
+ };
126
+ callback.apply(null, ["test"]);
127
+ ~~~~~~~~~~~~~~~~~~~~~~
128
+ This "currying" of a function without a defined context does nothing and can be simplified.
129
+ `,
130
+ },
131
+ ],
132
+ valid: [
133
+ `function add(a, b) { return a + b; } const result = add(1, 2);`,
134
+ `const obj = { value: 10, getValue: function() { return this.value; } }; obj.getValue();`,
135
+ `const obj = { value: 10 }; function getValue() { return this.value; } const result = getValue.call(obj);`,
136
+ `const obj1 = { method: function() { return 42; } }; const obj2 = {}; obj1.method.call(obj2);`,
137
+ `
138
+ function greet() {
139
+ return this.name;
140
+ }
141
+ const person = { name: "Alice" };
142
+ const result = greet.call(person);
143
+ `,
144
+ `
145
+ const obj = {
146
+ value: 42,
147
+ getValue: function() {
148
+ return this.value;
149
+ }
150
+ };
151
+ const result = obj.getValue.call(obj);
152
+ `,
153
+ // Test case for the bug: interface with apply/call methods that aren't from Function.prototype
154
+ `
155
+ interface CustomInterface {
156
+ apply(...args: unknown[]): void;
157
+ }
158
+
159
+ declare const customObj: CustomInterface;
160
+ customObj.apply(null, "abc");
161
+ `,
162
+ `
163
+ interface CustomInterface {
164
+ call(...args: unknown[]): void;
165
+ }
166
+
167
+ declare const customObj: CustomInterface;
168
+ customObj.call(null, "abc");
169
+ `,
170
+ ],
171
+ });
172
+ //# sourceMappingURL=functionCurryingRedundancy.test.js.map
@@ -1,6 +1,8 @@
1
+ import { TypeScriptFileServices } from "../language.js";
1
2
  declare const _default: import("@flint.fyi/core").Rule<{
2
3
  readonly description: "Reports using the Function constructor to create functions from strings.";
3
4
  readonly id: "functionNewCalls";
4
5
  readonly preset: "logical";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noFunctionConstructor", undefined>;
6
+ }, import("../nodes.js").TSNodesByName, TypeScriptFileServices, "noFunctionConstructor", undefined>;
6
7
  export default _default;
8
+ //# sourceMappingURL=functionNewCalls.d.ts.map
@@ -23,22 +23,22 @@ export default typescriptLanguage.createRule({
23
23
  },
24
24
  },
25
25
  setup(context) {
26
- function checkNode(node) {
27
- if (isFunctionConstructor(node)) {
26
+ function checkNode(node, { sourceFile, typeChecker }) {
27
+ if (isFunctionConstructor(node, typeChecker)) {
28
28
  context.report({
29
29
  message: "noFunctionConstructor",
30
- range: getTSNodeRange(node.expression, context.sourceFile),
30
+ range: getTSNodeRange(node.expression, sourceFile),
31
31
  });
32
32
  }
33
33
  }
34
- function isFunctionConstructor(node) {
34
+ function isFunctionConstructor(node, typeChecker) {
35
35
  if (ts.isIdentifier(node.expression)) {
36
- if (isGlobalDeclarationOfName(node.expression, "Function", context.typeChecker)) {
36
+ if (isGlobalDeclarationOfName(node.expression, "Function", typeChecker)) {
37
37
  return true;
38
38
  }
39
39
  }
40
40
  else if (ts.isPropertyAccessExpression(node.expression) &&
41
- isGlobalDeclaration(node.expression, context.typeChecker)) {
41
+ isGlobalDeclaration(node.expression, typeChecker)) {
42
42
  const propertyName = node.expression.name.text;
43
43
  if (propertyName !== "Function") {
44
44
  return false;
@@ -58,3 +58,4 @@ export default typescriptLanguage.createRule({
58
58
  };
59
59
  },
60
60
  });
61
+ //# sourceMappingURL=functionNewCalls.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=functionNewCalls.test.d.ts.map
@@ -113,3 +113,4 @@ const fn = new CustomFunction();
113
113
  `const fn = new MyFunction();`,
114
114
  ],
115
115
  });
116
+ //# sourceMappingURL=functionNewCalls.test.js.map
@@ -1,6 +1,8 @@
1
+ import { TypeScriptFileServices } from "../language.js";
1
2
  declare const _default: import("@flint.fyi/core").Rule<{
2
3
  readonly description: "Reports generator functions that do not yield values.";
3
4
  readonly id: "generatorFunctionYields";
4
5
  readonly preset: "logical";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "missingYield", undefined>;
6
+ }, import("../nodes.js").TSNodesByName, TypeScriptFileServices, "missingYield", undefined>;
6
7
  export default _default;
8
+ //# sourceMappingURL=generatorFunctionYields.d.ts.map
@@ -29,14 +29,14 @@ export default typescriptLanguage.createRule({
29
29
  MethodDeclaration: checkFunction,
30
30
  },
31
31
  };
32
- function checkFunction(node) {
32
+ function checkFunction(node, { sourceFile }) {
33
33
  if (!node.asteriskToken || !node.body || blockContainsYield(node.body)) {
34
34
  return;
35
35
  }
36
36
  context.report({
37
37
  message: "missingYield",
38
38
  range: {
39
- begin: node.asteriskToken.getStart(context.sourceFile),
39
+ begin: node.asteriskToken.getStart(sourceFile),
40
40
  end: node.asteriskToken.getEnd(),
41
41
  },
42
42
  });
@@ -55,3 +55,4 @@ function blockContainsYield(block) {
55
55
  }
56
56
  return ts.forEachChild(block, checkForYield);
57
57
  }
58
+ //# sourceMappingURL=generatorFunctionYields.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=generatorFunctionYields.test.d.ts.map
@@ -149,3 +149,4 @@ function* generatorWithNestedGenerator() {
149
149
  `,
150
150
  ],
151
151
  });
152
+ //# sourceMappingURL=generatorFunctionYields.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc.";
3
3
  readonly id: "globalAssignments";
4
4
  readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noGlobalAssign", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noGlobalAssign", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=globalAssignments.d.ts.map
@@ -26,30 +26,30 @@ export default typescriptLanguage.createRule({
26
26
  setup(context) {
27
27
  return {
28
28
  visitors: {
29
- BinaryExpression: (node) => {
29
+ BinaryExpression: (node, { sourceFile, typeChecker }) => {
30
30
  if (tsutils.isAssignmentKind(node.operatorToken.kind) &&
31
- isGlobalVariable(node.left, context.typeChecker)) {
31
+ isGlobalVariable(node.left, typeChecker)) {
32
32
  context.report({
33
33
  message: "noGlobalAssign",
34
- range: getTSNodeRange(node.left, context.sourceFile),
34
+ range: getTSNodeRange(node.left, sourceFile),
35
35
  });
36
36
  }
37
37
  },
38
- PostfixUnaryExpression: (node) => {
39
- if (isGlobalVariable(node.operand, context.typeChecker)) {
38
+ PostfixUnaryExpression: (node, { sourceFile, typeChecker }) => {
39
+ if (isGlobalVariable(node.operand, typeChecker)) {
40
40
  context.report({
41
41
  message: "noGlobalAssign",
42
- range: getTSNodeRange(node.operand, context.sourceFile),
42
+ range: getTSNodeRange(node.operand, sourceFile),
43
43
  });
44
44
  }
45
45
  },
46
- PrefixUnaryExpression: (node) => {
46
+ PrefixUnaryExpression: (node, { sourceFile, typeChecker }) => {
47
47
  if ((node.operator === ts.SyntaxKind.PlusPlusToken ||
48
48
  node.operator === ts.SyntaxKind.MinusMinusToken) &&
49
- isGlobalVariable(node.operand, context.typeChecker)) {
49
+ isGlobalVariable(node.operand, typeChecker)) {
50
50
  context.report({
51
51
  message: "noGlobalAssign",
52
- range: getTSNodeRange(node.operand, context.sourceFile),
52
+ range: getTSNodeRange(node.operand, sourceFile),
53
53
  });
54
54
  }
55
55
  },
@@ -57,3 +57,4 @@ export default typescriptLanguage.createRule({
57
57
  };
58
58
  },
59
59
  });
60
+ //# sourceMappingURL=globalAssignments.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=globalAssignments.test.d.ts.map
@@ -213,3 +213,4 @@ function test(NaN: string) {
213
213
  `,
214
214
  ],
215
215
  });
216
+ //# sourceMappingURL=globalAssignments.test.js.map
@@ -1,6 +1,8 @@
1
+ import { TypeScriptFileServices } from "../language.js";
1
2
  declare const _default: import("@flint.fyi/core").Rule<{
2
3
  readonly description: "Reports calling global objects like Math, JSON, or Reflect as functions.";
3
4
  readonly id: "globalObjectCalls";
4
5
  readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noGlobalObjectCall", undefined>;
6
+ }, import("../nodes.js").TSNodesByName, TypeScriptFileServices, "noGlobalObjectCall", undefined>;
6
7
  export default _default;
8
+ //# sourceMappingURL=globalObjectCalls.d.ts.map
@@ -21,16 +21,16 @@ export default typescriptLanguage.createRule({
21
21
  },
22
22
  },
23
23
  setup(context) {
24
- function reportGlobalObjectCall(expression, name) {
24
+ function reportGlobalObjectCall(expression, name, sourceFile) {
25
25
  context.report({
26
26
  data: { name },
27
27
  message: "noGlobalObjectCall",
28
- range: getTSNodeRange(expression, context.sourceFile),
28
+ range: getTSNodeRange(expression, sourceFile),
29
29
  });
30
30
  }
31
- function checkNode({ expression }) {
31
+ function checkNode({ expression }, { sourceFile }) {
32
32
  if (ts.isIdentifier(expression) && globalObjects.has(expression.text)) {
33
- reportGlobalObjectCall(expression, expression.text);
33
+ reportGlobalObjectCall(expression, expression.text, sourceFile);
34
34
  }
35
35
  }
36
36
  return {
@@ -41,3 +41,4 @@ export default typescriptLanguage.createRule({
41
41
  };
42
42
  },
43
43
  });
44
+ //# sourceMappingURL=globalObjectCalls.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=globalObjectCalls.test.d.ts.map
@@ -91,3 +91,4 @@ const instance = new Atomics();
91
91
  `const result = Atomics.add(buffer, 0, 1);`,
92
92
  ],
93
93
  });
94
+ //# sourceMappingURL=globalObjectCalls.test.js.map
@@ -3,8 +3,9 @@ declare const _default: import("@flint.fyi/core").Rule<{
3
3
  readonly description: "Reports using legacy `namespace` declarations.";
4
4
  readonly id: "namespaceDeclarations";
5
5
  readonly preset: "logical";
6
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "preferModules", {
6
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "preferModules", {
7
7
  readonly allowDeclarations: z.ZodDefault<z.ZodBoolean>;
8
8
  readonly allowDefinitionFiles: z.ZodDefault<z.ZodBoolean>;
9
9
  }>;
10
10
  export default _default;
11
+ //# sourceMappingURL=namespaceDeclarations.d.ts.map
@@ -30,13 +30,13 @@ export default typescriptLanguage.createRule({
30
30
  .default(false)
31
31
  .describe("Whether to allow namespaces in `.d.ts` and other definition files."),
32
32
  },
33
- setup(context, { allowDeclarations, allowDefinitionFiles }) {
34
- if (allowDefinitionFiles && context.sourceFile.isDeclarationFile) {
35
- return;
36
- }
33
+ setup(context) {
37
34
  return {
38
35
  visitors: {
39
- ModuleDeclaration: (node) => {
36
+ ModuleDeclaration: (node, { options: { allowDeclarations, allowDefinitionFiles }, sourceFile }) => {
37
+ if (allowDefinitionFiles && sourceFile.isDeclarationFile) {
38
+ return;
39
+ }
40
40
  if (node.parent.kind !== ts.SyntaxKind.SourceFile ||
41
41
  node.name.kind !== ts.SyntaxKind.Identifier ||
42
42
  node.name.text === "global") {
@@ -48,10 +48,11 @@ export default typescriptLanguage.createRule({
48
48
  }
49
49
  context.report({
50
50
  message: "preferModules",
51
- range: getTSNodeRange(node.getChildAt(0), context.sourceFile),
51
+ range: getTSNodeRange(node.getChildAt(0), sourceFile),
52
52
  });
53
53
  },
54
54
  },
55
55
  };
56
56
  },
57
57
  });
58
+ //# sourceMappingURL=namespaceDeclarations.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=namespaceDeclarations.test.d.ts.map
@@ -38,3 +38,4 @@ declare namespace outer {
38
38
  },
39
39
  ],
40
40
  });
41
+ //# sourceMappingURL=namespaceDeclarations.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports comparisons with -0 that may not behave as expected.";
3
3
  readonly id: "negativeZeroComparisons";
4
4
  readonly preset: "logical";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "unexpectedNegativeZeroComparison", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "unexpectedNegativeZeroComparison", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=negativeZeroComparisons.d.ts.map
@@ -24,22 +24,22 @@ export default typescriptLanguage.createRule({
24
24
  },
25
25
  },
26
26
  setup(context) {
27
- function generateObjectIsText(node, isNegated) {
28
- const leftText = node.left.getText(context.sourceFile);
29
- const rightText = node.right.getText(context.sourceFile);
27
+ function generateObjectIsText(node, isNegated, sourceFile) {
28
+ const leftText = node.left.getText(sourceFile);
29
+ const rightText = node.right.getText(sourceFile);
30
30
  const objectIsCall = `Object.is(${leftText}, ${rightText})`;
31
31
  return isNegated ? `!${objectIsCall}` : objectIsCall;
32
32
  }
33
33
  return {
34
34
  visitors: {
35
- BinaryExpression: (node) => {
35
+ BinaryExpression: (node, { sourceFile }) => {
36
36
  if (!isComparisonOperator(node.operatorToken) ||
37
37
  (!isNegativeZero(node.left) && !isNegativeZero(node.right))) {
38
38
  return;
39
39
  }
40
- const operator = node.operatorToken.getText(context.sourceFile);
40
+ const operator = node.operatorToken.getText(sourceFile);
41
41
  const range = {
42
- begin: node.getStart(context.sourceFile),
42
+ begin: node.getStart(sourceFile),
43
43
  end: node.getEnd(),
44
44
  };
45
45
  context.report({
@@ -53,7 +53,7 @@ export default typescriptLanguage.createRule({
53
53
  {
54
54
  id: "useObjectIs",
55
55
  range,
56
- text: generateObjectIsText(node, isNegatedEqualityOperator(node.operatorToken)),
56
+ text: generateObjectIsText(node, isNegatedEqualityOperator(node.operatorToken), sourceFile),
57
57
  },
58
58
  ]
59
59
  : undefined,
@@ -63,3 +63,4 @@ export default typescriptLanguage.createRule({
63
63
  };
64
64
  },
65
65
  });
66
+ //# sourceMappingURL=negativeZeroComparisons.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=negativeZeroComparisons.test.d.ts.map
@@ -207,3 +207,4 @@ const isNegativeZero = Object.is(value, -0);
207
207
  `function test() { return -0; }`,
208
208
  ],
209
209
  });
210
+ //# sourceMappingURL=negativeZeroComparisons.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Reports standalone new expressions that don't use the constructed object.";
3
3
  readonly id: "newExpressions";
4
4
  readonly preset: "logical";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noStandaloneNew", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noStandaloneNew", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=newExpressions.d.ts.map
@@ -40,11 +40,11 @@ export default typescriptLanguage.createRule({
40
40
  }
41
41
  return {
42
42
  visitors: {
43
- NewExpression: (node) => {
43
+ NewExpression: (node, { sourceFile }) => {
44
44
  if (isStandaloneExpression(node)) {
45
45
  context.report({
46
46
  message: "noStandaloneNew",
47
- range: getTSNodeRange(node.getChildAt(0, context.sourceFile), context.sourceFile),
47
+ range: getTSNodeRange(node.getChildAt(0, sourceFile), sourceFile),
48
48
  });
49
49
  }
50
50
  },
@@ -52,3 +52,4 @@ export default typescriptLanguage.createRule({
52
52
  };
53
53
  },
54
54
  });
55
+ //# sourceMappingURL=newExpressions.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=newExpressions.test.d.ts.map
@@ -77,3 +77,4 @@ someFunction(), new Queue();
77
77
  `const value = new MyClass() ?? fallback;`,
78
78
  ],
79
79
  });
80
+ //# sourceMappingURL=newExpressions.test.js.map
@@ -2,5 +2,6 @@ declare const _default: import("@flint.fyi/core").Rule<{
2
2
  readonly description: "Disallows using `new` with global non-constructor functions like Symbol and BigInt.";
3
3
  readonly id: "newNativeNonConstructors";
4
4
  readonly preset: "untyped";
5
- }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptServices, "noNewNonConstructor", undefined>;
5
+ }, import("../nodes.js").TSNodesByName, import("../language.js").TypeScriptFileServices, "noNewNonConstructor", undefined>;
6
6
  export default _default;
7
+ //# sourceMappingURL=newNativeNonConstructors.d.ts.map