@ricsam/isolate 0.0.1 → 0.1.0

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/dist/cjs/bridge/diagnostics.cjs +58 -0
  2. package/dist/cjs/bridge/diagnostics.cjs.map +10 -0
  3. package/dist/cjs/bridge/legacy-adapters.cjs +242 -0
  4. package/dist/cjs/bridge/legacy-adapters.cjs.map +10 -0
  5. package/dist/cjs/bridge/request-context.cjs +59 -0
  6. package/dist/cjs/bridge/request-context.cjs.map +10 -0
  7. package/dist/cjs/bridge/runtime-bindings.cjs +367 -0
  8. package/dist/cjs/bridge/runtime-bindings.cjs.map +10 -0
  9. package/dist/cjs/browser/browser-runtime.cjs +157 -0
  10. package/dist/cjs/browser/browser-runtime.cjs.map +10 -0
  11. package/dist/cjs/daemon.cjs +91 -0
  12. package/dist/cjs/daemon.cjs.map +10 -0
  13. package/dist/cjs/files/index.cjs +140 -0
  14. package/dist/cjs/files/index.cjs.map +10 -0
  15. package/dist/cjs/host/create-isolate-host.cjs +235 -0
  16. package/dist/cjs/host/create-isolate-host.cjs.map +10 -0
  17. package/dist/cjs/host/index.cjs +47 -0
  18. package/dist/cjs/host/index.cjs.map +10 -0
  19. package/dist/cjs/index.cjs +55 -0
  20. package/dist/cjs/index.cjs.map +10 -0
  21. package/dist/cjs/internal/client/connection.cjs +1919 -0
  22. package/dist/cjs/internal/client/connection.cjs.map +10 -0
  23. package/dist/cjs/internal/client/index.cjs +48 -0
  24. package/dist/cjs/internal/client/index.cjs.map +10 -0
  25. package/dist/cjs/internal/client/types.cjs +30 -0
  26. package/dist/cjs/internal/client/types.cjs.map +9 -0
  27. package/dist/cjs/internal/console/index.cjs +506 -0
  28. package/dist/cjs/internal/console/index.cjs.map +10 -0
  29. package/dist/cjs/internal/console/utils.cjs +70 -0
  30. package/dist/cjs/internal/console/utils.cjs.map +10 -0
  31. package/dist/cjs/internal/core/index.cjs +2745 -0
  32. package/dist/cjs/internal/core/index.cjs.map +10 -0
  33. package/dist/cjs/internal/crypto/index.cjs +470 -0
  34. package/dist/cjs/internal/crypto/index.cjs.map +10 -0
  35. package/dist/cjs/internal/daemon/callback-fs-handler.cjs +355 -0
  36. package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +10 -0
  37. package/dist/cjs/internal/daemon/connection.cjs +1952 -0
  38. package/dist/cjs/internal/daemon/connection.cjs.map +10 -0
  39. package/dist/cjs/internal/daemon/daemon.cjs +98 -0
  40. package/dist/cjs/internal/daemon/daemon.cjs.map +10 -0
  41. package/dist/cjs/internal/daemon/index.cjs +145 -0
  42. package/dist/cjs/internal/daemon/index.cjs.map +10 -0
  43. package/dist/cjs/internal/daemon/runtime-pool.cjs +106 -0
  44. package/dist/cjs/internal/daemon/runtime-pool.cjs.map +10 -0
  45. package/dist/cjs/internal/daemon/types.cjs +30 -0
  46. package/dist/cjs/internal/daemon/types.cjs.map +9 -0
  47. package/dist/cjs/internal/encoding/index.cjs +419 -0
  48. package/dist/cjs/internal/encoding/index.cjs.map +10 -0
  49. package/dist/cjs/internal/fetch/consistency/origins.cjs +598 -0
  50. package/dist/cjs/internal/fetch/consistency/origins.cjs.map +10 -0
  51. package/dist/cjs/internal/fetch/index.cjs +2640 -0
  52. package/dist/cjs/internal/fetch/index.cjs.map +10 -0
  53. package/dist/cjs/internal/fetch/stream-state.cjs +256 -0
  54. package/dist/cjs/internal/fetch/stream-state.cjs.map +10 -0
  55. package/dist/cjs/internal/fs/index.cjs +847 -0
  56. package/dist/cjs/internal/fs/index.cjs.map +10 -0
  57. package/dist/cjs/internal/fs/node-adapter.cjs +254 -0
  58. package/dist/cjs/internal/fs/node-adapter.cjs.map +10 -0
  59. package/dist/cjs/internal/module-loader/bundle.cjs +482 -0
  60. package/dist/cjs/internal/module-loader/bundle.cjs.map +10 -0
  61. package/dist/cjs/internal/module-loader/index.cjs +240 -0
  62. package/dist/cjs/internal/module-loader/index.cjs.map +10 -0
  63. package/dist/cjs/internal/module-loader/mappings.cjs +120 -0
  64. package/dist/cjs/internal/module-loader/mappings.cjs.map +10 -0
  65. package/dist/cjs/internal/module-loader/resolve.cjs +177 -0
  66. package/dist/cjs/internal/module-loader/resolve.cjs.map +10 -0
  67. package/dist/cjs/internal/module-loader/strip-types.cjs +236 -0
  68. package/dist/cjs/internal/module-loader/strip-types.cjs.map +10 -0
  69. package/dist/cjs/internal/path/index.cjs +503 -0
  70. package/dist/cjs/internal/path/index.cjs.map +10 -0
  71. package/dist/cjs/internal/playwright/client.cjs +49 -0
  72. package/dist/cjs/internal/playwright/client.cjs.map +10 -0
  73. package/dist/cjs/internal/playwright/handler.cjs +1416 -0
  74. package/dist/cjs/internal/playwright/handler.cjs.map +10 -0
  75. package/dist/cjs/internal/playwright/index.cjs +1289 -0
  76. package/dist/cjs/internal/playwright/index.cjs.map +10 -0
  77. package/dist/cjs/internal/playwright/types.cjs +47 -0
  78. package/dist/cjs/internal/playwright/types.cjs.map +10 -0
  79. package/dist/cjs/internal/protocol/codec.cjs +510 -0
  80. package/dist/cjs/internal/protocol/codec.cjs.map +10 -0
  81. package/dist/cjs/internal/protocol/framing.cjs +141 -0
  82. package/dist/cjs/internal/protocol/framing.cjs.map +10 -0
  83. package/dist/cjs/internal/protocol/index.cjs +110 -0
  84. package/dist/cjs/internal/protocol/index.cjs.map +10 -0
  85. package/dist/cjs/internal/protocol/marshalValue.cjs +518 -0
  86. package/dist/cjs/internal/protocol/marshalValue.cjs.map +10 -0
  87. package/dist/cjs/internal/protocol/serialization.cjs +109 -0
  88. package/dist/cjs/internal/protocol/serialization.cjs.map +10 -0
  89. package/dist/cjs/internal/protocol/types.cjs +181 -0
  90. package/dist/cjs/internal/protocol/types.cjs.map +10 -0
  91. package/dist/cjs/internal/runtime/index.cjs +1235 -0
  92. package/dist/cjs/internal/runtime/index.cjs.map +10 -0
  93. package/dist/cjs/internal/server/index.cjs +223 -0
  94. package/dist/cjs/internal/server/index.cjs.map +10 -0
  95. package/dist/cjs/internal/test-environment/index.cjs +1415 -0
  96. package/dist/cjs/internal/test-environment/index.cjs.map +10 -0
  97. package/dist/cjs/internal/timers/index.cjs +200 -0
  98. package/dist/cjs/internal/timers/index.cjs.map +10 -0
  99. package/dist/cjs/internal/transform/index.cjs +361 -0
  100. package/dist/cjs/internal/transform/index.cjs.map +10 -0
  101. package/dist/cjs/internal/typecheck/index.cjs +60 -0
  102. package/dist/cjs/internal/typecheck/index.cjs.map +10 -0
  103. package/dist/cjs/internal/typecheck/isolate-types.cjs +2614 -0
  104. package/dist/cjs/internal/typecheck/isolate-types.cjs.map +10 -0
  105. package/dist/cjs/internal/typecheck/typecheck.cjs +131 -0
  106. package/dist/cjs/internal/typecheck/typecheck.cjs.map +10 -0
  107. package/dist/cjs/modules/index.cjs +160 -0
  108. package/dist/cjs/modules/index.cjs.map +10 -0
  109. package/dist/cjs/package.json +5 -0
  110. package/dist/cjs/runtime/script-runtime.cjs +97 -0
  111. package/dist/cjs/runtime/script-runtime.cjs.map +10 -0
  112. package/dist/cjs/server/app-server.cjs +158 -0
  113. package/dist/cjs/server/app-server.cjs.map +10 -0
  114. package/dist/cjs/testing/integration-helpers.cjs +127 -0
  115. package/dist/cjs/testing/integration-helpers.cjs.map +10 -0
  116. package/dist/cjs/typecheck/index.cjs +96 -0
  117. package/dist/cjs/typecheck/index.cjs.map +10 -0
  118. package/dist/cjs/types.cjs +30 -0
  119. package/dist/cjs/types.cjs.map +9 -0
  120. package/dist/mjs/bridge/diagnostics.mjs +18 -0
  121. package/dist/mjs/bridge/diagnostics.mjs.map +10 -0
  122. package/dist/mjs/bridge/legacy-adapters.mjs +178 -0
  123. package/dist/mjs/bridge/legacy-adapters.mjs.map +10 -0
  124. package/dist/mjs/bridge/request-context.mjs +19 -0
  125. package/dist/mjs/bridge/request-context.mjs.map +10 -0
  126. package/dist/mjs/bridge/runtime-bindings.mjs +303 -0
  127. package/dist/mjs/bridge/runtime-bindings.mjs.map +10 -0
  128. package/dist/mjs/browser/browser-runtime.mjs +93 -0
  129. package/dist/mjs/browser/browser-runtime.mjs.map +10 -0
  130. package/dist/mjs/daemon.mjs +91 -0
  131. package/dist/mjs/daemon.mjs.map +10 -0
  132. package/dist/mjs/files/index.mjs +76 -0
  133. package/dist/mjs/files/index.mjs.map +10 -0
  134. package/dist/mjs/host/create-isolate-host.mjs +171 -0
  135. package/dist/mjs/host/create-isolate-host.mjs.map +10 -0
  136. package/dist/mjs/host/index.mjs +7 -0
  137. package/dist/mjs/host/index.mjs.map +10 -0
  138. package/dist/mjs/index.mjs +15 -0
  139. package/dist/mjs/index.mjs.map +10 -0
  140. package/dist/mjs/internal/client/connection.mjs +1872 -0
  141. package/dist/mjs/internal/client/connection.mjs.map +10 -0
  142. package/dist/mjs/internal/client/index.mjs +8 -0
  143. package/dist/mjs/internal/client/index.mjs.map +10 -0
  144. package/dist/mjs/internal/client/types.mjs +2 -0
  145. package/dist/mjs/internal/client/types.mjs.map +9 -0
  146. package/dist/mjs/internal/console/index.mjs +442 -0
  147. package/dist/mjs/internal/console/index.mjs.map +10 -0
  148. package/dist/mjs/internal/console/utils.mjs +30 -0
  149. package/dist/mjs/internal/console/utils.mjs.map +10 -0
  150. package/dist/mjs/internal/core/index.mjs +2681 -0
  151. package/dist/mjs/internal/core/index.mjs.map +10 -0
  152. package/dist/mjs/internal/crypto/index.mjs +406 -0
  153. package/dist/mjs/internal/crypto/index.mjs.map +10 -0
  154. package/dist/mjs/internal/daemon/callback-fs-handler.mjs +315 -0
  155. package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +10 -0
  156. package/dist/mjs/internal/daemon/connection.mjs +1931 -0
  157. package/dist/mjs/internal/daemon/connection.mjs.map +10 -0
  158. package/dist/mjs/internal/daemon/daemon.mjs +98 -0
  159. package/dist/mjs/internal/daemon/daemon.mjs.map +10 -0
  160. package/dist/mjs/internal/daemon/index.mjs +105 -0
  161. package/dist/mjs/internal/daemon/index.mjs.map +10 -0
  162. package/dist/mjs/internal/daemon/runtime-pool.mjs +66 -0
  163. package/dist/mjs/internal/daemon/runtime-pool.mjs.map +10 -0
  164. package/dist/mjs/internal/daemon/types.mjs +2 -0
  165. package/dist/mjs/internal/daemon/types.mjs.map +9 -0
  166. package/dist/mjs/internal/encoding/index.mjs +379 -0
  167. package/dist/mjs/internal/encoding/index.mjs.map +10 -0
  168. package/dist/mjs/internal/fetch/consistency/origins.mjs +558 -0
  169. package/dist/mjs/internal/fetch/consistency/origins.mjs.map +10 -0
  170. package/dist/mjs/internal/fetch/index.mjs +2580 -0
  171. package/dist/mjs/internal/fetch/index.mjs.map +10 -0
  172. package/dist/mjs/internal/fetch/stream-state.mjs +216 -0
  173. package/dist/mjs/internal/fetch/stream-state.mjs.map +10 -0
  174. package/dist/mjs/internal/fs/index.mjs +783 -0
  175. package/dist/mjs/internal/fs/index.mjs.map +10 -0
  176. package/dist/mjs/internal/fs/node-adapter.mjs +190 -0
  177. package/dist/mjs/internal/fs/node-adapter.mjs.map +10 -0
  178. package/dist/mjs/internal/module-loader/bundle.mjs +418 -0
  179. package/dist/mjs/internal/module-loader/bundle.mjs.map +10 -0
  180. package/dist/mjs/internal/module-loader/index.mjs +185 -0
  181. package/dist/mjs/internal/module-loader/index.mjs.map +10 -0
  182. package/dist/mjs/internal/module-loader/mappings.mjs +80 -0
  183. package/dist/mjs/internal/module-loader/mappings.mjs.map +10 -0
  184. package/dist/mjs/internal/module-loader/resolve.mjs +113 -0
  185. package/dist/mjs/internal/module-loader/resolve.mjs.map +10 -0
  186. package/dist/mjs/internal/module-loader/strip-types.mjs +172 -0
  187. package/dist/mjs/internal/module-loader/strip-types.mjs.map +10 -0
  188. package/dist/mjs/internal/path/index.mjs +463 -0
  189. package/dist/mjs/internal/path/index.mjs.map +10 -0
  190. package/dist/mjs/internal/playwright/client.mjs +13 -0
  191. package/dist/mjs/internal/playwright/client.mjs.map +10 -0
  192. package/dist/mjs/internal/playwright/handler.mjs +1378 -0
  193. package/dist/mjs/internal/playwright/handler.mjs.map +10 -0
  194. package/dist/mjs/internal/playwright/index.mjs +1234 -0
  195. package/dist/mjs/internal/playwright/index.mjs.map +10 -0
  196. package/dist/mjs/internal/playwright/types.mjs +7 -0
  197. package/dist/mjs/internal/playwright/types.mjs.map +10 -0
  198. package/dist/mjs/internal/protocol/codec.mjs +470 -0
  199. package/dist/mjs/internal/protocol/codec.mjs.map +10 -0
  200. package/dist/mjs/internal/protocol/framing.mjs +101 -0
  201. package/dist/mjs/internal/protocol/framing.mjs.map +10 -0
  202. package/dist/mjs/internal/protocol/index.mjs +98 -0
  203. package/dist/mjs/internal/protocol/index.mjs.map +10 -0
  204. package/dist/mjs/internal/protocol/marshalValue.mjs +494 -0
  205. package/dist/mjs/internal/protocol/marshalValue.mjs.map +10 -0
  206. package/dist/mjs/internal/protocol/serialization.mjs +69 -0
  207. package/dist/mjs/internal/protocol/serialization.mjs.map +10 -0
  208. package/dist/mjs/internal/protocol/types.mjs +141 -0
  209. package/dist/mjs/internal/protocol/types.mjs.map +10 -0
  210. package/dist/mjs/internal/runtime/index.mjs +1198 -0
  211. package/dist/mjs/internal/runtime/index.mjs.map +10 -0
  212. package/dist/mjs/internal/server/index.mjs +183 -0
  213. package/dist/mjs/internal/server/index.mjs.map +10 -0
  214. package/dist/mjs/internal/test-environment/index.mjs +1351 -0
  215. package/dist/mjs/internal/test-environment/index.mjs.map +10 -0
  216. package/dist/mjs/internal/timers/index.mjs +136 -0
  217. package/dist/mjs/internal/timers/index.mjs.map +10 -0
  218. package/dist/mjs/internal/transform/index.mjs +321 -0
  219. package/dist/mjs/internal/transform/index.mjs.map +10 -0
  220. package/dist/mjs/internal/typecheck/index.mjs +35 -0
  221. package/dist/mjs/internal/typecheck/index.mjs.map +10 -0
  222. package/dist/mjs/internal/typecheck/isolate-types.mjs +2574 -0
  223. package/dist/mjs/internal/typecheck/isolate-types.mjs.map +10 -0
  224. package/dist/mjs/internal/typecheck/typecheck.mjs +91 -0
  225. package/dist/mjs/internal/typecheck/typecheck.mjs.map +10 -0
  226. package/dist/mjs/modules/index.mjs +96 -0
  227. package/dist/mjs/modules/index.mjs.map +10 -0
  228. package/dist/mjs/package.json +5 -0
  229. package/dist/mjs/runtime/script-runtime.mjs +57 -0
  230. package/dist/mjs/runtime/script-runtime.mjs.map +10 -0
  231. package/dist/mjs/server/app-server.mjs +118 -0
  232. package/dist/mjs/server/app-server.mjs.map +10 -0
  233. package/dist/mjs/testing/integration-helpers.mjs +63 -0
  234. package/dist/mjs/testing/integration-helpers.mjs.map +10 -0
  235. package/dist/mjs/typecheck/index.mjs +56 -0
  236. package/dist/mjs/typecheck/index.mjs.map +10 -0
  237. package/dist/mjs/types.mjs +2 -0
  238. package/dist/mjs/types.mjs.map +9 -0
  239. package/dist/types/bridge/diagnostics.d.ts +12 -0
  240. package/dist/types/bridge/legacy-adapters.d.ts +14 -0
  241. package/dist/types/bridge/request-context.d.ts +10 -0
  242. package/dist/types/bridge/runtime-bindings.d.ts +14 -0
  243. package/dist/types/browser/browser-runtime.d.ts +3 -0
  244. package/dist/types/daemon.d.ts +2 -0
  245. package/dist/types/files/index.d.ts +5 -0
  246. package/dist/types/host/create-isolate-host.d.ts +2 -0
  247. package/dist/types/host/index.d.ts +1 -0
  248. package/dist/types/index.d.ts +5 -0
  249. package/dist/types/internal/client/connection.d.ts +9 -0
  250. package/dist/types/internal/client/index.d.ts +8 -0
  251. package/dist/types/internal/client/types.d.ts +198 -0
  252. package/dist/types/internal/console/index.d.ts +108 -0
  253. package/dist/types/internal/console/utils.d.ts +27 -0
  254. package/dist/types/internal/core/index.d.ts +119 -0
  255. package/dist/types/internal/crypto/index.d.ts +18 -0
  256. package/dist/types/internal/daemon/callback-fs-handler.d.ts +28 -0
  257. package/dist/types/internal/daemon/connection.d.ts +9 -0
  258. package/dist/types/internal/daemon/daemon.d.ts +2 -0
  259. package/dist/types/internal/daemon/index.d.ts +14 -0
  260. package/dist/types/internal/daemon/runtime-pool.d.ts +16 -0
  261. package/dist/types/internal/daemon/types.d.ts +211 -0
  262. package/dist/types/internal/encoding/index.d.ts +21 -0
  263. package/dist/types/internal/fetch/consistency/origins.d.ts +179 -0
  264. package/dist/types/internal/fetch/index.d.ts +93 -0
  265. package/dist/types/internal/fetch/stream-state.d.ts +65 -0
  266. package/dist/types/internal/fs/index.d.ts +70 -0
  267. package/dist/types/internal/fs/node-adapter.d.ts +24 -0
  268. package/dist/types/internal/module-loader/bundle.d.ts +33 -0
  269. package/dist/types/internal/module-loader/index.d.ts +30 -0
  270. package/dist/types/internal/module-loader/mappings.d.ts +47 -0
  271. package/dist/types/internal/module-loader/resolve.d.ts +26 -0
  272. package/dist/types/internal/module-loader/strip-types.d.ts +19 -0
  273. package/dist/types/internal/path/index.d.ts +23 -0
  274. package/dist/types/internal/playwright/client.d.ts +7 -0
  275. package/dist/types/internal/playwright/handler.d.ts +44 -0
  276. package/dist/types/internal/playwright/index.d.ts +14 -0
  277. package/dist/types/internal/playwright/types.d.ts +145 -0
  278. package/dist/types/internal/protocol/codec.d.ts +242 -0
  279. package/dist/types/internal/protocol/framing.d.ts +89 -0
  280. package/dist/types/internal/protocol/index.d.ts +10 -0
  281. package/dist/types/internal/protocol/marshalValue.d.ts +79 -0
  282. package/dist/types/internal/protocol/serialization.d.ts +23 -0
  283. package/dist/types/internal/protocol/types.d.ts +996 -0
  284. package/dist/types/internal/runtime/index.d.ts +200 -0
  285. package/dist/types/internal/server/index.d.ts +42 -0
  286. package/dist/types/internal/test-environment/index.d.ts +112 -0
  287. package/dist/types/internal/timers/index.d.ts +22 -0
  288. package/dist/types/internal/transform/index.d.ts +36 -0
  289. package/dist/types/internal/typecheck/index.d.ts +7 -0
  290. package/dist/types/internal/typecheck/isolate-types.d.ts +94 -0
  291. package/dist/types/internal/typecheck/typecheck.d.ts +148 -0
  292. package/dist/types/modules/index.d.ts +2 -0
  293. package/dist/types/runtime/script-runtime.d.ts +6 -0
  294. package/dist/types/server/app-server.d.ts +3 -0
  295. package/dist/types/testing/integration-helpers.d.ts +9 -0
  296. package/dist/types/typecheck/index.d.ts +8 -0
  297. package/dist/types/types.d.ts +233 -0
  298. package/package.json +74 -6
  299. package/README.md +0 -45
