@metamask/snaps-execution-environments 6.6.1 → 6.7.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 (526) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/dist/common/BaseSnapExecutor.cjs +436 -0
  3. package/dist/common/BaseSnapExecutor.cjs.map +1 -0
  4. package/dist/{types/common/BaseSnapExecutor.d.ts → common/BaseSnapExecutor.d.cts} +8 -6
  5. package/dist/common/BaseSnapExecutor.d.cts.map +1 -0
  6. package/dist/common/BaseSnapExecutor.d.mts +70 -0
  7. package/dist/common/BaseSnapExecutor.d.mts.map +1 -0
  8. package/dist/common/BaseSnapExecutor.mjs +430 -24
  9. package/dist/common/BaseSnapExecutor.mjs.map +1 -1
  10. package/dist/common/commands.cjs +95 -0
  11. package/dist/common/commands.cjs.map +1 -0
  12. package/dist/{types/common/commands.d.ts → common/commands.d.cts} +5 -4
  13. package/dist/common/commands.d.cts.map +1 -0
  14. package/dist/common/commands.d.mts +31 -0
  15. package/dist/common/commands.d.mts.map +1 -0
  16. package/dist/common/commands.mjs +89 -10
  17. package/dist/common/commands.mjs.map +1 -1
  18. package/dist/common/endowments/commonEndowmentFactory.cjs +76 -0
  19. package/dist/common/endowments/commonEndowmentFactory.cjs.map +1 -0
  20. package/dist/{types/common/endowments/commonEndowmentFactory.d.ts → common/endowments/commonEndowmentFactory.d.cts} +5 -4
  21. package/dist/common/endowments/commonEndowmentFactory.d.cts.map +1 -0
  22. package/dist/common/endowments/commonEndowmentFactory.d.mts +26 -0
  23. package/dist/common/endowments/commonEndowmentFactory.d.mts.map +1 -0
  24. package/dist/common/endowments/commonEndowmentFactory.mjs +69 -18
  25. package/dist/common/endowments/commonEndowmentFactory.mjs.map +1 -1
  26. package/dist/common/endowments/console.cjs +103 -0
  27. package/dist/common/endowments/console.cjs.map +1 -0
  28. package/dist/{types/common/endowments/console.d.ts → common/endowments/console.d.cts} +2 -1
  29. package/dist/common/endowments/console.d.cts.map +1 -0
  30. package/dist/common/endowments/console.d.mts +46 -0
  31. package/dist/common/endowments/console.d.mts.map +1 -0
  32. package/dist/common/endowments/console.mjs +98 -11
  33. package/dist/common/endowments/console.mjs.map +1 -1
  34. package/dist/common/endowments/crypto.cjs +30 -0
  35. package/dist/common/endowments/crypto.cjs.map +1 -0
  36. package/dist/{types/common/endowments/crypto.d.ts → common/endowments/crypto.d.cts} +1 -0
  37. package/dist/common/endowments/crypto.d.cts.map +1 -0
  38. package/dist/common/endowments/crypto.d.mts +13 -0
  39. package/dist/common/endowments/crypto.d.mts.map +1 -0
  40. package/dist/common/endowments/crypto.mjs +24 -9
  41. package/dist/common/endowments/crypto.mjs.map +1 -1
  42. package/dist/common/endowments/date.cjs +39 -0
  43. package/dist/common/endowments/date.cjs.map +1 -0
  44. package/dist/{types/common/endowments/date.d.ts → common/endowments/date.d.cts} +1 -0
  45. package/dist/common/endowments/date.d.cts.map +1 -0
  46. package/dist/common/endowments/date.d.mts +16 -0
  47. package/dist/common/endowments/date.d.mts.map +1 -0
  48. package/dist/common/endowments/date.mjs +35 -7
  49. package/dist/common/endowments/date.mjs.map +1 -1
  50. package/dist/common/endowments/index.cjs +93 -0
  51. package/dist/common/endowments/index.cjs.map +1 -0
  52. package/dist/{types/common/endowments/index.d.ts → common/endowments/index.d.cts} +4 -3
  53. package/dist/common/endowments/index.d.cts.map +1 -0
  54. package/dist/common/endowments/index.d.mts +29 -0
  55. package/dist/common/endowments/index.d.mts.map +1 -0
  56. package/dist/common/endowments/index.mjs +85 -20
  57. package/dist/common/endowments/index.mjs.map +1 -1
  58. package/dist/common/endowments/interval.cjs +51 -0
  59. package/dist/common/endowments/interval.cjs.map +1 -0
  60. package/dist/{types/common/endowments/interval.d.ts → common/endowments/interval.d.cts} +1 -0
  61. package/dist/common/endowments/interval.d.cts.map +1 -0
  62. package/dist/common/endowments/interval.d.mts +10 -0
  63. package/dist/common/endowments/interval.d.mts.map +1 -0
  64. package/dist/common/endowments/interval.mjs +47 -6
  65. package/dist/common/endowments/interval.mjs.map +1 -1
  66. package/dist/common/endowments/math.cjs +54 -0
  67. package/dist/common/endowments/math.cjs.map +1 -0
  68. package/dist/{types/common/endowments/math.d.ts → common/endowments/math.d.cts} +1 -0
  69. package/dist/common/endowments/math.d.cts.map +1 -0
  70. package/dist/common/endowments/math.d.mts +61 -0
  71. package/dist/common/endowments/math.d.mts.map +1 -0
  72. package/dist/common/endowments/math.mjs +50 -8
  73. package/dist/common/endowments/math.mjs.map +1 -1
  74. package/dist/common/endowments/network.cjs +255 -0
  75. package/dist/common/endowments/network.cjs.map +1 -0
  76. package/dist/{types/common/endowments/network.d.ts → common/endowments/network.d.cts} +4 -2
  77. package/dist/common/endowments/network.d.cts.map +1 -0
  78. package/dist/common/endowments/network.d.mts +25 -0
  79. package/dist/common/endowments/network.d.mts.map +1 -0
  80. package/dist/common/endowments/network.mjs +251 -8
  81. package/dist/common/endowments/network.mjs.map +1 -1
  82. package/dist/common/endowments/textDecoder.cjs +18 -0
  83. package/dist/common/endowments/textDecoder.cjs.map +1 -0
  84. package/dist/{types/common/endowments/textDecoder.d.ts → common/endowments/textDecoder.d.cts} +1 -0
  85. package/dist/common/endowments/textDecoder.d.cts.map +1 -0
  86. package/dist/common/endowments/textDecoder.d.mts +11 -0
  87. package/dist/common/endowments/textDecoder.d.mts.map +1 -0
  88. package/dist/common/endowments/textDecoder.mjs +14 -6
  89. package/dist/common/endowments/textDecoder.mjs.map +1 -1
  90. package/dist/common/endowments/textEncoder.cjs +18 -0
  91. package/dist/common/endowments/textEncoder.cjs.map +1 -0
  92. package/dist/{types/common/endowments/textEncoder.d.ts → common/endowments/textEncoder.d.cts} +1 -0
  93. package/dist/common/endowments/textEncoder.d.cts.map +1 -0
  94. package/dist/common/endowments/textEncoder.d.mts +11 -0
  95. package/dist/common/endowments/textEncoder.d.mts.map +1 -0
  96. package/dist/common/endowments/textEncoder.mjs +14 -6
  97. package/dist/common/endowments/textEncoder.mjs.map +1 -1
  98. package/dist/common/endowments/timeout.cjs +53 -0
  99. package/dist/common/endowments/timeout.cjs.map +1 -0
  100. package/dist/{types/common/endowments/timeout.d.ts → common/endowments/timeout.d.cts} +1 -0
  101. package/dist/common/endowments/timeout.d.cts.map +1 -0
  102. package/dist/common/endowments/timeout.d.mts +10 -0
  103. package/dist/common/endowments/timeout.d.mts.map +1 -0
  104. package/dist/common/endowments/timeout.mjs +49 -6
  105. package/dist/common/endowments/timeout.mjs.map +1 -1
  106. package/dist/common/globalEvents.cjs +48 -0
  107. package/dist/common/globalEvents.cjs.map +1 -0
  108. package/dist/{types/common/globalEvents.d.ts → common/globalEvents.d.cts} +1 -0
  109. package/dist/common/globalEvents.d.cts.map +1 -0
  110. package/dist/common/globalEvents.d.mts +21 -0
  111. package/dist/common/globalEvents.d.mts.map +1 -0
  112. package/dist/common/globalEvents.mjs +42 -10
  113. package/dist/common/globalEvents.mjs.map +1 -1
  114. package/dist/common/globalObject.cjs +50 -0
  115. package/dist/common/globalObject.cjs.map +1 -0
  116. package/dist/{types/common/globalObject.d.ts → common/globalObject.d.cts} +1 -0
  117. package/dist/common/globalObject.d.cts.map +1 -0
  118. package/dist/common/globalObject.d.mts +10 -0
  119. package/dist/common/globalObject.d.mts.map +1 -0
  120. package/dist/common/globalObject.mjs +45 -9
  121. package/dist/common/globalObject.mjs.map +1 -1
  122. package/dist/common/lockdown/lockdown-events.cjs +60 -0
  123. package/dist/common/lockdown/lockdown-events.cjs.map +1 -0
  124. package/dist/{types/common/lockdown/lockdown-events.d.ts → common/lockdown/lockdown-events.d.cts} +1 -0
  125. package/dist/common/lockdown/lockdown-events.d.cts.map +1 -0
  126. package/dist/common/lockdown/lockdown-events.d.mts +5 -0
  127. package/dist/common/lockdown/lockdown-events.d.mts.map +1 -0
  128. package/dist/common/lockdown/lockdown-events.mjs +55 -7
  129. package/dist/common/lockdown/lockdown-events.mjs.map +1 -1
  130. package/dist/common/lockdown/lockdown-more.cjs +89 -0
  131. package/dist/common/lockdown/lockdown-more.cjs.map +1 -0
  132. package/dist/{types/common/lockdown/lockdown-more.d.ts → common/lockdown/lockdown-more.d.cts} +1 -0
  133. package/dist/common/lockdown/lockdown-more.d.cts.map +1 -0
  134. package/dist/common/lockdown/lockdown-more.d.mts +23 -0
  135. package/dist/common/lockdown/lockdown-more.d.mts.map +1 -0
  136. package/dist/common/lockdown/lockdown-more.mjs +84 -7
  137. package/dist/common/lockdown/lockdown-more.mjs.map +1 -1
  138. package/dist/common/lockdown/lockdown.cjs +29 -0
  139. package/dist/common/lockdown/lockdown.cjs.map +1 -0
  140. package/dist/{types/common/lockdown/lockdown.d.ts → common/lockdown/lockdown.d.cts} +1 -0
  141. package/dist/common/lockdown/lockdown.d.cts.map +1 -0
  142. package/dist/common/lockdown/lockdown.d.mts +8 -0
  143. package/dist/common/lockdown/lockdown.d.mts.map +1 -0
  144. package/dist/common/lockdown/lockdown.mjs +22 -19
  145. package/dist/common/lockdown/lockdown.mjs.map +1 -1
  146. package/dist/common/sortParams.cjs +35 -0
  147. package/dist/common/sortParams.cjs.map +1 -0
  148. package/dist/{types/common/sortParams.d.ts → common/sortParams.d.cts} +2 -1
  149. package/dist/common/sortParams.d.cts.map +1 -0
  150. package/dist/common/sortParams.d.mts +17 -0
  151. package/dist/common/sortParams.d.mts.map +1 -0
  152. package/dist/common/sortParams.mjs +29 -6
  153. package/dist/common/sortParams.mjs.map +1 -1
  154. package/dist/common/utils.cjs +156 -0
  155. package/dist/common/utils.cjs.map +1 -0
  156. package/dist/{types/common/utils.d.ts → common/utils.d.cts} +2 -1
  157. package/dist/common/utils.d.cts.map +1 -0
  158. package/dist/common/utils.d.mts +50 -0
  159. package/dist/common/utils.d.mts.map +1 -0
  160. package/dist/common/utils.mjs +146 -20
  161. package/dist/common/utils.mjs.map +1 -1
  162. package/dist/common/validation.cjs +137 -0
  163. package/dist/common/validation.cjs.map +1 -0
  164. package/dist/{types/common/validation.d.ts → common/validation.d.cts} +37 -36
  165. package/dist/common/validation.d.cts.map +1 -0
  166. package/dist/common/validation.d.mts +199 -0
  167. package/dist/common/validation.d.mts.map +1 -0
  168. package/dist/common/validation.mjs +127 -37
  169. package/dist/common/validation.mjs.map +1 -1
  170. package/dist/iframe/IFrameSnapExecutor.cjs +42 -0
  171. package/dist/iframe/IFrameSnapExecutor.cjs.map +1 -0
  172. package/dist/{types/iframe/IFrameSnapExecutor.d.ts → iframe/IFrameSnapExecutor.d.cts} +3 -2
  173. package/dist/iframe/IFrameSnapExecutor.d.cts.map +1 -0
  174. package/dist/iframe/IFrameSnapExecutor.d.mts +14 -0
  175. package/dist/iframe/IFrameSnapExecutor.d.mts.map +1 -0
  176. package/dist/iframe/IFrameSnapExecutor.mjs +42 -26
  177. package/dist/iframe/IFrameSnapExecutor.mjs.map +1 -1
  178. package/dist/iframe/index.cjs +10 -0
  179. package/dist/iframe/index.cjs.map +1 -0
  180. package/dist/iframe/index.d.cts +2 -0
  181. package/dist/iframe/index.d.cts.map +1 -0
  182. package/dist/iframe/index.d.mts +2 -0
  183. package/dist/iframe/index.d.mts.map +1 -0
  184. package/dist/iframe/index.mjs +4 -31
  185. package/dist/iframe/index.mjs.map +1 -1
  186. package/dist/index.cjs +18 -0
  187. package/dist/index.cjs.map +1 -0
  188. package/dist/index.d.cts +2 -0
  189. package/dist/index.d.cts.map +1 -0
  190. package/dist/index.d.mts +2 -0
  191. package/dist/index.d.mts.map +1 -0
  192. package/dist/index.mjs +1 -8
  193. package/dist/index.mjs.map +1 -1
  194. package/dist/logging.cjs +13 -0
  195. package/dist/logging.cjs.map +1 -0
  196. package/dist/{types/logging.d.ts → logging.d.cts} +1 -0
  197. package/dist/logging.d.cts.map +1 -0
  198. package/dist/logging.d.mts +9 -0
  199. package/dist/logging.d.mts.map +1 -0
  200. package/dist/logging.mjs +9 -7
  201. package/dist/logging.mjs.map +1 -1
  202. package/dist/node-process/ChildProcessSnapExecutor.cjs +30 -0
  203. package/dist/node-process/ChildProcessSnapExecutor.cjs.map +1 -0
  204. package/dist/{types/node-process/ChildProcessSnapExecutor.d.ts → node-process/ChildProcessSnapExecutor.d.cts} +2 -1
  205. package/dist/node-process/ChildProcessSnapExecutor.d.cts.map +1 -0
  206. package/dist/node-process/ChildProcessSnapExecutor.d.mts +5 -0
  207. package/dist/node-process/ChildProcessSnapExecutor.d.mts.map +1 -0
  208. package/dist/node-process/ChildProcessSnapExecutor.mjs +30 -26
  209. package/dist/node-process/ChildProcessSnapExecutor.mjs.map +1 -1
  210. package/dist/node-process/index.cjs +8 -0
  211. package/dist/node-process/index.cjs.map +1 -0
  212. package/dist/node-process/index.d.cts +2 -0
  213. package/dist/node-process/index.d.cts.map +1 -0
  214. package/dist/node-process/index.d.mts +2 -0
  215. package/dist/node-process/index.d.mts.map +1 -0
  216. package/dist/node-process/index.mjs +3 -28
  217. package/dist/node-process/index.mjs.map +1 -1
  218. package/dist/node-thread/ThreadSnapExecutor.cjs +30 -0
  219. package/dist/node-thread/ThreadSnapExecutor.cjs.map +1 -0
  220. package/dist/node-thread/ThreadSnapExecutor.d.cts +5 -0
  221. package/dist/node-thread/ThreadSnapExecutor.d.cts.map +1 -0
  222. package/dist/node-thread/ThreadSnapExecutor.d.mts +5 -0
  223. package/dist/node-thread/ThreadSnapExecutor.d.mts.map +1 -0
  224. package/dist/node-thread/ThreadSnapExecutor.mjs +30 -26
  225. package/dist/node-thread/ThreadSnapExecutor.mjs.map +1 -1
  226. package/dist/node-thread/index.cjs +8 -0
  227. package/dist/node-thread/index.cjs.map +1 -0
  228. package/dist/node-thread/index.d.cts +2 -0
  229. package/dist/node-thread/index.d.cts.map +1 -0
  230. package/dist/node-thread/index.d.mts +2 -0
  231. package/dist/node-thread/index.d.mts.map +1 -0
  232. package/dist/node-thread/index.mjs +3 -28
  233. package/dist/node-thread/index.mjs.map +1 -1
  234. package/dist/proxy/ProxySnapExecutor.cjs +112 -0
  235. package/dist/proxy/ProxySnapExecutor.cjs.map +1 -0
  236. package/dist/{types/proxy/ProxySnapExecutor.d.ts → proxy/ProxySnapExecutor.d.cts} +4 -3
  237. package/dist/proxy/ProxySnapExecutor.d.cts.map +1 -0
  238. package/dist/proxy/ProxySnapExecutor.d.mts +36 -0
  239. package/dist/proxy/ProxySnapExecutor.d.mts.map +1 -0
  240. package/dist/proxy/ProxySnapExecutor.mjs +104 -6
  241. package/dist/proxy/ProxySnapExecutor.mjs.map +1 -1
  242. package/dist/proxy/index.cjs +18 -0
  243. package/dist/proxy/index.cjs.map +1 -0
  244. package/dist/proxy/index.d.cts +2 -0
  245. package/dist/proxy/index.d.cts.map +1 -0
  246. package/dist/proxy/index.d.mts +2 -0
  247. package/dist/proxy/index.d.mts.map +1 -0
  248. package/dist/proxy/index.mjs +1 -8
  249. package/dist/proxy/index.mjs.map +1 -1
  250. package/dist/webview/WebViewExecutorStream.cjs +79 -0
  251. package/dist/webview/WebViewExecutorStream.cjs.map +1 -0
  252. package/dist/{types/webview/WebViewExecutorStream.d.ts → webview/WebViewExecutorStream.d.cts} +3 -2
  253. package/dist/webview/WebViewExecutorStream.d.cts.map +1 -0
  254. package/dist/webview/WebViewExecutorStream.d.mts +33 -0
  255. package/dist/webview/WebViewExecutorStream.d.mts.map +1 -0
  256. package/dist/webview/WebViewExecutorStream.mjs +74 -6
  257. package/dist/webview/WebViewExecutorStream.mjs.map +1 -1
  258. package/dist/webview/index.cjs +16 -0
  259. package/dist/webview/index.cjs.map +1 -0
  260. package/dist/webview/index.d.cts +2 -0
  261. package/dist/webview/index.d.cts.map +1 -0
  262. package/dist/webview/index.d.mts +2 -0
  263. package/dist/webview/index.d.mts.map +1 -0
  264. package/dist/webview/index.mjs +9 -21
  265. package/dist/webview/index.mjs.map +1 -1
  266. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs +37 -0
  267. package/dist/webworker/executor/WebWorkerSnapExecutor.cjs.map +1 -0
  268. package/dist/{types/webworker/executor/WebWorkerSnapExecutor.d.ts → webworker/executor/WebWorkerSnapExecutor.d.cts} +3 -2
  269. package/dist/webworker/executor/WebWorkerSnapExecutor.d.cts.map +1 -0
  270. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts +14 -0
  271. package/dist/webworker/executor/WebWorkerSnapExecutor.d.mts.map +1 -0
  272. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs +37 -26
  273. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs.map +1 -1
  274. package/dist/webworker/executor/index.cjs +10 -0
  275. package/dist/webworker/executor/index.cjs.map +1 -0
  276. package/dist/webworker/executor/index.d.cts +2 -0
  277. package/dist/webworker/executor/index.d.cts.map +1 -0
  278. package/dist/webworker/executor/index.d.mts +2 -0
  279. package/dist/webworker/executor/index.d.mts.map +1 -0
  280. package/dist/webworker/executor/index.mjs +4 -31
  281. package/dist/webworker/executor/index.mjs.map +1 -1
  282. package/dist/webworker/pool/WebWorkerPool.cjs +168 -0
  283. package/dist/webworker/pool/WebWorkerPool.cjs.map +1 -0
  284. package/dist/{types/webworker/pool/WebWorkerPool.d.ts → webworker/pool/WebWorkerPool.d.cts} +4 -3
  285. package/dist/webworker/pool/WebWorkerPool.d.cts.map +1 -0
  286. package/dist/webworker/pool/WebWorkerPool.d.mts +24 -0
  287. package/dist/webworker/pool/WebWorkerPool.d.mts.map +1 -0
  288. package/dist/webworker/pool/WebWorkerPool.mjs +163 -6
  289. package/dist/webworker/pool/WebWorkerPool.mjs.map +1 -1
  290. package/dist/webworker/pool/index.cjs +10 -0
  291. package/dist/webworker/pool/index.cjs.map +1 -0
  292. package/dist/webworker/pool/index.d.cts +2 -0
  293. package/dist/webworker/pool/index.d.cts.map +1 -0
  294. package/dist/webworker/pool/index.d.mts +2 -0
  295. package/dist/webworker/pool/index.d.mts.map +1 -0
  296. package/dist/webworker/pool/index.mjs +4 -12
  297. package/dist/webworker/pool/index.mjs.map +1 -1
  298. package/package.json +23 -20
  299. package/dist/browserify/iframe/bundle.js +0 -9
  300. package/dist/browserify/iframe/index.html +0 -13394
  301. package/dist/browserify/node-process/bundle.js +0 -13390
  302. package/dist/browserify/node-thread/bundle.js +0 -13390
  303. package/dist/browserify/webview/index.html +0 -13402
  304. package/dist/browserify/worker-executor/bundle.js +0 -13392
  305. package/dist/browserify/worker-pool/bundle.js +0 -9
  306. package/dist/browserify/worker-pool/index.html +0 -13394
  307. package/dist/chunk-2VA6RAEE.js +0 -30
  308. package/dist/chunk-2VA6RAEE.js.map +0 -1
  309. package/dist/chunk-3JCT4MWT.js +0 -108
  310. package/dist/chunk-3JCT4MWT.js.map +0 -1
  311. package/dist/chunk-46LW37FK.js +0 -144
  312. package/dist/chunk-46LW37FK.js.map +0 -1
  313. package/dist/chunk-4COIRXF5.js +0 -86
  314. package/dist/chunk-4COIRXF5.js.map +0 -1
  315. package/dist/chunk-4XRZLEKU.js +0 -49
  316. package/dist/chunk-4XRZLEKU.js.map +0 -1
  317. package/dist/chunk-53ZULHPK.mjs +0 -16
  318. package/dist/chunk-53ZULHPK.mjs.map +0 -1
  319. package/dist/chunk-5DEV3QQU.mjs +0 -12
  320. package/dist/chunk-5DEV3QQU.mjs.map +0 -1
  321. package/dist/chunk-5STN3QCA.js +0 -183
  322. package/dist/chunk-5STN3QCA.js.map +0 -1
  323. package/dist/chunk-72KFTWQZ.mjs +0 -45
  324. package/dist/chunk-72KFTWQZ.mjs.map +0 -1
  325. package/dist/chunk-75RCH4ZX.mjs +0 -151
  326. package/dist/chunk-75RCH4ZX.mjs.map +0 -1
  327. package/dist/chunk-7AJWXSDQ.mjs +0 -73
  328. package/dist/chunk-7AJWXSDQ.mjs.map +0 -1
  329. package/dist/chunk-7MMUJJQ2.js +0 -151
  330. package/dist/chunk-7MMUJJQ2.js.map +0 -1
  331. package/dist/chunk-BCBKEUCG.mjs +0 -38
  332. package/dist/chunk-BCBKEUCG.mjs.map +0 -1
  333. package/dist/chunk-BEJDC4XI.mjs +0 -40
  334. package/dist/chunk-BEJDC4XI.mjs.map +0 -1
  335. package/dist/chunk-BLHIYDO5.js +0 -40
  336. package/dist/chunk-BLHIYDO5.js.map +0 -1
  337. package/dist/chunk-BTEAZZKP.mjs +0 -24
  338. package/dist/chunk-BTEAZZKP.mjs.map +0 -1
  339. package/dist/chunk-BVRVUIJB.mjs +0 -67
  340. package/dist/chunk-BVRVUIJB.mjs.map +0 -1
  341. package/dist/chunk-CV5LC4PP.js +0 -24
  342. package/dist/chunk-CV5LC4PP.js.map +0 -1
  343. package/dist/chunk-DKDTGAFK.js +0 -67
  344. package/dist/chunk-DKDTGAFK.js.map +0 -1
  345. package/dist/chunk-DLLLH5HN.js +0 -26
  346. package/dist/chunk-DLLLH5HN.js.map +0 -1
  347. package/dist/chunk-EXN2TFDJ.js +0 -38
  348. package/dist/chunk-EXN2TFDJ.js.map +0 -1
  349. package/dist/chunk-FOEAIF5U.js +0 -16
  350. package/dist/chunk-FOEAIF5U.js.map +0 -1
  351. package/dist/chunk-FUPEJT7B.js +0 -82
  352. package/dist/chunk-FUPEJT7B.js.map +0 -1
  353. package/dist/chunk-HCXTK3PR.js +0 -472
  354. package/dist/chunk-HCXTK3PR.js.map +0 -1
  355. package/dist/chunk-HGLRZZ56.js +0 -32
  356. package/dist/chunk-HGLRZZ56.js.map +0 -1
  357. package/dist/chunk-HL2TTKF3.mjs +0 -144
  358. package/dist/chunk-HL2TTKF3.mjs.map +0 -1
  359. package/dist/chunk-HWS4QSOC.mjs +0 -16
  360. package/dist/chunk-HWS4QSOC.mjs.map +0 -1
  361. package/dist/chunk-HXKBUIYS.js +0 -262
  362. package/dist/chunk-HXKBUIYS.js.map +0 -1
  363. package/dist/chunk-HXUJHX3E.mjs +0 -33
  364. package/dist/chunk-HXUJHX3E.mjs.map +0 -1
  365. package/dist/chunk-I5G4YFHM.js +0 -73
  366. package/dist/chunk-I5G4YFHM.js.map +0 -1
  367. package/dist/chunk-IX5S3V47.mjs +0 -26
  368. package/dist/chunk-IX5S3V47.mjs.map +0 -1
  369. package/dist/chunk-JDWYJ5UI.mjs +0 -33
  370. package/dist/chunk-JDWYJ5UI.mjs.map +0 -1
  371. package/dist/chunk-JOT5JH42.js +0 -52
  372. package/dist/chunk-JOT5JH42.js.map +0 -1
  373. package/dist/chunk-KEAB7ZVV.js +0 -50
  374. package/dist/chunk-KEAB7ZVV.js.map +0 -1
  375. package/dist/chunk-LO5ORVRC.js +0 -16
  376. package/dist/chunk-LO5ORVRC.js.map +0 -1
  377. package/dist/chunk-M3OBSGHF.mjs +0 -472
  378. package/dist/chunk-M3OBSGHF.mjs.map +0 -1
  379. package/dist/chunk-MCXWFCGV.js +0 -1
  380. package/dist/chunk-MCXWFCGV.js.map +0 -1
  381. package/dist/chunk-MIWGLICQ.mjs +0 -108
  382. package/dist/chunk-MIWGLICQ.mjs.map +0 -1
  383. package/dist/chunk-MMYM63NH.mjs +0 -82
  384. package/dist/chunk-MMYM63NH.mjs.map +0 -1
  385. package/dist/chunk-MS2LQQYH.js +0 -38
  386. package/dist/chunk-MS2LQQYH.js.map +0 -1
  387. package/dist/chunk-MXNMMTJW.mjs +0 -51
  388. package/dist/chunk-MXNMMTJW.mjs.map +0 -1
  389. package/dist/chunk-OBT45IWW.js +0 -92
  390. package/dist/chunk-OBT45IWW.js.map +0 -1
  391. package/dist/chunk-OCNPLHS2.js +0 -51
  392. package/dist/chunk-OCNPLHS2.js.map +0 -1
  393. package/dist/chunk-ODICKSGZ.mjs +0 -86
  394. package/dist/chunk-ODICKSGZ.mjs.map +0 -1
  395. package/dist/chunk-Q42NNJFY.mjs +0 -32
  396. package/dist/chunk-Q42NNJFY.mjs.map +0 -1
  397. package/dist/chunk-QZC2X6NG.js +0 -44
  398. package/dist/chunk-QZC2X6NG.js.map +0 -1
  399. package/dist/chunk-RACRYFWM.js +0 -45
  400. package/dist/chunk-RACRYFWM.js.map +0 -1
  401. package/dist/chunk-RD2APLK5.js +0 -33
  402. package/dist/chunk-RD2APLK5.js.map +0 -1
  403. package/dist/chunk-S5NWI5Z7.mjs +0 -50
  404. package/dist/chunk-S5NWI5Z7.mjs.map +0 -1
  405. package/dist/chunk-S7257EN3.mjs +0 -49
  406. package/dist/chunk-S7257EN3.mjs.map +0 -1
  407. package/dist/chunk-TSEAPB7L.mjs +0 -1
  408. package/dist/chunk-TSEAPB7L.mjs.map +0 -1
  409. package/dist/chunk-UOPIRTJX.mjs +0 -44
  410. package/dist/chunk-UOPIRTJX.mjs.map +0 -1
  411. package/dist/chunk-V76DI2XM.mjs +0 -183
  412. package/dist/chunk-V76DI2XM.mjs.map +0 -1
  413. package/dist/chunk-W7EDURT5.mjs +0 -92
  414. package/dist/chunk-W7EDURT5.mjs.map +0 -1
  415. package/dist/chunk-XPCW7TKM.mjs +0 -262
  416. package/dist/chunk-XPCW7TKM.mjs.map +0 -1
  417. package/dist/chunk-Y7AK2VVC.mjs +0 -52
  418. package/dist/chunk-Y7AK2VVC.mjs.map +0 -1
  419. package/dist/chunk-YRZVIDCF.mjs +0 -38
  420. package/dist/chunk-YRZVIDCF.mjs.map +0 -1
  421. package/dist/chunk-Z7BOREC4.js +0 -12
  422. package/dist/chunk-Z7BOREC4.js.map +0 -1
  423. package/dist/chunk-ZAYDLP42.js +0 -33
  424. package/dist/chunk-ZAYDLP42.js.map +0 -1
  425. package/dist/chunk-ZNTCZK7J.mjs +0 -30
  426. package/dist/chunk-ZNTCZK7J.mjs.map +0 -1
  427. package/dist/common/BaseSnapExecutor.js +0 -26
  428. package/dist/common/BaseSnapExecutor.js.map +0 -1
  429. package/dist/common/commands.js +0 -11
  430. package/dist/common/commands.js.map +0 -1
  431. package/dist/common/endowments/commonEndowmentFactory.js +0 -20
  432. package/dist/common/endowments/commonEndowmentFactory.js.map +0 -1
  433. package/dist/common/endowments/console.js +0 -13
  434. package/dist/common/endowments/console.js.map +0 -1
  435. package/dist/common/endowments/crypto.js +0 -11
  436. package/dist/common/endowments/crypto.js.map +0 -1
  437. package/dist/common/endowments/date.js +0 -9
  438. package/dist/common/endowments/date.js.map +0 -1
  439. package/dist/common/endowments/index.js +0 -21
  440. package/dist/common/endowments/index.js.map +0 -1
  441. package/dist/common/endowments/interval.js +0 -8
  442. package/dist/common/endowments/interval.js.map +0 -1
  443. package/dist/common/endowments/math.js +0 -10
  444. package/dist/common/endowments/math.js.map +0 -1
  445. package/dist/common/endowments/network.js +0 -10
  446. package/dist/common/endowments/network.js.map +0 -1
  447. package/dist/common/endowments/textDecoder.js +0 -8
  448. package/dist/common/endowments/textDecoder.js.map +0 -1
  449. package/dist/common/endowments/textEncoder.js +0 -8
  450. package/dist/common/endowments/textEncoder.js.map +0 -1
  451. package/dist/common/endowments/timeout.js +0 -8
  452. package/dist/common/endowments/timeout.js.map +0 -1
  453. package/dist/common/globalEvents.js +0 -11
  454. package/dist/common/globalEvents.js.map +0 -1
  455. package/dist/common/globalObject.js +0 -10
  456. package/dist/common/globalObject.js.map +0 -1
  457. package/dist/common/lockdown/lockdown-events.js +0 -8
  458. package/dist/common/lockdown/lockdown-events.js.map +0 -1
  459. package/dist/common/lockdown/lockdown-more.js +0 -8
  460. package/dist/common/lockdown/lockdown-more.js.map +0 -1
  461. package/dist/common/lockdown/lockdown.js +0 -22
  462. package/dist/common/lockdown/lockdown.js.map +0 -1
  463. package/dist/common/sortParams.js +0 -8
  464. package/dist/common/sortParams.js.map +0 -1
  465. package/dist/common/utils.js +0 -21
  466. package/dist/common/utils.js.map +0 -1
  467. package/dist/common/validation.js +0 -38
  468. package/dist/common/validation.js.map +0 -1
  469. package/dist/globals.d.js +0 -1
  470. package/dist/globals.d.js.map +0 -1
  471. package/dist/globals.d.mjs +0 -1
  472. package/dist/globals.d.mjs.map +0 -1
  473. package/dist/iframe/IFrameSnapExecutor.js +0 -27
  474. package/dist/iframe/IFrameSnapExecutor.js.map +0 -1
  475. package/dist/iframe/index.js +0 -35
  476. package/dist/iframe/index.js.map +0 -1
  477. package/dist/index.js +0 -9
  478. package/dist/index.js.map +0 -1
  479. package/dist/logging.js +0 -8
  480. package/dist/logging.js.map +0 -1
  481. package/dist/node-process/ChildProcessSnapExecutor.js +0 -27
  482. package/dist/node-process/ChildProcessSnapExecutor.js.map +0 -1
  483. package/dist/node-process/index.js +0 -31
  484. package/dist/node-process/index.js.map +0 -1
  485. package/dist/node-thread/ThreadSnapExecutor.js +0 -27
  486. package/dist/node-thread/ThreadSnapExecutor.js.map +0 -1
  487. package/dist/node-thread/index.js +0 -31
  488. package/dist/node-thread/index.js.map +0 -1
  489. package/dist/proxy/ProxySnapExecutor.js +0 -8
  490. package/dist/proxy/ProxySnapExecutor.js.map +0 -1
  491. package/dist/proxy/index.js +0 -9
  492. package/dist/proxy/index.js.map +0 -1
  493. package/dist/tsconfig.build.tsbuildinfo +0 -1
  494. package/dist/types/iframe/index.d.ts +0 -1
  495. package/dist/types/index.d.ts +0 -1
  496. package/dist/types/node-process/index.d.ts +0 -1
  497. package/dist/types/node-thread/ThreadSnapExecutor.d.ts +0 -4
  498. package/dist/types/node-thread/index.d.ts +0 -1
  499. package/dist/types/proxy/index.d.ts +0 -1
  500. package/dist/types/vendor/global.d.js +0 -1
  501. package/dist/types/vendor/global.d.js.map +0 -1
  502. package/dist/types/vendor/global.d.mjs +0 -1
  503. package/dist/types/vendor/global.d.mjs.map +0 -1
  504. package/dist/types/vendor/providers.d.js +0 -1
  505. package/dist/types/vendor/providers.d.js.map +0 -1
  506. package/dist/types/vendor/providers.d.mjs +0 -1
  507. package/dist/types/vendor/providers.d.mjs.map +0 -1
  508. package/dist/types/vendor/readable-stream.d.js +0 -1
  509. package/dist/types/vendor/readable-stream.d.js.map +0 -1
  510. package/dist/types/vendor/readable-stream.d.mjs +0 -1
  511. package/dist/types/vendor/readable-stream.d.mjs.map +0 -1
  512. package/dist/types/webview/index.d.ts +0 -1
  513. package/dist/types/webworker/executor/index.d.ts +0 -1
  514. package/dist/types/webworker/pool/index.d.ts +0 -1
  515. package/dist/webview/WebViewExecutorStream.js +0 -8
  516. package/dist/webview/WebViewExecutorStream.js.map +0 -1
  517. package/dist/webview/index.js +0 -26
  518. package/dist/webview/index.js.map +0 -1
  519. package/dist/webworker/executor/WebWorkerSnapExecutor.js +0 -27
  520. package/dist/webworker/executor/WebWorkerSnapExecutor.js.map +0 -1
  521. package/dist/webworker/executor/index.js +0 -35
  522. package/dist/webworker/executor/index.js.map +0 -1
  523. package/dist/webworker/pool/WebWorkerPool.js +0 -8
  524. package/dist/webworker/pool/WebWorkerPool.js.map +0 -1
  525. package/dist/webworker/pool/index.js +0 -16
  526. package/dist/webworker/pool/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebViewExecutorStream.d.cts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sCAAsC;AAItE,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS3C,OAAO,CAAC,UAAU;IAiBlB,QAAQ;CAKT"}
