@ricsam/isolate 0.0.1 → 0.1.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 (299) hide show
  1. package/README.md +243 -34
  2. package/dist/cjs/bridge/diagnostics.cjs +58 -0
  3. package/dist/cjs/bridge/diagnostics.cjs.map +10 -0
  4. package/dist/cjs/bridge/legacy-adapters.cjs +242 -0
  5. package/dist/cjs/bridge/legacy-adapters.cjs.map +10 -0
  6. package/dist/cjs/bridge/request-context.cjs +59 -0
  7. package/dist/cjs/bridge/request-context.cjs.map +10 -0
  8. package/dist/cjs/bridge/runtime-bindings.cjs +367 -0
  9. package/dist/cjs/bridge/runtime-bindings.cjs.map +10 -0
  10. package/dist/cjs/browser/browser-runtime.cjs +157 -0
  11. package/dist/cjs/browser/browser-runtime.cjs.map +10 -0
  12. package/dist/cjs/daemon.cjs +91 -0
  13. package/dist/cjs/daemon.cjs.map +10 -0
  14. package/dist/cjs/files/index.cjs +140 -0
  15. package/dist/cjs/files/index.cjs.map +10 -0
  16. package/dist/cjs/host/create-isolate-host.cjs +235 -0
  17. package/dist/cjs/host/create-isolate-host.cjs.map +10 -0
  18. package/dist/cjs/host/index.cjs +47 -0
  19. package/dist/cjs/host/index.cjs.map +10 -0
  20. package/dist/cjs/index.cjs +55 -0
  21. package/dist/cjs/index.cjs.map +10 -0
  22. package/dist/cjs/internal/client/connection.cjs +1919 -0
  23. package/dist/cjs/internal/client/connection.cjs.map +10 -0
  24. package/dist/cjs/internal/client/index.cjs +48 -0
  25. package/dist/cjs/internal/client/index.cjs.map +10 -0
  26. package/dist/cjs/internal/client/types.cjs +30 -0
  27. package/dist/cjs/internal/client/types.cjs.map +9 -0
  28. package/dist/cjs/internal/console/index.cjs +506 -0
  29. package/dist/cjs/internal/console/index.cjs.map +10 -0
  30. package/dist/cjs/internal/console/utils.cjs +70 -0
  31. package/dist/cjs/internal/console/utils.cjs.map +10 -0
  32. package/dist/cjs/internal/core/index.cjs +2745 -0
  33. package/dist/cjs/internal/core/index.cjs.map +10 -0
  34. package/dist/cjs/internal/crypto/index.cjs +470 -0
  35. package/dist/cjs/internal/crypto/index.cjs.map +10 -0
  36. package/dist/cjs/internal/daemon/callback-fs-handler.cjs +355 -0
  37. package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +10 -0
  38. package/dist/cjs/internal/daemon/connection.cjs +1952 -0
  39. package/dist/cjs/internal/daemon/connection.cjs.map +10 -0
  40. package/dist/cjs/internal/daemon/daemon.cjs +98 -0
  41. package/dist/cjs/internal/daemon/daemon.cjs.map +10 -0
  42. package/dist/cjs/internal/daemon/index.cjs +145 -0
  43. package/dist/cjs/internal/daemon/index.cjs.map +10 -0
  44. package/dist/cjs/internal/daemon/runtime-pool.cjs +106 -0
  45. package/dist/cjs/internal/daemon/runtime-pool.cjs.map +10 -0
  46. package/dist/cjs/internal/daemon/types.cjs +30 -0
  47. package/dist/cjs/internal/daemon/types.cjs.map +9 -0
  48. package/dist/cjs/internal/encoding/index.cjs +419 -0
  49. package/dist/cjs/internal/encoding/index.cjs.map +10 -0
  50. package/dist/cjs/internal/fetch/consistency/origins.cjs +598 -0
  51. package/dist/cjs/internal/fetch/consistency/origins.cjs.map +10 -0
  52. package/dist/cjs/internal/fetch/index.cjs +2640 -0
  53. package/dist/cjs/internal/fetch/index.cjs.map +10 -0
  54. package/dist/cjs/internal/fetch/stream-state.cjs +256 -0
  55. package/dist/cjs/internal/fetch/stream-state.cjs.map +10 -0
  56. package/dist/cjs/internal/fs/index.cjs +847 -0
  57. package/dist/cjs/internal/fs/index.cjs.map +10 -0
  58. package/dist/cjs/internal/fs/node-adapter.cjs +254 -0
  59. package/dist/cjs/internal/fs/node-adapter.cjs.map +10 -0
  60. package/dist/cjs/internal/module-loader/bundle.cjs +482 -0
  61. package/dist/cjs/internal/module-loader/bundle.cjs.map +10 -0
  62. package/dist/cjs/internal/module-loader/index.cjs +240 -0
  63. package/dist/cjs/internal/module-loader/index.cjs.map +10 -0
  64. package/dist/cjs/internal/module-loader/mappings.cjs +120 -0
  65. package/dist/cjs/internal/module-loader/mappings.cjs.map +10 -0
  66. package/dist/cjs/internal/module-loader/resolve.cjs +177 -0
  67. package/dist/cjs/internal/module-loader/resolve.cjs.map +10 -0
  68. package/dist/cjs/internal/module-loader/strip-types.cjs +236 -0
  69. package/dist/cjs/internal/module-loader/strip-types.cjs.map +10 -0
  70. package/dist/cjs/internal/path/index.cjs +503 -0
  71. package/dist/cjs/internal/path/index.cjs.map +10 -0
  72. package/dist/cjs/internal/playwright/client.cjs +49 -0
  73. package/dist/cjs/internal/playwright/client.cjs.map +10 -0
  74. package/dist/cjs/internal/playwright/handler.cjs +1416 -0
  75. package/dist/cjs/internal/playwright/handler.cjs.map +10 -0
  76. package/dist/cjs/internal/playwright/index.cjs +1289 -0
  77. package/dist/cjs/internal/playwright/index.cjs.map +10 -0
  78. package/dist/cjs/internal/playwright/types.cjs +47 -0
  79. package/dist/cjs/internal/playwright/types.cjs.map +10 -0
  80. package/dist/cjs/internal/protocol/codec.cjs +510 -0
  81. package/dist/cjs/internal/protocol/codec.cjs.map +10 -0
  82. package/dist/cjs/internal/protocol/framing.cjs +141 -0
  83. package/dist/cjs/internal/protocol/framing.cjs.map +10 -0
  84. package/dist/cjs/internal/protocol/index.cjs +110 -0
  85. package/dist/cjs/internal/protocol/index.cjs.map +10 -0
  86. package/dist/cjs/internal/protocol/marshalValue.cjs +518 -0
  87. package/dist/cjs/internal/protocol/marshalValue.cjs.map +10 -0
  88. package/dist/cjs/internal/protocol/serialization.cjs +109 -0
  89. package/dist/cjs/internal/protocol/serialization.cjs.map +10 -0
  90. package/dist/cjs/internal/protocol/types.cjs +181 -0
  91. package/dist/cjs/internal/protocol/types.cjs.map +10 -0
  92. package/dist/cjs/internal/runtime/index.cjs +1235 -0
  93. package/dist/cjs/internal/runtime/index.cjs.map +10 -0
  94. package/dist/cjs/internal/server/index.cjs +223 -0
  95. package/dist/cjs/internal/server/index.cjs.map +10 -0
  96. package/dist/cjs/internal/test-environment/index.cjs +1415 -0
  97. package/dist/cjs/internal/test-environment/index.cjs.map +10 -0
  98. package/dist/cjs/internal/timers/index.cjs +200 -0
  99. package/dist/cjs/internal/timers/index.cjs.map +10 -0
  100. package/dist/cjs/internal/transform/index.cjs +361 -0
  101. package/dist/cjs/internal/transform/index.cjs.map +10 -0
  102. package/dist/cjs/internal/typecheck/index.cjs +60 -0
  103. package/dist/cjs/internal/typecheck/index.cjs.map +10 -0
  104. package/dist/cjs/internal/typecheck/isolate-types.cjs +2614 -0
  105. package/dist/cjs/internal/typecheck/isolate-types.cjs.map +10 -0
  106. package/dist/cjs/internal/typecheck/typecheck.cjs +131 -0
  107. package/dist/cjs/internal/typecheck/typecheck.cjs.map +10 -0
  108. package/dist/cjs/modules/index.cjs +160 -0
  109. package/dist/cjs/modules/index.cjs.map +10 -0
  110. package/dist/cjs/package.json +5 -0
  111. package/dist/cjs/runtime/script-runtime.cjs +97 -0
  112. package/dist/cjs/runtime/script-runtime.cjs.map +10 -0
  113. package/dist/cjs/server/app-server.cjs +158 -0
  114. package/dist/cjs/server/app-server.cjs.map +10 -0
  115. package/dist/cjs/testing/integration-helpers.cjs +127 -0
  116. package/dist/cjs/testing/integration-helpers.cjs.map +10 -0
  117. package/dist/cjs/typecheck/index.cjs +96 -0
  118. package/dist/cjs/typecheck/index.cjs.map +10 -0
  119. package/dist/cjs/types.cjs +30 -0
  120. package/dist/cjs/types.cjs.map +9 -0
  121. package/dist/mjs/bridge/diagnostics.mjs +18 -0
  122. package/dist/mjs/bridge/diagnostics.mjs.map +10 -0
  123. package/dist/mjs/bridge/legacy-adapters.mjs +178 -0
  124. package/dist/mjs/bridge/legacy-adapters.mjs.map +10 -0
  125. package/dist/mjs/bridge/request-context.mjs +19 -0
  126. package/dist/mjs/bridge/request-context.mjs.map +10 -0
  127. package/dist/mjs/bridge/runtime-bindings.mjs +303 -0
  128. package/dist/mjs/bridge/runtime-bindings.mjs.map +10 -0
  129. package/dist/mjs/browser/browser-runtime.mjs +93 -0
  130. package/dist/mjs/browser/browser-runtime.mjs.map +10 -0
  131. package/dist/mjs/daemon.mjs +91 -0
  132. package/dist/mjs/daemon.mjs.map +10 -0
  133. package/dist/mjs/files/index.mjs +76 -0
  134. package/dist/mjs/files/index.mjs.map +10 -0
  135. package/dist/mjs/host/create-isolate-host.mjs +171 -0
  136. package/dist/mjs/host/create-isolate-host.mjs.map +10 -0
  137. package/dist/mjs/host/index.mjs +7 -0
  138. package/dist/mjs/host/index.mjs.map +10 -0
  139. package/dist/mjs/index.mjs +15 -0
  140. package/dist/mjs/index.mjs.map +10 -0
  141. package/dist/mjs/internal/client/connection.mjs +1872 -0
  142. package/dist/mjs/internal/client/connection.mjs.map +10 -0
  143. package/dist/mjs/internal/client/index.mjs +8 -0
  144. package/dist/mjs/internal/client/index.mjs.map +10 -0
  145. package/dist/mjs/internal/client/types.mjs +2 -0
  146. package/dist/mjs/internal/client/types.mjs.map +9 -0
  147. package/dist/mjs/internal/console/index.mjs +442 -0
  148. package/dist/mjs/internal/console/index.mjs.map +10 -0
  149. package/dist/mjs/internal/console/utils.mjs +30 -0
  150. package/dist/mjs/internal/console/utils.mjs.map +10 -0
  151. package/dist/mjs/internal/core/index.mjs +2681 -0
  152. package/dist/mjs/internal/core/index.mjs.map +10 -0
  153. package/dist/mjs/internal/crypto/index.mjs +406 -0
  154. package/dist/mjs/internal/crypto/index.mjs.map +10 -0
  155. package/dist/mjs/internal/daemon/callback-fs-handler.mjs +315 -0
  156. package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +10 -0
  157. package/dist/mjs/internal/daemon/connection.mjs +1931 -0
  158. package/dist/mjs/internal/daemon/connection.mjs.map +10 -0
  159. package/dist/mjs/internal/daemon/daemon.mjs +98 -0
  160. package/dist/mjs/internal/daemon/daemon.mjs.map +10 -0
  161. package/dist/mjs/internal/daemon/index.mjs +105 -0
  162. package/dist/mjs/internal/daemon/index.mjs.map +10 -0
  163. package/dist/mjs/internal/daemon/runtime-pool.mjs +66 -0
  164. package/dist/mjs/internal/daemon/runtime-pool.mjs.map +10 -0
  165. package/dist/mjs/internal/daemon/types.mjs +2 -0
  166. package/dist/mjs/internal/daemon/types.mjs.map +9 -0
  167. package/dist/mjs/internal/encoding/index.mjs +379 -0
  168. package/dist/mjs/internal/encoding/index.mjs.map +10 -0
  169. package/dist/mjs/internal/fetch/consistency/origins.mjs +558 -0
  170. package/dist/mjs/internal/fetch/consistency/origins.mjs.map +10 -0
  171. package/dist/mjs/internal/fetch/index.mjs +2580 -0
  172. package/dist/mjs/internal/fetch/index.mjs.map +10 -0
  173. package/dist/mjs/internal/fetch/stream-state.mjs +216 -0
  174. package/dist/mjs/internal/fetch/stream-state.mjs.map +10 -0
  175. package/dist/mjs/internal/fs/index.mjs +783 -0
  176. package/dist/mjs/internal/fs/index.mjs.map +10 -0
  177. package/dist/mjs/internal/fs/node-adapter.mjs +190 -0
  178. package/dist/mjs/internal/fs/node-adapter.mjs.map +10 -0
  179. package/dist/mjs/internal/module-loader/bundle.mjs +418 -0
  180. package/dist/mjs/internal/module-loader/bundle.mjs.map +10 -0
  181. package/dist/mjs/internal/module-loader/index.mjs +185 -0
  182. package/dist/mjs/internal/module-loader/index.mjs.map +10 -0
  183. package/dist/mjs/internal/module-loader/mappings.mjs +80 -0
  184. package/dist/mjs/internal/module-loader/mappings.mjs.map +10 -0
  185. package/dist/mjs/internal/module-loader/resolve.mjs +113 -0
  186. package/dist/mjs/internal/module-loader/resolve.mjs.map +10 -0
  187. package/dist/mjs/internal/module-loader/strip-types.mjs +172 -0
  188. package/dist/mjs/internal/module-loader/strip-types.mjs.map +10 -0
  189. package/dist/mjs/internal/path/index.mjs +463 -0
  190. package/dist/mjs/internal/path/index.mjs.map +10 -0
  191. package/dist/mjs/internal/playwright/client.mjs +13 -0
  192. package/dist/mjs/internal/playwright/client.mjs.map +10 -0
  193. package/dist/mjs/internal/playwright/handler.mjs +1378 -0
  194. package/dist/mjs/internal/playwright/handler.mjs.map +10 -0
  195. package/dist/mjs/internal/playwright/index.mjs +1234 -0
  196. package/dist/mjs/internal/playwright/index.mjs.map +10 -0
  197. package/dist/mjs/internal/playwright/types.mjs +7 -0
  198. package/dist/mjs/internal/playwright/types.mjs.map +10 -0
  199. package/dist/mjs/internal/protocol/codec.mjs +470 -0
  200. package/dist/mjs/internal/protocol/codec.mjs.map +10 -0
  201. package/dist/mjs/internal/protocol/framing.mjs +101 -0
  202. package/dist/mjs/internal/protocol/framing.mjs.map +10 -0
  203. package/dist/mjs/internal/protocol/index.mjs +98 -0
  204. package/dist/mjs/internal/protocol/index.mjs.map +10 -0
  205. package/dist/mjs/internal/protocol/marshalValue.mjs +494 -0
  206. package/dist/mjs/internal/protocol/marshalValue.mjs.map +10 -0
  207. package/dist/mjs/internal/protocol/serialization.mjs +69 -0
  208. package/dist/mjs/internal/protocol/serialization.mjs.map +10 -0
  209. package/dist/mjs/internal/protocol/types.mjs +141 -0
  210. package/dist/mjs/internal/protocol/types.mjs.map +10 -0
  211. package/dist/mjs/internal/runtime/index.mjs +1198 -0
  212. package/dist/mjs/internal/runtime/index.mjs.map +10 -0
  213. package/dist/mjs/internal/server/index.mjs +183 -0
  214. package/dist/mjs/internal/server/index.mjs.map +10 -0
  215. package/dist/mjs/internal/test-environment/index.mjs +1351 -0
  216. package/dist/mjs/internal/test-environment/index.mjs.map +10 -0
  217. package/dist/mjs/internal/timers/index.mjs +136 -0
  218. package/dist/mjs/internal/timers/index.mjs.map +10 -0
  219. package/dist/mjs/internal/transform/index.mjs +321 -0
  220. package/dist/mjs/internal/transform/index.mjs.map +10 -0
  221. package/dist/mjs/internal/typecheck/index.mjs +35 -0
  222. package/dist/mjs/internal/typecheck/index.mjs.map +10 -0
  223. package/dist/mjs/internal/typecheck/isolate-types.mjs +2574 -0
  224. package/dist/mjs/internal/typecheck/isolate-types.mjs.map +10 -0
  225. package/dist/mjs/internal/typecheck/typecheck.mjs +91 -0
  226. package/dist/mjs/internal/typecheck/typecheck.mjs.map +10 -0
  227. package/dist/mjs/modules/index.mjs +96 -0
  228. package/dist/mjs/modules/index.mjs.map +10 -0
  229. package/dist/mjs/package.json +5 -0
  230. package/dist/mjs/runtime/script-runtime.mjs +57 -0
  231. package/dist/mjs/runtime/script-runtime.mjs.map +10 -0
  232. package/dist/mjs/server/app-server.mjs +118 -0
  233. package/dist/mjs/server/app-server.mjs.map +10 -0
  234. package/dist/mjs/testing/integration-helpers.mjs +63 -0
  235. package/dist/mjs/testing/integration-helpers.mjs.map +10 -0
  236. package/dist/mjs/typecheck/index.mjs +56 -0
  237. package/dist/mjs/typecheck/index.mjs.map +10 -0
  238. package/dist/mjs/types.mjs +2 -0
  239. package/dist/mjs/types.mjs.map +9 -0
  240. package/dist/types/bridge/diagnostics.d.ts +12 -0
  241. package/dist/types/bridge/legacy-adapters.d.ts +14 -0
  242. package/dist/types/bridge/request-context.d.ts +10 -0
  243. package/dist/types/bridge/runtime-bindings.d.ts +14 -0
  244. package/dist/types/browser/browser-runtime.d.ts +3 -0
  245. package/dist/types/daemon.d.ts +2 -0
  246. package/dist/types/files/index.d.ts +5 -0
  247. package/dist/types/host/create-isolate-host.d.ts +2 -0
  248. package/dist/types/host/index.d.ts +1 -0
  249. package/dist/types/index.d.ts +5 -0
  250. package/dist/types/internal/client/connection.d.ts +9 -0
  251. package/dist/types/internal/client/index.d.ts +8 -0
  252. package/dist/types/internal/client/types.d.ts +198 -0
  253. package/dist/types/internal/console/index.d.ts +108 -0
  254. package/dist/types/internal/console/utils.d.ts +27 -0
  255. package/dist/types/internal/core/index.d.ts +119 -0
  256. package/dist/types/internal/crypto/index.d.ts +18 -0
  257. package/dist/types/internal/daemon/callback-fs-handler.d.ts +28 -0
  258. package/dist/types/internal/daemon/connection.d.ts +9 -0
  259. package/dist/types/internal/daemon/daemon.d.ts +2 -0
  260. package/dist/types/internal/daemon/index.d.ts +14 -0
  261. package/dist/types/internal/daemon/runtime-pool.d.ts +16 -0
  262. package/dist/types/internal/daemon/types.d.ts +211 -0
  263. package/dist/types/internal/encoding/index.d.ts +21 -0
  264. package/dist/types/internal/fetch/consistency/origins.d.ts +179 -0
  265. package/dist/types/internal/fetch/index.d.ts +93 -0
  266. package/dist/types/internal/fetch/stream-state.d.ts +65 -0
  267. package/dist/types/internal/fs/index.d.ts +70 -0
  268. package/dist/types/internal/fs/node-adapter.d.ts +24 -0
  269. package/dist/types/internal/module-loader/bundle.d.ts +33 -0
  270. package/dist/types/internal/module-loader/index.d.ts +30 -0
  271. package/dist/types/internal/module-loader/mappings.d.ts +47 -0
  272. package/dist/types/internal/module-loader/resolve.d.ts +26 -0
  273. package/dist/types/internal/module-loader/strip-types.d.ts +19 -0
  274. package/dist/types/internal/path/index.d.ts +23 -0
  275. package/dist/types/internal/playwright/client.d.ts +7 -0
  276. package/dist/types/internal/playwright/handler.d.ts +44 -0
  277. package/dist/types/internal/playwright/index.d.ts +14 -0
  278. package/dist/types/internal/playwright/types.d.ts +145 -0
  279. package/dist/types/internal/protocol/codec.d.ts +242 -0
  280. package/dist/types/internal/protocol/framing.d.ts +89 -0
  281. package/dist/types/internal/protocol/index.d.ts +10 -0
  282. package/dist/types/internal/protocol/marshalValue.d.ts +79 -0
  283. package/dist/types/internal/protocol/serialization.d.ts +23 -0
  284. package/dist/types/internal/protocol/types.d.ts +996 -0
  285. package/dist/types/internal/runtime/index.d.ts +200 -0
  286. package/dist/types/internal/server/index.d.ts +42 -0
  287. package/dist/types/internal/test-environment/index.d.ts +112 -0
  288. package/dist/types/internal/timers/index.d.ts +22 -0
  289. package/dist/types/internal/transform/index.d.ts +36 -0
  290. package/dist/types/internal/typecheck/index.d.ts +7 -0
  291. package/dist/types/internal/typecheck/isolate-types.d.ts +94 -0
  292. package/dist/types/internal/typecheck/typecheck.d.ts +148 -0
  293. package/dist/types/modules/index.d.ts +2 -0
  294. package/dist/types/runtime/script-runtime.d.ts +6 -0
  295. package/dist/types/server/app-server.d.ts +3 -0
  296. package/dist/types/testing/integration-helpers.d.ts +9 -0
  297. package/dist/types/typecheck/index.d.ts +8 -0
  298. package/dist/types/types.d.ts +233 -0
  299. package/package.json +82 -6
