@flint.fyi/ts 0.14.5 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/lib/collectReferencedFilePaths.d.ts +1 -0
  2. package/lib/collectReferencedFilePaths.js +3 -2
  3. package/lib/convertTypeScriptDiagnosticToLanguageFileDiagnostic.d.ts +14 -0
  4. package/lib/{formatDiagnostic.js → convertTypeScriptDiagnosticToLanguageFileDiagnostic.js} +23 -15
  5. package/lib/createTypeScriptFileFromProgram.d.ts +4 -1
  6. package/lib/createTypeScriptFileFromProgram.js +25 -30
  7. package/lib/createTypeScriptFileFromProjectService.d.ts +3 -6
  8. package/lib/createTypeScriptFileFromProjectService.js +5 -11
  9. package/lib/directives/parseDirectivesFromTypeScriptFile.d.ts +8 -0
  10. package/lib/directives/parseDirectivesFromTypeScriptFile.js +12 -4
  11. package/lib/directives/parseDirectivesFromTypeScriptFile.test.d.ts +1 -0
  12. package/lib/directives/parseDirectivesFromTypeScriptFile.test.js +1 -0
  13. package/lib/getFirstEnumValues.d.ts +1 -0
  14. package/lib/getFirstEnumValues.js +1 -0
  15. package/lib/getFirstEnumValues.test.d.ts +1 -0
  16. package/lib/getFirstEnumValues.test.js +1 -0
  17. package/lib/getTSNodeRange.d.ts +1 -0
  18. package/lib/getTSNodeRange.js +1 -0
  19. package/lib/index.d.ts +6 -0
  20. package/lib/index.js +5 -0
  21. package/lib/language.d.ts +3 -2
  22. package/lib/language.js +7 -52
  23. package/lib/nodes.d.ts +1 -0
  24. package/lib/nodes.js +1 -0
  25. package/lib/normalizeRange.d.ts +1 -0
  26. package/lib/normalizeRange.js +4 -6
  27. package/lib/plugin.d.ts +79 -50
  28. package/lib/plugin.js +16 -1
  29. package/lib/prepareTypeScriptBasedLanguage.d.ts +11 -0
  30. package/lib/prepareTypeScriptBasedLanguage.js +59 -0
  31. package/lib/prepareTypeScriptFile.d.ts +9 -4
  32. package/lib/prepareTypeScriptFile.js +8 -2
  33. package/lib/rules/anyReturns.d.ts +2 -1
  34. package/lib/rules/anyReturns.js +22 -22
  35. package/lib/rules/anyReturns.test.d.ts +1 -0
  36. package/lib/rules/anyReturns.test.js +1 -0
  37. package/lib/rules/asyncPromiseExecutors.d.ts +2 -1
  38. package/lib/rules/asyncPromiseExecutors.js +4 -3
  39. package/lib/rules/asyncPromiseExecutors.test.d.ts +1 -0
  40. package/lib/rules/asyncPromiseExecutors.test.js +1 -0
  41. package/lib/rules/caseDeclarations.d.ts +3 -1
  42. package/lib/rules/caseDeclarations.js +7 -6
  43. package/lib/rules/caseDeclarations.test.d.ts +1 -0
  44. package/lib/rules/caseDeclarations.test.js +1 -0
  45. package/lib/rules/caseDuplicates.d.ts +2 -1
  46. package/lib/rules/caseDuplicates.js +4 -3
  47. package/lib/rules/caseDuplicates.test.d.ts +1 -0
  48. package/lib/rules/caseDuplicates.test.js +1 -0
  49. package/lib/rules/chainedAssignments.d.ts +2 -1
  50. package/lib/rules/chainedAssignments.js +3 -2
  51. package/lib/rules/chainedAssignments.test.d.ts +1 -0
  52. package/lib/rules/chainedAssignments.test.js +1 -0
  53. package/lib/rules/classAssignments.d.ts +2 -1
  54. package/lib/rules/classAssignments.js +4 -3
  55. package/lib/rules/classAssignments.test.d.ts +1 -0
  56. package/lib/rules/classAssignments.test.js +1 -0
  57. package/lib/rules/consecutiveNonNullAssertions.d.ts +2 -1
  58. package/lib/rules/consecutiveNonNullAssertions.js +1 -0
  59. package/lib/rules/consecutiveNonNullAssertions.test.d.ts +1 -0
  60. package/lib/rules/consecutiveNonNullAssertions.test.js +1 -0
  61. package/lib/rules/constantAssignments.d.ts +2 -1
  62. package/lib/rules/constantAssignments.js +4 -3
  63. package/lib/rules/constantAssignments.test.d.ts +1 -0
  64. package/lib/rules/constantAssignments.test.js +1 -0
  65. package/lib/rules/constructorReturns.d.ts +2 -1
  66. package/lib/rules/constructorReturns.js +3 -2
  67. package/lib/rules/constructorReturns.test.d.ts +1 -0
  68. package/lib/rules/constructorReturns.test.js +1 -0
  69. package/lib/rules/debuggerStatements.d.ts +2 -1
  70. package/lib/rules/debuggerStatements.js +1 -0
  71. package/lib/rules/debuggerStatements.test.d.ts +1 -0
  72. package/lib/rules/debuggerStatements.test.js +1 -0
  73. package/lib/rules/defaultCaseLast.d.ts +2 -1
  74. package/lib/rules/defaultCaseLast.js +4 -3
  75. package/lib/rules/defaultCaseLast.test.d.ts +1 -0
  76. package/lib/rules/defaultCaseLast.test.js +1 -0
  77. package/lib/rules/duplicateArguments.d.ts +3 -1
  78. package/lib/rules/duplicateArguments.js +3 -2
  79. package/lib/rules/duplicateArguments.test.d.ts +1 -0
  80. package/lib/rules/duplicateArguments.test.js +1 -0
  81. package/lib/rules/elseIfDuplicates.d.ts +2 -1
  82. package/lib/rules/elseIfDuplicates.js +6 -5
  83. package/lib/rules/elseIfDuplicates.test.d.ts +1 -0
  84. package/lib/rules/elseIfDuplicates.test.js +1 -0
  85. package/lib/rules/emptyBlocks.d.ts +2 -1
  86. package/lib/rules/emptyBlocks.js +12 -10
  87. package/lib/rules/emptyBlocks.test.d.ts +1 -0
  88. package/lib/rules/emptyBlocks.test.js +1 -0
  89. package/lib/rules/emptyDestructures.d.ts +3 -1
  90. package/lib/rules/emptyDestructures.js +3 -2
  91. package/lib/rules/emptyDestructures.test.d.ts +1 -0
  92. package/lib/rules/emptyDestructures.test.js +1 -0
  93. package/lib/rules/emptyStaticBlocks.d.ts +2 -1
  94. package/lib/rules/emptyStaticBlocks.js +5 -4
  95. package/lib/rules/emptyStaticBlocks.test.d.ts +1 -0
  96. package/lib/rules/emptyStaticBlocks.test.js +1 -0
  97. package/lib/rules/exceptionAssignments.d.ts +2 -1
  98. package/lib/rules/exceptionAssignments.js +4 -3
  99. package/lib/rules/exceptionAssignments.test.d.ts +1 -0
  100. package/lib/rules/exceptionAssignments.test.js +1 -0
  101. package/lib/rules/finallyStatementSafety.d.ts +7 -0
  102. package/lib/rules/finallyStatementSafety.js +71 -0
  103. package/lib/rules/finallyStatementSafety.test.d.ts +2 -0
  104. package/lib/rules/finallyStatementSafety.test.js +307 -0
  105. package/lib/rules/forDirections.d.ts +2 -1
  106. package/lib/rules/forDirections.js +18 -10
  107. package/lib/rules/forDirections.test.d.ts +1 -0
  108. package/lib/rules/forDirections.test.js +26 -0
  109. package/lib/rules/forInArrays.d.ts +2 -1
  110. package/lib/rules/forInArrays.js +8 -7
  111. package/lib/rules/forInArrays.test.d.ts +1 -0
  112. package/lib/rules/forInArrays.test.js +1 -0
  113. package/lib/rules/functionAssignments.d.ts +2 -1
  114. package/lib/rules/functionAssignments.js +4 -3
  115. package/lib/rules/functionAssignments.test.d.ts +1 -0
  116. package/lib/rules/functionAssignments.test.js +1 -0
  117. package/lib/rules/functionCurryingRedundancy.d.ts +7 -0
  118. package/lib/rules/functionCurryingRedundancy.js +77 -0
  119. package/lib/rules/functionCurryingRedundancy.test.d.ts +2 -0
  120. package/lib/rules/functionCurryingRedundancy.test.js +172 -0
  121. package/lib/rules/functionNewCalls.d.ts +3 -1
  122. package/lib/rules/functionNewCalls.js +7 -6
  123. package/lib/rules/functionNewCalls.test.d.ts +1 -0
  124. package/lib/rules/functionNewCalls.test.js +1 -0
  125. package/lib/rules/generatorFunctionYields.d.ts +3 -1
  126. package/lib/rules/generatorFunctionYields.js +3 -2
  127. package/lib/rules/generatorFunctionYields.test.d.ts +1 -0
  128. package/lib/rules/generatorFunctionYields.test.js +1 -0
  129. package/lib/rules/globalAssignments.d.ts +2 -1
  130. package/lib/rules/globalAssignments.js +10 -9
  131. package/lib/rules/globalAssignments.test.d.ts +1 -0
  132. package/lib/rules/globalAssignments.test.js +1 -0
  133. package/lib/rules/globalObjectCalls.d.ts +3 -1
  134. package/lib/rules/globalObjectCalls.js +5 -4
  135. package/lib/rules/globalObjectCalls.test.d.ts +1 -0
  136. package/lib/rules/globalObjectCalls.test.js +1 -0
  137. package/lib/rules/namespaceDeclarations.d.ts +2 -1
  138. package/lib/rules/namespaceDeclarations.js +7 -6
  139. package/lib/rules/namespaceDeclarations.test.d.ts +1 -0
  140. package/lib/rules/namespaceDeclarations.test.js +1 -0
  141. package/lib/rules/negativeZeroComparisons.d.ts +2 -1
  142. package/lib/rules/negativeZeroComparisons.js +8 -7
  143. package/lib/rules/negativeZeroComparisons.test.d.ts +1 -0
  144. package/lib/rules/negativeZeroComparisons.test.js +1 -0
  145. package/lib/rules/newExpressions.d.ts +2 -1
  146. package/lib/rules/newExpressions.js +3 -2
  147. package/lib/rules/newExpressions.test.d.ts +1 -0
  148. package/lib/rules/newExpressions.test.js +1 -0
  149. package/lib/rules/newNativeNonConstructors.d.ts +2 -1
  150. package/lib/rules/newNativeNonConstructors.js +6 -5
  151. package/lib/rules/newNativeNonConstructors.test.d.ts +1 -0
  152. package/lib/rules/newNativeNonConstructors.test.js +1 -0
  153. package/lib/rules/nonOctalDecimalEscapes.d.ts +3 -1
  154. package/lib/rules/nonOctalDecimalEscapes.js +4 -3
  155. package/lib/rules/nonOctalDecimalEscapes.test.d.ts +1 -0
  156. package/lib/rules/nonOctalDecimalEscapes.test.js +1 -0
  157. package/lib/rules/numericLiteralParsing.d.ts +2 -1
  158. package/lib/rules/numericLiteralParsing.js +8 -7
  159. package/lib/rules/numericLiteralParsing.test.d.ts +1 -0
  160. package/lib/rules/numericLiteralParsing.test.js +1 -0
  161. package/lib/rules/objectCalls.d.ts +7 -0
  162. package/lib/rules/objectCalls.js +47 -0
  163. package/lib/rules/objectCalls.test.d.ts +2 -0
  164. package/lib/rules/objectCalls.test.js +172 -0
  165. package/lib/rules/objectHasOwns.d.ts +7 -0
  166. package/lib/rules/objectHasOwns.js +74 -0
  167. package/lib/rules/objectHasOwns.test.d.ts +2 -0
  168. package/lib/rules/objectHasOwns.test.js +112 -0
  169. package/lib/rules/objectKeyDuplicates.d.ts +7 -0
  170. package/lib/rules/objectKeyDuplicates.js +91 -0
  171. package/lib/rules/objectKeyDuplicates.test.d.ts +2 -0
  172. package/lib/rules/objectKeyDuplicates.test.js +180 -0
  173. package/lib/rules/objectProto.d.ts +2 -1
  174. package/lib/rules/objectProto.js +5 -4
  175. package/lib/rules/objectProto.test.d.ts +1 -0
  176. package/lib/rules/objectProto.test.js +1 -0
  177. package/lib/rules/objectPrototypeBuiltIns.d.ts +7 -0
  178. package/lib/rules/objectPrototypeBuiltIns.js +65 -0
  179. package/lib/rules/objectPrototypeBuiltIns.test.d.ts +2 -0
  180. package/lib/rules/objectPrototypeBuiltIns.test.js +146 -0
  181. package/lib/rules/octalEscapes.d.ts +2 -1
  182. package/lib/rules/octalEscapes.js +13 -8
  183. package/lib/rules/octalEscapes.test.d.ts +1 -0
  184. package/lib/rules/octalEscapes.test.js +1 -0
  185. package/lib/rules/octalNumbers.d.ts +2 -1
  186. package/lib/rules/octalNumbers.js +4 -3
  187. package/lib/rules/octalNumbers.test.d.ts +1 -0
  188. package/lib/rules/octalNumbers.test.js +1 -0
  189. package/lib/rules/returnAssignments.d.ts +2 -1
  190. package/lib/rules/returnAssignments.js +7 -6
  191. package/lib/rules/returnAssignments.test.d.ts +1 -0
  192. package/lib/rules/returnAssignments.test.js +1 -0
  193. package/lib/rules/ruleTester.d.ts +1 -0
  194. package/lib/rules/ruleTester.js +6 -1
  195. package/lib/rules/selfAssignments.d.ts +2 -1
  196. package/lib/rules/selfAssignments.js +4 -3
  197. package/lib/rules/selfAssignments.test.d.ts +1 -0
  198. package/lib/rules/selfAssignments.test.js +1 -0
  199. package/lib/rules/selfComparisons.d.ts +2 -1
  200. package/lib/rules/selfComparisons.js +4 -3
  201. package/lib/rules/selfComparisons.test.d.ts +1 -0
  202. package/lib/rules/selfComparisons.test.js +1 -0
  203. package/lib/rules/sequences.d.ts +2 -1
  204. package/lib/rules/sequences.js +3 -2
  205. package/lib/rules/sequences.test.d.ts +1 -0
  206. package/lib/rules/sequences.test.js +1 -0
  207. package/lib/rules/shadowedRestrictedNames.d.ts +2 -1
  208. package/lib/rules/shadowedRestrictedNames.js +24 -23
  209. package/lib/rules/shadowedRestrictedNames.test.d.ts +1 -0
  210. package/lib/rules/shadowedRestrictedNames.test.js +1 -0
  211. package/lib/rules/sparseArrays.d.ts +2 -1
  212. package/lib/rules/sparseArrays.js +5 -4
  213. package/lib/rules/sparseArrays.test.d.ts +1 -0
  214. package/lib/rules/sparseArrays.test.js +1 -0
  215. package/lib/rules/symbolDescriptions.d.ts +2 -1
  216. package/lib/rules/symbolDescriptions.js +3 -2
  217. package/lib/rules/symbolDescriptions.test.d.ts +1 -0
  218. package/lib/rules/symbolDescriptions.test.js +1 -0
  219. package/lib/rules/typeofComparisons.d.ts +2 -1
  220. package/lib/rules/typeofComparisons.js +5 -4
  221. package/lib/rules/typeofComparisons.test.d.ts +1 -0
  222. package/lib/rules/typeofComparisons.test.js +1 -0
  223. package/lib/rules/unassignedVariables.d.ts +2 -1
  224. package/lib/rules/unassignedVariables.js +4 -3
  225. package/lib/rules/unassignedVariables.test.d.ts +1 -0
  226. package/lib/rules/unassignedVariables.test.js +1 -0
  227. package/lib/rules/undefinedVariables.d.ts +2 -1
  228. package/lib/rules/undefinedVariables.js +5 -4
  229. package/lib/rules/undefinedVariables.test.d.ts +1 -0
  230. package/lib/rules/undefinedVariables.test.js +1 -0
  231. package/lib/rules/unicodeBOMs.d.ts +2 -1
  232. package/lib/rules/unicodeBOMs.js +27 -20
  233. package/lib/rules/unicodeBOMs.test.d.ts +1 -0
  234. package/lib/rules/unicodeBOMs.test.js +1 -0
  235. package/lib/rules/unnecessaryBlocks.d.ts +2 -1
  236. package/lib/rules/unnecessaryBlocks.js +4 -3
  237. package/lib/rules/unnecessaryBlocks.test.d.ts +1 -0
  238. package/lib/rules/unnecessaryBlocks.test.js +1 -0
  239. package/lib/rules/unnecessaryCatches.d.ts +2 -1
  240. package/lib/rules/unnecessaryCatches.js +4 -3
  241. package/lib/rules/unnecessaryCatches.test.d.ts +1 -0
  242. package/lib/rules/unnecessaryCatches.test.js +1 -0
  243. package/lib/rules/unnecessaryConcatenation.d.ts +2 -1
  244. package/lib/rules/unnecessaryConcatenation.js +3 -2
  245. package/lib/rules/unnecessaryConcatenation.test.d.ts +1 -0
  246. package/lib/rules/unnecessaryConcatenation.test.js +1 -0
  247. package/lib/rules/unsafeNegations.d.ts +2 -1
  248. package/lib/rules/unsafeNegations.js +3 -2
  249. package/lib/rules/unsafeNegations.test.d.ts +1 -0
  250. package/lib/rules/unsafeNegations.test.js +1 -0
  251. package/lib/rules/utils/discriminateAnyType.d.ts +1 -0
  252. package/lib/rules/utils/discriminateAnyType.js +1 -0
  253. package/lib/rules/utils/getConstrainedType.d.ts +1 -0
  254. package/lib/rules/utils/getConstrainedType.js +1 -0
  255. package/lib/rules/utils/getThisExpression.d.ts +1 -0
  256. package/lib/rules/utils/getThisExpression.js +1 -0
  257. package/lib/rules/utils/isTypeRecursive.d.ts +1 -0
  258. package/lib/rules/utils/isTypeRecursive.js +1 -0
  259. package/lib/rules/utils/isUnsafeAssignment.d.ts +1 -0
  260. package/lib/rules/utils/isUnsafeAssignment.js +1 -0
  261. package/lib/rules/utils/operators.d.ts +1 -0
  262. package/lib/rules/utils/operators.js +1 -0
  263. package/lib/rules/variableDeletions.d.ts +2 -1
  264. package/lib/rules/variableDeletions.js +3 -2
  265. package/lib/rules/variableDeletions.test.d.ts +1 -0
  266. package/lib/rules/variableDeletions.test.js +1 -0
  267. package/lib/rules/voidOperator.d.ts +2 -1
  268. package/lib/rules/voidOperator.js +3 -2
  269. package/lib/rules/voidOperator.test.d.ts +1 -0
  270. package/lib/rules/voidOperator.test.js +1 -0
  271. package/lib/rules/withStatements.d.ts +7 -0
  272. package/lib/rules/withStatements.js +37 -0
  273. package/lib/rules/withStatements.test.d.ts +2 -0
  274. package/lib/rules/withStatements.test.js +27 -0
  275. package/lib/utils/declarationIncludesGlobal.d.ts +1 -0
  276. package/lib/utils/declarationIncludesGlobal.js +1 -0
  277. package/lib/utils/declarationsIncludeGlobal.d.ts +1 -0
  278. package/lib/utils/declarationsIncludeGlobal.js +1 -0
  279. package/lib/utils/getDeclarationsIfGlobal.d.ts +1 -0
  280. package/lib/utils/getDeclarationsIfGlobal.js +1 -0
  281. package/lib/utils/getModifyingReferences.d.ts +1 -0
  282. package/lib/utils/getModifyingReferences.js +1 -0
  283. package/lib/utils/hasSameTokens.d.ts +1 -0
  284. package/lib/utils/hasSameTokens.js +1 -0
  285. package/lib/utils/isFunction.d.ts +3 -0
  286. package/lib/utils/isFunction.js +6 -0
  287. package/lib/utils/isGlobalDeclaration.d.ts +1 -0
  288. package/lib/utils/isGlobalDeclaration.js +1 -0
  289. package/lib/utils/isGlobalDeclarationOfName.d.ts +1 -0
  290. package/lib/utils/isGlobalDeclarationOfName.js +1 -0
  291. package/lib/utils/isGlobalVariable.d.ts +1 -0
  292. package/lib/utils/isGlobalVariable.js +1 -0
  293. package/lib/utils/unwrapParentParenthesizedExpressions.d.ts +1 -0
  294. package/lib/utils/unwrapParentParenthesizedExpressions.js +1 -0
  295. package/lib/utils/unwrapParenthesizedExpression.d.ts +1 -0
  296. package/lib/utils/unwrapParenthesizedExpression.js +1 -0
  297. package/package.json +17 -7
  298. package/CHANGELOG.md +0 -82
  299. package/lib/formatDiagnostic.d.ts +0 -10
  300. package/src/collectReferencedFilePaths.ts +0 -37
  301. package/src/createTypeScriptFileFromProgram.ts +0 -86
  302. package/src/createTypeScriptFileFromProjectService.ts +0 -31
  303. package/src/directives/parseDirectivesFromTypeScriptFile.test.ts +0 -108
  304. package/src/directives/parseDirectivesFromTypeScriptFile.ts +0 -31
  305. package/src/formatDiagnostic.ts +0 -166
  306. package/src/getFirstEnumValues.test.ts +0 -51
  307. package/src/getFirstEnumValues.ts +0 -59
  308. package/src/getTSNodeRange.ts +0 -13
  309. package/src/index.ts +0 -7
  310. package/src/language.ts +0 -122
  311. package/src/nodes.ts +0 -146
  312. package/src/normalizeRange.ts +0 -30
  313. package/src/plugin.ts +0 -111
  314. package/src/prepareTypeScriptFile.ts +0 -14
  315. package/src/rules/anyReturns.test.ts +0 -649
  316. package/src/rules/anyReturns.ts +0 -263
  317. package/src/rules/asyncPromiseExecutors.test.ts +0 -72
  318. package/src/rules/asyncPromiseExecutors.ts +0 -61
  319. package/src/rules/caseDeclarations.test.ts +0 -228
  320. package/src/rules/caseDeclarations.ts +0 -70
  321. package/src/rules/caseDuplicates.test.ts +0 -308
  322. package/src/rules/caseDuplicates.ts +0 -57
  323. package/src/rules/chainedAssignments.test.ts +0 -263
  324. package/src/rules/chainedAssignments.ts +0 -58
  325. package/src/rules/classAssignments.test.ts +0 -157
  326. package/src/rules/classAssignments.ts +0 -50
  327. package/src/rules/consecutiveNonNullAssertions.test.ts +0 -33
  328. package/src/rules/consecutiveNonNullAssertions.ts +0 -46
  329. package/src/rules/constantAssignments.test.ts +0 -222
  330. package/src/rules/constantAssignments.ts +0 -78
  331. package/src/rules/constructorReturns.test.ts +0 -97
  332. package/src/rules/constructorReturns.ts +0 -59
  333. package/src/rules/debuggerStatements.test.ts +0 -81
  334. package/src/rules/debuggerStatements.ts +0 -45
  335. package/src/rules/defaultCaseLast.test.ts +0 -196
  336. package/src/rules/defaultCaseLast.ts +0 -54
  337. package/src/rules/duplicateArguments.test.ts +0 -140
  338. package/src/rules/duplicateArguments.ts +0 -58
  339. package/src/rules/elseIfDuplicates.test.ts +0 -177
  340. package/src/rules/elseIfDuplicates.ts +0 -69
  341. package/src/rules/emptyBlocks.test.ts +0 -136
  342. package/src/rules/emptyBlocks.ts +0 -73
  343. package/src/rules/emptyDestructures.test.ts +0 -187
  344. package/src/rules/emptyDestructures.ts +0 -48
  345. package/src/rules/emptyStaticBlocks.test.ts +0 -168
  346. package/src/rules/emptyStaticBlocks.ts +0 -60
  347. package/src/rules/exceptionAssignments.test.ts +0 -265
  348. package/src/rules/exceptionAssignments.ts +0 -77
  349. package/src/rules/forDirections.test.ts +0 -100
  350. package/src/rules/forDirections.ts +0 -163
  351. package/src/rules/forInArrays.test.ts +0 -25
  352. package/src/rules/forInArrays.ts +0 -70
  353. package/src/rules/functionAssignments.test.ts +0 -210
  354. package/src/rules/functionAssignments.ts +0 -51
  355. package/src/rules/functionNewCalls.test.ts +0 -116
  356. package/src/rules/functionNewCalls.ts +0 -75
  357. package/src/rules/generatorFunctionYields.test.ts +0 -152
  358. package/src/rules/generatorFunctionYields.ts +0 -71
  359. package/src/rules/globalAssignments.test.ts +0 -216
  360. package/src/rules/globalAssignments.ts +0 -67
  361. package/src/rules/globalObjectCalls.test.ts +0 -94
  362. package/src/rules/globalObjectCalls.ts +0 -52
  363. package/src/rules/namespaceDeclarations.test.ts +0 -41
  364. package/src/rules/namespaceDeclarations.ts +0 -74
  365. package/src/rules/negativeZeroComparisons.test.ts +0 -210
  366. package/src/rules/negativeZeroComparisons.ts +0 -87
  367. package/src/rules/newExpressions.test.ts +0 -80
  368. package/src/rules/newExpressions.ts +0 -67
  369. package/src/rules/newNativeNonConstructors.test.ts +0 -95
  370. package/src/rules/newNativeNonConstructors.ts +0 -59
  371. package/src/rules/nonOctalDecimalEscapes.test.ts +0 -70
  372. package/src/rules/nonOctalDecimalEscapes.ts +0 -70
  373. package/src/rules/numericLiteralParsing.test.ts +0 -100
  374. package/src/rules/numericLiteralParsing.ts +0 -116
  375. package/src/rules/objectProto.test.ts +0 -97
  376. package/src/rules/objectProto.ts +0 -62
  377. package/src/rules/octalEscapes.test.ts +0 -214
  378. package/src/rules/octalEscapes.ts +0 -85
  379. package/src/rules/octalNumbers.test.ts +0 -246
  380. package/src/rules/octalNumbers.ts +0 -75
  381. package/src/rules/returnAssignments.test.ts +0 -186
  382. package/src/rules/returnAssignments.ts +0 -57
  383. package/src/rules/ruleTester.ts +0 -4
  384. package/src/rules/selfAssignments.test.ts +0 -67
  385. package/src/rules/selfAssignments.ts +0 -50
  386. package/src/rules/selfComparisons.test.ts +0 -298
  387. package/src/rules/selfComparisons.ts +0 -45
  388. package/src/rules/sequences.test.ts +0 -49
  389. package/src/rules/sequences.ts +0 -37
  390. package/src/rules/shadowedRestrictedNames.test.ts +0 -148
  391. package/src/rules/shadowedRestrictedNames.ts +0 -105
  392. package/src/rules/sparseArrays.test.ts +0 -111
  393. package/src/rules/sparseArrays.ts +0 -61
  394. package/src/rules/symbolDescriptions.test.ts +0 -90
  395. package/src/rules/symbolDescriptions.ts +0 -47
  396. package/src/rules/typeofComparisons.test.ts +0 -86
  397. package/src/rules/typeofComparisons.ts +0 -88
  398. package/src/rules/unassignedVariables.test.ts +0 -73
  399. package/src/rules/unassignedVariables.ts +0 -69
  400. package/src/rules/undefinedVariables.test.ts +0 -81
  401. package/src/rules/undefinedVariables.ts +0 -97
  402. package/src/rules/unicodeBOMs.test.ts +0 -67
  403. package/src/rules/unicodeBOMs.ts +0 -44
  404. package/src/rules/unnecessaryBlocks.test.ts +0 -148
  405. package/src/rules/unnecessaryBlocks.ts +0 -89
  406. package/src/rules/unnecessaryCatches.test.ts +0 -211
  407. package/src/rules/unnecessaryCatches.ts +0 -84
  408. package/src/rules/unnecessaryConcatenation.test.ts +0 -88
  409. package/src/rules/unnecessaryConcatenation.ts +0 -44
  410. package/src/rules/unsafeNegations.test.ts +0 -64
  411. package/src/rules/unsafeNegations.ts +0 -59
  412. package/src/rules/utils/discriminateAnyType.ts +0 -66
  413. package/src/rules/utils/getConstrainedType.ts +0 -9
  414. package/src/rules/utils/getThisExpression.ts +0 -24
  415. package/src/rules/utils/isTypeRecursive.ts +0 -10
  416. package/src/rules/utils/isUnsafeAssignment.ts +0 -113
  417. package/src/rules/utils/operators.ts +0 -39
  418. package/src/rules/variableDeletions.test.ts +0 -76
  419. package/src/rules/variableDeletions.ts +0 -43
  420. package/src/rules/voidOperator.test.ts +0 -99
  421. package/src/rules/voidOperator.ts +0 -38
  422. package/src/utils/declarationIncludesGlobal.ts +0 -9
  423. package/src/utils/declarationsIncludeGlobal.ts +0 -7
  424. package/src/utils/getDeclarationsIfGlobal.ts +0 -14
  425. package/src/utils/getModifyingReferences.ts +0 -58
  426. package/src/utils/hasSameTokens.ts +0 -45
  427. package/src/utils/isGlobalDeclaration.ts +0 -10
  428. package/src/utils/isGlobalDeclarationOfName.ts +0 -56
  429. package/src/utils/isGlobalVariable.ts +0 -30
  430. package/src/utils/unwrapParentParenthesizedExpressions.ts +0 -7
  431. package/src/utils/unwrapParenthesizedExpression.ts +0 -9
  432. package/tsconfig.json +0 -9
  433. package/tsconfig.tsbuildinfo +0 -1
