typescript 6.0.3 → 7.0.2

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 (550) hide show
  1. package/{ThirdPartyNoticeText.txt → NOTICE.txt} +249 -6
  2. package/README.md +49 -50
  3. package/bin/tsc +1 -1
  4. package/dist/api/async/api.d.ts +529 -0
  5. package/dist/api/async/api.d.ts.map +1 -0
  6. package/dist/api/async/api.js +1657 -0
  7. package/dist/api/async/api.js.map +1 -0
  8. package/dist/api/async/client.d.ts +39 -0
  9. package/dist/api/async/client.d.ts.map +1 -0
  10. package/dist/api/async/client.js +211 -0
  11. package/dist/api/async/client.js.map +1 -0
  12. package/dist/api/async/types.d.ts +310 -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/compilerOptions.d.ts +109 -0
  17. package/dist/api/compilerOptions.d.ts.map +1 -0
  18. package/dist/api/compilerOptions.js +2 -0
  19. package/dist/api/compilerOptions.js.map +1 -0
  20. package/dist/api/fs.d.ts +23 -0
  21. package/dist/api/fs.d.ts.map +1 -0
  22. package/dist/api/fs.js +109 -0
  23. package/dist/api/fs.js.map +1 -0
  24. package/dist/api/node/encoder.d.ts +15 -0
  25. package/dist/api/node/encoder.d.ts.map +1 -0
  26. package/dist/api/node/encoder.generated.d.ts +5 -0
  27. package/dist/api/node/encoder.generated.d.ts.map +1 -0
  28. package/dist/api/node/encoder.generated.js +74 -0
  29. package/dist/api/node/encoder.generated.js.map +1 -0
  30. package/dist/api/node/encoder.js +287 -0
  31. package/dist/api/node/encoder.js.map +1 -0
  32. package/dist/api/node/msgpack.d.ts +32 -0
  33. package/dist/api/node/msgpack.d.ts.map +1 -0
  34. package/dist/api/node/msgpack.js +213 -0
  35. package/dist/api/node/msgpack.js.map +1 -0
  36. package/dist/api/node/node.d.ts +76 -0
  37. package/dist/api/node/node.d.ts.map +1 -0
  38. package/dist/api/node/node.generated.d.ts +182 -0
  39. package/dist/api/node/node.generated.d.ts.map +1 -0
  40. package/dist/api/node/node.generated.js +835 -0
  41. package/dist/api/node/node.generated.js.map +1 -0
  42. package/dist/api/node/node.infrastructure.d.ts +62 -0
  43. package/dist/api/node/node.infrastructure.d.ts.map +1 -0
  44. package/dist/api/node/node.infrastructure.js +122 -0
  45. package/dist/api/node/node.infrastructure.js.map +1 -0
  46. package/dist/api/node/node.js +298 -0
  47. package/dist/api/node/node.js.map +1 -0
  48. package/dist/api/node/protocol.d.ts +29 -0
  49. package/dist/api/node/protocol.d.ts.map +1 -0
  50. package/dist/api/node/protocol.generated.d.ts +4 -0
  51. package/dist/api/node/protocol.generated.d.ts.map +1 -0
  52. package/dist/api/node/protocol.generated.js +241 -0
  53. package/dist/api/node/protocol.generated.js.map +1 -0
  54. package/dist/api/node/protocol.js +30 -0
  55. package/dist/api/node/protocol.js.map +1 -0
  56. package/dist/api/node/wtf8.d.ts +6 -0
  57. package/dist/api/node/wtf8.d.ts.map +1 -0
  58. package/dist/api/node/wtf8.js +61 -0
  59. package/dist/api/node/wtf8.js.map +1 -0
  60. package/dist/api/options.d.ts +32 -0
  61. package/dist/api/options.d.ts.map +1 -0
  62. package/dist/api/options.js +11 -0
  63. package/dist/api/options.js.map +1 -0
  64. package/dist/api/path.d.ts +110 -0
  65. package/dist/api/path.d.ts.map +1 -0
  66. package/dist/api/path.js +508 -0
  67. package/dist/api/path.js.map +1 -0
  68. package/dist/api/proto.d.ts +239 -0
  69. package/dist/api/proto.d.ts.map +1 -0
  70. package/dist/api/proto.js +37 -0
  71. package/dist/api/proto.js.map +1 -0
  72. package/dist/api/sourceFileCache.d.ts +79 -0
  73. package/dist/api/sourceFileCache.d.ts.map +1 -0
  74. package/dist/api/sourceFileCache.js +169 -0
  75. package/dist/api/sourceFileCache.js.map +1 -0
  76. package/dist/api/sync/api.d.ts +529 -0
  77. package/dist/api/sync/api.d.ts.map +1 -0
  78. package/dist/api/sync/api.js +1665 -0
  79. package/dist/api/sync/api.js.map +1 -0
  80. package/dist/api/sync/client.d.ts +30 -0
  81. package/dist/api/sync/client.d.ts.map +1 -0
  82. package/dist/api/sync/client.js +124 -0
  83. package/dist/api/sync/client.js.map +1 -0
  84. package/dist/api/sync/types.d.ts +310 -0
  85. package/dist/api/sync/types.d.ts.map +1 -0
  86. package/dist/api/sync/types.js +2 -0
  87. package/dist/api/sync/types.js.map +1 -0
  88. package/dist/api/syncChannel.d.ts +114 -0
  89. package/dist/api/syncChannel.d.ts.map +1 -0
  90. package/dist/api/syncChannel.js +508 -0
  91. package/dist/api/syncChannel.js.map +1 -0
  92. package/dist/api/timing.d.ts +175 -0
  93. package/dist/api/timing.d.ts.map +1 -0
  94. package/dist/api/timing.js +149 -0
  95. package/dist/api/timing.js.map +1 -0
  96. package/dist/ast/ast.d.ts +100 -0
  97. package/dist/ast/ast.d.ts.map +1 -0
  98. package/dist/ast/ast.generated.d.ts +1161 -0
  99. package/dist/ast/ast.generated.d.ts.map +1 -0
  100. package/dist/ast/ast.generated.js +4 -0
  101. package/dist/ast/ast.generated.js.map +1 -0
  102. package/dist/ast/ast.js +7 -0
  103. package/dist/ast/ast.js.map +1 -0
  104. package/dist/ast/astnav.d.ts +19 -0
  105. package/dist/ast/astnav.d.ts.map +1 -0
  106. package/dist/ast/astnav.js +596 -0
  107. package/dist/ast/astnav.js.map +1 -0
  108. package/dist/ast/clone.d.ts +16 -0
  109. package/dist/ast/clone.d.ts.map +1 -0
  110. package/dist/ast/clone.js +104 -0
  111. package/dist/ast/clone.js.map +1 -0
  112. package/dist/ast/factory.generated.d.ts +520 -0
  113. package/dist/ast/factory.generated.d.ts.map +1 -0
  114. package/dist/ast/factory.generated.js +3057 -0
  115. package/dist/ast/factory.generated.js.map +1 -0
  116. package/dist/ast/index.d.ts +20 -0
  117. package/dist/ast/index.d.ts.map +1 -0
  118. package/dist/ast/index.js +20 -0
  119. package/dist/ast/index.js.map +1 -0
  120. package/dist/ast/is.d.ts +35 -0
  121. package/dist/ast/is.d.ts.map +1 -0
  122. package/dist/ast/is.generated.d.ts +329 -0
  123. package/dist/ast/is.generated.d.ts.map +1 -0
  124. package/dist/ast/is.generated.js +1103 -0
  125. package/dist/ast/is.generated.js.map +1 -0
  126. package/dist/ast/is.js +233 -0
  127. package/dist/ast/is.js.map +1 -0
  128. package/dist/ast/jsdoc.d.ts +11 -0
  129. package/dist/ast/jsdoc.d.ts.map +1 -0
  130. package/dist/ast/jsdoc.js +202 -0
  131. package/dist/ast/jsdoc.js.map +1 -0
  132. package/dist/ast/scanner.d.ts +97 -0
  133. package/dist/ast/scanner.d.ts.map +1 -0
  134. package/dist/ast/scanner.js +2230 -0
  135. package/dist/ast/scanner.js.map +1 -0
  136. package/dist/ast/utils.d.ts +17 -0
  137. package/dist/ast/utils.d.ts.map +1 -0
  138. package/dist/ast/utils.js +67 -0
  139. package/dist/ast/utils.js.map +1 -0
  140. package/dist/ast/visitor.d.ts +14 -0
  141. package/dist/ast/visitor.d.ts.map +1 -0
  142. package/dist/ast/visitor.generated.d.ts +50 -0
  143. package/dist/ast/visitor.generated.d.ts.map +1 -0
  144. package/dist/ast/visitor.generated.js +978 -0
  145. package/dist/ast/visitor.generated.js.map +1 -0
  146. package/dist/ast/visitor.js +47 -0
  147. package/dist/ast/visitor.js.map +1 -0
  148. package/dist/enums/characterCodes.d.ts +2 -0
  149. package/dist/enums/characterCodes.d.ts.map +1 -0
  150. package/dist/enums/characterCodes.enum.d.ts +129 -0
  151. package/dist/enums/characterCodes.enum.d.ts.map +1 -0
  152. package/dist/enums/characterCodes.enum.js +132 -0
  153. package/dist/enums/characterCodes.enum.js.map +1 -0
  154. package/dist/enums/characterCodes.js +130 -0
  155. package/dist/enums/characterCodes.js.map +1 -0
  156. package/dist/enums/commentDirectiveType.d.ts +2 -0
  157. package/dist/enums/commentDirectiveType.d.ts.map +1 -0
  158. package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
  159. package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
  160. package/dist/enums/commentDirectiveType.enum.js +6 -0
  161. package/dist/enums/commentDirectiveType.enum.js.map +1 -0
  162. package/dist/enums/commentDirectiveType.js +6 -0
  163. package/dist/enums/commentDirectiveType.js.map +1 -0
  164. package/dist/enums/completionItemKind.d.ts +2 -0
  165. package/dist/enums/completionItemKind.d.ts.map +1 -0
  166. package/dist/enums/completionItemKind.enum.d.ts +28 -0
  167. package/dist/enums/completionItemKind.enum.d.ts.map +1 -0
  168. package/dist/enums/completionItemKind.enum.js +30 -0
  169. package/dist/enums/completionItemKind.enum.js.map +1 -0
  170. package/dist/enums/completionItemKind.js +30 -0
  171. package/dist/enums/completionItemKind.js.map +1 -0
  172. package/dist/enums/diagnosticCategory.d.ts +2 -0
  173. package/dist/enums/diagnosticCategory.d.ts.map +1 -0
  174. package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
  175. package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
  176. package/dist/enums/diagnosticCategory.enum.js +9 -0
  177. package/dist/enums/diagnosticCategory.enum.js.map +1 -0
  178. package/dist/enums/diagnosticCategory.js +9 -0
  179. package/dist/enums/diagnosticCategory.js.map +1 -0
  180. package/dist/enums/elementFlags.d.ts +2 -0
  181. package/dist/enums/elementFlags.d.ts.map +1 -0
  182. package/dist/enums/elementFlags.enum.d.ts +12 -0
  183. package/dist/enums/elementFlags.enum.d.ts.map +1 -0
  184. package/dist/enums/elementFlags.enum.js +14 -0
  185. package/dist/enums/elementFlags.enum.js.map +1 -0
  186. package/dist/enums/elementFlags.js +14 -0
  187. package/dist/enums/elementFlags.js.map +1 -0
  188. package/dist/enums/internalSymbolName.d.ts +2 -0
  189. package/dist/enums/internalSymbolName.d.ts.map +1 -0
  190. package/dist/enums/internalSymbolName.enum.d.ts +23 -0
  191. package/dist/enums/internalSymbolName.enum.d.ts.map +1 -0
  192. package/dist/enums/internalSymbolName.enum.js +25 -0
  193. package/dist/enums/internalSymbolName.enum.js.map +1 -0
  194. package/dist/enums/internalSymbolName.js +25 -0
  195. package/dist/enums/internalSymbolName.js.map +1 -0
  196. package/dist/enums/jsxEmit.d.ts +2 -0
  197. package/dist/enums/jsxEmit.d.ts.map +1 -0
  198. package/dist/enums/jsxEmit.enum.d.ts +9 -0
  199. package/dist/enums/jsxEmit.enum.d.ts.map +1 -0
  200. package/dist/enums/jsxEmit.enum.js +11 -0
  201. package/dist/enums/jsxEmit.enum.js.map +1 -0
  202. package/dist/enums/jsxEmit.js +11 -0
  203. package/dist/enums/jsxEmit.js.map +1 -0
  204. package/dist/enums/languageVariant.d.ts +2 -0
  205. package/dist/enums/languageVariant.d.ts.map +1 -0
  206. package/dist/enums/languageVariant.enum.d.ts +5 -0
  207. package/dist/enums/languageVariant.enum.d.ts.map +1 -0
  208. package/dist/enums/languageVariant.enum.js +6 -0
  209. package/dist/enums/languageVariant.enum.js.map +1 -0
  210. package/dist/enums/languageVariant.js +6 -0
  211. package/dist/enums/languageVariant.js.map +1 -0
  212. package/dist/enums/modifierFlags.d.ts +2 -0
  213. package/dist/enums/modifierFlags.d.ts.map +1 -0
  214. package/dist/enums/modifierFlags.enum.d.ts +42 -0
  215. package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
  216. package/dist/enums/modifierFlags.enum.js +44 -0
  217. package/dist/enums/modifierFlags.enum.js.map +1 -0
  218. package/dist/enums/modifierFlags.js +44 -0
  219. package/dist/enums/modifierFlags.js.map +1 -0
  220. package/dist/enums/moduleDetectionKind.d.ts +2 -0
  221. package/dist/enums/moduleDetectionKind.d.ts.map +1 -0
  222. package/dist/enums/moduleDetectionKind.enum.d.ts +7 -0
  223. package/dist/enums/moduleDetectionKind.enum.d.ts.map +1 -0
  224. package/dist/enums/moduleDetectionKind.enum.js +9 -0
  225. package/dist/enums/moduleDetectionKind.enum.js.map +1 -0
  226. package/dist/enums/moduleDetectionKind.js +9 -0
  227. package/dist/enums/moduleDetectionKind.js.map +1 -0
  228. package/dist/enums/moduleKind.d.ts +2 -0
  229. package/dist/enums/moduleKind.d.ts.map +1 -0
  230. package/dist/enums/moduleKind.enum.d.ts +17 -0
  231. package/dist/enums/moduleKind.enum.d.ts.map +1 -0
  232. package/dist/enums/moduleKind.enum.js +19 -0
  233. package/dist/enums/moduleKind.enum.js.map +1 -0
  234. package/dist/enums/moduleKind.js +19 -0
  235. package/dist/enums/moduleKind.js.map +1 -0
  236. package/dist/enums/moduleResolutionKind.d.ts +2 -0
  237. package/dist/enums/moduleResolutionKind.d.ts.map +1 -0
  238. package/dist/enums/moduleResolutionKind.enum.d.ts +9 -0
  239. package/dist/enums/moduleResolutionKind.enum.d.ts.map +1 -0
  240. package/dist/enums/moduleResolutionKind.enum.js +11 -0
  241. package/dist/enums/moduleResolutionKind.enum.js.map +1 -0
  242. package/dist/enums/moduleResolutionKind.js +11 -0
  243. package/dist/enums/moduleResolutionKind.js.map +1 -0
  244. package/dist/enums/newLineKind.d.ts +2 -0
  245. package/dist/enums/newLineKind.d.ts.map +1 -0
  246. package/dist/enums/newLineKind.enum.d.ts +6 -0
  247. package/dist/enums/newLineKind.enum.d.ts.map +1 -0
  248. package/dist/enums/newLineKind.enum.js +8 -0
  249. package/dist/enums/newLineKind.enum.js.map +1 -0
  250. package/dist/enums/newLineKind.js +8 -0
  251. package/dist/enums/newLineKind.js.map +1 -0
  252. package/dist/enums/nodeBuilderFlags.d.ts +2 -0
  253. package/dist/enums/nodeBuilderFlags.d.ts.map +1 -0
  254. package/dist/enums/nodeBuilderFlags.enum.d.ts +36 -0
  255. package/dist/enums/nodeBuilderFlags.enum.d.ts.map +1 -0
  256. package/dist/enums/nodeBuilderFlags.enum.js +38 -0
  257. package/dist/enums/nodeBuilderFlags.enum.js.map +1 -0
  258. package/dist/enums/nodeBuilderFlags.js +38 -0
  259. package/dist/enums/nodeBuilderFlags.js.map +1 -0
  260. package/dist/enums/nodeFlags.d.ts +2 -0
  261. package/dist/enums/nodeFlags.d.ts.map +1 -0
  262. package/dist/enums/nodeFlags.enum.d.ts +44 -0
  263. package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
  264. package/dist/enums/nodeFlags.enum.js +46 -0
  265. package/dist/enums/nodeFlags.enum.js.map +1 -0
  266. package/dist/enums/nodeFlags.js +46 -0
  267. package/dist/enums/nodeFlags.js.map +1 -0
  268. package/dist/enums/objectFlags.d.ts +2 -0
  269. package/dist/enums/objectFlags.d.ts.map +1 -0
  270. package/dist/enums/objectFlags.enum.d.ts +50 -0
  271. package/dist/enums/objectFlags.enum.d.ts.map +1 -0
  272. package/dist/enums/objectFlags.enum.js +52 -0
  273. package/dist/enums/objectFlags.enum.js.map +1 -0
  274. package/dist/enums/objectFlags.js +52 -0
  275. package/dist/enums/objectFlags.js.map +1 -0
  276. package/dist/enums/outerExpressionKinds.d.ts +2 -0
  277. package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
  278. package/dist/enums/outerExpressionKinds.enum.d.ts +16 -0
  279. package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
  280. package/dist/enums/outerExpressionKinds.enum.js +18 -0
  281. package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
  282. package/dist/enums/outerExpressionKinds.js +18 -0
  283. package/dist/enums/outerExpressionKinds.js.map +1 -0
  284. package/dist/enums/regularExpressionFlags.d.ts +2 -0
  285. package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
  286. package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
  287. package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
  288. package/dist/enums/regularExpressionFlags.enum.js +14 -0
  289. package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
  290. package/dist/enums/regularExpressionFlags.js +14 -0
  291. package/dist/enums/regularExpressionFlags.js.map +1 -0
  292. package/dist/enums/scriptKind.d.ts +2 -0
  293. package/dist/enums/scriptKind.d.ts.map +1 -0
  294. package/dist/enums/scriptKind.enum.d.ts +11 -0
  295. package/dist/enums/scriptKind.enum.d.ts.map +1 -0
  296. package/dist/enums/scriptKind.enum.js +12 -0
  297. package/dist/enums/scriptKind.enum.js.map +1 -0
  298. package/dist/enums/scriptKind.js +12 -0
  299. package/dist/enums/scriptKind.js.map +1 -0
  300. package/dist/enums/scriptTarget.d.ts +2 -0
  301. package/dist/enums/scriptTarget.d.ts.map +1 -0
  302. package/dist/enums/scriptTarget.enum.d.ts +17 -0
  303. package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
  304. package/dist/enums/scriptTarget.enum.js +18 -0
  305. package/dist/enums/scriptTarget.enum.js.map +1 -0
  306. package/dist/enums/scriptTarget.js +18 -0
  307. package/dist/enums/scriptTarget.js.map +1 -0
  308. package/dist/enums/signatureFlags.d.ts +2 -0
  309. package/dist/enums/signatureFlags.d.ts.map +1 -0
  310. package/dist/enums/signatureFlags.enum.d.ts +15 -0
  311. package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
  312. package/dist/enums/signatureFlags.enum.js +17 -0
  313. package/dist/enums/signatureFlags.enum.js.map +1 -0
  314. package/dist/enums/signatureFlags.js +17 -0
  315. package/dist/enums/signatureFlags.js.map +1 -0
  316. package/dist/enums/signatureKind.d.ts +2 -0
  317. package/dist/enums/signatureKind.d.ts.map +1 -0
  318. package/dist/enums/signatureKind.enum.d.ts +5 -0
  319. package/dist/enums/signatureKind.enum.d.ts.map +1 -0
  320. package/dist/enums/signatureKind.enum.js +7 -0
  321. package/dist/enums/signatureKind.enum.js.map +1 -0
  322. package/dist/enums/signatureKind.js +7 -0
  323. package/dist/enums/signatureKind.js.map +1 -0
  324. package/dist/enums/symbolFlags.d.ts +2 -0
  325. package/dist/enums/symbolFlags.d.ts.map +1 -0
  326. package/dist/enums/symbolFlags.enum.d.ts +71 -0
  327. package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
  328. package/dist/enums/symbolFlags.enum.js +73 -0
  329. package/dist/enums/symbolFlags.enum.js.map +1 -0
  330. package/dist/enums/symbolFlags.js +73 -0
  331. package/dist/enums/symbolFlags.js.map +1 -0
  332. package/dist/enums/syntaxKind.d.ts +2 -0
  333. package/dist/enums/syntaxKind.d.ts.map +1 -0
  334. package/dist/enums/syntaxKind.enum.d.ts +389 -0
  335. package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
  336. package/dist/enums/syntaxKind.enum.js +391 -0
  337. package/dist/enums/syntaxKind.enum.js.map +1 -0
  338. package/dist/enums/syntaxKind.js +391 -0
  339. package/dist/enums/syntaxKind.js.map +1 -0
  340. package/dist/enums/tokenFlags.d.ts +2 -0
  341. package/dist/enums/tokenFlags.d.ts.map +1 -0
  342. package/dist/enums/tokenFlags.enum.d.ts +30 -0
  343. package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
  344. package/dist/enums/tokenFlags.enum.js +32 -0
  345. package/dist/enums/tokenFlags.enum.js.map +1 -0
  346. package/dist/enums/tokenFlags.js +32 -0
  347. package/dist/enums/tokenFlags.js.map +1 -0
  348. package/dist/enums/typeFlags.d.ts +2 -0
  349. package/dist/enums/typeFlags.d.ts.map +1 -0
  350. package/dist/enums/typeFlags.enum.d.ts +76 -0
  351. package/dist/enums/typeFlags.enum.d.ts.map +1 -0
  352. package/dist/enums/typeFlags.enum.js +78 -0
  353. package/dist/enums/typeFlags.enum.js.map +1 -0
  354. package/dist/enums/typeFlags.js +78 -0
  355. package/dist/enums/typeFlags.js.map +1 -0
  356. package/dist/enums/typePredicateKind.d.ts +2 -0
  357. package/dist/enums/typePredicateKind.d.ts.map +1 -0
  358. package/dist/enums/typePredicateKind.enum.d.ts +7 -0
  359. package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
  360. package/dist/enums/typePredicateKind.enum.js +9 -0
  361. package/dist/enums/typePredicateKind.enum.js.map +1 -0
  362. package/dist/enums/typePredicateKind.js +9 -0
  363. package/dist/enums/typePredicateKind.js.map +1 -0
  364. package/dist/internal/utils.d.ts +23 -0
  365. package/dist/internal/utils.d.ts.map +1 -0
  366. package/dist/internal/utils.js +25 -0
  367. package/dist/internal/utils.js.map +1 -0
  368. package/lib/getExePath.d.ts +2 -0
  369. package/lib/getExePath.js +70 -0
  370. package/lib/tsc.js +28 -8
  371. package/lib/version.cjs +3 -0
  372. package/lib/version.d.cts +2 -0
  373. package/package.json +58 -89
  374. package/vendor/vscode-jsonrpc/License.txt +11 -0
  375. package/vendor/vscode-jsonrpc/README.md +54 -0
  376. package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  377. package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
  378. package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
  379. package/vendor/vscode-jsonrpc/lib/browser/ril.js +210 -0
  380. package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  381. package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
  382. package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  383. package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
  384. package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
  385. package/vendor/vscode-jsonrpc/lib/common/connection.js +1271 -0
  386. package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  387. package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
  388. package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  389. package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
  390. package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  391. package/vendor/vscode-jsonrpc/lib/common/events.js +135 -0
  392. package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  393. package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
  394. package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
  395. package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
  396. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  397. package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
  398. package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  399. package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
  400. package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  401. package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
  402. package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  403. package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
  404. package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  405. package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
  406. package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  407. package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
  408. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  409. package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
  410. package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
  411. package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
  412. package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
  413. package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
  414. package/vendor/vscode-jsonrpc/package.json +54 -0
  415. package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  416. package/SECURITY.md +0 -39
  417. package/bin/tsserver +0 -2
  418. package/lib/_tsc.js +0 -134465
  419. package/lib/_tsserver.js +0 -659
  420. package/lib/_typingsInstaller.js +0 -222
  421. package/lib/cs/diagnosticMessages.generated.json +0 -2129
  422. package/lib/de/diagnosticMessages.generated.json +0 -2125
  423. package/lib/es/diagnosticMessages.generated.json +0 -2129
  424. package/lib/fr/diagnosticMessages.generated.json +0 -2129
  425. package/lib/it/diagnosticMessages.generated.json +0 -2125
  426. package/lib/ja/diagnosticMessages.generated.json +0 -2129
  427. package/lib/ko/diagnosticMessages.generated.json +0 -2129
  428. package/lib/lib.d.ts +0 -20
  429. package/lib/lib.decorators.d.ts +0 -382
  430. package/lib/lib.decorators.legacy.d.ts +0 -20
  431. package/lib/lib.dom.asynciterable.d.ts +0 -18
  432. package/lib/lib.dom.d.ts +0 -45125
  433. package/lib/lib.dom.iterable.d.ts +0 -18
  434. package/lib/lib.es2015.collection.d.ts +0 -150
  435. package/lib/lib.es2015.core.d.ts +0 -595
  436. package/lib/lib.es2015.d.ts +0 -26
  437. package/lib/lib.es2015.generator.d.ts +0 -75
  438. package/lib/lib.es2015.iterable.d.ts +0 -603
  439. package/lib/lib.es2015.promise.d.ts +0 -79
  440. package/lib/lib.es2015.proxy.d.ts +0 -126
  441. package/lib/lib.es2015.reflect.d.ts +0 -142
  442. package/lib/lib.es2015.symbol.d.ts +0 -44
  443. package/lib/lib.es2015.symbol.wellknown.d.ts +0 -324
  444. package/lib/lib.es2016.array.include.d.ts +0 -114
  445. package/lib/lib.es2016.d.ts +0 -19
  446. package/lib/lib.es2016.full.d.ts +0 -21
  447. package/lib/lib.es2016.intl.d.ts +0 -29
  448. package/lib/lib.es2017.arraybuffer.d.ts +0 -19
  449. package/lib/lib.es2017.d.ts +0 -24
  450. package/lib/lib.es2017.date.d.ts +0 -29
  451. package/lib/lib.es2017.full.d.ts +0 -21
  452. package/lib/lib.es2017.intl.d.ts +0 -42
  453. package/lib/lib.es2017.object.d.ts +0 -47
  454. package/lib/lib.es2017.sharedmemory.d.ts +0 -133
  455. package/lib/lib.es2017.string.d.ts +0 -43
  456. package/lib/lib.es2017.typedarrays.d.ts +0 -51
  457. package/lib/lib.es2018.asyncgenerator.d.ts +0 -75
  458. package/lib/lib.es2018.asynciterable.d.ts +0 -51
  459. package/lib/lib.es2018.d.ts +0 -22
  460. package/lib/lib.es2018.full.d.ts +0 -22
  461. package/lib/lib.es2018.intl.d.ts +0 -81
  462. package/lib/lib.es2018.promise.d.ts +0 -28
  463. package/lib/lib.es2018.regexp.d.ts +0 -35
  464. package/lib/lib.es2019.array.d.ts +0 -77
  465. package/lib/lib.es2019.d.ts +0 -22
  466. package/lib/lib.es2019.full.d.ts +0 -22
  467. package/lib/lib.es2019.intl.d.ts +0 -21
  468. package/lib/lib.es2019.object.d.ts +0 -31
  469. package/lib/lib.es2019.string.d.ts +0 -35
  470. package/lib/lib.es2019.symbol.d.ts +0 -22
  471. package/lib/lib.es2020.bigint.d.ts +0 -763
  472. package/lib/lib.es2020.d.ts +0 -25
  473. package/lib/lib.es2020.date.d.ts +0 -40
  474. package/lib/lib.es2020.full.d.ts +0 -22
  475. package/lib/lib.es2020.intl.d.ts +0 -472
  476. package/lib/lib.es2020.number.d.ts +0 -26
  477. package/lib/lib.es2020.promise.d.ts +0 -45
  478. package/lib/lib.es2020.sharedmemory.d.ts +0 -97
  479. package/lib/lib.es2020.string.d.ts +0 -42
  480. package/lib/lib.es2020.symbol.wellknown.d.ts +0 -39
  481. package/lib/lib.es2021.d.ts +0 -21
  482. package/lib/lib.es2021.full.d.ts +0 -22
  483. package/lib/lib.es2021.intl.d.ts +0 -164
  484. package/lib/lib.es2021.promise.d.ts +0 -46
  485. package/lib/lib.es2021.string.d.ts +0 -31
  486. package/lib/lib.es2021.weakref.d.ts +0 -76
  487. package/lib/lib.es2022.array.d.ts +0 -119
  488. package/lib/lib.es2022.d.ts +0 -23
  489. package/lib/lib.es2022.error.d.ts +0 -73
  490. package/lib/lib.es2022.full.d.ts +0 -22
  491. package/lib/lib.es2022.intl.d.ts +0 -143
  492. package/lib/lib.es2022.object.d.ts +0 -24
  493. package/lib/lib.es2022.regexp.d.ts +0 -37
  494. package/lib/lib.es2022.string.d.ts +0 -23
  495. package/lib/lib.es2023.array.d.ts +0 -922
  496. package/lib/lib.es2023.collection.d.ts +0 -19
  497. package/lib/lib.es2023.d.ts +0 -20
  498. package/lib/lib.es2023.full.d.ts +0 -22
  499. package/lib/lib.es2023.intl.d.ts +0 -62
  500. package/lib/lib.es2024.arraybuffer.d.ts +0 -63
  501. package/lib/lib.es2024.collection.d.ts +0 -27
  502. package/lib/lib.es2024.d.ts +0 -24
  503. package/lib/lib.es2024.full.d.ts +0 -22
  504. package/lib/lib.es2024.object.d.ts +0 -27
  505. package/lib/lib.es2024.promise.d.ts +0 -33
  506. package/lib/lib.es2024.regexp.d.ts +0 -23
  507. package/lib/lib.es2024.sharedmemory.d.ts +0 -66
  508. package/lib/lib.es2024.string.d.ts +0 -27
  509. package/lib/lib.es2025.collection.d.ts +0 -94
  510. package/lib/lib.es2025.d.ts +0 -23
  511. package/lib/lib.es2025.float16.d.ts +0 -443
  512. package/lib/lib.es2025.full.d.ts +0 -22
  513. package/lib/lib.es2025.intl.d.ts +0 -200
  514. package/lib/lib.es2025.iterator.d.ts +0 -146
  515. package/lib/lib.es2025.promise.d.ts +0 -32
  516. package/lib/lib.es2025.regexp.d.ts +0 -30
  517. package/lib/lib.es5.d.ts +0 -4599
  518. package/lib/lib.es6.d.ts +0 -21
  519. package/lib/lib.esnext.array.d.ts +0 -33
  520. package/lib/lib.esnext.collection.d.ts +0 -47
  521. package/lib/lib.esnext.d.ts +0 -27
  522. package/lib/lib.esnext.date.d.ts +0 -21
  523. package/lib/lib.esnext.decorators.d.ts +0 -26
  524. package/lib/lib.esnext.disposable.d.ts +0 -191
  525. package/lib/lib.esnext.error.d.ts +0 -22
  526. package/lib/lib.esnext.full.d.ts +0 -22
  527. package/lib/lib.esnext.intl.d.ts +0 -107
  528. package/lib/lib.esnext.sharedmemory.d.ts +0 -23
  529. package/lib/lib.esnext.temporal.d.ts +0 -485
  530. package/lib/lib.esnext.typedarrays.d.ts +0 -90
  531. package/lib/lib.scripthost.d.ts +0 -320
  532. package/lib/lib.webworker.asynciterable.d.ts +0 -18
  533. package/lib/lib.webworker.d.ts +0 -15606
  534. package/lib/lib.webworker.importscripts.d.ts +0 -21
  535. package/lib/lib.webworker.iterable.d.ts +0 -18
  536. package/lib/pl/diagnosticMessages.generated.json +0 -2129
  537. package/lib/pt-br/diagnosticMessages.generated.json +0 -2129
  538. package/lib/ru/diagnosticMessages.generated.json +0 -2125
  539. package/lib/tr/diagnosticMessages.generated.json +0 -2129
  540. package/lib/tsserver.js +0 -8
  541. package/lib/tsserverlibrary.d.ts +0 -17
  542. package/lib/tsserverlibrary.js +0 -21
  543. package/lib/typesMap.json +0 -497
  544. package/lib/typescript.d.ts +0 -11448
  545. package/lib/typescript.js +0 -201039
  546. package/lib/typingsInstaller.js +0 -8
  547. package/lib/watchGuard.js +0 -53
  548. package/lib/zh-cn/diagnosticMessages.generated.json +0 -2129
  549. package/lib/zh-tw/diagnosticMessages.generated.json +0 -2125
  550. /package/{LICENSE.txt → LICENSE} +0 -0