@@ -0,0 +1,470 @@
1
+ var __create = Object.create;
2
+ var __getProtoOf = Object.getPrototypeOf;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
12
+ var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
20
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
21
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
+ for (let key of __getOwnPropNames(mod))
23
+ if (!__hasOwnProp.call(to, key))
24
+ __defProp(to, key, {
25
+ get: __accessProp.bind(mod, key),
26
+ enumerable: true
27
+ });
28
+ if (canCache)
29
+ cache.set(mod, to);
30
+ return to;
31
+ };
32
+ var __toCommonJS = (from) => {
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
34
+ if (entry)
35
+ return entry;
36
+ entry = __defProp({}, "__esModule", { value: true });
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
45
+ __moduleCache.set(from, entry);
46
+ return entry;
47
+ };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
53
+ var __export = (target, all) => {
54
+ for (var name in all)
55
+ __defProp(target, name, {
56
+ get: all[name],
57
+ enumerable: true,
58
+ configurable: true,
59
+ set: __exportSetter.bind(all, name)
60
+ });
61
+ };
62
+
63
+ // packages/isolate/src/internal/crypto/index.ts
64
+ var exports_crypto = {};
65
+ __export(exports_crypto, {
66
+ setupCrypto: () => setupCrypto
67
+ });
68
+ module.exports = __toCommonJS(exports_crypto);
69
+ var import_isolated_vm = __toESM(require("isolated-vm"));
70
+ var import_node_crypto = __toESM(require("node:crypto"));
71
+ var cryptoKeysByContext = new WeakMap;
72
+ var nextKeyId = 1;
73
+ function getKeyMapForContext(context) {
74
+ let map = cryptoKeysByContext.get(context);
75
+ if (!map) {
76
+ map = new Map;
77
+ cryptoKeysByContext.set(context, map);
78
+ }
79
+ return map;
80
+ }
81
+ function deserializeAlgorithm(algorithm) {
82
+ const result = {};
83
+ for (const [key, value] of Object.entries(algorithm)) {
84
+ if (value && typeof value === "object" && !Array.isArray(value) && Object.keys(value).every((k) => /^\d+$/.test(k))) {
85
+ const length = Object.keys(value).length;
86
+ const arr = new Uint8Array(length);
87
+ for (let i = 0;i < length; i++) {
88
+ arr[i] = value[String(i)] ?? 0;
89
+ }
90
+ result[key] = arr;
91
+ } else {
92
+ result[key] = value;
93
+ }
94
+ }
95
+ return result;
96
+ }
97
+ async function setupCrypto(context) {
98
+ const global = context.global;
99
+ global.setSync("__crypto_randomUUID", new import_isolated_vm.default.Callback(() => {
100
+ return import_node_crypto.default.randomUUID();
101
+ }));
102
+ global.setSync("__crypto_getRandomValues", new import_isolated_vm.default.Callback((byteLength) => {
103
+ const buffer = Buffer.alloc(byteLength);
104
+ import_node_crypto.default.randomFillSync(buffer);
105
+ return Array.from(buffer);
106
+ }));
107
+ const keyMap = getKeyMapForContext(context);
108
+ const importKeyRef = new import_isolated_vm.default.Reference(async (format, keyDataJson, algorithmJson, extractable, keyUsagesJson) => {
109
+ const keyData = JSON.parse(keyDataJson);
110
+ const algorithm = JSON.parse(algorithmJson);
111
+ const keyUsages = JSON.parse(keyUsagesJson);
112
+ try {
113
+ let cryptoKey;
114
+ if (format === "raw") {
115
+ const importData = new Uint8Array(keyData);
116
+ cryptoKey = await import_node_crypto.default.webcrypto.subtle.importKey("raw", importData, algorithm, extractable, keyUsages);
117
+ } else if (format === "jwk") {
118
+ const importData = keyData;
119
+ cryptoKey = await import_node_crypto.default.webcrypto.subtle.importKey("jwk", importData, algorithm, extractable, keyUsages);
120
+ } else {
121
+ throw new Error(`[NotSupportedError]Unsupported key format: ${format}`);
122
+ }
123
+ const keyId = nextKeyId++;
124
+ keyMap.set(keyId, cryptoKey);
125
+ return keyId;
126
+ } catch (err) {
127
+ if (err instanceof Error) {
128
+ throw new Error(`[${err.name}]${err.message}`);
129
+ }
130
+ throw err;
131
+ }
132
+ });
133
+ global.setSync("__crypto_subtle_importKey_ref", importKeyRef);
134
+ const signRef = new import_isolated_vm.default.Reference(async (algorithmJson, keyId, dataJson) => {
135
+ const algorithm = JSON.parse(algorithmJson);
136
+ const data = new Uint8Array(JSON.parse(dataJson));
137
+ const cryptoKey = keyMap.get(keyId);
138
+ if (!cryptoKey) {
139
+ throw new Error("[InvalidAccessError]Key not found");
140
+ }
141
+ try {
142
+ const signature = await import_node_crypto.default.webcrypto.subtle.sign(algorithm, cryptoKey, data);
143
+ return JSON.stringify(Array.from(new Uint8Array(signature)));
144
+ } catch (err) {
145
+ if (err instanceof Error) {
146
+ throw new Error(`[${err.name}]${err.message}`);
147
+ }
148
+ throw err;
149
+ }
150
+ });
151
+ global.setSync("__crypto_subtle_sign_ref", signRef);
152
+ const verifyRef = new import_isolated_vm.default.Reference(async (algorithmJson, keyId, signatureJson, dataJson) => {
153
+ const algorithm = JSON.parse(algorithmJson);
154
+ const signature = new Uint8Array(JSON.parse(signatureJson));
155
+ const data = new Uint8Array(JSON.parse(dataJson));
156
+ const cryptoKey = keyMap.get(keyId);
157
+ if (!cryptoKey) {
158
+ throw new Error("[InvalidAccessError]Key not found");
159
+ }
160
+ try {
161
+ return await import_node_crypto.default.webcrypto.subtle.verify(algorithm, cryptoKey, signature, data);
162
+ } catch (err) {
163
+ if (err instanceof Error) {
164
+ throw new Error(`[${err.name}]${err.message}`);
165
+ }
166
+ throw err;
167
+ }
168
+ });
169
+ global.setSync("__crypto_subtle_verify_ref", verifyRef);
170
+ const digestRef = new import_isolated_vm.default.Reference(async (algorithmJson, dataJson) => {
171
+ const algorithm = JSON.parse(algorithmJson);
172
+ const data = new Uint8Array(JSON.parse(dataJson));
173
+ try {
174
+ const hash = await import_node_crypto.default.webcrypto.subtle.digest(algorithm, data);
175
+ return JSON.stringify(Array.from(new Uint8Array(hash)));
176
+ } catch (err) {
177
+ if (err instanceof Error) {
178
+ throw new Error(`[${err.name}]${err.message}`);
179
+ }
180
+ throw err;
181
+ }
182
+ });
183
+ global.setSync("__crypto_subtle_digest_ref", digestRef);
184
+ const deriveBitsRef = new import_isolated_vm.default.Reference(async (algorithmJson, keyId, length) => {
185
+ const algorithm = deserializeAlgorithm(JSON.parse(algorithmJson));
186
+ const cryptoKey = keyMap.get(keyId);
187
+ if (!cryptoKey) {
188
+ throw new Error("[InvalidAccessError]Key not found");
189
+ }
190
+ try {
191
+ const bits = await import_node_crypto.default.webcrypto.subtle.deriveBits(algorithm, cryptoKey, length);
192
+ return JSON.stringify(Array.from(new Uint8Array(bits)));
193
+ } catch (err) {
194
+ if (err instanceof Error) {
195
+ throw new Error(`[${err.name}]${err.message}`);
196
+ }
197
+ throw err;
198
+ }
199
+ });
200
+ global.setSync("__crypto_subtle_deriveBits_ref", deriveBitsRef);
201
+ const deriveKeyRef = new import_isolated_vm.default.Reference(async (algorithmJson, baseKeyId, derivedKeyAlgorithmJson, extractable, keyUsagesJson) => {
202
+ const algorithm = deserializeAlgorithm(JSON.parse(algorithmJson));
203
+ const derivedKeyAlgorithm = JSON.parse(derivedKeyAlgorithmJson);
204
+ const keyUsages = JSON.parse(keyUsagesJson);
205
+ const baseKey = keyMap.get(baseKeyId);
206
+ if (!baseKey) {
207
+ throw new Error("[InvalidAccessError]Key not found");
208
+ }
209
+ try {
210
+ const derivedKey = await import_node_crypto.default.webcrypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages);
211
+ const keyId = nextKeyId++;
212
+ keyMap.set(keyId, derivedKey);
213
+ return keyId;
214
+ } catch (err) {
215
+ if (err instanceof Error) {
216
+ throw new Error(`[${err.name}]${err.message}`);
217
+ }
218
+ throw err;
219
+ }
220
+ });
221
+ global.setSync("__crypto_subtle_deriveKey_ref", deriveKeyRef);
222
+ const cryptoCode = `
223
+ (function() {
224
+ // DOMException polyfill (Pattern #12)
225
+ if (typeof DOMException === 'undefined') {
226
+ globalThis.DOMException = class DOMException extends Error {
227
+ constructor(message, name) {
228
+ super(message);
229
+ this.name = name || 'DOMException';
230
+ }
231
+ };
232
+ }
233
+
234
+ // Helper to decode error from host
235
+ function __decodeError(err) {
236
+ if (!(err instanceof Error)) return err;
237
+ const match = err.message.match(/^\\[(TypeError|RangeError|NotSupportedError|InvalidAccessError|OperationError|DataError|Error)\\](.*)$/);
238
+ if (match) {
239
+ if (['NotSupportedError', 'InvalidAccessError', 'OperationError', 'DataError'].includes(match[1])) {
240
+ return new DOMException(match[2], match[1]);
241
+ }
242
+ const ErrorType = globalThis[match[1]] || Error;
243
+ return new ErrorType(match[2]);
244
+ }
245
+ return err;
246
+ }
247
+
248
+ // CryptoKey class to wrap key IDs
249
+ const _cryptoKeyIds = new WeakMap();
250
+
251
+ class CryptoKey {
252
+ constructor(keyId, algorithm, extractable, usages, type) {
253
+ _cryptoKeyIds.set(this, keyId);
254
+ this._algorithm = algorithm;
255
+ this._extractable = extractable;
256
+ this._usages = usages;
257
+ this._type = type || 'secret';
258
+ }
259
+
260
+ _getKeyId() {
261
+ return _cryptoKeyIds.get(this);
262
+ }
263
+
264
+ get algorithm() {
265
+ return this._algorithm;
266
+ }
267
+
268
+ get extractable() {
269
+ return this._extractable;
270
+ }
271
+
272
+ get usages() {
273
+ return [...this._usages];
274
+ }
275
+
276
+ get type() {
277
+ return this._type;
278
+ }
279
+ }
280
+
281
+ globalThis.CryptoKey = CryptoKey;
282
+
283
+ // Helper to convert data to byte array
284
+ function toByteArray(data) {
285
+ if (typeof data === 'string') {
286
+ return Array.from(new TextEncoder().encode(data));
287
+ }
288
+ if (data instanceof ArrayBuffer) {
289
+ return Array.from(new Uint8Array(data));
290
+ }
291
+ if (ArrayBuffer.isView(data)) {
292
+ return Array.from(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
293
+ }
294
+ throw new TypeError('Data must be a BufferSource');
295
+ }
296
+
297
+ // Normalize algorithm to object form
298
+ function normalizeAlgorithm(algorithm) {
299
+ if (typeof algorithm === 'string') {
300
+ return { name: algorithm };
301
+ }
302
+ return algorithm;
303
+ }
304
+
305
+ globalThis.crypto = {
306
+ randomUUID() {
307
+ return __crypto_randomUUID();
308
+ },
309
+
310
+ getRandomValues(typedArray) {
311
+ // Validate input is an integer TypedArray
312
+ if (!(typedArray instanceof Int8Array ||
313
+ typedArray instanceof Uint8Array ||
314
+ typedArray instanceof Uint8ClampedArray ||
315
+ typedArray instanceof Int16Array ||
316
+ typedArray instanceof Uint16Array ||
317
+ typedArray instanceof Int32Array ||
318
+ typedArray instanceof Uint32Array ||
319
+ typedArray instanceof BigInt64Array ||
320
+ typedArray instanceof BigUint64Array)) {
321
+ throw new TypeError("Argument 1 must be an integer typed array");
322
+ }
323
+
324
+ const byteLength = typedArray.byteLength;
325
+ if (byteLength > 65536) {
326
+ throw new DOMException(
327
+ "The ArrayBufferView's byte length exceeds the number of bytes of entropy available via this API (65536)",
328
+ "QuotaExceededError"
329
+ );
330
+ }
331
+
332
+ // Get random bytes from host
333
+ const bytes = __crypto_getRandomValues(byteLength);
334
+
335
+ // Copy bytes into the TypedArray
336
+ const view = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
337
+ for (let i = 0; i < bytes.length; i++) {
338
+ view[i] = bytes[i];
339
+ }
340
+
341
+ return typedArray;
342
+ },
343
+
344
+ subtle: {
345
+ async importKey(format, keyData, algorithm, extractable, keyUsages) {
346
+ try {
347
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
348
+ let keyDataJson;
349
+
350
+ if (format === 'raw') {
351
+ keyDataJson = JSON.stringify(toByteArray(keyData));
352
+ } else if (format === 'jwk') {
353
+ keyDataJson = JSON.stringify(keyData);
354
+ } else {
355
+ throw new DOMException('Unsupported key format: ' + format, 'NotSupportedError');
356
+ }
357
+
358
+ const keyId = await __crypto_subtle_importKey_ref.apply(undefined, [
359
+ format,
360
+ keyDataJson,
361
+ JSON.stringify(normalizedAlgo),
362
+ extractable,
363
+ JSON.stringify(keyUsages)
364
+ ], { result: { promise: true, copy: true } });
365
+
366
+ return new CryptoKey(keyId, normalizedAlgo, extractable, keyUsages);
367
+ } catch (err) {
368
+ throw __decodeError(err);
369
+ }
370
+ },
371
+
372
+ async sign(algorithm, key, data) {
373
+ try {
374
+ if (!(key instanceof CryptoKey)) {
375
+ throw new TypeError('Key must be a CryptoKey');
376
+ }
377
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
378
+ const signatureBytesJson = await __crypto_subtle_sign_ref.apply(undefined, [
379
+ JSON.stringify(normalizedAlgo),
380
+ key._getKeyId(),
381
+ JSON.stringify(toByteArray(data))
382
+ ], { result: { promise: true, copy: true } });
383
+ const signatureBytes = JSON.parse(signatureBytesJson);
384
+ return new Uint8Array(signatureBytes).buffer;
385
+ } catch (err) {
386
+ throw __decodeError(err);
387
+ }
388
+ },
389
+
390
+ async verify(algorithm, key, signature, data) {
391
+ try {
392
+ if (!(key instanceof CryptoKey)) {
393
+ throw new TypeError('Key must be a CryptoKey');
394
+ }
395
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
396
+ return await __crypto_subtle_verify_ref.apply(undefined, [
397
+ JSON.stringify(normalizedAlgo),
398
+ key._getKeyId(),
399
+ JSON.stringify(toByteArray(signature)),
400
+ JSON.stringify(toByteArray(data))
401
+ ], { result: { promise: true, copy: true } });
402
+ } catch (err) {
403
+ throw __decodeError(err);
404
+ }
405
+ },
406
+
407
+ async digest(algorithm, data) {
408
+ try {
409
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
410
+ const hashBytesJson = await __crypto_subtle_digest_ref.apply(undefined, [
411
+ JSON.stringify(normalizedAlgo),
412
+ JSON.stringify(toByteArray(data))
413
+ ], { result: { promise: true, copy: true } });
414
+ const hashBytes = JSON.parse(hashBytesJson);
415
+ return new Uint8Array(hashBytes).buffer;
416
+ } catch (err) {
417
+ throw __decodeError(err);
418
+ }
419
+ },
420
+
421
+ async deriveBits(algorithm, baseKey, length) {
422
+ try {
423
+ if (!(baseKey instanceof CryptoKey)) {
424
+ throw new TypeError('Key must be a CryptoKey');
425
+ }
426
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
427
+ const bitsBytesJson = await __crypto_subtle_deriveBits_ref.apply(undefined, [
428
+ JSON.stringify(normalizedAlgo),
429
+ baseKey._getKeyId(),
430
+ length
431
+ ], { result: { promise: true, copy: true } });
432
+ const bitsBytes = JSON.parse(bitsBytesJson);
433
+ return new Uint8Array(bitsBytes).buffer;
434
+ } catch (err) {
435
+ throw __decodeError(err);
436
+ }
437
+ },
438
+
439
+ async deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) {
440
+ try {
441
+ if (!(baseKey instanceof CryptoKey)) {
442
+ throw new TypeError('Key must be a CryptoKey');
443
+ }
444
+ const normalizedAlgo = normalizeAlgorithm(algorithm);
445
+ const normalizedDerivedAlgo = normalizeAlgorithm(derivedKeyAlgorithm);
446
+ const keyId = await __crypto_subtle_deriveKey_ref.apply(undefined, [
447
+ JSON.stringify(normalizedAlgo),
448
+ baseKey._getKeyId(),
449
+ JSON.stringify(normalizedDerivedAlgo),
450
+ extractable,
451
+ JSON.stringify(keyUsages)
452
+ ], { result: { promise: true, copy: true } });
453
+ return new CryptoKey(keyId, normalizedDerivedAlgo, extractable, keyUsages);
454
+ } catch (err) {
455
+ throw __decodeError(err);
456
+ }
457
+ }
458
+ }
459
+ };
460
+ })();
461
+ `;
462
+ context.evalSync(cryptoCode);
463
+ return {
464
+ dispose() {
465
+ keyMap.clear();
466
+ }
467
+ };
468
+ }
469
+
470
+ //# debugId=41260A8CB010326964756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/crypto/index.ts"],
4
+ "sourcesContent": [
5
+ "import ivm from \"isolated-vm\";\nimport crypto from \"node:crypto\";\n\nexport interface CryptoHandle {\n dispose(): void;\n}\n\n// Host-side key storage for crypto.subtle\nconst cryptoKeysByContext = new WeakMap<ivm.Context, Map<number, crypto.webcrypto.CryptoKey>>();\nlet nextKeyId = 1;\n\nfunction getKeyMapForContext(context: ivm.Context): Map<number, crypto.webcrypto.CryptoKey> {\n let map = cryptoKeysByContext.get(context);\n if (!map) {\n map = new Map();\n cryptoKeysByContext.set(context, map);\n }\n return map;\n}\n\nfunction deserializeAlgorithm(algorithm: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(algorithm)) {\n if (value && typeof value === 'object' && !Array.isArray(value) &&\n Object.keys(value).every(k => /^\\d+$/.test(k))) {\n // Convert {\"0\": n, \"1\": m, ...} back to Uint8Array\n const length = Object.keys(value).length;\n const arr = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n arr[i] = (value as Record<string, number>)[String(i)] ?? 0;\n }\n result[key] = arr;\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * Setup Web Crypto API in an isolated-vm context\n *\n * Provides crypto.getRandomValues and crypto.randomUUID\n *\n * @example\n * const handle = await setupCrypto(context);\n * await context.eval(`\n * const uuid = crypto.randomUUID();\n * const array = new Uint8Array(16);\n * crypto.getRandomValues(array);\n * `);\n */\nexport async function setupCrypto(\n context: ivm.Context\n): Promise<CryptoHandle> {\n const global = context.global;\n\n // Register host callbacks\n global.setSync(\n \"__crypto_randomUUID\",\n new ivm.Callback(() => {\n return crypto.randomUUID();\n })\n );\n\n global.setSync(\n \"__crypto_getRandomValues\",\n new ivm.Callback((byteLength: number) => {\n const buffer = Buffer.alloc(byteLength);\n crypto.randomFillSync(buffer);\n return Array.from(buffer);\n })\n );\n\n // Get key map for this context\n const keyMap = getKeyMapForContext(context);\n\n // crypto.subtle.importKey - async reference\n const importKeyRef = new ivm.Reference(\n async (\n format: string,\n keyDataJson: string,\n algorithmJson: string,\n extractable: boolean,\n keyUsagesJson: string\n ) => {\n const keyData = JSON.parse(keyDataJson) as number[];\n const algorithm = JSON.parse(algorithmJson);\n const keyUsages = JSON.parse(keyUsagesJson) as crypto.webcrypto.KeyUsage[];\n\n try {\n let cryptoKey: crypto.webcrypto.CryptoKey;\n if (format === \"raw\") {\n const importData = new Uint8Array(keyData);\n cryptoKey = await crypto.webcrypto.subtle.importKey(\n \"raw\",\n importData,\n algorithm,\n extractable,\n keyUsages\n );\n } else if (format === \"jwk\") {\n const importData = keyData as unknown as crypto.webcrypto.JsonWebKey;\n cryptoKey = await crypto.webcrypto.subtle.importKey(\n \"jwk\",\n importData,\n algorithm,\n extractable,\n keyUsages\n );\n } else {\n throw new Error(`[NotSupportedError]Unsupported key format: ${format}`);\n }\n\n // Store key on host and return ID\n const keyId = nextKeyId++;\n keyMap.set(keyId, cryptoKey);\n return keyId;\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_importKey_ref\", importKeyRef);\n\n // crypto.subtle.sign - async reference\n const signRef = new ivm.Reference(\n async (algorithmJson: string, keyId: number, dataJson: string) => {\n const algorithm = JSON.parse(algorithmJson);\n const data = new Uint8Array(JSON.parse(dataJson) as number[]);\n\n const cryptoKey = keyMap.get(keyId);\n if (!cryptoKey) {\n throw new Error(\"[InvalidAccessError]Key not found\");\n }\n\n try {\n const signature = await crypto.webcrypto.subtle.sign(\n algorithm,\n cryptoKey,\n data\n );\n return JSON.stringify(Array.from(new Uint8Array(signature)));\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_sign_ref\", signRef);\n\n // crypto.subtle.verify - async reference\n const verifyRef = new ivm.Reference(\n async (\n algorithmJson: string,\n keyId: number,\n signatureJson: string,\n dataJson: string\n ) => {\n const algorithm = JSON.parse(algorithmJson);\n const signature = new Uint8Array(JSON.parse(signatureJson) as number[]);\n const data = new Uint8Array(JSON.parse(dataJson) as number[]);\n\n const cryptoKey = keyMap.get(keyId);\n if (!cryptoKey) {\n throw new Error(\"[InvalidAccessError]Key not found\");\n }\n\n try {\n return await crypto.webcrypto.subtle.verify(\n algorithm,\n cryptoKey,\n signature,\n data\n );\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_verify_ref\", verifyRef);\n\n // crypto.subtle.digest - async reference\n const digestRef = new ivm.Reference(\n async (algorithmJson: string, dataJson: string) => {\n const algorithm = JSON.parse(algorithmJson);\n const data = new Uint8Array(JSON.parse(dataJson) as number[]);\n\n try {\n const hash = await crypto.webcrypto.subtle.digest(algorithm, data);\n return JSON.stringify(Array.from(new Uint8Array(hash)));\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_digest_ref\", digestRef);\n\n // crypto.subtle.deriveBits - async reference\n const deriveBitsRef = new ivm.Reference(\n async (algorithmJson: string, keyId: number, length: number) => {\n const algorithm = deserializeAlgorithm(JSON.parse(algorithmJson));\n\n const cryptoKey = keyMap.get(keyId);\n if (!cryptoKey) {\n throw new Error(\"[InvalidAccessError]Key not found\");\n }\n\n try {\n const bits = await crypto.webcrypto.subtle.deriveBits(\n algorithm as unknown as crypto.webcrypto.EcdhKeyDeriveParams | crypto.webcrypto.HkdfParams | crypto.webcrypto.Pbkdf2Params,\n cryptoKey,\n length\n );\n return JSON.stringify(Array.from(new Uint8Array(bits)));\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_deriveBits_ref\", deriveBitsRef);\n\n // crypto.subtle.deriveKey - async reference\n const deriveKeyRef = new ivm.Reference(\n async (\n algorithmJson: string,\n baseKeyId: number,\n derivedKeyAlgorithmJson: string,\n extractable: boolean,\n keyUsagesJson: string\n ) => {\n const algorithm = deserializeAlgorithm(JSON.parse(algorithmJson));\n const derivedKeyAlgorithm = JSON.parse(derivedKeyAlgorithmJson);\n const keyUsages = JSON.parse(keyUsagesJson) as crypto.webcrypto.KeyUsage[];\n\n const baseKey = keyMap.get(baseKeyId);\n if (!baseKey) {\n throw new Error(\"[InvalidAccessError]Key not found\");\n }\n\n try {\n const derivedKey = await crypto.webcrypto.subtle.deriveKey(\n algorithm as unknown as crypto.webcrypto.EcdhKeyDeriveParams | crypto.webcrypto.HkdfParams | crypto.webcrypto.Pbkdf2Params,\n baseKey,\n derivedKeyAlgorithm,\n extractable,\n keyUsages\n );\n\n // Store derived key on host and return ID\n const keyId = nextKeyId++;\n keyMap.set(keyId, derivedKey);\n return keyId;\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`[${err.name}]${err.message}`);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__crypto_subtle_deriveKey_ref\", deriveKeyRef);\n\n // Inject the crypto object into the isolate\n const cryptoCode = `\n(function() {\n // DOMException polyfill (Pattern #12)\n if (typeof DOMException === 'undefined') {\n globalThis.DOMException = class DOMException extends Error {\n constructor(message, name) {\n super(message);\n this.name = name || 'DOMException';\n }\n };\n }\n\n // Helper to decode error from host\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|NotSupportedError|InvalidAccessError|OperationError|DataError|Error)\\\\](.*)$/);\n if (match) {\n if (['NotSupportedError', 'InvalidAccessError', 'OperationError', 'DataError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n // CryptoKey class to wrap key IDs\n const _cryptoKeyIds = new WeakMap();\n\n class CryptoKey {\n constructor(keyId, algorithm, extractable, usages, type) {\n _cryptoKeyIds.set(this, keyId);\n this._algorithm = algorithm;\n this._extractable = extractable;\n this._usages = usages;\n this._type = type || 'secret';\n }\n\n _getKeyId() {\n return _cryptoKeyIds.get(this);\n }\n\n get algorithm() {\n return this._algorithm;\n }\n\n get extractable() {\n return this._extractable;\n }\n\n get usages() {\n return [...this._usages];\n }\n\n get type() {\n return this._type;\n }\n }\n\n globalThis.CryptoKey = CryptoKey;\n\n // Helper to convert data to byte array\n function toByteArray(data) {\n if (typeof data === 'string') {\n return Array.from(new TextEncoder().encode(data));\n }\n if (data instanceof ArrayBuffer) {\n return Array.from(new Uint8Array(data));\n }\n if (ArrayBuffer.isView(data)) {\n return Array.from(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));\n }\n throw new TypeError('Data must be a BufferSource');\n }\n\n // Normalize algorithm to object form\n function normalizeAlgorithm(algorithm) {\n if (typeof algorithm === 'string') {\n return { name: algorithm };\n }\n return algorithm;\n }\n\n globalThis.crypto = {\n randomUUID() {\n return __crypto_randomUUID();\n },\n\n getRandomValues(typedArray) {\n // Validate input is an integer TypedArray\n if (!(typedArray instanceof Int8Array ||\n typedArray instanceof Uint8Array ||\n typedArray instanceof Uint8ClampedArray ||\n typedArray instanceof Int16Array ||\n typedArray instanceof Uint16Array ||\n typedArray instanceof Int32Array ||\n typedArray instanceof Uint32Array ||\n typedArray instanceof BigInt64Array ||\n typedArray instanceof BigUint64Array)) {\n throw new TypeError(\"Argument 1 must be an integer typed array\");\n }\n\n const byteLength = typedArray.byteLength;\n if (byteLength > 65536) {\n throw new DOMException(\n \"The ArrayBufferView's byte length exceeds the number of bytes of entropy available via this API (65536)\",\n \"QuotaExceededError\"\n );\n }\n\n // Get random bytes from host\n const bytes = __crypto_getRandomValues(byteLength);\n\n // Copy bytes into the TypedArray\n const view = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n for (let i = 0; i < bytes.length; i++) {\n view[i] = bytes[i];\n }\n\n return typedArray;\n },\n\n subtle: {\n async importKey(format, keyData, algorithm, extractable, keyUsages) {\n try {\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n let keyDataJson;\n\n if (format === 'raw') {\n keyDataJson = JSON.stringify(toByteArray(keyData));\n } else if (format === 'jwk') {\n keyDataJson = JSON.stringify(keyData);\n } else {\n throw new DOMException('Unsupported key format: ' + format, 'NotSupportedError');\n }\n\n const keyId = await __crypto_subtle_importKey_ref.apply(undefined, [\n format,\n keyDataJson,\n JSON.stringify(normalizedAlgo),\n extractable,\n JSON.stringify(keyUsages)\n ], { result: { promise: true, copy: true } });\n\n return new CryptoKey(keyId, normalizedAlgo, extractable, keyUsages);\n } catch (err) {\n throw __decodeError(err);\n }\n },\n\n async sign(algorithm, key, data) {\n try {\n if (!(key instanceof CryptoKey)) {\n throw new TypeError('Key must be a CryptoKey');\n }\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n const signatureBytesJson = await __crypto_subtle_sign_ref.apply(undefined, [\n JSON.stringify(normalizedAlgo),\n key._getKeyId(),\n JSON.stringify(toByteArray(data))\n ], { result: { promise: true, copy: true } });\n const signatureBytes = JSON.parse(signatureBytesJson);\n return new Uint8Array(signatureBytes).buffer;\n } catch (err) {\n throw __decodeError(err);\n }\n },\n\n async verify(algorithm, key, signature, data) {\n try {\n if (!(key instanceof CryptoKey)) {\n throw new TypeError('Key must be a CryptoKey');\n }\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n return await __crypto_subtle_verify_ref.apply(undefined, [\n JSON.stringify(normalizedAlgo),\n key._getKeyId(),\n JSON.stringify(toByteArray(signature)),\n JSON.stringify(toByteArray(data))\n ], { result: { promise: true, copy: true } });\n } catch (err) {\n throw __decodeError(err);\n }\n },\n\n async digest(algorithm, data) {\n try {\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n const hashBytesJson = await __crypto_subtle_digest_ref.apply(undefined, [\n JSON.stringify(normalizedAlgo),\n JSON.stringify(toByteArray(data))\n ], { result: { promise: true, copy: true } });\n const hashBytes = JSON.parse(hashBytesJson);\n return new Uint8Array(hashBytes).buffer;\n } catch (err) {\n throw __decodeError(err);\n }\n },\n\n async deriveBits(algorithm, baseKey, length) {\n try {\n if (!(baseKey instanceof CryptoKey)) {\n throw new TypeError('Key must be a CryptoKey');\n }\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n const bitsBytesJson = await __crypto_subtle_deriveBits_ref.apply(undefined, [\n JSON.stringify(normalizedAlgo),\n baseKey._getKeyId(),\n length\n ], { result: { promise: true, copy: true } });\n const bitsBytes = JSON.parse(bitsBytesJson);\n return new Uint8Array(bitsBytes).buffer;\n } catch (err) {\n throw __decodeError(err);\n }\n },\n\n async deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) {\n try {\n if (!(baseKey instanceof CryptoKey)) {\n throw new TypeError('Key must be a CryptoKey');\n }\n const normalizedAlgo = normalizeAlgorithm(algorithm);\n const normalizedDerivedAlgo = normalizeAlgorithm(derivedKeyAlgorithm);\n const keyId = await __crypto_subtle_deriveKey_ref.apply(undefined, [\n JSON.stringify(normalizedAlgo),\n baseKey._getKeyId(),\n JSON.stringify(normalizedDerivedAlgo),\n extractable,\n JSON.stringify(keyUsages)\n ], { result: { promise: true, copy: true } });\n return new CryptoKey(keyId, normalizedDerivedAlgo, extractable, keyUsages);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n }\n };\n})();\n`;\n\n context.evalSync(cryptoCode);\n\n return {\n dispose() {\n // Clean up key storage for this context\n keyMap.clear();\n },\n };\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "41260A8CB010326964756E2164756E21",
9
+ "names": []
10
+ }