@topce/native-preview 7.0.0-dev.20250824 → 7.0.0-dev.20260531.1

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