@typescript/native-preview 7.0.0-dev.20260422.1 → 7.0.0-dev.20260424.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 (327) hide show
  1. package/dist/api/async/api.d.ts +241 -0
  2. package/dist/api/async/api.d.ts.map +1 -0
  3. package/dist/api/async/api.js +810 -0
  4. package/dist/api/async/api.js.map +1 -0
  5. package/dist/api/async/client.d.ts +22 -0
  6. package/dist/api/async/client.d.ts.map +1 -0
  7. package/dist/api/async/client.js +140 -0
  8. package/dist/api/async/client.js.map +1 -0
  9. package/dist/api/async/types.d.ts +179 -0
  10. package/dist/api/async/types.d.ts.map +1 -0
  11. package/dist/api/async/types.js +2 -0
  12. package/dist/api/async/types.js.map +1 -0
  13. package/dist/api/fs.d.ts +23 -0
  14. package/dist/api/fs.d.ts.map +1 -0
  15. package/dist/api/fs.js +109 -0
  16. package/dist/api/fs.js.map +1 -0
  17. package/dist/api/node/encoder.d.ts +15 -0
  18. package/dist/api/node/encoder.d.ts.map +1 -0
  19. package/dist/api/node/encoder.generated.d.ts +5 -0
  20. package/dist/api/node/encoder.generated.d.ts.map +1 -0
  21. package/dist/api/node/encoder.generated.js +74 -0
  22. package/dist/api/node/encoder.generated.js.map +1 -0
  23. package/dist/api/node/encoder.js +304 -0
  24. package/dist/api/node/encoder.js.map +1 -0
  25. package/dist/api/node/msgpack.d.ts +32 -0
  26. package/dist/api/node/msgpack.d.ts.map +1 -0
  27. package/dist/api/node/msgpack.js +212 -0
  28. package/dist/api/node/msgpack.js.map +1 -0
  29. package/dist/api/node/node.d.ts +63 -0
  30. package/dist/api/node/node.d.ts.map +1 -0
  31. package/dist/api/node/node.generated.d.ts +172 -0
  32. package/dist/api/node/node.generated.d.ts.map +1 -0
  33. package/dist/api/node/node.generated.js +817 -0
  34. package/dist/api/node/node.generated.js.map +1 -0
  35. package/dist/api/node/node.infrastructure.d.ts +51 -0
  36. package/dist/api/node/node.infrastructure.d.ts.map +1 -0
  37. package/dist/api/node/node.infrastructure.js +122 -0
  38. package/dist/api/node/node.infrastructure.js.map +1 -0
  39. package/dist/api/node/node.js +201 -0
  40. package/dist/api/node/node.js.map +1 -0
  41. package/dist/api/node/protocol.d.ts +29 -0
  42. package/dist/api/node/protocol.d.ts.map +1 -0
  43. package/dist/api/node/protocol.generated.d.ts +4 -0
  44. package/dist/api/node/protocol.generated.d.ts.map +1 -0
  45. package/dist/api/node/protocol.generated.js +241 -0
  46. package/dist/api/node/protocol.generated.js.map +1 -0
  47. package/dist/api/node/protocol.js +30 -0
  48. package/dist/api/node/protocol.js.map +1 -0
  49. package/dist/api/objectRegistry.d.ts +38 -0
  50. package/dist/api/objectRegistry.d.ts.map +1 -0
  51. package/dist/api/objectRegistry.js +55 -0
  52. package/dist/api/objectRegistry.js.map +1 -0
  53. package/dist/api/options.d.ts +24 -0
  54. package/dist/api/options.d.ts.map +1 -0
  55. package/dist/api/options.js +11 -0
  56. package/dist/api/options.js.map +1 -0
  57. package/dist/api/path.d.ts +110 -0
  58. package/dist/api/path.d.ts.map +1 -0
  59. package/dist/api/path.js +508 -0
  60. package/dist/api/path.js.map +1 -0
  61. package/dist/api/proto.d.ts +152 -0
  62. package/dist/api/proto.d.ts.map +1 -0
  63. package/dist/api/proto.js +22 -0
  64. package/dist/api/proto.js.map +1 -0
  65. package/dist/api/sourceFileCache.d.ts +79 -0
  66. package/dist/api/sourceFileCache.d.ts.map +1 -0
  67. package/dist/api/sourceFileCache.js +169 -0
  68. package/dist/api/sourceFileCache.js.map +1 -0
  69. package/dist/api/sync/api.d.ts +241 -0
  70. package/dist/api/sync/api.d.ts.map +1 -0
  71. package/dist/api/sync/api.js +818 -0
  72. package/dist/api/sync/api.js.map +1 -0
  73. package/dist/api/sync/client.d.ts +13 -0
  74. package/dist/api/sync/client.d.ts.map +1 -0
  75. package/dist/api/sync/client.js +72 -0
  76. package/dist/api/sync/client.js.map +1 -0
  77. package/dist/api/sync/types.d.ts +179 -0
  78. package/dist/api/sync/types.d.ts.map +1 -0
  79. package/dist/api/sync/types.js +2 -0
  80. package/dist/api/sync/types.js.map +1 -0
  81. package/dist/api/syncChannel.d.ts +111 -0
  82. package/dist/api/syncChannel.d.ts.map +1 -0
  83. package/dist/api/syncChannel.js +488 -0
  84. package/dist/api/syncChannel.js.map +1 -0
  85. package/dist/ast/ast.d.ts +66 -0
  86. package/dist/ast/ast.d.ts.map +1 -0
  87. package/dist/ast/ast.generated.d.ts +1160 -0
  88. package/dist/ast/ast.generated.d.ts.map +1 -0
  89. package/dist/ast/ast.generated.js +4 -0
  90. package/dist/ast/ast.generated.js.map +1 -0
  91. package/dist/ast/ast.js +7 -0
  92. package/dist/ast/ast.js.map +1 -0
  93. package/dist/ast/astnav.d.ts +19 -0
  94. package/dist/ast/astnav.d.ts.map +1 -0
  95. package/dist/ast/astnav.js +596 -0
  96. package/dist/ast/astnav.js.map +1 -0
  97. package/dist/ast/clone.d.ts +16 -0
  98. package/dist/ast/clone.d.ts.map +1 -0
  99. package/dist/ast/clone.js +104 -0
  100. package/dist/ast/clone.js.map +1 -0
  101. package/dist/ast/factory.generated.d.ts +513 -0
  102. package/dist/ast/factory.generated.d.ts.map +1 -0
  103. package/dist/ast/factory.generated.js +3026 -0
  104. package/dist/ast/factory.generated.js.map +1 -0
  105. package/dist/ast/index.d.ts +18 -0
  106. package/dist/ast/index.d.ts.map +1 -0
  107. package/dist/ast/index.js +18 -0
  108. package/dist/ast/index.js.map +1 -0
  109. package/dist/ast/is.d.ts +34 -0
  110. package/dist/ast/is.d.ts.map +1 -0
  111. package/dist/ast/is.generated.d.ts +328 -0
  112. package/dist/ast/is.generated.d.ts.map +1 -0
  113. package/dist/ast/is.generated.js +1101 -0
  114. package/dist/ast/is.generated.js.map +1 -0
  115. package/dist/ast/is.js +226 -0
  116. package/dist/ast/is.js.map +1 -0
  117. package/dist/ast/scanner.d.ts +97 -0
  118. package/dist/ast/scanner.d.ts.map +1 -0
  119. package/dist/ast/scanner.js +2230 -0
  120. package/dist/ast/scanner.js.map +1 -0
  121. package/dist/ast/utils.d.ts +5 -0
  122. package/dist/ast/utils.d.ts.map +1 -0
  123. package/dist/ast/utils.js +27 -0
  124. package/dist/ast/utils.js.map +1 -0
  125. package/dist/ast/visitor.d.ts +14 -0
  126. package/dist/ast/visitor.d.ts.map +1 -0
  127. package/dist/ast/visitor.generated.d.ts +50 -0
  128. package/dist/ast/visitor.generated.d.ts.map +1 -0
  129. package/dist/ast/visitor.generated.js +978 -0
  130. package/dist/ast/visitor.generated.js.map +1 -0
  131. package/dist/ast/visitor.js +47 -0
  132. package/dist/ast/visitor.js.map +1 -0
  133. package/dist/enums/characterCodes.d.ts +2 -0
  134. package/dist/enums/characterCodes.d.ts.map +1 -0
  135. package/dist/enums/characterCodes.enum.d.ts +129 -0
  136. package/dist/enums/characterCodes.enum.d.ts.map +1 -0
  137. package/dist/enums/characterCodes.enum.js +132 -0
  138. package/dist/enums/characterCodes.enum.js.map +1 -0
  139. package/dist/enums/characterCodes.js +130 -0
  140. package/dist/enums/characterCodes.js.map +1 -0
  141. package/dist/enums/commentDirectiveType.d.ts +2 -0
  142. package/dist/enums/commentDirectiveType.d.ts.map +1 -0
  143. package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
  144. package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
  145. package/dist/enums/commentDirectiveType.enum.js +6 -0
  146. package/dist/enums/commentDirectiveType.enum.js.map +1 -0
  147. package/dist/enums/commentDirectiveType.js +6 -0
  148. package/dist/enums/commentDirectiveType.js.map +1 -0
  149. package/dist/enums/diagnosticCategory.d.ts +2 -0
  150. package/dist/enums/diagnosticCategory.d.ts.map +1 -0
  151. package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
  152. package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
  153. package/dist/enums/diagnosticCategory.enum.js +9 -0
  154. package/dist/enums/diagnosticCategory.enum.js.map +1 -0
  155. package/dist/enums/diagnosticCategory.js +9 -0
  156. package/dist/enums/diagnosticCategory.js.map +1 -0
  157. package/dist/enums/elementFlags.d.ts +2 -0
  158. package/dist/enums/elementFlags.d.ts.map +1 -0
  159. package/dist/enums/elementFlags.enum.d.ts +12 -0
  160. package/dist/enums/elementFlags.enum.d.ts.map +1 -0
  161. package/dist/enums/elementFlags.enum.js +14 -0
  162. package/dist/enums/elementFlags.enum.js.map +1 -0
  163. package/dist/enums/elementFlags.js +14 -0
  164. package/dist/enums/elementFlags.js.map +1 -0
  165. package/dist/enums/languageVariant.d.ts +2 -0
  166. package/dist/enums/languageVariant.d.ts.map +1 -0
  167. package/dist/enums/languageVariant.enum.d.ts +5 -0
  168. package/dist/enums/languageVariant.enum.d.ts.map +1 -0
  169. package/dist/enums/languageVariant.enum.js +6 -0
  170. package/dist/enums/languageVariant.enum.js.map +1 -0
  171. package/dist/enums/languageVariant.js +6 -0
  172. package/dist/enums/languageVariant.js.map +1 -0
  173. package/dist/enums/modifierFlags.d.ts +2 -0
  174. package/dist/enums/modifierFlags.d.ts.map +1 -0
  175. package/dist/enums/modifierFlags.enum.d.ts +42 -0
  176. package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
  177. package/dist/enums/modifierFlags.enum.js +44 -0
  178. package/dist/enums/modifierFlags.enum.js.map +1 -0
  179. package/dist/enums/modifierFlags.js +44 -0
  180. package/dist/enums/modifierFlags.js.map +1 -0
  181. package/dist/enums/nodeFlags.d.ts +2 -0
  182. package/dist/enums/nodeFlags.d.ts.map +1 -0
  183. package/dist/enums/nodeFlags.enum.d.ts +41 -0
  184. package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
  185. package/dist/enums/nodeFlags.enum.js +43 -0
  186. package/dist/enums/nodeFlags.enum.js.map +1 -0
  187. package/dist/enums/nodeFlags.js +43 -0
  188. package/dist/enums/nodeFlags.js.map +1 -0
  189. package/dist/enums/objectFlags.d.ts +2 -0
  190. package/dist/enums/objectFlags.d.ts.map +1 -0
  191. package/dist/enums/objectFlags.enum.d.ts +49 -0
  192. package/dist/enums/objectFlags.enum.d.ts.map +1 -0
  193. package/dist/enums/objectFlags.enum.js +51 -0
  194. package/dist/enums/objectFlags.enum.js.map +1 -0
  195. package/dist/enums/objectFlags.js +51 -0
  196. package/dist/enums/objectFlags.js.map +1 -0
  197. package/dist/enums/outerExpressionKinds.d.ts +2 -0
  198. package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
  199. package/dist/enums/outerExpressionKinds.enum.d.ts +12 -0
  200. package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
  201. package/dist/enums/outerExpressionKinds.enum.js +14 -0
  202. package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
  203. package/dist/enums/outerExpressionKinds.js +14 -0
  204. package/dist/enums/outerExpressionKinds.js.map +1 -0
  205. package/dist/enums/regularExpressionFlags.d.ts +2 -0
  206. package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
  207. package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
  208. package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
  209. package/dist/enums/regularExpressionFlags.enum.js +14 -0
  210. package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
  211. package/dist/enums/regularExpressionFlags.js +14 -0
  212. package/dist/enums/regularExpressionFlags.js.map +1 -0
  213. package/dist/enums/scriptKind.d.ts +2 -0
  214. package/dist/enums/scriptKind.d.ts.map +1 -0
  215. package/dist/enums/scriptKind.enum.d.ts +11 -0
  216. package/dist/enums/scriptKind.enum.d.ts.map +1 -0
  217. package/dist/enums/scriptKind.enum.js +12 -0
  218. package/dist/enums/scriptKind.enum.js.map +1 -0
  219. package/dist/enums/scriptKind.js +12 -0
  220. package/dist/enums/scriptKind.js.map +1 -0
  221. package/dist/enums/scriptTarget.d.ts +2 -0
  222. package/dist/enums/scriptTarget.d.ts.map +1 -0
  223. package/dist/enums/scriptTarget.enum.d.ts +17 -0
  224. package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
  225. package/dist/enums/scriptTarget.enum.js +18 -0
  226. package/dist/enums/scriptTarget.enum.js.map +1 -0
  227. package/dist/enums/scriptTarget.js +18 -0
  228. package/dist/enums/scriptTarget.js.map +1 -0
  229. package/dist/enums/signatureFlags.d.ts +2 -0
  230. package/dist/enums/signatureFlags.d.ts.map +1 -0
  231. package/dist/enums/signatureFlags.enum.d.ts +15 -0
  232. package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
  233. package/dist/enums/signatureFlags.enum.js +17 -0
  234. package/dist/enums/signatureFlags.enum.js.map +1 -0
  235. package/dist/enums/signatureFlags.js +17 -0
  236. package/dist/enums/signatureFlags.js.map +1 -0
  237. package/dist/enums/signatureKind.d.ts +2 -0
  238. package/dist/enums/signatureKind.d.ts.map +1 -0
  239. package/dist/enums/signatureKind.enum.d.ts +5 -0
  240. package/dist/enums/signatureKind.enum.d.ts.map +1 -0
  241. package/dist/enums/signatureKind.enum.js +7 -0
  242. package/dist/enums/signatureKind.enum.js.map +1 -0
  243. package/dist/enums/signatureKind.js +7 -0
  244. package/dist/enums/signatureKind.js.map +1 -0
  245. package/dist/enums/symbolFlags.d.ts +2 -0
  246. package/dist/enums/symbolFlags.d.ts.map +1 -0
  247. package/dist/enums/symbolFlags.enum.d.ts +71 -0
  248. package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
  249. package/dist/enums/symbolFlags.enum.js +73 -0
  250. package/dist/enums/symbolFlags.enum.js.map +1 -0
  251. package/dist/enums/symbolFlags.js +73 -0
  252. package/dist/enums/symbolFlags.js.map +1 -0
  253. package/dist/enums/syntaxKind.d.ts +2 -0
  254. package/dist/enums/syntaxKind.d.ts.map +1 -0
  255. package/dist/enums/syntaxKind.enum.d.ts +389 -0
  256. package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
  257. package/dist/enums/syntaxKind.enum.js +391 -0
  258. package/dist/enums/syntaxKind.enum.js.map +1 -0
  259. package/dist/enums/syntaxKind.js +391 -0
  260. package/dist/enums/syntaxKind.js.map +1 -0
  261. package/dist/enums/tokenFlags.d.ts +2 -0
  262. package/dist/enums/tokenFlags.d.ts.map +1 -0
  263. package/dist/enums/tokenFlags.enum.d.ts +30 -0
  264. package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
  265. package/dist/enums/tokenFlags.enum.js +32 -0
  266. package/dist/enums/tokenFlags.enum.js.map +1 -0
  267. package/dist/enums/tokenFlags.js +32 -0
  268. package/dist/enums/tokenFlags.js.map +1 -0
  269. package/dist/enums/typeFlags.d.ts +2 -0
  270. package/dist/enums/typeFlags.d.ts.map +1 -0
  271. package/dist/enums/typeFlags.enum.d.ts +76 -0
  272. package/dist/enums/typeFlags.enum.d.ts.map +1 -0
  273. package/dist/enums/typeFlags.enum.js +78 -0
  274. package/dist/enums/typeFlags.enum.js.map +1 -0
  275. package/dist/enums/typeFlags.js +78 -0
  276. package/dist/enums/typeFlags.js.map +1 -0
  277. package/dist/enums/typePredicateKind.d.ts +2 -0
  278. package/dist/enums/typePredicateKind.d.ts.map +1 -0
  279. package/dist/enums/typePredicateKind.enum.d.ts +7 -0
  280. package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
  281. package/dist/enums/typePredicateKind.enum.js +9 -0
  282. package/dist/enums/typePredicateKind.enum.js.map +1 -0
  283. package/dist/enums/typePredicateKind.js +9 -0
  284. package/dist/enums/typePredicateKind.js.map +1 -0
  285. package/lib/getExePath.d.ts +2 -0
  286. package/package.json +57 -12
  287. package/vendor/vscode-jsonrpc/README.md +69 -0
  288. package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  289. package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
  290. package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
  291. package/vendor/vscode-jsonrpc/lib/browser/ril.js +203 -0
  292. package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  293. package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
  294. package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  295. package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
  296. package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
  297. package/vendor/vscode-jsonrpc/lib/common/connection.js +1272 -0
  298. package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  299. package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
  300. package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  301. package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
  302. package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  303. package/vendor/vscode-jsonrpc/lib/common/events.js +136 -0
  304. package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  305. package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
  306. package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
  307. package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
  308. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  309. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
  310. package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  311. package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
  312. package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  313. package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
  314. package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  315. package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
  316. package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  317. package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
  318. package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  319. package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
  320. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  321. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
  322. package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
  323. package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
  324. package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
  325. package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
  326. package/vendor/vscode-jsonrpc/package.json +54 -0
  327. package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Pure JS replacement for @typescript/libsyncrpc.
