@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,996 @@
1
+ /**
2
+ * Message types for the isolate daemon protocol.
3
+ *
4
+ * Frame format:
5
+ * ┌──────────┬──────────┬─────────────────┐
6
+ * │ Length │ Type │ Payload │
7
+ * │ (4 bytes)│ (1 byte) │ (MessagePack) │
8
+ * └──────────┴──────────┴─────────────────┘
9
+ */
10
+ export declare const MessageType: {
11
+ readonly CREATE_RUNTIME: 1;
12
+ readonly DISPOSE_RUNTIME: 2;
13
+ readonly EVAL: 3;
14
+ readonly DISPATCH_REQUEST: 4;
15
+ readonly DISPATCH_REQUEST_ABORT: 5;
16
+ readonly WS_OPEN: 16;
17
+ readonly WS_MESSAGE: 17;
18
+ readonly WS_CLOSE: 18;
19
+ readonly FETCH_GET_UPGRADE_REQUEST: 19;
20
+ readonly FETCH_HAS_SERVE_HANDLER: 20;
21
+ readonly FETCH_HAS_ACTIVE_CONNECTIONS: 21;
22
+ readonly FETCH_WS_ERROR: 22;
23
+ readonly TIMERS_CLEAR_ALL: 23;
24
+ readonly CONSOLE_RESET: 24;
25
+ readonly CONSOLE_GET_TIMERS: 25;
26
+ readonly CONSOLE_GET_COUNTERS: 26;
27
+ readonly CONSOLE_GET_GROUP_DEPTH: 27;
28
+ readonly RUN_TESTS: 33;
29
+ readonly RESET_TEST_ENV: 34;
30
+ readonly HAS_TESTS: 35;
31
+ readonly GET_TEST_COUNT: 36;
32
+ readonly GET_COLLECTED_DATA: 51;
33
+ readonly CLEAR_COLLECTED_DATA: 52;
34
+ readonly RESPONSE_OK: 128;
35
+ readonly RESPONSE_ERROR: 129;
36
+ readonly RESPONSE_STREAM_START: 130;
37
+ readonly RESPONSE_STREAM_CHUNK: 131;
38
+ readonly RESPONSE_STREAM_END: 132;
39
+ readonly CALLBACK_INVOKE: 144;
40
+ readonly CALLBACK_RESPONSE: 145;
41
+ readonly CALLBACK_STREAM_START: 146;
42
+ readonly CALLBACK_STREAM_CHUNK: 147;
43
+ readonly CALLBACK_STREAM_END: 148;
44
+ readonly CALLBACK_STREAM_CANCEL: 149;
45
+ readonly CALLBACK_ABORT: 150;
46
+ readonly STREAM_PUSH: 160;
47
+ readonly STREAM_PULL: 161;
48
+ readonly STREAM_CLOSE: 162;
49
+ readonly STREAM_ERROR: 163;
50
+ readonly ISOLATE_EVENT: 192;
51
+ readonly CLIENT_EVENT: 193;
52
+ readonly PING: 240;
53
+ readonly PONG: 241;
54
+ };
55
+ export type MessageType = (typeof MessageType)[keyof typeof MessageType];
56
+ /** Reverse lookup for message type names */
57
+ export declare const MessageTypeName: Record<number, string>;
58
+ export declare const ErrorCode: {
59
+ readonly INVALID_MESSAGE: 1001;
60
+ readonly UNKNOWN_MESSAGE_TYPE: 1002;
61
+ readonly MISSING_REQUIRED_FIELD: 1003;
62
+ readonly ISOLATE_NOT_FOUND: 2001;
63
+ readonly ISOLATE_DISPOSED: 2002;
64
+ readonly ISOLATE_MEMORY_LIMIT: 2003;
65
+ readonly ISOLATE_TIMEOUT: 2004;
66
+ readonly SCRIPT_ERROR: 3001;
67
+ readonly CALLBACK_ERROR: 3002;
68
+ readonly STREAM_NOT_FOUND: 4001;
69
+ readonly STREAM_CLOSED: 4002;
70
+ readonly CONNECTION_LOST: 5001;
71
+ };
72
+ export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
73
+ export interface BaseMessage {
74
+ /** Unique request ID for correlation */
75
+ requestId: number;
76
+ }
77
+ /** Custom function type indicator */
78
+ export type CustomFunctionType = 'sync' | 'async' | 'asyncIterator';
79
+ export interface CallbackRegistration {
80
+ /** Unique ID for this callback */
81
+ callbackId: number;
82
+ /** Callback name (e.g., "log", "warn", "fetch") */
83
+ name: string;
84
+ /** Function type: sync, async, or asyncIterator */
85
+ type: CustomFunctionType;
86
+ }
87
+ export interface ConsoleCallbackRegistrations {
88
+ onEntry?: CallbackRegistration;
89
+ }
90
+ export interface FsCallbackRegistrations {
91
+ readFile?: CallbackRegistration;
92
+ writeFile?: CallbackRegistration;
93
+ unlink?: CallbackRegistration;
94
+ readdir?: CallbackRegistration;
95
+ mkdir?: CallbackRegistration;
96
+ rmdir?: CallbackRegistration;
97
+ stat?: CallbackRegistration;
98
+ rename?: CallbackRegistration;
99
+ }
100
+ export interface CustomFunctionRegistrations {
101
+ [name: string]: CallbackRegistration;
102
+ }
103
+ /**
104
+ * Playwright operation sent from daemon to client via callback.
105
+ * The client executes this operation on the real Page object.
106
+ */
107
+ export interface PlaywrightOperation {
108
+ type: "goto" | "reload" | "url" | "title" | "content" | "waitForSelector" | "waitForTimeout" | "waitForLoadState" | "evaluate" | "locatorAction" | "expectLocator" | "expectPage" | "request" | "goBack" | "goForward" | "waitForURL" | "waitForURLPredicate" | "waitForRequestStart" | "waitForRequestFinish" | "waitForRequestPredicateFinish" | "waitForResponseStart" | "waitForResponseFinish" | "waitForResponsePredicateFinish" | "clearCookies" | "screenshot" | "setViewportSize" | "viewportSize" | "emulateMedia" | "setExtraHTTPHeaders" | "bringToFront" | "close" | "isClosed" | "pdf" | "pause" | "frames" | "mainFrame" | "keyboardType" | "keyboardPress" | "keyboardDown" | "keyboardUp" | "keyboardInsertText" | "mouseMove" | "mouseClick" | "mouseDown" | "mouseUp" | "mouseWheel" | "addCookies" | "cookies" | "newContext" | "newPage" | "closeContext";
109
+ args: unknown[];
110
+ /** Target page ID (undefined = default page "page_0") */
111
+ pageId?: string;
112
+ /** Target context ID (undefined = default context "ctx_0") */
113
+ contextId?: string;
114
+ }
115
+ /**
116
+ * Result of a playwright operation.
117
+ */
118
+ export type PlaywrightResult = {
119
+ ok: true;
120
+ value?: unknown;
121
+ } | {
122
+ ok: false;
123
+ error: {
124
+ name: string;
125
+ message: string;
126
+ };
127
+ };
128
+ /**
129
+ * Callback registrations for playwright operations.
130
+ */
131
+ export interface PlaywrightCallbackRegistration {
132
+ /** Callback ID for page operations */
133
+ handlerCallbackId: number;
134
+ /** If true, browser console logs are printed to stdout */
135
+ console?: boolean;
136
+ /** Optional callback for browser console log events (from the page, not sandbox) */
137
+ onBrowserConsoleLogCallbackId?: number;
138
+ /** Optional callback for network request events */
139
+ onNetworkRequestCallbackId?: number;
140
+ /** Optional callback for network response events */
141
+ onNetworkResponseCallbackId?: number;
142
+ }
143
+ export interface RuntimeCallbackRegistrations {
144
+ console?: ConsoleCallbackRegistrations;
145
+ fetch?: CallbackRegistration;
146
+ fs?: FsCallbackRegistrations;
147
+ moduleLoader?: CallbackRegistration;
148
+ custom?: CustomFunctionRegistrations;
149
+ playwright?: PlaywrightCallbackRegistration;
150
+ }
151
+ export interface TestEnvironmentCallbackRegistrations {
152
+ /** Callback for test events */
153
+ onEvent?: CallbackRegistration;
154
+ }
155
+ export interface TestEnvironmentOptionsProtocol {
156
+ /** Callback registrations for test events */
157
+ callbacks?: TestEnvironmentCallbackRegistrations;
158
+ /** Timeout for individual tests (ms) */
159
+ testTimeout?: number;
160
+ }
161
+ export interface PlaywrightOptionsProtocol {
162
+ /** Default timeout for Playwright operations in ms */
163
+ timeout?: number;
164
+ }
165
+ export interface CreateRuntimeRequest extends BaseMessage {
166
+ type: typeof MessageType.CREATE_RUNTIME;
167
+ options: {
168
+ memoryLimitMB?: number;
169
+ executionTimeout?: number;
170
+ callbacks?: RuntimeCallbackRegistrations;
171
+ /** Current working directory for path.resolve(). Defaults to "/" */
172
+ cwd?: string;
173
+ /** Enable test environment (describe, it, expect, etc.) */
174
+ testEnvironment?: boolean | TestEnvironmentOptionsProtocol;
175
+ /** Playwright runtime options */
176
+ playwright?: PlaywrightOptionsProtocol;
177
+ /** Namespace ID for runtime pooling/reuse. If provided, runtime will be cached on dispose. */
178
+ namespaceId?: string;
179
+ };
180
+ }
181
+ export interface DisposeRuntimeRequest extends BaseMessage {
182
+ type: typeof MessageType.DISPOSE_RUNTIME;
183
+ isolateId: string;
184
+ /** When true, permanently delete the runtime instead of soft-deleting namespaced runtimes. */
185
+ hard?: boolean;
186
+ /** Optional caller-supplied reason for disposal, used for diagnostics/logging. */
187
+ reason?: string;
188
+ }
189
+ export interface EvalRequest extends BaseMessage {
190
+ type: typeof MessageType.EVAL;
191
+ isolateId: string;
192
+ code: string;
193
+ filename?: string;
194
+ executionTimeout?: number;
195
+ }
196
+ export interface SerializedRequest {
197
+ method: string;
198
+ url: string;
199
+ headers: [string, string][];
200
+ /** Inline body for small payloads */
201
+ body?: Uint8Array | null;
202
+ /** Stream reference for large/streaming bodies */
203
+ bodyStreamId?: number;
204
+ /** Whether the request signal was already aborted when serialized */
205
+ signalAborted?: boolean;
206
+ }
207
+ export interface DispatchRequestRequest extends BaseMessage {
208
+ type: typeof MessageType.DISPATCH_REQUEST;
209
+ isolateId: string;
210
+ request: SerializedRequest;
211
+ context?: {
212
+ requestId?: string;
213
+ metadata?: Record<string, string>;
214
+ };
215
+ }
216
+ /**
217
+ * Abort an in-flight DISPATCH_REQUEST.
218
+ * This is fire-and-forget and does not produce a response.
219
+ */
220
+ export interface DispatchRequestAbort {
221
+ type: typeof MessageType.DISPATCH_REQUEST_ABORT;
222
+ isolateId: string;
223
+ /** requestId of the corresponding DISPATCH_REQUEST */
224
+ targetRequestId: number;
225
+ }
226
+ export interface WsOpenRequest extends BaseMessage {
227
+ type: typeof MessageType.WS_OPEN;
228
+ isolateId: string;
229
+ connectionId: string;
230
+ }
231
+ export interface WsMessageRequest extends BaseMessage {
232
+ type: typeof MessageType.WS_MESSAGE;
233
+ isolateId: string;
234
+ connectionId: string;
235
+ data: string | Uint8Array;
236
+ }
237
+ export interface WsCloseRequest extends BaseMessage {
238
+ type: typeof MessageType.WS_CLOSE;
239
+ isolateId: string;
240
+ connectionId: string;
241
+ code: number;
242
+ reason: string;
243
+ }
244
+ export interface FetchGetUpgradeRequestRequest extends BaseMessage {
245
+ type: typeof MessageType.FETCH_GET_UPGRADE_REQUEST;
246
+ isolateId: string;
247
+ }
248
+ export interface FetchHasServeHandlerRequest extends BaseMessage {
249
+ type: typeof MessageType.FETCH_HAS_SERVE_HANDLER;
250
+ isolateId: string;
251
+ }
252
+ export interface FetchHasActiveConnectionsRequest extends BaseMessage {
253
+ type: typeof MessageType.FETCH_HAS_ACTIVE_CONNECTIONS;
254
+ isolateId: string;
255
+ }
256
+ export interface FetchWsErrorRequest extends BaseMessage {
257
+ type: typeof MessageType.FETCH_WS_ERROR;
258
+ isolateId: string;
259
+ connectionId: string;
260
+ error: string;
261
+ }
262
+ export interface TimersClearAllRequest extends BaseMessage {
263
+ type: typeof MessageType.TIMERS_CLEAR_ALL;
264
+ isolateId: string;
265
+ }
266
+ export interface ConsoleResetRequest extends BaseMessage {
267
+ type: typeof MessageType.CONSOLE_RESET;
268
+ isolateId: string;
269
+ }
270
+ export interface ConsoleGetTimersRequest extends BaseMessage {
271
+ type: typeof MessageType.CONSOLE_GET_TIMERS;
272
+ isolateId: string;
273
+ }
274
+ export interface ConsoleGetCountersRequest extends BaseMessage {
275
+ type: typeof MessageType.CONSOLE_GET_COUNTERS;
276
+ isolateId: string;
277
+ }
278
+ export interface ConsoleGetGroupDepthRequest extends BaseMessage {
279
+ type: typeof MessageType.CONSOLE_GET_GROUP_DEPTH;
280
+ isolateId: string;
281
+ }
282
+ export interface RunTestsRequest extends BaseMessage {
283
+ type: typeof MessageType.RUN_TESTS;
284
+ isolateId: string;
285
+ timeout?: number;
286
+ }
287
+ export interface ResetTestEnvRequest extends BaseMessage {
288
+ type: typeof MessageType.RESET_TEST_ENV;
289
+ isolateId: string;
290
+ }
291
+ export interface HasTestsRequest extends BaseMessage {
292
+ type: typeof MessageType.HAS_TESTS;
293
+ isolateId: string;
294
+ }
295
+ export interface GetTestCountRequest extends BaseMessage {
296
+ type: typeof MessageType.GET_TEST_COUNT;
297
+ isolateId: string;
298
+ }
299
+ export interface GetCollectedDataRequest extends BaseMessage {
300
+ type: typeof MessageType.GET_COLLECTED_DATA;
301
+ isolateId: string;
302
+ }
303
+ export interface ClearCollectedDataRequest extends BaseMessage {
304
+ type: typeof MessageType.CLEAR_COLLECTED_DATA;
305
+ isolateId: string;
306
+ }
307
+ export interface ResponseOk extends BaseMessage {
308
+ type: typeof MessageType.RESPONSE_OK;
309
+ data?: unknown;
310
+ }
311
+ export interface ResponseError extends BaseMessage {
312
+ type: typeof MessageType.RESPONSE_ERROR;
313
+ code: ErrorCode;
314
+ message: string;
315
+ details?: {
316
+ name: string;
317
+ stack?: string;
318
+ cause?: unknown;
319
+ };
320
+ }
321
+ export interface SerializedResponse {
322
+ status: number;
323
+ statusText: string;
324
+ headers: [string, string][];
325
+ /** Inline body for small payloads */
326
+ body?: Uint8Array | null;
327
+ /** Stream reference for large/streaming bodies */
328
+ bodyStreamId?: number;
329
+ }
330
+ export interface ResponseStreamStart extends BaseMessage {
331
+ type: typeof MessageType.RESPONSE_STREAM_START;
332
+ streamId: number;
333
+ metadata?: {
334
+ status?: number;
335
+ statusText?: string;
336
+ headers?: [string, string][];
337
+ };
338
+ }
339
+ export interface ResponseStreamChunk extends BaseMessage {
340
+ type: typeof MessageType.RESPONSE_STREAM_CHUNK;
341
+ streamId: number;
342
+ chunk: Uint8Array;
343
+ }
344
+ export interface ResponseStreamEnd extends BaseMessage {
345
+ type: typeof MessageType.RESPONSE_STREAM_END;
346
+ streamId: number;
347
+ }
348
+ export interface CallbackInvoke extends BaseMessage {
349
+ type: typeof MessageType.CALLBACK_INVOKE;
350
+ callbackId: number;
351
+ args: unknown[];
352
+ context?: {
353
+ requestId?: string;
354
+ metadata?: Record<string, string>;
355
+ };
356
+ }
357
+ export interface CallbackResponseMsg extends BaseMessage {
358
+ type: typeof MessageType.CALLBACK_RESPONSE;
359
+ result?: unknown;
360
+ error?: {
361
+ name: string;
362
+ message: string;
363
+ stack?: string;
364
+ };
365
+ }
366
+ /**
367
+ * Start a streaming callback response (client → daemon).
368
+ * Used when the callback returns a Response with a streaming body.
369
+ */
370
+ export interface CallbackStreamStart extends BaseMessage {
371
+ type: typeof MessageType.CALLBACK_STREAM_START;
372
+ /** The stream ID for correlating chunks */
373
+ streamId: number;
374
+ /** Response metadata */
375
+ metadata: {
376
+ status: number;
377
+ statusText: string;
378
+ headers: [string, string][];
379
+ /** Response URL (for network responses) */
380
+ url?: string;
381
+ };
382
+ }
383
+ /**
384
+ * A chunk of streaming callback response data (client → daemon).
385
+ */
386
+ export interface CallbackStreamChunk extends BaseMessage {
387
+ type: typeof MessageType.CALLBACK_STREAM_CHUNK;
388
+ /** The stream ID for correlation */
389
+ streamId: number;
390
+ /** The chunk data */
391
+ chunk: Uint8Array;
392
+ }
393
+ /**
394
+ * End of a streaming callback response (client → daemon).
395
+ */
396
+ export interface CallbackStreamEnd extends BaseMessage {
397
+ type: typeof MessageType.CALLBACK_STREAM_END;
398
+ /** The stream ID for correlation */
399
+ streamId: number;
400
+ }
401
+ /**
402
+ * Cancel a streaming callback response (daemon → client).
403
+ * Tells the client to stop reading the response body.
404
+ */
405
+ export interface CallbackStreamCancel {
406
+ type: typeof MessageType.CALLBACK_STREAM_CANCEL;
407
+ /** The stream ID to cancel */
408
+ streamId: number;
409
+ }
410
+ /**
411
+ * Abort an in-flight callback invocation (daemon → client).
412
+ * Tells the client to cancel the callback identified by targetRequestId.
413
+ */
414
+ export interface CallbackAbort extends BaseMessage {
415
+ type: typeof MessageType.CALLBACK_ABORT;
416
+ /** requestId of the corresponding CALLBACK_INVOKE */
417
+ targetRequestId: number;
418
+ /** Optional reason for observability/debugging */
419
+ reason?: string;
420
+ }
421
+ export interface StreamPush {
422
+ type: typeof MessageType.STREAM_PUSH;
423
+ streamId: number;
424
+ chunk: Uint8Array;
425
+ }
426
+ export interface StreamPull {
427
+ type: typeof MessageType.STREAM_PULL;
428
+ streamId: number;
429
+ maxBytes: number;
430
+ }
431
+ export interface StreamClose {
432
+ type: typeof MessageType.STREAM_CLOSE;
433
+ streamId: number;
434
+ }
435
+ export interface StreamError {
436
+ type: typeof MessageType.STREAM_ERROR;
437
+ streamId: number;
438
+ error: string;
439
+ }
440
+ /** Event name constants for isolate → client events */
441
+ export declare const IsolateEvents: {
442
+ readonly WS_COMMAND: "ws:command";
443
+ readonly WS_CLIENT_CONNECT: "ws:client-connect";
444
+ readonly WS_CLIENT_SEND: "ws:client-send";
445
+ readonly WS_CLIENT_CLOSE: "ws:client-close";
446
+ };
447
+ /** Event name constants for client → daemon events */
448
+ export declare const ClientEvents: {
449
+ readonly WS_CLIENT_OPENED: "ws:client-opened";
450
+ readonly WS_CLIENT_MESSAGE: "ws:client-message";
451
+ readonly WS_CLIENT_CLOSED: "ws:client-closed";
452
+ readonly WS_CLIENT_ERROR: "ws:client-error";
453
+ };
454
+ /** Generic event from daemon to client */
455
+ export interface IsolateEventMessage {
456
+ type: typeof MessageType.ISOLATE_EVENT;
457
+ isolateId: string;
458
+ event: string;
459
+ payload: unknown;
460
+ }
461
+ /** Generic event from client to daemon */
462
+ export interface ClientEventMessage {
463
+ type: typeof MessageType.CLIENT_EVENT;
464
+ isolateId: string;
465
+ event: string;
466
+ payload: unknown;
467
+ }
468
+ export interface WsCommandPayload {
469
+ type: "message" | "close";
470
+ connectionId: string;
471
+ data?: string | Uint8Array;
472
+ code?: number;
473
+ reason?: string;
474
+ }
475
+ export interface WsClientConnectPayload {
476
+ socketId: string;
477
+ url: string;
478
+ protocols?: string[];
479
+ }
480
+ export interface WsClientSendPayload {
481
+ socketId: string;
482
+ data: string | Uint8Array;
483
+ }
484
+ export interface WsClientClosePayload {
485
+ socketId: string;
486
+ code?: number;
487
+ reason?: string;
488
+ }
489
+ export interface WsClientOpenedPayload {
490
+ socketId: string;
491
+ protocol: string;
492
+ extensions: string;
493
+ }
494
+ export interface WsClientMessagePayload {
495
+ socketId: string;
496
+ data: string | Uint8Array;
497
+ }
498
+ export interface WsClientClosedPayload {
499
+ socketId: string;
500
+ code: number;
501
+ reason: string;
502
+ wasClean: boolean;
503
+ }
504
+ export interface WsClientErrorPayload {
505
+ socketId: string;
506
+ }
507
+ /**
508
+ * Unified playwright event type for the onEvent callback.
509
+ */
510
+ export type PlaywrightEvent = {
511
+ type: "browserConsoleLog";
512
+ level: string;
513
+ stdout: string;
514
+ location?: {
515
+ url?: string;
516
+ lineNumber?: number;
517
+ columnNumber?: number;
518
+ };
519
+ timestamp: number;
520
+ } | {
521
+ type: "pageError";
522
+ name: string;
523
+ message: string;
524
+ stack?: string;
525
+ timestamp: number;
526
+ } | {
527
+ type: "networkRequest";
528
+ requestId: string;
529
+ url: string;
530
+ method: string;
531
+ headers: Record<string, string>;
532
+ postData?: string;
533
+ resourceType?: string;
534
+ timestamp: number;
535
+ } | {
536
+ type: "networkResponse";
537
+ requestId: string;
538
+ url: string;
539
+ status: number;
540
+ statusText?: string;
541
+ headers: Record<string, string>;
542
+ resourceType?: string;
543
+ timestamp: number;
544
+ } | {
545
+ type: "requestFailure";
546
+ requestId: string;
547
+ url: string;
548
+ method: string;
549
+ failureText: string;
550
+ resourceType?: string;
551
+ timestamp: number;
552
+ };
553
+ export interface PingMessage {
554
+ type: typeof MessageType.PING;
555
+ }
556
+ export interface PongMessage {
557
+ type: typeof MessageType.PONG;
558
+ }
559
+ export type ClientMessage = CreateRuntimeRequest | DisposeRuntimeRequest | EvalRequest | DispatchRequestRequest | DispatchRequestAbort | WsOpenRequest | WsMessageRequest | WsCloseRequest | FetchGetUpgradeRequestRequest | FetchHasServeHandlerRequest | FetchHasActiveConnectionsRequest | FetchWsErrorRequest | TimersClearAllRequest | ConsoleResetRequest | ConsoleGetTimersRequest | ConsoleGetCountersRequest | ConsoleGetGroupDepthRequest | RunTestsRequest | ResetTestEnvRequest | HasTestsRequest | GetTestCountRequest | GetCollectedDataRequest | ClearCollectedDataRequest | CallbackResponseMsg | CallbackStreamStart | CallbackStreamChunk | CallbackStreamEnd | CallbackStreamCancel | StreamPush | StreamPull | StreamClose | StreamError | ClientEventMessage | PingMessage;
560
+ export type DaemonMessage = ResponseOk | ResponseError | ResponseStreamStart | ResponseStreamChunk | ResponseStreamEnd | CallbackInvoke | CallbackAbort | StreamPush | StreamPull | StreamClose | StreamError | IsolateEventMessage | PongMessage;
561
+ export type Message = ClientMessage | DaemonMessage;
562
+ /**
563
+ * Module loader callback type.
564
+ * Called when the isolate imports a module dynamically.
565
+ *
566
+ * @param moduleName - The module specifier being imported
567
+ * @param importer - Information about the importing module
568
+ * @param importer.path - The resolved path of the importing module
569
+ * @param importer.resolveDir - The directory to resolve relative imports from
570
+ * @returns Object with code and resolveDir for the resolved module
571
+ */
572
+ export type ModuleLoaderCallback = (moduleName: string, importer: {
573
+ path: string;
574
+ resolveDir: string;
575
+ }) => ModuleLoaderResult | Promise<ModuleLoaderResult>;
576
+ export interface ModuleLoaderResult {
577
+ code: string;
578
+ /** The filename for this module (basename only, no slashes). Combined with resolveDir to form the full path. */
579
+ filename: string;
580
+ resolveDir: string;
581
+ /** Mark as static to preserve across namespace reuse (e.g. node_modules).
582
+ * Static modules and their transitive deps should all be static. */
583
+ static?: boolean;
584
+ }
585
+ /**
586
+ * A custom function that can be called from within the isolate.
587
+ */
588
+ export type CustomFunction<T extends any[] = unknown[]> = (...args: T) => unknown | Promise<unknown>;
589
+ /**
590
+ * An async generator function that can be consumed in the isolate via for await...of.
591
+ */
592
+ export type CustomAsyncGeneratorFunction<T extends any[] = unknown[]> = (...args: T) => AsyncGenerator<unknown, unknown, unknown>;
593
+ /**
594
+ * Custom function definition with metadata.
595
+ * Requires explicit `type` property to indicate function behavior.
596
+ */
597
+ export interface CustomFunctionDefinition<T extends any[] = unknown[]> {
598
+ /** The function implementation */
599
+ fn: CustomFunction<T> | CustomAsyncGeneratorFunction<T>;
600
+ /** Function type: 'sync', 'async', or 'asyncIterator' */
601
+ type: CustomFunctionType;
602
+ }
603
+ /**
604
+ * Custom functions to register in the runtime.
605
+ * Each function must be defined with explicit type property.
606
+ *
607
+ * @example
608
+ * ```typescript
609
+ * customFunctions: {
610
+ * // Sync function
611
+ * getConfig: {
612
+ * fn: () => ({ environment: "production" }),
613
+ * type: 'sync',
614
+ * },
615
+ * // Async function
616
+ * hashPassword: {
617
+ * fn: async (password) => bcrypt.hash(password, 10),
618
+ * type: 'async',
619
+ * },
620
+ * // Async iterator function
621
+ * streamData: {
622
+ * fn: async function* (options) {
623
+ * for await (const chunk of someStream) {
624
+ * yield chunk;
625
+ * }
626
+ * },
627
+ * type: 'asyncIterator',
628
+ * },
629
+ * }
630
+ * ```
631
+ */
632
+ export type CustomFunctions<T extends Record<string, any[]> = Record<string, unknown[]>> = {
633
+ [K in keyof T]: CustomFunctionDefinition<T[K]>;
634
+ };
635
+ /**
636
+ * Console entry types for structured console output.
637
+ * Each entry type captures the specific data needed to render like DevTools.
638
+ * Output is pre-formatted as stdout strings (like Node.js console) inside the sandbox.
639
+ */
640
+ export type ConsoleEntry = {
641
+ type: "output";
642
+ level: "log" | "warn" | "error" | "info" | "debug";
643
+ stdout: string;
644
+ groupDepth: number;
645
+ } | {
646
+ /** Browser console output (from Playwright page, not sandbox) */
647
+ type: "browserOutput";
648
+ level: string;
649
+ stdout: string;
650
+ location?: {
651
+ url?: string;
652
+ lineNumber?: number;
653
+ columnNumber?: number;
654
+ };
655
+ timestamp: number;
656
+ } | {
657
+ type: "dir";
658
+ stdout: string;
659
+ groupDepth: number;
660
+ } | {
661
+ type: "table";
662
+ stdout: string;
663
+ groupDepth: number;
664
+ } | {
665
+ type: "time";
666
+ label: string;
667
+ duration: number;
668
+ groupDepth: number;
669
+ } | {
670
+ type: "timeLog";
671
+ label: string;
672
+ duration: number;
673
+ stdout: string;
674
+ groupDepth: number;
675
+ } | {
676
+ type: "count";
677
+ label: string;
678
+ count: number;
679
+ groupDepth: number;
680
+ } | {
681
+ type: "countReset";
682
+ label: string;
683
+ groupDepth: number;
684
+ } | {
685
+ type: "assert";
686
+ stdout: string;
687
+ groupDepth: number;
688
+ } | {
689
+ type: "group";
690
+ label: string;
691
+ collapsed: boolean;
692
+ groupDepth: number;
693
+ } | {
694
+ type: "groupEnd";
695
+ groupDepth: number;
696
+ } | {
697
+ type: "clear";
698
+ } | {
699
+ type: "trace";
700
+ stdout: string;
701
+ stack: string;
702
+ groupDepth: number;
703
+ };
704
+ /**
705
+ * Console callback handlers with single structured callback.
706
+ */
707
+ export interface ConsoleCallbacks {
708
+ /**
709
+ * Callback invoked for each console operation.
710
+ * Receives a structured entry with all data needed to render the output.
711
+ */
712
+ onEntry?: (entry: ConsoleEntry) => void;
713
+ }
714
+ /**
715
+ * Fetch request init type.
716
+ */
717
+ export interface FetchRequestInit {
718
+ method: string;
719
+ headers: [string, string][];
720
+ /** Raw body bytes - use this if you need direct access to the body data */
721
+ rawBody: Uint8Array | null;
722
+ /** Body ready for use with fetch() - same data as rawBody but typed as BodyInit */
723
+ body: BodyInit | null;
724
+ signal: AbortSignal;
725
+ }
726
+ /**
727
+ * Fetch callback type.
728
+ */
729
+ export type FetchCallback = (url: string, init: FetchRequestInit) => Response | Promise<Response>;
730
+ /**
731
+ * WebSocket callback type.
732
+ * Called when isolate code creates an outbound WebSocket connection.
733
+ * Return a WebSocket to proxy the connection, or null to block it.
734
+ */
735
+ export type WebSocketCallback = (url: string, protocols: string[]) => WebSocket | Promise<WebSocket | null> | null;
736
+ /**
737
+ * File system callback handlers.
738
+ */
739
+ export interface FileSystemCallbacks {
740
+ readFile?: (path: string) => Promise<ArrayBuffer>;
741
+ writeFile?: (path: string, data: ArrayBuffer) => Promise<void>;
742
+ unlink?: (path: string) => Promise<void>;
743
+ readdir?: (path: string) => Promise<string[]>;
744
+ mkdir?: (path: string, options?: {
745
+ recursive?: boolean;
746
+ }) => Promise<void>;
747
+ rmdir?: (path: string) => Promise<void>;
748
+ stat?: (path: string) => Promise<{
749
+ isFile: boolean;
750
+ isDirectory: boolean;
751
+ size: number;
752
+ }>;
753
+ rename?: (from: string, to: string) => Promise<void>;
754
+ }
755
+ /**
756
+ * Options for dispatching a request.
757
+ */
758
+ export interface DispatchOptions {
759
+ /** AbortSignal to cancel the request */
760
+ signal?: AbortSignal;
761
+ /** Optional request identifier forwarded to host callbacks */
762
+ requestId?: string;
763
+ /** Optional metadata forwarded to host callbacks */
764
+ metadata?: Record<string, string>;
765
+ }
766
+ /**
767
+ * Options for eval() method.
768
+ */
769
+ export interface EvalOptions {
770
+ /** Filename for stack traces */
771
+ filename?: string;
772
+ /** Timeout for the full eval execution in milliseconds */
773
+ executionTimeout?: number;
774
+ }
775
+ /**
776
+ * Test environment options for createRuntime.
777
+ */
778
+ export interface TestEnvironmentOptions {
779
+ /** Receive test lifecycle events */
780
+ onEvent?: (event: TestEvent) => void;
781
+ /** Timeout for individual tests (ms) */
782
+ testTimeout?: number;
783
+ }
784
+ /**
785
+ * File data for setInputFiles operations.
786
+ */
787
+ export interface PlaywrightFileData {
788
+ /** File name */
789
+ name: string;
790
+ /** MIME type */
791
+ mimeType: string;
792
+ /** File contents as Buffer */
793
+ buffer: Buffer;
794
+ }
795
+ /**
796
+ * Options for Playwright integration.
797
+ *
798
+ * Public API is handler-first: host-specific page wiring should be done by
799
+ * creating a handler (for example via `defaultPlaywrightHandler(page)`).
800
+ */
801
+ export interface PlaywrightOptions {
802
+ /** Handler callback for Playwright operations (required when playwright is enabled) */
803
+ handler: (op: PlaywrightOperation) => Promise<PlaywrightResult>;
804
+ /** Default timeout for operations in ms */
805
+ timeout?: number;
806
+ /** If true, browser console logs are routed through console handler (or printed to stdout if no handler) */
807
+ console?: boolean;
808
+ /** Unified event callback for all playwright events */
809
+ onEvent?: (event: PlaywrightEvent) => void;
810
+ }
811
+ /**
812
+ * Base runtime options shared between isolate-client and isolate-runtime.
813
+ * Each package extends this with its own `fs` type.
814
+ */
815
+ export interface BaseRuntimeOptions<T extends Record<string, any[]> = Record<string, unknown[]>> {
816
+ /** Memory limit in megabytes (optional) */
817
+ memoryLimitMB?: number;
818
+ /** Timeout for the full eval/test execution in milliseconds */
819
+ executionTimeout?: number;
820
+ /** Console callback handlers */
821
+ console?: ConsoleCallbacks;
822
+ /** Fetch callback handler */
823
+ fetch?: FetchCallback;
824
+ /** WebSocket callback handler for outbound connections from isolate */
825
+ webSocket?: WebSocketCallback;
826
+ /** Module loader callback for resolving dynamic imports */
827
+ moduleLoader?: ModuleLoaderCallback;
828
+ /** Custom functions callable from within the isolate */
829
+ customFunctions?: CustomFunctions<T>;
830
+ /** Current working directory for path.resolve(). Defaults to "/" */
831
+ cwd?: string;
832
+ /** Enable test environment (describe, it, expect, etc.) */
833
+ testEnvironment?: boolean | TestEnvironmentOptions;
834
+ /** Playwright options (handler-first API) */
835
+ playwright?: PlaywrightOptions;
836
+ }
837
+ export interface CreateRuntimeResult {
838
+ isolateId: string;
839
+ /** True if runtime was reused from namespace pool */
840
+ reused?: boolean;
841
+ }
842
+ export interface EvalResult {
843
+ value: unknown;
844
+ }
845
+ export interface DispatchRequestResult {
846
+ response: SerializedResponse;
847
+ }
848
+ export interface SuiteInfo {
849
+ name: string;
850
+ /** Ancestry path: ["outer", "inner"] */
851
+ path: string[];
852
+ /** Full display name: "outer > inner" */
853
+ fullName: string;
854
+ /** Nesting depth (0 for root-level suites) */
855
+ depth: number;
856
+ }
857
+ export interface SuiteResult extends SuiteInfo {
858
+ passed: number;
859
+ failed: number;
860
+ skipped: number;
861
+ todo: number;
862
+ duration: number;
863
+ }
864
+ export interface TestInfo {
865
+ name: string;
866
+ /** Suite ancestry */
867
+ suitePath: string[];
868
+ /** Full display name: "suite > test name" */
869
+ fullName: string;
870
+ }
871
+ export interface TestError {
872
+ message: string;
873
+ stack?: string;
874
+ /** For assertion failures */
875
+ expected?: unknown;
876
+ actual?: unknown;
877
+ /** e.g., "toBe", "toEqual", "toContain" */
878
+ matcherName?: string;
879
+ }
880
+ export interface TestResult extends TestInfo {
881
+ status: "pass" | "fail" | "skip" | "todo";
882
+ duration: number;
883
+ error?: TestError;
884
+ }
885
+ export type TestEvent = {
886
+ type: "runStart";
887
+ testCount: number;
888
+ suiteCount: number;
889
+ } | {
890
+ type: "suiteStart";
891
+ suite: SuiteInfo;
892
+ } | {
893
+ type: "suiteEnd";
894
+ suite: SuiteResult;
895
+ } | {
896
+ type: "testStart";
897
+ test: TestInfo;
898
+ } | {
899
+ type: "testEnd";
900
+ test: TestResult;
901
+ } | {
902
+ type: "runEnd";
903
+ results: RunTestsResult;
904
+ };
905
+ export interface RunTestsResult {
906
+ passed: number;
907
+ failed: number;
908
+ skipped: number;
909
+ todo: number;
910
+ total: number;
911
+ duration: number;
912
+ success: boolean;
913
+ suites: SuiteResult[];
914
+ tests: TestResult[];
915
+ }
916
+ export interface PlaywrightTestResult {
917
+ passed: number;
918
+ failed: number;
919
+ total: number;
920
+ results: {
921
+ name: string;
922
+ passed: boolean;
923
+ error?: string;
924
+ duration: number;
925
+ }[];
926
+ }
927
+ export interface CollectedData {
928
+ /** Browser console logs (from the page, not sandbox) */
929
+ browserConsoleLogs: {
930
+ level: string;
931
+ stdout: string;
932
+ location?: {
933
+ url?: string;
934
+ lineNumber?: number;
935
+ columnNumber?: number;
936
+ };
937
+ timestamp: number;
938
+ }[];
939
+ pageErrors: {
940
+ name: string;
941
+ message: string;
942
+ stack?: string;
943
+ timestamp: number;
944
+ }[];
945
+ networkRequests: {
946
+ requestId: string;
947
+ url: string;
948
+ method: string;
949
+ headers: Record<string, string>;
950
+ postData?: string;
951
+ resourceType?: string;
952
+ timestamp: number;
953
+ }[];
954
+ networkResponses: {
955
+ requestId: string;
956
+ url: string;
957
+ status: number;
958
+ headers: Record<string, string>;
959
+ statusText?: string;
960
+ resourceType?: string;
961
+ timestamp: number;
962
+ }[];
963
+ requestFailures: {
964
+ requestId: string;
965
+ url: string;
966
+ method: string;
967
+ failureText: string;
968
+ resourceType?: string;
969
+ timestamp: number;
970
+ }[];
971
+ }
972
+ /**
973
+ * Normalize a filename to an absolute path for module resolution.
974
+ *
975
+ * Rules:
976
+ * - undefined/empty/"" → "/index.js"
977
+ * - Absolute paths (start with /) → normalized as-is
978
+ * - Relative paths starting with "./" → converted to absolute from root
979
+ * - Bare filenames (no leading ./ or /) → converted to absolute from root
980
+ * - Paths starting with "../" → Error (can't resolve parent of root)
981
+ * - Directory paths ("/" or "./") → append "index.js"
982
+ *
983
+ * @example
984
+ * normalizeEntryFilename(undefined) // "/index.js"
985
+ * normalizeEntryFilename("") // "/index.js"
986
+ * normalizeEntryFilename("app.js") // "/app.js"
987
+ * normalizeEntryFilename("./app.js") // "/app.js"
988
+ * normalizeEntryFilename("/app.js") // "/app.js"
989
+ * normalizeEntryFilename("./foo/bar.js") // "/foo/bar.js"
990
+ * normalizeEntryFilename("/") // "/index.js"
991
+ * normalizeEntryFilename("./") // "/index.js"
992
+ * normalizeEntryFilename("../app.js") // throws Error
993
+ *
994
+ * @throws Error if the filename cannot be normalized (e.g., starts with "../")
995
+ */
996
+ export declare function normalizeEntryFilename(filename: string | undefined): string;