@metamask/snaps-execution-environments 4.0.0 → 5.0.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 (441) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/browserify/iframe/bundle.js +4 -4
  3. package/dist/browserify/iframe/index.html +201 -110
  4. package/dist/browserify/node-process/bundle.js +204 -113
  5. package/dist/browserify/node-thread/bundle.js +204 -113
  6. package/dist/browserify/webview/bundle.js +4 -4
  7. package/dist/browserify/webview/index.html +201 -110
  8. package/dist/browserify/worker-executor/bundle.js +205 -114
  9. package/dist/browserify/worker-pool/bundle.js +4 -4
  10. package/dist/browserify/worker-pool/index.html +201 -110
  11. package/dist/chunk-26EFJQDW.mjs +49 -0
  12. package/dist/chunk-26EFJQDW.mjs.map +1 -0
  13. package/dist/chunk-4NOF6TN6.js +51 -0
  14. package/dist/chunk-4NOF6TN6.js.map +1 -0
  15. package/dist/chunk-5DIRYAYO.js +30 -0
  16. package/dist/chunk-5DIRYAYO.js.map +1 -0
  17. package/dist/chunk-5RKYO2Y5.js +33 -0
  18. package/dist/chunk-5RKYO2Y5.js.map +1 -0
  19. package/dist/chunk-6GHFAQ54.mjs +44 -0
  20. package/dist/chunk-6GHFAQ54.mjs.map +1 -0
  21. package/dist/chunk-A7NJQLUA.mjs +32 -0
  22. package/dist/chunk-A7NJQLUA.mjs.map +1 -0
  23. package/dist/chunk-AJFPA6MI.js +81 -0
  24. package/dist/chunk-AJFPA6MI.js.map +1 -0
  25. package/dist/chunk-AQNACKO6.js +1 -0
  26. package/dist/chunk-AQNACKO6.js.map +1 -0
  27. package/dist/chunk-AZCRNZ5W.js +49 -0
  28. package/dist/chunk-AZCRNZ5W.js.map +1 -0
  29. package/dist/chunk-B3ASGNVQ.mjs +45 -0
  30. package/dist/chunk-B3ASGNVQ.mjs.map +1 -0
  31. package/dist/chunk-BE4YFFMX.js +49 -0
  32. package/dist/chunk-BE4YFFMX.js.map +1 -0
  33. package/dist/chunk-BOCIYCLE.mjs +30 -0
  34. package/dist/chunk-BOCIYCLE.mjs.map +1 -0
  35. package/dist/chunk-CCBKFCGG.js +147 -0
  36. package/dist/chunk-CCBKFCGG.js.map +1 -0
  37. package/dist/chunk-CINBMYIQ.mjs +183 -0
  38. package/dist/chunk-CINBMYIQ.mjs.map +1 -0
  39. package/dist/chunk-EBECHU6M.js +92 -0
  40. package/dist/chunk-EBECHU6M.js.map +1 -0
  41. package/dist/chunk-ETXAWW65.mjs +86 -0
  42. package/dist/chunk-ETXAWW65.mjs.map +1 -0
  43. package/dist/chunk-EXN2TFDJ.js +38 -0
  44. package/dist/chunk-EXN2TFDJ.js.map +1 -0
  45. package/dist/chunk-FNRATYYY.mjs +24 -0
  46. package/dist/chunk-FNRATYYY.mjs.map +1 -0
  47. package/dist/chunk-FQBU72MW.mjs +16 -0
  48. package/dist/chunk-FQBU72MW.mjs.map +1 -0
  49. package/dist/chunk-G3NCGVCC.mjs +33 -0
  50. package/dist/chunk-G3NCGVCC.mjs.map +1 -0
  51. package/dist/chunk-GH6FPDY5.mjs +147 -0
  52. package/dist/chunk-GH6FPDY5.mjs.map +1 -0
  53. package/dist/chunk-HSZIPZHO.js +183 -0
  54. package/dist/chunk-HSZIPZHO.js.map +1 -0
  55. package/dist/chunk-IU54VPNO.js +67 -0
  56. package/dist/chunk-IU54VPNO.js.map +1 -0
  57. package/dist/chunk-IXYNAYMQ.js +33 -0
  58. package/dist/chunk-IXYNAYMQ.js.map +1 -0
  59. package/dist/chunk-IY3CYGH7.js +44 -0
  60. package/dist/chunk-IY3CYGH7.js.map +1 -0
  61. package/dist/chunk-KQNKD7G5.mjs +40 -0
  62. package/dist/chunk-KQNKD7G5.mjs.map +1 -0
  63. package/dist/chunk-KWFB2KH2.mjs +73 -0
  64. package/dist/chunk-KWFB2KH2.mjs.map +1 -0
  65. package/dist/chunk-L4G6IIWG.js +484 -0
  66. package/dist/chunk-L4G6IIWG.js.map +1 -0
  67. package/dist/chunk-L5U2LMZR.js +26 -0
  68. package/dist/chunk-L5U2LMZR.js.map +1 -0
  69. package/dist/chunk-LGC7HQR4.js +32 -0
  70. package/dist/chunk-LGC7HQR4.js.map +1 -0
  71. package/dist/chunk-LX5LQXYU.js +16 -0
  72. package/dist/chunk-LX5LQXYU.js.map +1 -0
  73. package/dist/chunk-M2OYI2NS.js +108 -0
  74. package/dist/chunk-M2OYI2NS.js.map +1 -0
  75. package/dist/chunk-MOWPAP2K.mjs +92 -0
  76. package/dist/chunk-MOWPAP2K.mjs.map +1 -0
  77. package/dist/chunk-N7URTBJV.js +73 -0
  78. package/dist/chunk-N7URTBJV.js.map +1 -0
  79. package/dist/chunk-OW4IXJ5J.mjs +484 -0
  80. package/dist/chunk-OW4IXJ5J.mjs.map +1 -0
  81. package/dist/chunk-OWG545LQ.js +45 -0
  82. package/dist/chunk-OWG545LQ.js.map +1 -0
  83. package/dist/chunk-QYFJ2LLW.js +86 -0
  84. package/dist/chunk-QYFJ2LLW.js.map +1 -0
  85. package/dist/chunk-RCPCISJD.mjs +16 -0
  86. package/dist/chunk-RCPCISJD.mjs.map +1 -0
  87. package/dist/chunk-RDFGQYG6.mjs +147 -0
  88. package/dist/chunk-RDFGQYG6.mjs.map +1 -0
  89. package/dist/chunk-RO347OMD.js +16 -0
  90. package/dist/chunk-RO347OMD.js.map +1 -0
  91. package/dist/chunk-RWBJNNGH.js +24 -0
  92. package/dist/chunk-RWBJNNGH.js.map +1 -0
  93. package/dist/chunk-S7LRB72P.js +38 -0
  94. package/dist/chunk-S7LRB72P.js.map +1 -0
  95. package/dist/chunk-SWINKAMI.js +147 -0
  96. package/dist/chunk-SWINKAMI.js.map +1 -0
  97. package/dist/chunk-TVV27HGP.mjs +81 -0
  98. package/dist/chunk-TVV27HGP.mjs.map +1 -0
  99. package/dist/chunk-TWF4RAXL.mjs +49 -0
  100. package/dist/chunk-TWF4RAXL.mjs.map +1 -0
  101. package/dist/chunk-VL3VNUT4.mjs +12 -0
  102. package/dist/chunk-VL3VNUT4.mjs.map +1 -0
  103. package/dist/chunk-VZS2LXDP.mjs +108 -0
  104. package/dist/chunk-VZS2LXDP.mjs.map +1 -0
  105. package/dist/chunk-WA7K3P4D.js +40 -0
  106. package/dist/chunk-WA7K3P4D.js.map +1 -0
  107. package/dist/chunk-XBKAIK2K.mjs +67 -0
  108. package/dist/chunk-XBKAIK2K.mjs.map +1 -0
  109. package/dist/chunk-XGCWN6ZD.mjs +262 -0
  110. package/dist/chunk-XGCWN6ZD.mjs.map +1 -0
  111. package/dist/chunk-XKY46YTJ.js +12 -0
  112. package/dist/chunk-XKY46YTJ.js.map +1 -0
  113. package/dist/chunk-XL5BQOEI.mjs +33 -0
  114. package/dist/chunk-XL5BQOEI.mjs.map +1 -0
  115. package/dist/chunk-XMCETCVM.js +48 -0
  116. package/dist/chunk-XMCETCVM.js.map +1 -0
  117. package/dist/chunk-XYRWHY3K.mjs +51 -0
  118. package/dist/chunk-XYRWHY3K.mjs.map +1 -0
  119. package/dist/chunk-Y7IEFWZU.mjs +26 -0
  120. package/dist/chunk-Y7IEFWZU.mjs.map +1 -0
  121. package/dist/chunk-YC3HWHJV.mjs +48 -0
  122. package/dist/chunk-YC3HWHJV.mjs.map +1 -0
  123. package/dist/chunk-YMAK7TUO.mjs +1 -0
  124. package/dist/chunk-YMAK7TUO.mjs.map +1 -0
  125. package/dist/chunk-YRZVIDCF.mjs +38 -0
  126. package/dist/chunk-YRZVIDCF.mjs.map +1 -0
  127. package/dist/chunk-Z7FBBBME.mjs +38 -0
  128. package/dist/chunk-Z7FBBBME.mjs.map +1 -0
  129. package/dist/chunk-ZMDJRC2Z.js +262 -0
  130. package/dist/chunk-ZMDJRC2Z.js.map +1 -0
  131. package/dist/common/BaseSnapExecutor.js +26 -0
  132. package/dist/common/BaseSnapExecutor.js.map +1 -0
  133. package/dist/common/BaseSnapExecutor.mjs +26 -0
  134. package/dist/common/BaseSnapExecutor.mjs.map +1 -0
  135. package/dist/common/commands.js +11 -0
  136. package/dist/common/commands.js.map +1 -0
  137. package/dist/common/commands.mjs +11 -0
  138. package/dist/common/commands.mjs.map +1 -0
  139. package/dist/common/endowments/commonEndowmentFactory.js +20 -0
  140. package/dist/common/endowments/commonEndowmentFactory.js.map +1 -0
  141. package/dist/common/endowments/commonEndowmentFactory.mjs +20 -0
  142. package/dist/common/endowments/commonEndowmentFactory.mjs.map +1 -0
  143. package/dist/common/endowments/console.js +13 -0
  144. package/dist/common/endowments/console.js.map +1 -0
  145. package/dist/common/endowments/console.mjs +13 -0
  146. package/dist/common/endowments/console.mjs.map +1 -0
  147. package/dist/common/endowments/crypto.js +11 -0
  148. package/dist/common/endowments/crypto.js.map +1 -0
  149. package/dist/common/endowments/crypto.mjs +11 -0
  150. package/dist/common/endowments/crypto.mjs.map +1 -0
  151. package/dist/common/endowments/date.js +9 -0
  152. package/dist/common/endowments/date.js.map +1 -0
  153. package/dist/common/endowments/date.mjs +9 -0
  154. package/dist/common/endowments/date.mjs.map +1 -0
  155. package/dist/common/endowments/index.js +21 -0
  156. package/dist/common/endowments/index.js.map +1 -0
  157. package/dist/common/endowments/index.mjs +21 -0
  158. package/dist/common/endowments/index.mjs.map +1 -0
  159. package/dist/common/endowments/interval.js +8 -0
  160. package/dist/common/endowments/interval.js.map +1 -0
  161. package/dist/common/endowments/interval.mjs +8 -0
  162. package/dist/common/endowments/interval.mjs.map +1 -0
  163. package/dist/common/endowments/math.js +10 -0
  164. package/dist/common/endowments/math.js.map +1 -0
  165. package/dist/common/endowments/math.mjs +10 -0
  166. package/dist/common/endowments/math.mjs.map +1 -0
  167. package/dist/common/endowments/network.js +10 -0
  168. package/dist/common/endowments/network.js.map +1 -0
  169. package/dist/common/endowments/network.mjs +10 -0
  170. package/dist/common/endowments/network.mjs.map +1 -0
  171. package/dist/common/endowments/textDecoder.js +8 -0
  172. package/dist/common/endowments/textDecoder.js.map +1 -0
  173. package/dist/common/endowments/textDecoder.mjs +8 -0
  174. package/dist/common/endowments/textDecoder.mjs.map +1 -0
  175. package/dist/common/endowments/textEncoder.js +8 -0
  176. package/dist/common/endowments/textEncoder.js.map +1 -0
  177. package/dist/common/endowments/textEncoder.mjs +8 -0
  178. package/dist/common/endowments/textEncoder.mjs.map +1 -0
  179. package/dist/common/endowments/timeout.js +8 -0
  180. package/dist/common/endowments/timeout.js.map +1 -0
  181. package/dist/common/endowments/timeout.mjs +8 -0
  182. package/dist/common/endowments/timeout.mjs.map +1 -0
  183. package/dist/common/globalEvents.js +11 -0
  184. package/dist/common/globalEvents.js.map +1 -0
  185. package/dist/common/globalEvents.mjs +11 -0
  186. package/dist/common/globalEvents.mjs.map +1 -0
  187. package/dist/common/globalObject.js +10 -0
  188. package/dist/common/globalObject.js.map +1 -0
  189. package/dist/common/globalObject.mjs +10 -0
  190. package/dist/common/globalObject.mjs.map +1 -0
  191. package/dist/common/lockdown/lockdown-events.js +8 -0
  192. package/dist/common/lockdown/lockdown-events.js.map +1 -0
  193. package/dist/common/lockdown/lockdown-events.mjs +8 -0
  194. package/dist/common/lockdown/lockdown-events.mjs.map +1 -0
  195. package/dist/common/lockdown/lockdown-more.js +8 -0
  196. package/dist/common/lockdown/lockdown-more.js.map +1 -0
  197. package/dist/common/lockdown/lockdown-more.mjs +8 -0
  198. package/dist/common/lockdown/lockdown-more.mjs.map +1 -0
  199. package/dist/common/lockdown/lockdown.js +22 -0
  200. package/dist/common/lockdown/lockdown.js.map +1 -0
  201. package/dist/common/lockdown/lockdown.mjs +22 -0
  202. package/dist/common/lockdown/lockdown.mjs.map +1 -0
  203. package/dist/common/sortParams.js +8 -0
  204. package/dist/common/sortParams.js.map +1 -0
  205. package/dist/common/sortParams.mjs +8 -0
  206. package/dist/common/sortParams.mjs.map +1 -0
  207. package/dist/common/utils.js +21 -0
  208. package/dist/common/utils.js.map +1 -0
  209. package/dist/common/utils.mjs +21 -0
  210. package/dist/common/utils.mjs.map +1 -0
  211. package/dist/common/validation.js +38 -0
  212. package/dist/common/validation.js.map +1 -0
  213. package/dist/common/validation.mjs +38 -0
  214. package/dist/common/validation.mjs.map +1 -0
  215. package/dist/globals.d.js +1 -0
  216. package/dist/globals.d.js.map +1 -0
  217. package/dist/globals.d.mjs +1 -0
  218. package/dist/globals.d.mjs.map +1 -0
  219. package/dist/iframe/IFrameSnapExecutor.js +27 -0
  220. package/dist/iframe/IFrameSnapExecutor.js.map +1 -0
  221. package/dist/iframe/IFrameSnapExecutor.mjs +27 -0
  222. package/dist/iframe/IFrameSnapExecutor.mjs.map +1 -0
  223. package/dist/iframe/index.js +35 -0
  224. package/dist/iframe/index.js.map +1 -0
  225. package/dist/iframe/index.mjs +35 -0
  226. package/dist/iframe/index.mjs.map +1 -0
  227. package/dist/index.js +9 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/index.mjs +9 -0
  230. package/dist/index.mjs.map +1 -0
  231. package/dist/logging.js +8 -0
  232. package/dist/logging.js.map +1 -0
  233. package/dist/logging.mjs +8 -0
  234. package/dist/logging.mjs.map +1 -0
  235. package/dist/node-process/ChildProcessSnapExecutor.js +27 -0
  236. package/dist/node-process/ChildProcessSnapExecutor.js.map +1 -0
  237. package/dist/node-process/ChildProcessSnapExecutor.mjs +27 -0
  238. package/dist/node-process/ChildProcessSnapExecutor.mjs.map +1 -0
  239. package/dist/node-process/index.js +31 -0
  240. package/dist/node-process/index.js.map +1 -0
  241. package/dist/node-process/index.mjs +31 -0
  242. package/dist/node-process/index.mjs.map +1 -0
  243. package/dist/node-thread/ThreadSnapExecutor.js +27 -0
  244. package/dist/node-thread/ThreadSnapExecutor.js.map +1 -0
  245. package/dist/node-thread/ThreadSnapExecutor.mjs +27 -0
  246. package/dist/node-thread/ThreadSnapExecutor.mjs.map +1 -0
  247. package/dist/node-thread/index.js +31 -0
  248. package/dist/node-thread/index.js.map +1 -0
  249. package/dist/node-thread/index.mjs +31 -0
  250. package/dist/node-thread/index.mjs.map +1 -0
  251. package/dist/proxy/ProxySnapExecutor.js +8 -0
  252. package/dist/proxy/ProxySnapExecutor.js.map +1 -0
  253. package/dist/proxy/ProxySnapExecutor.mjs +8 -0
  254. package/dist/proxy/ProxySnapExecutor.mjs.map +1 -0
  255. package/dist/proxy/index.js +9 -0
  256. package/dist/proxy/index.js.map +1 -0
  257. package/dist/proxy/index.mjs +9 -0
  258. package/dist/proxy/index.mjs.map +1 -0
  259. package/dist/tsconfig.build.tsbuildinfo +1 -0
  260. package/dist/types/common/utils.d.ts +7 -0
  261. package/dist/types/vendor/global.d.js +1 -0
  262. package/dist/types/vendor/global.d.js.map +1 -0
  263. package/dist/types/vendor/global.d.mjs +1 -0
  264. package/dist/types/vendor/global.d.mjs.map +1 -0
  265. package/dist/types/vendor/readable-stream.d.js +1 -0
  266. package/dist/types/vendor/readable-stream.d.js.map +1 -0
  267. package/dist/types/vendor/readable-stream.d.mjs +1 -0
  268. package/dist/types/vendor/readable-stream.d.mjs.map +1 -0
  269. package/dist/webview/WebViewExecutorStream.js +8 -0
  270. package/dist/webview/WebViewExecutorStream.js.map +1 -0
  271. package/dist/webview/WebViewExecutorStream.mjs +8 -0
  272. package/dist/webview/WebViewExecutorStream.mjs.map +1 -0
  273. package/dist/webview/index.js +26 -0
  274. package/dist/webview/index.js.map +1 -0
  275. package/dist/webview/index.mjs +26 -0
  276. package/dist/webview/index.mjs.map +1 -0
  277. package/dist/webworker/executor/WebWorkerSnapExecutor.js +27 -0
  278. package/dist/webworker/executor/WebWorkerSnapExecutor.js.map +1 -0
  279. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs +27 -0
  280. package/dist/webworker/executor/WebWorkerSnapExecutor.mjs.map +1 -0
  281. package/dist/webworker/executor/index.js +35 -0
  282. package/dist/webworker/executor/index.js.map +1 -0
  283. package/dist/webworker/executor/index.mjs +35 -0
  284. package/dist/webworker/executor/index.mjs.map +1 -0
  285. package/dist/webworker/pool/WebWorkerPool.js +8 -0
  286. package/dist/webworker/pool/WebWorkerPool.js.map +1 -0
  287. package/dist/webworker/pool/WebWorkerPool.mjs +8 -0
  288. package/dist/webworker/pool/WebWorkerPool.mjs.map +1 -0
  289. package/dist/webworker/pool/index.js +16 -0
  290. package/dist/webworker/pool/index.js.map +1 -0
  291. package/dist/webworker/pool/index.mjs +16 -0
  292. package/dist/webworker/pool/index.mjs.map +1 -0
  293. package/package.json +29 -22
  294. package/dist/cjs/common/BaseSnapExecutor.js +0 -496
  295. package/dist/cjs/common/BaseSnapExecutor.js.map +0 -1
  296. package/dist/cjs/common/commands.js +0 -102
  297. package/dist/cjs/common/commands.js.map +0 -1
  298. package/dist/cjs/common/endowments/commonEndowmentFactory.js +0 -147
  299. package/dist/cjs/common/endowments/commonEndowmentFactory.js.map +0 -1
  300. package/dist/cjs/common/endowments/console.js +0 -134
  301. package/dist/cjs/common/endowments/console.js.map +0 -1
  302. package/dist/cjs/common/endowments/crypto.js +0 -44
  303. package/dist/cjs/common/endowments/crypto.js.map +0 -1
  304. package/dist/cjs/common/endowments/date.js +0 -53
  305. package/dist/cjs/common/endowments/date.js.map +0 -1
  306. package/dist/cjs/common/endowments/index.js +0 -93
  307. package/dist/cjs/common/endowments/index.js.map +0 -1
  308. package/dist/cjs/common/endowments/interval.js +0 -62
  309. package/dist/cjs/common/endowments/interval.js.map +0 -1
  310. package/dist/cjs/common/endowments/math.js +0 -67
  311. package/dist/cjs/common/endowments/math.js.map +0 -1
  312. package/dist/cjs/common/endowments/network.js +0 -303
  313. package/dist/cjs/common/endowments/network.js.map +0 -1
  314. package/dist/cjs/common/endowments/textDecoder.js +0 -28
  315. package/dist/cjs/common/endowments/textDecoder.js.map +0 -1
  316. package/dist/cjs/common/endowments/textEncoder.js +0 -28
  317. package/dist/cjs/common/endowments/textEncoder.js.map +0 -1
  318. package/dist/cjs/common/endowments/timeout.js +0 -64
  319. package/dist/cjs/common/endowments/timeout.js.map +0 -1
  320. package/dist/cjs/common/globalEvents.js +0 -40
  321. package/dist/cjs/common/globalEvents.js.map +0 -1
  322. package/dist/cjs/common/globalObject.js +0 -53
  323. package/dist/cjs/common/globalObject.js.map +0 -1
  324. package/dist/cjs/common/lockdown/lockdown-events.js +0 -74
  325. package/dist/cjs/common/lockdown/lockdown-events.js.map +0 -1
  326. package/dist/cjs/common/lockdown/lockdown-more.js +0 -73
  327. package/dist/cjs/common/lockdown/lockdown-more.js.map +0 -1
  328. package/dist/cjs/common/lockdown/lockdown.js +0 -30
  329. package/dist/cjs/common/lockdown/lockdown.js.map +0 -1
  330. package/dist/cjs/common/sortParams.js +0 -26
  331. package/dist/cjs/common/sortParams.js.map +0 -1
  332. package/dist/cjs/common/utils.js +0 -128
  333. package/dist/cjs/common/utils.js.map +0 -1
  334. package/dist/cjs/common/validation.js +0 -149
  335. package/dist/cjs/common/validation.js.map +0 -1
  336. package/dist/cjs/iframe/IFrameSnapExecutor.js +0 -50
  337. package/dist/cjs/iframe/IFrameSnapExecutor.js.map +0 -1
  338. package/dist/cjs/iframe/index.js +0 -13
  339. package/dist/cjs/iframe/index.js.map +0 -1
  340. package/dist/cjs/index.js +0 -20
  341. package/dist/cjs/index.js.map +0 -1
  342. package/dist/cjs/logging.js +0 -15
  343. package/dist/cjs/logging.js.map +0 -1
  344. package/dist/cjs/node-process/ChildProcessSnapExecutor.js +0 -39
  345. package/dist/cjs/node-process/ChildProcessSnapExecutor.js.map +0 -1
  346. package/dist/cjs/node-process/index.js +0 -11
  347. package/dist/cjs/node-process/index.js.map +0 -1
  348. package/dist/cjs/node-thread/ThreadSnapExecutor.js +0 -39
  349. package/dist/cjs/node-thread/ThreadSnapExecutor.js.map +0 -1
  350. package/dist/cjs/node-thread/index.js +0 -11
  351. package/dist/cjs/node-thread/index.js.map +0 -1
  352. package/dist/cjs/proxy/ProxySnapExecutor.js +0 -183
  353. package/dist/cjs/proxy/ProxySnapExecutor.js.map +0 -1
  354. package/dist/cjs/proxy/index.js +0 -20
  355. package/dist/cjs/proxy/index.js.map +0 -1
  356. package/dist/cjs/webview/WebViewExecutorStream.js +0 -121
  357. package/dist/cjs/webview/WebViewExecutorStream.js.map +0 -1
  358. package/dist/cjs/webview/index.js +0 -19
  359. package/dist/cjs/webview/index.js.map +0 -1
  360. package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js +0 -45
  361. package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js.map +0 -1
  362. package/dist/cjs/webworker/executor/index.js +0 -13
  363. package/dist/cjs/webworker/executor/index.js.map +0 -1
  364. package/dist/cjs/webworker/pool/WebWorkerPool.js +0 -248
  365. package/dist/cjs/webworker/pool/WebWorkerPool.js.map +0 -1
  366. package/dist/cjs/webworker/pool/index.js +0 -13
  367. package/dist/cjs/webworker/pool/index.js.map +0 -1
  368. package/dist/esm/common/BaseSnapExecutor.js +0 -486
  369. package/dist/esm/common/BaseSnapExecutor.js.map +0 -1
  370. package/dist/esm/common/commands.js +0 -101
  371. package/dist/esm/common/commands.js.map +0 -1
  372. package/dist/esm/common/endowments/commonEndowmentFactory.js +0 -132
  373. package/dist/esm/common/endowments/commonEndowmentFactory.js.map +0 -1
  374. package/dist/esm/common/endowments/console.js +0 -116
  375. package/dist/esm/common/endowments/console.js.map +0 -1
  376. package/dist/esm/common/endowments/crypto.js +0 -26
  377. package/dist/esm/common/endowments/crypto.js.map +0 -1
  378. package/dist/esm/common/endowments/date.js +0 -43
  379. package/dist/esm/common/endowments/date.js.map +0 -1
  380. package/dist/esm/common/endowments/index.js +0 -92
  381. package/dist/esm/common/endowments/index.js.map +0 -1
  382. package/dist/esm/common/endowments/interval.js +0 -52
  383. package/dist/esm/common/endowments/interval.js.map +0 -1
  384. package/dist/esm/common/endowments/math.js +0 -57
  385. package/dist/esm/common/endowments/math.js.map +0 -1
  386. package/dist/esm/common/endowments/network.js +0 -293
  387. package/dist/esm/common/endowments/network.js.map +0 -1
  388. package/dist/esm/common/endowments/textDecoder.js +0 -18
  389. package/dist/esm/common/endowments/textDecoder.js.map +0 -1
  390. package/dist/esm/common/endowments/textEncoder.js +0 -18
  391. package/dist/esm/common/endowments/textEncoder.js.map +0 -1
  392. package/dist/esm/common/endowments/timeout.js +0 -54
  393. package/dist/esm/common/endowments/timeout.js.map +0 -1
  394. package/dist/esm/common/globalEvents.js +0 -36
  395. package/dist/esm/common/globalEvents.js.map +0 -1
  396. package/dist/esm/common/globalObject.js +0 -36
  397. package/dist/esm/common/globalObject.js.map +0 -1
  398. package/dist/esm/common/lockdown/lockdown-events.js +0 -66
  399. package/dist/esm/common/lockdown/lockdown-events.js.map +0 -1
  400. package/dist/esm/common/lockdown/lockdown-more.js +0 -82
  401. package/dist/esm/common/lockdown/lockdown-more.js.map +0 -1
  402. package/dist/esm/common/lockdown/lockdown.js +0 -24
  403. package/dist/esm/common/lockdown/lockdown.js.map +0 -1
  404. package/dist/esm/common/sortParams.js +0 -29
  405. package/dist/esm/common/sortParams.js.map +0 -1
  406. package/dist/esm/common/utils.js +0 -128
  407. package/dist/esm/common/utils.js.map +0 -1
  408. package/dist/esm/common/validation.js +0 -127
  409. package/dist/esm/common/validation.js.map +0 -1
  410. package/dist/esm/iframe/IFrameSnapExecutor.js +0 -35
  411. package/dist/esm/iframe/IFrameSnapExecutor.js.map +0 -1
  412. package/dist/esm/iframe/index.js +0 -9
  413. package/dist/esm/iframe/index.js.map +0 -1
  414. package/dist/esm/index.js +0 -3
  415. package/dist/esm/index.js.map +0 -1
  416. package/dist/esm/logging.js +0 -10
  417. package/dist/esm/logging.js.map +0 -1
  418. package/dist/esm/node-process/ChildProcessSnapExecutor.js +0 -24
  419. package/dist/esm/node-process/ChildProcessSnapExecutor.js.map +0 -1
  420. package/dist/esm/node-process/index.js +0 -7
  421. package/dist/esm/node-process/index.js.map +0 -1
  422. package/dist/esm/node-thread/ThreadSnapExecutor.js +0 -24
  423. package/dist/esm/node-thread/ThreadSnapExecutor.js.map +0 -1
  424. package/dist/esm/node-thread/index.js +0 -7
  425. package/dist/esm/node-thread/index.js.map +0 -1
  426. package/dist/esm/proxy/ProxySnapExecutor.js +0 -181
  427. package/dist/esm/proxy/ProxySnapExecutor.js.map +0 -1
  428. package/dist/esm/proxy/index.js +0 -3
  429. package/dist/esm/proxy/index.js.map +0 -1
  430. package/dist/esm/webview/WebViewExecutorStream.js +0 -111
  431. package/dist/esm/webview/WebViewExecutorStream.js.map +0 -1
  432. package/dist/esm/webview/index.js +0 -15
  433. package/dist/esm/webview/index.js.map +0 -1
  434. package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js +0 -30
  435. package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js.map +0 -1
  436. package/dist/esm/webworker/executor/index.js +0 -9
  437. package/dist/esm/webworker/executor/index.js.map +0 -1
  438. package/dist/esm/webworker/pool/WebWorkerPool.js +0 -245
  439. package/dist/esm/webworker/pool/WebWorkerPool.js.map +0 -1
  440. package/dist/esm/webworker/pool/index.js +0 -9
  441. package/dist/esm/webworker/pool/index.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ // src/common/lockdown/lockdown-more.ts