@@ -0,0 +1,33 @@
1
+ import { BasePostMessageStream } from "@metamask/post-message-stream";
2
+ type WebViewExecutorStreamArgs = {
3
+ name: string;
4
+ target: string;
5
+ targetWindow: Window['ReactNativeWebView'];
6
+ };
7
+ export declare class WebViewExecutorStream extends BasePostMessageStream {
8
+ #private;
9
+ /**
10
+ * A special post-message-stream to be used by the WebView executor.
11
+ *
12
+ * This stream is different in a few ways:
13
+ * - It expects data to be base64 encoded
14
+ * - It stringifies the data it posts
15
+ * - It does less validation of origins
16
+ *
17
+ * @param args - Options bag.
18
+ * @param args.name - The name of the stream. Used to differentiate between
19
+ * multiple streams sharing the same window object. child:WebView
20
+ * @param args.target - The name of the stream to exchange messages with. parent:rnside
21
+ * @param args.targetWindow - The window object of the target stream.
22
+ */
23
+ constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs);
24
+ /**
25
+ * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.
26
+ * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471
27
+ */
28
+ protected _postMessage(data: unknown): void;
29
+ private _onMessage;
30
+ _destroy(): void;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=WebViewExecutorStream.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebViewExecutorStream.d.mts","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sCAAsC;AAItE,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,qBAAqB;;IAO9D;;;;;;;;;;;;;OAaG;gBAES,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,yBAAyB;IAgBrE;;;OAGG;IAEH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS3C,OAAO,CAAC,UAAU;IAiBlB,QAAQ;CAKT"}
@@ -1,8 +1,76 @@
1
- import {
2
- WebViewExecutorStream
3
- } from "../chunk-7AJWXSDQ.mjs";
4
- import "../chunk-YRZVIDCF.mjs";
5
- export {
6
- WebViewExecutorStream
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
6
  };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _WebViewExecutorStream_name, _WebViewExecutorStream_target, _WebViewExecutorStream_targetWindow;
