@ts-guaranteed/tsgo 7.0.0-dev

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 (339) hide show
  1. package/LICENSE +55 -0
  2. package/README.md +36 -0
  3. package/bin/tsgo.js +28 -0
  4. package/dist/api/async/api.d.ts +258 -0
  5. package/dist/api/async/api.d.ts.map +1 -0
  6. package/dist/api/async/api.js +894 -0
  7. package/dist/api/async/api.js.map +1 -0
  8. package/dist/api/async/client.d.ts +22 -0
  9. package/dist/api/async/client.d.ts.map +1 -0
  10. package/dist/api/async/client.js +140 -0
  11. package/dist/api/async/client.js.map +1 -0
  12. package/dist/api/async/types.d.ts +179 -0
  13. package/dist/api/async/types.d.ts.map +1 -0
  14. package/dist/api/async/types.js +2 -0
  15. package/dist/api/async/types.js.map +1 -0
  16. package/dist/api/fs.d.ts +23 -0
  17. package/dist/api/fs.d.ts.map +1 -0
  18. package/dist/api/fs.js +109 -0
  19. package/dist/api/fs.js.map +1 -0
  20. package/dist/api/node/encoder.d.ts +15 -0
  21. package/dist/api/node/encoder.d.ts.map +1 -0
  22. package/dist/api/node/encoder.generated.d.ts +5 -0
  23. package/dist/api/node/encoder.generated.d.ts.map +1 -0
  24. package/dist/api/node/encoder.generated.js +74 -0
  25. package/dist/api/node/encoder.generated.js.map +1 -0
  26. package/dist/api/node/encoder.js +304 -0
  27. package/dist/api/node/encoder.js.map +1 -0
  28. package/dist/api/node/msgpack.d.ts +32 -0
  29. package/dist/api/node/msgpack.d.ts.map +1 -0
  30. package/dist/api/node/msgpack.js +212 -0
  31. package/dist/api/node/msgpack.js.map +1 -0
  32. package/dist/api/node/node.d.ts +62 -0
  33. package/dist/api/node/node.d.ts.map +1 -0
  34. package/dist/api/node/node.generated.d.ts +171 -0
  35. package/dist/api/node/node.generated.d.ts.map +1 -0
  36. package/dist/api/node/node.generated.js +814 -0
  37. package/dist/api/node/node.generated.js.map +1 -0
  38. package/dist/api/node/node.infrastructure.d.ts +51 -0
  39. package/dist/api/node/node.infrastructure.d.ts.map +1 -0
  40. package/dist/api/node/node.infrastructure.js +122 -0
  41. package/dist/api/node/node.infrastructure.js.map +1 -0
  42. package/dist/api/node/node.js +202 -0
  43. package/dist/api/node/node.js.map +1 -0
  44. package/dist/api/node/protocol.d.ts +29 -0
  45. package/dist/api/node/protocol.d.ts.map +1 -0
  46. package/dist/api/node/protocol.generated.d.ts +4 -0
  47. package/dist/api/node/protocol.generated.d.ts.map +1 -0
  48. package/dist/api/node/protocol.generated.js +241 -0
  49. package/dist/api/node/protocol.generated.js.map +1 -0
  50. package/dist/api/node/protocol.js +30 -0
  51. package/dist/api/node/protocol.js.map +1 -0
  52. package/dist/api/objectRegistry.d.ts +38 -0
  53. package/dist/api/objectRegistry.d.ts.map +1 -0
  54. package/dist/api/objectRegistry.js +55 -0
  55. package/dist/api/objectRegistry.js.map +1 -0
  56. package/dist/api/options.d.ts +24 -0
  57. package/dist/api/options.d.ts.map +1 -0
  58. package/dist/api/options.js +11 -0
  59. package/dist/api/options.js.map +1 -0
  60. package/dist/api/path.d.ts +110 -0
  61. package/dist/api/path.d.ts.map +1 -0
  62. package/dist/api/path.js +508 -0
  63. package/dist/api/path.js.map +1 -0
  64. package/dist/api/proto.d.ts +158 -0
  65. package/dist/api/proto.d.ts.map +1 -0
  66. package/dist/api/proto.js +22 -0
  67. package/dist/api/proto.js.map +1 -0
  68. package/dist/api/sourceFileCache.d.ts +79 -0
  69. package/dist/api/sourceFileCache.d.ts.map +1 -0
  70. package/dist/api/sourceFileCache.js +169 -0
  71. package/dist/api/sourceFileCache.js.map +1 -0
  72. package/dist/api/sync/api.d.ts +258 -0
  73. package/dist/api/sync/api.d.ts.map +1 -0
  74. package/dist/api/sync/api.js +902 -0
  75. package/dist/api/sync/api.js.map +1 -0
  76. package/dist/api/sync/client.d.ts +13 -0
  77. package/dist/api/sync/client.d.ts.map +1 -0
  78. package/dist/api/sync/client.js +72 -0
  79. package/dist/api/sync/client.js.map +1 -0
  80. package/dist/api/sync/types.d.ts +179 -0
  81. package/dist/api/sync/types.d.ts.map +1 -0
  82. package/dist/api/sync/types.js +2 -0
  83. package/dist/api/sync/types.js.map +1 -0
  84. package/dist/api/syncChannel.d.ts +111 -0
  85. package/dist/api/syncChannel.d.ts.map +1 -0
  86. package/dist/api/syncChannel.js +488 -0
  87. package/dist/api/syncChannel.js.map +1 -0
  88. package/dist/ast/ast.d.ts +66 -0
  89. package/dist/ast/ast.d.ts.map +1 -0
  90. package/dist/ast/ast.generated.d.ts +1161 -0
  91. package/dist/ast/ast.generated.d.ts.map +1 -0
  92. package/dist/ast/ast.generated.js +4 -0
  93. package/dist/ast/ast.generated.js.map +1 -0
  94. package/dist/ast/ast.js +7 -0
  95. package/dist/ast/ast.js.map +1 -0
  96. package/dist/ast/astnav.d.ts +19 -0
  97. package/dist/ast/astnav.d.ts.map +1 -0
  98. package/dist/ast/astnav.js +596 -0
  99. package/dist/ast/astnav.js.map +1 -0
  100. package/dist/ast/clone.d.ts +16 -0
  101. package/dist/ast/clone.d.ts.map +1 -0
  102. package/dist/ast/clone.js +104 -0
  103. package/dist/ast/clone.js.map +1 -0
  104. package/dist/ast/factory.generated.d.ts +512 -0
  105. package/dist/ast/factory.generated.d.ts.map +1 -0
  106. package/dist/ast/factory.generated.js +3023 -0
  107. package/dist/ast/factory.generated.js.map +1 -0
  108. package/dist/ast/index.d.ts +18 -0
  109. package/dist/ast/index.d.ts.map +1 -0
  110. package/dist/ast/index.js +18 -0
  111. package/dist/ast/index.js.map +1 -0
  112. package/dist/ast/is.d.ts +34 -0
  113. package/dist/ast/is.d.ts.map +1 -0
  114. package/dist/ast/is.generated.d.ts +329 -0
  115. package/dist/ast/is.generated.d.ts.map +1 -0
  116. package/dist/ast/is.generated.js +1104 -0
  117. package/dist/ast/is.generated.js.map +1 -0
  118. package/dist/ast/is.js +226 -0
  119. package/dist/ast/is.js.map +1 -0
  120. package/dist/ast/scanner.d.ts +97 -0
  121. package/dist/ast/scanner.d.ts.map +1 -0
  122. package/dist/ast/scanner.js +2230 -0
  123. package/dist/ast/scanner.js.map +1 -0
  124. package/dist/ast/utils.d.ts +5 -0
  125. package/dist/ast/utils.d.ts.map +1 -0
  126. package/dist/ast/utils.js +27 -0
  127. package/dist/ast/utils.js.map +1 -0
  128. package/dist/ast/visitor.d.ts +14 -0
  129. package/dist/ast/visitor.d.ts.map +1 -0
  130. package/dist/ast/visitor.generated.d.ts +50 -0
  131. package/dist/ast/visitor.generated.d.ts.map +1 -0
  132. package/dist/ast/visitor.generated.js +978 -0
  133. package/dist/ast/visitor.generated.js.map +1 -0
  134. package/dist/ast/visitor.js +47 -0
  135. package/dist/ast/visitor.js.map +1 -0
  136. package/dist/enums/characterCodes.d.ts +2 -0
  137. package/dist/enums/characterCodes.d.ts.map +1 -0
  138. package/dist/enums/characterCodes.enum.d.ts +129 -0
  139. package/dist/enums/characterCodes.enum.d.ts.map +1 -0
  140. package/dist/enums/characterCodes.enum.js +132 -0
  141. package/dist/enums/characterCodes.enum.js.map +1 -0
  142. package/dist/enums/characterCodes.js +130 -0
  143. package/dist/enums/characterCodes.js.map +1 -0
  144. package/dist/enums/commentDirectiveType.d.ts +2 -0
  145. package/dist/enums/commentDirectiveType.d.ts.map +1 -0
  146. package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
  147. package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
  148. package/dist/enums/commentDirectiveType.enum.js +6 -0
  149. package/dist/enums/commentDirectiveType.enum.js.map +1 -0
  150. package/dist/enums/commentDirectiveType.js +6 -0
  151. package/dist/enums/commentDirectiveType.js.map +1 -0
  152. package/dist/enums/diagnosticCategory.d.ts +2 -0
  153. package/dist/enums/diagnosticCategory.d.ts.map +1 -0
  154. package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
  155. package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
  156. package/dist/enums/diagnosticCategory.enum.js +9 -0
  157. package/dist/enums/diagnosticCategory.enum.js.map +1 -0
  158. package/dist/enums/diagnosticCategory.js +9 -0
  159. package/dist/enums/diagnosticCategory.js.map +1 -0
  160. package/dist/enums/elementFlags.d.ts +2 -0
  161. package/dist/enums/elementFlags.d.ts.map +1 -0
  162. package/dist/enums/elementFlags.enum.d.ts +12 -0
  163. package/dist/enums/elementFlags.enum.d.ts.map +1 -0
  164. package/dist/enums/elementFlags.enum.js +14 -0
  165. package/dist/enums/elementFlags.enum.js.map +1 -0
  166. package/dist/enums/elementFlags.js +14 -0
  167. package/dist/enums/elementFlags.js.map +1 -0
  168. package/dist/enums/languageVariant.d.ts +2 -0
  169. package/dist/enums/languageVariant.d.ts.map +1 -0
  170. package/dist/enums/languageVariant.enum.d.ts +5 -0
  171. package/dist/enums/languageVariant.enum.d.ts.map +1 -0
  172. package/dist/enums/languageVariant.enum.js +6 -0
  173. package/dist/enums/languageVariant.enum.js.map +1 -0
  174. package/dist/enums/languageVariant.js +6 -0
  175. package/dist/enums/languageVariant.js.map +1 -0
  176. package/dist/enums/modifierFlags.d.ts +2 -0
  177. package/dist/enums/modifierFlags.d.ts.map +1 -0
  178. package/dist/enums/modifierFlags.enum.d.ts +42 -0
  179. package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
  180. package/dist/enums/modifierFlags.enum.js +44 -0
  181. package/dist/enums/modifierFlags.enum.js.map +1 -0
  182. package/dist/enums/modifierFlags.js +44 -0
  183. package/dist/enums/modifierFlags.js.map +1 -0
  184. package/dist/enums/nodeBuilderFlags.d.ts +2 -0
  185. package/dist/enums/nodeBuilderFlags.d.ts.map +1 -0
  186. package/dist/enums/nodeBuilderFlags.enum.d.ts +36 -0
  187. package/dist/enums/nodeBuilderFlags.enum.d.ts.map +1 -0
  188. package/dist/enums/nodeBuilderFlags.enum.js +38 -0
  189. package/dist/enums/nodeBuilderFlags.enum.js.map +1 -0
  190. package/dist/enums/nodeBuilderFlags.js +38 -0
  191. package/dist/enums/nodeBuilderFlags.js.map +1 -0
  192. package/dist/enums/nodeFlags.d.ts +2 -0
  193. package/dist/enums/nodeFlags.d.ts.map +1 -0
  194. package/dist/enums/nodeFlags.enum.d.ts +43 -0
  195. package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
  196. package/dist/enums/nodeFlags.enum.js +45 -0
  197. package/dist/enums/nodeFlags.enum.js.map +1 -0
  198. package/dist/enums/nodeFlags.js +45 -0
  199. package/dist/enums/nodeFlags.js.map +1 -0
  200. package/dist/enums/objectFlags.d.ts +2 -0
  201. package/dist/enums/objectFlags.d.ts.map +1 -0
  202. package/dist/enums/objectFlags.enum.d.ts +50 -0
  203. package/dist/enums/objectFlags.enum.d.ts.map +1 -0
  204. package/dist/enums/objectFlags.enum.js +52 -0
  205. package/dist/enums/objectFlags.enum.js.map +1 -0
  206. package/dist/enums/objectFlags.js +52 -0
  207. package/dist/enums/objectFlags.js.map +1 -0
  208. package/dist/enums/outerExpressionKinds.d.ts +2 -0
  209. package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
  210. package/dist/enums/outerExpressionKinds.enum.d.ts +12 -0
  211. package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
  212. package/dist/enums/outerExpressionKinds.enum.js +14 -0
  213. package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
  214. package/dist/enums/outerExpressionKinds.js +14 -0
  215. package/dist/enums/outerExpressionKinds.js.map +1 -0
  216. package/dist/enums/regularExpressionFlags.d.ts +2 -0
  217. package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
  218. package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
  219. package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
  220. package/dist/enums/regularExpressionFlags.enum.js +14 -0
  221. package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
  222. package/dist/enums/regularExpressionFlags.js +14 -0
  223. package/dist/enums/regularExpressionFlags.js.map +1 -0
  224. package/dist/enums/scriptKind.d.ts +2 -0
  225. package/dist/enums/scriptKind.d.ts.map +1 -0
  226. package/dist/enums/scriptKind.enum.d.ts +11 -0
  227. package/dist/enums/scriptKind.enum.d.ts.map +1 -0
  228. package/dist/enums/scriptKind.enum.js +12 -0
  229. package/dist/enums/scriptKind.enum.js.map +1 -0
  230. package/dist/enums/scriptKind.js +12 -0
  231. package/dist/enums/scriptKind.js.map +1 -0
  232. package/dist/enums/scriptTarget.d.ts +2 -0
  233. package/dist/enums/scriptTarget.d.ts.map +1 -0
  234. package/dist/enums/scriptTarget.enum.d.ts +17 -0
  235. package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
  236. package/dist/enums/scriptTarget.enum.js +18 -0
  237. package/dist/enums/scriptTarget.enum.js.map +1 -0
  238. package/dist/enums/scriptTarget.js +18 -0
  239. package/dist/enums/scriptTarget.js.map +1 -0
  240. package/dist/enums/signatureFlags.d.ts +2 -0
  241. package/dist/enums/signatureFlags.d.ts.map +1 -0
  242. package/dist/enums/signatureFlags.enum.d.ts +15 -0
  243. package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
  244. package/dist/enums/signatureFlags.enum.js +17 -0
  245. package/dist/enums/signatureFlags.enum.js.map +1 -0
  246. package/dist/enums/signatureFlags.js +17 -0
  247. package/dist/enums/signatureFlags.js.map +1 -0
  248. package/dist/enums/signatureKind.d.ts +2 -0
  249. package/dist/enums/signatureKind.d.ts.map +1 -0
  250. package/dist/enums/signatureKind.enum.d.ts +5 -0
  251. package/dist/enums/signatureKind.enum.d.ts.map +1 -0
  252. package/dist/enums/signatureKind.enum.js +7 -0
  253. package/dist/enums/signatureKind.enum.js.map +1 -0
  254. package/dist/enums/signatureKind.js +7 -0
  255. package/dist/enums/signatureKind.js.map +1 -0
  256. package/dist/enums/symbolFlags.d.ts +2 -0
  257. package/dist/enums/symbolFlags.d.ts.map +1 -0
  258. package/dist/enums/symbolFlags.enum.d.ts +71 -0
  259. package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
  260. package/dist/enums/symbolFlags.enum.js +73 -0
  261. package/dist/enums/symbolFlags.enum.js.map +1 -0
  262. package/dist/enums/symbolFlags.js +73 -0
  263. package/dist/enums/symbolFlags.js.map +1 -0
  264. package/dist/enums/syntaxKind.d.ts +2 -0
  265. package/dist/enums/syntaxKind.d.ts.map +1 -0
  266. package/dist/enums/syntaxKind.enum.d.ts +389 -0
  267. package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
  268. package/dist/enums/syntaxKind.enum.js +391 -0
  269. package/dist/enums/syntaxKind.enum.js.map +1 -0
  270. package/dist/enums/syntaxKind.js +391 -0
  271. package/dist/enums/syntaxKind.js.map +1 -0
  272. package/dist/enums/tokenFlags.d.ts +2 -0
  273. package/dist/enums/tokenFlags.d.ts.map +1 -0
  274. package/dist/enums/tokenFlags.enum.d.ts +30 -0
  275. package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
  276. package/dist/enums/tokenFlags.enum.js +32 -0
  277. package/dist/enums/tokenFlags.enum.js.map +1 -0
  278. package/dist/enums/tokenFlags.js +32 -0
  279. package/dist/enums/tokenFlags.js.map +1 -0
  280. package/dist/enums/typeFlags.d.ts +2 -0
  281. package/dist/enums/typeFlags.d.ts.map +1 -0
  282. package/dist/enums/typeFlags.enum.d.ts +76 -0
  283. package/dist/enums/typeFlags.enum.d.ts.map +1 -0
  284. package/dist/enums/typeFlags.enum.js +78 -0
  285. package/dist/enums/typeFlags.enum.js.map +1 -0
  286. package/dist/enums/typeFlags.js +78 -0
  287. package/dist/enums/typeFlags.js.map +1 -0
  288. package/dist/enums/typePredicateKind.d.ts +2 -0
  289. package/dist/enums/typePredicateKind.d.ts.map +1 -0
  290. package/dist/enums/typePredicateKind.enum.d.ts +7 -0
  291. package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
  292. package/dist/enums/typePredicateKind.enum.js +9 -0
  293. package/dist/enums/typePredicateKind.enum.js.map +1 -0
  294. package/dist/enums/typePredicateKind.js +9 -0
  295. package/dist/enums/typePredicateKind.js.map +1 -0
  296. package/lib/getExePath.d.ts +2 -0
  297. package/lib/getExePath.js +58 -0
  298. package/package.json +87 -0
  299. package/vendor/vscode-jsonrpc/README.md +69 -0
  300. package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  301. package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
  302. package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
  303. package/vendor/vscode-jsonrpc/lib/browser/ril.js +203 -0
  304. package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  305. package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
  306. package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  307. package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
  308. package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
  309. package/vendor/vscode-jsonrpc/lib/common/connection.js +1272 -0
  310. package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  311. package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
  312. package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  313. package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
  314. package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  315. package/vendor/vscode-jsonrpc/lib/common/events.js +136 -0
  316. package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  317. package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
  318. package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
  319. package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
  320. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  321. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
  322. package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  323. package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
  324. package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  325. package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
  326. package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  327. package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
  328. package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  329. package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
  330. package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  331. package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
  332. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  333. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
  334. package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
  335. package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
  336. package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
  337. package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
  338. package/vendor/vscode-jsonrpc/package.json +54 -0
  339. package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
