@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,93 @@
1
+ // src/browser/browser-runtime.ts
2
+ import path from "node:path";
3
+ import { defaultPlaywrightHandler } from "../internal/playwright/client.mjs";
4
+ import { createRuntimeDiagnostics } from "../bridge/diagnostics.mjs";
5
+ import { createRuntimeBindingsAdapter } from "../bridge/runtime-bindings.mjs";
6
+ import { createScriptRuntimeAdapter } from "../runtime/script-runtime.mjs";
7
+ function getMimeType(filePath) {
8
+ const ext = path.extname(filePath).toLowerCase();
9
+ const mimeTypes = {
10
+ ".png": "image/png",
11
+ ".jpg": "image/jpeg",
12
+ ".jpeg": "image/jpeg",
13
+ ".gif": "image/gif",
14
+ ".webp": "image/webp",
15
+ ".svg": "image/svg+xml",
16
+ ".pdf": "application/pdf",
17
+ ".txt": "text/plain",
18
+ ".html": "text/html",
19
+ ".css": "text/css",
20
+ ".js": "application/javascript",
21
+ ".json": "application/json"
22
+ };
23
+ return mimeTypes[ext] ?? "application/octet-stream";
24
+ }
25
+ async function createBrowserRuntimeAdapter(createRuntime, options) {
26
+ const diagnostics = createRuntimeDiagnostics();
27
+ let runtimeId = options.key ?? "browser-runtime";
28
+ const bindingsAdapter = createRuntimeBindingsAdapter(options.bindings, () => runtimeId, diagnostics);
29
+ const readFile = options.browser.readFile ? async (filePath) => {
30
+ const buffer = await options.browser.readFile(filePath);
31
+ return {
32
+ name: path.basename(filePath),
33
+ mimeType: getMimeType(filePath),
34
+ buffer
35
+ };
36
+ } : undefined;
37
+ const playwrightHandler = defaultPlaywrightHandler(options.browser.page, {
38
+ readFile,
39
+ writeFile: options.browser.writeFile,
40
+ createPage: options.browser.createPage,
41
+ createContext: options.browser.createContext
42
+ });
43
+ const runtime = await createRuntime({
44
+ ...bindingsAdapter.runtimeOptions,
45
+ cwd: options.cwd,
46
+ memoryLimitMB: options.memoryLimitMB,
47
+ executionTimeout: options.executionTimeout,
48
+ testEnvironment: options.features?.tests ?? false,
49
+ playwright: {
50
+ handler: playwrightHandler,
51
+ console: options.browser.captureConsole ?? false,
52
+ onEvent: options.browser.onEvent
53
+ }
54
+ });
55
+ runtimeId = runtime.id;
56
+ const scriptRuntime = createScriptRuntimeAdapter(runtime, diagnostics, {
57
+ onBeforeDispose: (reason) => bindingsAdapter.abort(reason)
58
+ });
59
+ return {
60
+ async run(code, runOptions) {
61
+ await scriptRuntime.eval(code, {
62
+ filename: runOptions?.filename,
63
+ executionTimeout: runOptions?.timeoutMs
64
+ });
65
+ if (runOptions?.asTestSuite && await runtime.testEnvironment.hasTests()) {
66
+ return {
67
+ tests: await runtime.testEnvironment.runTests(runOptions.timeoutMs)
68
+ };
69
+ }
70
+ return {};
71
+ },
72
+ async diagnostics() {
73
+ const collectedData = runtime.playwright.getCollectedData();
74
+ return {
75
+ ...await scriptRuntime.diagnostics(),
76
+ browserConsoleLogs: collectedData.browserConsoleLogs.length,
77
+ networkRequests: collectedData.networkRequests.length,
78
+ networkResponses: collectedData.networkResponses.length,
79
+ pageErrors: collectedData.pageErrors.length,
80
+ requestFailures: collectedData.requestFailures.length,
81
+ collectedData
82
+ };
83
+ },
84
+ dispose: async (disposeOptions) => {
85
+ await scriptRuntime.dispose(disposeOptions);
86
+ }
87
+ };
88
+ }
89
+ export {
90
+ createBrowserRuntimeAdapter
91
+ };
92
+
93
+ //# debugId=A4C0E177FD1B1FD164756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/browser/browser-runtime.ts"],
4
+ "sourcesContent": [
5
+ "import path from \"node:path\";\nimport { defaultPlaywrightHandler } from \"../internal/playwright/client.mjs\";\nimport type { RemoteRuntime, RuntimeOptions } from \"../internal/client/index.mjs\";\nimport { createRuntimeDiagnostics } from \"../bridge/diagnostics.mjs\";\nimport { createRuntimeBindingsAdapter } from \"../bridge/runtime-bindings.mjs\";\nimport { createScriptRuntimeAdapter } from \"../runtime/script-runtime.mjs\";\nimport type { BrowserRuntime, BrowserRuntimeDiagnostics, CreateBrowserRuntimeOptions } from \"../types.mjs\";\n\nfunction getMimeType(filePath: string): string {\n const ext = path.extname(filePath).toLowerCase();\n const mimeTypes: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n \".svg\": \"image/svg+xml\",\n \".pdf\": \"application/pdf\",\n \".txt\": \"text/plain\",\n \".html\": \"text/html\",\n \".css\": \"text/css\",\n \".js\": \"application/javascript\",\n \".json\": \"application/json\",\n };\n return mimeTypes[ext] ?? \"application/octet-stream\";\n}\n\nexport async function createBrowserRuntimeAdapter(\n createRuntime: (options: RuntimeOptions) => Promise<RemoteRuntime>,\n options: CreateBrowserRuntimeOptions,\n): Promise<BrowserRuntime> {\n const diagnostics = createRuntimeDiagnostics();\n let runtimeId = options.key ?? \"browser-runtime\";\n const bindingsAdapter = createRuntimeBindingsAdapter(\n options.bindings,\n () => runtimeId,\n diagnostics,\n );\n const readFile = options.browser.readFile\n ? async (filePath: string) => {\n const buffer = await options.browser.readFile!(filePath);\n return {\n name: path.basename(filePath),\n mimeType: getMimeType(filePath),\n buffer,\n };\n }\n : undefined;\n const playwrightHandler = defaultPlaywrightHandler(options.browser.page as never, {\n readFile,\n writeFile: options.browser.writeFile as never,\n createPage: options.browser.createPage as never,\n createContext: options.browser.createContext as never,\n });\n const runtime = await createRuntime({\n ...bindingsAdapter.runtimeOptions,\n cwd: options.cwd,\n memoryLimitMB: options.memoryLimitMB,\n executionTimeout: options.executionTimeout,\n testEnvironment: options.features?.tests ?? false,\n playwright: {\n handler: playwrightHandler,\n console: options.browser.captureConsole ?? false,\n onEvent: options.browser.onEvent,\n },\n });\n runtimeId = runtime.id;\n const scriptRuntime = createScriptRuntimeAdapter(runtime, diagnostics, {\n onBeforeDispose: (reason) => bindingsAdapter.abort(reason),\n });\n\n return {\n async run(code, runOptions) {\n await scriptRuntime.eval(code, {\n filename: runOptions?.filename,\n executionTimeout: runOptions?.timeoutMs,\n });\n\n if (runOptions?.asTestSuite && (await runtime.testEnvironment.hasTests())) {\n return {\n tests: await runtime.testEnvironment.runTests(runOptions.timeoutMs),\n };\n }\n\n return {};\n },\n async diagnostics(): Promise<BrowserRuntimeDiagnostics> {\n const collectedData = runtime.playwright.getCollectedData();\n return {\n ...(await scriptRuntime.diagnostics()),\n browserConsoleLogs: collectedData.browserConsoleLogs.length,\n networkRequests: collectedData.networkRequests.length,\n networkResponses: collectedData.networkResponses.length,\n pageErrors: collectedData.pageErrors.length,\n requestFailures: collectedData.requestFailures.length,\n collectedData,\n };\n },\n dispose: async (disposeOptions) => {\n await scriptRuntime.dispose(disposeOptions);\n },\n };\n}\n"
6
+ ],
7
+ "mappings": ";AAAA;AACA;AAEA;AACA;AACA;AAGA,SAAS,WAAW,CAAC,UAA0B;AAAA,EAC7C,MAAM,MAAM,KAAK,QAAQ,QAAQ,EAAE,YAAY;AAAA,EAC/C,MAAM,YAAoC;AAAA,IACxC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,OAAO,UAAU,QAAQ;AAAA;AAG3B,eAAsB,2BAA2B,CAC/C,eACA,SACyB;AAAA,EACzB,MAAM,cAAc,yBAAyB;AAAA,EAC7C,IAAI,YAAY,QAAQ,OAAO;AAAA,EAC/B,MAAM,kBAAkB,6BACtB,QAAQ,UACR,MAAM,WACN,WACF;AAAA,EACA,MAAM,WAAW,QAAQ,QAAQ,WAC7B,OAAO,aAAqB;AAAA,IAC1B,MAAM,SAAS,MAAM,QAAQ,QAAQ,SAAU,QAAQ;AAAA,IACvD,OAAO;AAAA,MACL,MAAM,KAAK,SAAS,QAAQ;AAAA,MAC5B,UAAU,YAAY,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA,MAEF;AAAA,EACJ,MAAM,oBAAoB,yBAAyB,QAAQ,QAAQ,MAAe;AAAA,IAChF;AAAA,IACA,WAAW,QAAQ,QAAQ;AAAA,IAC3B,YAAY,QAAQ,QAAQ;AAAA,IAC5B,eAAe,QAAQ,QAAQ;AAAA,EACjC,CAAC;AAAA,EACD,MAAM,UAAU,MAAM,cAAc;AAAA,OAC/B,gBAAgB;AAAA,IACnB,KAAK,QAAQ;AAAA,IACb,eAAe,QAAQ;AAAA,IACvB,kBAAkB,QAAQ;AAAA,IAC1B,iBAAiB,QAAQ,UAAU,SAAS;AAAA,IAC5C,YAAY;AAAA,MACV,SAAS;AAAA,MACT,SAAS,QAAQ,QAAQ,kBAAkB;AAAA,MAC3C,SAAS,QAAQ,QAAQ;AAAA,IAC3B;AAAA,EACF,CAAC;AAAA,EACD,YAAY,QAAQ;AAAA,EACpB,MAAM,gBAAgB,2BAA2B,SAAS,aAAa;AAAA,IACrE,iBAAiB,CAAC,WAAW,gBAAgB,MAAM,MAAM;AAAA,EAC3D,CAAC;AAAA,EAED,OAAO;AAAA,SACC,IAAG,CAAC,MAAM,YAAY;AAAA,MAC1B,MAAM,cAAc,KAAK,MAAM;AAAA,QAC7B,UAAU,YAAY;AAAA,QACtB,kBAAkB,YAAY;AAAA,MAChC,CAAC;AAAA,MAED,IAAI,YAAY,eAAgB,MAAM,QAAQ,gBAAgB,SAAS,GAAI;AAAA,QACzE,OAAO;AAAA,UACL,OAAO,MAAM,QAAQ,gBAAgB,SAAS,WAAW,SAAS;AAAA,QACpE;AAAA,MACF;AAAA,MAEA,OAAO,CAAC;AAAA;AAAA,SAEJ,YAAW,GAAuC;AAAA,MACtD,MAAM,gBAAgB,QAAQ,WAAW,iBAAiB;AAAA,MAC1D,OAAO;AAAA,WACD,MAAM,cAAc,YAAY;AAAA,QACpC,oBAAoB,cAAc,mBAAmB;AAAA,QACrD,iBAAiB,cAAc,gBAAgB;AAAA,QAC/C,kBAAkB,cAAc,iBAAiB;AAAA,QACjD,YAAY,cAAc,WAAW;AAAA,QACrC,iBAAiB,cAAc,gBAAgB;AAAA,QAC/C;AAAA,MACF;AAAA;AAAA,IAEF,SAAS,OAAO,mBAAmB;AAAA,MACjC,MAAM,cAAc,QAAQ,cAAc;AAAA;AAAA,EAE9C;AAAA;",
8
+ "debugId": "A4C0E177FD1B1FD164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/daemon.ts
4
+ import { startDaemon } from "./internal/daemon/index.mjs";
5
+ process.removeAllListeners("warning");
6
+ process.on("warning", (warning) => {
7
+ if (warning.name === "ExperimentalWarning" && warning.message.includes("stripTypeScriptTypes")) {
8
+ return;
9
+ }
10
+ console.warn(warning);
11
+ });
12
+ function parseArgs(args) {
13
+ const options = {};
14
+ for (let index = 0;index < args.length; index += 1) {
15
+ const arg = args[index];
16
+ switch (arg) {
17
+ case "--socket":
18
+ index += 1;
19
+ if (args[index]) {
20
+ options.socketPath = args[index];
21
+ }
22
+ break;
23
+ case "--host":
24
+ index += 1;
25
+ if (args[index]) {
26
+ options.host = args[index];
27
+ options.socketPath = undefined;
28
+ }
29
+ break;
30
+ case "--port":
31
+ index += 1;
32
+ if (args[index]) {
33
+ options.port = Number.parseInt(args[index], 10);
34
+ options.socketPath = undefined;
35
+ }
36
+ break;
37
+ case "--max-isolates":
38
+ index += 1;
39
+ if (args[index]) {
40
+ options.maxIsolates = Number.parseInt(args[index], 10);
41
+ }
42
+ break;
43
+ case "--memory-limit":
44
+ index += 1;
45
+ if (args[index]) {
46
+ options.defaultMemoryLimitMB = Number.parseInt(args[index], 10);
47
+ }
48
+ break;
49
+ case "--help":
50
+ case "-h":
51
+ console.log(`
52
+ Isolate Daemon - Run isolated-vm runtimes accessible via IPC
53
+
54
+ Usage:
55
+ isolate-daemon [options]
56
+
57
+ Options:
58
+ --socket <path> Unix socket path (default: /tmp/isolate-daemon.sock)
59
+ --host <host> TCP host (default: 127.0.0.1, disables Unix socket)
60
+ --port <port> TCP port (default: 47891, disables Unix socket)
61
+ --max-isolates <n> Maximum isolates (default: 100)
62
+ --memory-limit <mb> Default memory limit in MB (default: 128)
63
+ --help, -h Show this help message
64
+ `);
65
+ process.exit(0);
66
+ default:
67
+ if (arg?.startsWith("-")) {
68
+ console.error(`Unknown option: ${arg}`);
69
+ process.exit(1);
70
+ }
71
+ }
72
+ }
73
+ return options;
74
+ }
75
+ async function main() {
76
+ const daemon = await startDaemon(parseArgs(process.argv.slice(2)));
77
+ const shutdown = async () => {
78
+ console.log(`
79
+ Shutting down...`);
80
+ await daemon.close();
81
+ process.exit(0);
82
+ };
83
+ process.on("SIGINT", shutdown);
84
+ process.on("SIGTERM", shutdown);
85
+ }
86
+ main().catch((error) => {
87
+ console.error("Failed to start daemon:", error);
88
+ process.exit(1);
89
+ });
90
+
91
+ //# debugId=B49073D8A9F1D2C464756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/daemon.ts"],
4
+ "sourcesContent": [
5
+ "#!/usr/bin/env node\n\nprocess.removeAllListeners(\"warning\");\nprocess.on(\"warning\", (warning) => {\n if (\n warning.name === \"ExperimentalWarning\" &&\n warning.message.includes(\"stripTypeScriptTypes\")\n ) {\n return;\n }\n console.warn(warning);\n});\n\nimport { startDaemon, type DaemonOptions } from \"./internal/daemon/index.mjs\";\n\nfunction parseArgs(args: string[]): Partial<DaemonOptions> {\n const options: Partial<DaemonOptions> = {};\n\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n\n switch (arg) {\n case \"--socket\":\n index += 1;\n if (args[index]) {\n options.socketPath = args[index];\n }\n break;\n case \"--host\":\n index += 1;\n if (args[index]) {\n options.host = args[index];\n options.socketPath = undefined;\n }\n break;\n case \"--port\":\n index += 1;\n if (args[index]) {\n options.port = Number.parseInt(args[index]!, 10);\n options.socketPath = undefined;\n }\n break;\n case \"--max-isolates\":\n index += 1;\n if (args[index]) {\n options.maxIsolates = Number.parseInt(args[index]!, 10);\n }\n break;\n case \"--memory-limit\":\n index += 1;\n if (args[index]) {\n options.defaultMemoryLimitMB = Number.parseInt(args[index]!, 10);\n }\n break;\n case \"--help\":\n case \"-h\":\n console.log(`\nIsolate Daemon - Run isolated-vm runtimes accessible via IPC\n\nUsage:\n isolate-daemon [options]\n\nOptions:\n --socket <path> Unix socket path (default: /tmp/isolate-daemon.sock)\n --host <host> TCP host (default: 127.0.0.1, disables Unix socket)\n --port <port> TCP port (default: 47891, disables Unix socket)\n --max-isolates <n> Maximum isolates (default: 100)\n --memory-limit <mb> Default memory limit in MB (default: 128)\n --help, -h Show this help message\n`);\n process.exit(0);\n default:\n if (arg?.startsWith(\"-\")) {\n console.error(`Unknown option: ${arg}`);\n process.exit(1);\n }\n }\n }\n\n return options;\n}\n\nasync function main() {\n const daemon = await startDaemon(parseArgs(process.argv.slice(2)));\n const shutdown = async () => {\n console.log(\"\\nShutting down...\");\n await daemon.close();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n}\n\nmain().catch((error) => {\n console.error(\"Failed to start daemon:\", error);\n process.exit(1);\n});\n"
6
+ ],
7
+ "mappings": ";;;AAaA;AAXA,QAAQ,mBAAmB,SAAS;AACpC,QAAQ,GAAG,WAAW,CAAC,YAAY;AAAA,EACjC,IACE,QAAQ,SAAS,yBACjB,QAAQ,QAAQ,SAAS,sBAAsB,GAC/C;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ,KAAK,OAAO;AAAA,CACrB;AAID,SAAS,SAAS,CAAC,MAAwC;AAAA,EACzD,MAAM,UAAkC,CAAC;AAAA,EAEzC,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AAAA,IACnD,MAAM,MAAM,KAAK;AAAA,IAEjB,QAAQ;AAAA,WACD;AAAA,QACH,SAAS;AAAA,QACT,IAAI,KAAK,QAAQ;AAAA,UACf,QAAQ,aAAa,KAAK;AAAA,QAC5B;AAAA,QACA;AAAA,WACG;AAAA,QACH,SAAS;AAAA,QACT,IAAI,KAAK,QAAQ;AAAA,UACf,QAAQ,OAAO,KAAK;AAAA,UACpB,QAAQ,aAAa;AAAA,QACvB;AAAA,QACA;AAAA,WACG;AAAA,QACH,SAAS;AAAA,QACT,IAAI,KAAK,QAAQ;AAAA,UACf,QAAQ,OAAO,OAAO,SAAS,KAAK,QAAS,EAAE;AAAA,UAC/C,QAAQ,aAAa;AAAA,QACvB;AAAA,QACA;AAAA,WACG;AAAA,QACH,SAAS;AAAA,QACT,IAAI,KAAK,QAAQ;AAAA,UACf,QAAQ,cAAc,OAAO,SAAS,KAAK,QAAS,EAAE;AAAA,QACxD;AAAA,QACA;AAAA,WACG;AAAA,QACH,SAAS;AAAA,QACT,IAAI,KAAK,QAAQ;AAAA,UACf,QAAQ,uBAAuB,OAAO,SAAS,KAAK,QAAS,EAAE;AAAA,QACjE;AAAA,QACA;AAAA,WACG;AAAA,WACA;AAAA,QACH,QAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAanB;AAAA,QACO,QAAQ,KAAK,CAAC;AAAA;AAAA,QAEd,IAAI,KAAK,WAAW,GAAG,GAAG;AAAA,UACxB,QAAQ,MAAM,mBAAmB,KAAK;AAAA,UACtC,QAAQ,KAAK,CAAC;AAAA,QAChB;AAAA;AAAA,EAEN;AAAA,EAEA,OAAO;AAAA;AAGT,eAAe,IAAI,GAAG;AAAA,EACpB,MAAM,SAAS,MAAM,YAAY,UAAU,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,EACjE,MAAM,WAAW,YAAY;AAAA,IAC3B,QAAQ,IAAI;AAAA,iBAAoB;AAAA,IAChC,MAAM,OAAO,MAAM;AAAA,IACnB,QAAQ,KAAK,CAAC;AAAA;AAAA,EAGhB,QAAQ,GAAG,UAAU,QAAQ;AAAA,EAC7B,QAAQ,GAAG,WAAW,QAAQ;AAAA;AAGhC,KAAK,EAAE,MAAM,CAAC,UAAU;AAAA,EACtB,QAAQ,MAAM,2BAA2B,KAAK;AAAA,EAC9C,QAAQ,KAAK,CAAC;AAAA,CACf;",
8
+ "debugId": "B49073D8A9F1D2C464756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,76 @@
1
+ // src/files/index.ts
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ function resolveSafePath(root, requestedPath) {
5
+ const resolvedRoot = path.resolve(root);
6
+ const resolvedPath = path.resolve(path.join(resolvedRoot, requestedPath));
7
+ if (!resolvedPath.startsWith(`${resolvedRoot}${path.sep}`) && resolvedPath !== resolvedRoot) {
8
+ throw new Error(`Access denied: ${requestedPath}`);
9
+ }
10
+ return resolvedPath;
11
+ }
12
+ function createFileBindings(options) {
13
+ const allowWrite = options.allowWrite ?? false;
14
+ return {
15
+ readFile: async (requestedPath) => {
16
+ const safePath = resolveSafePath(options.root, requestedPath);
17
+ const buffer = await fs.readFile(safePath);
18
+ return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
19
+ },
20
+ writeFile: async (requestedPath, data) => {
21
+ if (!allowWrite) {
22
+ throw new Error("Write access is disabled for these file bindings.");
23
+ }
24
+ const safePath = resolveSafePath(options.root, requestedPath);
25
+ await fs.mkdir(path.dirname(safePath), { recursive: true });
26
+ await fs.writeFile(safePath, Buffer.from(data));
27
+ },
28
+ unlink: async (requestedPath) => {
29
+ if (!allowWrite) {
30
+ throw new Error("Write access is disabled for these file bindings.");
31
+ }
32
+ const safePath = resolveSafePath(options.root, requestedPath);
33
+ await fs.unlink(safePath);
34
+ },
35
+ readdir: async (requestedPath) => {
36
+ const safePath = resolveSafePath(options.root, requestedPath);
37
+ return await fs.readdir(safePath);
38
+ },
39
+ mkdir: async (requestedPath, mkdirOptions) => {
40
+ if (!allowWrite) {
41
+ throw new Error("Write access is disabled for these file bindings.");
42
+ }
43
+ const safePath = resolveSafePath(options.root, requestedPath);
44
+ await fs.mkdir(safePath, { recursive: mkdirOptions?.recursive ?? false });
45
+ },
46
+ rmdir: async (requestedPath) => {
47
+ if (!allowWrite) {
48
+ throw new Error("Write access is disabled for these file bindings.");
49
+ }
50
+ const safePath = resolveSafePath(options.root, requestedPath);
51
+ await fs.rmdir(safePath);
52
+ },
53
+ stat: async (requestedPath) => {
54
+ const safePath = resolveSafePath(options.root, requestedPath);
55
+ const stats = await fs.stat(safePath);
56
+ return {
57
+ isFile: stats.isFile(),
58
+ isDirectory: stats.isDirectory(),
59
+ size: stats.size
60
+ };
61
+ },
62
+ rename: async (from, to) => {
63
+ if (!allowWrite) {
64
+ throw new Error("Write access is disabled for these file bindings.");
65
+ }
66
+ const safeFrom = resolveSafePath(options.root, from);
67
+ const safeTo = resolveSafePath(options.root, to);
68
+ await fs.rename(safeFrom, safeTo);
69
+ }
70
+ };
71
+ }
72
+ export {
73
+ createFileBindings
74
+ };
75
+
76
+ //# debugId=C909929EEB3CF93864756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/files/index.ts"],
4
+ "sourcesContent": [
5
+ "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { FileBindings } from \"../types.mjs\";\n\nfunction resolveSafePath(root: string, requestedPath: string): string {\n const resolvedRoot = path.resolve(root);\n const resolvedPath = path.resolve(path.join(resolvedRoot, requestedPath));\n if (!resolvedPath.startsWith(`${resolvedRoot}${path.sep}`) && resolvedPath !== resolvedRoot) {\n throw new Error(`Access denied: ${requestedPath}`);\n }\n return resolvedPath;\n}\n\nexport function createFileBindings(options: {\n root: string;\n allowWrite?: boolean;\n}): FileBindings {\n const allowWrite = options.allowWrite ?? false;\n\n return {\n readFile: async (requestedPath) => {\n const safePath = resolveSafePath(options.root, requestedPath);\n const buffer = await fs.readFile(safePath);\n return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);\n },\n writeFile: async (requestedPath, data) => {\n if (!allowWrite) {\n throw new Error(\"Write access is disabled for these file bindings.\");\n }\n const safePath = resolveSafePath(options.root, requestedPath);\n await fs.mkdir(path.dirname(safePath), { recursive: true });\n await fs.writeFile(safePath, Buffer.from(data));\n },\n unlink: async (requestedPath) => {\n if (!allowWrite) {\n throw new Error(\"Write access is disabled for these file bindings.\");\n }\n const safePath = resolveSafePath(options.root, requestedPath);\n await fs.unlink(safePath);\n },\n readdir: async (requestedPath) => {\n const safePath = resolveSafePath(options.root, requestedPath);\n return await fs.readdir(safePath);\n },\n mkdir: async (requestedPath, mkdirOptions) => {\n if (!allowWrite) {\n throw new Error(\"Write access is disabled for these file bindings.\");\n }\n const safePath = resolveSafePath(options.root, requestedPath);\n await fs.mkdir(safePath, { recursive: mkdirOptions?.recursive ?? false });\n },\n rmdir: async (requestedPath) => {\n if (!allowWrite) {\n throw new Error(\"Write access is disabled for these file bindings.\");\n }\n const safePath = resolveSafePath(options.root, requestedPath);\n await fs.rmdir(safePath);\n },\n stat: async (requestedPath) => {\n const safePath = resolveSafePath(options.root, requestedPath);\n const stats = await fs.stat(safePath);\n return {\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n size: stats.size,\n };\n },\n rename: async (from, to) => {\n if (!allowWrite) {\n throw new Error(\"Write access is disabled for these file bindings.\");\n }\n const safeFrom = resolveSafePath(options.root, from);\n const safeTo = resolveSafePath(options.root, to);\n await fs.rename(safeFrom, safeTo);\n },\n };\n}\n"
6
+ ],
7
+ "mappings": ";AAAA;AACA;AAGA,SAAS,eAAe,CAAC,MAAc,eAA+B;AAAA,EACpE,MAAM,eAAe,KAAK,QAAQ,IAAI;AAAA,EACtC,MAAM,eAAe,KAAK,QAAQ,KAAK,KAAK,cAAc,aAAa,CAAC;AAAA,EACxE,IAAI,CAAC,aAAa,WAAW,GAAG,eAAe,KAAK,KAAK,KAAK,iBAAiB,cAAc;AAAA,IAC3F,MAAM,IAAI,MAAM,kBAAkB,eAAe;AAAA,EACnD;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,kBAAkB,CAAC,SAGlB;AAAA,EACf,MAAM,aAAa,QAAQ,cAAc;AAAA,EAEzC,OAAO;AAAA,IACL,UAAU,OAAO,kBAAkB;AAAA,MACjC,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,SAAS,MAAM,GAAG,SAAS,QAAQ;AAAA,MACzC,OAAO,OAAO,OAAO,MAAM,OAAO,YAAY,OAAO,aAAa,OAAO,UAAU;AAAA;AAAA,IAErF,WAAW,OAAO,eAAe,SAAS;AAAA,MACxC,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAAA,MACA,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,GAAG,MAAM,KAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAC1D,MAAM,GAAG,UAAU,UAAU,OAAO,KAAK,IAAI,CAAC;AAAA;AAAA,IAEhD,QAAQ,OAAO,kBAAkB;AAAA,MAC/B,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAAA,MACA,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,GAAG,OAAO,QAAQ;AAAA;AAAA,IAE1B,SAAS,OAAO,kBAAkB;AAAA,MAChC,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,OAAO,MAAM,GAAG,QAAQ,QAAQ;AAAA;AAAA,IAElC,OAAO,OAAO,eAAe,iBAAiB;AAAA,MAC5C,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAAA,MACA,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,GAAG,MAAM,UAAU,EAAE,WAAW,cAAc,aAAa,MAAM,CAAC;AAAA;AAAA,IAE1E,OAAO,OAAO,kBAAkB;AAAA,MAC9B,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAAA,MACA,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,GAAG,MAAM,QAAQ;AAAA;AAAA,IAEzB,MAAM,OAAO,kBAAkB;AAAA,MAC7B,MAAM,WAAW,gBAAgB,QAAQ,MAAM,aAAa;AAAA,MAC5D,MAAM,QAAQ,MAAM,GAAG,KAAK,QAAQ;AAAA,MACpC,OAAO;AAAA,QACL,QAAQ,MAAM,OAAO;AAAA,QACrB,aAAa,MAAM,YAAY;AAAA,QAC/B,MAAM,MAAM;AAAA,MACd;AAAA;AAAA,IAEF,QAAQ,OAAO,MAAM,OAAO;AAAA,MAC1B,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAAA,MACA,MAAM,WAAW,gBAAgB,QAAQ,MAAM,IAAI;AAAA,MACnD,MAAM,SAAS,gBAAgB,QAAQ,MAAM,EAAE;AAAA,MAC/C,MAAM,GAAG,OAAO,UAAU,MAAM;AAAA;AAAA,EAEpC;AAAA;",
8
+ "debugId": "C909929EEB3CF93864756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,171 @@
1
+ // src/host/create-isolate-host.ts
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { spawn } from "node:child_process";
5
+ import { connect } from "../internal/client/index.mjs";
6
+ import { createRuntimeDiagnostics } from "../bridge/diagnostics.mjs";
7
+ import { createRuntimeBindingsAdapter } from "../bridge/runtime-bindings.mjs";
8
+ import { createBrowserRuntimeAdapter } from "../browser/browser-runtime.mjs";
9
+ import { createScriptRuntimeAdapter } from "../runtime/script-runtime.mjs";
10
+ import { createAppServerAdapter } from "../server/app-server.mjs";
11
+ function resolveDefaultDaemonEntrypoint() {
12
+ const localPath = path.resolve(import.meta.dirname, "../daemon.ts");
13
+ if (fs.existsSync(localPath)) {
14
+ return localPath;
15
+ }
16
+ return null;
17
+ }
18
+ async function waitForSocket(socketPath, timeoutMs) {
19
+ const startTime = Date.now();
20
+ while (Date.now() - startTime < timeoutMs) {
21
+ if (fs.existsSync(socketPath)) {
22
+ await new Promise((resolve) => setTimeout(resolve, 100));
23
+ return;
24
+ }
25
+ await new Promise((resolve) => setTimeout(resolve, 50));
26
+ }
27
+ throw new Error(`Daemon socket not available after ${timeoutMs}ms`);
28
+ }
29
+
30
+ class HostImpl {
31
+ options;
32
+ daemonProcess = null;
33
+ connection = null;
34
+ connectionPromise = null;
35
+ servers = new Set;
36
+ runtimes = new Set;
37
+ constructor(options) {
38
+ this.options = options ?? {};
39
+ }
40
+ async createAppServer(options) {
41
+ const server = await createAppServerAdapter(() => this.getConnection(), options);
42
+ this.servers.add(server);
43
+ return server;
44
+ }
45
+ async createRuntime(options) {
46
+ const diagnostics = createRuntimeDiagnostics();
47
+ let runtimeId = options.key ?? "runtime";
48
+ const bindingsAdapter = createRuntimeBindingsAdapter(options.bindings, () => runtimeId, diagnostics);
49
+ const runtime = await this.createRemoteRuntime({
50
+ ...bindingsAdapter.runtimeOptions,
51
+ cwd: options.cwd,
52
+ memoryLimitMB: options.memoryLimitMB,
53
+ executionTimeout: options.executionTimeout,
54
+ testEnvironment: options.features?.tests ?? false
55
+ }, options.key);
56
+ runtimeId = runtime.id;
57
+ const adapter = createScriptRuntimeAdapter(runtime, diagnostics, {
58
+ onBeforeDispose: (reason) => bindingsAdapter.abort(reason)
59
+ });
60
+ this.runtimes.add(adapter);
61
+ return adapter;
62
+ }
63
+ async createBrowserRuntime(options) {
64
+ const browserRuntime = await createBrowserRuntimeAdapter(async (runtimeOptions) => await this.createRemoteRuntime(runtimeOptions, options.key), options);
65
+ this.runtimes.add(browserRuntime);
66
+ return browserRuntime;
67
+ }
68
+ async diagnostics() {
69
+ return {
70
+ runtimes: this.runtimes.size,
71
+ servers: this.servers.size,
72
+ connected: this.connection?.isConnected() ?? false
73
+ };
74
+ }
75
+ async close() {
76
+ if (this.connection) {
77
+ await this.connection.close().catch(() => {});
78
+ }
79
+ this.connection = null;
80
+ this.connectionPromise = null;
81
+ if (this.daemonProcess) {
82
+ const process2 = this.daemonProcess;
83
+ this.daemonProcess = null;
84
+ await new Promise((resolve) => {
85
+ const timeout = setTimeout(() => {
86
+ process2.kill("SIGKILL");
87
+ resolve();
88
+ }, 5000);
89
+ process2.once("exit", () => {
90
+ clearTimeout(timeout);
91
+ resolve();
92
+ });
93
+ process2.kill("SIGTERM");
94
+ });
95
+ }
96
+ }
97
+ async createRemoteRuntime(options, key) {
98
+ const connection = await this.getConnection();
99
+ if (key) {
100
+ return await connection.createNamespace(key).createRuntime(options);
101
+ }
102
+ return await connection.createRuntime(options);
103
+ }
104
+ async getConnection() {
105
+ if (this.connection?.isConnected()) {
106
+ return this.connection;
107
+ }
108
+ if (this.connectionPromise) {
109
+ return this.connectionPromise;
110
+ }
111
+ this.connectionPromise = (async () => {
112
+ await this.ensureDaemon();
113
+ this.connection = await connect({
114
+ socket: this.options.daemon?.socketPath ?? "/tmp/isolate.sock",
115
+ timeout: this.options.daemon?.timeoutMs ?? 5000
116
+ });
117
+ return this.connection;
118
+ })();
119
+ return await this.connectionPromise.finally(() => {
120
+ this.connectionPromise = null;
121
+ });
122
+ }
123
+ async ensureDaemon() {
124
+ if (this.connection?.isConnected()) {
125
+ return;
126
+ }
127
+ if (this.options.daemon?.autoStart === false) {
128
+ return;
129
+ }
130
+ if (this.daemonProcess) {
131
+ return;
132
+ }
133
+ const socketPath = this.options.daemon?.socketPath ?? "/tmp/isolate.sock";
134
+ const entrypoint = this.options.daemon?.entrypoint ?? resolveDefaultDaemonEntrypoint();
135
+ try {
136
+ if (fs.existsSync(socketPath)) {
137
+ fs.unlinkSync(socketPath);
138
+ }
139
+ } catch {}
140
+ const cli = entrypoint ? ["node", "--experimental-strip-types", entrypoint, "--socket", socketPath] : ["isolate-daemon", "--socket", socketPath];
141
+ const cwd = this.options.daemon?.cwd ?? (entrypoint ? path.resolve(import.meta.dirname, "../..") : process.cwd());
142
+ this.daemonProcess = spawn(cli[0], cli.slice(1), {
143
+ cwd,
144
+ stdio: ["ignore", "pipe", "pipe"],
145
+ env: {
146
+ ...process.env,
147
+ NODE_OPTIONS: ""
148
+ }
149
+ });
150
+ this.daemonProcess.stdout?.on("data", (data) => {
151
+ console.log("[isolate-host]", data.toString().trim());
152
+ });
153
+ this.daemonProcess.stderr?.on("data", (data) => {
154
+ console.error("[isolate-host]", data.toString().trim());
155
+ });
156
+ this.daemonProcess.on("exit", () => {
157
+ this.daemonProcess = null;
158
+ this.connection = null;
159
+ this.connectionPromise = null;
160
+ });
161
+ await waitForSocket(socketPath, this.options.daemon?.timeoutMs ?? 1e4);
162
+ }
163
+ }
164
+ async function createIsolateHost(options) {
165
+ return new HostImpl(options);
166
+ }
167
+ export {
168
+ createIsolateHost
169
+ };
170
+
171
+ //# debugId=C74F5A138F5E977364756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/host/create-isolate-host.ts"],
4
+ "sourcesContent": [
5
+ "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { connect, type DaemonConnection, type RemoteRuntime, type RuntimeOptions } from \"../internal/client/index.mjs\";\nimport { createRuntimeDiagnostics } from \"../bridge/diagnostics.mjs\";\nimport { createRuntimeBindingsAdapter } from \"../bridge/runtime-bindings.mjs\";\nimport { createBrowserRuntimeAdapter } from \"../browser/browser-runtime.mjs\";\nimport { createScriptRuntimeAdapter } from \"../runtime/script-runtime.mjs\";\nimport { createAppServerAdapter } from \"../server/app-server.mjs\";\nimport type { CreateBrowserRuntimeOptions, CreateIsolateHostOptions, CreateRuntimeOptions, IsolateHost } from \"../types.mjs\";\n\nfunction resolveDefaultDaemonEntrypoint(): string | null {\n const localPath = path.resolve(import.meta.dirname, \"../daemon.ts\");\n if (fs.existsSync(localPath)) {\n return localPath;\n }\n return null;\n}\n\nasync function waitForSocket(socketPath: string, timeoutMs: number): Promise<void> {\n const startTime = Date.now();\n while (Date.now() - startTime < timeoutMs) {\n if (fs.existsSync(socketPath)) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n throw new Error(`Daemon socket not available after ${timeoutMs}ms`);\n}\n\nclass HostImpl implements IsolateHost {\n private readonly options: CreateIsolateHostOptions;\n private daemonProcess: ChildProcess | null = null;\n private connection: DaemonConnection | null = null;\n private connectionPromise: Promise<DaemonConnection> | null = null;\n private readonly servers = new Set<object>();\n private readonly runtimes = new Set<object>();\n\n constructor(options?: CreateIsolateHostOptions) {\n this.options = options ?? {};\n }\n\n async createAppServer(options: CreateRuntimeOptions & { key: string; entry: string; entryFilename?: string; webSockets?: { onCommand?: (command: { type: \"message\" | \"close\"; connectionId: string; data?: string | ArrayBuffer; code?: number; reason?: string }) => void } }) {\n const server = await createAppServerAdapter(() => this.getConnection(), options);\n this.servers.add(server);\n return server;\n }\n\n async createRuntime(options: CreateRuntimeOptions) {\n const diagnostics = createRuntimeDiagnostics();\n let runtimeId = options.key ?? \"runtime\";\n const bindingsAdapter = createRuntimeBindingsAdapter(\n options.bindings,\n () => runtimeId,\n diagnostics,\n );\n const runtime = await this.createRemoteRuntime(\n {\n ...bindingsAdapter.runtimeOptions,\n cwd: options.cwd,\n memoryLimitMB: options.memoryLimitMB,\n executionTimeout: options.executionTimeout,\n testEnvironment: options.features?.tests ?? false,\n },\n options.key,\n );\n runtimeId = runtime.id;\n const adapter = createScriptRuntimeAdapter(runtime, diagnostics, {\n onBeforeDispose: (reason) => bindingsAdapter.abort(reason),\n });\n this.runtimes.add(adapter);\n return adapter;\n }\n\n async createBrowserRuntime(options: CreateBrowserRuntimeOptions) {\n const browserRuntime = await createBrowserRuntimeAdapter(\n async (runtimeOptions) => await this.createRemoteRuntime(runtimeOptions, options.key),\n options,\n );\n this.runtimes.add(browserRuntime);\n return browserRuntime;\n }\n\n async diagnostics() {\n return {\n runtimes: this.runtimes.size,\n servers: this.servers.size,\n connected: this.connection?.isConnected() ?? false,\n };\n }\n\n async close(): Promise<void> {\n if (this.connection) {\n await this.connection.close().catch(() => {});\n }\n this.connection = null;\n this.connectionPromise = null;\n\n if (this.daemonProcess) {\n const process = this.daemonProcess;\n this.daemonProcess = null;\n await new Promise<void>((resolve) => {\n const timeout = setTimeout(() => {\n process.kill(\"SIGKILL\");\n resolve();\n }, 5000);\n process.once(\"exit\", () => {\n clearTimeout(timeout);\n resolve();\n });\n process.kill(\"SIGTERM\");\n });\n }\n }\n\n private async createRemoteRuntime(options: RuntimeOptions, key?: string): Promise<RemoteRuntime> {\n const connection = await this.getConnection();\n if (key) {\n return await connection.createNamespace(key).createRuntime(options);\n }\n return await connection.createRuntime(options);\n }\n\n private async getConnection(): Promise<DaemonConnection> {\n if (this.connection?.isConnected()) {\n return this.connection;\n }\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connectionPromise = (async () => {\n await this.ensureDaemon();\n this.connection = await connect({\n socket: this.options.daemon?.socketPath ?? \"/tmp/isolate.sock\",\n timeout: this.options.daemon?.timeoutMs ?? 5000,\n });\n return this.connection;\n })();\n\n return await this.connectionPromise.finally(() => {\n this.connectionPromise = null;\n });\n }\n\n private async ensureDaemon(): Promise<void> {\n if (this.connection?.isConnected()) {\n return;\n }\n\n if (this.options.daemon?.autoStart === false) {\n return;\n }\n\n if (this.daemonProcess) {\n return;\n }\n\n const socketPath = this.options.daemon?.socketPath ?? \"/tmp/isolate.sock\";\n const entrypoint = this.options.daemon?.entrypoint ?? resolveDefaultDaemonEntrypoint();\n\n try {\n if (fs.existsSync(socketPath)) {\n fs.unlinkSync(socketPath);\n }\n } catch {\n // ignore stale socket cleanup failures\n }\n\n const cli = entrypoint\n ? [\"node\", \"--experimental-strip-types\", entrypoint, \"--socket\", socketPath]\n : [\"isolate-daemon\", \"--socket\", socketPath];\n const cwd = this.options.daemon?.cwd ?? (entrypoint ? path.resolve(import.meta.dirname, \"../..\") : process.cwd());\n this.daemonProcess = spawn(cli[0]!, cli.slice(1), {\n cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: {\n ...process.env,\n NODE_OPTIONS: \"\",\n },\n });\n\n this.daemonProcess.stdout?.on(\"data\", (data: Buffer) => {\n console.log(\"[isolate-host]\", data.toString().trim());\n });\n this.daemonProcess.stderr?.on(\"data\", (data: Buffer) => {\n console.error(\"[isolate-host]\", data.toString().trim());\n });\n this.daemonProcess.on(\"exit\", () => {\n this.daemonProcess = null;\n this.connection = null;\n this.connectionPromise = null;\n });\n\n await waitForSocket(socketPath, this.options.daemon?.timeoutMs ?? 10_000);\n }\n}\n\nexport async function createIsolateHost(options?: CreateIsolateHostOptions): Promise<IsolateHost> {\n return new HostImpl(options);\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "C74F5A138F5E977364756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,7 @@
1
+ // src/host/index.ts
2
+ import { createIsolateHost } from "./create-isolate-host.mjs";
3
+ export {
4
+ createIsolateHost
5
+ };
6
+
7
+ //# debugId=6C76FB579602018864756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/host/index.ts"],
4
+ "sourcesContent": [
5
+ "export { createIsolateHost } from \"./create-isolate-host.mjs\";\n"
6
+ ],
7
+ "mappings": ";AAAA;",
8
+ "debugId": "6C76FB579602018864756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,15 @@
1
+ // src/index.ts
2
+ import { createIsolateHost } from "./host/index.mjs";
3
+ import { createModuleResolver } from "./modules/index.mjs";
4
+ import { createFileBindings } from "./files/index.mjs";
5
+ import { getTypeProfile, typecheck, formatTypecheckErrors } from "./typecheck/index.mjs";
6
+ export {
7
+ typecheck,
8
+ getTypeProfile,
9
+ formatTypecheckErrors,
10
+ createModuleResolver,
11
+ createIsolateHost,
12
+ createFileBindings
13
+ };
14
+
15
+ //# debugId=CB823D2BFBB00D8F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": [
5
+ "export { createIsolateHost } from \"./host/index.mjs\";\nexport { createModuleResolver } from \"./modules/index.mjs\";\nexport { createFileBindings } from \"./files/index.mjs\";\nexport { getTypeProfile, typecheck, formatTypecheckErrors } from \"./typecheck/index.mjs\";\n\nexport type {\n AppServer,\n BrowserRuntime,\n BrowserRuntimeDiagnostics,\n ConsoleEntry,\n CreateAppServerOptions,\n CreateBrowserRuntimeOptions,\n CreateIsolateHostOptions,\n CreateRuntimeOptions,\n FileBindings,\n HostBindings,\n HostCallContext,\n IsolateHost,\n ModuleImporter,\n ModuleResolveResult,\n ModuleResolver,\n ModuleResolverFallback,\n ModuleResolverSourceLoader,\n ModuleSource,\n PlaywrightEvent,\n RequestResult,\n RunResults,\n ScriptRuntime,\n TestEvent,\n ToolBindings,\n ToolHandler,\n RuntimeDiagnostics,\n TypeCapability,\n TypeProfile,\n TypeProfileName,\n TypecheckRequest,\n WebSocketUpgradeData,\n} from \"./types.mjs\";\n"
6
+ ],
7
+ "mappings": ";AAAA;AACA;AACA;AACA;",
8
+ "debugId": "CB823D2BFBB00D8F64756E2164756E21",
9
+ "names": []
10
+ }