13
+ import $metamaskpostmessagestream from "@metamask/post-message-stream";
14
+ const { BasePostMessageStream } = $metamaskpostmessagestream;
15
+ import { isValidStreamMessage } from "@metamask/post-message-stream/dist/utils.js";
16
+ import { base64ToBytes, bytesToString } from "@metamask/utils";
17
+ export class WebViewExecutorStream extends BasePostMessageStream {
18
+ /**
19
+ * A special post-message-stream to be used by the WebView executor.
20
+ *
21
+ * This stream is different in a few ways:
22
+ * - It expects data to be base64 encoded
23
+ * - It stringifies the data it posts
24
+ * - It does less validation of origins
25
+ *
26
+ * @param args - Options bag.
27
+ * @param args.name - The name of the stream. Used to differentiate between
28
+ * multiple streams sharing the same window object. child:WebView
29
+ * @param args.target - The name of the stream to exchange messages with. parent:rnside
30
+ * @param args.targetWindow - The window object of the target stream.
31
+ */
32
+ constructor({ name, target, targetWindow }) {
33
+ super();
34
+ _WebViewExecutorStream_name.set(this, void 0);
35
+ _WebViewExecutorStream_target.set(this, void 0);
36
+ _WebViewExecutorStream_targetWindow.set(this, void 0);
37
+ __classPrivateFieldSet(this, _WebViewExecutorStream_name, name, "f");
38
+ __classPrivateFieldSet(this, _WebViewExecutorStream_target, target, "f");
39
+ __classPrivateFieldSet(this, _WebViewExecutorStream_targetWindow, targetWindow, "f");
40
+ this._onMessage = this._onMessage.bind(this);
41
+ // This method is already bound.
42
+ // eslint-disable-next-line @typescript-eslint/unbound-method
43
+ window.addEventListener('message', this._onMessage, false);
44
+ this._handshake();
45
+ }
46
+ /**
47
+ * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.
48
+ * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471
49
+ */
50
+ _postMessage(data) {
51
+ __classPrivateFieldGet(this, _WebViewExecutorStream_targetWindow, "f").postMessage(JSON.stringify({
52
+ target: __classPrivateFieldGet(this, _WebViewExecutorStream_target, "f"),
53
+ data,
54
+ }));
55
+ }
56
+ _onMessage(event) {
57
+ if (typeof event.data !== 'string') {
58
+ return;
59
+ }
60
+ const bytes = base64ToBytes(event.data);
61
+ const message = JSON.parse(bytesToString(bytes));
62
+ // Notice that we don't check targetWindow or targetOrigin here.
63
+ // This doesn't seem possible to do in RN.
64
+ if (!isValidStreamMessage(message) || message.target !== __classPrivateFieldGet(this, _WebViewExecutorStream_name, "f")) {
65
+ return;
66
+ }
67
+ this._onData(message.data);
68
+ }
69
+ _destroy() {
70
+ // This method is already bound.
71
+ // eslint-disable-next-line @typescript-eslint/unbound-method
72
+ window.removeEventListener('message', this._onMessage, false);
73
+ }
74
+ }
75
+ _WebViewExecutorStream_name = new WeakMap(), _WebViewExecutorStream_target = new WeakMap(), _WebViewExecutorStream_targetWindow = new WeakMap();
8
76
  //# sourceMappingURL=WebViewExecutorStream.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"file":"WebViewExecutorStream.mjs","sourceRoot":"","sources":["../../src/webview/WebViewExecutorStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,OAAO,EAAE,oBAAoB,EAAE,oDAAiD;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB;AAQ/D,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;IAO9D;;;;;;;;;;;;;OAaG;IAEH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAA6B;QACnE,KAAK,EAAE,CAAC;QAtBV,8CAAM;QAEN,gDAAQ;QAER,sDAAc;QAoBZ,uBAAA,IAAI,+BAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAiB,YAAY,MAAA,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEO,YAAY,CAAC,IAAa;QAClC,uBAAA,IAAI,2CAAc,CAAC,WAAW,CAC5B,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,uBAAA,IAAI,qCAAQ;YACpB,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,KAAuB;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjD,gEAAgE;QAChE,0CAA0C;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAA,IAAI,mCAAM,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,gCAAgC;QAChC,6DAA6D;QAC7D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAiB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;CACF","sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';\nimport { base64ToBytes, bytesToString } from '@metamask/utils';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n #name;\n\n #target;\n\n #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const bytes = base64ToBytes(event.data);\n const message = JSON.parse(bytesToString(bytes));\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lockdown_events_1 = require("../common/lockdown/lockdown-events.cjs");
