@metamask/snaps-controllers 5.0.1 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/chunk-36YC4Z3T.mjs +109 -0
  3. package/dist/chunk-36YC4Z3T.mjs.map +1 -0
  4. package/dist/chunk-3RNW7OKG.mjs +1 -0
  5. package/dist/chunk-3RNW7OKG.mjs.map +1 -0
  6. package/dist/chunk-43ODL57R.js +39 -0
  7. package/dist/chunk-43ODL57R.js.map +1 -0
  8. package/dist/chunk-4HVWEABQ.mjs +9 -0
  9. package/dist/chunk-4HVWEABQ.mjs.map +1 -0
  10. package/dist/chunk-4LGL4A3M.js +105 -0
  11. package/dist/chunk-4LGL4A3M.js.map +1 -0
  12. package/dist/chunk-4URGXJP7.js +1 -0
  13. package/dist/chunk-4URGXJP7.js.map +1 -0
  14. package/dist/chunk-5R4ENIDN.mjs +2307 -0
  15. package/dist/chunk-5R4ENIDN.mjs.map +1 -0
  16. package/dist/chunk-5YBORD3A.js +19 -0
  17. package/dist/chunk-5YBORD3A.js.map +1 -0
  18. package/dist/chunk-6EZSNS4O.mjs +59 -0
  19. package/dist/chunk-6EZSNS4O.mjs.map +1 -0
  20. package/dist/chunk-6GMWL4JR.mjs +92 -0
  21. package/dist/chunk-6GMWL4JR.mjs.map +1 -0
  22. package/dist/chunk-6N6KZYVD.js +12 -0
  23. package/dist/chunk-6N6KZYVD.js.map +1 -0
  24. package/dist/chunk-6NYC5VNK.mjs +354 -0
  25. package/dist/chunk-6NYC5VNK.mjs.map +1 -0
  26. package/dist/chunk-6XGUJ27X.js +72 -0
  27. package/dist/chunk-6XGUJ27X.js.map +1 -0
  28. package/dist/chunk-6YVCFPP6.mjs +58 -0
  29. package/dist/chunk-6YVCFPP6.mjs.map +1 -0
  30. package/dist/chunk-7JY5VENP.js +273 -0
  31. package/dist/chunk-7JY5VENP.js.map +1 -0
  32. package/dist/chunk-7PZECZV3.mjs +38 -0
  33. package/dist/chunk-7PZECZV3.mjs.map +1 -0
  34. package/dist/chunk-7WOG63YY.js +40 -0
  35. package/dist/chunk-7WOG63YY.js.map +1 -0
  36. package/dist/chunk-7Y6P5FRN.js +60 -0
  37. package/dist/chunk-7Y6P5FRN.js.map +1 -0
  38. package/dist/chunk-A6WJEA3C.js +1 -0
  39. package/dist/chunk-A6WJEA3C.js.map +1 -0
  40. package/dist/chunk-AP7CJ6DA.js +47 -0
  41. package/dist/chunk-AP7CJ6DA.js.map +1 -0
  42. package/dist/chunk-B3UTLNYS.mjs +48 -0
  43. package/dist/chunk-B3UTLNYS.mjs.map +1 -0
  44. package/dist/chunk-B67RDBZ4.mjs +40 -0
  45. package/dist/chunk-B67RDBZ4.mjs.map +1 -0
  46. package/dist/chunk-B7R3EWM3.mjs +1 -0
  47. package/dist/chunk-B7R3EWM3.mjs.map +1 -0
  48. package/dist/chunk-BAEXVO3U.mjs +1 -0
  49. package/dist/chunk-BAEXVO3U.mjs.map +1 -0
  50. package/dist/chunk-BO2ZDPWV.js +59 -0
  51. package/dist/chunk-BO2ZDPWV.js.map +1 -0
  52. package/dist/chunk-C4D6GBMY.js +71 -0
  53. package/dist/chunk-C4D6GBMY.js.map +1 -0
  54. package/dist/chunk-D74XJG2L.js +1 -0
  55. package/dist/chunk-D74XJG2L.js.map +1 -0
  56. package/dist/chunk-DSQYZGBH.mjs +273 -0
  57. package/dist/chunk-DSQYZGBH.mjs.map +1 -0
  58. package/dist/chunk-ESQPQNEF.mjs +1 -0
  59. package/dist/chunk-ESQPQNEF.mjs.map +1 -0
  60. package/dist/chunk-EXN2TFDJ.js +38 -0
  61. package/dist/chunk-EXN2TFDJ.js.map +1 -0
  62. package/dist/chunk-FX5AADOV.mjs +1 -0
  63. package/dist/chunk-FX5AADOV.mjs.map +1 -0
  64. package/dist/chunk-FZY2Z5NP.js +38 -0
  65. package/dist/chunk-FZY2Z5NP.js.map +1 -0
  66. package/dist/chunk-G66GQJS6.js +1 -0
  67. package/dist/chunk-G66GQJS6.js.map +1 -0
  68. package/dist/chunk-G7U6WKWS.mjs +1 -0
  69. package/dist/chunk-G7U6WKWS.mjs.map +1 -0
  70. package/dist/chunk-HOY6NKQR.js +1 -0
  71. package/dist/chunk-HOY6NKQR.js.map +1 -0
  72. package/dist/chunk-HWJE3SDW.mjs +1 -0
  73. package/dist/chunk-HWJE3SDW.mjs.map +1 -0
  74. package/dist/chunk-IABOI7TW.mjs +1 -0
  75. package/dist/chunk-IABOI7TW.mjs.map +1 -0
  76. package/dist/chunk-IGC4E7PI.mjs +71 -0
  77. package/dist/chunk-IGC4E7PI.mjs.map +1 -0
  78. package/dist/chunk-IMBPDTVN.mjs +72 -0
  79. package/dist/chunk-IMBPDTVN.mjs.map +1 -0
  80. package/dist/chunk-J4PGHMLL.js +38 -0
  81. package/dist/chunk-J4PGHMLL.js.map +1 -0
  82. package/dist/chunk-JAUAKTUL.js +1 -0
  83. package/dist/chunk-JAUAKTUL.js.map +1 -0
  84. package/dist/chunk-JDHKH5YU.js +354 -0
  85. package/dist/chunk-JDHKH5YU.js.map +1 -0
  86. package/dist/chunk-JW7WBUL7.js +1 -0
  87. package/dist/chunk-JW7WBUL7.js.map +1 -0
  88. package/dist/chunk-K276CM3B.mjs +197 -0
  89. package/dist/chunk-K276CM3B.mjs.map +1 -0
  90. package/dist/chunk-KBVG3CL2.js +58 -0
  91. package/dist/chunk-KBVG3CL2.js.map +1 -0
  92. package/dist/chunk-KCMULJ2M.mjs +1 -0
  93. package/dist/chunk-KCMULJ2M.mjs.map +1 -0
  94. package/dist/chunk-KF4PCKG7.mjs +74 -0
  95. package/dist/chunk-KF4PCKG7.mjs.map +1 -0
  96. package/dist/chunk-KLK7ZRMH.js +55 -0
  97. package/dist/chunk-KLK7ZRMH.js.map +1 -0
  98. package/dist/chunk-LWBPKSU2.js +48 -0
  99. package/dist/chunk-LWBPKSU2.js.map +1 -0
  100. package/dist/chunk-MYWDTEX2.js +283 -0
  101. package/dist/chunk-MYWDTEX2.js.map +1 -0
  102. package/dist/chunk-NC5PBDKD.mjs +47 -0
  103. package/dist/chunk-NC5PBDKD.mjs.map +1 -0
  104. package/dist/chunk-NOLPMHXS.js +101 -0
  105. package/dist/chunk-NOLPMHXS.js.map +1 -0
  106. package/dist/chunk-NXZVKBSV.js +9 -0
  107. package/dist/chunk-NXZVKBSV.js.map +1 -0
  108. package/dist/chunk-OHMCPTOI.js +1 -0
  109. package/dist/chunk-OHMCPTOI.js.map +1 -0
  110. package/dist/chunk-OIEUL55W.js +1 -0
  111. package/dist/chunk-OIEUL55W.js.map +1 -0
  112. package/dist/chunk-P7Y6MIZW.mjs +7 -0
  113. package/dist/chunk-P7Y6MIZW.mjs.map +1 -0
  114. package/dist/chunk-PGKMKSAR.mjs +105 -0
  115. package/dist/chunk-PGKMKSAR.mjs.map +1 -0
  116. package/dist/chunk-PXECEHH7.mjs +39 -0
  117. package/dist/chunk-PXECEHH7.mjs.map +1 -0
  118. package/dist/chunk-Q2ON6SMV.js +197 -0
  119. package/dist/chunk-Q2ON6SMV.js.map +1 -0
  120. package/dist/chunk-QL3QGUTM.mjs +1 -0
  121. package/dist/chunk-QL3QGUTM.mjs.map +1 -0
  122. package/dist/chunk-RDBT3ZJQ.js +92 -0
  123. package/dist/chunk-RDBT3ZJQ.js.map +1 -0
  124. package/dist/chunk-RIU3ZIXZ.mjs +55 -0
  125. package/dist/chunk-RIU3ZIXZ.mjs.map +1 -0
  126. package/dist/chunk-RU67JKBV.mjs +12 -0
  127. package/dist/chunk-RU67JKBV.mjs.map +1 -0
  128. package/dist/chunk-TG6OXBLR.js +1 -0
  129. package/dist/chunk-TG6OXBLR.js.map +1 -0
  130. package/dist/chunk-TMWMIQV4.js +1 -0
  131. package/dist/chunk-TMWMIQV4.js.map +1 -0
  132. package/dist/chunk-U6T2MPXT.js +74 -0
  133. package/dist/chunk-U6T2MPXT.js.map +1 -0
  134. package/dist/chunk-U74FML7Z.mjs +1 -0
  135. package/dist/chunk-U74FML7Z.mjs.map +1 -0
  136. package/dist/chunk-V6NFZ47P.mjs +1 -0
  137. package/dist/chunk-V6NFZ47P.mjs.map +1 -0
  138. package/dist/chunk-VNOCJWOK.js +1 -0
  139. package/dist/chunk-VNOCJWOK.js.map +1 -0
  140. package/dist/chunk-VOZOZKRC.mjs +101 -0
  141. package/dist/chunk-VOZOZKRC.mjs.map +1 -0
  142. package/dist/chunk-WEY7ICES.js +1 -0
  143. package/dist/chunk-WEY7ICES.js.map +1 -0
  144. package/dist/chunk-WKQRCGUW.mjs +331 -0
  145. package/dist/chunk-WKQRCGUW.mjs.map +1 -0
  146. package/dist/chunk-XE5IWVNV.js +109 -0
  147. package/dist/chunk-XE5IWVNV.js.map +1 -0
  148. package/dist/chunk-XWDEGRM5.js +331 -0
  149. package/dist/chunk-XWDEGRM5.js.map +1 -0
  150. package/dist/chunk-YIQM6ZKA.mjs +19 -0
  151. package/dist/chunk-YIQM6ZKA.mjs.map +1 -0
  152. package/dist/chunk-YRZVIDCF.mjs +38 -0
  153. package/dist/chunk-YRZVIDCF.mjs.map +1 -0
  154. package/dist/chunk-YYPUPKQY.js +7 -0
  155. package/dist/chunk-YYPUPKQY.js.map +1 -0
  156. package/dist/chunk-ZAMIT33L.js +2307 -0
  157. package/dist/chunk-ZAMIT33L.js.map +1 -0
  158. package/dist/chunk-ZETJVFUS.mjs +283 -0
  159. package/dist/chunk-ZETJVFUS.mjs.map +1 -0
  160. package/dist/chunk-ZQAGLOXD.mjs +1 -0
  161. package/dist/chunk-ZQAGLOXD.mjs.map +1 -0
  162. package/dist/chunk-ZRS2VVUV.mjs +38 -0
  163. package/dist/chunk-ZRS2VVUV.mjs.map +1 -0
  164. package/dist/chunk-ZVOYOZFT.mjs +60 -0
  165. package/dist/chunk-ZVOYOZFT.mjs.map +1 -0
  166. package/dist/cronjob/CronjobController.js +41 -0
  167. package/dist/cronjob/CronjobController.js.map +1 -0
  168. package/dist/cronjob/CronjobController.mjs +41 -0
  169. package/dist/cronjob/CronjobController.mjs.map +1 -0
  170. package/dist/cronjob/index.js +41 -0
  171. package/dist/cronjob/index.js.map +1 -0
  172. package/dist/cronjob/index.mjs +41 -0
  173. package/dist/cronjob/index.mjs.map +1 -0
  174. package/dist/fsm.js +10 -0
  175. package/dist/fsm.js.map +1 -0
  176. package/dist/fsm.mjs +10 -0
  177. package/dist/fsm.mjs.map +1 -0
  178. package/dist/index.js +118 -0
  179. package/dist/index.js.map +1 -0
  180. package/dist/index.mjs +118 -0
  181. package/dist/index.mjs.map +1 -0
  182. package/dist/interface/SnapInterfaceController.js +9 -0
  183. package/dist/interface/SnapInterfaceController.js.map +1 -0
  184. package/dist/interface/SnapInterfaceController.mjs +9 -0
  185. package/dist/interface/SnapInterfaceController.mjs.map +1 -0
  186. package/dist/interface/index.js +10 -0
  187. package/dist/interface/index.js.map +1 -0
  188. package/dist/interface/index.mjs +10 -0
  189. package/dist/interface/index.mjs.map +1 -0
  190. package/dist/interface/utils.js +14 -0
  191. package/dist/interface/utils.js.map +1 -0
  192. package/dist/interface/utils.mjs +14 -0
  193. package/dist/interface/utils.mjs.map +1 -0
  194. package/dist/logging.js +8 -0
  195. package/dist/logging.js.map +1 -0
  196. package/dist/logging.mjs +8 -0
  197. package/dist/logging.mjs.map +1 -0
  198. package/dist/node.js +128 -0
  199. package/dist/node.js.map +1 -0
  200. package/dist/node.mjs +128 -0
  201. package/dist/node.mjs.map +1 -0
  202. package/dist/react-native.js +125 -0
  203. package/dist/react-native.js.map +1 -0
  204. package/dist/react-native.mjs +125 -0
  205. package/dist/react-native.mjs.map +1 -0
  206. package/dist/services/AbstractExecutionService.js +13 -0
  207. package/dist/services/AbstractExecutionService.js.map +1 -0
  208. package/dist/services/AbstractExecutionService.mjs +13 -0
  209. package/dist/services/AbstractExecutionService.mjs.map +1 -0
  210. package/dist/services/ExecutionService.js +2 -0
  211. package/dist/services/ExecutionService.js.map +1 -0
  212. package/dist/services/ExecutionService.mjs +2 -0
  213. package/dist/services/ExecutionService.mjs.map +1 -0
  214. package/dist/services/ProxyPostMessageStream.js +8 -0
  215. package/dist/services/ProxyPostMessageStream.js.map +1 -0
  216. package/dist/services/ProxyPostMessageStream.mjs +8 -0
  217. package/dist/services/ProxyPostMessageStream.mjs.map +1 -0
  218. package/dist/services/browser.js +40 -0
  219. package/dist/services/browser.js.map +1 -0
  220. package/dist/services/browser.mjs +40 -0
  221. package/dist/services/browser.mjs.map +1 -0
  222. package/dist/services/iframe/IframeExecutionService.js +12 -0
  223. package/dist/services/iframe/IframeExecutionService.js.map +1 -0
  224. package/dist/services/iframe/IframeExecutionService.mjs +12 -0
  225. package/dist/services/iframe/IframeExecutionService.mjs.map +1 -0
  226. package/dist/services/iframe/index.js +13 -0
  227. package/dist/services/iframe/index.js.map +1 -0
  228. package/dist/services/iframe/index.mjs +13 -0
  229. package/dist/services/iframe/index.mjs.map +1 -0
  230. package/dist/services/index.js +35 -0
  231. package/dist/services/index.js.map +1 -0
  232. package/dist/services/index.mjs +35 -0
  233. package/dist/services/index.mjs.map +1 -0
  234. package/dist/services/node-js/NodeProcessExecutionService.js +22 -0
  235. package/dist/services/node-js/NodeProcessExecutionService.js.map +1 -0
  236. package/dist/services/node-js/NodeProcessExecutionService.mjs +22 -0
  237. package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -0
  238. package/dist/services/node-js/NodeThreadExecutionService.js +22 -0
  239. package/dist/services/node-js/NodeThreadExecutionService.js.map +1 -0
  240. package/dist/services/node-js/NodeThreadExecutionService.mjs +22 -0
  241. package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -0
  242. package/dist/services/node-js/index.js +27 -0
  243. package/dist/services/node-js/index.js.map +1 -0
  244. package/dist/services/node-js/index.mjs +27 -0
  245. package/dist/services/node-js/index.mjs.map +1 -0
  246. package/dist/services/node.js +45 -0
  247. package/dist/services/node.js.map +1 -0
  248. package/dist/services/node.mjs +45 -0
  249. package/dist/services/node.mjs.map +1 -0
  250. package/dist/services/offscreen/OffscreenExecutionService.js +14 -0
  251. package/dist/services/offscreen/OffscreenExecutionService.js.map +1 -0
  252. package/dist/services/offscreen/OffscreenExecutionService.mjs +14 -0
  253. package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -0
  254. package/dist/services/offscreen/index.js +15 -0
  255. package/dist/services/offscreen/index.js.map +1 -0
  256. package/dist/services/offscreen/index.mjs +15 -0
  257. package/dist/services/offscreen/index.mjs.map +1 -0
  258. package/dist/services/proxy/ProxyExecutionService.js +13 -0
  259. package/dist/services/proxy/ProxyExecutionService.js.map +1 -0
  260. package/dist/services/proxy/ProxyExecutionService.mjs +13 -0
  261. package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -0
  262. package/dist/services/react-native.js +42 -0
  263. package/dist/services/react-native.js.map +1 -0
  264. package/dist/services/react-native.mjs +42 -0
  265. package/dist/services/react-native.mjs.map +1 -0
  266. package/dist/services/webview/WebViewExecutionService.js +15 -0
  267. package/dist/services/webview/WebViewExecutionService.js.map +1 -0
  268. package/dist/services/webview/WebViewExecutionService.mjs +15 -0
  269. package/dist/services/webview/WebViewExecutionService.mjs.map +1 -0
  270. package/dist/services/webview/WebViewMessageStream.js +8 -0
  271. package/dist/services/webview/WebViewMessageStream.js.map +1 -0
  272. package/dist/services/webview/WebViewMessageStream.mjs +8 -0
  273. package/dist/services/webview/WebViewMessageStream.mjs.map +1 -0
  274. package/dist/services/webview/index.js +16 -0
  275. package/dist/services/webview/index.js.map +1 -0
  276. package/dist/services/webview/index.mjs +16 -0
  277. package/dist/services/webview/index.mjs.map +1 -0
  278. package/dist/services/webworker/WebWorkerExecutionService.js +15 -0
  279. package/dist/services/webworker/WebWorkerExecutionService.js.map +1 -0
  280. package/dist/services/webworker/WebWorkerExecutionService.mjs +15 -0
  281. package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -0
  282. package/dist/services/webworker/index.js +16 -0
  283. package/dist/services/webworker/index.js.map +1 -0
  284. package/dist/services/webworker/index.mjs +16 -0
  285. package/dist/services/webworker/index.mjs.map +1 -0
  286. package/dist/snaps/RequestQueue.js +8 -0
  287. package/dist/snaps/RequestQueue.js.map +1 -0
  288. package/dist/snaps/RequestQueue.mjs +8 -0
  289. package/dist/snaps/RequestQueue.mjs.map +1 -0
  290. package/dist/snaps/SnapController.js +30 -0
  291. package/dist/snaps/SnapController.js.map +1 -0
  292. package/dist/snaps/SnapController.mjs +30 -0
  293. package/dist/snaps/SnapController.mjs.map +1 -0
  294. package/dist/snaps/Timer.js +8 -0
  295. package/dist/snaps/Timer.js.map +1 -0
  296. package/dist/snaps/Timer.mjs +8 -0
  297. package/dist/snaps/Timer.mjs.map +1 -0
  298. package/dist/snaps/constants.js +8 -0
  299. package/dist/snaps/constants.js.map +1 -0
  300. package/dist/snaps/constants.mjs +8 -0
  301. package/dist/snaps/constants.mjs.map +1 -0
  302. package/dist/snaps/index.js +63 -0
  303. package/dist/snaps/index.js.map +1 -0
  304. package/dist/snaps/index.mjs +63 -0
  305. package/dist/snaps/index.mjs.map +1 -0
  306. package/dist/snaps/location/http.js +8 -0
  307. package/dist/snaps/location/http.js.map +1 -0
  308. package/dist/snaps/location/http.mjs +8 -0
  309. package/dist/snaps/location/http.mjs.map +1 -0
  310. package/dist/snaps/location/index.js +31 -0
  311. package/dist/snaps/location/index.js.map +1 -0
  312. package/dist/snaps/location/index.mjs +31 -0
  313. package/dist/snaps/location/index.mjs.map +1 -0
  314. package/dist/snaps/location/local.js +9 -0
  315. package/dist/snaps/location/local.js.map +1 -0
  316. package/dist/snaps/location/local.mjs +9 -0
  317. package/dist/snaps/location/local.mjs.map +1 -0
  318. package/dist/snaps/location/location.js +11 -0
  319. package/dist/snaps/location/location.js.map +1 -0
  320. package/dist/snaps/location/location.mjs +11 -0
  321. package/dist/snaps/location/location.mjs.map +1 -0
  322. package/dist/snaps/location/npm.js +18 -0
  323. package/dist/snaps/location/npm.js.map +1 -0
  324. package/dist/snaps/location/npm.mjs +18 -0
  325. package/dist/snaps/location/npm.mjs.map +1 -0
  326. package/dist/snaps/registry/index.js +13 -0
  327. package/dist/snaps/registry/index.js.map +1 -0
  328. package/dist/snaps/registry/index.mjs +13 -0
  329. package/dist/snaps/registry/index.mjs.map +1 -0
  330. package/dist/snaps/registry/json.js +9 -0
  331. package/dist/snaps/registry/json.js.map +1 -0
  332. package/dist/snaps/registry/json.mjs +9 -0
  333. package/dist/snaps/registry/json.mjs.map +1 -0
  334. package/dist/snaps/registry/registry.js +8 -0
  335. package/dist/snaps/registry/registry.js.map +1 -0
  336. package/dist/snaps/registry/registry.mjs +8 -0
  337. package/dist/snaps/registry/registry.mjs.map +1 -0
  338. package/dist/snaps/selectors.js +8 -0
  339. package/dist/snaps/selectors.js.map +1 -0
  340. package/dist/snaps/selectors.mjs +8 -0
  341. package/dist/snaps/selectors.mjs.map +1 -0
  342. package/dist/tsconfig.build.tsbuildinfo +1 -0
  343. package/dist/types/node.d.ts +2 -0
  344. package/dist/types/react-native.d.ts +2 -0
  345. package/dist/types/services/index.d.ts +0 -2
  346. package/dist/types/services/node.d.ts +2 -0
  347. package/dist/types/services/react-native.d.ts +2 -0
  348. package/dist/types/utils.d.ts +1 -1
  349. package/dist/types/vendor/global.d.js +1 -0
  350. package/dist/types/vendor/global.d.js.map +1 -0
  351. package/dist/types/vendor/global.d.mjs +1 -0
  352. package/dist/types/vendor/global.d.mjs.map +1 -0
  353. package/dist/types/vendor/readable-stream.d.js +1 -0
  354. package/dist/types/vendor/readable-stream.d.js.map +1 -0
  355. package/dist/types/vendor/readable-stream.d.mjs +1 -0
  356. package/dist/types/vendor/readable-stream.d.mjs.map +1 -0
  357. package/dist/types/vendor/zlib.d.js +1 -0
  358. package/dist/types/vendor/zlib.d.js.map +1 -0
  359. package/dist/types/vendor/zlib.d.mjs +1 -0
  360. package/dist/types/vendor/zlib.d.mjs.map +1 -0
  361. package/dist/utils.js +21 -0
  362. package/dist/utils.js.map +1 -0
  363. package/dist/utils.mjs +21 -0
  364. package/dist/utils.mjs.map +1 -0
  365. package/package.json +31 -22
  366. package/dist/cjs/cronjob/CronjobController.js +0 -296
  367. package/dist/cjs/cronjob/CronjobController.js.map +0 -1
  368. package/dist/cjs/cronjob/index.js +0 -20
  369. package/dist/cjs/cronjob/index.js.map +0 -1
  370. package/dist/cjs/fsm.js +0 -69
  371. package/dist/cjs/fsm.js.map +0 -1
  372. package/dist/cjs/index.js +0 -24
  373. package/dist/cjs/index.js.map +0 -1
  374. package/dist/cjs/interface/SnapInterfaceController.js +0 -166
  375. package/dist/cjs/interface/SnapInterfaceController.js.map +0 -1
  376. package/dist/cjs/interface/index.js +0 -20
  377. package/dist/cjs/interface/index.js.map +0 -1
  378. package/dist/cjs/interface/utils.js +0 -59
  379. package/dist/cjs/interface/utils.js.map +0 -1
  380. package/dist/cjs/logging.js +0 -15
  381. package/dist/cjs/logging.js.map +0 -1
  382. package/dist/cjs/services/AbstractExecutionService.js +0 -387
  383. package/dist/cjs/services/AbstractExecutionService.js.map +0 -1
  384. package/dist/cjs/services/ExecutionService.js +0 -7
  385. package/dist/cjs/services/ExecutionService.js.map +0 -1
  386. package/dist/cjs/services/ProxyPostMessageStream.js +0 -109
  387. package/dist/cjs/services/ProxyPostMessageStream.js.map +0 -1
  388. package/dist/cjs/services/browser.js +0 -33
  389. package/dist/cjs/services/browser.js.map +0 -1
  390. package/dist/cjs/services/iframe/IframeExecutionService.js +0 -54
  391. package/dist/cjs/services/iframe/IframeExecutionService.js.map +0 -1
  392. package/dist/cjs/services/iframe/index.js +0 -20
  393. package/dist/cjs/services/iframe/index.js.map +0 -1
  394. package/dist/cjs/services/index.js +0 -33
  395. package/dist/cjs/services/index.js.map +0 -1
  396. package/dist/cjs/services/node/NodeProcessExecutionService.js +0 -42
  397. package/dist/cjs/services/node/NodeProcessExecutionService.js.map +0 -1
  398. package/dist/cjs/services/node/NodeThreadExecutionService.js +0 -43
  399. package/dist/cjs/services/node/NodeThreadExecutionService.js.map +0 -1
  400. package/dist/cjs/services/node/index.js +0 -21
  401. package/dist/cjs/services/node/index.js.map +0 -1
  402. package/dist/cjs/services/offscreen/OffscreenExecutionService.js +0 -96
  403. package/dist/cjs/services/offscreen/OffscreenExecutionService.js.map +0 -1
  404. package/dist/cjs/services/offscreen/index.js +0 -20
  405. package/dist/cjs/services/offscreen/index.js.map +0 -1
  406. package/dist/cjs/services/proxy/ProxyExecutionService.js +0 -110
  407. package/dist/cjs/services/proxy/ProxyExecutionService.js.map +0 -1
  408. package/dist/cjs/services/webview/WebViewExecutionService.js +0 -99
  409. package/dist/cjs/services/webview/WebViewExecutionService.js.map +0 -1
  410. package/dist/cjs/services/webview/WebViewMessageStream.js +0 -127
  411. package/dist/cjs/services/webview/WebViewMessageStream.js.map +0 -1
  412. package/dist/cjs/services/webview/index.js +0 -20
  413. package/dist/cjs/services/webview/index.js.map +0 -1
  414. package/dist/cjs/services/webworker/WebWorkerExecutionService.js +0 -148
  415. package/dist/cjs/services/webworker/WebWorkerExecutionService.js.map +0 -1
  416. package/dist/cjs/services/webworker/index.js +0 -20
  417. package/dist/cjs/services/webworker/index.js.map +0 -1
  418. package/dist/cjs/snaps/RequestQueue.js +0 -63
  419. package/dist/cjs/snaps/RequestQueue.js.map +0 -1
  420. package/dist/cjs/snaps/SnapController.js +0 -1968
  421. package/dist/cjs/snaps/SnapController.js.map +0 -1
  422. package/dist/cjs/snaps/Timer.js +0 -117
  423. package/dist/cjs/snaps/Timer.js.map +0 -1
  424. package/dist/cjs/snaps/constants.js +0 -25
  425. package/dist/cjs/snaps/constants.js.map +0 -1
  426. package/dist/cjs/snaps/index.js +0 -23
  427. package/dist/cjs/snaps/index.js.map +0 -1
  428. package/dist/cjs/snaps/location/http.js +0 -106
  429. package/dist/cjs/snaps/location/http.js.map +0 -1
  430. package/dist/cjs/snaps/location/index.js +0 -23
  431. package/dist/cjs/snaps/location/index.js.map +0 -1
  432. package/dist/cjs/snaps/location/local.js +0 -93
  433. package/dist/cjs/snaps/location/local.js.map +0 -1
  434. package/dist/cjs/snaps/location/location.js +0 -34
  435. package/dist/cjs/snaps/location/location.js.map +0 -1
  436. package/dist/cjs/snaps/location/npm.js +0 -389
  437. package/dist/cjs/snaps/location/npm.js.map +0 -1
  438. package/dist/cjs/snaps/registry/index.js +0 -21
  439. package/dist/cjs/snaps/registry/index.js.map +0 -1
  440. package/dist/cjs/snaps/registry/json.js +0 -311
  441. package/dist/cjs/snaps/registry/json.js.map +0 -1
  442. package/dist/cjs/snaps/registry/registry.js +0 -18
  443. package/dist/cjs/snaps/registry/registry.js.map +0 -1
  444. package/dist/cjs/snaps/selectors.js +0 -13
  445. package/dist/cjs/snaps/selectors.js.map +0 -1
  446. package/dist/cjs/utils.js +0 -111
  447. package/dist/cjs/utils.js.map +0 -1
  448. package/dist/esm/cronjob/CronjobController.js +0 -281
  449. package/dist/esm/cronjob/CronjobController.js.map +0 -1
  450. package/dist/esm/cronjob/index.js +0 -3
  451. package/dist/esm/cronjob/index.js.map +0 -1
  452. package/dist/esm/fsm.js +0 -70
  453. package/dist/esm/fsm.js.map +0 -1
  454. package/dist/esm/index.js +0 -7
  455. package/dist/esm/index.js.map +0 -1
  456. package/dist/esm/interface/SnapInterfaceController.js +0 -158
  457. package/dist/esm/interface/SnapInterfaceController.js.map +0 -1
  458. package/dist/esm/interface/index.js +0 -3
  459. package/dist/esm/interface/index.js.map +0 -1
  460. package/dist/esm/interface/utils.js +0 -62
  461. package/dist/esm/interface/utils.js.map +0 -1
  462. package/dist/esm/logging.js +0 -10
  463. package/dist/esm/logging.js.map +0 -1
  464. package/dist/esm/services/AbstractExecutionService.js +0 -370
  465. package/dist/esm/services/AbstractExecutionService.js.map +0 -1
  466. package/dist/esm/services/ExecutionService.js +0 -4
  467. package/dist/esm/services/ExecutionService.js.map +0 -1
  468. package/dist/esm/services/ProxyPostMessageStream.js +0 -102
  469. package/dist/esm/services/ProxyPostMessageStream.js.map +0 -1
  470. package/dist/esm/services/browser.js +0 -10
  471. package/dist/esm/services/browser.js.map +0 -1
  472. package/dist/esm/services/iframe/IframeExecutionService.js +0 -44
  473. package/dist/esm/services/iframe/IframeExecutionService.js.map +0 -1
  474. package/dist/esm/services/iframe/index.js +0 -3
  475. package/dist/esm/services/iframe/index.js.map +0 -1
  476. package/dist/esm/services/index.js +0 -10
  477. package/dist/esm/services/index.js.map +0 -1
  478. package/dist/esm/services/node/NodeProcessExecutionService.js +0 -32
  479. package/dist/esm/services/node/NodeProcessExecutionService.js.map +0 -1
  480. package/dist/esm/services/node/NodeThreadExecutionService.js +0 -34
  481. package/dist/esm/services/node/NodeThreadExecutionService.js.map +0 -1
  482. package/dist/esm/services/node/index.js +0 -4
  483. package/dist/esm/services/node/index.js.map +0 -1
  484. package/dist/esm/services/offscreen/OffscreenExecutionService.js +0 -86
  485. package/dist/esm/services/offscreen/OffscreenExecutionService.js.map +0 -1
  486. package/dist/esm/services/offscreen/index.js +0 -3
  487. package/dist/esm/services/offscreen/index.js.map +0 -1
  488. package/dist/esm/services/proxy/ProxyExecutionService.js +0 -100
  489. package/dist/esm/services/proxy/ProxyExecutionService.js.map +0 -1
  490. package/dist/esm/services/webview/WebViewExecutionService.js +0 -89
  491. package/dist/esm/services/webview/WebViewExecutionService.js.map +0 -1
  492. package/dist/esm/services/webview/WebViewMessageStream.js +0 -119
  493. package/dist/esm/services/webview/WebViewMessageStream.js.map +0 -1
  494. package/dist/esm/services/webview/index.js +0 -3
  495. package/dist/esm/services/webview/index.js.map +0 -1
  496. package/dist/esm/services/webworker/WebWorkerExecutionService.js +0 -130
  497. package/dist/esm/services/webworker/WebWorkerExecutionService.js.map +0 -1
  498. package/dist/esm/services/webworker/index.js +0 -3
  499. package/dist/esm/services/webworker/index.js.map +0 -1
  500. package/dist/esm/snaps/RequestQueue.js +0 -53
  501. package/dist/esm/snaps/RequestQueue.js.map +0 -1
  502. package/dist/esm/snaps/SnapController.js +0 -1947
  503. package/dist/esm/snaps/SnapController.js.map +0 -1
  504. package/dist/esm/snaps/Timer.js +0 -107
  505. package/dist/esm/snaps/Timer.js.map +0 -1
  506. package/dist/esm/snaps/constants.js +0 -16
  507. package/dist/esm/snaps/constants.js.map +0 -1
  508. package/dist/esm/snaps/index.js +0 -6
  509. package/dist/esm/snaps/index.js.map +0 -1
  510. package/dist/esm/snaps/location/http.js +0 -96
  511. package/dist/esm/snaps/location/http.js.map +0 -1
  512. package/dist/esm/snaps/location/index.js +0 -6
  513. package/dist/esm/snaps/location/index.js.map +0 -1
  514. package/dist/esm/snaps/location/local.js +0 -83
  515. package/dist/esm/snaps/location/local.js.map +0 -1
  516. package/dist/esm/snaps/location/location.js +0 -30
  517. package/dist/esm/snaps/location/location.js.map +0 -1
  518. package/dist/esm/snaps/location/npm.js +0 -373
  519. package/dist/esm/snaps/location/npm.js.map +0 -1
  520. package/dist/esm/snaps/registry/index.js +0 -4
  521. package/dist/esm/snaps/registry/index.js.map +0 -1
  522. package/dist/esm/snaps/registry/json.js +0 -301
  523. package/dist/esm/snaps/registry/json.js.map +0 -1
  524. package/dist/esm/snaps/registry/registry.js +0 -8
  525. package/dist/esm/snaps/registry/registry.js.map +0 -1
  526. package/dist/esm/snaps/selectors.js +0 -3
  527. package/dist/esm/snaps/selectors.js.map +0 -1
  528. package/dist/esm/utils.js +0 -132
  529. package/dist/esm/utils.js.map +0 -1
  530. /package/dist/types/services/{node → node-js}/NodeProcessExecutionService.d.ts +0 -0
  531. /package/dist/types/services/{node → node-js}/NodeThreadExecutionService.d.ts +0 -0
  532. /package/dist/types/services/{node → node-js}/index.d.ts +0 -0