@@ -0,0 +1,902 @@
1
+ //
2
+ // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3
+ // !!! THIS FILE IS AUTO-GENERATED - DO NOT EDIT !!!
4
+ // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5
+ //
6
+ // Source: src/api/async/api.ts
7
+ // Regenerate: npm run generate (from _packages/native-preview)
8
+ //
9
+ /// <reference path="../node/node.ts" preserve="true" />
10
+ import { DiagnosticCategory } from "#enums/diagnosticCategory";
11
+ import { ElementFlags } from "#enums/elementFlags";
12
+ import { NodeBuilderFlags } from "#enums/nodeBuilderFlags";
13
+ import { ObjectFlags } from "#enums/objectFlags";
14
+ import { SignatureFlags } from "#enums/signatureFlags";
15
+ import { SignatureKind } from "#enums/signatureKind";
16
+ import { SymbolFlags } from "#enums/symbolFlags";
17
+ import { TypeFlags } from "#enums/typeFlags";
18
+ import { TypePredicateKind } from "#enums/typePredicateKind";
19
+ import { ModifierFlags, } from "../../ast/index.js";
20
+ import { encodeNode, uint8ArrayToBase64, } from "../node/encoder.js";
21
+ import { decodeNode, getNodeId, parseNodeHandle, readParseOptionsKey, readSourceFileHash, RemoteSourceFile, } from "../node/node.js";
22
+ import { ObjectRegistry } from "../objectRegistry.js";
23
+ import { createGetCanonicalFileName, toPath, } from "../path.js";
24
+ import { resolveFileName } from "../proto.js";
25
+ import { SourceFileCache } from "../sourceFileCache.js";
26
+ import { Client, } from "./client.js";
27
+ export { DiagnosticCategory, ElementFlags, ModifierFlags, NodeBuilderFlags, ObjectFlags, SignatureFlags, SignatureKind, SymbolFlags, TypeFlags, TypePredicateKind };
28
+ export { documentURIToFileName, fileNameToDocumentURI } from "../path.js";
29
+ export class API {
30
+ client;
31
+ sourceFileCache;
32
+ toPath;
33
+ initialized = false;
34
+ activeSnapshots = new Set();
35
+ latestSnapshot;
36
+ internal;
37
+ constructor(options) {
38
+ this.client = new Client(options);
39
+ this.sourceFileCache = new SourceFileCache();
40
+ this.internal = new InternalAPI(this.client, () => this.ensureInitialized());
41
+ }
42
+ /**
43
+ * Create an API instance from an existing LSP connection's API session.
44
+ * Use this when connecting to an API pipe provided by an LSP server via custom/initializeAPISession.
45
+ */
46
+ static fromLSPConnection(options) {
47
+ const api = new API(options);
48
+ api.ensureInitialized();
49
+ return api;
50
+ }
51
+ ensureInitialized() {
52
+ if (!this.initialized) {
53
+ const response = this.client.apiRequest("initialize", null);
54
+ const getCanonicalFileName = createGetCanonicalFileName(response.useCaseSensitiveFileNames);
55
+ const currentDirectory = response.currentDirectory;
56
+ this.toPath = (fileName) => toPath(fileName, currentDirectory, getCanonicalFileName);
57
+ this.initialized = true;
58
+ }
59
+ }
60
+ parseConfigFile(file) {
61
+ this.ensureInitialized();
62
+ return this.client.apiRequest("parseConfigFile", { file });
63
+ }
64
+ updateSnapshot(params) {
65
+ this.ensureInitialized();
66
+ const requestParams = params ?? {};
67
+ if (requestParams.openProject) {
68
+ requestParams.openProject = resolveFileName(requestParams.openProject);
69
+ }
70
+ const data = this.client.apiRequest("updateSnapshot", requestParams);
71
+ // Retain cached source files from previous snapshot for unchanged files
72
+ if (this.latestSnapshot) {
73
+ this.sourceFileCache.retainForSnapshot(data.snapshot, this.latestSnapshot.id, data.changes);
74
+ if (this.latestSnapshot.isDisposed()) {
75
+ this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);
76
+ }
77
+ }
78
+ const snapshot = new Snapshot(data, this.client, this.sourceFileCache, this.toPath, () => {
79
+ this.activeSnapshots.delete(snapshot);
80
+ if (snapshot !== this.latestSnapshot) {
81
+ this.sourceFileCache.releaseSnapshot(snapshot.id);
82
+ }
83
+ });
84
+ this.latestSnapshot = snapshot;
85
+ this.activeSnapshots.add(snapshot);
86
+ return snapshot;
87
+ }
88
+ close() {
89
+ // Dispose all active snapshots
90
+ for (const snapshot of [...this.activeSnapshots]) {
91
+ snapshot.dispose();
92
+ }
93
+ // Release the latest snapshot's cache refs if still held
94
+ if (this.latestSnapshot) {
95
+ this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);
96
+ this.latestSnapshot = undefined;
97
+ }
98
+ this.client.close();
99
+ this.sourceFileCache.clear();
100
+ }
101
+ clearSourceFileCache() {
102
+ this.sourceFileCache.clear();
103
+ }
104
+ }
105
+ export class InternalAPI {
106
+ client;
107
+ ensureInitialized;
108
+ /** @internal */
109
+ constructor(client, ensureInitialized) {
110
+ this.client = client;
111
+ this.ensureInitialized = ensureInitialized;
112
+ }
113
+ startCPUProfile(dir) {
114
+ this.ensureInitialized();
115
+ this.client.apiRequest("startCPUProfile", { dir });
116
+ }
117
+ stopCPUProfile() {
118
+ this.ensureInitialized();
119
+ const result = this.client.apiRequest("stopCPUProfile", null);
120
+ return result.file;
121
+ }
122
+ saveHeapProfile(dir) {
123
+ this.ensureInitialized();
124
+ const result = this.client.apiRequest("saveHeapProfile", { dir });
125
+ return result.file;
126
+ }
127
+ }
128
+ export class Snapshot {
129
+ id;
130
+ projectMap;
131
+ toPath;
132
+ client;
133
+ objectRegistry;
134
+ disposed = false;
135
+ onDispose;
136
+ constructor(data, client, sourceFileCache, toPath, onDispose) {
137
+ this.id = data.snapshot;
138
+ this.client = client;
139
+ this.toPath = toPath;
140
+ this.onDispose = onDispose;
141
+ this.objectRegistry = new ObjectRegistry({
142
+ createSymbol: symbolData => new Symbol(symbolData, this.client, this.id, this.objectRegistry),
143
+ createType: typeData => new TypeObject(typeData, this.client, this.id, this.objectRegistry),
144
+ createSignature: sigData => new Signature(sigData, this.objectRegistry),
145
+ });
146
+ // Create projects
147
+ this.projectMap = new Map();
148
+ for (const projData of data.projects) {
149
+ const project = new Project(projData, this.id, client, this.objectRegistry, sourceFileCache, toPath);
150
+ this.projectMap.set(toPath(projData.configFileName), project);
151
+ }
152
+ }
153
+ getProjects() {
154
+ this.ensureNotDisposed();
155
+ return [...this.projectMap.values()];
156
+ }
157
+ getProject(configFileName) {
158
+ this.ensureNotDisposed();
159
+ return this.projectMap.get(this.toPath(configFileName));
160
+ }
161
+ getDefaultProjectForFile(file) {
162
+ this.ensureNotDisposed();
163
+ const data = this.client.apiRequest("getDefaultProjectForFile", {
164
+ snapshot: this.id,
165
+ file,
166
+ });
167
+ if (!data)
168
+ return undefined;
169
+ return this.projectMap.get(this.toPath(data.configFileName));
170
+ }
171
+ [globalThis.Symbol.dispose]() {
172
+ this.dispose();
173
+ }
174
+ dispose() {
175
+ if (this.disposed)
176
+ return;
177
+ this.disposed = true;
178
+ this.objectRegistry.clear();
179
+ this.onDispose();
180
+ this.client.apiRequest("release", { snapshot: this.id });
181
+ }
182
+ isDisposed() {
183
+ return this.disposed;
184
+ }
185
+ ensureNotDisposed() {
186
+ if (this.disposed) {
187
+ throw new Error("Snapshot is disposed");
188
+ }
189
+ }
190
+ }
191
+ export class Project {
192
+ id;
193
+ configFileName;
194
+ compilerOptions;
195
+ rootFiles;
196
+ program;
197
+ checker;
198
+ emitter;
199
+ client;
200
+ constructor(data, snapshotId, client, objectRegistry, sourceFileCache, toPath) {
201
+ this.id = data.id;
202
+ this.configFileName = data.configFileName;
203
+ this.compilerOptions = data.compilerOptions;
204
+ this.rootFiles = data.rootFiles;
205
+ this.client = client;
206
+ this.program = new Program(snapshotId, this.id, client, sourceFileCache, toPath);
207
+ this.checker = new Checker(snapshotId, this.id, client, objectRegistry);
208
+ this.emitter = new Emitter(client);
209
+ }
210
+ }
211
+ export class Program {
212
+ snapshotId;
213
+ projectId;
214
+ client;
215
+ sourceFileCache;
216
+ toPath;
217
+ decoder = new TextDecoder();
218
+ constructor(snapshotId, projectId, client, sourceFileCache, toPath) {
219
+ this.snapshotId = snapshotId;
220
+ this.projectId = projectId;
221
+ this.client = client;
222
+ this.sourceFileCache = sourceFileCache;
223
+ this.toPath = toPath;
224
+ }
225
+ getSourceFile(file) {
226
+ const fileName = resolveFileName(file);
227
+ const path = this.toPath(fileName);
228
+ // Check if we already have a retained cache entry for this (snapshot, project) pair
229
+ const retained = this.sourceFileCache.getRetained(path, this.snapshotId, this.projectId);
230
+ if (retained) {
231
+ return retained;
232
+ }
233
+ // Fetch from server
234
+ const binaryData = this.client.apiRequestBinary("getSourceFile", {
235
+ snapshot: this.snapshotId,
236
+ project: this.projectId,
237
+ file,
238
+ });
239
+ if (!binaryData) {
240
+ return undefined;
241
+ }
242
+ const view = new DataView(binaryData.buffer, binaryData.byteOffset, binaryData.byteLength);
243
+ const contentHash = readSourceFileHash(view);
244
+ const parseOptionsKey = readParseOptionsKey(view);
245
+ // Create a new RemoteSourceFile and cache it (set returns existing if hash matches)
246
+ const sourceFile = new RemoteSourceFile(binaryData, this.decoder);
247
+ return this.sourceFileCache.set(path, sourceFile, parseOptionsKey, contentHash, this.snapshotId, this.projectId);
248
+ }
249
+ /**
250
+ * Get syntactic (parse) diagnostics for a specific file or all files.
251
+ * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
252
+ */
253
+ getSyntacticDiagnostics(file) {
254
+ const data = this.client.apiRequest("getSyntacticDiagnostics", {
255
+ snapshot: this.snapshotId,
256
+ project: this.projectId,
257
+ ...(file !== undefined ? { file } : {}),
258
+ });
259
+ return data ?? [];
260
+ }
261
+ /**
262
+ * Get semantic (type-check) diagnostics for a specific file or all files.
263
+ * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
264
+ */
265
+ getSemanticDiagnostics(file) {
266
+ const data = this.client.apiRequest("getSemanticDiagnostics", {
267
+ snapshot: this.snapshotId,
268
+ project: this.projectId,
269
+ ...(file !== undefined ? { file } : {}),
270
+ });
271
+ return data ?? [];
272
+ }
273
+ /**
274
+ * Get suggestion diagnostics for a specific file or all files.
275
+ * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
276
+ */
277
+ getSuggestionDiagnostics(file) {
278
+ const data = this.client.apiRequest("getSuggestionDiagnostics", {
279
+ snapshot: this.snapshotId,
280
+ project: this.projectId,
281
+ ...(file !== undefined ? { file } : {}),
282
+ });
283
+ return data ?? [];
284
+ }
285
+ /**
286
+ * Get declaration emit diagnostics for a specific file or all files.
287
+ * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.
288
+ */
289
+ getDeclarationDiagnostics(file) {
290
+ const data = this.client.apiRequest("getDeclarationDiagnostics", {
291
+ snapshot: this.snapshotId,
292
+ project: this.projectId,
293
+ ...(file !== undefined ? { file } : {}),
294
+ });
295
+ return data ?? [];
296
+ }
297
+ /**
298
+ * Get config file parsing diagnostics for the project.
299
+ */
300
+ getConfigFileParsingDiagnostics() {
301
+ const data = this.client.apiRequest("getConfigFileParsingDiagnostics", {
302
+ snapshot: this.snapshotId,
303
+ project: this.projectId,
304
+ });
305
+ return data ?? [];
306
+ }
307
+ }
308
+ export class Checker {
309
+ snapshotId;
310
+ projectId;
311
+ client;
312
+ objectRegistry;
313
+ constructor(snapshotId, projectId, client, objectRegistry) {
314
+ this.snapshotId = snapshotId;
315
+ this.projectId = projectId;
316
+ this.client = client;
317
+ this.objectRegistry = objectRegistry;
318
+ }
319
+ getSymbolAtLocation(nodeOrNodes) {
320
+ if (Array.isArray(nodeOrNodes)) {
321
+ const data = this.client.apiRequest("getSymbolsAtLocations", {
322
+ snapshot: this.snapshotId,
323
+ project: this.projectId,
324
+ locations: nodeOrNodes.map(node => getNodeId(node)),
325
+ });
326
+ return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);
327
+ }
328
+ const data = this.client.apiRequest("getSymbolAtLocation", {
329
+ snapshot: this.snapshotId,
330
+ project: this.projectId,
331
+ location: getNodeId(nodeOrNodes),
332
+ });
333
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
334
+ }
335
+ getSymbolAtPosition(file, positionOrPositions) {
336
+ if (typeof positionOrPositions === "number") {
337
+ const data = this.client.apiRequest("getSymbolAtPosition", {
338
+ snapshot: this.snapshotId,
339
+ project: this.projectId,
340
+ file,
341
+ position: positionOrPositions,
342
+ });
343
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
344
+ }
345
+ const data = this.client.apiRequest("getSymbolsAtPositions", {
346
+ snapshot: this.snapshotId,
347
+ project: this.projectId,
348
+ file,
349
+ positions: positionOrPositions,
350
+ });
351
+ return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);
352
+ }
353
+ getTypeOfSymbol(symbolOrSymbols) {
354
+ if (Array.isArray(symbolOrSymbols)) {
355
+ const data = this.client.apiRequest("getTypesOfSymbols", {
356
+ snapshot: this.snapshotId,
357
+ project: this.projectId,
358
+ symbols: symbolOrSymbols.map(s => s.id),
359
+ });
360
+ return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
361
+ }
362
+ const data = this.client.apiRequest("getTypeOfSymbol", {
363
+ snapshot: this.snapshotId,
364
+ project: this.projectId,
365
+ symbol: symbolOrSymbols.id,
366
+ });
367
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
368
+ }
369
+ getDeclaredTypeOfSymbol(symbol) {
370
+ const data = this.client.apiRequest("getDeclaredTypeOfSymbol", {
371
+ snapshot: this.snapshotId,
372
+ project: this.projectId,
373
+ symbol: symbol.id,
374
+ });
375
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
376
+ }
377
+ getTypeAtLocation(nodeOrNodes) {
378
+ if (Array.isArray(nodeOrNodes)) {
379
+ const data = this.client.apiRequest("getTypeAtLocations", {
380
+ snapshot: this.snapshotId,
381
+ project: this.projectId,
382
+ locations: nodeOrNodes.map(node => getNodeId(node)),
383
+ });
384
+ return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
385
+ }
386
+ const data = this.client.apiRequest("getTypeAtLocation", {
387
+ snapshot: this.snapshotId,
388
+ project: this.projectId,
389
+ location: getNodeId(nodeOrNodes),
390
+ });
391
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
392
+ }
393
+ getSignaturesOfType(type, kind) {
394
+ const data = this.client.apiRequest("getSignaturesOfType", {
395
+ snapshot: this.snapshotId,
396
+ project: this.projectId,
397
+ type: type.id,
398
+ kind,
399
+ });
400
+ return data.map(d => this.objectRegistry.getOrCreateSignature(d));
401
+ }
402
+ getResolvedSignature(node) {
403
+ const data = this.client.apiRequest("getResolvedSignature", {
404
+ snapshot: this.snapshotId,
405
+ project: this.projectId,
406
+ location: getNodeId(node),
407
+ });
408
+ return data ? this.objectRegistry.getOrCreateSignature(data) : undefined;
409
+ }
410
+ getTypeAtPosition(file, positionOrPositions) {
411
+ if (typeof positionOrPositions === "number") {
412
+ const data = this.client.apiRequest("getTypeAtPosition", {
413
+ snapshot: this.snapshotId,
414
+ project: this.projectId,
415
+ file,
416
+ position: positionOrPositions,
417
+ });
418
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
419
+ }
420
+ const data = this.client.apiRequest("getTypesAtPositions", {
421
+ snapshot: this.snapshotId,
422
+ project: this.projectId,
423
+ file,
424
+ positions: positionOrPositions,
425
+ });
426
+ return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);
427
+ }
428
+ resolveName(name, meaning, location, excludeGlobals) {
429
+ // Distinguish Node (has `kind`) from DocumentPosition (has `document` and `position`)
430
+ const isNode = location && "kind" in location;
431
+ const data = this.client.apiRequest("resolveName", {
432
+ snapshot: this.snapshotId,
433
+ project: this.projectId,
434
+ name,
435
+ meaning,
436
+ location: isNode ? getNodeId(location) : undefined,
437
+ file: !isNode && location ? location.document : undefined,
438
+ position: !isNode && location ? location.position : undefined,
439
+ excludeGlobals,
440
+ });
441
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
442
+ }
443
+ getResolvedSymbol(node) {
444
+ const text = node.text;
445
+ if (!text)
446
+ return undefined;
447
+ return this.resolveName(text, SymbolFlags.Value | SymbolFlags.ExportValue, node);
448
+ }
449
+ getContextualType(node) {
450
+ const data = this.client.apiRequest("getContextualType", {
451
+ snapshot: this.snapshotId,
452
+ project: this.projectId,
453
+ location: getNodeId(node),
454
+ });
455
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
456
+ }
457
+ getBaseTypeOfLiteralType(type) {
458
+ const data = this.client.apiRequest("getBaseTypeOfLiteralType", {
459
+ snapshot: this.snapshotId,
460
+ project: this.projectId,
461
+ type: type.id,
462
+ });
463
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
464
+ }
465
+ getNonNullableType(type) {
466
+ const data = this.client.apiRequest("getNonNullableType", {
467
+ snapshot: this.snapshotId,
468
+ project: this.projectId,
469
+ type: type.id,
470
+ });
471
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
472
+ }
473
+ getTypeFromTypeNode(node) {
474
+ const data = this.client.apiRequest("getTypeFromTypeNode", {
475
+ snapshot: this.snapshotId,
476
+ project: this.projectId,
477
+ location: getNodeId(node),
478
+ });
479
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
480
+ }
481
+ getWidenedType(type) {
482
+ const data = this.client.apiRequest("getWidenedType", {
483
+ snapshot: this.snapshotId,
484
+ project: this.projectId,
485
+ type: type.id,
486
+ });
487
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
488
+ }
489
+ getParameterType(signature, index) {
490
+ const data = this.client.apiRequest("getParameterType", {
491
+ snapshot: this.snapshotId,
492
+ project: this.projectId,
493
+ signature: signature.id,
494
+ index,
495
+ });
496
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
497
+ }
498
+ isArrayLikeType(type) {
499
+ return this.client.apiRequest("isArrayLikeType", {
500
+ snapshot: this.snapshotId,
501
+ project: this.projectId,
502
+ type: type.id,
503
+ });
504
+ }
505
+ getShorthandAssignmentValueSymbol(node) {
506
+ const data = this.client.apiRequest("getShorthandAssignmentValueSymbol", {
507
+ snapshot: this.snapshotId,
508
+ project: this.projectId,
509
+ location: getNodeId(node),
510
+ });
511
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
512
+ }
513
+ getTypeOfSymbolAtLocation(symbol, location) {
514
+ const data = this.client.apiRequest("getTypeOfSymbolAtLocation", {
515
+ snapshot: this.snapshotId,
516
+ project: this.projectId,
517
+ symbol: symbol.id,
518
+ location: getNodeId(location),
519
+ });
520
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
521
+ }
522
+ getIntrinsicType(method) {
523
+ const data = this.client.apiRequest(method, {
524
+ snapshot: this.snapshotId,
525
+ project: this.projectId,
526
+ });
527
+ return this.objectRegistry.getOrCreateType(data);
528
+ }
529
+ getAnyType() {
530
+ return this.getIntrinsicType("getAnyType");
531
+ }
532
+ getStringType() {
533
+ return this.getIntrinsicType("getStringType");
534
+ }
535
+ getNumberType() {
536
+ return this.getIntrinsicType("getNumberType");
537
+ }
538
+ getBooleanType() {
539
+ return this.getIntrinsicType("getBooleanType");
540
+ }
541
+ getVoidType() {
542
+ return this.getIntrinsicType("getVoidType");
543
+ }
544
+ getUndefinedType() {
545
+ return this.getIntrinsicType("getUndefinedType");
546
+ }
547
+ getNullType() {
548
+ return this.getIntrinsicType("getNullType");
549
+ }
550
+ getNeverType() {
551
+ return this.getIntrinsicType("getNeverType");
552
+ }
553
+ getUnknownType() {
554
+ return this.getIntrinsicType("getUnknownType");
555
+ }
556
+ getBigIntType() {
557
+ return this.getIntrinsicType("getBigIntType");
558
+ }
559
+ getESSymbolType() {
560
+ return this.getIntrinsicType("getESSymbolType");
561
+ }
562
+ typeToTypeNode(type, enclosingDeclaration, flags) {
563
+ const binaryData = this.client.apiRequestBinary("typeToTypeNode", {
564
+ snapshot: this.snapshotId,
565
+ project: this.projectId,
566
+ type: type.id,
567
+ location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
568
+ flags,
569
+ });
570
+ if (!binaryData)
571
+ return undefined;
572
+ return decodeNode(binaryData);
573
+ }
574
+ signatureToSignatureDeclaration(signature, kind, enclosingDeclaration, flags) {
575
+ const binaryData = this.client.apiRequestBinary("signatureToSignatureDeclaration", {
576
+ snapshot: this.snapshotId,
577
+ project: this.projectId,
578
+ signature: signature.id,
579
+ kind,
580
+ location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
581
+ flags,
582
+ });
583
+ if (!binaryData)
584
+ return undefined;
585
+ return decodeNode(binaryData);
586
+ }
587
+ typeToString(type, enclosingDeclaration, flags) {
588
+ return this.client.apiRequest("typeToString", {
589
+ snapshot: this.snapshotId,
590
+ project: this.projectId,
591
+ type: type.id,
592
+ location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
593
+ flags,
594
+ });
595
+ }
596
+ isContextSensitive(node) {
597
+ return this.client.apiRequest("isContextSensitive", {
598
+ snapshot: this.snapshotId,
599
+ project: this.projectId,
600
+ location: getNodeId(node),
601
+ });
602
+ }
603
+ getReturnTypeOfSignature(signature) {
604
+ const data = this.client.apiRequest("getReturnTypeOfSignature", {
605
+ snapshot: this.snapshotId,
606
+ project: this.projectId,
607
+ signature: signature.id,
608
+ });
609
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
610
+ }
611
+ getRestTypeOfSignature(signature) {
612
+ const data = this.client.apiRequest("getRestTypeOfSignature", {
613
+ snapshot: this.snapshotId,
614
+ project: this.projectId,
615
+ signature: signature.id,
616
+ });
617
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
618
+ }
619
+ getTypePredicateOfSignature(signature) {
620
+ const data = this.client.apiRequest("getTypePredicateOfSignature", {
621
+ snapshot: this.snapshotId,
622
+ project: this.projectId,
623
+ signature: signature.id,
624
+ });
625
+ if (!data)
626
+ return undefined;
627
+ return {
628
+ kind: data.kind,
629
+ parameterIndex: data.parameterIndex,
630
+ parameterName: data.parameterName,
631
+ type: data.type ? this.objectRegistry.getOrCreateType(data.type) : undefined,
632
+ };
633
+ }
634
+ getBaseTypes(type) {
635
+ const data = this.client.apiRequest("getBaseTypes", {
636
+ snapshot: this.snapshotId,
637
+ project: this.projectId,
638
+ type: type.id,
639
+ });
640
+ return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];
641
+ }
642
+ getPropertiesOfType(type) {
643
+ const data = this.client.apiRequest("getPropertiesOfType", {
644
+ snapshot: this.snapshotId,
645
+ project: this.projectId,
646
+ type: type.id,
647
+ });
648
+ return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
649
+ }
650
+ getIndexInfosOfType(type) {
651
+ const data = this.client.apiRequest("getIndexInfosOfType", {
652
+ snapshot: this.snapshotId,
653
+ project: this.projectId,
654
+ type: type.id,
655
+ });
656
+ if (!data)
657
+ return [];
658
+ return data.map(d => ({
659
+ keyType: this.objectRegistry.getOrCreateType(d.keyType),
660
+ valueType: this.objectRegistry.getOrCreateType(d.valueType),
661
+ isReadonly: d.isReadonly ?? false,
662
+ }));
663
+ }
664
+ getConstraintOfTypeParameter(type) {
665
+ const data = this.client.apiRequest("getConstraintOfTypeParameter", {
666
+ snapshot: this.snapshotId,
667
+ project: this.projectId,
668
+ type: type.id,
669
+ });
670
+ return data ? this.objectRegistry.getOrCreateType(data) : undefined;
671
+ }
672
+ getTypeArguments(type) {
673
+ const data = this.client.apiRequest("getTypeArguments", {
674
+ snapshot: this.snapshotId,
675
+ project: this.projectId,
676
+ type: type.id,
677
+ });
678
+ return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];
679
+ }
680
+ }
681
+ export class Emitter {
682
+ client;
683
+ constructor(client) {
684
+ this.client = client;
685
+ }
686
+ printNode(node, options = {}) {
687
+ const encoded = encodeNode(node);
688
+ const base64 = uint8ArrayToBase64(encoded);
689
+ return this.client.apiRequest("printNode", {
690
+ data: base64,
691
+ ...options,
692
+ });
693
+ }
694
+ }
695
+ export class NodeHandle {
696
+ index;
697
+ kind;
698
+ path;
699
+ constructor(handle) {
700
+ const parsed = parseNodeHandle(handle);
701
+ this.index = parsed.index;
702
+ this.kind = parsed.kind;
703
+ this.path = parsed.path;
704
+ }
705
+ /**
706
+ * Resolve this handle to the actual AST node by fetching the source file
707
+ * from the given project and looking up the node by index.
708
+ */
709
+ resolve(project) {
710
+ const sourceFile = project.program.getSourceFile(this.path);
711
+ if (!sourceFile) {
712
+ return undefined;
713
+ }
714
+ return sourceFile.getOrCreateNodeAtIndex(this.index);
715
+ }
716
+ }
717
+ export class Symbol {
718
+ client;
719
+ snapshotId;
720
+ objectRegistry;
721
+ id;
722
+ name;
723
+ flags;
724
+ checkFlags;
725
+ declarations;
726
+ valueDeclaration;
727
+ constructor(data, client, snapshotId, objectRegistry) {
728
+ this.client = client;
729
+ this.snapshotId = snapshotId;
730
+ this.objectRegistry = objectRegistry;
731
+ this.id = data.id;
732
+ this.name = data.name;
733
+ this.flags = data.flags;
734
+ this.checkFlags = data.checkFlags;
735
+ this.declarations = (data.declarations ?? []).map(d => new NodeHandle(d));
736
+ this.valueDeclaration = data.valueDeclaration ? new NodeHandle(data.valueDeclaration) : undefined;
737
+ }
738
+ getParent() {
739
+ const data = this.client.apiRequest("getParentOfSymbol", { snapshot: this.snapshotId, symbol: this.id });
740
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
741
+ }
742
+ getMembers() {
743
+ const data = this.client.apiRequest("getMembersOfSymbol", { snapshot: this.snapshotId, symbol: this.id });
744
+ return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
745
+ }
746
+ getExports() {
747
+ const data = this.client.apiRequest("getExportsOfSymbol", { snapshot: this.snapshotId, symbol: this.id });
748
+ return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
749
+ }
750
+ getExportSymbol() {
751
+ const data = this.client.apiRequest("getExportSymbolOfSymbol", { snapshot: this.snapshotId, symbol: this.id });
752
+ return this.objectRegistry.getOrCreateSymbol(data);
753
+ }
754
+ }
755
+ class TypeObject {
756
+ client;
757
+ snapshotId;
758
+ objectRegistry;
759
+ id;
760
+ flags;
761
+ objectFlags;
762
+ value;
763
+ target;
764
+ typeParameters;
765
+ outerTypeParameters;
766
+ localTypeParameters;
767
+ elementFlags;
768
+ fixedLength;
769
+ readonly;
770
+ texts;
771
+ objectType;
772
+ indexType;
773
+ checkType;
774
+ extendsType;
775
+ baseType;
776
+ substConstraint;
777
+ constructor(data, client, snapshotId, objectRegistry) {
778
+ this.client = client;
779
+ this.snapshotId = snapshotId;
780
+ this.objectRegistry = objectRegistry;
781
+ this.id = data.id;
782
+ this.flags = data.flags;
783
+ if (data.objectFlags !== undefined)
784
+ this.objectFlags = data.objectFlags;
785
+ if (data.value !== undefined)
786
+ this.value = data.value;
787
+ if (data.target !== undefined)
788
+ this.target = data.target;
789
+ if (data.typeParameters !== undefined)
790
+ this.typeParameters = data.typeParameters;
791
+ if (data.outerTypeParameters !== undefined)
792
+ this.outerTypeParameters = data.outerTypeParameters;
793
+ if (data.localTypeParameters !== undefined)
794
+ this.localTypeParameters = data.localTypeParameters;
795
+ if (data.elementFlags !== undefined)
796
+ this.elementFlags = data.elementFlags;
797
+ if (data.fixedLength !== undefined)
798
+ this.fixedLength = data.fixedLength;
799
+ if (data.readonly !== undefined)
800
+ this.readonly = data.readonly;
801
+ if (data.texts !== undefined)
802
+ this.texts = data.texts;
803
+ if (data.objectType !== undefined)
804
+ this.objectType = data.objectType;
805
+ if (data.indexType !== undefined)
806
+ this.indexType = data.indexType;
807
+ if (data.checkType !== undefined)
808
+ this.checkType = data.checkType;
809
+ if (data.extendsType !== undefined)
810
+ this.extendsType = data.extendsType;
811
+ if (data.baseType !== undefined)
812
+ this.baseType = data.baseType;
813
+ if (data.substConstraint !== undefined)
814
+ this.substConstraint = data.substConstraint;
815
+ }
816
+ getSymbol() {
817
+ const data = this.client.apiRequest("getSymbolOfType", { snapshot: this.snapshotId, type: this.id });
818
+ return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
819
+ }
820
+ fetchType(handle, method) {
821
+ const cached = handle !== undefined ? this.objectRegistry.getType(handle) : undefined;
822
+ if (cached)
823
+ return cached;
824
+ const data = this.client.apiRequest(method, { snapshot: this.snapshotId, type: this.id });
825
+ if (!data)
826
+ throw new Error(`${method} returned null for type ${this.id}`);
827
+ return this.objectRegistry.getOrCreateType(data);
828
+ }
829
+ fetchTypes(method) {
830
+ const data = this.client.apiRequest(method, { snapshot: this.snapshotId, type: this.id });
831
+ return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];
832
+ }
833
+ getTarget() {
834
+ return this.fetchType(this.target, "getTargetOfType");
835
+ }
836
+ getTypes() {
837
+ return this.fetchTypes("getTypesOfType");
838
+ }
839
+ getTypeParameters() {
840
+ return this.fetchTypes("getTypeParametersOfType");
841
+ }
842
+ getOuterTypeParameters() {
843
+ return this.fetchTypes("getOuterTypeParametersOfType");
844
+ }
845
+ getLocalTypeParameters() {
846
+ return this.fetchTypes("getLocalTypeParametersOfType");
847
+ }
848
+ getObjectType() {
849
+ return this.fetchType(this.objectType, "getObjectTypeOfType");
850
+ }
851
+ getIndexType() {
852
+ return this.fetchType(this.indexType, "getIndexTypeOfType");
853
+ }
854
+ getCheckType() {
855
+ return this.fetchType(this.checkType, "getCheckTypeOfType");
856
+ }
857
+ getExtendsType() {
858
+ return this.fetchType(this.extendsType, "getExtendsTypeOfType");
859
+ }
860
+ getBaseType() {
861
+ return this.fetchType(this.baseType, "getBaseTypeOfType");
862
+ }
863
+ getConstraint() {
864
+ return this.fetchType(this.substConstraint, "getConstraintOfType");
865
+ }
866
+ }
867
+ export class Signature {
868
+ flags;
869
+ id;
870
+ declaration;
871
+ typeParameters;
872
+ parameters;
873
+ thisParameter;
874
+ target;
875
+ constructor(data, objectRegistry) {
876
+ this.id = data.id;
877
+ this.flags = data.flags;
878
+ this.declaration = data.declaration ? new NodeHandle(data.declaration) : undefined;
879
+ this.typeParameters = (data.typeParameters ?? []).map(id => {
880
+ return objectRegistry.getOrCreateType({ id, flags: 0 });
881
+ });
882
+ this.parameters = (data.parameters ?? []).map(id => {
883
+ return objectRegistry.getOrCreateSymbol({ id, name: "", flags: 0, checkFlags: 0 });
884
+ });
885
+ this.thisParameter = data.thisParameter
886
+ ? objectRegistry.getOrCreateSymbol({ id: data.thisParameter, name: "", flags: 0, checkFlags: 0 })
887
+ : undefined;
888
+ this.target = data.target
889
+ ? objectRegistry.getOrCreateSignature({ id: data.target, flags: 0 })
890
+ : undefined;
891
+ }
892
+ get hasRestParameter() {
893
+ return (this.flags & SignatureFlags.HasRestParameter) !== 0;
894
+ }
895
+ get isConstruct() {
896
+ return (this.flags & SignatureFlags.Construct) !== 0;
897
+ }
898
+ get isAbstract() {
899
+ return (this.flags & SignatureFlags.Abstract) !== 0;
900
+ }
901
+ }
902
+ //# sourceMappingURL=api.js.map