@@ -1,2 +1,3 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function collectReferencedFilePaths(program: ts.Program, sourceFile: ts.SourceFile): string[];
3
+ //# sourceMappingURL=collectReferencedFilePaths.d.ts.map
@@ -2,13 +2,13 @@ import * as path from "node:path";
2
2
  import * as ts from "typescript";
3
3
  export function collectReferencedFilePaths(program, sourceFile) {
4
4
  // TODO: Also handle inline import()s
5
- // https://github.com/JoshuaKGoldberg/flint/issues/115
5
+ // https://github.com/flint-fyi/flint/issues/115
6
6
  return sourceFile.statements
7
7
  .filter(isImportDeclarationWithStringLiteral)
8
8
  .map((statement) => {
9
9
  const resolved = ts.resolveModuleName(statement.moduleSpecifier.text, sourceFile.fileName, program.getCompilerOptions(),
10
10
  // TODO: Eventually, the file system should be abstracted
11
- // https://github.com/JoshuaKGoldberg/flint/issues/73
11
+ // https://github.com/flint-fyi/flint/issues/73
12
12
  ts.sys);
13
13
  return (resolved.resolvedModule?.isExternalLibraryImport === false &&
14
14
  path.relative(process.cwd(), resolved.resolvedModule.resolvedFileName));
@@ -19,3 +19,4 @@ function isImportDeclarationWithStringLiteral(statement) {
19
19
  return (ts.isImportDeclaration(statement) &&
20
20
  ts.isStringLiteral(statement.moduleSpecifier));
21
21
  }
22
+ //# sourceMappingURL=collectReferencedFilePaths.js.map
@@ -0,0 +1,14 @@
1
+ import { LanguageFileDiagnostic, SourceFileWithLineMapAndFileName } from "@flint.fyi/core";
2
+ import ts from "typescript";
3
+ export interface TSBasedDiagnostic extends TSBasedDiagnosticRelatedInformation {
4
+ relatedInformation?: TSBasedDiagnosticRelatedInformation[];
5
+ }
6
+ export interface TSBasedDiagnosticRelatedInformation {
7
+ code: number;
8
+ file: SourceFileWithLineMapAndFileName | undefined;
9
+ length: number | undefined;
10
+ messageText: string | ts.DiagnosticMessageChain;
11
+ start: number | undefined;
12
+ }
13
+ export declare function convertTypeScriptDiagnosticToLanguageFileDiagnostic(diagnostic: TSBasedDiagnostic): LanguageFileDiagnostic;
14
+ //# sourceMappingURL=convertTypeScriptDiagnosticToLanguageFileDiagnostic.d.ts.map
@@ -3,16 +3,26 @@
3
3
  // Adapted from: https://github.com/microsoft/TypeScript/blob/78c16795cdee70b9d9f0f248b6dbb6ba50994a59/src/compiler/program.ts#L680-L811
4
4
  // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
5
5
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
6
- import { flattenDiagnosticMessageText, getLineAndCharacterOfPosition, getPositionOfLineAndCharacter, } from "typescript";
7
- export function formatDiagnostic(diagnostic) {
6
+ import { getColumnAndLineOfPosition, getPositionOfColumnAndLine, } from "@flint.fyi/core";
7
+ import ts, { flattenDiagnosticMessageText } from "typescript";
8
+ export function convertTypeScriptDiagnosticToLanguageFileDiagnostic(diagnostic) {
9
+ return {
10
+ code: `TS${diagnostic.code}`,
11
+ text: formatDiagnostic(diagnostic),
12
+ };
13
+ }
14
+ function color(text, formatStyle) {
15
+ return formatStyle + text + resetEscapeSequence;
16
+ }
17
+ function formatDiagnostic(diagnostic) {
8
18
  let output = "";
9
19
  if (diagnostic.file !== undefined) {
10
20
  output += formatLocation(diagnostic.file, diagnostic.start);
11
21
  output += " - ";
12
22
  }
13
- output += color(diagnostic.name, COLOR.Grey);
23
+ output += color(`TS${diagnostic.code}`, COLOR.Grey);
14
24
  output += ": ";
15
- output += diagnostic.message;
25
+ output += ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
16
26
  if (diagnostic.file !== undefined) {
17
27
  output += "\n";
18
28
  output += formatCodeSpan(diagnostic.file, diagnostic.start, diagnostic.length, "", COLOR.Red);
@@ -32,9 +42,6 @@ export function formatDiagnostic(diagnostic) {
32
42
  }
33
43
  return output;
34
44
  }
35
- function color(text, formatStyle) {
36
- return formatStyle + text + resetEscapeSequence;
37
- }
38
45
  const gutterStyleSequence = "\u001b[7m";
39
46
  const ellipsis = "...";
40
47
  const gutterSeparator = " ";
@@ -53,9 +60,9 @@ function displayFilename(name) {
53
60
  return name.slice(process.cwd().length + 1);
54
61
  }
55
62
  function formatCodeSpan(file, start, length, indent, squiggleColor) {
56
- const { character: firstLineChar, line: firstLine } = getLineAndCharacterOfPosition(file, start);
57
- const { character: lastLineChar, line: lastLine } = getLineAndCharacterOfPosition(file, start + length);
58
- const lastLineInFile = getLineAndCharacterOfPosition(file, file.text.length).line;
63
+ const { column: firstLineChar, line: firstLine } = getColumnAndLineOfPosition(file, start);
64
+ const { column: lastLineChar, line: lastLine } = getColumnAndLineOfPosition(file, start + length);
65
+ const lastLineInFile = getColumnAndLineOfPosition(file, file.text.length).line;
59
66
  const hasMoreThanFiveLines = lastLine - firstLine >= 4;
60
67
  // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
61
68
  let gutterWidth = (lastLine + 1 + "").length;
@@ -73,9 +80,9 @@ function formatCodeSpan(file, start, length, indent, squiggleColor) {
73
80
  "\n";
74
81
  i = lastLine - 1;
75
82
  }
76
- const lineStart = getPositionOfLineAndCharacter(file, i, 0);
83
+ const lineStart = getPositionOfColumnAndLine(file, { column: 0, line: i });
77
84
  const lineEnd = i < lastLineInFile
78
- ? getPositionOfLineAndCharacter(file, i + 1, 0)
85
+ ? getPositionOfColumnAndLine(file, { column: 0, line: i + 1 })
79
86
  : file.text.length;
80
87
  let lineContent = file.text.slice(lineStart, lineEnd);
81
88
  lineContent = lineContent.trimEnd();
@@ -92,7 +99,7 @@ function formatCodeSpan(file, start, length, indent, squiggleColor) {
92
99
  gutterSeparator;
93
100
  context += squiggleColor;
94
101
  if (i === firstLine) {
95
- const lastCharForLine = i === lastLine ? lastLineChar : void 0;
102
+ const lastCharForLine = i === lastLine ? lastLineChar : undefined;
96
103
  context += lineContent.slice(0, firstLineChar).replace(/\S/g, " ");
97
104
  context += lineContent
98
105
  .slice(firstLineChar, lastCharForLine)
@@ -109,13 +116,14 @@ function formatCodeSpan(file, start, length, indent, squiggleColor) {
109
116
  return context;
110
117
  }
111
118
  function formatLocation(file, start) {
112
- const { character, line } = getLineAndCharacterOfPosition(file, start);
119
+ const { column, line } = getColumnAndLineOfPosition(file, start);
113
120
  const relativeFileName = displayFilename(file.fileName);
114
121
  let output = "";
115
122
  output += color(relativeFileName, COLOR.Cyan);
116
123
  output += ":";
117
124
  output += color(`${line + 1}`, COLOR.Yellow);
118
125
  output += ":";
119
- output += color(`${character + 1}`, COLOR.Yellow);
126
+ output += color(`${column + 1}`, COLOR.Yellow);
120
127
  return output;
121
128
  }
129
+ //# sourceMappingURL=convertTypeScriptDiagnosticToLanguageFileDiagnostic.js.map
@@ -1,3 +1,6 @@
1
- import { LanguageFileDefinition } from "@flint.fyi/core";
1
+ import { LanguageFileCacheImpacts, LanguageFileDefinition } from "@flint.fyi/core";
2
2
  import * as ts from "typescript";
3
+ export declare const NodeSyntaxKinds: typeof ts.SyntaxKind;
4
+ export declare function collectTypeScriptFileCacheImpacts(program: ts.Program, sourceFile: ts.SourceFile): LanguageFileCacheImpacts;
3
5
  export declare function createTypeScriptFileFromProgram(program: ts.Program, sourceFile: ts.SourceFile): LanguageFileDefinition;
6
+ //# sourceMappingURL=createTypeScriptFileFromProgram.d.ts.map
@@ -1,34 +1,26 @@
1
1
  import * as ts from "typescript";
2
2
  import { collectReferencedFilePaths } from "./collectReferencedFilePaths.js";
3
- import { formatDiagnostic } from "./formatDiagnostic.js";
3
+ import { convertTypeScriptDiagnosticToLanguageFileDiagnostic } from "./convertTypeScriptDiagnosticToLanguageFileDiagnostic.js";
4
4
  import { getFirstEnumValues } from "./getFirstEnumValues.js";
5
5
  import { normalizeRange } from "./normalizeRange.js";
6
- const NodeSyntaxKinds = getFirstEnumValues(ts.SyntaxKind);
6
+ export const NodeSyntaxKinds = getFirstEnumValues(ts.SyntaxKind);
7
+ export function collectTypeScriptFileCacheImpacts(program, sourceFile) {
8
+ return {
9
+ dependencies: [
10
+ // TODO: Add support for multi-TSConfig workspaces.
11
+ // https://github.com/flint-fyi/flint/issues/64 & more.
12
+ "tsconfig.json",
13
+ ...collectReferencedFilePaths(program, sourceFile),
14
+ ],
15
+ };
16
+ }
7
17
  export function createTypeScriptFileFromProgram(program, sourceFile) {
8
18
  return {
9
- cache: {
10
- dependencies: [
11
- // TODO: Add support for multi-TSConfig workspaces.
12
- // https://github.com/JoshuaKGoldberg/flint/issues/64 & more.
13
- "tsconfig.json",
14
- ...collectReferencedFilePaths(program, sourceFile),
15
- ],
16
- },
19
+ cache: collectTypeScriptFileCacheImpacts(program, sourceFile),
17
20
  getDiagnostics() {
18
21
  return ts
19
22
  .getPreEmitDiagnostics(program, sourceFile)
20
- .map((diagnostic) => ({
21
- code: `TS${diagnostic.code}`,
22
- text: formatDiagnostic({
23
- ...diagnostic,
24
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
25
- length: diagnostic.length,
26
- message: ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"),
27
- name: `TS${diagnostic.code}`,
28
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
29
- start: diagnostic.start,
30
- }),
31
- }));
23
+ .map(convertTypeScriptDiagnosticToLanguageFileDiagnostic);
32
24
  },
33
25
  async runRule(rule, options) {
34
26
  const reports = [];
@@ -48,16 +40,19 @@ export function createTypeScriptFileFromProgram(program, sourceFile) {
48
40
  typeChecker: program.getTypeChecker(),
49
41
  };
50
42
  const runtime = await rule.setup(context, options);
51
- if (!runtime?.visitors) {
52
- return reports;
43
+ if (runtime?.visitors) {
44
+ const typeChecker = program.getTypeChecker();
45
+ const fileServices = { options, program, sourceFile, typeChecker };
46
+ const { visitors } = runtime;
47
+ const visit = (node) => {
48
+ visitors[NodeSyntaxKinds[node.kind]]?.(node, fileServices);
49
+ node.forEachChild(visit);
50
+ };
51
+ visit(sourceFile);
53
52
  }
54
- const { visitors } = runtime;
55
- const visit = (node) => {
56
- visitors[NodeSyntaxKinds[node.kind]]?.(node);
57
- node.forEachChild(visit);
58
- };
59
- visit(sourceFile);
53
+ await runtime?.teardown?.();
60
54
  return reports;
61
55
  },
62
56
  };
63
57
  }
58
+ //# sourceMappingURL=createTypeScriptFileFromProgram.js.map
@@ -1,10 +1,7 @@
1
1
  import * as ts from "typescript";
2
2
  export declare function createTypeScriptFileFromProjectService(filePathAbsolute: string, program: ts.Program, service: ts.server.ProjectService): {
3
- languageFile: {
4
- [Symbol.dispose](): void;
5
- cache?: import("@flint.fyi/core").LanguageFileCacheImpacts;
6
- getDiagnostics?(): import("@flint.fyi/core").LanguageDiagnostics;
7
- runRule<OptionsSchema extends import("@flint.fyi/core").AnyOptionalSchema | undefined = import("@flint.fyi/core").AnyOptionalSchema | undefined>(rule: import("@flint.fyi/core").AnyRuleDefinition<OptionsSchema>, options: import("@flint.fyi/core").InferredObject<OptionsSchema>): import("@flint.fyi/core/lib/types/promises.js").PromiseOrSync<import("@flint.fyi/core").NormalizedReport[]>;
8
- };
3
+ program: ts.Program;
9
4
  sourceFile: ts.SourceFile;
5
+ [Symbol.dispose](): void;
10
6
  };
7
+ //# sourceMappingURL=createTypeScriptFileFromProjectService.d.ts.map
@@ -1,20 +1,14 @@
1
- import { debugForFile } from "debug-for-file";
2
- import { createTypeScriptFileFromProgram } from "./createTypeScriptFileFromProgram.js";
3
- const log = debugForFile(import.meta.filename);
4
1
  export function createTypeScriptFileFromProjectService(filePathAbsolute, program, service) {
5
2
  const sourceFile = program.getSourceFile(filePathAbsolute);
6
3
  if (!sourceFile) {
7
4
  throw new Error(`Could not retrieve source file for: ${filePathAbsolute}`);
8
5
  }
9
- log("Retrieved source file and type checker for file %s:", filePathAbsolute);
10
- const file = createTypeScriptFileFromProgram(program, sourceFile);
11
6
  return {
12
- languageFile: {
13
- ...file,
14
- [Symbol.dispose]() {
15
- service.closeClientFile(filePathAbsolute);
16
- },
17
- },
7
+ program,
18
8
  sourceFile,
9
+ [Symbol.dispose]() {
10
+ service.closeClientFile(filePathAbsolute);
11
+ },
19
12
  };
20
13
  }
14
+ //# sourceMappingURL=createTypeScriptFileFromProjectService.js.map
@@ -1,5 +1,13 @@
1
+ import { NormalizedReportRangeObject } from "@flint.fyi/core";
1
2
  import ts from "typescript";
3
+ export interface ExtractedDirective {
4
+ range: NormalizedReportRangeObject;
5
+ selection: string;
6
+ type: string;
7
+ }
8
+ export declare function extractDirectivesFromTypeScriptFile(sourceFile: ts.SourceFile): ExtractedDirective[];
2
9
  export declare function parseDirectivesFromTypeScriptFile(sourceFile: ts.SourceFile): {
3
10
  directives: import("@flint.fyi/core").CommentDirective[];
4
11
  reports: import("@flint.fyi/core").FileReport[];
5
12
  };
13
+ //# sourceMappingURL=parseDirectivesFromTypeScriptFile.d.ts.map
@@ -1,8 +1,8 @@
1
- import { DirectivesCollector } from "@flint.fyi/core";
1
+ import { DirectivesCollector, } from "@flint.fyi/core";
2
2
  import * as tsutils from "ts-api-utils";
3
3
  import { normalizeRange } from "../normalizeRange.js";
4
- export function parseDirectivesFromTypeScriptFile(sourceFile) {
5
- const collector = new DirectivesCollector(sourceFile.statements.at(0)?.getStart(sourceFile) ?? sourceFile.text.length);
4
+ export function extractDirectivesFromTypeScriptFile(sourceFile) {
5
+ const directives = [];
6
6
  tsutils.forEachComment(sourceFile, (fullText, sourceRange) => {
7
7
  const commentText = fullText.slice(sourceRange.pos, sourceRange.end);
8
8
  const match = /^\/\/\s*flint-(\S+)(?:\s+(.+))?/.exec(commentText);
@@ -15,7 +15,15 @@ export function parseDirectivesFromTypeScriptFile(sourceFile) {
15
15
  };
16
16
  const range = normalizeRange(commentRange, sourceFile);
17
17
  const [type, selection] = match.slice(1);
18
- collector.add(range, selection, type);
18
+ directives.push({ range, selection, type });
19
19
  });
20
+ return directives;
21
+ }
22
+ export function parseDirectivesFromTypeScriptFile(sourceFile) {
23
+ const collector = new DirectivesCollector(sourceFile.statements.at(0)?.getStart(sourceFile) ?? sourceFile.text.length);
24
+ for (const { range, selection, type } of extractDirectivesFromTypeScriptFile(sourceFile)) {
25
+ collector.add(range, selection, type);
26
+ }
20
27
  return collector.collect();
21
28
  }
29
+ //# sourceMappingURL=parseDirectivesFromTypeScriptFile.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=parseDirectivesFromTypeScriptFile.test.d.ts.map
@@ -89,3 +89,4 @@ describe(parseDirectivesFromTypeScriptFile, () => {
89
89
  `);
90
90
  });
91
91
  });
92
+ //# sourceMappingURL=parseDirectivesFromTypeScriptFile.test.js.map
@@ -33,3 +33,4 @@
33
33
  * ```
34
34
  */
35
35
  export declare function getFirstEnumValues<Keys extends string, Values extends number, Original extends Record<Keys | Values, Keys | Values>>(original: Original): Original;
36
+ //# sourceMappingURL=getFirstEnumValues.d.ts.map
@@ -49,3 +49,4 @@ export function getFirstEnumValues(original) {
49
49
  }
50
50
  return result;
51
51
  }
52
+ //# sourceMappingURL=getFirstEnumValues.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=getFirstEnumValues.test.d.ts.map
@@ -43,3 +43,4 @@ describe("getFirstEnumValues", () => {
43
43
  });
44
44
  });
45
45
  });
46
+ //# sourceMappingURL=getFirstEnumValues.test.js.map
@@ -1,3 +1,4 @@
1
1
  import type * as ts from "typescript";
2
2
  import { CharacterReportRange } from "@flint.fyi/core";
3
3
  export declare function getTSNodeRange(node: ts.Node, sourceFile: ts.SourceFile): CharacterReportRange;
4
+ //# sourceMappingURL=getTSNodeRange.d.ts.map
@@ -4,3 +4,4 @@ export function getTSNodeRange(node, sourceFile) {
4
4
  end: node.getEnd(),
5
5
  };
6
6
  }
7
+ //# sourceMappingURL=getTSNodeRange.js.map
package/lib/index.d.ts CHANGED
@@ -1,7 +1,13 @@
1
+ export { convertTypeScriptDiagnosticToLanguageFileDiagnostic } from "./convertTypeScriptDiagnosticToLanguageFileDiagnostic.js";
2
+ export { collectTypeScriptFileCacheImpacts, NodeSyntaxKinds, } from "./createTypeScriptFileFromProgram.js";
3
+ export { extractDirectivesFromTypeScriptFile, ExtractedDirective, } from "./directives/parseDirectivesFromTypeScriptFile.js";
1
4
  export { getTSNodeRange } from "./getTSNodeRange.js";
2
5
  export * from "./language.js";
6
+ export { TSNodesByName } from "./nodes.js";
3
7
  export { ts } from "./plugin.js";
8
+ export { prepareTypeScriptBasedLanguage, TypeScriptBasedLanguageFile, TypeScriptBasedLanguageFileFactoryDefinition, } from "./prepareTypeScriptBasedLanguage.js";
4
9
  export { getDeclarationsIfGlobal } from "./utils/getDeclarationsIfGlobal.js";
5
10
  export { isGlobalDeclaration } from "./utils/isGlobalDeclaration.js";
6
11
  export { isGlobalDeclarationOfName } from "./utils/isGlobalDeclarationOfName.js";
7
12
  export { isGlobalVariable } from "./utils/isGlobalVariable.js";
13
+ //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,7 +1,12 @@
1
+ export { convertTypeScriptDiagnosticToLanguageFileDiagnostic } from "./convertTypeScriptDiagnosticToLanguageFileDiagnostic.js";
2
+ export { collectTypeScriptFileCacheImpacts, NodeSyntaxKinds, } from "./createTypeScriptFileFromProgram.js";
3
+ export { extractDirectivesFromTypeScriptFile, } from "./directives/parseDirectivesFromTypeScriptFile.js";
1
4
  export { getTSNodeRange } from "./getTSNodeRange.js";
2
5
  export * from "./language.js";
3
6
  export { ts } from "./plugin.js";
7
+ export { prepareTypeScriptBasedLanguage, } from "./prepareTypeScriptBasedLanguage.js";
4
8
  export { getDeclarationsIfGlobal } from "./utils/getDeclarationsIfGlobal.js";
5
9
  export { isGlobalDeclaration } from "./utils/isGlobalDeclaration.js";
6
10
  export { isGlobalDeclarationOfName } from "./utils/isGlobalDeclarationOfName.js";
7
11
  export { isGlobalVariable } from "./utils/isGlobalVariable.js";
12
+ //# sourceMappingURL=index.js.map
package/lib/language.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as ts from "typescript";
2
2
  import { TSNodesByName } from "./nodes.js";
3
- export interface TypeScriptServices {
3
+ export interface TypeScriptFileServices {
4
4
  program: ts.Program;
5
5
  sourceFile: ts.SourceFile;
6
6
  typeChecker: ts.TypeChecker;
7
7
  }
8
- export declare const typescriptLanguage: import("@flint.fyi/core").Language<TSNodesByName, TypeScriptServices>;
8
+ export declare const typescriptLanguage: import("@flint.fyi/core").Language<TSNodesByName, TypeScriptFileServices>;
9
+ //# sourceMappingURL=language.d.ts.map
package/lib/language.js CHANGED
@@ -1,65 +1,20 @@
1
1
  import { createLanguage } from "@flint.fyi/core";
2
- import { createProjectService } from "@typescript-eslint/project-service";
3
- import { createFSBackedSystem, createVirtualTypeScriptEnvironment, } from "@typescript/vfs";
4
- import { CachedFactory } from "cached-factory";
5
- import { debugForFile } from "debug-for-file";
6
- import path from "node:path";
7
- import * as ts from "typescript";
8
- import { createTypeScriptFileFromProgram } from "./createTypeScriptFileFromProgram.js";
9
- import { createTypeScriptFileFromProjectService } from "./createTypeScriptFileFromProjectService.js";
2
+ import { prepareTypeScriptBasedLanguage } from "./prepareTypeScriptBasedLanguage.js";
10
3
  import { prepareTypeScriptFile } from "./prepareTypeScriptFile.js";
11
- const log = debugForFile(import.meta.filename);
12
- const projectRoot = path.join(import.meta.dirname, "../..");
13
4
  export const typescriptLanguage = createLanguage({
14
5
  about: {
15
6
  name: "TypeScript",
16
7
  },
17
8
  prepare: () => {
18
- const { service } = createProjectService();
19
- const seenPrograms = new Set();
20
- const environments = new CachedFactory((filePathAbsolute) => {
21
- const system = createFSBackedSystem(new Map([[filePathAbsolute, "// ..."]]), projectRoot, ts);
22
- return createVirtualTypeScriptEnvironment(system, [filePathAbsolute], ts, {
23
- skipLibCheck: true,
24
- target: ts.ScriptTarget.ESNext,
25
- });
26
- });
27
- const servicePrograms = new CachedFactory((filePathAbsolute) => {
28
- log("Opening client file:", filePathAbsolute);
29
- service.openClientFile(filePathAbsolute);
30
- log("Retrieving client services:", filePathAbsolute);
31
- const scriptInfo = service.getScriptInfo(filePathAbsolute);
32
- if (!scriptInfo) {
33
- throw new Error(`Could not find script info for file: ${filePathAbsolute}`);
34
- }
35
- const defaultProject = service.getDefaultProjectForFile(scriptInfo.fileName, true);
36
- if (!defaultProject) {
37
- throw new Error(`Could not find default project for file: ${filePathAbsolute}`);
38
- }
39
- const program = defaultProject.getLanguageService(true).getProgram();
40
- if (!program) {
41
- throw new Error(`Could not retrieve program for file: ${filePathAbsolute}`);
42
- }
43
- return program;
44
- });
9
+ const lang = prepareTypeScriptBasedLanguage();
45
10
  return {
46
- prepareFromDisk: (filePathAbsolute) => {
47
- const program = servicePrograms.get(filePathAbsolute);
48
- seenPrograms.add(program);
49
- const { languageFile, sourceFile } = createTypeScriptFileFromProjectService(filePathAbsolute, program, service);
50
- return prepareTypeScriptFile(languageFile, sourceFile);
11
+ prepareFromDisk(filePathAbsolute) {
12
+ return prepareTypeScriptFile(lang.createFromDisk(filePathAbsolute));
51
13
  },
52
- prepareFromVirtual: (filePathAbsolute, sourceText) => {
53
- const environment = environments.get(filePathAbsolute);
54
- environment.updateFile(filePathAbsolute, sourceText);
55
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
56
- const sourceFile = environment.getSourceFile(filePathAbsolute);
57
- const program = environment.languageService.getProgram();
58
- /* eslint-enable @typescript-eslint/no-non-null-assertion */
59
- seenPrograms.add(program);
60
- const languageFile = createTypeScriptFileFromProgram(program, sourceFile);
61
- return prepareTypeScriptFile(languageFile, sourceFile);
14
+ prepareFromVirtual(filePathAbsolute, sourceText) {
15
+ return prepareTypeScriptFile(lang.createFromVirtual(filePathAbsolute, sourceText));
62
16
  },
63
17
  };
64
18
  },
65
19
  });
20
+ //# sourceMappingURL=language.js.map
package/lib/nodes.d.ts CHANGED
@@ -140,3 +140,4 @@ export interface TSNodesByName {
140
140
  WithStatement: ts.WithStatement;
141
141
  YieldExpression: ts.YieldExpression;
142
142
  }
143
+ //# sourceMappingURL=nodes.d.ts.map
package/lib/nodes.js CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=nodes.js.map
@@ -1,3 +1,4 @@
1
1
  import type * as ts from "typescript";
2
2
  import { CharacterReportRange, NormalizedReportRangeObject } from "@flint.fyi/core";
3
3
  export declare function normalizeRange(original: CharacterReportRange, sourceFile: ts.SourceFile): NormalizedReportRangeObject;
4
+ //# sourceMappingURL=normalizeRange.d.ts.map
@@ -1,16 +1,14 @@
1
+ import { getColumnAndLineOfPosition, } from "@flint.fyi/core";
1
2
  export function normalizeRange(original, sourceFile) {
2
3
  const onCharacters = isNode(original)
3
4
  ? { begin: original.getStart(), end: original.getEnd() }
4
5
  : original;
5
6
  return {
6
- begin: normalizeRangePosition(onCharacters.begin, sourceFile),
7
- end: normalizeRangePosition(onCharacters.end, sourceFile),
7
+ begin: getColumnAndLineOfPosition(sourceFile, onCharacters.begin),
8
+ end: getColumnAndLineOfPosition(sourceFile, onCharacters.end),
8
9
  };
9
10
  }
10
11
  function isNode(value) {
11
12
  return typeof value === "object" && value !== null && "kind" in value;
12
13
  }
13
- function normalizeRangePosition(raw, sourceFile) {
14
- const { character, line } = sourceFile.getLineAndCharacterOfPosition(raw);
15
- return { column: character, line, raw };
16
- }
14
+ //# sourceMappingURL=normalizeRange.js.map