2
+ import { logError } from "@metamask/snaps-utils";
3
+ function executeLockdownMore() {
4
+ try {
5
+ const namedIntrinsics = Reflect.ownKeys(new Compartment().globalThis);
6
+ const shouldHardenManually = /* @__PURE__ */ new Set(["eval", "Function"]);
7
+ const globalProperties = /* @__PURE__ */ new Set([
8
+ // universalPropertyNames is a constant added by lockdown to global scope
9
+ // at the time of writing, it is initialized in 'ses/src/whitelist'.
10
+ // These properties tend to be non-enumerable.
11
+ ...namedIntrinsics
12
+ // TODO: Also include the named platform globals
13
+ // This grabs every enumerable property on globalThis.
14
+ // ...Object.keys(globalThis),
15
+ ]);
16
+ globalProperties.forEach((propertyName) => {
17
+ const descriptor = Reflect.getOwnPropertyDescriptor(
18
+ globalThis,
19
+ propertyName
20
+ );
21
+ if (descriptor) {
22
+ if (descriptor.configurable) {
23
+ if (hasAccessor(descriptor)) {
24
+ Object.defineProperty(globalThis, propertyName, {
25
+ configurable: false
26
+ });
27
+ } else {
28
+ Object.defineProperty(globalThis, propertyName, {
29
+ configurable: false,
30
+ writable: false
31
+ });
32
+ }
33
+ }
34
+ if (shouldHardenManually.has(propertyName)) {
35
+ harden(globalThis[propertyName]);
36
+ }
37
+ }
38
+ });
39
+ } catch (error) {
40
+ logError("Protecting intrinsics failed:", error);
41
+ throw error;
42
+ }
43
+ }
44
+ function hasAccessor(descriptor) {
45
+ return "set" in descriptor || "get" in descriptor;
46
+ }
47
+
48
+ export {
49
+ executeLockdownMore
50
+ };
51
+ //# sourceMappingURL=chunk-XYRWHY3K.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/lockdown/lockdown-more.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference, spaced-comment\n/// <reference path=\"../../../../../node_modules/ses/types.d.ts\" />\n\nimport { logError } from '@metamask/snaps-utils';\n\n/**\n * The SES `lockdown` function only hardens the properties enumerated by the\n * universalPropertyNames constant specified in 'ses/src/whitelist'. This\n * function makes all function and object properties on the start compartment\n * global non-configurable and non-writable, unless they are already\n * non-configurable.\n *\n * It is critical that this function runs at the right time during\n * initialization, which should always be immediately after `lockdown` has been\n * called. At the time of writing, the modifications this function makes to the\n * runtime environment appear to be non-breaking, but that could change with\n * the addition of dependencies, or the order of our scripts in our HTML files.\n * Exercise caution.\n *\n * See inline comments for implementation details.\n *\n * We write this function in IIFE format to avoid polluting global scope.\n *\n * @throws If the lockdown failed.\n */\nexport function executeLockdownMore() {\n // Make all \"object\" and \"function\" own properties of globalThis\n // non-configurable and non-writable, when possible.\n // We call a property that is non-configurable and non-writable,\n // \"non-modifiable\".\n try {\n const namedIntrinsics = Reflect.ownKeys(new Compartment().globalThis);\n\n // These named intrinsics are not automatically hardened by `lockdown`\n const shouldHardenManually = new Set<symbol | string>(['eval', 'Function']);\n\n const globalProperties = new Set([\n // universalPropertyNames is a constant added by lockdown to global scope\n // at the time of writing, it is initialized in 'ses/src/whitelist'.\n // These properties tend to be non-enumerable.\n ...namedIntrinsics,\n\n // TODO: Also include the named platform globals\n // This grabs every enumerable property on globalThis.\n // ...Object.keys(globalThis),\n ]);\n\n globalProperties.forEach((propertyName) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(\n globalThis,\n propertyName,\n );\n\n if (descriptor) {\n if (descriptor.configurable) {\n // If the property on globalThis is configurable, make it\n // non-configurable. If it has no accessor properties, also make it\n // non-writable.\n if (hasAccessor(descriptor)) {\n Object.defineProperty(globalThis, propertyName, {\n configurable: false,\n });\n } else {\n Object.defineProperty(globalThis, propertyName, {\n configurable: false,\n writable: false,\n });\n }\n }\n\n if (shouldHardenManually.has(propertyName)) {\n harden((globalThis as any)[propertyName]);\n }\n }\n });\n } catch (error) {\n logError('Protecting intrinsics failed:', error);\n throw error;\n }\n}\n\n/**\n * Checks whether the given propertyName descriptor has any accessors, i.e. the\n * properties `get` or `set`.\n *\n * We want to make globals non-writable, and we can't set the `writable`\n * property and accessor properties at the same time.\n *\n * @param descriptor - The propertyName descriptor to check.\n * @returns Whether the propertyName descriptor has any accessors.\n */\nfunction hasAccessor(descriptor: any): boolean {\n return 'set' in descriptor || 'get' in descriptor;\n}\n"],"mappings":";AAGA,SAAS,gBAAgB;AAsBlB,SAAS,sBAAsB;AAKpC,MAAI;AACF,UAAM,kBAAkB,QAAQ,QAAQ,IAAI,YAAY,EAAE,UAAU;AAGpE,UAAM,uBAAuB,oBAAI,IAAqB,CAAC,QAAQ,UAAU,CAAC;AAE1E,UAAM,mBAAmB,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA,MAI/B,GAAG;AAAA;AAAA;AAAA;AAAA,IAKL,CAAC;AAED,qBAAiB,QAAQ,CAAC,iBAAiB;AACzC,YAAM,aAAa,QAAQ;AAAA,QACzB;AAAA,QACA;AAAA,MACF;AAEA,UAAI,YAAY;AACd,YAAI,WAAW,cAAc;AAI3B,cAAI,YAAY,UAAU,GAAG;AAC3B,mBAAO,eAAe,YAAY,cAAc;AAAA,cAC9C,cAAc;AAAA,YAChB,CAAC;AAAA,UACH,OAAO;AACL,mBAAO,eAAe,YAAY,cAAc;AAAA,cAC9C,cAAc;AAAA,cACd,UAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI,qBAAqB,IAAI,YAAY,GAAG;AAC1C,iBAAQ,WAAmB,YAAY,CAAC;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,SAAS,OAAO;AACd,aAAS,iCAAiC,KAAK;AAC/C,UAAM;AAAA,EACR;AACF;AAYA,SAAS,YAAY,YAA0B;AAC7C,SAAO,SAAS,cAAc,SAAS;AACzC;","names":[]}
@@ -0,0 +1,26 @@
1
+ // src/common/globalObject.ts
2
+ var _rootRealmGlobal;
3
+ var _rootRealmGlobalName;
4
+ if (typeof globalThis !== "undefined") {
5
+ _rootRealmGlobal = globalThis;
6
+ _rootRealmGlobalName = "globalThis" /* globalThis */;
7
+ } else if (typeof self !== "undefined") {
8
+ _rootRealmGlobal = self;
9
+ _rootRealmGlobalName = "self" /* self */;
10
+ } else if (typeof window !== "undefined") {
11
+ _rootRealmGlobal = window;
12
+ _rootRealmGlobalName = "window" /* window */;
13
+ } else if (typeof global !== "undefined") {
14
+ _rootRealmGlobal = global;
15
+ _rootRealmGlobalName = "global" /* global */;
16
+ } else {
17
+ throw new Error("Unknown realm type; failed to identify global object.");
18
+ }
19
+ var rootRealmGlobal = _rootRealmGlobal;
20
+ var rootRealmGlobalName = _rootRealmGlobalName;
21
+
22
+ export {
23
+ rootRealmGlobal,
24
+ rootRealmGlobalName
25
+ };
26
+ //# sourceMappingURL=chunk-Y7IEFWZU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/globalObject.ts"],"sourcesContent":["enum GlobalObjectNames {\n // The globalThis entry is incorrectly identified as shadowing the global\n // globalThis.\n /* eslint-disable @typescript-eslint/naming-convention */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n globalThis = 'globalThis',\n global = 'global',\n self = 'self',\n window = 'window',\n /* eslint-enable @typescript-eslint/naming-convention */\n}\n\nlet _rootRealmGlobal: typeof globalThis;\nlet _rootRealmGlobalName: string;\n\n/* istanbul ignore next */\n/* eslint-disable no-negated-condition */\nif (typeof globalThis !== 'undefined') {\n _rootRealmGlobal = globalThis;\n _rootRealmGlobalName = GlobalObjectNames.globalThis;\n} else if (typeof self !== 'undefined') {\n _rootRealmGlobal = self;\n _rootRealmGlobalName = GlobalObjectNames.self;\n} else if (typeof window !== 'undefined') {\n _rootRealmGlobal = window;\n _rootRealmGlobalName = GlobalObjectNames.window;\n} else if (typeof global !== 'undefined') {\n _rootRealmGlobal = global;\n _rootRealmGlobalName = GlobalObjectNames.global;\n} else {\n throw new Error('Unknown realm type; failed to identify global object.');\n}\n/* eslint-enable no-negated-condition */\n\n/**\n * A platform-agnostic alias for the root realm global object.\n */\nconst rootRealmGlobal = _rootRealmGlobal;\n\n/**\n * The string literal corresponding to the name of the root realm global object.\n */\nconst rootRealmGlobalName = _rootRealmGlobalName;\n\nexport { rootRealmGlobal, rootRealmGlobalName };\n"],"mappings":";AAYA,IAAI;AACJ,IAAI;AAIJ,IAAI,OAAO,eAAe,aAAa;AACrC,qBAAmB;AACnB,yBAAuB;AACzB,WAAW,OAAO,SAAS,aAAa;AACtC,qBAAmB;AACnB,yBAAuB;AACzB,WAAW,OAAO,WAAW,aAAa;AACxC,qBAAmB;AACnB,yBAAuB;AACzB,WAAW,OAAO,WAAW,aAAa;AACxC,qBAAmB;AACnB,yBAAuB;AACzB,OAAO;AACL,QAAM,IAAI,MAAM,uDAAuD;AACzE;AAMA,IAAM,kBAAkB;AAKxB,IAAM,sBAAsB;","names":[]}
@@ -0,0 +1,48 @@
1
+ // src/common/endowments/timeout.ts
2
+ import { rpcErrors } from "@metamask/rpc-errors";
3
+ var MINIMUM_TIMEOUT = 10;
4
+ var createTimeout = () => {
5
+ const registeredHandles = /* @__PURE__ */ new Map();
6
+ const _setTimeout = (handler, timeout) => {
7
+ if (typeof handler !== "function") {
8
+ throw rpcErrors.internal(
9
+ `The timeout handler must be a function. Received: ${typeof handler}.`
10
+ );
11
+ }
12
+ harden(handler);
13
+ const handle = Object.freeze(/* @__PURE__ */ Object.create(null));
14
+ const platformHandle = setTimeout(() => {
15
+ registeredHandles.delete(handle);
16
+ handler();
17
+ }, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));
18
+ registeredHandles.set(handle, platformHandle);
19
+ return handle;
20
+ };
21
+ const _clearTimeout = (handle) => {
22
+ const platformHandle = registeredHandles.get(handle);
23
+ if (platformHandle !== void 0) {
24
+ clearTimeout(platformHandle);
25
+ registeredHandles.delete(handle);
26
+ }
27
+ };
28
+ const teardownFunction = () => {
29
+ for (const handle of registeredHandles.keys()) {
30
+ _clearTimeout(handle);
31
+ }
32
+ };
33
+ return {
34
+ setTimeout: harden(_setTimeout),
35
+ clearTimeout: harden(_clearTimeout),
36
+ teardownFunction
37
+ };
38
+ };
39
+ var endowmentModule = {
40
+ names: ["setTimeout", "clearTimeout"],
41
+ factory: createTimeout
42
+ };
43
+ var timeout_default = endowmentModule;
44
+
45
+ export {
46
+ timeout_default
47
+ };
48
+ //# sourceMappingURL=chunk-YC3HWHJV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/endowments/timeout.ts"],"sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\n\nconst MINIMUM_TIMEOUT = 10;\n\n/**\n * Creates a pair of `setTimeout` and `clearTimeout` functions attenuated such\n * that:\n * - `setTimeout` throws if its \"handler\" parameter is not a function.\n * - `clearTimeout` only clears timeouts created by its sibling `setTimeout`,\n * or else no-ops.\n *\n * @returns An object with the attenuated `setTimeout` and `clearTimeout`\n * functions.\n */\nconst createTimeout = () => {\n const registeredHandles = new Map<unknown, unknown>();\n const _setTimeout = (handler: TimerHandler, timeout?: number): unknown => {\n if (typeof handler !== 'function') {\n throw rpcErrors.internal(\n `The timeout handler must be a function. Received: ${typeof handler}.`,\n );\n }\n harden(handler);\n const handle = Object.freeze(Object.create(null));\n const platformHandle = setTimeout(() => {\n registeredHandles.delete(handle);\n handler();\n }, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));\n\n registeredHandles.set(handle, platformHandle);\n return handle;\n };\n\n const _clearTimeout = (handle: unknown): void => {\n const platformHandle = registeredHandles.get(handle);\n if (platformHandle !== undefined) {\n clearTimeout(platformHandle as any);\n registeredHandles.delete(handle);\n }\n };\n\n const teardownFunction = (): void => {\n for (const handle of registeredHandles.keys()) {\n _clearTimeout(handle);\n }\n };\n\n return {\n setTimeout: harden(_setTimeout),\n clearTimeout: harden(_clearTimeout),\n teardownFunction,\n } as const;\n};\n\nconst endowmentModule = {\n names: ['setTimeout', 'clearTimeout'] as const,\n factory: createTimeout,\n};\nexport default endowmentModule;\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,IAAM,kBAAkB;AAYxB,IAAM,gBAAgB,MAAM;AAC1B,QAAM,oBAAoB,oBAAI,IAAsB;AACpD,QAAM,cAAc,CAAC,SAAuB,YAA8B;AACxE,QAAI,OAAO,YAAY,YAAY;AACjC,YAAM,UAAU;AAAA,QACd,qDAAqD,OAAO,OAAO;AAAA,MACrE;AAAA,IACF;AACA,WAAO,OAAO;AACd,UAAM,SAAS,OAAO,OAAO,uBAAO,OAAO,IAAI,CAAC;AAChD,UAAM,iBAAiB,WAAW,MAAM;AACtC,wBAAkB,OAAO,MAAM;AAC/B,cAAQ;AAAA,IACV,GAAG,KAAK,IAAI,iBAAiB,WAAW,CAAC,CAAC;AAE1C,sBAAkB,IAAI,QAAQ,cAAc;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,CAAC,WAA0B;AAC/C,UAAM,iBAAiB,kBAAkB,IAAI,MAAM;AACnD,QAAI,mBAAmB,QAAW;AAChC,mBAAa,cAAqB;AAClC,wBAAkB,OAAO,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAY;AACnC,eAAW,UAAU,kBAAkB,KAAK,GAAG;AAC7C,oBAAc,MAAM;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,YAAY,OAAO,WAAW;AAAA,IAC9B,cAAc,OAAO,aAAa;AAAA,IAClC;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,cAAc,cAAc;AAAA,EACpC,SAAS;AACX;AACA,IAAO,kBAAQ;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-YMAK7TUO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,38 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+ var __accessCheck = (obj, member, msg) => {
9
+ if (!member.has(obj))
10
+ throw TypeError("Cannot " + msg);
11
+ };
12
+ var __privateGet = (obj, member, getter) => {
13
+ __accessCheck(obj, member, "read from private field");
14
+ return getter ? getter.call(obj) : member.get(obj);
15
+ };
16
+ var __privateAdd = (obj, member, value) => {
17
+ if (member.has(obj))
18
+ throw TypeError("Cannot add the same private member more than once");
19
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
20
+ };
21
+ var __privateSet = (obj, member, value, setter) => {
22
+ __accessCheck(obj, member, "write to private field");
23
+ setter ? setter.call(obj, value) : member.set(obj, value);
24
+ return value;
25
+ };
26
+ var __privateMethod = (obj, member, method) => {
27
+ __accessCheck(obj, member, "access private method");
28
+ return method;
29
+ };
30
+
31
+ export {
32
+ __require,
33
+ __privateGet,
34
+ __privateAdd,
35
+ __privateSet,
36
+ __privateMethod
37
+ };
38
+ //# sourceMappingURL=chunk-YRZVIDCF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,38 @@
1
+ import {
2
+ createCrypto
3
+ } from "./chunk-A7NJQLUA.mjs";
4
+ import {
5
+ rootRealmGlobal
6
+ } from "./chunk-Y7IEFWZU.mjs";
7
+
8
+ // src/common/endowments/math.ts
9
+ function createMath() {
10
+ const keys = Object.getOwnPropertyNames(
11
+ rootRealmGlobal.Math
12
+ );
13
+ const math = keys.reduce((target, key) => {
14
+ if (key === "random") {
15
+ return target;
16
+ }
17
+ return { ...target, [key]: rootRealmGlobal.Math[key] };
18
+ }, {});
19
+ const { crypto: hardenedCrypto } = createCrypto();
20
+ return harden({
21
+ Math: {
22
+ ...math,
23
+ random: () => {
24
+ return hardenedCrypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32;
25
+ }
26
+ }
27
+ });
28
+ }
29
+ var endowmentModule = {
30
+ names: ["Math"],
31
+ factory: createMath
32
+ };
33
+ var math_default = endowmentModule;
34
+
35
+ export {
36
+ math_default
37
+ };
38
+ //# sourceMappingURL=chunk-Z7FBBBME.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/endowments/math.ts"],"sourcesContent":["import { rootRealmGlobal } from '../globalObject';\nimport { createCrypto } from './crypto';\n\n/**\n * Create a {@link Math} object, with the same properties as the global\n * {@link Math} object, but with the {@link Math.random} method replaced.\n *\n * @returns The {@link Math} object with the {@link Math.random} method\n * replaced.\n */\nfunction createMath() {\n // `Math` does not work with `Object.keys`, `Object.entries`, etc., so we\n // need to create a new object with the same properties.\n const keys = Object.getOwnPropertyNames(\n rootRealmGlobal.Math,\n ) as (keyof typeof Math)[];\n\n const math = keys.reduce<Partial<Math>>((target, key) => {\n if (key === 'random') {\n return target;\n }\n\n return { ...target, [key]: rootRealmGlobal.Math[key] };\n }, {});\n\n // Since the math endowment requires crypto, we can leverage the crypto endowment factory to get a hardened and platform agnostic instance of webcrypto\n const { crypto: hardenedCrypto } = createCrypto();\n\n return harden({\n Math: {\n ...math,\n random: () => {\n // NOTE: This is not intended to be a secure replacement for the weak\n // random number generator used by `Math.random`. It is only intended to\n // prevent side channel attacks of `Math.random` by replacing it with an\n // alternative implementation that is not vulnerable to the same\n // attacks.\n //\n // This does not mean that this implementation is secure. It is not\n // intended to be used in a security context, and this implementation\n // may change at any time.\n //\n // To securely generate random numbers, use a cryptographically secure\n // random number generator, such as the one provided by the Web Crypto\n // API:\n //\n // - https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey\n // - https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n return hardenedCrypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32;\n },\n },\n });\n}\n\nconst endowmentModule = {\n names: ['Math'] as const,\n factory: createMath,\n};\n\nexport default endowmentModule;\n"],"mappings":";;;;;;;;AAUA,SAAS,aAAa;AAGpB,QAAM,OAAO,OAAO;AAAA,IAClB,gBAAgB;AAAA,EAClB;AAEA,QAAM,OAAO,KAAK,OAAsB,CAAC,QAAQ,QAAQ;AACvD,QAAI,QAAQ,UAAU;AACpB,aAAO;AAAA,IACT;AAEA,WAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,gBAAgB,KAAK,GAAG,EAAE;AAAA,EACvD,GAAG,CAAC,CAAC;AAGL,QAAM,EAAE,QAAQ,eAAe,IAAI,aAAa;AAEhD,SAAO,OAAO;AAAA,IACZ,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ,MAAM;AAiBZ,eAAO,eAAe,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,MAAM;AAAA,EACd,SAAS;AACX;AAEA,IAAO,eAAQ;","names":[]}
@@ -0,0 +1,262 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkCCBKFCGGjs = require('./chunk-CCBKFCGG.js');
4
+
5
+
6
+
7
+
8
+ var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
9
+
10
+ // src/common/endowments/network.ts
11
+ var _utils = require('@metamask/utils');
12
+ var _teardownRef, _ogResponse, _onStart, _onFinish;
13
+ var _ResponseWrapper = class _ResponseWrapper {
14
+ constructor(ogResponse, teardownRef, onStart, onFinish) {
15
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _teardownRef, void 0);
16
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _ogResponse, void 0);
17
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _onStart, void 0);
18
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _onFinish, void 0);
19
+ _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _ogResponse, ogResponse);
20
+ _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _teardownRef, teardownRef);
21
+ _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _onStart, onStart);
22
+ _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _onFinish, onFinish);
23
+ }
24
+ get body() {
25
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).body;
26
+ }
27
+ get bodyUsed() {
28
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).bodyUsed;
29
+ }
30
+ get headers() {
31
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).headers;
32
+ }
33
+ get ok() {
34
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).ok;
35
+ }
36
+ get redirected() {
37
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).redirected;
38
+ }
39
+ get status() {
40
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).status;
41
+ }
42
+ get statusText() {
43
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).statusText;
44
+ }
45
+ get type() {
46
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).type;
47
+ }
48
+ get url() {
49
+ return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).url;
50
+ }
51
+ async text() {
52
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
53
+ (async () => {
54
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart).call(this);
55
+ try {
56
+ return await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).text();
57
+ } finally {
58
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish).call(this);
59
+ }
60
+ })(),
61
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef)
62
+ );
63
+ }
64
+ async arrayBuffer() {
65
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
66
+ (async () => {
67
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart).call(this);
68
+ try {
69
+ return await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).arrayBuffer();
70
+ } finally {
71
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish).call(this);
72
+ }
73
+ })(),
74
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef)
75
+ );
76
+ }
77
+ async blob() {
78
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
79
+ (async () => {
80
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart).call(this);
81
+ try {
82
+ return await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).blob();
83
+ } finally {
84
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish).call(this);
85
+ }
86
+ })(),
87
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef)
88
+ );
89
+ }
90
+ clone() {
91
+ const newResponse = _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).clone();
92
+ return new _ResponseWrapper(
93
+ newResponse,
94
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef),
95
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart),
96
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish)
97
+ );
98
+ }
99
+ async formData() {
100
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
101
+ (async () => {
102
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart).call(this);
103
+ try {
104
+ return await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).formData();
105
+ } finally {
106
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish).call(this);
107
+ }
108
+ })(),
109
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef)
110
+ );
111
+ }
112
+ async json() {
113
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
114
+ (async () => {
115
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onStart).call(this);
116
+ try {
117
+ return await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _ogResponse).json();
118
+ } finally {
119
+ await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _onFinish).call(this);
120
+ }
121
+ })(),
122
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _teardownRef)
123
+ );
124
+ }
125
+ };
126
+ _teardownRef = new WeakMap();
127
+ _ogResponse = new WeakMap();
128
+ _onStart = new WeakMap();
129
+ _onFinish = new WeakMap();
130
+ var ResponseWrapper = _ResponseWrapper;
131
+ var createNetwork = ({ notify } = {}) => {
132
+ _utils.assert.call(void 0, notify, "Notify must be passed to network endowment factory");
133
+ const openConnections = /* @__PURE__ */ new Set();
134
+ const teardownRef = { lastTeardown: 0 };
135
+ const cleanup = new FinalizationRegistry(
136
+ /* istanbul ignore next: can't test garbage collection without modifying node parameters */
137
+ (callback) => callback()
138
+ );
139
+ const _fetch = async (input, init) => {
140
+ const abortController = new AbortController();
141
+ if (_optionalChain([init, 'optionalAccess', _ => _.signal]) !== null && _optionalChain([init, 'optionalAccess', _2 => _2.signal]) !== void 0) {
142
+ const originalSignal = init.signal;
143
+ originalSignal.addEventListener(
144
+ "abort",
145
+ () => {
146
+ abortController.abort(originalSignal.reason);
147
+ },
148
+ { once: true }
149
+ );
150
+ }
151
+ let started = false;
152
+ const onStart = async () => {
153
+ if (!started) {
154
+ started = true;
155
+ await notify({
156
+ method: "OutboundRequest",
157
+ params: { source: "fetch" }
158
+ });
159
+ }
160
+ };
161
+ let finished = false;
162
+ const onFinish = async () => {
163
+ if (!finished) {
164
+ finished = true;
165
+ await notify({
166
+ method: "OutboundResponse",
167
+ params: { source: "fetch" }
168
+ });
169
+ }
170
+ };
171
+ let res;
172
+ let openFetchConnection;
173
+ return await _chunkCCBKFCGGjs.withTeardown.call(void 0,
174
+ (async () => {
175
+ try {
176
+ await notify({
177
+ method: "OutboundRequest",
178
+ params: { source: "fetch" }
179
+ });
180
+ const fetchPromise = fetch(input, {
181
+ ...init,
182
+ signal: abortController.signal
183
+ });
184
+ openFetchConnection = {
185
+ cancel: async () => {
186
+ abortController.abort();
187
+ try {
188
+ await fetchPromise;
189
+ } catch (e) {
190
+ }
191
+ }
192
+ };
193
+ openConnections.add(openFetchConnection);
194
+ res = new ResponseWrapper(
195
+ await fetchPromise,
196
+ teardownRef,
197
+ onStart,
198
+ onFinish
199
+ );
200
+ } finally {
201
+ if (openFetchConnection !== void 0) {
202
+ openConnections.delete(openFetchConnection);
203
+ }
204
+ await notify({
205
+ method: "OutboundResponse",
206
+ params: { source: "fetch" }
207
+ });
208
+ }
209
+ if (res.body !== null) {
210
+ const body = new WeakRef(res.body);
211
+ const openBodyConnection = {
212
+ cancel: (
213
+ /* istanbul ignore next: see it.todo('can be torn down during body read') test */
214
+ async () => {
215
+ try {
216
+ await _optionalChain([body, 'access', _3 => _3.deref, 'call', _4 => _4(), 'optionalAccess', _5 => _5.cancel, 'call', _6 => _6()]);
217
+ } catch (e2) {
218
+ }
219
+ }
220
+ )
221
+ };
222
+ openConnections.add(openBodyConnection);
223
+ cleanup.register(
224
+ res.body,
225
+ /* istanbul ignore next: can't test garbage collection without modifying node parameters */
226
+ () => openConnections.delete(openBodyConnection)
227
+ );
228
+ }
229
+ return harden(res);
230
+ })(),
231
+ teardownRef
232
+ );
233
+ };
234
+ const teardownFunction = async () => {
235
+ teardownRef.lastTeardown += 1;
236
+ const promises = [];
237
+ openConnections.forEach(({ cancel }) => promises.push(cancel()));
238
+ openConnections.clear();
239
+ await Promise.all(promises);
240
+ };
241
+ return {
242
+ fetch: harden(_fetch),
243
+ // Request, Headers and Response are the endowments injected alongside fetch
244
+ // only when 'endowment:network-access' permission is requested,
245
+ // therefore these are hardened as part of fetch dependency injection within its factory.
246
+ // These endowments are not (and should never be) available by default.
247
+ Request: harden(Request),
248
+ Headers: harden(Headers),
249
+ Response: harden(Response),
250
+ teardownFunction
251
+ };
252
+ };
253
+ var endowmentModule = {
254
+ names: ["fetch", "Request", "Headers", "Response"],
255
+ factory: createNetwork
256
+ };
257
+ var network_default = endowmentModule;
258
+
259
+
260
+
261
+ exports.network_default = network_default;
262
+ //# sourceMappingURL=chunk-ZMDJRC2Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/endowments/network.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/utils';\n\nimport { withTeardown } from '../utils';\nimport type { EndowmentFactoryOptions } from './commonEndowmentFactory';\n\n/**\n * This class wraps a Response object.\n * That way, a teardown process can stop any processes left.\n */\nclass ResponseWrapper implements Response {\n readonly #teardownRef: { lastTeardown: number };\n\n #ogResponse: Response;\n\n #onStart: () => Promise<void>;\n\n #onFinish: () => Promise<void>;\n\n constructor(\n ogResponse: Response,\n teardownRef: { lastTeardown: number },\n onStart: () => Promise<void>,\n onFinish: () => Promise<void>,\n ) {\n this.#ogResponse = ogResponse;\n this.#teardownRef = teardownRef;\n this.#onStart = onStart;\n this.#onFinish = onFinish;\n }\n\n get body(): ReadableStream<Uint8Array> | null {\n return this.#ogResponse.body;\n }\n\n get bodyUsed() {\n return this.#ogResponse.bodyUsed;\n }\n\n get headers() {\n return this.#ogResponse.headers;\n }\n\n get ok() {\n return this.#ogResponse.ok;\n }\n\n get redirected() {\n return this.#ogResponse.redirected;\n }\n\n get status() {\n return this.#ogResponse.status;\n }\n\n get statusText() {\n return this.#ogResponse.statusText;\n }\n\n get type() {\n return this.#ogResponse.type;\n }\n\n get url() {\n return this.#ogResponse.url;\n }\n\n async text() {\n return await withTeardown<string>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.text();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n return await withTeardown<ArrayBuffer>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.arrayBuffer();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async blob(): Promise<Blob> {\n return await withTeardown<Blob>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.blob();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n clone(): Response {\n const newResponse = this.#ogResponse.clone();\n return new ResponseWrapper(\n newResponse,\n this.#teardownRef,\n this.#onStart,\n this.#onFinish,\n );\n }\n\n async formData(): Promise<FormData> {\n return await withTeardown<FormData>(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.formData();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n\n async json(): Promise<any> {\n return await withTeardown(\n (async () => {\n await this.#onStart();\n try {\n return await this.#ogResponse.json();\n } finally {\n await this.#onFinish();\n }\n })(),\n this.#teardownRef,\n );\n }\n}\n\n/**\n * Create a network endowment, consisting of a `fetch` function.\n * This allows us to provide a teardown function, so that we can cancel\n * any pending requests, connections, streams, etc. that may be open when a snap\n * is terminated.\n *\n * This wraps the original implementation of `fetch`,\n * to ensure that a bad actor cannot get access to the original function, thus\n * potentially preventing the network requests from being torn down.\n *\n * @param options - An options bag.\n * @param options.notify - A reference to the notify function of the snap executor.\n * @returns An object containing a wrapped `fetch`\n * function, as well as a teardown function.\n */\nconst createNetwork = ({ notify }: EndowmentFactoryOptions = {}) => {\n assert(notify, 'Notify must be passed to network endowment factory');\n // Open fetch calls or open body streams\n const openConnections = new Set<{ cancel: () => Promise<void> }>();\n // Track last teardown count\n const teardownRef = { lastTeardown: 0 };\n\n // Remove items from openConnections after they were garbage collected\n const cleanup = new FinalizationRegistry<() => void>(\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n (callback) => callback(),\n );\n\n const _fetch: typeof fetch = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const abortController = new AbortController();\n if (init?.signal !== null && init?.signal !== undefined) {\n const originalSignal = init.signal;\n // Merge abort controllers\n originalSignal.addEventListener(\n 'abort',\n () => {\n abortController.abort((originalSignal as any).reason);\n },\n { once: true },\n );\n }\n\n let started = false;\n const onStart = async () => {\n if (!started) {\n started = true;\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n }\n };\n\n let finished = false;\n const onFinish = async () => {\n if (!finished) {\n finished = true;\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n };\n\n let res: Response;\n let openFetchConnection: { cancel: () => Promise<void> } | undefined;\n return await withTeardown(\n (async () => {\n try {\n await notify({\n method: 'OutboundRequest',\n params: { source: 'fetch' },\n });\n const fetchPromise = fetch(input, {\n ...init,\n signal: abortController.signal,\n });\n\n openFetchConnection = {\n cancel: async () => {\n abortController.abort();\n try {\n await fetchPromise;\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openFetchConnection);\n\n res = new ResponseWrapper(\n await fetchPromise,\n teardownRef,\n onStart,\n onFinish,\n );\n } finally {\n if (openFetchConnection !== undefined) {\n openConnections.delete(openFetchConnection);\n }\n await notify({\n method: 'OutboundResponse',\n params: { source: 'fetch' },\n });\n }\n\n if (res.body !== null) {\n const body = new WeakRef<ReadableStream>(res.body);\n\n const openBodyConnection = {\n cancel:\n /* istanbul ignore next: see it.todo('can be torn down during body read') test */\n async () => {\n try {\n await body.deref()?.cancel();\n } catch {\n /* do nothing */\n }\n },\n };\n openConnections.add(openBodyConnection);\n cleanup.register(\n res.body,\n /* istanbul ignore next: can't test garbage collection without modifying node parameters */\n () => openConnections.delete(openBodyConnection),\n );\n }\n return harden(res);\n })(),\n teardownRef,\n );\n };\n\n const teardownFunction = async () => {\n teardownRef.lastTeardown += 1;\n const promises: Promise<void>[] = [];\n openConnections.forEach(({ cancel }) => promises.push(cancel()));\n openConnections.clear();\n await Promise.all(promises);\n };\n\n return {\n fetch: harden(_fetch),\n // Request, Headers and Response are the endowments injected alongside fetch\n // only when 'endowment:network-access' permission is requested,\n // therefore these are hardened as part of fetch dependency injection within its factory.\n // These endowments are not (and should never be) available by default.\n Request: harden(Request),\n Headers: harden(Headers),\n Response: harden(Response),\n teardownFunction,\n };\n};\n\nconst endowmentModule = {\n names: ['fetch', 'Request', 'Headers', 'Response'] as const,\n factory: createNetwork,\n};\nexport default endowmentModule;\n"]}
@@ -0,0 +1,26 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkL4G6IIWGjs = require('../chunk-L4G6IIWG.js');
4
+ require('../chunk-IU54VPNO.js');
5
+ require('../chunk-QYFJ2LLW.js');
6
+ require('../chunk-AZCRNZ5W.js');
7
+ require('../chunk-S7LRB72P.js');
8
+ require('../chunk-ZMDJRC2Z.js');
9
+ require('../chunk-LX5LQXYU.js');
10
+ require('../chunk-RO347OMD.js');
11
+ require('../chunk-XMCETCVM.js');
12
+ require('../chunk-EBECHU6M.js');
13
+ require('../chunk-LGC7HQR4.js');
14
+ require('../chunk-IY3CYGH7.js');
15
+ require('../chunk-CCBKFCGG.js');
16
+ require('../chunk-XKY46YTJ.js');
17
+ require('../chunk-AJFPA6MI.js');
18
+ require('../chunk-SWINKAMI.js');
19
+ require('../chunk-5DIRYAYO.js');
20
+ require('../chunk-L5U2LMZR.js');
21
+ require('../chunk-RWBJNNGH.js');
22
+ require('../chunk-EXN2TFDJ.js');
23
+
24
+
25
+ exports.BaseSnapExecutor = _chunkL4G6IIWGjs.BaseSnapExecutor;
26
+ //# sourceMappingURL=BaseSnapExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import {
2
+ BaseSnapExecutor
3
+ } from "../chunk-OW4IXJ5J.mjs";
4
+ import "../chunk-XBKAIK2K.mjs";
5
+ import "../chunk-ETXAWW65.mjs";
6
+ import "../chunk-26EFJQDW.mjs";
7
+ import "../chunk-Z7FBBBME.mjs";
8
+ import "../chunk-XGCWN6ZD.mjs";
9
+ import "../chunk-FQBU72MW.mjs";
10
+ import "../chunk-RCPCISJD.mjs";
11
+ import "../chunk-YC3HWHJV.mjs";
12
+ import "../chunk-MOWPAP2K.mjs";
13
+ import "../chunk-A7NJQLUA.mjs";
14
+ import "../chunk-6GHFAQ54.mjs";
15
+ import "../chunk-GH6FPDY5.mjs";
16
+ import "../chunk-VL3VNUT4.mjs";
17
+ import "../chunk-TVV27HGP.mjs";
18
+ import "../chunk-RDFGQYG6.mjs";
19
+ import "../chunk-BOCIYCLE.mjs";
20
+ import "../chunk-Y7IEFWZU.mjs";
21
+ import "../chunk-FNRATYYY.mjs";
22
+ import "../chunk-YRZVIDCF.mjs";
23
+ export {
24
+ BaseSnapExecutor
25
+ };
26
+ //# sourceMappingURL=BaseSnapExecutor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkAJFPA6MIjs = require('../chunk-AJFPA6MI.js');
5
+ require('../chunk-SWINKAMI.js');
6
+ require('../chunk-EXN2TFDJ.js');
7
+
8
+
9
+
10
+ exports.getCommandMethodImplementations = _chunkAJFPA6MIjs.getCommandMethodImplementations; exports.getHandlerArguments = _chunkAJFPA6MIjs.getHandlerArguments;
11
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import {
2
+ getCommandMethodImplementations,
3
+ getHandlerArguments
4
+ } from "../chunk-TVV27HGP.mjs";
5
+ import "../chunk-RDFGQYG6.mjs";
6
+ import "../chunk-YRZVIDCF.mjs";
7
+ export {
8
+ getCommandMethodImplementations,
9
+ getHandlerArguments
10
+ };
11
+ //# sourceMappingURL=commands.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkQYFJ2LLWjs = require('../../chunk-QYFJ2LLW.js');
4
+ require('../../chunk-AZCRNZ5W.js');
5
+ require('../../chunk-S7LRB72P.js');
6
+ require('../../chunk-ZMDJRC2Z.js');
7
+ require('../../chunk-LX5LQXYU.js');
8
+ require('../../chunk-RO347OMD.js');
9
+ require('../../chunk-XMCETCVM.js');
10
+ require('../../chunk-EBECHU6M.js');
11
+ require('../../chunk-LGC7HQR4.js');
12
+ require('../../chunk-IY3CYGH7.js');
13
+ require('../../chunk-CCBKFCGG.js');
14
+ require('../../chunk-XKY46YTJ.js');
15
+ require('../../chunk-L5U2LMZR.js');
16
+ require('../../chunk-EXN2TFDJ.js');
17
+
18
+
19
+ exports.default = _chunkQYFJ2LLWjs.commonEndowmentFactory_default;
20
+ //# sourceMappingURL=commonEndowmentFactory.js.map