@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,14 @@
1
+ import ivm from "isolated-vm";
2
+ import { DEFAULT_PLAYWRIGHT_HANDLER_META } from "./types.ts";
3
+ export { createPlaywrightHandler, defaultPlaywrightHandler, getDefaultPlaywrightHandlerMetadata, } from "./handler.ts";
4
+ export type { PlaywrightOperation, PlaywrightResult, PlaywrightEvent, PlaywrightFileData } from "../protocol/index.ts";
5
+ export { DEFAULT_PLAYWRIGHT_HANDLER_META };
6
+ export type { NetworkRequestInfo, NetworkResponseInfo, BrowserConsoleLogEntry, PageErrorInfo, RequestFailureInfo, PlaywrightCallback, PlaywrightSetupOptions, PlaywrightHandle, } from "./types.ts";
7
+ import type { PlaywrightSetupOptions, PlaywrightHandle } from "./types.ts";
8
+ /**
9
+ * Set up playwright in an isolate context.
10
+ *
11
+ * For local use: provide `page` option (direct page access)
12
+ * For remote use: provide `handler` option (callback pattern)
13
+ */
14
+ export declare function setupPlaywright(context: ivm.Context, options: PlaywrightSetupOptions): Promise<PlaywrightHandle>;
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Client-safe types for ./index.ts
3
+ * This module can be imported without loading isolated-vm
4
+ */
5
+ export type { PlaywrightOperation, PlaywrightResult, PlaywrightEvent, PlaywrightFileData, } from "../protocol/index.ts";
6
+ export interface NetworkRequestInfo {
7
+ requestId: string;
8
+ url: string;
9
+ method: string;
10
+ headers: Record<string, string>;
11
+ postData?: string;
12
+ resourceType: string;
13
+ timestamp: number;
14
+ }
15
+ export interface NetworkResponseInfo {
16
+ requestId: string;
17
+ url: string;
18
+ status: number;
19
+ statusText: string;
20
+ headers: Record<string, string>;
21
+ resourceType?: string;
22
+ timestamp: number;
23
+ }
24
+ /**
25
+ * Browser console log entry - logs from the page context (not sandbox).
26
+ */
27
+ export interface BrowserConsoleLogEntry {
28
+ level: string;
29
+ stdout: string;
30
+ location?: {
31
+ url?: string;
32
+ lineNumber?: number;
33
+ columnNumber?: number;
34
+ };
35
+ timestamp: number;
36
+ }
37
+ export interface PageErrorInfo {
38
+ name: string;
39
+ message: string;
40
+ stack?: string;
41
+ timestamp: number;
42
+ }
43
+ export interface RequestFailureInfo {
44
+ requestId: string;
45
+ url: string;
46
+ method: string;
47
+ failureText: string;
48
+ resourceType?: string;
49
+ timestamp: number;
50
+ }
51
+ /**
52
+ * Callback type for handling playwright operations.
53
+ * Used for remote execution where the page lives on the client.
54
+ */
55
+ export type PlaywrightCallback = (op: import("../protocol/index.ts").PlaywrightOperation) => Promise<import("../protocol/index.ts").PlaywrightResult>;
56
+ /**
57
+ * Symbol key used to attach metadata to handlers created by
58
+ * defaultPlaywrightHandler(). Enables adapter layers to keep local ergonomics
59
+ * (event capture, collected data) without exposing page-mode in runtime options.
60
+ */
61
+ export declare const DEFAULT_PLAYWRIGHT_HANDLER_META: unique symbol;
62
+ /**
63
+ * Options for defaultPlaywrightHandler(page, options).
64
+ */
65
+ export interface DefaultPlaywrightHandlerOptions {
66
+ /** Default timeout for operations */
67
+ timeout?: number;
68
+ /** Callback to read files for setInputFiles() with file paths */
69
+ readFile?: (filePath: string) => Promise<import("../protocol/index.ts").PlaywrightFileData> | import("../protocol/index.ts").PlaywrightFileData;
70
+ /** Callback to write files for screenshot()/pdf() with path option */
71
+ writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;
72
+ /** Callback to create new pages when context.newPage() is called */
73
+ createPage?: (context: import("playwright").BrowserContext) => Promise<import("playwright").Page> | import("playwright").Page;
74
+ /** Callback to create new contexts when browser.newContext() is called */
75
+ createContext?: (options?: import("playwright").BrowserContextOptions) => Promise<import("playwright").BrowserContext> | import("playwright").BrowserContext;
76
+ /** Callback to evaluate a predicate function inside the isolate (used by waitForURL/Request/Response with function predicates) */
77
+ evaluatePredicate?: (predicateId: number, data: unknown) => boolean;
78
+ }
79
+ /**
80
+ * Metadata attached to handlers created by defaultPlaywrightHandler().
81
+ */
82
+ export interface DefaultPlaywrightHandlerMetadata {
83
+ page: import("playwright").Page;
84
+ options?: DefaultPlaywrightHandlerOptions;
85
+ }
86
+ /**
87
+ * Handler created by defaultPlaywrightHandler().
88
+ */
89
+ export type DefaultPlaywrightHandler = PlaywrightCallback & {
90
+ [DEFAULT_PLAYWRIGHT_HANDLER_META]?: DefaultPlaywrightHandlerMetadata;
91
+ };
92
+ /**
93
+ * Options for setting up playwright in an isolate.
94
+ */
95
+ export interface PlaywrightSetupOptions {
96
+ /** Direct page object (for local use) */
97
+ page?: import("playwright").Page;
98
+ /** Handler callback (for remote use - daemon invokes this) */
99
+ handler?: PlaywrightCallback;
100
+ /** Default timeout for operations */
101
+ timeout?: number;
102
+ /** If true, browser console logs are printed to stdout */
103
+ console?: boolean;
104
+ /** Unified event callback for all playwright events */
105
+ onEvent?: (event: import("../protocol/index.ts").PlaywrightEvent) => void;
106
+ /**
107
+ * Callback to read files for setInputFiles() operations.
108
+ * This allows the host to control which files the isolate can access.
109
+ * If not provided, setInputFiles() with file paths will throw an error.
110
+ */
111
+ readFile?: (filePath: string) => Promise<import("../protocol/index.ts").PlaywrightFileData> | import("../protocol/index.ts").PlaywrightFileData;
112
+ /**
113
+ * Callback to write files for screenshot() and pdf() operations with path option.
114
+ * This allows the host to control where files are written.
115
+ * If not provided, screenshot()/pdf() with path option will throw an error.
116
+ */
117
+ writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;
118
+ /**
119
+ * Callback invoked when context.newPage() is called from within the isolate.
120
+ * Host creates/configures the new page. If not provided, newPage() will throw an error.
121
+ * Receives the BrowserContext so you can call context.newPage().
122
+ * @param context - The BrowserContext that requested the new page
123
+ * @returns The new Page object
124
+ */
125
+ createPage?: (context: import("playwright").BrowserContext) => Promise<import("playwright").Page> | import("playwright").Page;
126
+ /**
127
+ * Callback invoked when browser.newContext() is called from within the isolate.
128
+ * Host creates/configures the new context. If not provided, newContext() will throw an error.
129
+ * @param options - Browser context options passed from the isolate
130
+ * @returns The new BrowserContext object
131
+ */
132
+ createContext?: (options?: import("playwright").BrowserContextOptions) => Promise<import("playwright").BrowserContext> | import("playwright").BrowserContext;
133
+ }
134
+ export interface PlaywrightHandle {
135
+ dispose(): void;
136
+ /** Get browser console logs (from the page, not sandbox) */
137
+ getBrowserConsoleLogs(): BrowserConsoleLogEntry[];
138
+ /** Get uncaught page errors */
139
+ getPageErrors(): PageErrorInfo[];
140
+ getNetworkRequests(): NetworkRequestInfo[];
141
+ getNetworkResponses(): NetworkResponseInfo[];
142
+ /** Get network request failures (DNS, abort, connection reset, etc.) */
143
+ getRequestFailures(): RequestFailureInfo[];
144
+ clearCollected(): void;
145
+ }
@@ -0,0 +1,242 @@
1
+ /**
2
+ * MessagePack codec with custom extension types for the isolate protocol.
3
+ */
4
+ import type { Message } from "./types.ts";
5
+ /**
6
+ * Extension type codes for custom data types.
7
+ */
8
+ export declare const ExtType: {
9
+ /** Reference to an isolate instance */
10
+ readonly ISOLATE_REF: 1;
11
+ /** Reference to a registered callback */
12
+ readonly CALLBACK_REF: 2;
13
+ /** Reference to a stream */
14
+ readonly STREAM_REF: 3;
15
+ /** Structured error object */
16
+ readonly ERROR: 4;
17
+ /** Reference to Blob/File data */
18
+ readonly BLOB_REF: 5;
19
+ /** Date value */
20
+ readonly DATE: 6;
21
+ /** RegExp value */
22
+ readonly REGEXP: 7;
23
+ /** Undefined value (null is natively supported) */
24
+ readonly UNDEFINED: 8;
25
+ /** BigInt value */
26
+ readonly BIGINT: 9;
27
+ /** Request object */
28
+ readonly REQUEST: 10;
29
+ /** Response object */
30
+ readonly RESPONSE: 11;
31
+ /** Headers object */
32
+ readonly HEADERS: 12;
33
+ /** File object */
34
+ readonly FILE: 13;
35
+ /** FormData object */
36
+ readonly FORMDATA: 14;
37
+ /** URL object */
38
+ readonly URL_REF: 15;
39
+ /** Promise reference */
40
+ readonly PROMISE: 16;
41
+ /** AsyncIterator reference */
42
+ readonly ASYNC_ITERATOR: 17;
43
+ };
44
+ export type ExtType = (typeof ExtType)[keyof typeof ExtType];
45
+ /**
46
+ * Represents a reference to an isolate.
47
+ */
48
+ export interface IsolateRef {
49
+ __type: "IsolateRef";
50
+ isolateId: string;
51
+ }
52
+ /**
53
+ * Represents a reference to a callback.
54
+ */
55
+ export interface CallbackRef {
56
+ __type: "CallbackRef";
57
+ callbackId: number;
58
+ }
59
+ /**
60
+ * Represents a reference to a stream.
61
+ */
62
+ export interface StreamRef {
63
+ __type: "StreamRef";
64
+ streamId: number;
65
+ direction: "upload" | "download";
66
+ }
67
+ /**
68
+ * Represents a structured error.
69
+ */
70
+ export interface ErrorRef {
71
+ __type: "ErrorRef";
72
+ name: string;
73
+ message: string;
74
+ stack?: string;
75
+ code?: number;
76
+ }
77
+ /**
78
+ * Represents a reference to blob data.
79
+ */
80
+ export interface BlobRef {
81
+ __type: "BlobRef";
82
+ blobId: number;
83
+ size: number;
84
+ type: string;
85
+ }
86
+ /**
87
+ * Represents a serialized Date value.
88
+ */
89
+ export interface DateRef {
90
+ __type: "DateRef";
91
+ timestamp: number;
92
+ }
93
+ /**
94
+ * Represents a serialized RegExp value.
95
+ */
96
+ export interface RegExpRef {
97
+ __type: "RegExpRef";
98
+ source: string;
99
+ flags: string;
100
+ }
101
+ /**
102
+ * Represents an undefined value (since msgpack doesn't natively support undefined).
103
+ */
104
+ export interface UndefinedRef {
105
+ __type: "UndefinedRef";
106
+ }
107
+ /**
108
+ * Represents a serialized BigInt value.
109
+ */
110
+ export interface BigIntRef {
111
+ __type: "BigIntRef";
112
+ value: string;
113
+ }
114
+ /**
115
+ * Represents a serialized Uint8Array value.
116
+ * Uses number[] instead of Uint8Array for JSON compatibility.
117
+ */
118
+ export interface Uint8ArrayRef {
119
+ __type: "Uint8ArrayRef";
120
+ data: number[];
121
+ }
122
+ /**
123
+ * Represents a serialized Request object.
124
+ * Uses number[] instead of Uint8Array for JSON compatibility.
125
+ */
126
+ export interface RequestRef {
127
+ __type: "RequestRef";
128
+ url: string;
129
+ method: string;
130
+ headers: [string, string][];
131
+ body: number[] | null;
132
+ mode?: string;
133
+ credentials?: string;
134
+ cache?: string;
135
+ redirect?: string;
136
+ referrer?: string;
137
+ referrerPolicy?: string;
138
+ integrity?: string;
139
+ }
140
+ /**
141
+ * Represents a serialized Response object.
142
+ * Uses number[] instead of Uint8Array for JSON compatibility.
143
+ */
144
+ export interface ResponseRef {
145
+ __type: "ResponseRef";
146
+ status: number;
147
+ statusText: string;
148
+ headers: [string, string][];
149
+ body: number[] | null;
150
+ }
151
+ /**
152
+ * Represents a serialized Headers object.
153
+ */
154
+ export interface HeadersRef {
155
+ __type: "HeadersRef";
156
+ pairs: [string, string][];
157
+ }
158
+ /**
159
+ * Represents a serialized File object (includes the data inline).
160
+ * Uses number[] instead of Uint8Array for JSON compatibility.
161
+ */
162
+ export interface FileRef {
163
+ __type: "FileRef";
164
+ name: string;
165
+ type: string;
166
+ lastModified: number;
167
+ data: number[];
168
+ }
169
+ /**
170
+ * Represents a serialized FormData object.
171
+ */
172
+ export interface FormDataRef {
173
+ __type: "FormDataRef";
174
+ entries: [string, string | FileRef][];
175
+ }
176
+ /**
177
+ * Represents a serialized URL object.
178
+ */
179
+ export interface URLRef {
180
+ __type: "URLRef";
181
+ href: string;
182
+ }
183
+ /**
184
+ * Represents a reference to a pending Promise.
185
+ */
186
+ export interface PromiseRef {
187
+ __type: "PromiseRef";
188
+ promiseId: number;
189
+ }
190
+ /**
191
+ * Represents a reference to an async iterator.
192
+ */
193
+ export interface AsyncIteratorRef {
194
+ __type: "AsyncIteratorRef";
195
+ iteratorId: number;
196
+ __nextCallbackId?: number;
197
+ __returnCallbackId?: number;
198
+ __throwCallbackId?: number;
199
+ }
200
+ export type ExtensionType = IsolateRef | CallbackRef | StreamRef | ErrorRef | BlobRef | DateRef | RegExpRef | UndefinedRef | BigIntRef | RequestRef | ResponseRef | HeadersRef | FileRef | FormDataRef | URLRef | PromiseRef | AsyncIteratorRef;
201
+ /**
202
+ * Encode a message to MessagePack bytes.
203
+ */
204
+ export declare function encodeMessage(message: Message): Uint8Array;
205
+ /**
206
+ * Decode MessagePack bytes to a message.
207
+ */
208
+ export declare function decodeMessage(data: Uint8Array): Message;
209
+ /**
210
+ * Encode any value to MessagePack bytes.
211
+ */
212
+ export declare function encodeValue(value: unknown): Uint8Array;
213
+ /**
214
+ * Decode MessagePack bytes to any value.
215
+ */
216
+ export declare function decodeValue(data: Uint8Array): unknown;
217
+ export declare function createIsolateRef(isolateId: string): IsolateRef;
218
+ export declare function createCallbackRef(callbackId: number): CallbackRef;
219
+ export declare function createStreamRef(streamId: number, direction: "upload" | "download"): StreamRef;
220
+ export declare function createErrorRef(name: string, message: string, stack?: string, code?: number): ErrorRef;
221
+ export declare function createBlobRef(blobId: number, size: number, type: string): BlobRef;
222
+ export declare function createDateRef(timestamp: number): DateRef;
223
+ export declare function createRegExpRef(source: string, flags: string): RegExpRef;
224
+ export declare function createUndefinedRef(): UndefinedRef;
225
+ export declare function createBigIntRef(value: string): BigIntRef;
226
+ export declare function createUint8ArrayRef(data: number[]): Uint8ArrayRef;
227
+ export declare function createRequestRef(url: string, method: string, headers: [string, string][], body: number[] | null, options?: {
228
+ mode?: string;
229
+ credentials?: string;
230
+ cache?: string;
231
+ redirect?: string;
232
+ referrer?: string;
233
+ referrerPolicy?: string;
234
+ integrity?: string;
235
+ }): RequestRef;
236
+ export declare function createResponseRef(status: number, statusText: string, headers: [string, string][], body: number[] | null): ResponseRef;
237
+ export declare function createHeadersRef(pairs: [string, string][]): HeadersRef;
238
+ export declare function createFileRef(name: string, type: string, lastModified: number, data: number[]): FileRef;
239
+ export declare function createFormDataRef(entries: [string, string | FileRef][]): FormDataRef;
240
+ export declare function createURLRef(href: string): URLRef;
241
+ export declare function createPromiseRef(promiseId: number): PromiseRef;
242
+ export declare function createAsyncIteratorRef(iteratorId: number): AsyncIteratorRef;
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Frame parser and builder for the isolate protocol.
3
+ *
4
+ * Frame format:
5
+ * ┌──────────┬──────────┬─────────────────┐
6
+ * │ Length │ Type │ Payload │
7
+ * │ (4 bytes)│ (1 byte) │ (MessagePack) │
8
+ * └──────────┴──────────┴─────────────────┘
9
+ *
10
+ * - Length: uint32 BE, size of Type + Payload (excludes the length field itself)
11
+ * - Type: uint8, message type from MessageType enum
12
+ * - Payload: MessagePack encoded message body
13
+ */
14
+ import { MessageType, type Message } from "./types.ts";
15
+ /** Header size: 4 bytes for length + 1 byte for type */
16
+ export declare const HEADER_SIZE = 5;
17
+ /** Maximum frame size (10MB) */
18
+ export declare const MAX_FRAME_SIZE: number;
19
+ /** Threshold above which bodies should be streamed (1MB) */
20
+ export declare const STREAM_THRESHOLD: number;
21
+ /** Default chunk size for streaming (256KB) */
22
+ export declare const STREAM_CHUNK_SIZE: number;
23
+ /** Default credit for backpressure (1MB) */
24
+ export declare const STREAM_DEFAULT_CREDIT: number;
25
+ /**
26
+ * Build a frame from a message.
27
+ *
28
+ * @param message - The message to encode
29
+ * @returns Complete frame as Uint8Array
30
+ */
31
+ export declare function buildFrame(message: Message): Uint8Array;
32
+ /**
33
+ * Build multiple frames from messages.
34
+ *
35
+ * @param messages - Messages to encode
36
+ * @returns Combined frames as single Uint8Array
37
+ */
38
+ export declare function buildFrames(messages: Message[]): Uint8Array;
39
+ /**
40
+ * Parse result from the frame parser.
41
+ */
42
+ export interface ParsedFrame {
43
+ type: MessageType;
44
+ message: Message;
45
+ }
46
+ /**
47
+ * Incremental frame parser for streaming data.
48
+ *
49
+ * Usage:
50
+ * ```ts
51
+ * const parser = createFrameParser();
52
+ * socket.on('data', (chunk) => {
53
+ * for (const frame of parser.feed(chunk)) {
54
+ * handleMessage(frame.message);
55
+ * }
56
+ * });
57
+ * ```
58
+ */
59
+ export interface FrameParser {
60
+ /**
61
+ * Feed data to the parser and yield complete frames.
62
+ * @param chunk - Incoming data chunk
63
+ */
64
+ feed(chunk: Uint8Array): Generator<ParsedFrame>;
65
+ /**
66
+ * Get the number of bytes currently buffered.
67
+ */
68
+ bufferedBytes(): number;
69
+ /**
70
+ * Reset the parser state.
71
+ */
72
+ reset(): void;
73
+ }
74
+ /**
75
+ * Create a new frame parser.
76
+ */
77
+ export declare function createFrameParser(): FrameParser;
78
+ /**
79
+ * Parse a single complete frame.
80
+ *
81
+ * @param data - Complete frame data
82
+ * @returns Parsed frame or null if incomplete
83
+ * @throws Error if frame is invalid
84
+ */
85
+ export declare function parseFrame(data: Uint8Array): ParsedFrame | null;
86
+ /**
87
+ * Get the message type name for debugging.
88
+ */
89
+ export declare function getMessageTypeName(type: MessageType): string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ./index.ts
3
+ *
4
+ * Protocol definitions, codec, and framing for the isolate daemon.
5
+ */
6
+ export * from "./types.ts";
7
+ export { encodeMessage, decodeMessage, encodeValue, decodeValue, createIsolateRef, createCallbackRef, createStreamRef, createErrorRef, createBlobRef, createDateRef, createRegExpRef, createUndefinedRef, createBigIntRef, createRequestRef, createResponseRef, createHeadersRef, createFileRef, createFormDataRef, createURLRef, createPromiseRef, createAsyncIteratorRef, ExtType, type IsolateRef, type CallbackRef, type StreamRef, type ErrorRef, type BlobRef, type DateRef, type RegExpRef, type UndefinedRef, type BigIntRef, type RequestRef, type ResponseRef, type HeadersRef, type FileRef, type FormDataRef, type URLRef, type PromiseRef, type AsyncIteratorRef, type ExtensionType, } from "./codec.ts";
8
+ export { marshalValue, marshalValueSync, unmarshalValue, MarshalError, isPromiseRef, isAsyncIteratorRef, type MarshalContext, type UnmarshalContext, } from "./marshalValue.ts";
9
+ export { serializeRequest, serializeResponse, deserializeRequest, deserializeResponse, } from "./serialization.ts";
10
+ export { buildFrame, buildFrames, createFrameParser, parseFrame, getMessageTypeName, HEADER_SIZE, MAX_FRAME_SIZE, STREAM_THRESHOLD, STREAM_CHUNK_SIZE, STREAM_DEFAULT_CREDIT, type ParsedFrame, type FrameParser, } from "./framing.ts";
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Value marshalling for custom function arguments and return values.
3
+ *
4
+ * Provides type-preserving serialization for JavaScript types that would
5
+ * otherwise lose fidelity when JSON stringified.
6
+ */
7
+ /**
8
+ * Error thrown when a value cannot be marshalled.
9
+ */
10
+ export declare class MarshalError extends Error {
11
+ constructor(message: string);
12
+ }
13
+ /**
14
+ * Context for marshalling values (host → isolate).
15
+ */
16
+ export interface MarshalContext {
17
+ /** Register a function callback and return its ID */
18
+ registerCallback?: (fn: Function) => number;
19
+ /** Register a Promise and return its ID */
20
+ registerPromise?: (promise: Promise<unknown>) => number;
21
+ /** Register an AsyncIterator and return its ID */
22
+ registerIterator?: (iterator: AsyncIterator<unknown>) => number;
23
+ /** Register a Blob and return its ID */
24
+ registerBlob?: (blob: Blob) => number;
25
+ }
26
+ /**
27
+ * Context for unmarshalling values (isolate → host).
28
+ */
29
+ export interface UnmarshalContext {
30
+ /** Get a callback function by ID */
31
+ getCallback?: (id: number) => ((...args: unknown[]) => unknown) | undefined;
32
+ /** Create a proxy Promise for a PromiseRef */
33
+ createPromiseProxy?: (promiseId: number) => Promise<unknown>;
34
+ /** Create a proxy AsyncIterator for an AsyncIteratorRef */
35
+ createIteratorProxy?: (iteratorId: number) => AsyncIterator<unknown>;
36
+ /** Get a Blob by ID */
37
+ getBlob?: (blobId: number) => Blob | undefined;
38
+ }
39
+ /**
40
+ * Type guard for PromiseRef values.
41
+ */
42
+ export declare function isPromiseRef(value: unknown): value is {
43
+ __type: "PromiseRef";
44
+ promiseId: number;
45
+ };
46
+ /**
47
+ * Type guard for AsyncIteratorRef values.
48
+ */
49
+ export declare function isAsyncIteratorRef(value: unknown): value is {
50
+ __type: "AsyncIteratorRef";
51
+ iteratorId: number;
52
+ };
53
+ /**
54
+ * Marshal a JavaScript value to a serializable format.
55
+ *
56
+ * Converts JavaScript types that lose fidelity when JSON stringified into
57
+ * Ref objects that can be reconstructed on the other side.
58
+ *
59
+ * @param value - The value to marshal
60
+ * @param ctx - Optional context for registering callbacks, promises, etc.
61
+ * @param depth - Current recursion depth (used for circular reference detection)
62
+ * @param seen - WeakSet of seen objects (for circular reference detection)
63
+ * @returns The marshalled value (may be async for Request/Response/File/Blob/FormData)
64
+ */
65
+ export declare function marshalValue(value: unknown, ctx?: MarshalContext, depth?: number, seen?: WeakSet<object>): Promise<unknown>;
66
+ /**
67
+ * Synchronous marshal for values that don't require async operations.
68
+ * Throws if the value contains Request, Response, File, Blob, or FormData.
69
+ */
70
+ export declare function marshalValueSync(value: unknown, ctx?: MarshalContext, depth?: number, seen?: WeakSet<object>): unknown;
71
+ /**
72
+ * Unmarshal a serialized value back to JavaScript types.
73
+ *
74
+ * @param value - The value to unmarshal
75
+ * @param ctx - Optional context for resolving callbacks, promises, etc.
76
+ * @param depth - Current recursion depth
77
+ * @returns The unmarshalled JavaScript value
78
+ */
79
+ export declare function unmarshalValue(value: unknown, ctx?: UnmarshalContext, depth?: number): unknown;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Request/Response serialization utilities.
3
+ *
4
+ * Shared by both isolate-daemon and isolate-client for converting
5
+ * between Web API Request/Response objects and serializable data.
6
+ */
7
+ import type { SerializedRequest, SerializedResponse } from "./types.ts";
8
+ /**
9
+ * Serialize a Request to a plain object for transmission over IPC.
10
+ */
11
+ export declare function serializeRequest(request: Request): Promise<SerializedRequest>;
12
+ /**
13
+ * Serialize a Response to a plain object for transmission over IPC.
14
+ */
15
+ export declare function serializeResponse(response: Response): Promise<SerializedResponse>;
16
+ /**
17
+ * Deserialize a plain object back into a Request.
18
+ */
19
+ export declare function deserializeRequest(data: SerializedRequest): Request;
20
+ /**
21
+ * Deserialize a plain object back into a Response.
22
+ */
23
+ export declare function deserializeResponse(data: SerializedResponse): Response;