@@ -0,0 +1,114 @@
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
+ /**
13
+ * SyncRpcChannel – drop-in replacement for the native libsyncrpc class.
14
+ *
15
+ * API surface intentionally matches the original:
16
+ * - constructor(exe, args)
17
+ * - requestSync(method, payload): string
18
+ * - requestBinarySync(method, payload): Uint8Array
19
+ * - registerCallback(name, cb)
20
+ * - close()
21
+ *
22
+ * The protocol is unversioned; both sides (this JS channel and the Go
23
+ * child process) must be built from the same tree.
24
+ *
25
+ * This class is **not** thread-safe. All calls must originate from a
26
+ * single thread — do not share an instance across worker threads.
27
+ */
28
+ export declare class SyncRpcChannel {
29
+ private child;
30
+ private readFd;
31
+ private writeFd;
32
+ private pipeFd;
33
+ private callbacks;
34
+ private methodBufCache;
35
+ private readonly collectTiming;
36
+ lastBytesSent: number;
37
+ lastBytesReceived: number;
38
+ private _msgType;
39
+ private _msgName;
40
+ private _msgPayload;
41
+ private headerBuf;
42
+ private readBuf;
43
+ private readBufPos;
44
+ private readBufLen;
45
+ private writeBuf;
46
+ constructor(exe: string, args: string[], collectTiming?: boolean);
47
+ /**
48
+ * Send a request and synchronously wait for the response (string).
49
+ * Handles Call (callback) messages from the child inline.
50
+ */
51
+ requestSync(method: string, payload: string): string;
52
+ /**
53
+ * Send a request and synchronously wait for the response (binary).
54
+ * Handles Call (callback) messages from the child inline.
55
+ */
56
+ requestBinarySync(method: string, payload: Uint8Array): Uint8Array;
57
+ /** Register a string→string callback that the child may invoke. */
58
+ registerCallback(name: string, callback: (name: string, payload: string) => string): void;
59
+ /** Kill the child process and release resources. */
60
+ close(): void;
61
+ private ensureOpen;
62
+ private getMethodBuf;
63
+ private requestBytesSync;
64
+ /**
65
+ * Handle an incoming MSG_CALL from the child process.
66
+ *
67
+ * After sending the error response back to the child, this method
68
+ * intentionally re-throws to abort the caller's request loop.
69
+ * A failed callback is treated as unrecoverable to match the
70
+ * behavior of the native libsyncrpc addon.
71
+ */
72
+ private handleCall;
73
+ /**
74
+ * Write a complete [type, name, payload] tuple in as few writeSync
75
+ * calls as possible. For messages that fit in the pre-allocated
76
+ * write buffer (64 KB), everything is assembled and sent in a single
77
+ * syscall. Larger messages use two syscalls: one for the header
78
+ * portion and one for the payload data.
79
+ */
80
+ private writeTuple;
81
+ /**
82
+ * Read a [type, name, payload] tuple into instance fields
83
+ * (_msgType, _msgName, _msgPayload) to avoid allocating a
84
+ * short-lived 3-element array on every call.
85
+ */
86
+ private readTuple;
87
+ /**
88
+ * Read a MessagePack bin field.
89
+ */
90
+ private readBin;
91
+ /** Build an EOF error with the child's exit code/signal if available. */
92
+ private eofError;
93
+ /** Read a single byte from the buffered read-ahead. */
94
+ private readByte;
95
+ private readExact;
96
+ /**
97
+ * Fill the internal read-ahead buffer from the pipe fd.
98
+ * Retries on EAGAIN for non-blocking mode compatibility.
99
+ */
100
+ private fillReadBuffer;
101
+ /**
102
+ * Synchronously read exactly `length` bytes into `buffer`.
103
+ * Serves from the internal read-ahead buffer first; for large reads
104
+ * that exceed the buffer size, reads directly from the fd to avoid
105
+ * an extra copy.
106
+ */
107
+ private readExactInto;
108
+ /**
109
+ * Synchronously write all bytes from `data` (up to `length`).
110
+ * Retries on EAGAIN.
111
+ */
112
+ private writeAllBuf;
113
+ }
114
+ //# sourceMappingURL=syncChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncChannel.d.ts","sourceRoot":"","sources":["../../src/api/syncChannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8EH;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAgE;IAEjF,OAAO,CAAC,cAAc,CAA6B;IAMnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAKxC,aAAa,SAAK;IAClB,iBAAiB,SAAK;IAEtB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,SAAS,CAAyB;IAG1C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,UAAQ;IAmF9D;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAMpD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU;IAKlE,mEAAmE;IACnE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAIzF,oDAAoD;IACpD,KAAK,IAAI,IAAI;IAsBb,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;IA8CxB;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAiClB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA0DlB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IACH,OAAO,CAAC,OAAO;IA0Bf,yEAAyE;IACzE,OAAO,CAAC,QAAQ;IAOhB,uDAAuD;IACvD,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAiBjB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAsBtB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAoCrB;;;OAGG;IACH,OAAO,CAAC,WAAW;CAiBtB"}
@@ -0,0 +1,508 @@
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
+ // When true, the payload byte lengths of each request/response are recorded
70
+ // and exposed via the `last*` fields below. These count only the JSON/binary
71
+ // payload bytes, not the MessagePack tuple framing (message type, method
72
+ // name, and length headers).
73
+ collectTiming;
74
+ // Per-request payload byte measurements for the most recently completed
75
+ // request. Only meaningful when `collectTiming` is true. Callers read these
76
+ // immediately after a request returns (the channel is strictly serial).
77
+ lastBytesSent = 0;
78
+ lastBytesReceived = 0;
79
+ _msgType = 0;
80
+ _msgName = EMPTY_BUF;
81
+ _msgPayload = EMPTY_BUF;
82
+ headerBuf = Buffer.allocUnsafe(4);
83
+ // Read-ahead buffer – reduces readSync syscalls by buffering data from the pipe.
84
+ readBuf = Buffer.allocUnsafe(65536);
85
+ readBufPos = 0;
86
+ readBufLen = 0;
87
+ // Write buffer – assembles entire tuples for a single writeSync.
88
+ writeBuf = Buffer.allocUnsafe(65536);
89
+ constructor(exe, args, collectTiming = false) {
90
+ this.collectTiming = collectTiming;
91
+ const isWindows = process.platform === "win32";
92
+ if (isWindows) {
93
+ // On Windows, libuv pipe handles don't expose POSIX fds, so
94
+ // readSync/writeSync can't be used on stdio pipes. Instead,
95
+ // we create a Windows named pipe path, pass it to the child
96
+ // via --pipe, and open it with fs.openSync which returns a
97
+ // real C-runtime fd backed by a proper HANDLE.
98
+ const pipePath = `\\\\.\\pipe\\tsgo-sync-${process.pid}-${Date.now()}`;
99
+ this.child = spawn(exe, [...args, "--pipe", pipePath], {
100
+ stdio: ["ignore", "ignore", "inherit"],
101
+ });
102
+ // Retry openSync until the child creates the named pipe.
103
+ let fd;
104
+ for (let i = 0; i < 500; i++) {
105
+ try {
106
+ fd = openSync(pipePath, "r+");
107
+ break;
108
+ }
109
+ catch {
110
+ if (this.child.exitCode !== null) {
111
+ throw new Error(`Child process exited with code ${this.child.exitCode} before pipe was ready`);
112
+ }
113
+ Atomics.wait(sleepBuf, 0, 0, 10);
114
+ }
115
+ }
116
+ if (fd === undefined) {
117
+ this.child.kill();
118
+ throw new Error("SyncRpcChannel: timed out connecting to named pipe");
119
+ }
120
+ this.readFd = fd;
121
+ this.writeFd = fd;
122
+ this.pipeFd = fd;
123
+ }
124
+ else {
125
+ // POSIX: use stdio pipe file descriptors directly.
126
+ this.child = spawn(exe, args, {
127
+ stdio: ["pipe", "pipe", "inherit"],
128
+ });
129
+ const stdout = this.child.stdout;
130
+ const stdin = this.child.stdin;
131
+ this.readFd = stdout._handle.fd;
132
+ this.writeFd = stdin._handle.fd;
133
+ if (typeof this.readFd !== "number" || this.readFd < 0 || typeof this.writeFd !== "number" || this.writeFd < 0) {
134
+ stdout.destroy();
135
+ stdin.destroy();
136
+ this.child.kill();
137
+ throw new Error("SyncRpcChannel: could not obtain pipe file descriptors.");
138
+ }
139
+ // Set the pipe handles to blocking mode. Under node --test's
140
+ // process isolation, pipes are created in non-blocking mode
141
+ // (for the IPC channel). This causes readSync/writeSync to get
142
+ // EAGAIN, requiring costly 1ms sleeps per retry. Setting
143
+ // blocking mode ensures readSync blocks properly until data
144
+ // arrives, matching the behavior of the native libsyncrpc.
145
+ stdout._handle.setBlocking?.(true);
146
+ stdin._handle.setBlocking?.(true);
147
+ // Prevent Node's event-loop from reading stdout or keeping the
148
+ // process alive – we will use fs.readSync exclusively.
149
+ stdout.pause();
150
+ stdout.unref();
151
+ stdin.unref();
152
+ }
153
+ // Track for auto-cleanup on process exit.
154
+ liveChildren.add(this.child);
155
+ this.child.unref();
156
+ }
157
+ // ── Public API ──────────────────────────────────────────────────
158
+ /**
159
+ * Send a request and synchronously wait for the response (string).
160
+ * Handles Call (callback) messages from the child inline.
161
+ */
162
+ requestSync(method, payload) {
163
+ this.ensureOpen();
164
+ const result = this.requestBytesSync(method, payload);
165
+ return result.toString("utf-8");
166
+ }
167
+ /**
168
+ * Send a request and synchronously wait for the response (binary).
169
+ * Handles Call (callback) messages from the child inline.
170
+ */
171
+ requestBinarySync(method, payload) {
172
+ this.ensureOpen();
173
+ return this.requestBytesSync(method, payload);
174
+ }
175
+ /** Register a string→string callback that the child may invoke. */
176
+ registerCallback(name, callback) {
177
+ this.callbacks.set(name, callback);
178
+ }
179
+ /** Kill the child process and release resources. */
180
+ close() {
181
+ try {
182
+ liveChildren.delete(this.child);
183
+ if (this.pipeFd !== undefined) {
184
+ closeSync(this.pipeFd);
185
+ this.pipeFd = undefined;
186
+ }
187
+ // Destroy the stdio streams so that their pipe handles are closed
188
+ // and no longer prevent the event loop from draining.
189
+ this.child.stdout?.destroy();
190
+ this.child.stdin?.destroy();
191
+ this.child.kill();
192
+ this.readFd = -1;
193
+ this.writeFd = -1;
194
+ }
195
+ catch {
196
+ // swallow – process may already be dead
197
+ }
198
+ }
199
+ // ── Core request loop ───────────────────────────────────────────
200
+ ensureOpen() {
201
+ if (this.readFd < 0) {
202
+ throw new Error("SyncRpcChannel is closed");
203
+ }
204
+ }
205
+ getMethodBuf(method) {
206
+ let buf = this.methodBufCache.get(method);
207
+ if (buf === undefined) {
208
+ buf = Buffer.from(method, "utf-8");
209
+ this.methodBufCache.set(method, buf);
210
+ }
211
+ return buf;
212
+ }
213
+ requestBytesSync(method, payload) {
214
+ const methodBuf = this.getMethodBuf(method);
215
+ if (this.collectTiming) {
216
+ this.lastBytesSent = typeof payload === "string"
217
+ ? Buffer.byteLength(payload, "utf-8")
218
+ : payload.length;
219
+ this.lastBytesReceived = 0;
220
+ }
221
+ this.writeTuple(MSG_REQUEST, methodBuf, payload);
222
+ for (;;) {
223
+ this.readTuple();
224
+ switch (this._msgType) {
225
+ case MSG_RESPONSE: {
226
+ // Compare raw bytes instead of decoding to string.
227
+ if (!methodBuf.equals(this._msgName)) {
228
+ throw new Error(`name mismatch for response: expected \`${method}\`, got \`${this._msgName.toString("utf-8")}\``);
229
+ }
230
+ if (this.collectTiming) {
231
+ this.lastBytesReceived = this._msgPayload.length;
232
+ }
233
+ return this._msgPayload;
234
+ }
235
+ case MSG_ERROR: {
236
+ if (methodBuf.equals(this._msgName)) {
237
+ throw new Error(this._msgPayload.toString("utf-8"));
238
+ }
239
+ throw new Error(`name mismatch for response: expected \`${method}\`, got \`${this._msgName.toString("utf-8")}\``);
240
+ }
241
+ case MSG_CALL: {
242
+ this.handleCall(this._msgName.toString("utf-8"), this._msgPayload);
243
+ break;
244
+ }
245
+ default:
246
+ throw new Error(`Invalid message type from child: ${this._msgType}`);
247
+ }
248
+ }
249
+ }
250
+ // ── Callback handling ───────────────────────────────────────────
251
+ /**
252
+ * Handle an incoming MSG_CALL from the child process.
253
+ *
254
+ * After sending the error response back to the child, this method
255
+ * intentionally re-throws to abort the caller's request loop.
256
+ * A failed callback is treated as unrecoverable to match the
257
+ * behavior of the native libsyncrpc addon.
258
+ */
259
+ handleCall(name, payload) {
260
+ const cb = this.callbacks.get(name);
261
+ if (!cb) {
262
+ const errMsg = `unknown callback: \`${name}\`. Please make sure to register it on the JavaScript side before invoking it.`;
263
+ this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, "utf-8"), Buffer.from(errMsg, "utf-8"));
264
+ throw new Error(`no callback named \`${name}\` found`);
265
+ }
266
+ try {
267
+ const result = cb(name, payload.toString("utf-8"));
268
+ this.writeTuple(MSG_CALL_RESPONSE, Buffer.from(name, "utf-8"), Buffer.from(result, "utf-8"));
269
+ }
270
+ catch (e) {
271
+ const errMsg = String(e instanceof Error ? e.message : e).trim();
272
+ this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, "utf-8"), Buffer.from(errMsg, "utf-8"));
273
+ throw new Error(`Error calling callback \`${name}\`: ${errMsg}`);
274
+ }
275
+ }
276
+ // ── MessagePack tuple write ─────────────────────────────────────
277
+ /**
278
+ * Write a complete [type, name, payload] tuple in as few writeSync
279
+ * calls as possible. For messages that fit in the pre-allocated
280
+ * write buffer (64 KB), everything is assembled and sent in a single
281
+ * syscall. Larger messages use two syscalls: one for the header
282
+ * portion and one for the payload data.
283
+ */
284
+ writeTuple(type, name, payload) {
285
+ const nameLen = name.length;
286
+ const payloadIsString = typeof payload === "string";
287
+ const payloadLen = payloadIsString ? Buffer.byteLength(payload, "utf-8") : payload.length;
288
+ const nameHdrSize = binHeaderSize(nameLen);
289
+ const payloadHdrSize = binHeaderSize(payloadLen);
290
+ const headerSize = 2 + nameHdrSize + nameLen + payloadHdrSize;
291
+ const totalSize = headerSize + payloadLen;
292
+ if (totalSize <= this.writeBuf.length) {
293
+ // Small message: assemble into write buffer, one syscall
294
+ let off = 0;
295
+ this.writeBuf[off++] = MSGPACK_FIXARRAY3;
296
+ this.writeBuf[off++] = type;
297
+ off = writeBinHeader(this.writeBuf, off, nameLen);
298
+ name.copy(this.writeBuf, off);
299
+ off += nameLen;
300
+ off = writeBinHeader(this.writeBuf, off, payloadLen);
301
+ if (payloadLen > 0) {
302
+ if (payloadIsString) {
303
+ // Encode string directly into write buffer — avoids
304
+ // Buffer.from(string, 'utf-8') allocation entirely.
305
+ this.writeBuf.write(payload, off, payloadLen, "utf-8");
306
+ }
307
+ else if (payload instanceof Buffer) {
308
+ payload.copy(this.writeBuf, off);
309
+ }
310
+ else {
311
+ this.writeBuf.set(payload, off);
312
+ }
313
+ }
314
+ this.writeAllBuf(this.writeBuf, totalSize);
315
+ }
316
+ else {
317
+ // Large message: header + name in one call, payload in another
318
+ let off = 0;
319
+ this.writeBuf[off++] = MSGPACK_FIXARRAY3;
320
+ this.writeBuf[off++] = type;
321
+ off = writeBinHeader(this.writeBuf, off, nameLen);
322
+ name.copy(this.writeBuf, off);
323
+ off += nameLen;
324
+ off = writeBinHeader(this.writeBuf, off, payloadLen);
325
+ this.writeAllBuf(this.writeBuf, off);
326
+ if (payloadLen > 0) {
327
+ if (payloadIsString) {
328
+ // Large string: must allocate (can't stream-encode
329
+ // across multiple writeSync calls).
330
+ this.writeAllBuf(Buffer.from(payload, "utf-8"));
331
+ }
332
+ else {
333
+ this.writeAllBuf(payload);
334
+ }
335
+ }
336
+ }
337
+ }
338
+ // ── MessagePack tuple read ──────────────────────────────────────
339
+ /**
340
+ * Read a [type, name, payload] tuple into instance fields
341
+ * (_msgType, _msgName, _msgPayload) to avoid allocating a
342
+ * short-lived 3-element array on every call.
343
+ */
344
+ readTuple() {
345
+ // Fixed 3-element array marker
346
+ const marker = this.readByte();
347
+ if (marker !== MSGPACK_FIXARRAY3) {
348
+ throw new Error(`Expected fixed 3-element array (0x93), received: 0x${marker.toString(16)}`);
349
+ }
350
+ // Message type – positive fixint or uint8
351
+ const tb = this.readByte();
352
+ if (tb <= 0x7f) {
353
+ this._msgType = tb;
354
+ }
355
+ else if (tb === MSGPACK_UINT8) {
356
+ this._msgType = this.readByte();
357
+ }
358
+ else {
359
+ throw new Error(`Expected positive fixint or uint8 marker, received: 0x${tb.toString(16)}`);
360
+ }
361
+ this._msgName = this.readBin();
362
+ this._msgPayload = this.readBin();
363
+ }
364
+ /**
365
+ * Read a MessagePack bin field.
366
+ */
367
+ readBin() {
368
+ const marker = this.readByte();
369
+ let size;
370
+ switch (marker) {
371
+ case MSGPACK_BIN8:
372
+ size = this.readByte();
373
+ break;
374
+ case MSGPACK_BIN16:
375
+ this.readExactInto(this.headerBuf, 2);
376
+ size = (this.headerBuf[0] << 8) | this.headerBuf[1];
377
+ break;
378
+ case MSGPACK_BIN32:
379
+ this.readExactInto(this.headerBuf, 4);
380
+ size = this.headerBuf.readUInt32BE(0);
381
+ break;
382
+ default:
383
+ throw new Error(`Expected binary data (0xc4-0xc6), received: 0x${marker.toString(16)}`);
384
+ }
385
+ if (size === 0)
386
+ return EMPTY_BUF;
387
+ return this.readExact(size);
388
+ }
389
+ // ── Low-level synchronous I/O ───────────────────────────────────
390
+ /** Build an EOF error with the child's exit code/signal if available. */
391
+ eofError() {
392
+ const code = this.child.exitCode;
393
+ const signal = this.child.signalCode;
394
+ const detail = signal ? `killed by signal ${signal}` : code !== null ? `exited with code ${code}` : "unknown reason";
395
+ return new Error(`Unexpected EOF while reading from child process (${detail})`);
396
+ }
397
+ /** Read a single byte from the buffered read-ahead. */
398
+ readByte() {
399
+ if (this.readBufPos >= this.readBufLen) {
400
+ this.fillReadBuffer();
401
+ }
402
+ return this.readBuf[this.readBufPos++];
403
+ }
404
+ readExact(length) {
405
+ // Use allocUnsafeSlow (not allocUnsafe) so the buffer has its own
406
+ // backing ArrayBuffer at byteOffset 0. This is critical because
407
+ // callers such as RemoteSourceFile create DataView/Uint8Array over
408
+ // buffer.buffer with absolute offsets. Buffer.allocUnsafe returns
409
+ // slices of a shared pool whose byteOffset is non-zero, corrupting
410
+ // those downstream views.
411
+ //
412
+ // allocUnsafeSlow (vs alloc) skips zero-fill, which matters for
413
+ // large transfers — e.g. checker.ts at ~57 MB saves ~5 ms of
414
+ // unnecessary memset. The buffer is immediately filled by
415
+ // readExactInto so uninitialized memory is never exposed.
416
+ const buf = Buffer.allocUnsafeSlow(length);
417
+ this.readExactInto(buf, length);
418
+ return buf;
419
+ }
420
+ /**
421
+ * Fill the internal read-ahead buffer from the pipe fd.
422
+ * Retries on EAGAIN for non-blocking mode compatibility.
423
+ */
424
+ fillReadBuffer() {
425
+ this.readBufPos = 0;
426
+ this.readBufLen = 0;
427
+ for (;;) {
428
+ try {
429
+ const n = readSync(this.readFd, this.readBuf, 0, this.readBuf.length, null);
430
+ if (n === 0) {
431
+ throw this.eofError();
432
+ }
433
+ this.readBufLen = n;
434
+ return;
435
+ }
436
+ catch (e) {
437
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
438
+ Atomics.wait(sleepBuf, 0, 0, 1);
439
+ continue;
440
+ }
441
+ throw e;
442
+ }
443
+ }
444
+ }
445
+ /**
446
+ * Synchronously read exactly `length` bytes into `buffer`.
447
+ * Serves from the internal read-ahead buffer first; for large reads
448
+ * that exceed the buffer size, reads directly from the fd to avoid
449
+ * an extra copy.
450
+ */
451
+ readExactInto(buffer, length) {
452
+ let pos = 0;
453
+ while (pos < length) {
454
+ const avail = this.readBufLen - this.readBufPos;
455
+ if (avail > 0) {
456
+ // Serve from read-ahead buffer
457
+ const toCopy = Math.min(avail, length - pos);
458
+ this.readBuf.copy(buffer, pos, this.readBufPos, this.readBufPos + toCopy);
459
+ this.readBufPos += toCopy;
460
+ pos += toCopy;
461
+ }
462
+ else if (length - pos >= this.readBuf.length) {
463
+ // Remaining data is larger than read buffer; read directly
464
+ // into the target to avoid unnecessary copying.
465
+ try {
466
+ const n = readSync(this.readFd, buffer, pos, length - pos, null);
467
+ if (n === 0) {
468
+ throw this.eofError();
469
+ }
470
+ pos += n;
471
+ }
472
+ catch (e) {
473
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
474
+ Atomics.wait(sleepBuf, 0, 0, 1);
475
+ continue;
476
+ }
477
+ throw e;
478
+ }
479
+ }
480
+ else {
481
+ // Refill the read-ahead buffer
482
+ this.fillReadBuffer();
483
+ }
484
+ }
485
+ }
486
+ /**
487
+ * Synchronously write all bytes from `data` (up to `length`).
488
+ * Retries on EAGAIN.
489
+ */
490
+ writeAllBuf(data, length) {
491
+ const total = length ?? data.length;
492
+ let pos = 0;
493
+ while (pos < total) {
494
+ try {
495
+ const n = writeSync(this.writeFd, data, pos, total - pos);
496
+ pos += n;
497
+ }
498
+ catch (e) {
499
+ if (e instanceof Error && ("code" in e) && (e.code === "EAGAIN" || e.code === "EWOULDBLOCK")) {
500
+ Atomics.wait(sleepBuf, 0, 0, 1);
501
+ continue;
502
+ }
503
+ throw e;
504
+ }
505
+ }
506
+ }
507
+ }
508
+ //# 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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"}