@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,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/protocol/framing.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Frame parser and builder for the isolate protocol.\n *\n * Frame format:\n * ┌──────────┬──────────┬─────────────────┐\n * │ Length │ Type │ Payload │\n * │ (4 bytes)│ (1 byte) │ (MessagePack) │\n * └──────────┴──────────┴─────────────────┘\n *\n * - Length: uint32 BE, size of Type + Payload (excludes the length field itself)\n * - Type: uint8, message type from MessageType enum\n * - Payload: MessagePack encoded message body\n */\n\nimport { MessageType, MessageTypeName, type Message } from \"./types.mjs\";\nimport { encodeMessage, decodeMessage } from \"./codec.mjs\";\n\n/** Header size: 4 bytes for length + 1 byte for type */\nexport const HEADER_SIZE = 5;\n\n/** Maximum frame size (10MB) */\nexport const MAX_FRAME_SIZE = 10 * 1024 * 1024;\n\n/** Threshold above which bodies should be streamed (1MB) */\nexport const STREAM_THRESHOLD = 1 * 1024 * 1024;\n\n/** Default chunk size for streaming (256KB) */\nexport const STREAM_CHUNK_SIZE = 256 * 1024;\n\n/** Default credit for backpressure (1MB) */\nexport const STREAM_DEFAULT_CREDIT = 1 * 1024 * 1024;\n\n// ============================================================================\n// Frame Building\n// ============================================================================\n\n/**\n * Build a frame from a message.\n *\n * @param message - The message to encode\n * @returns Complete frame as Uint8Array\n */\nexport function buildFrame(message: Message): Uint8Array {\n // Encode the message payload (without the type field for the payload)\n const payloadWithoutType = { ...message };\n delete (payloadWithoutType as Record<string, unknown>).type;\n\n const payload = encodeMessage(payloadWithoutType as Message);\n const messageType = message.type;\n\n // Total size: 1 byte type + payload length\n const frameBodySize = 1 + payload.length;\n\n // Build frame: 4 bytes length + 1 byte type + payload\n const frame = new Uint8Array(4 + frameBodySize);\n const view = new DataView(frame.buffer);\n\n // Write length (big-endian)\n view.setUint32(0, frameBodySize, false);\n\n // Write message type\n frame[4] = messageType;\n\n // Write payload\n frame.set(payload, 5);\n\n return frame;\n}\n\n/**\n * Build multiple frames from messages.\n *\n * @param messages - Messages to encode\n * @returns Combined frames as single Uint8Array\n */\nexport function buildFrames(messages: Message[]): Uint8Array {\n const frames = messages.map(buildFrame);\n const totalLength = frames.reduce((sum, f) => sum + f.length, 0);\n\n const combined = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const frame of frames) {\n combined.set(frame, offset);\n offset += frame.length;\n }\n\n return combined;\n}\n\n// ============================================================================\n// Frame Parsing\n// ============================================================================\n\n/**\n * Parse result from the frame parser.\n */\nexport interface ParsedFrame {\n type: MessageType;\n message: Message;\n}\n\n/**\n * Incremental frame parser for streaming data.\n *\n * Usage:\n * ```ts\n * const parser = createFrameParser();\n * socket.on('data', (chunk) => {\n * for (const frame of parser.feed(chunk)) {\n * handleMessage(frame.message);\n * }\n * });\n * ```\n */\nexport interface FrameParser {\n /**\n * Feed data to the parser and yield complete frames.\n * @param chunk - Incoming data chunk\n */\n feed(chunk: Uint8Array): Generator<ParsedFrame>;\n\n /**\n * Get the number of bytes currently buffered.\n */\n bufferedBytes(): number;\n\n /**\n * Reset the parser state.\n */\n reset(): void;\n}\n\n/**\n * Create a new frame parser.\n */\nexport function createFrameParser(): FrameParser {\n let buffer: Uint8Array = new Uint8Array(0);\n\n function* feed(chunk: Uint8Array): Generator<ParsedFrame> {\n // Append chunk to buffer\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n // Try to parse frames\n while (buffer.length >= 4) {\n // Read length\n const view = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength\n );\n const frameBodySize = view.getUint32(0, false);\n\n // Validate frame size\n if (frameBodySize > MAX_FRAME_SIZE) {\n throw new Error(\n `Frame size ${frameBodySize} exceeds maximum ${MAX_FRAME_SIZE}`\n );\n }\n\n // Check if we have the complete frame\n const totalFrameSize = 4 + frameBodySize;\n if (buffer.length < totalFrameSize) {\n break; // Wait for more data\n }\n\n // Extract frame\n const messageType = buffer[4] as MessageType;\n const payload = buffer.slice(5, totalFrameSize);\n\n // Decode payload\n const decodedPayload = decodeMessage(payload);\n const message = { ...decodedPayload, type: messageType } as Message;\n\n yield { type: messageType, message };\n\n // Remove processed frame from buffer\n buffer = buffer.slice(totalFrameSize);\n }\n }\n\n function bufferedBytes(): number {\n return buffer.length;\n }\n\n function reset(): void {\n buffer = new Uint8Array(0);\n }\n\n return { feed, bufferedBytes, reset };\n}\n\n// ============================================================================\n// Single Frame Parsing (for testing/debugging)\n// ============================================================================\n\n/**\n * Parse a single complete frame.\n *\n * @param data - Complete frame data\n * @returns Parsed frame or null if incomplete\n * @throws Error if frame is invalid\n */\nexport function parseFrame(data: Uint8Array): ParsedFrame | null {\n if (data.length < 4) {\n return null;\n }\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const frameBodySize = view.getUint32(0, false);\n\n if (frameBodySize > MAX_FRAME_SIZE) {\n throw new Error(\n `Frame size ${frameBodySize} exceeds maximum ${MAX_FRAME_SIZE}`\n );\n }\n\n const totalFrameSize = 4 + frameBodySize;\n if (data.length < totalFrameSize) {\n return null;\n }\n\n const messageType = data[4] as MessageType;\n const payload = data.slice(5, totalFrameSize);\n\n const decodedPayload = decodeMessage(payload);\n const message = { ...decodedPayload, type: messageType } as Message;\n\n return { type: messageType, message };\n}\n\n/**\n * Get the message type name for debugging.\n */\nexport function getMessageTypeName(type: MessageType): string {\n return MessageTypeName[type] ?? `Unknown(${type})`;\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "0159BD96C0953E1264756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,98 @@
1
+ // src/internal/protocol/index.ts
2
+ export * from "./types.mjs";
3
+ import {
4
+ encodeMessage,
5
+ decodeMessage,
6
+ encodeValue,
7
+ decodeValue,
8
+ createIsolateRef,
9
+ createCallbackRef,
10
+ createStreamRef,
11
+ createErrorRef,
12
+ createBlobRef,
13
+ createDateRef,
14
+ createRegExpRef,
15
+ createUndefinedRef,
16
+ createBigIntRef,
17
+ createRequestRef,
18
+ createResponseRef,
19
+ createHeadersRef,
20
+ createFileRef,
21
+ createFormDataRef,
22
+ createURLRef,
23
+ createPromiseRef,
24
+ createAsyncIteratorRef,
25
+ ExtType
26
+ } from "./codec.mjs";
27
+ import {
28
+ marshalValue,
29
+ marshalValueSync,
30
+ unmarshalValue,
31
+ MarshalError,
32
+ isPromiseRef,
33
+ isAsyncIteratorRef
34
+ } from "./marshalValue.mjs";
35
+ import {
36
+ serializeRequest,
37
+ serializeResponse,
38
+ deserializeRequest,
39
+ deserializeResponse
40
+ } from "./serialization.mjs";
41
+ import {
42
+ buildFrame,
43
+ buildFrames,
44
+ createFrameParser,
45
+ parseFrame,
46
+ getMessageTypeName,
47
+ HEADER_SIZE,
48
+ MAX_FRAME_SIZE,
49
+ STREAM_THRESHOLD,
50
+ STREAM_CHUNK_SIZE,
51
+ STREAM_DEFAULT_CREDIT
52
+ } from "./framing.mjs";
53
+ export {
54
+ unmarshalValue,
55
+ serializeResponse,
56
+ serializeRequest,
57
+ parseFrame,
58
+ marshalValueSync,
59
+ marshalValue,
60
+ isPromiseRef,
61
+ isAsyncIteratorRef,
62
+ getMessageTypeName,
63
+ encodeValue,
64
+ encodeMessage,
65
+ deserializeResponse,
66
+ deserializeRequest,
67
+ decodeValue,
68
+ decodeMessage,
69
+ createUndefinedRef,
70
+ createURLRef,
71
+ createStreamRef,
72
+ createResponseRef,
73
+ createRequestRef,
74
+ createRegExpRef,
75
+ createPromiseRef,
76
+ createIsolateRef,
77
+ createHeadersRef,
78
+ createFrameParser,
79
+ createFormDataRef,
80
+ createFileRef,
81
+ createErrorRef,
82
+ createDateRef,
83
+ createCallbackRef,
84
+ createBlobRef,
85
+ createBigIntRef,
86
+ createAsyncIteratorRef,
87
+ buildFrames,
88
+ buildFrame,
89
+ STREAM_THRESHOLD,
90
+ STREAM_DEFAULT_CREDIT,
91
+ STREAM_CHUNK_SIZE,
92
+ MarshalError,
93
+ MAX_FRAME_SIZE,
94
+ HEADER_SIZE,
95
+ ExtType
96
+ };
97
+
98
+ //# debugId=856F6F1774D4093364756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/protocol/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * ./index.ts\n *\n * Protocol definitions, codec, and framing for the isolate daemon.\n */\n\n// Types and utilities\nexport * from \"./types.mjs\";\n\n// Codec\nexport {\n encodeMessage,\n decodeMessage,\n encodeValue,\n decodeValue,\n createIsolateRef,\n createCallbackRef,\n createStreamRef,\n createErrorRef,\n createBlobRef,\n createDateRef,\n createRegExpRef,\n createUndefinedRef,\n createBigIntRef,\n createRequestRef,\n createResponseRef,\n createHeadersRef,\n createFileRef,\n createFormDataRef,\n createURLRef,\n createPromiseRef,\n createAsyncIteratorRef,\n ExtType,\n type IsolateRef,\n type CallbackRef,\n type StreamRef,\n type ErrorRef,\n type BlobRef,\n type DateRef,\n type RegExpRef,\n type UndefinedRef,\n type BigIntRef,\n type RequestRef,\n type ResponseRef,\n type HeadersRef,\n type FileRef,\n type FormDataRef,\n type URLRef,\n type PromiseRef,\n type AsyncIteratorRef,\n type ExtensionType,\n} from \"./codec.mjs\";\n\n// Value marshalling\nexport {\n marshalValue,\n marshalValueSync,\n unmarshalValue,\n MarshalError,\n isPromiseRef,\n isAsyncIteratorRef,\n type MarshalContext,\n type UnmarshalContext,\n} from \"./marshalValue.mjs\";\n\n// Request/Response serialization\nexport {\n serializeRequest,\n serializeResponse,\n deserializeRequest,\n deserializeResponse,\n} from \"./serialization.mjs\";\n\n// Framing\nexport {\n buildFrame,\n buildFrames,\n createFrameParser,\n parseFrame,\n getMessageTypeName,\n HEADER_SIZE,\n MAX_FRAME_SIZE,\n STREAM_THRESHOLD,\n STREAM_CHUNK_SIZE,\n STREAM_DEFAULT_CREDIT,\n type ParsedFrame,\n type FrameParser,\n} from \"./framing.mjs\";\n"
6
+ ],
7
+ "mappings": ";AAOA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
8
+ "debugId": "856F6F1774D4093364756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,494 @@
1
+ // src/internal/protocol/marshalValue.ts
2
+ import {
3
+ createCallbackRef,
4
+ createDateRef,
5
+ createRegExpRef,
6
+ createUndefinedRef,
7
+ createBigIntRef,
8
+ createUint8ArrayRef,
9
+ createRequestRef,
10
+ createResponseRef,
11
+ createHeadersRef,
12
+ createFileRef,
13
+ createFormDataRef,
14
+ createURLRef,
15
+ createPromiseRef,
16
+ createAsyncIteratorRef,
17
+ createBlobRef
18
+ } from "./codec.mjs";
19
+
20
+ class MarshalError extends Error {
21
+ constructor(message) {
22
+ super(message);
23
+ this.name = "MarshalError";
24
+ }
25
+ }
26
+ function isPromiseRef(value) {
27
+ return typeof value === "object" && value !== null && value.__type === "PromiseRef";
28
+ }
29
+ function isAsyncIteratorRef(value) {
30
+ return typeof value === "object" && value !== null && value.__type === "AsyncIteratorRef";
31
+ }
32
+ var SUPPORTED_CLASSES = new Set([
33
+ "Date",
34
+ "RegExp",
35
+ "Request",
36
+ "Response",
37
+ "Headers",
38
+ "File",
39
+ "Blob",
40
+ "FormData",
41
+ "URL",
42
+ "Uint8Array",
43
+ "Int8Array",
44
+ "Uint16Array",
45
+ "Int16Array",
46
+ "Uint32Array",
47
+ "Int32Array",
48
+ "Float32Array",
49
+ "Float64Array",
50
+ "BigInt64Array",
51
+ "BigUint64Array",
52
+ "ArrayBuffer",
53
+ "DataView"
54
+ ]);
55
+ function isTypedArray(value) {
56
+ return value instanceof Uint8Array || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Uint32Array || value instanceof Int32Array || value instanceof Float32Array || value instanceof Float64Array || value instanceof BigInt64Array || value instanceof BigUint64Array || value instanceof DataView;
57
+ }
58
+ function isAsyncIterable(value) {
59
+ return typeof value === "object" && value !== null && Symbol.asyncIterator in value && typeof value[Symbol.asyncIterator] === "function";
60
+ }
61
+ var MAX_DEPTH = 100;
62
+ async function marshalValue(value, ctx, depth = 0, seen = new WeakSet) {
63
+ if (depth > MAX_DEPTH) {
64
+ throw new MarshalError(`Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`);
65
+ }
66
+ if (value === null) {
67
+ return null;
68
+ }
69
+ if (value === undefined) {
70
+ return createUndefinedRef();
71
+ }
72
+ const type = typeof value;
73
+ if (type === "string" || type === "number" || type === "boolean") {
74
+ return value;
75
+ }
76
+ if (type === "bigint") {
77
+ return createBigIntRef(value.toString());
78
+ }
79
+ if (type === "function") {
80
+ if (!ctx?.registerCallback) {
81
+ throw new MarshalError("Cannot marshal function: no registerCallback provided in context");
82
+ }
83
+ const callbackId = ctx.registerCallback(value);
84
+ return createCallbackRef(callbackId);
85
+ }
86
+ if (type === "object") {
87
+ const obj = value;
88
+ if (seen.has(obj)) {
89
+ throw new MarshalError("Cannot marshal value: circular reference detected");
90
+ }
91
+ if (obj instanceof Date) {
92
+ return createDateRef(obj.getTime());
93
+ }
94
+ if (obj instanceof RegExp) {
95
+ return createRegExpRef(obj.source, obj.flags);
96
+ }
97
+ if (obj instanceof URL) {
98
+ return createURLRef(obj.href);
99
+ }
100
+ if (typeof Headers !== "undefined" && obj instanceof Headers) {
101
+ const pairs = [];
102
+ obj.forEach((value2, key) => {
103
+ pairs.push([key, value2]);
104
+ });
105
+ return createHeadersRef(pairs);
106
+ }
107
+ if (obj instanceof Uint8Array) {
108
+ return createUint8ArrayRef(Array.from(obj));
109
+ }
110
+ if (obj instanceof ArrayBuffer) {
111
+ return createUint8ArrayRef(Array.from(new Uint8Array(obj)));
112
+ }
113
+ if (isTypedArray(obj)) {
114
+ const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);
115
+ return createUint8ArrayRef(Array.from(u8));
116
+ }
117
+ if (obj instanceof Promise) {
118
+ if (!ctx?.registerPromise) {
119
+ throw new MarshalError("Cannot marshal Promise: no registerPromise provided in context");
120
+ }
121
+ const promiseId = ctx.registerPromise(obj);
122
+ return createPromiseRef(promiseId);
123
+ }
124
+ if (isAsyncIterable(obj)) {
125
+ if (!ctx?.registerIterator) {
126
+ throw new MarshalError("Cannot marshal AsyncIterable: no registerIterator provided in context");
127
+ }
128
+ const iterator = obj[Symbol.asyncIterator]();
129
+ const iteratorId = ctx.registerIterator(iterator);
130
+ return createAsyncIteratorRef(iteratorId);
131
+ }
132
+ seen.add(obj);
133
+ if (typeof Request !== "undefined" && obj instanceof Request) {
134
+ const req = obj;
135
+ const headers = [];
136
+ req.headers.forEach((value2, key) => {
137
+ headers.push([key, value2]);
138
+ });
139
+ let body = null;
140
+ if (req.body) {
141
+ const cloned = req.clone();
142
+ body = Array.from(new Uint8Array(await cloned.arrayBuffer()));
143
+ }
144
+ return createRequestRef(req.url, req.method, headers, body, {
145
+ mode: req.mode,
146
+ credentials: req.credentials,
147
+ cache: req.cache,
148
+ redirect: req.redirect,
149
+ referrer: req.referrer,
150
+ referrerPolicy: req.referrerPolicy,
151
+ integrity: req.integrity
152
+ });
153
+ }
154
+ if (typeof Response !== "undefined" && obj instanceof Response) {
155
+ const res = obj;
156
+ const headers = [];
157
+ res.headers.forEach((value2, key) => {
158
+ headers.push([key, value2]);
159
+ });
160
+ let body = null;
161
+ if (res.body) {
162
+ const cloned = res.clone();
163
+ body = Array.from(new Uint8Array(await cloned.arrayBuffer()));
164
+ }
165
+ return createResponseRef(res.status, res.statusText, headers, body);
166
+ }
167
+ if (typeof File !== "undefined" && obj instanceof File) {
168
+ const file = obj;
169
+ const data = Array.from(new Uint8Array(await file.arrayBuffer()));
170
+ return createFileRef(file.name, file.type, file.lastModified, data);
171
+ }
172
+ if (typeof Blob !== "undefined" && obj instanceof Blob) {
173
+ const blob = obj;
174
+ if (ctx?.registerBlob) {
175
+ const blobId = ctx.registerBlob(blob);
176
+ return createBlobRef(blobId, blob.size, blob.type);
177
+ }
178
+ const data = Array.from(new Uint8Array(await blob.arrayBuffer()));
179
+ return createFileRef("", blob.type, Date.now(), data);
180
+ }
181
+ if (typeof FormData !== "undefined" && obj instanceof FormData) {
182
+ const fd = obj;
183
+ const entries = [];
184
+ for (const [key, value2] of fd.entries()) {
185
+ if (typeof value2 === "string") {
186
+ entries.push([key, value2]);
187
+ } else {
188
+ const file = value2;
189
+ const data = Array.from(new Uint8Array(await file.arrayBuffer()));
190
+ const fileRef = createFileRef(file.name ?? "", file.type, file.lastModified ?? Date.now(), data);
191
+ entries.push([key, fileRef]);
192
+ }
193
+ }
194
+ return createFormDataRef(entries);
195
+ }
196
+ if (Array.isArray(obj)) {
197
+ const result2 = [];
198
+ for (const item of obj) {
199
+ result2.push(await marshalValue(item, ctx, depth + 1, seen));
200
+ }
201
+ return result2;
202
+ }
203
+ const constructorName = obj.constructor?.name;
204
+ if (constructorName && constructorName !== "Object") {
205
+ if (!SUPPORTED_CLASSES.has(constructorName)) {
206
+ throw new MarshalError(`Cannot marshal class instance of type "${constructorName}". ` + `Only plain objects and supported classes are allowed.`);
207
+ }
208
+ }
209
+ const result = {};
210
+ for (const key of Object.keys(obj)) {
211
+ result[key] = await marshalValue(obj[key], ctx, depth + 1, seen);
212
+ }
213
+ return result;
214
+ }
215
+ if (type === "symbol") {
216
+ throw new MarshalError("Cannot marshal Symbol values");
217
+ }
218
+ throw new MarshalError(`Cannot marshal value of type "${type}"`);
219
+ }
220
+ function marshalValueSync(value, ctx, depth = 0, seen = new WeakSet) {
221
+ if (depth > MAX_DEPTH) {
222
+ throw new MarshalError(`Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`);
223
+ }
224
+ if (value === null) {
225
+ return null;
226
+ }
227
+ if (value === undefined) {
228
+ return createUndefinedRef();
229
+ }
230
+ const type = typeof value;
231
+ if (type === "string" || type === "number" || type === "boolean") {
232
+ return value;
233
+ }
234
+ if (type === "bigint") {
235
+ return createBigIntRef(value.toString());
236
+ }
237
+ if (type === "function") {
238
+ if (!ctx?.registerCallback) {
239
+ throw new MarshalError("Cannot marshal function: no registerCallback provided in context");
240
+ }
241
+ const callbackId = ctx.registerCallback(value);
242
+ return createCallbackRef(callbackId);
243
+ }
244
+ if (type === "object") {
245
+ const obj = value;
246
+ if (seen.has(obj)) {
247
+ throw new MarshalError("Cannot marshal value: circular reference detected");
248
+ }
249
+ if (obj instanceof Date) {
250
+ return createDateRef(obj.getTime());
251
+ }
252
+ if (obj instanceof RegExp) {
253
+ return createRegExpRef(obj.source, obj.flags);
254
+ }
255
+ if (obj instanceof URL) {
256
+ return createURLRef(obj.href);
257
+ }
258
+ if (typeof Headers !== "undefined" && obj instanceof Headers) {
259
+ const pairs = [];
260
+ obj.forEach((value2, key) => {
261
+ pairs.push([key, value2]);
262
+ });
263
+ return createHeadersRef(pairs);
264
+ }
265
+ if (obj instanceof Uint8Array) {
266
+ return createUint8ArrayRef(Array.from(obj));
267
+ }
268
+ if (obj instanceof ArrayBuffer) {
269
+ return createUint8ArrayRef(Array.from(new Uint8Array(obj)));
270
+ }
271
+ if (isTypedArray(obj)) {
272
+ const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);
273
+ return createUint8ArrayRef(Array.from(u8));
274
+ }
275
+ if (obj instanceof Promise) {
276
+ if (!ctx?.registerPromise) {
277
+ throw new MarshalError("Cannot marshal Promise: no registerPromise provided in context");
278
+ }
279
+ const promiseId = ctx.registerPromise(obj);
280
+ return createPromiseRef(promiseId);
281
+ }
282
+ if (isAsyncIterable(obj)) {
283
+ if (!ctx?.registerIterator) {
284
+ throw new MarshalError("Cannot marshal AsyncIterable: no registerIterator provided in context");
285
+ }
286
+ const iterator = obj[Symbol.asyncIterator]();
287
+ const iteratorId = ctx.registerIterator(iterator);
288
+ return createAsyncIteratorRef(iteratorId);
289
+ }
290
+ seen.add(obj);
291
+ if (typeof Request !== "undefined" && obj instanceof Request) {
292
+ throw new MarshalError("Cannot marshal Request synchronously. Use marshalValue() instead.");
293
+ }
294
+ if (typeof Response !== "undefined" && obj instanceof Response) {
295
+ throw new MarshalError("Cannot marshal Response synchronously. Use marshalValue() instead.");
296
+ }
297
+ if (typeof File !== "undefined" && obj instanceof File) {
298
+ throw new MarshalError("Cannot marshal File synchronously. Use marshalValue() instead.");
299
+ }
300
+ if (typeof Blob !== "undefined" && obj instanceof Blob) {
301
+ throw new MarshalError("Cannot marshal Blob synchronously. Use marshalValue() instead.");
302
+ }
303
+ if (typeof FormData !== "undefined" && obj instanceof FormData) {
304
+ throw new MarshalError("Cannot marshal FormData synchronously. Use marshalValue() instead.");
305
+ }
306
+ if (Array.isArray(obj)) {
307
+ return obj.map((item) => marshalValueSync(item, ctx, depth + 1, seen));
308
+ }
309
+ const constructorName = obj.constructor?.name;
310
+ if (constructorName && constructorName !== "Object") {
311
+ if (!SUPPORTED_CLASSES.has(constructorName)) {
312
+ throw new MarshalError(`Cannot marshal class instance of type "${constructorName}". ` + `Only plain objects and supported classes are allowed.`);
313
+ }
314
+ }
315
+ const result = {};
316
+ for (const key of Object.keys(obj)) {
317
+ result[key] = marshalValueSync(obj[key], ctx, depth + 1, seen);
318
+ }
319
+ return result;
320
+ }
321
+ if (type === "symbol") {
322
+ throw new MarshalError("Cannot marshal Symbol values");
323
+ }
324
+ throw new MarshalError(`Cannot marshal value of type "${type}"`);
325
+ }
326
+ function isRef(value) {
327
+ return typeof value === "object" && value !== null && "__type" in value && typeof value.__type === "string";
328
+ }
329
+ function unmarshalValue(value, ctx, depth = 0) {
330
+ if (depth > MAX_DEPTH) {
331
+ throw new MarshalError(`Maximum unmarshalling depth (${MAX_DEPTH}) exceeded.`);
332
+ }
333
+ if (value === null) {
334
+ return null;
335
+ }
336
+ const type = typeof value;
337
+ if (type === "string" || type === "number" || type === "boolean") {
338
+ return value;
339
+ }
340
+ if (value instanceof Uint8Array) {
341
+ return value;
342
+ }
343
+ if (type === "object") {
344
+ if (isRef(value)) {
345
+ const refType = value.__type;
346
+ switch (refType) {
347
+ case "UndefinedRef":
348
+ return;
349
+ case "DateRef": {
350
+ const ref = value;
351
+ return new Date(ref.timestamp);
352
+ }
353
+ case "RegExpRef": {
354
+ const ref = value;
355
+ return new RegExp(ref.source, ref.flags);
356
+ }
357
+ case "BigIntRef": {
358
+ const ref = value;
359
+ return BigInt(ref.value);
360
+ }
361
+ case "Uint8ArrayRef": {
362
+ const ref = value;
363
+ return new Uint8Array(ref.data);
364
+ }
365
+ case "URLRef": {
366
+ const ref = value;
367
+ return new URL(ref.href);
368
+ }
369
+ case "HeadersRef": {
370
+ const ref = value;
371
+ return new Headers(ref.pairs);
372
+ }
373
+ case "RequestRef": {
374
+ const ref = value;
375
+ const body = ref.body ? new Uint8Array(ref.body) : null;
376
+ const init = {
377
+ method: ref.method,
378
+ headers: ref.headers,
379
+ body
380
+ };
381
+ if (ref.mode)
382
+ init.mode = ref.mode;
383
+ if (ref.credentials)
384
+ init.credentials = ref.credentials;
385
+ if (ref.cache)
386
+ init.cache = ref.cache;
387
+ if (ref.redirect)
388
+ init.redirect = ref.redirect;
389
+ if (ref.referrer)
390
+ init.referrer = ref.referrer;
391
+ if (ref.referrerPolicy)
392
+ init.referrerPolicy = ref.referrerPolicy;
393
+ if (ref.integrity)
394
+ init.integrity = ref.integrity;
395
+ return new Request(ref.url, init);
396
+ }
397
+ case "ResponseRef": {
398
+ const ref = value;
399
+ const body = ref.body ? new Uint8Array(ref.body) : null;
400
+ return new Response(body, {
401
+ status: ref.status,
402
+ statusText: ref.statusText,
403
+ headers: ref.headers
404
+ });
405
+ }
406
+ case "FileRef": {
407
+ const ref = value;
408
+ const data = new Uint8Array(ref.data);
409
+ if (!ref.name) {
410
+ return new Blob([data], { type: ref.type });
411
+ }
412
+ return new File([data], ref.name, {
413
+ type: ref.type,
414
+ lastModified: ref.lastModified
415
+ });
416
+ }
417
+ case "BlobRef": {
418
+ const ref = value;
419
+ if (ctx?.getBlob) {
420
+ const blob = ctx.getBlob(ref.blobId);
421
+ if (blob)
422
+ return blob;
423
+ }
424
+ throw new MarshalError(`Cannot unmarshal BlobRef: no getBlob provided or blob not found`);
425
+ }
426
+ case "FormDataRef": {
427
+ const ref = value;
428
+ const fd = new FormData;
429
+ for (const [key, entry] of ref.entries) {
430
+ if (typeof entry === "string") {
431
+ fd.append(key, entry);
432
+ } else {
433
+ const file = unmarshalValue(entry, ctx, depth + 1);
434
+ fd.append(key, file);
435
+ }
436
+ }
437
+ return fd;
438
+ }
439
+ case "CallbackRef": {
440
+ const ref = value;
441
+ if (!ctx?.getCallback) {
442
+ throw new MarshalError(`Cannot unmarshal CallbackRef: no getCallback provided`);
443
+ }
444
+ const callback = ctx.getCallback(ref.callbackId);
445
+ if (!callback) {
446
+ throw new MarshalError(`Cannot unmarshal CallbackRef: callback ${ref.callbackId} not found`);
447
+ }
448
+ return callback;
449
+ }
450
+ case "PromiseRef": {
451
+ const ref = value;
452
+ if (!ctx?.createPromiseProxy) {
453
+ throw new MarshalError(`Cannot unmarshal PromiseRef: no createPromiseProxy provided`);
454
+ }
455
+ return ctx.createPromiseProxy(ref.promiseId);
456
+ }
457
+ case "AsyncIteratorRef": {
458
+ const ref = value;
459
+ if (!ctx?.createIteratorProxy) {
460
+ throw new MarshalError(`Cannot unmarshal AsyncIteratorRef: no createIteratorProxy provided`);
461
+ }
462
+ const iterator = ctx.createIteratorProxy(ref.iteratorId);
463
+ return {
464
+ [Symbol.asyncIterator]() {
465
+ return iterator;
466
+ }
467
+ };
468
+ }
469
+ default:
470
+ return value;
471
+ }
472
+ }
473
+ if (Array.isArray(value)) {
474
+ return value.map((item) => unmarshalValue(item, ctx, depth + 1));
475
+ }
476
+ const obj = value;
477
+ const result = {};
478
+ for (const key of Object.keys(obj)) {
479
+ result[key] = unmarshalValue(obj[key], ctx, depth + 1);
480
+ }
481
+ return result;
482
+ }
483
+ return value;
484
+ }
485
+ export {
486
+ unmarshalValue,
487
+ marshalValueSync,
488
+ marshalValue,
489
+ isPromiseRef,
490
+ isAsyncIteratorRef,
491
+ MarshalError
492
+ };
493
+
494
+ //# debugId=EB3F328D0F10369764756E2164756E21