@@ -0,0 +1,39 @@
1
+ import {
2
+ AbstractExecutionService
3
+ } from "./chunk-6NYC5VNK.mjs";
4
+ import {
5
+ __require
6
+ } from "./chunk-YRZVIDCF.mjs";
7
+
8
+ // src/services/node-js/NodeThreadExecutionService.ts
9
+ import { ThreadParentMessageStream } from "@metamask/post-message-stream";
10
+ import { Worker } from "worker_threads";
11
+ var NodeThreadExecutionService = class extends AbstractExecutionService {
12
+ async initEnvStream() {
13
+ const worker = new Worker(
14
+ __require.resolve(
15
+ "@metamask/snaps-execution-environments/dist/browserify/node-thread/bundle.js"
16
+ ),
17
+ {
18
+ stdout: true,
19
+ stderr: true
20
+ }
21
+ );
22
+ worker.stdout.on("data", (data) => {
23
+ console.log(data.toString());
24
+ });
25
+ worker.stderr.on("data", (data) => {
26
+ console.error(data.toString());
27
+ });
28
+ const stream = new ThreadParentMessageStream({ thread: worker });
29
+ return Promise.resolve({ worker, stream });
30
+ }
31
+ async terminateJob(jobWrapper) {
32
+ await jobWrapper.worker.terminate();
33
+ }
34
+ };
35
+
36
+ export {
37
+ NodeThreadExecutionService
38
+ };
39
+ //# sourceMappingURL=chunk-PXECEHH7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/node-js/NodeThreadExecutionService.ts"],"sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ThreadParentMessageStream } from '@metamask/post-message-stream';\n// eslint-disable-next-line @typescript-eslint/no-shadow\nimport { Worker } from 'worker_threads';\n\nimport type { Job } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeThreadExecutionService extends AbstractExecutionService<Worker> {\n protected async initEnvStream(): Promise<{\n worker: Worker;\n stream: BasePostMessageStream;\n }> {\n const worker = new Worker(\n require.resolve(\n '@metamask/snaps-execution-environments/dist/browserify/node-thread/bundle.js',\n ),\n {\n stdout: true,\n stderr: true,\n },\n );\n\n // Capturing `stdout` and `stderr` from the worker prevents the worker from\n // writing to them directly, making it easier to capture them Jest.\n worker.stdout.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.log(data.toString());\n });\n\n worker.stderr.on('data', (data) => {\n // eslint-disable-next-line no-console\n console.error(data.toString());\n });\n\n const stream = new ThreadParentMessageStream({ thread: worker });\n return Promise.resolve({ worker, stream });\n }\n\n protected async terminateJob(jobWrapper: Job<Worker>): Promise<void> {\n await jobWrapper.worker.terminate();\n }\n}\n"],"mappings":";;;;;;;;AACA,SAAS,iCAAiC;AAE1C,SAAS,cAAc;AAKhB,IAAM,6BAAN,cAAyC,yBAAiC;AAAA,EAC/E,MAAgB,gBAGb;AACD,UAAM,SAAS,IAAI;AAAA,MACjB,UAAQ;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF;AAIA,WAAO,OAAO,GAAG,QAAQ,CAAC,SAAS;AAEjC,cAAQ,IAAI,KAAK,SAAS,CAAC;AAAA,IAC7B,CAAC;AAED,WAAO,OAAO,GAAG,QAAQ,CAAC,SAAS;AAEjC,cAAQ,MAAM,KAAK,SAAS,CAAC;AAAA,IAC/B,CAAC;AAED,UAAM,SAAS,IAAI,0BAA0B,EAAE,QAAQ,OAAO,CAAC;AAC/D,WAAO,QAAQ,QAAQ,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAgB,aAAa,YAAwC;AACnE,UAAM,WAAW,OAAO,UAAU;AAAA,EACpC;AACF;","names":[]}
@@ -0,0 +1,197 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkKLK7ZRMHjs = require('./chunk-KLK7ZRMH.js');
4
+
5
+
6
+
7
+ var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
8
+
9
+ // src/interface/SnapInterfaceController.ts
10
+ var _basecontroller = require('@metamask/base-controller');
11
+
12
+
13
+
14
+ var _snapsutils = require('@metamask/snaps-utils');
15
+ var _utils = require('@metamask/utils');
16
+ var _nanoid = require('nanoid');
17
+ var MAX_UI_CONTENT_SIZE = 25e4;
18
+ var MAX_TEXT_LENGTH = 5e4;
19
+ var controllerName = "SnapInterfaceController";
20
+ var _registerMessageHandlers, registerMessageHandlers_fn, _validateArgs, validateArgs_fn, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn, _checkPhishingList, checkPhishingList_fn, _validateContent, validateContent_fn;
21
+ var SnapInterfaceController = class extends _basecontroller.BaseController {
22
+ constructor({ messenger, state }) {
23
+ super({
24
+ messenger,
25
+ metadata: {
26
+ interfaces: { persist: false, anonymous: false }
27
+ },
28
+ name: controllerName,
29
+ state: { interfaces: {}, ...state }
30
+ });
31
+ /**
32
+ * Constructor helper for registering this controller's messaging system
33
+ * actions.
34
+ */
35
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _registerMessageHandlers);
36
+ /**
37
+ * Utility function to validate the args passed to the other methods.
38
+ *
39
+ * @param snapId - The snap id.
40
+ * @param id - The interface id.
41
+ */
42
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _validateArgs);
43
+ /**
44
+ * Trigger a Phishing list update if needed.
45
+ */
46
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _triggerPhishingListUpdate);
47
+ /**
48
+ * Check an origin against the phishing list.
49
+ *
50
+ * @param origin - The origin to check.
51
+ * @returns True if the origin is on the phishing list, otherwise false.
52
+ */
53
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _checkPhishingList);
54
+ /**
55
+ * Utility function to validate the components of an interface.
56
+ * Throws if something is invalid.
57
+ *
58
+ * Right now this only checks links against the phighing list.
59
+ *
60
+ * @param content - The components to verify.
61
+ */
62
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _validateContent);
63
+ _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
64
+ }
65
+ /**
66
+ * Create an interface in the controller state with the associated data.
67
+ *
68
+ * @param snapId - The snap id that created the interface.
69
+ * @param content - The interface content.
70
+ * @returns The newly interface id.
71
+ */
72
+ async createInterface(snapId, content) {
73
+ await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, content);
74
+ const id = _nanoid.nanoid.call(void 0, );
75
+ const componentState = _chunkKLK7ZRMHjs.constructState.call(void 0, {}, content);
76
+ this.update((draftState) => {
77
+ draftState.interfaces[id] = {
78
+ snapId,
79
+ content,
80
+ state: componentState
81
+ };
82
+ });
83
+ return id;
84
+ }
85
+ /**
86
+ * Get the data of a given interface id.
87
+ *
88
+ * @param snapId - The snap id requesting the interface data.
89
+ * @param id - The interface id.
90
+ * @returns The interface state.
91
+ */
92
+ getInterface(snapId, id) {
93
+ _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateArgs, validateArgs_fn).call(this, snapId, id);
94
+ return this.state.interfaces[id];
95
+ }
96
+ /**
97
+ * Update the interface with the given content.
98
+ *
99
+ * @param snapId - The snap id requesting the update.
100
+ * @param id - The interface id.
101
+ * @param content - The new content.
102
+ */
103
+ async updateInterface(snapId, id, content) {
104
+ _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateArgs, validateArgs_fn).call(this, snapId, id);
105
+ await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _validateContent, validateContent_fn).call(this, content);
106
+ const oldState = this.state.interfaces[id].state;
107
+ const newState = _chunkKLK7ZRMHjs.constructState.call(void 0, oldState, content);
108
+ this.update((draftState) => {
109
+ draftState.interfaces[id].state = newState;
110
+ draftState.interfaces[id].content = content;
111
+ });
112
+ }
113
+ /**
114
+ * Delete an interface from state.
115
+ *
116
+ * @param id - The interface id.
117
+ */
118
+ deleteInterface(id) {
119
+ this.update((draftState) => {
120
+ delete draftState.interfaces[id];
121
+ });
122
+ }
123
+ /**
124
+ * Update the interface state.
125
+ *
126
+ * @param id - The interface id.
127
+ * @param state - The new state.
128
+ */
129
+ updateInterfaceState(id, state) {
130
+ this.update((draftState) => {
131
+ draftState.interfaces[id].state = state;
132
+ });
133
+ }
134
+ };
135
+ _registerMessageHandlers = new WeakSet();
136
+ registerMessageHandlers_fn = function() {
137
+ this.messagingSystem.registerActionHandler(
138
+ `${controllerName}:createInterface`,
139
+ this.createInterface.bind(this)
140
+ );
141
+ this.messagingSystem.registerActionHandler(
142
+ `${controllerName}:getInterface`,
143
+ this.getInterface.bind(this)
144
+ );
145
+ this.messagingSystem.registerActionHandler(
146
+ `${controllerName}:updateInterface`,
147
+ this.updateInterface.bind(this)
148
+ );
149
+ this.messagingSystem.registerActionHandler(
150
+ `${controllerName}:deleteInterface`,
151
+ this.deleteInterface.bind(this)
152
+ );
153
+ this.messagingSystem.registerActionHandler(
154
+ `${controllerName}:updateInterfaceState`,
155
+ this.updateInterfaceState.bind(this)
156
+ );
157
+ };
158
+ _validateArgs = new WeakSet();
159
+ validateArgs_fn = function(snapId, id) {
160
+ const existingInterface = this.state.interfaces[id];
161
+ _utils.assert.call(void 0,
162
+ existingInterface !== void 0,
163
+ `Interface with id '${id}' not found.`
164
+ );
165
+ _utils.assert.call(void 0,
166
+ existingInterface.snapId === snapId,
167
+ `Interface not created by ${snapId}.`
168
+ );
169
+ };
170
+ _triggerPhishingListUpdate = new WeakSet();
171
+ triggerPhishingListUpdate_fn = async function() {
172
+ await this.messagingSystem.call("PhishingController:maybeUpdateState");
173
+ };
174
+ _checkPhishingList = new WeakSet();
175
+ checkPhishingList_fn = function(origin) {
176
+ return this.messagingSystem.call("PhishingController:testOrigin", origin).result;
177
+ };
178
+ _validateContent = new WeakSet();
179
+ validateContent_fn = async function(content) {
180
+ const size = _utils.getJsonSize.call(void 0, content);
181
+ _utils.assert.call(void 0,
182
+ size <= MAX_UI_CONTENT_SIZE,
183
+ `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1e3} kB.`
184
+ );
185
+ const textSize = _snapsutils.getTotalTextLength.call(void 0, content);
186
+ _utils.assert.call(void 0,
187
+ textSize <= MAX_TEXT_LENGTH,
188
+ `The text in a Snap UI may not be larger than ${MAX_TEXT_LENGTH / 1e3} kB.`
189
+ );
190
+ await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn).call(this);
191
+ _snapsutils.validateComponentLinks.call(void 0, content, _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _checkPhishingList, checkPhishingList_fn).bind(this));
192
+ };
193
+
194
+
195
+
196
+ exports.SnapInterfaceController = SnapInterfaceController;
197
+ //# sourceMappingURL=chunk-Q2ON6SMV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interface/SnapInterfaceController.ts"],"names":[],"mappings":";;;;;;;;;AACA,SAAS,sBAAsB;AAM/B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,mBAAmB;AACpC,SAAS,cAAc;AAIvB,IAAM,sBAAsB;AAC5B,IAAM,kBAAkB;AAExB,IAAM,iBAAiB;AAnBvB;AAmFO,IAAM,0BAAN,cAAsC,eAI3C;AAAA,EACA,YAAY,EAAE,WAAW,MAAM,GAAgC;AAC7D,UAAM;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,QACR,YAAY,EAAE,SAAS,OAAO,WAAW,MAAM;AAAA,MACjD;AAAA,MACA,MAAM;AAAA,MACN,OAAO,EAAE,YAAY,CAAC,GAAG,GAAG,MAAM;AAAA,IACpC,CAAC;AASH;AAAA;AAAA;AAAA;AAAA;AAmHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AAAA;AAAA;AAAA,uBAAM;AAUN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAjKJ,0BAAK,sDAAL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwCA,MAAM,gBAAgB,QAAgB,SAAoB;AACxD,UAAM,sBAAK,sCAAL,WAAsB;AAE5B,UAAM,KAAK,OAAO;AAElB,UAAM,iBAAiB,eAAe,CAAC,GAAG,OAAO;AAEjD,SAAK,OAAO,CAAC,eAAe;AAC1B,iBAAW,WAAW,EAAE,IAAI;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,QAAgB,IAAY;AACvC,0BAAK,gCAAL,WAAmB,QAAQ;AAE3B,WAAO,KAAK,MAAM,WAAW,EAAE;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,QAAgB,IAAY,SAAoB;AACpE,0BAAK,gCAAL,WAAmB,QAAQ;AAC3B,UAAM,sBAAK,sCAAL,WAAsB;AAE5B,UAAM,WAAW,KAAK,MAAM,WAAW,EAAE,EAAE;AAE3C,UAAM,WAAW,eAAe,UAAU,OAAO;AAEjD,SAAK,OAAO,CAAC,eAAe;AAC1B,iBAAW,WAAW,EAAE,EAAE,QAAQ;AAClC,iBAAW,WAAW,EAAE,EAAE,UAAU;AAAA,IACtC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAgB,IAAY;AAC1B,SAAK,OAAO,CAAC,eAAe;AAC1B,aAAO,WAAW,WAAW,EAAE;AAAA,IACjC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,qBAAqB,IAAY,OAAuB;AACtD,SAAK,OAAO,CAAC,eAAe;AAC1B,iBAAW,WAAW,EAAE,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH;AAoEF;AA/KE;AAAA,6BAAwB,WAAG;AACzB,OAAK,gBAAgB;AAAA,IACnB,GAAG,cAAc;AAAA,IACjB,KAAK,gBAAgB,KAAK,IAAI;AAAA,EAChC;AAEA,OAAK,gBAAgB;AAAA,IACnB,GAAG,cAAc;AAAA,IACjB,KAAK,aAAa,KAAK,IAAI;AAAA,EAC7B;AAEA,OAAK,gBAAgB;AAAA,IACnB,GAAG,cAAc;AAAA,IACjB,KAAK,gBAAgB,KAAK,IAAI;AAAA,EAChC;AAEA,OAAK,gBAAgB;AAAA,IACnB,GAAG,cAAc;AAAA,IACjB,KAAK,gBAAgB,KAAK,IAAI;AAAA,EAChC;AAEA,OAAK,gBAAgB;AAAA,IACnB,GAAG,cAAc;AAAA,IACjB,KAAK,qBAAqB,KAAK,IAAI;AAAA,EACrC;AACF;AA0FA;AAAA,kBAAa,SAAC,QAAgB,IAAY;AACxC,QAAM,oBAAoB,KAAK,MAAM,WAAW,EAAE;AAElD;AAAA,IACE,sBAAsB;AAAA,IACtB,sBAAsB,EAAE;AAAA,EAC1B;AACA;AAAA,IACE,kBAAkB,WAAW;AAAA,IAC7B,4BAA4B,MAAM;AAAA,EACpC;AACF;AAKM;AAAA,+BAA0B,iBAAG;AACjC,QAAM,KAAK,gBAAgB,KAAK,qCAAqC;AACvE;AAQA;AAAA,uBAAkB,SAAC,QAAgB;AACjC,SAAO,KAAK,gBAAgB,KAAK,iCAAiC,MAAM,EACrE;AACL;AAUM;AAAA,qBAAgB,eAAC,SAAoB;AACzC,QAAM,OAAO,YAAY,OAAO;AAEhC;AAAA,IACE,QAAQ;AAAA,IACR,oCAAoC,sBAAsB,GAAI;AAAA,EAChE;AAEA,QAAM,WAAW,mBAAmB,OAAO;AAE3C;AAAA,IACE,YAAY;AAAA,IACZ,gDACE,kBAAkB,GACpB;AAAA,EACF;AAEA,QAAM,sBAAK,0DAAL;AAEN,yBAAuB,SAAS,sBAAK,0CAAmB,KAAK,IAAI,CAAC;AACpE","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n MaybeUpdateState,\n TestOrigin,\n} from '@metamask/phishing-controller';\nimport type { Component, InterfaceState, SnapId } from '@metamask/snaps-sdk';\nimport {\n getTotalTextLength,\n validateComponentLinks,\n} from '@metamask/snaps-utils';\nimport { assert, getJsonSize } from '@metamask/utils';\nimport { nanoid } from 'nanoid';\n\nimport { constructState } from './utils';\n\nconst MAX_UI_CONTENT_SIZE = 250_000; // 250 kb\nconst MAX_TEXT_LENGTH = 50_000; // 50 kb\n\nconst controllerName = 'SnapInterfaceController';\n\nexport type CreateInterface = {\n type: `${typeof controllerName}:createInterface`;\n handler: SnapInterfaceController['createInterface'];\n};\n\nexport type GetInterface = {\n type: `${typeof controllerName}:getInterface`;\n handler: SnapInterfaceController['getInterface'];\n};\n\nexport type UpdateInterface = {\n type: `${typeof controllerName}:updateInterface`;\n handler: SnapInterfaceController['updateInterface'];\n};\n\nexport type DeleteInterface = {\n type: `${typeof controllerName}:deleteInterface`;\n handler: SnapInterfaceController['deleteInterface'];\n};\n\nexport type UpdateInterfaceState = {\n type: `${typeof controllerName}:updateInterfaceState`;\n handler: SnapInterfaceController['updateInterfaceState'];\n};\n\nexport type SnapInterfaceControllerAllowedActions =\n | TestOrigin\n | MaybeUpdateState;\n\nexport type SnapInterfaceControllerActions =\n | CreateInterface\n | GetInterface\n | UpdateInterface\n | DeleteInterface\n | UpdateInterfaceState;\n\nexport type SnapInterfaceControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions,\n never,\n SnapInterfaceControllerAllowedActions['type'],\n never\n>;\n\nexport type StoredInterface = {\n snapId: SnapId;\n content: Component;\n state: InterfaceState;\n};\n\nexport type SnapInterfaceControllerState = {\n interfaces: Record<string, StoredInterface>;\n};\n\nexport type SnapInterfaceControllerArgs = {\n messenger: SnapInterfaceControllerMessenger;\n state?: SnapInterfaceControllerState;\n};\n\n/**\n * Use this controller to manage snaps UI interfaces using RPC method hooks.\n */\nexport class SnapInterfaceController extends BaseController<\n typeof controllerName,\n SnapInterfaceControllerState,\n SnapInterfaceControllerMessenger\n> {\n constructor({ messenger, state }: SnapInterfaceControllerArgs) {\n super({\n messenger,\n metadata: {\n interfaces: { persist: false, anonymous: false },\n },\n name: controllerName,\n state: { interfaces: {}, ...state },\n });\n\n this.#registerMessageHandlers();\n }\n\n /**\n * Constructor helper for registering this controller's messaging system\n * actions.\n */\n #registerMessageHandlers() {\n this.messagingSystem.registerActionHandler(\n `${controllerName}:createInterface`,\n this.createInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:getInterface`,\n this.getInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterface`,\n this.updateInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:deleteInterface`,\n this.deleteInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterfaceState`,\n this.updateInterfaceState.bind(this),\n );\n }\n\n /**\n * Create an interface in the controller state with the associated data.\n *\n * @param snapId - The snap id that created the interface.\n * @param content - The interface content.\n * @returns The newly interface id.\n */\n async createInterface(snapId: SnapId, content: Component) {\n await this.#validateContent(content);\n\n const id = nanoid();\n\n const componentState = constructState({}, content);\n\n this.update((draftState) => {\n draftState.interfaces[id] = {\n snapId,\n content,\n state: componentState,\n };\n });\n\n return id;\n }\n\n /**\n * Get the data of a given interface id.\n *\n * @param snapId - The snap id requesting the interface data.\n * @param id - The interface id.\n * @returns The interface state.\n */\n getInterface(snapId: SnapId, id: string) {\n this.#validateArgs(snapId, id);\n\n return this.state.interfaces[id];\n }\n\n /**\n * Update the interface with the given content.\n *\n * @param snapId - The snap id requesting the update.\n * @param id - The interface id.\n * @param content - The new content.\n */\n async updateInterface(snapId: SnapId, id: string, content: Component) {\n this.#validateArgs(snapId, id);\n await this.#validateContent(content);\n\n const oldState = this.state.interfaces[id].state;\n\n const newState = constructState(oldState, content);\n\n this.update((draftState) => {\n draftState.interfaces[id].state = newState;\n draftState.interfaces[id].content = content;\n });\n }\n\n /**\n * Delete an interface from state.\n *\n * @param id - The interface id.\n */\n deleteInterface(id: string) {\n this.update((draftState) => {\n delete draftState.interfaces[id];\n });\n }\n\n /**\n * Update the interface state.\n *\n * @param id - The interface id.\n * @param state - The new state.\n */\n updateInterfaceState(id: string, state: InterfaceState) {\n this.update((draftState) => {\n draftState.interfaces[id].state = state;\n });\n }\n\n /**\n * Utility function to validate the args passed to the other methods.\n *\n * @param snapId - The snap id.\n * @param id - The interface id.\n */\n #validateArgs(snapId: SnapId, id: string) {\n const existingInterface = this.state.interfaces[id];\n\n assert(\n existingInterface !== undefined,\n `Interface with id '${id}' not found.`,\n );\n assert(\n existingInterface.snapId === snapId,\n `Interface not created by ${snapId}.`,\n );\n }\n\n /**\n * Trigger a Phishing list update if needed.\n */\n async #triggerPhishingListUpdate() {\n await this.messagingSystem.call('PhishingController:maybeUpdateState');\n }\n\n /**\n * Check an origin against the phishing list.\n *\n * @param origin - The origin to check.\n * @returns True if the origin is on the phishing list, otherwise false.\n */\n #checkPhishingList(origin: string) {\n return this.messagingSystem.call('PhishingController:testOrigin', origin)\n .result;\n }\n\n /**\n * Utility function to validate the components of an interface.\n * Throws if something is invalid.\n *\n * Right now this only checks links against the phighing list.\n *\n * @param content - The components to verify.\n */\n async #validateContent(content: Component) {\n const size = getJsonSize(content);\n\n assert(\n size <= MAX_UI_CONTENT_SIZE,\n `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1000} kB.`,\n );\n\n const textSize = getTotalTextLength(content);\n\n assert(\n textSize <= MAX_TEXT_LENGTH,\n `The text in a Snap UI may not be larger than ${\n MAX_TEXT_LENGTH / 1000\n } kB.`,\n );\n\n await this.#triggerPhishingListUpdate();\n\n validateComponentLinks(content, this.#checkPhishingList.bind(this));\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-QL3QGUTM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,92 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/snaps/location/http.ts
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ var _snapsutils = require('@metamask/snaps-utils');
10
+ var _utils = require('@metamask/utils');
11
+ var HttpLocation = class {
12
+ constructor(url, opts = {}) {
13
+ // We keep contents separate because then we can use only one Blob in cache,
14
+ // which we convert to Uint8Array when actually returning the file.
15
+ //
16
+ // That avoids deepCloning file contents.
17
+ // I imagine ArrayBuffers are copy-on-write optimized, meaning
18
+ // in most often case we'll only have one file contents in common case.
19
+ this.cache = /* @__PURE__ */ new Map();
20
+ _utils.assertStruct.call(void 0, url.toString(), _snapsutils.HttpSnapIdStruct, "Invalid Snap Id: ");
21
+ this.fetchFn = opts.fetch ?? globalThis.fetch.bind(globalThis);
22
+ this.fetchOptions = opts.fetchOptions;
23
+ this.url = url;
24
+ }
25
+ async manifest() {
26
+ if (this.validatedManifest) {
27
+ return this.validatedManifest.clone();
28
+ }
29
+ const canonicalPath = new URL(
30
+ _snapsutils.NpmSnapFileNames.Manifest,
31
+ this.url
32
+ ).toString();
33
+ const response = await this.fetchFn(canonicalPath, this.fetchOptions);
34
+ if (!response.ok) {
35
+ throw new Error(
36
+ `Failed to fetch "${canonicalPath}". Status code: ${response.status}.`
37
+ );
38
+ }
39
+ const contents = await response.text();
40
+ const manifest = _snapsutils.parseJson.call(void 0, contents);
41
+ const vfile = new (0, _snapsutils.VirtualFile)({
42
+ value: contents,
43
+ result: _snapsutils.createSnapManifest.call(void 0, manifest),
44
+ path: _snapsutils.NpmSnapFileNames.Manifest,
45
+ data: { canonicalPath }
46
+ });
47
+ this.validatedManifest = vfile;
48
+ return this.manifest();
49
+ }
50
+ async fetch(path) {
51
+ const relativePath = _snapsutils.normalizeRelative.call(void 0, path);
52
+ const cached = this.cache.get(relativePath);
53
+ if (cached !== void 0) {
54
+ const { file, contents } = cached;
55
+ const value = new Uint8Array(await contents.arrayBuffer());
56
+ const vfile2 = file.clone();
57
+ vfile2.value = value;
58
+ return vfile2;
59
+ }
60
+ const canonicalPath = this.toCanonical(relativePath).toString();
61
+ const response = await this.fetchFn(canonicalPath, this.fetchOptions);
62
+ if (!response.ok) {
63
+ throw new Error(
64
+ `Failed to fetch "${canonicalPath}". Status code: ${response.status}.`
65
+ );
66
+ }
67
+ const vfile = new (0, _snapsutils.VirtualFile)({
68
+ value: "",
69
+ path: relativePath,
70
+ data: { canonicalPath }
71
+ });
72
+ const blob = await response.blob();
73
+ _utils.assert.call(void 0,
74
+ !this.cache.has(relativePath),
75
+ "Corrupted cache, multiple files with same path."
76
+ );
77
+ this.cache.set(relativePath, { file: vfile, contents: blob });
78
+ return this.fetch(relativePath);
79
+ }
80
+ get root() {
81
+ return new URL(this.url);
82
+ }
83
+ toCanonical(path) {
84
+ _utils.assert.call(void 0, !path.startsWith("/"), "Tried to parse absolute path.");
85
+ return new URL(path, this.url);
86
+ }
87
+ };
88
+
89
+
90
+
91
+ exports.HttpLocation = HttpLocation;
92
+ //# sourceMappingURL=chunk-RDBT3ZJQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/snaps/location/http.ts"],"names":["vfile"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,oBAAoB;AAY9B,IAAM,eAAN,MAA2C;AAAA,EAoBhD,YAAY,KAAU,OAAoB,CAAC,GAAG;AAb9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAiB,QAAQ,oBAAI,IAG3B;AAWA,iBAAa,IAAI,SAAS,GAAG,kBAAkB,mBAAmB;AAClE,SAAK,UAAU,KAAK,SAAS,WAAW,MAAM,KAAK,UAAU;AAC7D,SAAK,eAAe,KAAK;AACzB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,MAAM,WAA+C;AACnD,QAAI,KAAK,mBAAmB;AAC1B,aAAO,KAAK,kBAAkB,MAAM;AAAA,IACtC;AAGA,UAAM,gBAAgB,IAAI;AAAA,MACxB,iBAAiB;AAAA,MACjB,KAAK;AAAA,IACP,EAAE,SAAS;AAEX,UAAM,WAAW,MAAM,KAAK,QAAQ,eAAe,KAAK,YAAY;AACpE,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,oBAAoB,aAAa,mBAAmB,SAAS,MAAM;AAAA,MACrE;AAAA,IACF;AACA,UAAM,WAAW,MAAM,SAAS,KAAK;AACrC,UAAM,WAAW,UAAU,QAAQ;AACnC,UAAM,QAAQ,IAAI,YAA0B;AAAA,MAC1C,OAAO;AAAA,MACP,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,MAAM,iBAAiB;AAAA,MACvB,MAAM,EAAE,cAAc;AAAA,IACxB,CAAC;AACD,SAAK,oBAAoB;AAEzB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,MAAM,MAAM,MAAoC;AAC9C,UAAM,eAAe,kBAAkB,IAAI;AAC3C,UAAM,SAAS,KAAK,MAAM,IAAI,YAAY;AAC1C,QAAI,WAAW,QAAW;AACxB,YAAM,EAAE,MAAM,SAAS,IAAI;AAC3B,YAAM,QAAQ,IAAI,WAAW,MAAM,SAAS,YAAY,CAAC;AACzD,YAAMA,SAAQ,KAAK,MAAM;AACzB,MAAAA,OAAM,QAAQ;AACd,aAAOA;AAAA,IACT;AAEA,UAAM,gBAAgB,KAAK,YAAY,YAAY,EAAE,SAAS;AAC9D,UAAM,WAAW,MAAM,KAAK,QAAQ,eAAe,KAAK,YAAY;AACpE,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,oBAAoB,aAAa,mBAAmB,SAAS,MAAM;AAAA,MACrE;AAAA,IACF;AACA,UAAM,QAAQ,IAAI,YAAY;AAAA,MAC5B,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM,EAAE,cAAc;AAAA,IACxB,CAAC;AACD,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC;AAAA,MACE,CAAC,KAAK,MAAM,IAAI,YAAY;AAAA,MAC5B;AAAA,IACF;AACA,SAAK,MAAM,IAAI,cAAc,EAAE,MAAM,OAAO,UAAU,KAAK,CAAC;AAE5D,WAAO,KAAK,MAAM,YAAY;AAAA,EAChC;AAAA,EAEA,IAAI,OAAY;AACd,WAAO,IAAI,IAAI,KAAK,GAAG;AAAA,EACzB;AAAA,EAEQ,YAAY,MAAmB;AACrC,WAAO,CAAC,KAAK,WAAW,GAAG,GAAG,+BAA+B;AAC7D,WAAO,IAAI,IAAI,MAAM,KAAK,GAAG;AAAA,EAC/B;AACF","sourcesContent":["import type { SnapManifest } from '@metamask/snaps-utils';\nimport {\n VirtualFile,\n HttpSnapIdStruct,\n NpmSnapFileNames,\n createSnapManifest,\n normalizeRelative,\n parseJson,\n} from '@metamask/snaps-utils';\nimport { assert, assertStruct } from '@metamask/utils';\n\nimport type { SnapLocation } from './location';\n\nexport interface HttpOptions {\n /**\n * @default fetch\n */\n fetch?: typeof fetch;\n fetchOptions?: RequestInit;\n}\n\nexport class HttpLocation implements SnapLocation {\n // We keep contents separate because then we can use only one Blob in cache,\n // which we convert to Uint8Array when actually returning the file.\n //\n // That avoids deepCloning file contents.\n // I imagine ArrayBuffers are copy-on-write optimized, meaning\n // in most often case we'll only have one file contents in common case.\n private readonly cache = new Map<\n string,\n { file: VirtualFile; contents: Blob }\n >();\n\n private validatedManifest?: VirtualFile<SnapManifest>;\n\n private readonly url: URL;\n\n private readonly fetchFn: typeof fetch;\n\n private readonly fetchOptions?: RequestInit;\n\n constructor(url: URL, opts: HttpOptions = {}) {\n assertStruct(url.toString(), HttpSnapIdStruct, 'Invalid Snap Id: ');\n this.fetchFn = opts.fetch ?? globalThis.fetch.bind(globalThis);\n this.fetchOptions = opts.fetchOptions;\n this.url = url;\n }\n\n async manifest(): Promise<VirtualFile<SnapManifest>> {\n if (this.validatedManifest) {\n return this.validatedManifest.clone();\n }\n\n // jest-fetch-mock doesn't handle new URL(), we need to convert .toString()\n const canonicalPath = new URL(\n NpmSnapFileNames.Manifest,\n this.url,\n ).toString();\n\n const response = await this.fetchFn(canonicalPath, this.fetchOptions);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch \"${canonicalPath}\". Status code: ${response.status}.`,\n );\n }\n const contents = await response.text();\n const manifest = parseJson(contents);\n const vfile = new VirtualFile<SnapManifest>({\n value: contents,\n result: createSnapManifest(manifest),\n path: NpmSnapFileNames.Manifest,\n data: { canonicalPath },\n });\n this.validatedManifest = vfile;\n\n return this.manifest();\n }\n\n async fetch(path: string): Promise<VirtualFile> {\n const relativePath = normalizeRelative(path);\n const cached = this.cache.get(relativePath);\n if (cached !== undefined) {\n const { file, contents } = cached;\n const value = new Uint8Array(await contents.arrayBuffer());\n const vfile = file.clone();\n vfile.value = value;\n return vfile;\n }\n\n const canonicalPath = this.toCanonical(relativePath).toString();\n const response = await this.fetchFn(canonicalPath, this.fetchOptions);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch \"${canonicalPath}\". Status code: ${response.status}.`,\n );\n }\n const vfile = new VirtualFile({\n value: '',\n path: relativePath,\n data: { canonicalPath },\n });\n const blob = await response.blob();\n assert(\n !this.cache.has(relativePath),\n 'Corrupted cache, multiple files with same path.',\n );\n this.cache.set(relativePath, { file: vfile, contents: blob });\n\n return this.fetch(relativePath);\n }\n\n get root(): URL {\n return new URL(this.url);\n }\n\n private toCanonical(path: string): URL {\n assert(!path.startsWith('/'), 'Tried to parse absolute path.');\n return new URL(path, this.url);\n }\n}\n"]}
@@ -0,0 +1,55 @@
1
+ // src/interface/utils.ts
2
+ import { NodeType, assert } from "@metamask/snaps-sdk";
3
+ var constructInputState = (state, component) => {
4
+ return component.value ?? state[component.name] ?? null;
5
+ };
6
+ var constructFormInputState = (state, component, form) => {
7
+ const oldFormState = state[form];
8
+ const oldInputState = oldFormState?.[component.name];
9
+ return component.value ?? oldInputState ?? null;
10
+ };
11
+ var assertNameIsUnique = (state, name) => {
12
+ assert(
13
+ state[name] === void 0,
14
+ `Duplicate component names are not allowed, found multiple instances of: "${name}".`
15
+ );
16
+ };
17
+ var constructState = (oldState, component, newState = {}) => {
18
+ const { type } = component;
19
+ if (type === NodeType.Panel) {
20
+ return component.children.reduce(
21
+ (acc, node) => constructState(oldState, node, acc),
22
+ newState
23
+ );
24
+ }
25
+ if (type === NodeType.Form) {
26
+ assertNameIsUnique(newState, component.name);
27
+ newState[component.name] = component.children.reduce(
28
+ (acc, node) => {
29
+ if (node.type === NodeType.Input) {
30
+ assertNameIsUnique(acc, node.name);
31
+ acc[node.name] = constructFormInputState(
32
+ oldState,
33
+ node,
34
+ component.name
35
+ );
36
+ }
37
+ return acc;
38
+ },
39
+ {}
40
+ );
41
+ }
42
+ if (type === NodeType.Input) {
43
+ assertNameIsUnique(newState, component.name);
44
+ newState[component.name] = constructInputState(oldState, component);
45
+ }
46
+ return newState;
47
+ };
48
+
49
+ export {
50
+ constructInputState,
51
+ constructFormInputState,
52
+ assertNameIsUnique,
53
+ constructState
54
+ };
55
+ //# sourceMappingURL=chunk-RIU3ZIXZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interface/utils.ts"],"sourcesContent":["import { NodeType, assert } from '@metamask/snaps-sdk';\nimport type {\n Component,\n Input,\n FormState,\n InterfaceState,\n} from '@metamask/snaps-sdk';\n\n/**\n * Construct the state for a stray input (not enclosed in a form).\n *\n * @param state - The interface state.\n * @param component - The Input component.\n * @returns The input state.\n */\nexport const constructInputState = (\n state: InterfaceState,\n component: Input,\n) => {\n return component.value ?? state[component.name] ?? null;\n};\n\n/**\n * Construct the state for a form input.\n *\n * Sets the state to either the specified component value, the previous value from the old state or null.\n *\n * @param state - The interface state.\n * @param component - The Input component.\n * @param form - The parent form name of the input.\n * @returns The input state.\n */\nexport const constructFormInputState = (\n state: InterfaceState,\n component: Input,\n form: string,\n) => {\n const oldFormState = state[form] as FormState;\n const oldInputState = oldFormState?.[component.name];\n return component.value ?? oldInputState ?? null;\n};\n\n/**\n * Assert that the component name is unique in state.\n *\n * @param state - The interface state to verify against.\n * @param name - The component name to verify.\n */\nexport const assertNameIsUnique = (state: InterfaceState, name: string) => {\n assert(\n state[name] === undefined,\n `Duplicate component names are not allowed, found multiple instances of: \"${name}\".`,\n );\n};\n\n/**\n * Construct the interface state for a given component tree while preserving values for matching stateful components in the old state.\n *\n * @param oldState - The previous state.\n * @param component - The UI component to construct state from.\n * @param newState - The state that is being constructed.\n * @returns The interface state of the passed component.\n */\nexport const constructState = (\n oldState: InterfaceState,\n component: Component,\n newState: InterfaceState = {},\n): InterfaceState => {\n const { type } = component;\n if (type === NodeType.Panel) {\n return component.children.reduce(\n (acc, node) => constructState(oldState, node, acc),\n newState,\n );\n }\n\n if (type === NodeType.Form) {\n assertNameIsUnique(newState, component.name);\n newState[component.name] = component.children.reduce<FormState>(\n (acc, node) => {\n if (node.type === NodeType.Input) {\n assertNameIsUnique(acc, node.name);\n acc[node.name] = constructFormInputState(\n oldState,\n node,\n component.name,\n );\n }\n\n return acc;\n },\n {},\n );\n }\n\n if (type === NodeType.Input) {\n assertNameIsUnique(newState, component.name);\n newState[component.name] = constructInputState(oldState, component);\n }\n\n return newState;\n};\n"],"mappings":";AAAA,SAAS,UAAU,cAAc;AAe1B,IAAM,sBAAsB,CACjC,OACA,cACG;AACH,SAAO,UAAU,SAAS,MAAM,UAAU,IAAI,KAAK;AACrD;AAYO,IAAM,0BAA0B,CACrC,OACA,WACA,SACG;AACH,QAAM,eAAe,MAAM,IAAI;AAC/B,QAAM,gBAAgB,eAAe,UAAU,IAAI;AACnD,SAAO,UAAU,SAAS,iBAAiB;AAC7C;AAQO,IAAM,qBAAqB,CAAC,OAAuB,SAAiB;AACzE;AAAA,IACE,MAAM,IAAI,MAAM;AAAA,IAChB,4EAA4E,IAAI;AAAA,EAClF;AACF;AAUO,IAAM,iBAAiB,CAC5B,UACA,WACA,WAA2B,CAAC,MACT;AACnB,QAAM,EAAE,KAAK,IAAI;AACjB,MAAI,SAAS,SAAS,OAAO;AAC3B,WAAO,UAAU,SAAS;AAAA,MACxB,CAAC,KAAK,SAAS,eAAe,UAAU,MAAM,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,MAAM;AAC1B,uBAAmB,UAAU,UAAU,IAAI;AAC3C,aAAS,UAAU,IAAI,IAAI,UAAU,SAAS;AAAA,MAC5C,CAAC,KAAK,SAAS;AACb,YAAI,KAAK,SAAS,SAAS,OAAO;AAChC,6BAAmB,KAAK,KAAK,IAAI;AACjC,cAAI,KAAK,IAAI,IAAI;AAAA,YACf;AAAA,YACA;AAAA,YACA,UAAU;AAAA,UACZ;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,OAAO;AAC3B,uBAAmB,UAAU,UAAU,IAAI;AAC3C,aAAS,UAAU,IAAI,IAAI,oBAAoB,UAAU,SAAS;AAAA,EACpE;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,12 @@
1
+ // src/snaps/registry/registry.ts
2
+ var SnapsRegistryStatus = /* @__PURE__ */ ((SnapsRegistryStatus2) => {
3
+ SnapsRegistryStatus2[SnapsRegistryStatus2["Unverified"] = 0] = "Unverified";
4
+ SnapsRegistryStatus2[SnapsRegistryStatus2["Blocked"] = 1] = "Blocked";
5
+ SnapsRegistryStatus2[SnapsRegistryStatus2["Verified"] = 2] = "Verified";
6
+ return SnapsRegistryStatus2;
7
+ })(SnapsRegistryStatus || {});
8
+
9
+ export {
10
+ SnapsRegistryStatus
11
+ };
12
+ //# sourceMappingURL=chunk-RU67JKBV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/snaps/registry/registry.ts"],"sourcesContent":["import type {\n BlockReason,\n SnapsRegistryDatabase,\n} from '@metamask/snaps-registry';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SemVerRange, SemVerVersion } from '@metamask/utils';\n\nexport type SnapsRegistryInfo = { version: SemVerVersion; checksum: string };\nexport type SnapsRegistryRequest = Record<SnapId, SnapsRegistryInfo>;\nexport type SnapsRegistryMetadata =\n SnapsRegistryDatabase['verifiedSnaps'][SnapId]['metadata'];\n\n// TODO: Decide on names for these\nexport enum SnapsRegistryStatus {\n Unverified = 0,\n Blocked = 1,\n Verified = 2,\n}\n\nexport type SnapsRegistryResult = {\n status: SnapsRegistryStatus;\n reason?: BlockReason;\n};\n\nexport type SnapsRegistry = {\n get(\n snaps: SnapsRegistryRequest,\n ): Promise<Record<SnapId, SnapsRegistryResult>>;\n\n update(): Promise<void>;\n\n /**\n * Find an allowlisted version within a specified version range.\n *\n * @param snapId - The ID of the snap we are trying to resolve a version for.\n * @param versionRange - The version range.\n * @param refetch - An optional flag used to determine if we are refetching the registry.\n * @returns An allowlisted version within the specified version range.\n * @throws If an allowlisted version does not exist within the version range.\n */\n resolveVersion(\n snapId: SnapId,\n versionRange: SemVerRange,\n ): Promise<SemVerRange>;\n\n /**\n * Get metadata for the given snap ID.\n *\n * @param snapId - The ID of the snap to get metadata for.\n * @returns The metadata for the given snap ID, or `null` if the snap is not\n * verified.\n */\n getMetadata(snapId: SnapId): Promise<SnapsRegistryMetadata | null>;\n};\n"],"mappings":";AAaO,IAAK,sBAAL,kBAAKA,yBAAL;AACL,EAAAA,0CAAA,gBAAa,KAAb;AACA,EAAAA,0CAAA,aAAU,KAAV;AACA,EAAAA,0CAAA,cAAW,KAAX;AAHU,SAAAA;AAAA,GAAA;","names":["SnapsRegistryStatus"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-TG6OXBLR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-TMWMIQV4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkJDHKH5YUjs = require('./chunk-JDHKH5YU.js');
4
+
5
+
6
+ var _chunk7Y6P5FRNjs = require('./chunk-7Y6P5FRN.js');
7
+
8
+
9
+
10
+
11
+ var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
12
+
13
+ // src/services/proxy/ProxyExecutionService.ts
14
+ var _nanoid = require('nanoid');
15
+ var _stream;
16
+ var ProxyExecutionService = class extends _chunkJDHKH5YUjs.AbstractExecutionService {
17
+ /**
18
+ * Create a new proxy execution service.
19
+ *
20
+ * @param args - The constructor arguments.
21
+ * @param args.messenger - The messenger to use for communication with the
22
+ * `SnapController`.
23
+ * @param args.setupSnapProvider - The function to use to set up the snap
24
+ * provider.
25
+ * @param args.stream - The stream to use for communicating with the proxy
26
+ * executor.
27
+ */
28
+ constructor({
29
+ stream,
30
+ messenger,
31
+ setupSnapProvider
32
+ }) {
33
+ super({
34
+ messenger,
35
+ setupSnapProvider
36
+ });
37
+ _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _stream, void 0);
38
+ _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _stream, stream);
39
+ }
40
+ /**
41
+ * Send a termination command to the proxy stream.
42
+ *
43
+ * @param job - The job to terminate.
44
+ */
45
+ async terminateJob(job) {
46
+ _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _stream).write({
47
+ jobId: job.id,
48
+ data: {
49
+ jsonrpc: "2.0",
50
+ method: "terminateJob",
51
+ id: _nanoid.nanoid.call(void 0, )
52
+ }
53
+ });
54
+ }
55
+ /**
56
+ * Create a new stream for the specified job. This wraps the root stream
57
+ * in a stream specific to the job.
58
+ *
59
+ * @param jobId - The job ID.
60
+ */
61
+ async initEnvStream(jobId) {
62
+ const stream = new (0, _chunk7Y6P5FRNjs.ProxyPostMessageStream)({
63
+ stream: _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _stream),
64
+ jobId
65
+ });
66
+ return { worker: jobId, stream };
67
+ }
68
+ };
69
+ _stream = new WeakMap();
70
+
71
+
72
+
73
+ exports.ProxyExecutionService = ProxyExecutionService;
74
+ //# sourceMappingURL=chunk-U6T2MPXT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/proxy/ProxyExecutionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,SAAS,cAAc;AADvB;AAWO,IAAM,wBAAN,cAAoC,yBAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc1E,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAyC;AACvC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,CAAC;AArBH,uBAAS,SAAT;AAuBE,uBAAK,SAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAgB,aAAa,KAAkB;AAG7C,uBAAK,SAAQ,MAAM;AAAA,MACjB,OAAO,IAAI;AAAA,MACX,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI,OAAO;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAgB,cAAc,OAAe;AAC3C,UAAM,SAAS,IAAI,uBAAuB;AAAA,MACxC,QAAQ,mBAAK;AAAA,MACb;AAAA,IACF,CAAC;AAED,WAAO,EAAE,QAAQ,OAAO,OAAO;AAAA,EACjC;AACF;AA1DW","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { nanoid } from 'nanoid';\n\nimport type { ExecutionServiceArgs, Job } from '../AbstractExecutionService';\nimport { AbstractExecutionService } from '../AbstractExecutionService';\nimport { ProxyPostMessageStream } from '../ProxyPostMessageStream';\n\ntype ProxyExecutionEnvironmentServiceArgs = {\n stream: BasePostMessageStream;\n} & ExecutionServiceArgs;\n\nexport class ProxyExecutionService extends AbstractExecutionService<string> {\n readonly #stream: BasePostMessageStream;\n\n /**\n * Create a new proxy execution service.\n *\n * @param args - The constructor arguments.\n * @param args.messenger - The messenger to use for communication with the\n * `SnapController`.\n * @param args.setupSnapProvider - The function to use to set up the snap\n * provider.\n * @param args.stream - The stream to use for communicating with the proxy\n * executor.\n */\n constructor({\n stream,\n messenger,\n setupSnapProvider,\n }: ProxyExecutionEnvironmentServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n });\n\n this.#stream = stream;\n }\n\n /**\n * Send a termination command to the proxy stream.\n *\n * @param job - The job to terminate.\n */\n protected async terminateJob(job: Job<string>) {\n // The `AbstractExecutionService` will have already closed the job stream,\n // so we write to the runtime stream directly.\n this.#stream.write({\n jobId: job.id,\n data: {\n jsonrpc: '2.0',\n method: 'terminateJob',\n id: nanoid(),\n },\n });\n }\n\n /**\n * Create a new stream for the specified job. This wraps the root stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n const stream = new ProxyPostMessageStream({\n stream: this.#stream,\n jobId,\n });\n\n return { worker: jobId, stream };\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-U74FML7Z.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-V6NFZ47P.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-VNOCJWOK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}