@@ -0,0 +1,470 @@
1
+ // src/internal/protocol/codec.ts
2
+ import { encode, decode, ExtensionCodec } from "@msgpack/msgpack";
3
+ var ExtType = {
4
+ ISOLATE_REF: 1,
5
+ CALLBACK_REF: 2,
6
+ STREAM_REF: 3,
7
+ ERROR: 4,
8
+ BLOB_REF: 5,
9
+ DATE: 6,
10
+ REGEXP: 7,
11
+ UNDEFINED: 8,
12
+ BIGINT: 9,
13
+ REQUEST: 10,
14
+ RESPONSE: 11,
15
+ HEADERS: 12,
16
+ FILE: 13,
17
+ FORMDATA: 14,
18
+ URL_REF: 15,
19
+ PROMISE: 16,
20
+ ASYNC_ITERATOR: 17
21
+ };
22
+ function createExtensionCodec() {
23
+ const extensionCodec = new ExtensionCodec;
24
+ extensionCodec.register({
25
+ type: ExtType.ISOLATE_REF,
26
+ encode: (value) => {
27
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "IsolateRef") {
28
+ const ref = value;
29
+ return encode({ isolateId: ref.isolateId });
30
+ }
31
+ return null;
32
+ },
33
+ decode: (data) => {
34
+ const decoded = decode(data);
35
+ return { __type: "IsolateRef", isolateId: decoded.isolateId };
36
+ }
37
+ });
38
+ extensionCodec.register({
39
+ type: ExtType.CALLBACK_REF,
40
+ encode: (value) => {
41
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "CallbackRef") {
42
+ const ref = value;
43
+ return encode({ callbackId: ref.callbackId });
44
+ }
45
+ return null;
46
+ },
47
+ decode: (data) => {
48
+ const decoded = decode(data);
49
+ return { __type: "CallbackRef", callbackId: decoded.callbackId };
50
+ }
51
+ });
52
+ extensionCodec.register({
53
+ type: ExtType.STREAM_REF,
54
+ encode: (value) => {
55
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "StreamRef") {
56
+ const ref = value;
57
+ return encode({ streamId: ref.streamId, direction: ref.direction });
58
+ }
59
+ return null;
60
+ },
61
+ decode: (data) => {
62
+ const decoded = decode(data);
63
+ return {
64
+ __type: "StreamRef",
65
+ streamId: decoded.streamId,
66
+ direction: decoded.direction
67
+ };
68
+ }
69
+ });
70
+ extensionCodec.register({
71
+ type: ExtType.ERROR,
72
+ encode: (value) => {
73
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "ErrorRef") {
74
+ const ref = value;
75
+ return encode({
76
+ name: ref.name,
77
+ message: ref.message,
78
+ stack: ref.stack,
79
+ code: ref.code
80
+ });
81
+ }
82
+ return null;
83
+ },
84
+ decode: (data) => {
85
+ const decoded = decode(data);
86
+ return {
87
+ __type: "ErrorRef",
88
+ name: decoded.name,
89
+ message: decoded.message,
90
+ stack: decoded.stack,
91
+ code: decoded.code
92
+ };
93
+ }
94
+ });
95
+ extensionCodec.register({
96
+ type: ExtType.BLOB_REF,
97
+ encode: (value) => {
98
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "BlobRef") {
99
+ const ref = value;
100
+ return encode({
101
+ blobId: ref.blobId,
102
+ size: ref.size,
103
+ type: ref.type
104
+ });
105
+ }
106
+ return null;
107
+ },
108
+ decode: (data) => {
109
+ const decoded = decode(data);
110
+ return {
111
+ __type: "BlobRef",
112
+ blobId: decoded.blobId,
113
+ size: decoded.size,
114
+ type: decoded.type
115
+ };
116
+ }
117
+ });
118
+ extensionCodec.register({
119
+ type: ExtType.DATE,
120
+ encode: (value) => {
121
+ if (value instanceof Date) {
122
+ return encode({ timestamp: value.getTime() });
123
+ }
124
+ return null;
125
+ },
126
+ decode: (data) => {
127
+ const decoded = decode(data);
128
+ return new Date(decoded.timestamp);
129
+ }
130
+ });
131
+ extensionCodec.register({
132
+ type: ExtType.REGEXP,
133
+ encode: (value) => {
134
+ if (value instanceof RegExp) {
135
+ return encode({ source: value.source, flags: value.flags });
136
+ }
137
+ return null;
138
+ },
139
+ decode: (data) => {
140
+ const decoded = decode(data);
141
+ return new RegExp(decoded.source, decoded.flags);
142
+ }
143
+ });
144
+ extensionCodec.register({
145
+ type: ExtType.UNDEFINED,
146
+ encode: (value) => {
147
+ if (value === undefined) {
148
+ return encode({});
149
+ }
150
+ return null;
151
+ },
152
+ decode: () => {
153
+ return;
154
+ }
155
+ });
156
+ extensionCodec.register({
157
+ type: ExtType.BIGINT,
158
+ encode: (value) => {
159
+ if (typeof value === "bigint") {
160
+ return encode({ value: value.toString() });
161
+ }
162
+ return null;
163
+ },
164
+ decode: (data) => {
165
+ const decoded = decode(data);
166
+ return BigInt(decoded.value);
167
+ }
168
+ });
169
+ extensionCodec.register({
170
+ type: ExtType.REQUEST,
171
+ encode: (value) => {
172
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "RequestRef") {
173
+ const ref = value;
174
+ return encode({
175
+ url: ref.url,
176
+ method: ref.method,
177
+ headers: ref.headers,
178
+ body: ref.body,
179
+ mode: ref.mode,
180
+ credentials: ref.credentials,
181
+ cache: ref.cache,
182
+ redirect: ref.redirect,
183
+ referrer: ref.referrer,
184
+ referrerPolicy: ref.referrerPolicy,
185
+ integrity: ref.integrity
186
+ });
187
+ }
188
+ return null;
189
+ },
190
+ decode: (data) => {
191
+ const decoded = decode(data);
192
+ return {
193
+ __type: "RequestRef",
194
+ url: decoded.url,
195
+ method: decoded.method,
196
+ headers: decoded.headers,
197
+ body: decoded.body,
198
+ mode: decoded.mode,
199
+ credentials: decoded.credentials,
200
+ cache: decoded.cache,
201
+ redirect: decoded.redirect,
202
+ referrer: decoded.referrer,
203
+ referrerPolicy: decoded.referrerPolicy,
204
+ integrity: decoded.integrity
205
+ };
206
+ }
207
+ });
208
+ extensionCodec.register({
209
+ type: ExtType.RESPONSE,
210
+ encode: (value) => {
211
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "ResponseRef") {
212
+ const ref = value;
213
+ return encode({
214
+ status: ref.status,
215
+ statusText: ref.statusText,
216
+ headers: ref.headers,
217
+ body: ref.body
218
+ });
219
+ }
220
+ return null;
221
+ },
222
+ decode: (data) => {
223
+ const decoded = decode(data);
224
+ return {
225
+ __type: "ResponseRef",
226
+ status: decoded.status,
227
+ statusText: decoded.statusText,
228
+ headers: decoded.headers,
229
+ body: decoded.body
230
+ };
231
+ }
232
+ });
233
+ extensionCodec.register({
234
+ type: ExtType.HEADERS,
235
+ encode: (value) => {
236
+ if (typeof Headers !== "undefined" && value instanceof Headers) {
237
+ const pairs = [];
238
+ value.forEach((v, k) => pairs.push([k, v]));
239
+ return encode({ pairs });
240
+ }
241
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "HeadersRef") {
242
+ const ref = value;
243
+ return encode({ pairs: ref.pairs });
244
+ }
245
+ return null;
246
+ },
247
+ decode: (data) => {
248
+ const decoded = decode(data);
249
+ return new Headers(decoded.pairs);
250
+ }
251
+ });
252
+ extensionCodec.register({
253
+ type: ExtType.FILE,
254
+ encode: (value) => {
255
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "FileRef") {
256
+ const ref = value;
257
+ return encode({
258
+ name: ref.name,
259
+ type: ref.type,
260
+ lastModified: ref.lastModified,
261
+ data: ref.data
262
+ });
263
+ }
264
+ return null;
265
+ },
266
+ decode: (data) => {
267
+ const decoded = decode(data);
268
+ return {
269
+ __type: "FileRef",
270
+ name: decoded.name,
271
+ type: decoded.type,
272
+ lastModified: decoded.lastModified,
273
+ data: decoded.data
274
+ };
275
+ }
276
+ });
277
+ extensionCodec.register({
278
+ type: ExtType.FORMDATA,
279
+ encode: (value) => {
280
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "FormDataRef") {
281
+ const ref = value;
282
+ return encode({ entries: ref.entries });
283
+ }
284
+ return null;
285
+ },
286
+ decode: (data) => {
287
+ const decoded = decode(data);
288
+ return {
289
+ __type: "FormDataRef",
290
+ entries: decoded.entries
291
+ };
292
+ }
293
+ });
294
+ extensionCodec.register({
295
+ type: ExtType.URL_REF,
296
+ encode: (value) => {
297
+ if (typeof URL !== "undefined" && value instanceof URL) {
298
+ return encode({ href: value.href });
299
+ }
300
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "URLRef") {
301
+ const ref = value;
302
+ return encode({ href: ref.href });
303
+ }
304
+ return null;
305
+ },
306
+ decode: (data) => {
307
+ const decoded = decode(data);
308
+ return new URL(decoded.href);
309
+ }
310
+ });
311
+ extensionCodec.register({
312
+ type: ExtType.PROMISE,
313
+ encode: (value) => {
314
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "PromiseRef") {
315
+ const ref = value;
316
+ const encoded = { promiseId: ref.promiseId };
317
+ if ("__resolveCallbackId" in ref) {
318
+ encoded.__resolveCallbackId = ref.__resolveCallbackId;
319
+ }
320
+ return encode(encoded);
321
+ }
322
+ return null;
323
+ },
324
+ decode: (data) => {
325
+ const decoded = decode(data);
326
+ const result = { __type: "PromiseRef", promiseId: decoded.promiseId };
327
+ if ("__resolveCallbackId" in decoded) {
328
+ result.__resolveCallbackId = decoded.__resolveCallbackId;
329
+ }
330
+ return result;
331
+ }
332
+ });
333
+ extensionCodec.register({
334
+ type: ExtType.ASYNC_ITERATOR,
335
+ encode: (value) => {
336
+ if (typeof value === "object" && value !== null && "__type" in value && value.__type === "AsyncIteratorRef") {
337
+ const ref = value;
338
+ const refRecord = ref;
339
+ const encoded = { iteratorId: ref.iteratorId };
340
+ if ("__nextCallbackId" in ref) {
341
+ encoded.__nextCallbackId = refRecord.__nextCallbackId;
342
+ }
343
+ if ("__returnCallbackId" in ref) {
344
+ encoded.__returnCallbackId = refRecord.__returnCallbackId;
345
+ }
346
+ if ("__throwCallbackId" in ref) {
347
+ encoded.__throwCallbackId = refRecord.__throwCallbackId;
348
+ }
349
+ return encode(encoded);
350
+ }
351
+ return null;
352
+ },
353
+ decode: (data) => {
354
+ const decoded = decode(data);
355
+ const result = { __type: "AsyncIteratorRef", iteratorId: decoded.iteratorId };
356
+ if ("__nextCallbackId" in decoded) {
357
+ result.__nextCallbackId = decoded.__nextCallbackId;
358
+ }
359
+ if ("__returnCallbackId" in decoded) {
360
+ result.__returnCallbackId = decoded.__returnCallbackId;
361
+ }
362
+ if ("__throwCallbackId" in decoded) {
363
+ result.__throwCallbackId = decoded.__throwCallbackId;
364
+ }
365
+ return result;
366
+ }
367
+ });
368
+ return extensionCodec;
369
+ }
370
+ var extensionCodec = createExtensionCodec();
371
+ function encodeMessage(message) {
372
+ return encode(message, { extensionCodec });
373
+ }
374
+ function decodeMessage(data) {
375
+ return decode(data, { extensionCodec });
376
+ }
377
+ function encodeValue(value) {
378
+ return encode(value, { extensionCodec });
379
+ }
380
+ function decodeValue(data) {
381
+ return decode(data, { extensionCodec });
382
+ }
383
+ function createIsolateRef(isolateId) {
384
+ return { __type: "IsolateRef", isolateId };
385
+ }
386
+ function createCallbackRef(callbackId) {
387
+ return { __type: "CallbackRef", callbackId };
388
+ }
389
+ function createStreamRef(streamId, direction) {
390
+ return { __type: "StreamRef", streamId, direction };
391
+ }
392
+ function createErrorRef(name, message, stack, code) {
393
+ return { __type: "ErrorRef", name, message, stack, code };
394
+ }
395
+ function createBlobRef(blobId, size, type) {
396
+ return { __type: "BlobRef", blobId, size, type };
397
+ }
398
+ function createDateRef(timestamp) {
399
+ return { __type: "DateRef", timestamp };
400
+ }
401
+ function createRegExpRef(source, flags) {
402
+ return { __type: "RegExpRef", source, flags };
403
+ }
404
+ function createUndefinedRef() {
405
+ return { __type: "UndefinedRef" };
406
+ }
407
+ function createBigIntRef(value) {
408
+ return { __type: "BigIntRef", value };
409
+ }
410
+ function createUint8ArrayRef(data) {
411
+ return { __type: "Uint8ArrayRef", data };
412
+ }
413
+ function createRequestRef(url, method, headers, body, options) {
414
+ return {
415
+ __type: "RequestRef",
416
+ url,
417
+ method,
418
+ headers,
419
+ body,
420
+ ...options
421
+ };
422
+ }
423
+ function createResponseRef(status, statusText, headers, body) {
424
+ return { __type: "ResponseRef", status, statusText, headers, body };
425
+ }
426
+ function createHeadersRef(pairs) {
427
+ return { __type: "HeadersRef", pairs };
428
+ }
429
+ function createFileRef(name, type, lastModified, data) {
430
+ return { __type: "FileRef", name, type, lastModified, data };
431
+ }
432
+ function createFormDataRef(entries) {
433
+ return { __type: "FormDataRef", entries };
434
+ }
435
+ function createURLRef(href) {
436
+ return { __type: "URLRef", href };
437
+ }
438
+ function createPromiseRef(promiseId) {
439
+ return { __type: "PromiseRef", promiseId };
440
+ }
441
+ function createAsyncIteratorRef(iteratorId) {
442
+ return { __type: "AsyncIteratorRef", iteratorId };
443
+ }
444
+ export {
445
+ encodeValue,
446
+ encodeMessage,
447
+ decodeValue,
448
+ decodeMessage,
449
+ createUndefinedRef,
450
+ createUint8ArrayRef,
451
+ createURLRef,
452
+ createStreamRef,
453
+ createResponseRef,
454
+ createRequestRef,
455
+ createRegExpRef,
456
+ createPromiseRef,
457
+ createIsolateRef,
458
+ createHeadersRef,
459
+ createFormDataRef,
460
+ createFileRef,
461
+ createErrorRef,
462
+ createDateRef,
463
+ createCallbackRef,
464
+ createBlobRef,
465
+ createBigIntRef,
466
+ createAsyncIteratorRef,
467
+ ExtType
468
+ };
469
+
470
+ //# debugId=CBE39B5F8650334564756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/protocol/codec.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * MessagePack codec with custom extension types for the isolate protocol.\n */\n\nimport { encode, decode, ExtensionCodec } from \"@msgpack/msgpack\";\nimport type { Message } from \"./types.mjs\";\n\n// ============================================================================\n// Custom Extension Types\n// ============================================================================\n\n/**\n * Extension type codes for custom data types.\n */\nexport const ExtType = {\n /** Reference to an isolate instance */\n ISOLATE_REF: 1,\n /** Reference to a registered callback */\n CALLBACK_REF: 2,\n /** Reference to a stream */\n STREAM_REF: 3,\n /** Structured error object */\n ERROR: 4,\n /** Reference to Blob/File data */\n BLOB_REF: 5,\n /** Date value */\n DATE: 6,\n /** RegExp value */\n REGEXP: 7,\n /** Undefined value (null is natively supported) */\n UNDEFINED: 8,\n /** BigInt value */\n BIGINT: 9,\n /** Request object */\n REQUEST: 10,\n /** Response object */\n RESPONSE: 11,\n /** Headers object */\n HEADERS: 12,\n /** File object */\n FILE: 13,\n /** FormData object */\n FORMDATA: 14,\n /** URL object */\n URL_REF: 15,\n /** Promise reference */\n PROMISE: 16,\n /** AsyncIterator reference */\n ASYNC_ITERATOR: 17,\n} as const;\n\nexport type ExtType = (typeof ExtType)[keyof typeof ExtType];\n\n/**\n * Represents a reference to an isolate.\n */\nexport interface IsolateRef {\n __type: \"IsolateRef\";\n isolateId: string;\n}\n\n/**\n * Represents a reference to a callback.\n */\nexport interface CallbackRef {\n __type: \"CallbackRef\";\n callbackId: number;\n}\n\n/**\n * Represents a reference to a stream.\n */\nexport interface StreamRef {\n __type: \"StreamRef\";\n streamId: number;\n direction: \"upload\" | \"download\";\n}\n\n/**\n * Represents a structured error.\n */\nexport interface ErrorRef {\n __type: \"ErrorRef\";\n name: string;\n message: string;\n stack?: string;\n code?: number;\n}\n\n/**\n * Represents a reference to blob data.\n */\nexport interface BlobRef {\n __type: \"BlobRef\";\n blobId: number;\n size: number;\n type: string;\n}\n\n/**\n * Represents a serialized Date value.\n */\nexport interface DateRef {\n __type: \"DateRef\";\n timestamp: number;\n}\n\n/**\n * Represents a serialized RegExp value.\n */\nexport interface RegExpRef {\n __type: \"RegExpRef\";\n source: string;\n flags: string;\n}\n\n/**\n * Represents an undefined value (since msgpack doesn't natively support undefined).\n */\nexport interface UndefinedRef {\n __type: \"UndefinedRef\";\n}\n\n/**\n * Represents a serialized BigInt value.\n */\nexport interface BigIntRef {\n __type: \"BigIntRef\";\n value: string;\n}\n\n/**\n * Represents a serialized Uint8Array value.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface Uint8ArrayRef {\n __type: \"Uint8ArrayRef\";\n data: number[];\n}\n\n/**\n * Represents a serialized Request object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface RequestRef {\n __type: \"RequestRef\";\n url: string;\n method: string;\n headers: [string, string][];\n body: number[] | null;\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n}\n\n/**\n * Represents a serialized Response object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface ResponseRef {\n __type: \"ResponseRef\";\n status: number;\n statusText: string;\n headers: [string, string][];\n body: number[] | null;\n}\n\n/**\n * Represents a serialized Headers object.\n */\nexport interface HeadersRef {\n __type: \"HeadersRef\";\n pairs: [string, string][];\n}\n\n/**\n * Represents a serialized File object (includes the data inline).\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface FileRef {\n __type: \"FileRef\";\n name: string;\n type: string;\n lastModified: number;\n data: number[];\n}\n\n/**\n * Represents a serialized FormData object.\n */\nexport interface FormDataRef {\n __type: \"FormDataRef\";\n entries: [string, string | FileRef][];\n}\n\n/**\n * Represents a serialized URL object.\n */\nexport interface URLRef {\n __type: \"URLRef\";\n href: string;\n}\n\n/**\n * Represents a reference to a pending Promise.\n */\nexport interface PromiseRef {\n __type: \"PromiseRef\";\n promiseId: number;\n}\n\n/**\n * Represents a reference to an async iterator.\n */\nexport interface AsyncIteratorRef {\n __type: \"AsyncIteratorRef\";\n iteratorId: number;\n __nextCallbackId?: number;\n __returnCallbackId?: number;\n __throwCallbackId?: number;\n}\n\nexport type ExtensionType =\n | IsolateRef\n | CallbackRef\n | StreamRef\n | ErrorRef\n | BlobRef\n | DateRef\n | RegExpRef\n | UndefinedRef\n | BigIntRef\n | RequestRef\n | ResponseRef\n | HeadersRef\n | FileRef\n | FormDataRef\n | URLRef\n | PromiseRef\n | AsyncIteratorRef;\n\n// ============================================================================\n// Extension Codec Setup\n// ============================================================================\n\n/**\n * Create the extension codec for custom types.\n */\nfunction createExtensionCodec(): ExtensionCodec {\n const extensionCodec = new ExtensionCodec();\n\n // IsolateRef\n extensionCodec.register({\n type: ExtType.ISOLATE_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as IsolateRef).__type === \"IsolateRef\"\n ) {\n const ref = value as IsolateRef;\n return encode({ isolateId: ref.isolateId });\n }\n return null;\n },\n decode: (data: Uint8Array): IsolateRef => {\n const decoded = decode(data) as { isolateId: string };\n return { __type: \"IsolateRef\", isolateId: decoded.isolateId };\n },\n });\n\n // CallbackRef\n extensionCodec.register({\n type: ExtType.CALLBACK_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as CallbackRef).__type === \"CallbackRef\"\n ) {\n const ref = value as CallbackRef;\n return encode({ callbackId: ref.callbackId });\n }\n return null;\n },\n decode: (data: Uint8Array): CallbackRef => {\n const decoded = decode(data) as { callbackId: number };\n return { __type: \"CallbackRef\", callbackId: decoded.callbackId };\n },\n });\n\n // StreamRef\n extensionCodec.register({\n type: ExtType.STREAM_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as StreamRef).__type === \"StreamRef\"\n ) {\n const ref = value as StreamRef;\n return encode({ streamId: ref.streamId, direction: ref.direction });\n }\n return null;\n },\n decode: (data: Uint8Array): StreamRef => {\n const decoded = decode(data) as {\n streamId: number;\n direction: \"upload\" | \"download\";\n };\n return {\n __type: \"StreamRef\",\n streamId: decoded.streamId,\n direction: decoded.direction,\n };\n },\n });\n\n // ErrorRef\n extensionCodec.register({\n type: ExtType.ERROR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ErrorRef).__type === \"ErrorRef\"\n ) {\n const ref = value as ErrorRef;\n return encode({\n name: ref.name,\n message: ref.message,\n stack: ref.stack,\n code: ref.code,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ErrorRef => {\n const decoded = decode(data) as {\n name: string;\n message: string;\n stack?: string;\n code?: number;\n };\n return {\n __type: \"ErrorRef\",\n name: decoded.name,\n message: decoded.message,\n stack: decoded.stack,\n code: decoded.code,\n };\n },\n });\n\n // BlobRef\n extensionCodec.register({\n type: ExtType.BLOB_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as BlobRef).__type === \"BlobRef\"\n ) {\n const ref = value as BlobRef;\n return encode({\n blobId: ref.blobId,\n size: ref.size,\n type: ref.type,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): BlobRef => {\n const decoded = decode(data) as {\n blobId: number;\n size: number;\n type: string;\n };\n return {\n __type: \"BlobRef\",\n blobId: decoded.blobId,\n size: decoded.size,\n type: decoded.type,\n };\n },\n });\n\n // Date - only handle actual Date instances\n // DateRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.DATE,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual Date instances\n if (value instanceof Date) {\n return encode({ timestamp: value.getTime() });\n }\n return null;\n },\n decode: (data: Uint8Array): Date => {\n const decoded = decode(data) as { timestamp: number };\n return new Date(decoded.timestamp);\n },\n });\n\n // RegExp - only handle actual RegExp instances\n // RegExpRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.REGEXP,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual RegExp instances\n if (value instanceof RegExp) {\n return encode({ source: value.source, flags: value.flags });\n }\n return null;\n },\n decode: (data: Uint8Array): RegExp => {\n const decoded = decode(data) as { source: string; flags: string };\n return new RegExp(decoded.source, decoded.flags);\n },\n });\n\n // undefined - only handle actual undefined values\n // UndefinedRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.UNDEFINED,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual undefined\n if (value === undefined) {\n return encode({});\n }\n return null;\n },\n decode: (): undefined => {\n return undefined;\n },\n });\n\n // BigInt - only handle actual BigInt values\n // BigIntRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.BIGINT,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual BigInt values\n if (typeof value === \"bigint\") {\n return encode({ value: value.toString() });\n }\n return null;\n },\n decode: (data: Uint8Array): bigint => {\n const decoded = decode(data) as { value: string };\n return BigInt(decoded.value);\n },\n });\n\n // RequestRef - decodes to actual Request object\n extensionCodec.register({\n type: ExtType.REQUEST,\n encode: (value: unknown): Uint8Array | null => {\n // Handle RequestRef objects (actual Request instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as RequestRef).__type === \"RequestRef\"\n ) {\n const ref = value as RequestRef;\n return encode({\n url: ref.url,\n method: ref.method,\n headers: ref.headers,\n body: ref.body,\n mode: ref.mode,\n credentials: ref.credentials,\n cache: ref.cache,\n redirect: ref.redirect,\n referrer: ref.referrer,\n referrerPolicy: ref.referrerPolicy,\n integrity: ref.integrity,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): RequestRef => {\n // Return RequestRef instead of reconstructing Request - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Request\n const decoded = decode(data) as Omit<RequestRef, \"__type\">;\n return {\n __type: \"RequestRef\",\n url: decoded.url,\n method: decoded.method,\n headers: decoded.headers,\n body: decoded.body,\n mode: decoded.mode,\n credentials: decoded.credentials,\n cache: decoded.cache,\n redirect: decoded.redirect,\n referrer: decoded.referrer,\n referrerPolicy: decoded.referrerPolicy,\n integrity: decoded.integrity,\n };\n },\n });\n\n // ResponseRef - decodes to actual Response object\n extensionCodec.register({\n type: ExtType.RESPONSE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle ResponseRef objects (actual Response instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ResponseRef).__type === \"ResponseRef\"\n ) {\n const ref = value as ResponseRef;\n return encode({\n status: ref.status,\n statusText: ref.statusText,\n headers: ref.headers,\n body: ref.body,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ResponseRef => {\n // Return ResponseRef instead of reconstructing Response - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Response\n const decoded = decode(data) as Omit<ResponseRef, \"__type\">;\n return {\n __type: \"ResponseRef\",\n status: decoded.status,\n statusText: decoded.statusText,\n headers: decoded.headers,\n body: decoded.body,\n };\n },\n });\n\n // HeadersRef - handles both Headers instances and HeadersRef objects\n extensionCodec.register({\n type: ExtType.HEADERS,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual Headers instances\n if (typeof Headers !== \"undefined\" && value instanceof Headers) {\n const pairs: [string, string][] = [];\n (value as Headers).forEach((v, k) => pairs.push([k, v]));\n return encode({ pairs });\n }\n // Handle HeadersRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as HeadersRef).__type === \"HeadersRef\"\n ) {\n const ref = value as HeadersRef;\n return encode({ pairs: ref.pairs });\n }\n return null;\n },\n decode: (data: Uint8Array): Headers => {\n const decoded = decode(data) as { pairs: [string, string][] };\n return new Headers(decoded.pairs);\n },\n });\n\n // FileRef - decodes to actual File/Blob objects\n extensionCodec.register({\n type: ExtType.FILE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FileRef objects (actual File instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FileRef).__type === \"FileRef\"\n ) {\n const ref = value as FileRef;\n return encode({\n name: ref.name,\n type: ref.type,\n lastModified: ref.lastModified,\n data: ref.data,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): FileRef => {\n // Return FileRef instead of reconstructing File - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the File\n const decoded = decode(data) as Omit<FileRef, \"__type\">;\n return {\n __type: \"FileRef\",\n name: decoded.name,\n type: decoded.type,\n lastModified: decoded.lastModified,\n data: decoded.data,\n };\n },\n });\n\n // FormDataRef - decodes to actual FormData object\n extensionCodec.register({\n type: ExtType.FORMDATA,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FormDataRef objects (actual FormData instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FormDataRef).__type === \"FormDataRef\"\n ) {\n const ref = value as FormDataRef;\n return encode({ entries: ref.entries });\n }\n return null;\n },\n decode: (data: Uint8Array): FormDataRef => {\n // Return FormDataRef instead of reconstructing FormData - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the FormData\n const decoded = decode(data) as { entries: [string, string | FileRef][] };\n return {\n __type: \"FormDataRef\",\n entries: decoded.entries,\n };\n },\n });\n\n // URLRef - handles both URL instances and URLRef objects\n extensionCodec.register({\n type: ExtType.URL_REF,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual URL instances\n if (typeof URL !== \"undefined\" && value instanceof URL) {\n return encode({ href: (value as URL).href });\n }\n // Handle URLRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as URLRef).__type === \"URLRef\"\n ) {\n const ref = value as URLRef;\n return encode({ href: ref.href });\n }\n return null;\n },\n decode: (data: Uint8Array): URL => {\n const decoded = decode(data) as { href: string };\n return new URL(decoded.href);\n },\n });\n\n // PromiseRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.PROMISE,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as PromiseRef).__type === \"PromiseRef\"\n ) {\n const ref = value as PromiseRef;\n // Encode all fields, not just promiseId\n const encoded: Record<string, unknown> = { promiseId: ref.promiseId };\n // Preserve callback ID fields if present\n if (\"__resolveCallbackId\" in ref) {\n encoded.__resolveCallbackId = (ref as Record<string, unknown>).__resolveCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): PromiseRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: PromiseRef = { __type: \"PromiseRef\", promiseId: decoded.promiseId as number };\n // Restore callback ID fields if present\n if (\"__resolveCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__resolveCallbackId = decoded.__resolveCallbackId;\n }\n return result;\n },\n });\n\n // AsyncIteratorRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.ASYNC_ITERATOR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as AsyncIteratorRef).__type === \"AsyncIteratorRef\"\n ) {\n const ref = value as AsyncIteratorRef;\n const refRecord = ref as unknown as Record<string, unknown>;\n // Encode all fields, not just iteratorId\n const encoded: Record<string, unknown> = { iteratorId: ref.iteratorId };\n // Preserve callback ID fields if present\n if (\"__nextCallbackId\" in ref) {\n encoded.__nextCallbackId = refRecord.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in ref) {\n encoded.__returnCallbackId = refRecord.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in ref) {\n encoded.__throwCallbackId = refRecord.__throwCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): AsyncIteratorRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: AsyncIteratorRef = { __type: \"AsyncIteratorRef\", iteratorId: decoded.iteratorId as number };\n // Restore callback ID fields if present\n if (\"__nextCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__nextCallbackId = decoded.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__returnCallbackId = decoded.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__throwCallbackId = decoded.__throwCallbackId;\n }\n return result;\n },\n });\n\n return extensionCodec;\n}\n\n// Singleton extension codec instance\nconst extensionCodec = createExtensionCodec();\n\n// ============================================================================\n// Encoding/Decoding Functions\n// ============================================================================\n\n/**\n * Encode a message to MessagePack bytes.\n */\nexport function encodeMessage(message: Message): Uint8Array {\n return encode(message, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to a message.\n */\nexport function decodeMessage(data: Uint8Array): Message {\n return decode(data, { extensionCodec }) as Message;\n}\n\n/**\n * Encode any value to MessagePack bytes.\n */\nexport function encodeValue(value: unknown): Uint8Array {\n return encode(value, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to any value.\n */\nexport function decodeValue(data: Uint8Array): unknown {\n return decode(data, { extensionCodec });\n}\n\n// ============================================================================\n// Helper Functions for Creating Extension Types\n// ============================================================================\n\nexport function createIsolateRef(isolateId: string): IsolateRef {\n return { __type: \"IsolateRef\", isolateId };\n}\n\nexport function createCallbackRef(callbackId: number): CallbackRef {\n return { __type: \"CallbackRef\", callbackId };\n}\n\nexport function createStreamRef(\n streamId: number,\n direction: \"upload\" | \"download\"\n): StreamRef {\n return { __type: \"StreamRef\", streamId, direction };\n}\n\nexport function createErrorRef(\n name: string,\n message: string,\n stack?: string,\n code?: number\n): ErrorRef {\n return { __type: \"ErrorRef\", name, message, stack, code };\n}\n\nexport function createBlobRef(\n blobId: number,\n size: number,\n type: string\n): BlobRef {\n return { __type: \"BlobRef\", blobId, size, type };\n}\n\nexport function createDateRef(timestamp: number): DateRef {\n return { __type: \"DateRef\", timestamp };\n}\n\nexport function createRegExpRef(source: string, flags: string): RegExpRef {\n return { __type: \"RegExpRef\", source, flags };\n}\n\nexport function createUndefinedRef(): UndefinedRef {\n return { __type: \"UndefinedRef\" };\n}\n\nexport function createBigIntRef(value: string): BigIntRef {\n return { __type: \"BigIntRef\", value };\n}\n\nexport function createUint8ArrayRef(data: number[]): Uint8ArrayRef {\n return { __type: \"Uint8ArrayRef\", data };\n}\n\nexport function createRequestRef(\n url: string,\n method: string,\n headers: [string, string][],\n body: number[] | null,\n options?: {\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n }\n): RequestRef {\n return {\n __type: \"RequestRef\",\n url,\n method,\n headers,\n body,\n ...options,\n };\n}\n\nexport function createResponseRef(\n status: number,\n statusText: string,\n headers: [string, string][],\n body: number[] | null\n): ResponseRef {\n return { __type: \"ResponseRef\", status, statusText, headers, body };\n}\n\nexport function createHeadersRef(pairs: [string, string][]): HeadersRef {\n return { __type: \"HeadersRef\", pairs };\n}\n\nexport function createFileRef(\n name: string,\n type: string,\n lastModified: number,\n data: number[]\n): FileRef {\n return { __type: \"FileRef\", name, type, lastModified, data };\n}\n\nexport function createFormDataRef(\n entries: [string, string | FileRef][]\n): FormDataRef {\n return { __type: \"FormDataRef\", entries };\n}\n\nexport function createURLRef(href: string): URLRef {\n return { __type: \"URLRef\", href };\n}\n\nexport function createPromiseRef(promiseId: number): PromiseRef {\n return { __type: \"PromiseRef\", promiseId };\n}\n\nexport function createAsyncIteratorRef(iteratorId: number): AsyncIteratorRef {\n return { __type: \"AsyncIteratorRef\", iteratorId };\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "CBE39B5F8650334564756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,101 @@
1
+ // src/internal/protocol/framing.ts
2
+ import { MessageTypeName } from "./types.mjs";
3
+ import { encodeMessage, decodeMessage } from "./codec.mjs";
4
+ var HEADER_SIZE = 5;
5
+ var MAX_FRAME_SIZE = 10 * 1024 * 1024;
6
+ var STREAM_THRESHOLD = 1 * 1024 * 1024;
7
+ var STREAM_CHUNK_SIZE = 256 * 1024;
8
+ var STREAM_DEFAULT_CREDIT = 1 * 1024 * 1024;
9
+ function buildFrame(message) {
10
+ const payloadWithoutType = { ...message };
11
+ delete payloadWithoutType.type;
12
+ const payload = encodeMessage(payloadWithoutType);
13
+ const messageType = message.type;
14
+ const frameBodySize = 1 + payload.length;
15
+ const frame = new Uint8Array(4 + frameBodySize);
16
+ const view = new DataView(frame.buffer);
17
+ view.setUint32(0, frameBodySize, false);
18
+ frame[4] = messageType;
19
+ frame.set(payload, 5);
20
+ return frame;
21
+ }
22
+ function buildFrames(messages) {
23
+ const frames = messages.map(buildFrame);
24
+ const totalLength = frames.reduce((sum, f) => sum + f.length, 0);
25
+ const combined = new Uint8Array(totalLength);
26
+ let offset = 0;
27
+ for (const frame of frames) {
28
+ combined.set(frame, offset);
29
+ offset += frame.length;
30
+ }
31
+ return combined;
32
+ }
33
+ function createFrameParser() {
34
+ let buffer = new Uint8Array(0);
35
+ function* feed(chunk) {
36
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
37
+ newBuffer.set(buffer);
38
+ newBuffer.set(chunk, buffer.length);
39
+ buffer = newBuffer;
40
+ while (buffer.length >= 4) {
41
+ const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
42
+ const frameBodySize = view.getUint32(0, false);
43
+ if (frameBodySize > MAX_FRAME_SIZE) {
44
+ throw new Error(`Frame size ${frameBodySize} exceeds maximum ${MAX_FRAME_SIZE}`);
45
+ }
46
+ const totalFrameSize = 4 + frameBodySize;
47
+ if (buffer.length < totalFrameSize) {
48
+ break;
49
+ }
50
+ const messageType = buffer[4];
51
+ const payload = buffer.slice(5, totalFrameSize);
52
+ const decodedPayload = decodeMessage(payload);
53
+ const message = { ...decodedPayload, type: messageType };
54
+ yield { type: messageType, message };
55
+ buffer = buffer.slice(totalFrameSize);
56
+ }
57
+ }
58
+ function bufferedBytes() {
59
+ return buffer.length;
60
+ }
61
+ function reset() {
62
+ buffer = new Uint8Array(0);
63
+ }
64
+ return { feed, bufferedBytes, reset };
65
+ }
66
+ function parseFrame(data) {
67
+ if (data.length < 4) {
68
+ return null;
69
+ }
70
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
71
+ const frameBodySize = view.getUint32(0, false);
72
+ if (frameBodySize > MAX_FRAME_SIZE) {
73
+ throw new Error(`Frame size ${frameBodySize} exceeds maximum ${MAX_FRAME_SIZE}`);
74
+ }
75
+ const totalFrameSize = 4 + frameBodySize;
76
+ if (data.length < totalFrameSize) {
77
+ return null;
78
+ }
79
+ const messageType = data[4];
80
+ const payload = data.slice(5, totalFrameSize);
81
+ const decodedPayload = decodeMessage(payload);
82
+ const message = { ...decodedPayload, type: messageType };
83
+ return { type: messageType, message };
84
+ }
85
+ function getMessageTypeName(type) {
86
+ return MessageTypeName[type] ?? `Unknown(${type})`;
87
+ }
88
+ export {
89
+ parseFrame,
90
+ getMessageTypeName,
91
+ createFrameParser,
92
+ buildFrames,
93
+ buildFrame,
94
+ STREAM_THRESHOLD,
95
+ STREAM_DEFAULT_CREDIT,
96
+ STREAM_CHUNK_SIZE,
97
+ MAX_FRAME_SIZE,
98
+ HEADER_SIZE
99
+ };
100
+
101
+ //# debugId=0159BD96C0953E1264756E2164756E21