4
+ const lockdown_more_1 = require("../common/lockdown/lockdown-more.cjs");
5
+ const ProxySnapExecutor_1 = require("../proxy/ProxySnapExecutor.cjs");
6
+ const WebViewExecutorStream_1 = require("./WebViewExecutorStream.cjs");
7
+ // Lockdown is already applied in LavaMoat
8
+ (0, lockdown_more_1.executeLockdownMore)();
9
+ (0, lockdown_events_1.executeLockdownEvents)();
10
+ const parentStream = new WebViewExecutorStream_1.WebViewExecutorStream({
11
+ name: 'child', // webview
12
+ target: 'parent', // rnside
13
+ targetWindow: window.ReactNativeWebView,
14
+ });
15
+ ProxySnapExecutor_1.ProxySnapExecutor.initialize(parentStream);
16
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/webview/index.ts"],"names":[],"mappings":";;AAAA,4EAA2E;AAC3E,wEAAuE;AACvE,sEAA+D;AAC/D,uEAAgE;AAEhE,0CAA0C;AAC1C,IAAA,mCAAmB,GAAE,CAAC;AACtB,IAAA,uCAAqB,GAAE,CAAC;AAExB,MAAM,YAAY,GAAG,IAAI,6CAAqB,CAAC;IAC7C,IAAI,EAAE,OAAO,EAAE,UAAU;IACzB,MAAM,EAAE,QAAQ,EAAE,SAAS;IAC3B,YAAY,EAAE,MAAM,CAAC,kBAAkB;CACxC,CAAC,CAAC;AAEH,qCAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import { executeLockdownEvents } from '../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\nimport { ProxySnapExecutor } from '../proxy/ProxySnapExecutor';\nimport { WebViewExecutorStream } from './WebViewExecutorStream';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nconst parentStream = new WebViewExecutorStream({\n name: 'child', // webview\n target: 'parent', // rnside\n targetWindow: window.ReactNativeWebView,\n});\n\nProxySnapExecutor.initialize(parentStream);\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/webview/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/webview/index.ts"],"names":[],"mappings":""}
@@ -1,26 +1,14 @@
1
- import {
2
- WebViewExecutorStream
3
- } from "../chunk-7AJWXSDQ.mjs";
4
- import {
5
- executeLockdownEvents
6
- } from "../chunk-S7257EN3.mjs";
7
- import {
8
- executeLockdownMore
9
- } from "../chunk-MXNMMTJW.mjs";
10
- import {
11
- ProxySnapExecutor
12
- } from "../chunk-MIWGLICQ.mjs";
13
- import "../chunk-YRZVIDCF.mjs";
14
-
15
- // src/webview/index.ts
1
+ import { executeLockdownEvents } from "../common/lockdown/lockdown-events.mjs";
2
+ import { executeLockdownMore } from "../common/lockdown/lockdown-more.mjs";
3
+ import { ProxySnapExecutor } from "../proxy/ProxySnapExecutor.mjs";
4
+ import { WebViewExecutorStream } from "./WebViewExecutorStream.mjs";
5
+ // Lockdown is already applied in LavaMoat
16
6
  executeLockdownMore();