3
+ *
4
+ * Spawns a child process and communicates with it synchronously over
5
+ * stdin/stdout pipes using the same MessagePack-based tuple protocol:
6
+ * [MessageType (u8), method (bin), payload (bin)]
7
+ *
8
+ * Synchronous I/O is achieved by calling fs.readSync / fs.writeSync
9
+ * directly on the pipe file descriptors obtained from the spawned
10
+ * ChildProcess.
11
+ */
12
+ import { spawn, } from "node:child_process";
13
+ import { closeSync, openSync, readSync, writeSync, } from "node:fs";
14
+ import { binHeaderSize, MSGPACK_BIN16, MSGPACK_BIN32, MSGPACK_BIN8, MSGPACK_FIXARRAY3, MSGPACK_UINT8, writeBinHeader, } from "./node/msgpack.js";
15
+ // ── MessageType constants ────────────────────────────────────────────
16
+ // Sent by channel (parent → child)
17
+ const MSG_REQUEST = 1;
18
+ const MSG_CALL_RESPONSE = 2;
19
+ const MSG_CALL_ERROR = 3;
20
+ // Sent by child (child → parent)
21
+ const MSG_RESPONSE = 4;
22
+ const MSG_ERROR = 5;
23
+ const MSG_CALL = 6;
24
+ // Pre-allocated buffer used by Atomics.wait for tiny sleeps when a
25
+ // non-blocking fd returns EAGAIN.
26
+ const sleepBuf = new Int32Array(new SharedArrayBuffer(4));
27
+ // Shared empty buffer – avoids allocating Buffer.alloc(0) on every
28
+ // zero-length bin field.
29
+ const EMPTY_BUF = Buffer.alloc(0);
30
+ // ── Global cleanup tracking ─────────────────────────────────────────
31
+ // Track all live child processes so they can be killed on process exit.
32
+ // This mimics the auto-cleanup behavior of the native libsyncrpc module,
33
+ // whose Rust/C++ destructors would kill children automatically.
34
+ const liveChildren = new Set();
35
+ process.on("exit", () => {
36
+ for (const child of liveChildren) {
37
+ try {
38
+ child.kill();
39
+ }
40
+ catch {
41
+ // swallow – process may already be dead
42
+ }
43
+ }
44
+ liveChildren.clear();
45
+ });
46
+ /**
47
+ * SyncRpcChannel – drop-in replacement for the native libsyncrpc class.
48
+ *
49
+ * API surface intentionally matches the original:
50
+ * - constructor(exe, args)
51
+ * - requestSync(method, payload): string
52
+ * - requestBinarySync(method, payload): Uint8Array
53
+ * - registerCallback(name, cb)
54
+ * - close()
55
+ *
56
+ * The protocol is unversioned; both sides (this JS channel and the Go
57
+ * child process) must be built from the same tree.
58
+ *
59
+ * This class is **not** thread-safe. All calls must originate from a
60
+ * single thread — do not share an instance across worker threads.
61
+ */
62
+ export class SyncRpcChannel {
63
+ child;
64
+ readFd;
65
+ writeFd;
66
+ pipeFd;
67
+ callbacks = new Map();
68
+ methodBufCache = new Map();
69
+ _msgType = 0;
70
+ _msgName = EMPTY_BUF;
71
+ _msgPayload = EMPTY_BUF;
72
+ headerBuf = Buffer.allocUnsafe(4);
73
+ // Read-ahead buffer – reduces readSync syscalls by buffering data from the pipe.
74
+ readBuf = Buffer.allocUnsafe(65536);
75
+ readBufPos = 0;
76
+ readBufLen = 0;
77
+ // Write buffer – assembles entire tuples for a single writeSync.
78
+ writeBuf = Buffer.allocUnsafe(65536);
79
+ constructor(exe, args) {
80
+ const isWindows = process.platform === "win32";
81
+ if (isWindows) {
82
+ // On Windows, libuv pipe handles don't expose POSIX fds, so
83
+ // readSync/writeSync can't be used on stdio pipes. Instead,
84
+ // we create a Windows named pipe path, pass it to the child
85
+ // via --pipe, and open it with fs.openSync which returns a
86
+ // real C-runtime fd backed by a proper HANDLE.
87
+ const pipePath = `\\\\.\\pipe\\tsgo-sync-${process.pid}-${Date.now()}`;
88
+ this.child = spawn(exe, [...args, "--pipe", pipePath], {
89
+ stdio: ["ignore", "ignore", "inherit"],
90
+ });
91
+ // Retry openSync until the child creates the named pipe.
92
+ let fd;
93
+ for (let i = 0; i < 500; i++) {
94
+ try {
95
+ fd = openSync(pipePath, "r+");
96
+ break;
97
+ }
98
+ catch {
99
+ if (this.child.exitCode !== null) {
100
+ throw new Error(`Child process exited with code ${this.child.exitCode} before pipe was ready`);
101
+ }
102
+ Atomics.wait(sleepBuf, 0, 0, 10);
103
+ }
104
+ }
105
+ if (fd === undefined) {
106
+ this.child.kill();
107
+ throw new Error("SyncRpcChannel: timed out connecting to named pipe");
108
+ }
109
+ this.readFd = fd;
110
+ this.writeFd = fd;
111
+ this.pipeFd = fd;
112
+ }
113
+ else {
114
+ // POSIX: use stdio pipe file descriptors directly.
115
+ this.child = spawn(exe, args, {
116
+ stdio: ["pipe", "pipe", "inherit"],
117
+ });
118
+ const stdout = this.child.stdout;
119
+ const stdin = this.child.stdin;
120
+ this.readFd = stdout._handle.fd;
121
+ this.writeFd = stdin._handle.fd;
122
+ if (typeof this.readFd !== "number" || this.readFd < 0 || typeof this.writeFd !== "number" || this.writeFd < 0) {
123
+ stdout.destroy();
124
+ stdin.destroy();
125
+ this.child.kill();
126
+ throw new Error("SyncRpcChannel: could not obtain pipe file descriptors.");
127
+ }
128
+ // Set the pipe handles to blocking mode. Under node --test's
129
+ // process isolation, pipes are created in non-blocking mode
130
+ // (for the IPC channel). This causes readSync/writeSync to get
131
+ // EAGAIN, requiring costly 1ms sleeps per retry. Setting
132
+ // blocking mode ensures readSync blocks properly until data
133
+ // arrives, matching the behavior of the native libsyncrpc.
134
+ stdout._handle.setBlocking?.(true);
135
+ stdin._handle.setBlocking?.(true);
136
+ // Prevent Node's event-loop from reading stdout or keeping the
137
+ // process alive – we will use fs.readSync exclusively.
138
+ stdout.pause();
139
+ stdout.unref();
140
+ stdin.unref();
141
+ }
142
+ // Track for auto-cleanup on process exit.
143
+ liveChildren.add(this.child);
144
+ this.child.unref();
145
+ }
146
+ // ── Public API ──────────────────────────────────────────────────
147
+ /**
148
+ * Send a request and synchronously wait for the response (string).
149
+ * Handles Call (callback) messages from the child inline.
150
+ */
151
+ requestSync(method, payload) {
152
+ this.ensureOpen();
153
+ const result = this.requestBytesSync(method, payload);
154
+ return result.toString("utf-8");
155
+ }
156
+ /**
157
+ * Send a request and synchronously wait for the response (binary).
158
+ * Handles Call (callback) messages from the child inline.
159
+ */
160
+ requestBinarySync(method, payload) {
161
+ this.ensureOpen();
162
+ return this.requestBytesSync(method, payload);
163
+ }
164
+ /** Register a string→string callback that the child may invoke. */
165
+ registerCallback(name, callback) {
166
+ this.callbacks.set(name, callback);
167
+ }
168
+ /** Kill the child process and release resources. */
169
+ close() {
170
+ try {
171
+ liveChildren.delete(this.child);
172
+ if (this.pipeFd !== undefined) {
173
+ closeSync(this.pipeFd);
174
+ this.pipeFd = undefined;
175
+ }
176
+ // Destroy the stdio streams so that their pipe handles are closed
177
+ // and no longer prevent the event loop from draining.
178
+ this.child.stdout?.destroy();
179
+ this.child.stdin?.destroy();
180
+ this.child.kill();
181
+ this.readFd = -1;
182
+ this.writeFd = -1;
183
+ }
184
+ catch {
185
+ // swallow – process may already be dead
186
+ }
187
+ }
188
+ // ── Core request loop ───────────────────────────────────────────
189
+ ensureOpen() {
190
+ if (this.readFd < 0) {
191
+ throw new Error("SyncRpcChannel is closed");
192
+ }
193
+ }
194
+ getMethodBuf(method) {
195
+ let buf = this.methodBufCache.get(method);
196
+ if (buf === undefined) {
197
+ buf = Buffer.from(method, "utf-8");
198
+ this.methodBufCache.set(method, buf);
199
+ }
200
+ return buf;
201
+ }
202
+ requestBytesSync(method, payload) {
203
+ const methodBuf = this.getMethodBuf(method);
204
+ this.writeTuple(MSG_REQUEST, methodBuf, payload);
205
+ for (;;) {
206
+ this.readTuple();
207
+ switch (this._msgType) {
208
+ case MSG_RESPONSE: {
209
+ // Compare raw bytes instead of decoding to string.
210
+ if (!methodBuf.equals(this._msgName)) {
211
+ throw new Error(`name mismatch for response: expected \`${method}\`, got \`${this._msgName.toString("utf-8")}\``);
212
+ }
213
+ return this._msgPayload;
214
+ }
215
+ case MSG_ERROR: {
216
+ if (methodBuf.equals(this._msgName)) {
217
+ throw new Error(this._msgPayload.toString("utf-8"));
218
+ }
219
+ throw new Error(`name mismatch for response: expected \`${method}\`, got \`${this._msgName.toString("utf-8")}\``);
220
+ }
221
+ case MSG_CALL: {
222
+ this.handleCall(this._msgName.toString("utf-8"), this._msgPayload);
223
+ break;
224
+ }
225
+ default:
226
+ throw new Error(`Invalid message type from child: ${this._msgType}`);
227
+ }
228
+ }
229
+ }
230
+ // ── Callback handling ───────────────────────────────────────────
231
+ /**
232
+ * Handle an incoming MSG_CALL from the child process.
233
+ *
234
+ * After sending the error response back to the child, this method
235
+ * intentionally re-throws to abort the caller's request loop.
236
+ * A failed callback is treated as unrecoverable to match the
237
+ * behavior of the native libsyncrpc addon.
238
+ */
239
+ handleCall(name, payload) {
240
+ const cb = this.callbacks.get(name);
241
+ if (!cb) {
242
+ const errMsg = `unknown callback: \`${name}\`. Please make sure to register it on the JavaScript side before invoking it.`;
243
+ this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, "utf-8"), Buffer.from(errMsg, "utf-8"));
244
+ throw new Error(`no callback named \`${name}\` found`);
245
+ }
246
+ try {
247
+ const result = cb(name, payload.toString("utf-8"));
248
+ this.writeTuple(MSG_CALL_RESPONSE, Buffer.from(name, "utf-8"), Buffer.from(result, "utf-8"));
249
+ }
250
+ catch (e) {
251
+ const errMsg = String(e instanceof Error ? e.message : e).trim();
252
+ this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, "utf-8"), Buffer.from(errMsg, "utf-8"));
253
+ throw new Error(`Error calling callback \`${name}\`: ${errMsg}`);
254
+ }
255
+ }
256
+ // ── MessagePack tuple write ─────────────────────────────────────
257
+ /**
258
+ * Write a complete [type, name, payload] tuple in as few writeSync
259
+ * calls as possible. For messages that fit in the pre-allocated
260
+ * write buffer (64 KB), everything is assembled and sent in a single
261
+ * syscall. Larger messages use two syscalls: one for the header
262
+ * portion and one for the payload data.
263
+ */
264
+ writeTuple(type, name, payload) {
265
+ const nameLen = name.length;
266
+ const payloadIsString = typeof payload === "string";
267
+ const payloadLen = payloadIsString ? Buffer.byteLength(payload, "utf-8") : payload.length;
268
+ const nameHdrSize = binHeaderSize(nameLen);
269
+ const payloadHdrSize = binHeaderSize(payloadLen);
270
+ const headerSize = 2 + nameHdrSize + nameLen + payloadHdrSize;
271
+ const totalSize = headerSize + payloadLen;
272
+ if (totalSize <= this.writeBuf.length) {
273
+ // Small message: assemble into write buffer, one syscall
274
+ let off = 0;
275
+ this.writeBuf[off++] = MSGPACK_FIXARRAY3;
276
+ this.writeBuf[off++] = type;
277
+ off = writeBinHeader(this.writeBuf, off, nameLen);
278
+ name.copy(this.writeBuf, off);
279
+ off += nameLen;
280
+ off = writeBinHeader(this.writeBuf, off, payloadLen);
281
+ if (payloadLen > 0) {
282
+ if (payloadIsString) {
283
+ // Encode string directly into write buffer — avoids
284
+ // Buffer.from(string, 'utf-8') allocation entirely.
285
+ this.writeBuf.write(payload, off, payloadLen, "utf-8");
286
+ }
287
+ else if (payload instanceof Buffer) {
288
+ payload.copy(this.writeBuf, off);
289
+ }
290
+ else {
291
+ this.writeBuf.set(payload, off);
292
+ }
293
+ }
294
+ this.writeAllBuf(this.writeBuf, totalSize);
295
+ }
296
+ else {
297
+ // Large message: header + name in one call, payload in another
298
+ let off = 0;
299
+ this.writeBuf[off++] = MSGPACK_FIXARRAY3;
300
+ this.writeBuf[off++] = type;
301
+ off = writeBinHeader(this.writeBuf, off, nameLen);
302
+ name.copy(this.writeBuf, off);
303
+ off += nameLen;
304
+ off = writeBinHeader(this.writeBuf, off, payloadLen);
305
+ this.writeAllBuf(this.writeBuf, off);
306
+ if (payloadLen > 0) {
307
+ if (payloadIsString) {
308
+ // Large string: must allocate (can't stream-encode
309
+ // across multiple writeSync calls).
310
+ this.writeAllBuf(Buffer.from(payload, "utf-8"));
311
+ }
312
+ else {
313
+ this.writeAllBuf(payload);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ // ── MessagePack tuple read ──────────────────────────────────────
319
+ /**
320
+ * Read a [type, name, payload] tuple into instance fields
321
+ * (_msgType, _msgName, _msgPayload) to avoid allocating a
322
+ * short-lived 3-element array on every call.
323
+ */
324
+ readTuple() {
325
+ // Fixed 3-element array marker
326
+ const marker = this.readByte();
327
+ if (marker !== MSGPACK_FIXARRAY3) {
328
+ throw new Error(`Expected fixed 3-element array (0x93), received: 0x${marker.toString(16)}`);
329
+ }
330
+ // Message type – positive fixint or uint8
331
+ const tb = this.readByte();
332
+ if (tb <= 0x7f) {
333
+ this._msgType = tb;
334
+ }
335
+ else if (tb === MSGPACK_UINT8) {
336
+ this._msgType = this.readByte();
337
+ }
338
+ else {
339
+ throw new Error(`Expected positive fixint or uint8 marker, received: 0x${tb.toString(16)}`);
340
+ }
341
+ this._msgName = this.readBin();
342
+ this._msgPayload = this.readBin();
343
+ }
344
+ /**
345
+ * Read a MessagePack bin field.
346
+ */
347
+ readBin() {
348
+ const marker = this.readByte();
349
+ let size;
350
+ switch (marker) {
351
+ case MSGPACK_BIN8:
352
+ size = this.readByte();
353
+ break;
354
+ case MSGPACK_BIN16:
355
+ this.readExactInto(this.headerBuf, 2);
356
+ size = (this.headerBuf[0] << 8) | this.headerBuf[1];
357
+ break;
358
+ case MSGPACK_BIN32:
359
+ this.readExactInto(this.headerBuf, 4);
360
+ size = this.headerBuf.readUInt32BE(0);
361
+ break;
362
+ default:
363
+ throw new Error(`Expected binary data (0xc4-0xc6), received: 0x${marker.toString(16)}`);
364
+ }
365
+ if (size === 0)
366
+ return EMPTY_BUF;
367
+ return this.readExact(size);
368
+ }
369
+ // ── Low-level synchronous I/O ───────────────────────────────────
370
+ /** Build an EOF error with the child's exit code/signal if available. */
371
+ eofError() {
372
+ const code = this.child.exitCode;
373
+ const signal = this.child.signalCode;
374
+ const detail = signal ? `killed by signal ${signal}` : code !== null ? `exited with code ${code}` : "unknown reason";
375
+ return new Error(`Unexpected EOF while reading from child process (${detail})`);
376
+ }
377
+ /** Read a single byte from the buffered read-ahead. */
378
+ readByte() {
379
+ if (this.readBufPos >= this.readBufLen) {
380
+ this.fillReadBuffer();
381
+ }
382
+ return this.readBuf[this.readBufPos++];
383
+ }
384
+ readExact(length) {
385
+ // Use allocUnsafeSlow (not allocUnsafe) so the buffer has its own
386
+ // backing ArrayBuffer at byteOffset 0. This is critical because
387
+ // callers such as RemoteSourceFile create DataView/Uint8Array over
388
+ // buffer.buffer with absolute offsets. Buffer.allocUnsafe returns
389
+ // slices of a shared pool whose byteOffset is non-zero, corrupting
390
+ // those downstream views.
391
+ //
392
+ // allocUnsafeSlow (vs alloc) skips zero-fill, which matters for
393
+ // large transfers — e.g. checker.ts at ~57 MB saves ~5 ms of
394
+ // unnecessary memset. The buffer is immediately filled by
395
+ // readExactInto so uninitialized memory is never exposed.
396
+ const buf = Buffer.allocUnsafeSlow(length);
397
+ this.readExactInto(buf, length);
398
+ return buf;
399
+ }
400
+ /**
401
+ * Fill the internal read-ahead buffer from the pipe fd.
402
+ * Retries on EAGAIN for non-blocking mode compatibility.
403
+ */
404
+ fillReadBuffer() {
405
+ this.readBufPos = 0;
406
+ this.readBufLen = 0;
407
+ for (;;) {
408
+ try {
409
+ const n = readSync(this.readFd, this.readBuf, 0, this.readBuf.length, null);
410
+ if (n === 0) {
411
+ throw this.eofError();
412
+ }
413
+ this.readBufLen = n;
414
+ return;
415
+ }
416
+ catch (e) {
417
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
418
+ Atomics.wait(sleepBuf, 0, 0, 1);
419
+ continue;
420
+ }
421
+ throw e;
422
+ }
423
+ }
424
+ }
425
+ /**
426
+ * Synchronously read exactly `length` bytes into `buffer`.
427
+ * Serves from the internal read-ahead buffer first; for large reads
428
+ * that exceed the buffer size, reads directly from the fd to avoid
429
+ * an extra copy.
430
+ */
431
+ readExactInto(buffer, length) {
432
+ let pos = 0;
433
+ while (pos < length) {
434
+ const avail = this.readBufLen - this.readBufPos;
435
+ if (avail > 0) {
436
+ // Serve from read-ahead buffer
437
+ const toCopy = Math.min(avail, length - pos);
438
+ this.readBuf.copy(buffer, pos, this.readBufPos, this.readBufPos + toCopy);
439
+ this.readBufPos += toCopy;
440
+ pos += toCopy;
441
+ }
442
+ else if (length - pos >= this.readBuf.length) {
443
+ // Remaining data is larger than read buffer; read directly
444
+ // into the target to avoid unnecessary copying.
445
+ try {
446
+ const n = readSync(this.readFd, buffer, pos, length - pos, null);
447
+ if (n === 0) {
448
+ throw this.eofError();
449
+ }
450
+ pos += n;
451
+ }
452
+ catch (e) {
453
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
454
+ Atomics.wait(sleepBuf, 0, 0, 1);
455
+ continue;
456
+ }
457
+ throw e;
458
+ }
459
+ }
460
+ else {
461
+ // Refill the read-ahead buffer
462
+ this.fillReadBuffer();
463
+ }
464
+ }
465
+ }
466
+ /**
467
+ * Synchronously write all bytes from `data` (up to `length`).
468
+ * Retries on EAGAIN.
469
+ */
470
+ writeAllBuf(data, length) {
471
+ const total = length ?? data.length;
472
+ let pos = 0;
473
+ while (pos < total) {
474
+ try {
475
+ const n = writeSync(this.writeFd, data, pos, total - pos);
476
+ pos += n;
477
+ }
478
+ catch (e) {
479
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
480
+ Atomics.wait(sleepBuf, 0, 0, 1);
481
+ continue;
482
+ }
483
+ throw e;
484
+ }
485
+ }
486
+ }
487
+ }
488
+ //# sourceMappingURL=syncChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncChannel.js","sourceRoot":"","sources":["../../src/api/syncChannel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { LanguageVariant } from "#enums/languageVariant";
2
+ import type { NodeFlags } from "#enums/nodeFlags";
3
+ import type { ScriptKind } from "#enums/scriptKind";
4
+ import { SyntaxKind } from "#enums/syntaxKind";
5
+ import type { EndOfFile, EntityName, Identifier, KeywordSyntaxKind, ModifierSyntaxKind, PropertyAccessExpression, PunctuationSyntaxKind, Statement, Token } from "./ast.generated.ts";
6
+ export { SyntaxKind } from "#enums/syntaxKind";
7
+ export { TokenFlags } from "#enums/tokenFlags";
8
+ export * from "./ast.generated.ts";
9
+ export type Path = string & {
10
+ __pathBrand: any;
11
+ };
12
+ export interface TextRange {
13
+ pos: number;
14
+ end: number;
15
+ }
16
+ export interface ReadonlyTextRange {
17
+ readonly pos: number;
18
+ readonly end: number;
19
+ }
20
+ export interface NodeArray<T extends Node> extends ReadonlyArray<T>, ReadonlyTextRange {
21
+ hasTrailingComma?: boolean;
22
+ transformFlags: number;
23
+ }
24
+ export interface Node extends ReadonlyTextRange {
25
+ readonly kind: SyntaxKind;
26
+ readonly flags: NodeFlags;
27
+ readonly parent: Node;
28
+ readonly jsDoc?: readonly Node[];
29
+ forEachChild<T>(visitor: (node: Node) => T, visitArray?: (nodes: NodeArray<Node>) => T): T | undefined;
30
+ getSourceFile(): SourceFile;
31
+ }
32
+ export interface FileReference extends TextRange {
33
+ readonly fileName: string;
34
+ readonly resolutionMode: number;
35
+ readonly preserve: boolean;
36
+ }
37
+ export interface SourceFile extends Node {
38
+ readonly kind: SyntaxKind.SourceFile;
39
+ readonly statements: NodeArray<Statement>;
40
+ readonly endOfFileToken: EndOfFile;
41
+ readonly text: string;
42
+ readonly fileName: string;
43
+ readonly path: Path;
44
+ readonly languageVariant: LanguageVariant;
45
+ readonly scriptKind: ScriptKind;
46
+ readonly isDeclarationFile: boolean;
47
+ readonly referencedFiles: readonly FileReference[];
48
+ readonly typeReferenceDirectives: readonly FileReference[];
49
+ readonly libReferenceDirectives: readonly FileReference[];
50
+ readonly imports: readonly Node[];
51
+ readonly moduleAugmentations: readonly Node[];
52
+ readonly ambientModuleNames: readonly string[];
53
+ readonly externalModuleIndicator: Node | true | undefined;
54
+ /** @internal */
55
+ tokenCache?: Map<string, Node>;
56
+ }
57
+ export type PunctuationToken<TKind extends PunctuationSyntaxKind> = Token<TKind>;
58
+ export type KeywordToken<TKind extends KeywordSyntaxKind> = Token<TKind>;
59
+ export type ModifierToken<TKind extends ModifierSyntaxKind> = KeywordToken<TKind>;
60
+ export interface PropertyAccessEntityNameExpression extends PropertyAccessExpression {
61
+ readonly expression: EntityNameExpression;
62
+ readonly name: Identifier;
63
+ }
64
+ export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
65
+ export type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
66
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast/ast.ts"],"names":[],"mappings":"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"}