17
7
  executeLockdownEvents();
18
- var parentStream = new WebViewExecutorStream({
19
- name: "child",
20
- // webview
21
- target: "parent",
22
- // rnside
23
- targetWindow: window.ReactNativeWebView
8
+ const parentStream = new WebViewExecutorStream({
9
+ name: 'child', // webview
10
+ target: 'parent', // rnside
11
+ targetWindow: window.ReactNativeWebView,
24
12
  });
25
13
  ProxySnapExecutor.initialize(parentStream);
26
14
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/webview/index.ts"],"sourcesContent":["import { executeLockdownEvents } from '../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\nimport { ProxySnapExecutor } from '../proxy/ProxySnapExecutor';\nimport { WebViewExecutorStream } from './WebViewExecutorStream';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nconst parentStream = new WebViewExecutorStream({\n name: 'child', // webview\n target: 'parent', // rnside\n targetWindow: window.ReactNativeWebView,\n});\n\nProxySnapExecutor.initialize(parentStream);\n"],"mappings":";;;;;;;;;;;;;;;AAMA,oBAAoB;AACpB,sBAAsB;AAEtB,IAAM,eAAe,IAAI,sBAAsB;AAAA,EAC7C,MAAM;AAAA;AAAA,EACN,QAAQ;AAAA;AAAA,EACR,cAAc,OAAO;AACvB,CAAC;AAED,kBAAkB,WAAW,YAAY;","names":[]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/webview/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,+CAA2C;AAC3E,OAAO,EAAE,mBAAmB,EAAE,6CAAyC;AACvE,OAAO,EAAE,iBAAiB,EAAE,uCAAmC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,oCAAgC;AAEhE,0CAA0C;AAC1C,mBAAmB,EAAE,CAAC;AACtB,qBAAqB,EAAE,CAAC;AAExB,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC;IAC7C,IAAI,EAAE,OAAO,EAAE,UAAU;IACzB,MAAM,EAAE,QAAQ,EAAE,SAAS;IAC3B,YAAY,EAAE,MAAM,CAAC,kBAAkB;CACxC,CAAC,CAAC;AAEH,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import { executeLockdownEvents } from '../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../common/lockdown/lockdown-more';\nimport { ProxySnapExecutor } from '../proxy/ProxySnapExecutor';\nimport { WebViewExecutorStream } from './WebViewExecutorStream';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nconst parentStream = new WebViewExecutorStream({\n name: 'child', // webview\n target: 'parent', // rnside\n targetWindow: window.ReactNativeWebView,\n});\n\nProxySnapExecutor.initialize(parentStream);\n"]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebWorkerSnapExecutor = void 0;
7
+ const object_multiplex_1 = __importDefault(require("@metamask/object-multiplex"));
8
+ const post_message_stream_1 = require("@metamask/post-message-stream");
9
+ const snaps_utils_1 = require("@metamask/snaps-utils");
10
+ const readable_stream_1 = require("readable-stream");
11
+ const BaseSnapExecutor_1 = require("../../common/BaseSnapExecutor.cjs");
12
+ const logging_1 = require("../../logging.cjs");
13
+ class WebWorkerSnapExecutor extends BaseSnapExecutor_1.BaseSnapExecutor {
14
+ /**
15
+ * Initialize the WebWorkerSnapExecutor. This creates a post message stream
16
+ * from and to the parent window, for two-way communication with the iframe.
17
+ *
18
+ * @param stream - The stream to use for communication.
19
+ * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post
20
+ * message streams.
21
+ */
22
+ static initialize(stream = new post_message_stream_1.WebWorkerPostMessageStream()) {
23
+ (0, logging_1.log)('Worker: Connecting to parent.');
24
+ const mux = new object_multiplex_1.default();
25
+ (0, readable_stream_1.pipeline)(stream, mux, stream, (error) => {
26
+ if (error) {
27
+ (0, snaps_utils_1.logError)(`Parent stream failure, closing worker.`, error);
28
+ }
29
+ self.close();
30
+ });
31
+ const commandStream = mux.createStream(snaps_utils_1.SNAP_STREAM_NAMES.COMMAND);
32
+ const rpcStream = mux.createStream(snaps_utils_1.SNAP_STREAM_NAMES.JSON_RPC);
33
+ return new WebWorkerSnapExecutor(commandStream, rpcStream);
34
+ }
35
+ }
36
+ exports.WebWorkerSnapExecutor = WebWorkerSnapExecutor;
37
+ //# sourceMappingURL=WebWorkerSnapExecutor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebWorkerSnapExecutor.cjs","sourceRoot":"","sources":["../../../src/webworker/executor/WebWorkerSnapExecutor.ts"],"names":[],"mappings":";;;;;;AAAA,kFAAyD;AAEzD,uEAA2E;AAC3E,uDAAoE;AACpE,qDAA2C;AAE3C,wEAAiE;AACjE,+CAAoC;AAEpC,MAAa,qBAAsB,SAAQ,mCAAgB;IACzD;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CACf,SAAgC,IAAI,gDAA0B,EAAE;QAEhE,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,0BAAe,EAAE,CAAC;QAClC,IAAA,0BAAQ,EAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAA,sBAAQ,EAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,+BAAiB,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,+BAAiB,CAAC,QAAQ,CAAC,CAAC;QAE/D,OAAO,IAAI,qBAAqB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF;AA3BD,sDA2BC","sourcesContent":["import ObjectMultiplex from '@metamask/object-multiplex';\nimport type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WebWorkerPostMessageStream } from '@metamask/post-message-stream';\nimport { logError, SNAP_STREAM_NAMES } from '@metamask/snaps-utils';\nimport { pipeline } from 'readable-stream';\n\nimport { BaseSnapExecutor } from '../../common/BaseSnapExecutor';\nimport { log } from '../../logging';\n\nexport class WebWorkerSnapExecutor extends BaseSnapExecutor {\n /**\n * Initialize the WebWorkerSnapExecutor. This creates a post message stream\n * from and to the parent window, for two-way communication with the iframe.\n *\n * @param stream - The stream to use for communication.\n * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post\n * message streams.\n */\n static initialize(\n stream: BasePostMessageStream = new WebWorkerPostMessageStream(),\n ) {\n log('Worker: Connecting to parent.');\n\n const mux = new ObjectMultiplex();\n pipeline(stream, mux, stream, (error) => {\n if (error) {\n logError(`Parent stream failure, closing worker.`, error);\n }\n self.close();\n });\n\n const commandStream = mux.createStream(SNAP_STREAM_NAMES.COMMAND);\n const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC);\n\n return new WebWorkerSnapExecutor(commandStream, rpcStream);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { BasePostMessageStream } from '@metamask/post-message-stream';
2
- import { BaseSnapExecutor } from '../../common/BaseSnapExecutor';
1
+ import type { BasePostMessageStream } from "@metamask/post-message-stream";
2
+ import { BaseSnapExecutor } from "../../common/BaseSnapExecutor.cjs";
3
3
  export declare class WebWorkerSnapExecutor extends BaseSnapExecutor {
4
4
  /**
5
5
  * Initialize the WebWorkerSnapExecutor. This creates a post message stream
@@ -11,3 +11,4 @@ export declare class WebWorkerSnapExecutor extends BaseSnapExecutor {
11
11
  */
12
12
  static initialize(stream?: BasePostMessageStream): WebWorkerSnapExecutor;
13
13
  }
14
+ //# sourceMappingURL=WebWorkerSnapExecutor.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebWorkerSnapExecutor.d.cts","sourceRoot":"","sources":["../../../src/webworker/executor/WebWorkerSnapExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAK3E,OAAO,EAAE,gBAAgB,EAAE,0CAAsC;AAGjE,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,GAAE,qBAAwD;CAiBnE"}
@@ -0,0 +1,14 @@
1
+ import type { BasePostMessageStream } from "@metamask/post-message-stream";
2
+ import { BaseSnapExecutor } from "../../common/BaseSnapExecutor.mjs";
3
+ export declare class WebWorkerSnapExecutor extends BaseSnapExecutor {
4
+ /**
5
+ * Initialize the WebWorkerSnapExecutor. This creates a post message stream
6
+ * from and to the parent window, for two-way communication with the iframe.
7
+ *
8
+ * @param stream - The stream to use for communication.
9
+ * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post
10
+ * message streams.
11
+ */
12
+ static initialize(stream?: BasePostMessageStream): WebWorkerSnapExecutor;
13
+ }
14
+ //# sourceMappingURL=WebWorkerSnapExecutor.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebWorkerSnapExecutor.d.mts","sourceRoot":"","sources":["../../../src/webworker/executor/WebWorkerSnapExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAsC;AAK3E,OAAO,EAAE,gBAAgB,EAAE,0CAAsC;AAGjE,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,GAAE,qBAAwD;CAiBnE"}
@@ -1,27 +1,38 @@
1
- import {
2
- WebWorkerSnapExecutor
3
- } from "../../chunk-BEJDC4XI.mjs";
4
- import "../../chunk-M3OBSGHF.mjs";
5
- import "../../chunk-BVRVUIJB.mjs";
6
- import "../../chunk-ODICKSGZ.mjs";
7
- import "../../chunk-S5NWI5Z7.mjs";
8
- import "../../chunk-BCBKEUCG.mjs";
9
- import "../../chunk-XPCW7TKM.mjs";
10
- import "../../chunk-53ZULHPK.mjs";
11
- import "../../chunk-HWS4QSOC.mjs";
12
- import "../../chunk-Y7AK2VVC.mjs";
13
- import "../../chunk-W7EDURT5.mjs";
14
- import "../../chunk-Q42NNJFY.mjs";
15
- import "../../chunk-UOPIRTJX.mjs";
16
- import "../../chunk-HL2TTKF3.mjs";
17
- import "../../chunk-5DEV3QQU.mjs";
18
- import "../../chunk-MMYM63NH.mjs";
19
- import "../../chunk-75RCH4ZX.mjs";
20
- import "../../chunk-ZNTCZK7J.mjs";
21
- import "../../chunk-IX5S3V47.mjs";
22
- import "../../chunk-BTEAZZKP.mjs";
23
- import "../../chunk-YRZVIDCF.mjs";
24
- export {
25
- WebWorkerSnapExecutor
26
- };
1
+ function $importDefault(module) {
2
+ if (module?.__esModule) {
3
+ return module.default;
4
+ }
5
+ return module;
6
+ }
7
+ import $ObjectMultiplex from "@metamask/object-multiplex";
8
+ const ObjectMultiplex = $importDefault($ObjectMultiplex);
9
+ import $metamaskpostmessagestream from "@metamask/post-message-stream";
10
+ const { WebWorkerPostMessageStream } = $metamaskpostmessagestream;
11
+ import { logError, SNAP_STREAM_NAMES } from "@metamask/snaps-utils";
12
+ import { pipeline } from "readable-stream";
13
+ import { BaseSnapExecutor } from "../../common/BaseSnapExecutor.mjs";
14
+ import { log } from "../../logging.mjs";
15
+ export class WebWorkerSnapExecutor extends BaseSnapExecutor {
16
+ /**
17
+ * Initialize the WebWorkerSnapExecutor. This creates a post message stream
18
+ * from and to the parent window, for two-way communication with the iframe.
19
+ *
20
+ * @param stream - The stream to use for communication.
21
+ * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post
22
+ * message streams.
23
+ */
24
+ static initialize(stream = new WebWorkerPostMessageStream()) {
25
+ log('Worker: Connecting to parent.');
26
+ const mux = new ObjectMultiplex();
27
+ pipeline(stream, mux, stream, (error) => {
28
+ if (error) {
29
+ logError(`Parent stream failure, closing worker.`, error);
30
+ }
31
+ self.close();
32
+ });
33
+ const commandStream = mux.createStream(SNAP_STREAM_NAMES.COMMAND);
34
+ const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC);
35
+ return new WebWorkerSnapExecutor(commandStream, rpcStream);
36
+ }
37
+ }
27
38
  //# sourceMappingURL=WebWorkerSnapExecutor.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"file":"WebWorkerSnapExecutor.mjs","sourceRoot":"","sources":["../../../src/webworker/executor/WebWorkerSnapExecutor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,gBAAe,mCAAmC;;;;AAGzD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,8BAA8B;AACpE,OAAO,EAAE,QAAQ,EAAE,wBAAwB;AAE3C,OAAO,EAAE,gBAAgB,EAAE,0CAAsC;AACjE,OAAO,EAAE,GAAG,EAAE,0BAAsB;AAEpC,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IACzD;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CACf,SAAgC,IAAI,0BAA0B,EAAE;QAEhE,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE/D,OAAO,IAAI,qBAAqB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF","sourcesContent":["import ObjectMultiplex from '@metamask/object-multiplex';\nimport type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WebWorkerPostMessageStream } from '@metamask/post-message-stream';\nimport { logError, SNAP_STREAM_NAMES } from '@metamask/snaps-utils';\nimport { pipeline } from 'readable-stream';\n\nimport { BaseSnapExecutor } from '../../common/BaseSnapExecutor';\nimport { log } from '../../logging';\n\nexport class WebWorkerSnapExecutor extends BaseSnapExecutor {\n /**\n * Initialize the WebWorkerSnapExecutor. This creates a post message stream\n * from and to the parent window, for two-way communication with the iframe.\n *\n * @param stream - The stream to use for communication.\n * @returns An instance of `WebWorkerSnapExecutor`, with the initialized post\n * message streams.\n */\n static initialize(\n stream: BasePostMessageStream = new WebWorkerPostMessageStream(),\n ) {\n log('Worker: Connecting to parent.');\n\n const mux = new ObjectMultiplex();\n pipeline(stream, mux, stream, (error) => {\n if (error) {\n logError(`Parent stream failure, closing worker.`, error);\n }\n self.close();\n });\n\n const commandStream = mux.createStream(SNAP_STREAM_NAMES.COMMAND);\n const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC);\n\n return new WebWorkerSnapExecutor(commandStream, rpcStream);\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lockdown_events_1 = require("../../common/lockdown/lockdown-events.cjs");
4
+ const lockdown_more_1 = require("../../common/lockdown/lockdown-more.cjs");
5
+ const WebWorkerSnapExecutor_1 = require("./WebWorkerSnapExecutor.cjs");
6
+ // Lockdown is already applied in LavaMoat
7
+ (0, lockdown_more_1.executeLockdownMore)();
8
+ (0, lockdown_events_1.executeLockdownEvents)();
9
+ WebWorkerSnapExecutor_1.WebWorkerSnapExecutor.initialize();
10
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/webworker/executor/index.ts"],"names":[],"mappings":";;AAAA,+EAA8E;AAC9E,2EAA0E;AAC1E,uEAAgE;AAEhE,0CAA0C;AAC1C,IAAA,mCAAmB,GAAE,CAAC;AACtB,IAAA,uCAAqB,GAAE,CAAC;AAExB,6CAAqB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { executeLockdownEvents } from '../../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../../common/lockdown/lockdown-more';\nimport { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nWebWorkerSnapExecutor.initialize();\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/webworker/executor/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/webworker/executor/index.ts"],"names":[],"mappings":""}
@@ -1,34 +1,7 @@
1
- import {
2
- WebWorkerSnapExecutor
3
- } from "../../chunk-BEJDC4XI.mjs";
4
- import {
5
- executeLockdownEvents
6
- } from "../../chunk-S7257EN3.mjs";
7
- import {
8
- executeLockdownMore
9
- } from "../../chunk-MXNMMTJW.mjs";
10
- import "../../chunk-M3OBSGHF.mjs";
11
- import "../../chunk-BVRVUIJB.mjs";
12
- import "../../chunk-ODICKSGZ.mjs";
13
- import "../../chunk-S5NWI5Z7.mjs";
14
- import "../../chunk-BCBKEUCG.mjs";
15
- import "../../chunk-XPCW7TKM.mjs";
16
- import "../../chunk-53ZULHPK.mjs";
17
- import "../../chunk-HWS4QSOC.mjs";
18
- import "../../chunk-Y7AK2VVC.mjs";
19
- import "../../chunk-W7EDURT5.mjs";
20
- import "../../chunk-Q42NNJFY.mjs";
21
- import "../../chunk-UOPIRTJX.mjs";
22
- import "../../chunk-HL2TTKF3.mjs";
23
- import "../../chunk-5DEV3QQU.mjs";
24
- import "../../chunk-MMYM63NH.mjs";
25
- import "../../chunk-75RCH4ZX.mjs";
26
- import "../../chunk-ZNTCZK7J.mjs";
27
- import "../../chunk-IX5S3V47.mjs";
28
- import "../../chunk-BTEAZZKP.mjs";
29
- import "../../chunk-YRZVIDCF.mjs";
30
-
31
- // src/webworker/executor/index.ts
1
+ import { executeLockdownEvents } from "../../common/lockdown/lockdown-events.mjs";
2
+ import { executeLockdownMore } from "../../common/lockdown/lockdown-more.mjs";
3
+ import { WebWorkerSnapExecutor } from "./WebWorkerSnapExecutor.mjs";
4
+ // Lockdown is already applied in LavaMoat
32
5
  executeLockdownMore();
33
6
  executeLockdownEvents();
34
7
  WebWorkerSnapExecutor.initialize();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webworker/executor/index.ts"],"sourcesContent":["import { executeLockdownEvents } from '../../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../../common/lockdown/lockdown-more';\nimport { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nWebWorkerSnapExecutor.initialize();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,oBAAoB;AACpB,sBAAsB;AAEtB,sBAAsB,WAAW;","names":[]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/webworker/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kDAA8C;AAC9E,OAAO,EAAE,mBAAmB,EAAE,gDAA4C;AAC1E,OAAO,EAAE,qBAAqB,EAAE,oCAAgC;AAEhE,0CAA0C;AAC1C,mBAAmB,EAAE,CAAC;AACtB,qBAAqB,EAAE,CAAC;AAExB,qBAAqB,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { executeLockdownEvents } from '../../common/lockdown/lockdown-events';\nimport { executeLockdownMore } from '../../common/lockdown/lockdown-more';\nimport { WebWorkerSnapExecutor } from './WebWorkerSnapExecutor';\n\n// Lockdown is already applied in LavaMoat\nexecuteLockdownMore();\nexecuteLockdownEvents();\n\nWebWorkerSnapExecutor.initialize();\n"]}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _WebWorkerPool_instances, _WebWorkerPool_poolSize, _WebWorkerPool_stream, _WebWorkerPool_url, _WebWorkerPool_workerSourceURL, _WebWorkerPool_onData, _WebWorkerPool_initializeJob, _WebWorkerPool_terminateJob, _WebWorkerPool_getWorker, _WebWorkerPool_updatePool, _WebWorkerPool_createWorker, _WebWorkerPool_getWorkerURL;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WebWorkerPool = void 0;
16
+ const post_message_stream_1 = require("@metamask/post-message-stream");
17
+ const snaps_utils_1 = require("@metamask/snaps-utils");
18
+ const utils_1 = require("@metamask/utils");
19
+ const non_secure_1 = require("nanoid/non-secure");
20
+ /**
21
+ * A snap executor using the WebWorker API.
22
+ *
23
+ * This is not a traditional snap executor, as it does not execute snaps itself.
24
+ * Instead, it creates a pool of webworkers for each snap execution, and sends
25
+ * the snap execution request to the webworker. The webworker is responsible for
26
+ * executing the snap.
27
+ */
28
+ class WebWorkerPool {
29
+ /* istanbul ignore next - Constructor arguments. */
30
+ static initialize(stream = new post_message_stream_1.WindowPostMessageStream({
31
+ name: 'child',
32
+ target: 'parent',
33
+ targetWindow: self.parent,
34
+ targetOrigin: '*',
35
+ }), url = '../executor/bundle.js', poolSize) {
36
+ return new WebWorkerPool(stream, url, poolSize);
37
+ }
38
+ constructor(stream, url, poolSize = 3) {
39
+ _WebWorkerPool_instances.add(this);
40
+ _WebWorkerPool_poolSize.set(this, void 0);
41
+ _WebWorkerPool_stream.set(this, void 0);
42
+ _WebWorkerPool_url.set(this, void 0);
43
+ this.pool = [];
44
+ this.jobs = new Map();
45
+ _WebWorkerPool_workerSourceURL.set(this, void 0);
46
+ __classPrivateFieldSet(this, _WebWorkerPool_stream, stream, "f");
47
+ __classPrivateFieldSet(this, _WebWorkerPool_url, url, "f");
48
+ __classPrivateFieldSet(this, _WebWorkerPool_poolSize, poolSize, "f");
49
+ __classPrivateFieldGet(this, _WebWorkerPool_stream, "f").on('data', __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_onData).bind(this));
50
+ }
51
+ }
52
+ exports.WebWorkerPool = WebWorkerPool;
53
+ _WebWorkerPool_poolSize = new WeakMap(), _WebWorkerPool_stream = new WeakMap(), _WebWorkerPool_url = new WeakMap(), _WebWorkerPool_workerSourceURL = new WeakMap(), _WebWorkerPool_instances = new WeakSet(), _WebWorkerPool_onData = function _WebWorkerPool_onData(data) {
54
+ const { jobId, data: request } = data;
55
+ const job = this.jobs.get(jobId);
56
+ if (!job) {
57
+ // This ensures that a job is initialized before it is used. To avoid
58
+ // code duplication, we call the `#onData` method again, which will
59
+ // run the rest of the logic after initialization.
60
+ __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_initializeJob).call(this, jobId)
61
+ .then(() => {
62
+ __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_onData).call(this, data);
63
+ })
64
+ .catch((error) => {
65
+ (0, snaps_utils_1.logError)('[Worker] Error initializing job:', error.toString());
66
+ __classPrivateFieldGet(this, _WebWorkerPool_stream, "f").write({
67
+ jobId,
68
+ data: {
69
+ name: 'command',
70
+ data: {
71
+ jsonrpc: '2.0',
72
+ id: request.id ?? null,
73
+ error: {
74
+ code: -32000,
75
+ message: 'Internal error',
76
+ },
77
+ },
78
+ },
79
+ });
80
+ });
81
+ return;
82
+ }
83
+ // This is a method specific to the `WebWorkerPool`, as the service itself
84
+ // does not have access to the workers directly.
85
+ if (request.method === 'terminateJob') {
86
+ __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_terminateJob).call(this, jobId);
87
+ return;
88
+ }
89
+ job.stream.write(request);
90
+ }, _WebWorkerPool_initializeJob =
91
+ /**
92
+ * Create a new worker and set up a stream to communicate with it.
93
+ *
94
+ * @param jobId - The job ID.
95
+ * @returns The job.
96
+ */
97
+ async function _WebWorkerPool_initializeJob(jobId) {
98
+ const worker = await __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_getWorker).call(this);
99
+ const jobStream = new post_message_stream_1.WebWorkerParentPostMessageStream({
100
+ worker,
101
+ });
102
+ // Write messages from the worker to the parent, wrapped with the job ID.
103
+ jobStream.on('data', (data) => {
104
+ __classPrivateFieldGet(this, _WebWorkerPool_stream, "f").write({ data, jobId });
105
+ });
106
+ const job = { id: jobId, worker, stream: jobStream };
107
+ this.jobs.set(jobId, job);
108
+ return job;
109
+ }, _WebWorkerPool_terminateJob = function _WebWorkerPool_terminateJob(jobId) {
110
+ const job = this.jobs.get(jobId);
111
+ (0, utils_1.assert)(job, `Job "${jobId}" not found.`);
112
+ job.stream.destroy();
113
+ job.worker.terminate();
114
+ this.jobs.delete(jobId);
115
+ }, _WebWorkerPool_getWorker =
116
+ /**
117
+ * Get a worker from the pool. A new worker will be created automatically.
118
+ *
119
+ * @returns The worker.
120
+ */
121
+ async function _WebWorkerPool_getWorker() {
122
+ // Lazily create the pool of workers.
123
+ if (this.pool.length === 0) {
124
+ await __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_updatePool).call(this);
125
+ }
126
+ const worker = this.pool.shift();
127
+ (0, utils_1.assert)(worker, 'Worker not found.');
128
+ await __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_updatePool).call(this);
129
+ return worker;
130
+ }, _WebWorkerPool_updatePool =
131
+ /**
132
+ * Update the pool of workers. This will create new workers if the pool is
133
+ * below the minimum size.
134
+ */
135
+ async function _WebWorkerPool_updatePool() {
136
+ while (this.pool.length < __classPrivateFieldGet(this, _WebWorkerPool_poolSize, "f")) {
137
+ const worker = await __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_createWorker).call(this);
138
+ this.pool.push(worker);
139
+ }
140
+ }, _WebWorkerPool_createWorker =
141
+ /**
142
+ * Create a new worker. This will fetch the worker source if it has not
143
+ * already been fetched.
144
+ *
145
+ * @returns The worker.
146
+ */
147
+ async function _WebWorkerPool_createWorker() {
148
+ return new Worker(await __classPrivateFieldGet(this, _WebWorkerPool_instances, "m", _WebWorkerPool_getWorkerURL).call(this), {
149
+ name: `worker-${(0, non_secure_1.nanoid)()}`,
150
+ });
151
+ }, _WebWorkerPool_getWorkerURL =
152
+ /**
153
+ * Get the URL of the worker source. This will fetch the worker source if it
154
+ * has not already been fetched.
155
+ *
156
+ * @returns The worker source URL, as a `blob:` URL.
157
+ */
158
+ async function _WebWorkerPool_getWorkerURL() {
159
+ if (__classPrivateFieldGet(this, _WebWorkerPool_workerSourceURL, "f")) {
160
+ return __classPrivateFieldGet(this, _WebWorkerPool_workerSourceURL, "f");
161
+ }
162
+ const blob = await fetch(__classPrivateFieldGet(this, _WebWorkerPool_url, "f"))
163
+ .then(async (response) => response.blob())
164
+ .then(URL.createObjectURL.bind(URL));
165
+ __classPrivateFieldSet(this, _WebWorkerPool_workerSourceURL, blob, "f");
166
+ return blob;
167
+ };
168
+ //# sourceMappingURL=WebWorkerPool.cjs.map