@metamask/snaps-controllers 5.0.0 → 6.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 (532) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/chunk-26FZJGWA.mjs +331 -0
  3. package/dist/chunk-26FZJGWA.mjs.map +1 -0
  4. package/dist/chunk-2SSKLA6H.mjs +47 -0
  5. package/dist/chunk-2SSKLA6H.mjs.map +1 -0
  6. package/dist/chunk-2WWTILPZ.js +101 -0
  7. package/dist/chunk-2WWTILPZ.js.map +1 -0
  8. package/dist/chunk-35RVMQQU.mjs +283 -0
  9. package/dist/chunk-35RVMQQU.mjs.map +1 -0
  10. package/dist/chunk-3EJ6JINY.mjs +1 -0
  11. package/dist/chunk-3EJ6JINY.mjs.map +1 -0
  12. package/dist/chunk-3RXU6FL7.js +354 -0
  13. package/dist/chunk-3RXU6FL7.js.map +1 -0
  14. package/dist/chunk-3ZTS7EYA.mjs +109 -0
  15. package/dist/chunk-3ZTS7EYA.mjs.map +1 -0
  16. package/dist/chunk-4ICLRPDE.mjs +354 -0
  17. package/dist/chunk-4ICLRPDE.mjs.map +1 -0
  18. package/dist/chunk-4X5GUCI4.js +1 -0
  19. package/dist/chunk-4X5GUCI4.js.map +1 -0
  20. package/dist/chunk-5526GKFY.mjs +101 -0
  21. package/dist/chunk-5526GKFY.mjs.map +1 -0
  22. package/dist/chunk-57XSIYLY.mjs +9 -0
  23. package/dist/chunk-57XSIYLY.mjs.map +1 -0
  24. package/dist/chunk-5AOHJSZ6.mjs +40 -0
  25. package/dist/chunk-5AOHJSZ6.mjs.map +1 -0
  26. package/dist/chunk-5JX3PHKY.mjs +7 -0
  27. package/dist/chunk-5JX3PHKY.mjs.map +1 -0
  28. package/dist/chunk-5UJDZGAF.mjs +19 -0
  29. package/dist/chunk-5UJDZGAF.mjs.map +1 -0
  30. package/dist/chunk-66XO4TRY.js +9 -0
  31. package/dist/chunk-66XO4TRY.js.map +1 -0
  32. package/dist/chunk-6I34XHMY.mjs +1 -0
  33. package/dist/chunk-6I34XHMY.mjs.map +1 -0
  34. package/dist/chunk-6JQAGWUX.mjs +2307 -0
  35. package/dist/chunk-6JQAGWUX.mjs.map +1 -0
  36. package/dist/chunk-6RHMHULS.js +7 -0
  37. package/dist/chunk-6RHMHULS.js.map +1 -0
  38. package/dist/chunk-7LDJN7LU.js +283 -0
  39. package/dist/chunk-7LDJN7LU.js.map +1 -0
  40. package/dist/chunk-7W4BE27D.mjs +1 -0
  41. package/dist/chunk-7W4BE27D.mjs.map +1 -0
  42. package/dist/chunk-A7QA5OIN.js +1 -0
  43. package/dist/chunk-A7QA5OIN.js.map +1 -0
  44. package/dist/chunk-AR5J3IYZ.js +1 -0
  45. package/dist/chunk-AR5J3IYZ.js.map +1 -0
  46. package/dist/chunk-BEEH4ZXK.js +1 -0
  47. package/dist/chunk-BEEH4ZXK.js.map +1 -0
  48. package/dist/chunk-BFD5P2VB.mjs +12 -0
  49. package/dist/chunk-BFD5P2VB.mjs.map +1 -0
  50. package/dist/chunk-BGJPFPCH.js +109 -0
  51. package/dist/chunk-BGJPFPCH.js.map +1 -0
  52. package/dist/chunk-BKAYI3FB.js +74 -0
  53. package/dist/chunk-BKAYI3FB.js.map +1 -0
  54. package/dist/chunk-BMLPPIKQ.js +38 -0
  55. package/dist/chunk-BMLPPIKQ.js.map +1 -0
  56. package/dist/chunk-BMNPP53N.js +1 -0
  57. package/dist/chunk-BMNPP53N.js.map +1 -0
  58. package/dist/chunk-BUPF6RN3.mjs +1 -0
  59. package/dist/chunk-BUPF6RN3.mjs.map +1 -0
  60. package/dist/chunk-DC3KUFAP.mjs +58 -0
  61. package/dist/chunk-DC3KUFAP.mjs.map +1 -0
  62. package/dist/chunk-DLLH2SFQ.js +19 -0
  63. package/dist/chunk-DLLH2SFQ.js.map +1 -0
  64. package/dist/chunk-DQPMF4WI.mjs +1 -0
  65. package/dist/chunk-DQPMF4WI.mjs.map +1 -0
  66. package/dist/chunk-DX3JFCRL.mjs +72 -0
  67. package/dist/chunk-DX3JFCRL.mjs.map +1 -0
  68. package/dist/chunk-E5PSKNI7.js +1 -0
  69. package/dist/chunk-E5PSKNI7.js.map +1 -0
  70. package/dist/chunk-EXN2TFDJ.js +38 -0
  71. package/dist/chunk-EXN2TFDJ.js.map +1 -0
  72. package/dist/chunk-F62W2GSZ.js +47 -0
  73. package/dist/chunk-F62W2GSZ.js.map +1 -0
  74. package/dist/chunk-FD37BGB7.mjs +1 -0
  75. package/dist/chunk-FD37BGB7.mjs.map +1 -0
  76. package/dist/chunk-FYDIMXGD.mjs +71 -0
  77. package/dist/chunk-FYDIMXGD.mjs.map +1 -0
  78. package/dist/chunk-H3QD2CYQ.mjs +38 -0
  79. package/dist/chunk-H3QD2CYQ.mjs.map +1 -0
  80. package/dist/chunk-I6HMKVV3.js +48 -0
  81. package/dist/chunk-I6HMKVV3.js.map +1 -0
  82. package/dist/chunk-IEFJGFVV.mjs +1 -0
  83. package/dist/chunk-IEFJGFVV.mjs.map +1 -0
  84. package/dist/chunk-J35UUTXN.mjs +1 -0
  85. package/dist/chunk-J35UUTXN.mjs.map +1 -0
  86. package/dist/chunk-JBMTTZHS.js +1 -0
  87. package/dist/chunk-JBMTTZHS.js.map +1 -0
  88. package/dist/chunk-JFXRELU2.mjs +39 -0
  89. package/dist/chunk-JFXRELU2.mjs.map +1 -0
  90. package/dist/chunk-JPJ2F22U.mjs +38 -0
  91. package/dist/chunk-JPJ2F22U.mjs.map +1 -0
  92. package/dist/chunk-KDQ6OXVG.js +39 -0
  93. package/dist/chunk-KDQ6OXVG.js.map +1 -0
  94. package/dist/chunk-KET5WAIE.mjs +1 -0
  95. package/dist/chunk-KET5WAIE.mjs.map +1 -0
  96. package/dist/chunk-KF6HZNN4.js +1 -0
  97. package/dist/chunk-KF6HZNN4.js.map +1 -0
  98. package/dist/chunk-LANLSIYZ.mjs +74 -0
  99. package/dist/chunk-LANLSIYZ.mjs.map +1 -0
  100. package/dist/chunk-LFWLV3SS.js +273 -0
  101. package/dist/chunk-LFWLV3SS.js.map +1 -0
  102. package/dist/chunk-MJOLPPQK.mjs +105 -0
  103. package/dist/chunk-MJOLPPQK.mjs.map +1 -0
  104. package/dist/chunk-N3MAPSR3.js +197 -0
  105. package/dist/chunk-N3MAPSR3.js.map +1 -0
  106. package/dist/chunk-NAJQX2WM.mjs +55 -0
  107. package/dist/chunk-NAJQX2WM.mjs.map +1 -0
  108. package/dist/chunk-NDOKX4CC.js +58 -0
  109. package/dist/chunk-NDOKX4CC.js.map +1 -0
  110. package/dist/chunk-NKMIKK4P.js +71 -0
  111. package/dist/chunk-NKMIKK4P.js.map +1 -0
  112. package/dist/chunk-NSOTRW3O.mjs +1 -0
  113. package/dist/chunk-NSOTRW3O.mjs.map +1 -0
  114. package/dist/chunk-OJ2YAMFL.mjs +1 -0
  115. package/dist/chunk-OJ2YAMFL.mjs.map +1 -0
  116. package/dist/chunk-OPH3RY2U.mjs +60 -0
  117. package/dist/chunk-OPH3RY2U.mjs.map +1 -0
  118. package/dist/chunk-OUYEWVXP.js +331 -0
  119. package/dist/chunk-OUYEWVXP.js.map +1 -0
  120. package/dist/chunk-OYSDB7WV.js +60 -0
  121. package/dist/chunk-OYSDB7WV.js.map +1 -0
  122. package/dist/chunk-OZPD234W.js +55 -0
  123. package/dist/chunk-OZPD234W.js.map +1 -0
  124. package/dist/chunk-SREHPG7K.js +40 -0
  125. package/dist/chunk-SREHPG7K.js.map +1 -0
  126. package/dist/chunk-U7REZSMO.js +1 -0
  127. package/dist/chunk-U7REZSMO.js.map +1 -0
  128. package/dist/chunk-UMS7NV46.mjs +59 -0
  129. package/dist/chunk-UMS7NV46.mjs.map +1 -0
  130. package/dist/chunk-V5F3LOTD.js +2307 -0
  131. package/dist/chunk-V5F3LOTD.js.map +1 -0
  132. package/dist/chunk-VADTO25Q.js +12 -0
  133. package/dist/chunk-VADTO25Q.js.map +1 -0
  134. package/dist/chunk-VK6JW7XB.js +1 -0
  135. package/dist/chunk-VK6JW7XB.js.map +1 -0
  136. package/dist/chunk-VZD5REFA.js +72 -0
  137. package/dist/chunk-VZD5REFA.js.map +1 -0
  138. package/dist/chunk-W6RU3LZS.mjs +1 -0
  139. package/dist/chunk-W6RU3LZS.mjs.map +1 -0
  140. package/dist/chunk-WCLBWRFH.js +1 -0
  141. package/dist/chunk-WCLBWRFH.js.map +1 -0
  142. package/dist/chunk-WFWBAJSP.js +38 -0
  143. package/dist/chunk-WFWBAJSP.js.map +1 -0
  144. package/dist/chunk-WMOR2T45.js +1 -0
  145. package/dist/chunk-WMOR2T45.js.map +1 -0
  146. package/dist/chunk-WUAYTNK4.mjs +92 -0
  147. package/dist/chunk-WUAYTNK4.mjs.map +1 -0
  148. package/dist/chunk-X57FJ67O.mjs +197 -0
  149. package/dist/chunk-X57FJ67O.mjs.map +1 -0
  150. package/dist/chunk-XEITRX5U.js +59 -0
  151. package/dist/chunk-XEITRX5U.js.map +1 -0
  152. package/dist/chunk-XQ2TCH36.mjs +48 -0
  153. package/dist/chunk-XQ2TCH36.mjs.map +1 -0
  154. package/dist/chunk-XW3CYXPK.js +105 -0
  155. package/dist/chunk-XW3CYXPK.js.map +1 -0
  156. package/dist/chunk-YRZVIDCF.mjs +38 -0
  157. package/dist/chunk-YRZVIDCF.mjs.map +1 -0
  158. package/dist/chunk-YYBXAUVN.js +1 -0
  159. package/dist/chunk-YYBXAUVN.js.map +1 -0
  160. package/dist/chunk-Z7J4BWYY.mjs +1 -0
  161. package/dist/chunk-Z7J4BWYY.mjs.map +1 -0
  162. package/dist/chunk-ZQHMLI2N.mjs +273 -0
  163. package/dist/chunk-ZQHMLI2N.mjs.map +1 -0
  164. package/dist/chunk-ZRHUHKGT.js +92 -0
  165. package/dist/chunk-ZRHUHKGT.js.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 +32 -23
  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 -306
  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 -296
  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 @@
1
+ {"version":3,"sources":["../src/cronjob/CronjobController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { GetPermissions } from '@metamask/permission-controller';\nimport {\n getCronjobCaveatJobs,\n SnapEndowments,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type {\n TruncatedSnap,\n CronjobSpecification,\n} from '@metamask/snaps-utils';\nimport {\n HandlerType,\n parseCronExpression,\n logError,\n} from '@metamask/snaps-utils';\nimport { Duration, inMilliseconds } from '@metamask/utils';\n\nimport type {\n GetAllSnaps,\n HandleSnapRequest,\n SnapDisabled,\n SnapEnabled,\n SnapInstalled,\n SnapUninstalled,\n SnapUpdated,\n} from '..';\nimport { getRunnableSnaps } from '..';\nimport { Timer } from '../snaps/Timer';\n\nexport type CronjobControllerActions =\n | GetAllSnaps\n | HandleSnapRequest\n | GetPermissions;\n\nexport type CronjobControllerEvents =\n | SnapInstalled\n | SnapUninstalled\n | SnapUpdated\n | SnapEnabled\n | SnapDisabled;\n\nexport type CronjobControllerMessenger = RestrictedControllerMessenger<\n 'CronjobController',\n CronjobControllerActions,\n CronjobControllerEvents,\n CronjobControllerActions['type'],\n CronjobControllerEvents['type']\n>;\n\nexport const DAILY_TIMEOUT = inMilliseconds(24, Duration.Hour);\n\nexport type CronjobControllerArgs = {\n messenger: CronjobControllerMessenger;\n /**\n * Persisted state that will be used for rehydration.\n */\n state?: CronjobControllerState;\n};\n\nexport type Cronjob = {\n timer?: Timer;\n id: string;\n snapId: SnapId;\n} & CronjobSpecification;\n\nexport type StoredJobInformation = {\n lastRun: number;\n};\n\nexport type CronjobControllerState = {\n jobs: Record<string, StoredJobInformation>;\n};\n\nconst controllerName = 'CronjobController';\n\n/**\n * Use this controller to register and schedule periodically executed jobs\n * using RPC method hooks.\n */\nexport class CronjobController extends BaseController<\n typeof controllerName,\n CronjobControllerState,\n CronjobControllerMessenger\n> {\n #messenger: CronjobControllerMessenger;\n\n #dailyTimer!: Timer;\n\n #timers: Map<string, Timer>;\n\n // Mapping from jobId to snapId\n #snapIds: Map<string, string>;\n\n constructor({ messenger, state }: CronjobControllerArgs) {\n super({\n messenger,\n metadata: {\n jobs: { persist: true, anonymous: false },\n },\n name: controllerName,\n state: {\n jobs: {},\n ...state,\n },\n });\n this.#timers = new Map();\n this.#snapIds = new Map();\n this.#messenger = messenger;\n\n this._handleSnapRegisterEvent = this._handleSnapRegisterEvent.bind(this);\n this._handleSnapUnregisterEvent =\n this._handleSnapUnregisterEvent.bind(this);\n this._handleEventSnapUpdated = this._handleEventSnapUpdated.bind(this);\n\n // Subscribe to Snap events\n /* eslint-disable @typescript-eslint/unbound-method */\n this.messagingSystem.subscribe(\n 'SnapController:snapInstalled',\n this._handleSnapRegisterEvent,\n );\n\n this.messagingSystem.subscribe(\n 'SnapController:snapUninstalled',\n this._handleSnapUnregisterEvent,\n );\n\n this.messagingSystem.subscribe(\n 'SnapController:snapEnabled',\n this._handleSnapRegisterEvent,\n );\n\n this.messagingSystem.subscribe(\n 'SnapController:snapDisabled',\n this._handleSnapUnregisterEvent,\n );\n\n this.messagingSystem.subscribe(\n 'SnapController:snapUpdated',\n this._handleEventSnapUpdated,\n );\n /* eslint-enable @typescript-eslint/unbound-method */\n\n this.dailyCheckIn().catch((error) => {\n logError(error);\n });\n }\n\n /**\n * Retrieve all cronjob specifications for all runnable snaps.\n *\n * @returns Array of Cronjob specifications.\n */\n private getAllJobs(): Cronjob[] {\n const snaps = this.messagingSystem.call('SnapController:getAll');\n const filteredSnaps = getRunnableSnaps(snaps);\n\n const jobs = filteredSnaps.map((snap) => this.getSnapJobs(snap.id));\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return jobs.flat().filter((job) => job !== undefined) as Cronjob[];\n }\n\n /**\n * Retrieve all Cronjob specifications for a Snap.\n *\n * @param snapId - ID of a Snap.\n * @returns Array of Cronjob specifications.\n */\n private getSnapJobs(snapId: SnapId): Cronjob[] | undefined {\n const permissions = this.#messenger.call(\n 'PermissionController:getPermissions',\n snapId,\n );\n\n const permission = permissions?.[SnapEndowments.Cronjob];\n const definitions = getCronjobCaveatJobs(permission);\n\n return definitions?.map((definition, idx) => {\n return { ...definition, id: `${snapId}-${idx}`, snapId };\n });\n }\n\n /**\n * Register cron jobs for a given snap by getting specification from a permission caveats.\n * Once registered, each job will be scheduled.\n *\n * @param snapId - ID of a snap.\n */\n register(snapId: SnapId) {\n const jobs = this.getSnapJobs(snapId);\n jobs?.forEach((job) => this.schedule(job));\n }\n\n /**\n * Schedule a new job.\n * This will interpret the cron expression and tell the timer to execute the job\n * at the next suitable point in time.\n * Job last run state will be initialized afterwards.\n *\n * Note: Schedule will be skipped if the job's execution time is too far in the future and\n * will be revisited on a daily check.\n *\n * @param job - Cronjob specification.\n */\n private schedule(job: Cronjob) {\n if (this.#timers.has(job.id)) {\n return;\n }\n\n const parsed = parseCronExpression(job.expression);\n const next = parsed.next();\n const now = new Date();\n const ms = next.getTime() - now.getTime();\n\n // Don't schedule this job yet as it is too far in the future\n if (ms > DAILY_TIMEOUT) {\n return;\n }\n\n const timer = new Timer(ms);\n timer.start(() => {\n this.executeCronjob(job).catch((error) => {\n // TODO: Decide how to handle errors.\n logError(error);\n });\n\n this.#timers.delete(job.id);\n this.schedule(job);\n });\n\n if (!this.state.jobs[job.id]?.lastRun) {\n this.updateJobLastRunState(job.id, 0); // 0 for init, never ran actually\n }\n\n this.#timers.set(job.id, timer);\n this.#snapIds.set(job.id, job.snapId);\n }\n\n /**\n * Execute job.\n *\n * @param job - Cronjob specification.\n */\n private async executeCronjob(job: Cronjob) {\n this.updateJobLastRunState(job.id, Date.now());\n await this.#messenger.call('SnapController:handleRequest', {\n snapId: job.snapId,\n origin: '',\n handler: HandlerType.OnCronjob,\n request: job.request,\n });\n }\n\n /**\n * Unregister all jobs related to the given snapId.\n *\n * @param snapId - ID of a snap.\n */\n unregister(snapId: string) {\n const jobs = [...this.#snapIds.entries()].filter(\n ([_, jobSnapId]) => jobSnapId === snapId,\n );\n\n if (jobs.length) {\n jobs.forEach(([id]) => {\n const timer = this.#timers.get(id);\n if (timer) {\n timer.cancel();\n this.#timers.delete(id);\n this.#snapIds.delete(id);\n }\n });\n }\n }\n\n /**\n * Update time of a last run for the Cronjob specified by ID.\n *\n * @param jobId - ID of a cron job.\n * @param lastRun - Unix timestamp when the job was last ran.\n */\n private updateJobLastRunState(jobId: string, lastRun: number) {\n this.update((state) => {\n state.jobs[jobId] = {\n lastRun,\n };\n });\n }\n\n /**\n * Runs every 24 hours to check if new jobs need to be scheduled.\n *\n * This is necessary for longer running jobs that execute with more than 24 hours between them.\n */\n async dailyCheckIn() {\n const jobs = this.getAllJobs();\n\n for (const job of jobs) {\n const parsed = parseCronExpression(job.expression);\n const lastRun = this.state.jobs[job.id]?.lastRun;\n // If a job was supposed to run while we were shut down but wasn't we run it now\n if (\n lastRun !== undefined &&\n parsed.hasPrev() &&\n parsed.prev().getTime() > lastRun\n ) {\n await this.executeCronjob(job);\n }\n\n // Try scheduling, will fail if an existing scheduled job is found\n this.schedule(job);\n }\n\n this.#dailyTimer = new Timer(DAILY_TIMEOUT);\n this.#dailyTimer.start(() => {\n this.dailyCheckIn().catch((error) => {\n // TODO: Decide how to handle errors.\n logError(error);\n });\n });\n }\n\n /**\n * Run controller teardown process and unsubscribe from Snap events.\n */\n destroy() {\n super.destroy();\n\n /* eslint-disable @typescript-eslint/unbound-method */\n this.messagingSystem.unsubscribe(\n 'SnapController:snapInstalled',\n this._handleSnapRegisterEvent,\n );\n\n this.messagingSystem.unsubscribe(\n 'SnapController:snapUninstalled',\n this._handleSnapUnregisterEvent,\n );\n\n this.messagingSystem.unsubscribe(\n 'SnapController:snapEnabled',\n this._handleSnapRegisterEvent,\n );\n\n this.messagingSystem.unsubscribe(\n 'SnapController:snapDisabled',\n this._handleSnapUnregisterEvent,\n );\n\n this.messagingSystem.unsubscribe(\n 'SnapController:snapUpdated',\n this._handleEventSnapUpdated,\n );\n /* eslint-enable @typescript-eslint/unbound-method */\n\n this.#snapIds.forEach((snapId) => {\n this.unregister(snapId);\n });\n }\n\n /**\n * Handle events that should cause cronjobs to be registered.\n *\n * @param snap - Basic Snap information.\n */\n private _handleSnapRegisterEvent(snap: TruncatedSnap) {\n this.register(snap.id);\n }\n\n /**\n * Handle events that should cause cronjobs to be unregistered.\n *\n * @param snap - Basic Snap information.\n */\n private _handleSnapUnregisterEvent(snap: TruncatedSnap) {\n this.unregister(snap.id);\n }\n\n /**\n * Handle cron jobs on 'snapUpdated' event.\n *\n * @param snap - Basic Snap information.\n */\n private _handleEventSnapUpdated(snap: TruncatedSnap) {\n this.unregister(snap.id);\n this.register(snap.id);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-7W4BE27D.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-A7QA5OIN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-AR5J3IYZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-BEEH4ZXK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -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-BFD5P2VB.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,109 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk2WWTILPZjs = require('./chunk-2WWTILPZ.js');
4
+
5
+ // src/utils.ts
6
+ var _snapssdk = require('@metamask/snaps-sdk');
7
+
8
+
9
+
10
+
11
+ var _snapsutils = require('@metamask/snaps-utils');
12
+ function setDiff(objectA, objectB) {
13
+ return Object.entries(objectA).reduce(
14
+ (acc, [key, value]) => {
15
+ if (!(key in objectB)) {
16
+ acc[key] = value;
17
+ }
18
+ return acc;
19
+ },
20
+ {}
21
+ );
22
+ }
23
+ function delay(ms, result) {
24
+ return delayWithTimer(new (0, _chunk2WWTILPZjs.Timer)(ms), result);
25
+ }
26
+ function delayWithTimer(timer, result) {
27
+ let rejectFunc;
28
+ const promise = new Promise((resolve, reject) => {
29
+ timer.start(() => {
30
+ result === void 0 ? resolve() : resolve(result);
31
+ });
32
+ rejectFunc = reject;
33
+ });
34
+ promise.cancel = () => {
35
+ if (timer.status !== "finished") {
36
+ timer.cancel();
37
+ rejectFunc(new Error("The delay has been canceled."));
38
+ }
39
+ };
40
+ return promise;
41
+ }
42
+ var hasTimedOut = Symbol(
43
+ "Used to check if the requested promise has timeout (see withTimeout)"
44
+ );
45
+ async function withTimeout(promise, timerOrMs) {
46
+ const timer = typeof timerOrMs === "number" ? new (0, _chunk2WWTILPZjs.Timer)(timerOrMs) : timerOrMs;
47
+ const delayPromise = delayWithTimer(timer, hasTimedOut);
48
+ try {
49
+ return await Promise.race([promise, delayPromise]);
50
+ } finally {
51
+ delayPromise.cancel();
52
+ }
53
+ }
54
+ async function getSnapFiles(location, files) {
55
+ if (!files || files.length === 0) {
56
+ return [];
57
+ }
58
+ return await Promise.all(
59
+ files.map(async (filePath) => location.fetch(filePath))
60
+ );
61
+ }
62
+ async function fetchSnap(snapId, location) {
63
+ try {
64
+ const manifest = await location.manifest();
65
+ const sourceCode = await location.fetch(
66
+ manifest.result.source.location.npm.filePath
67
+ );
68
+ const { iconPath } = manifest.result.source.location.npm;
69
+ const svgIcon = iconPath ? await location.fetch(iconPath) : void 0;
70
+ const auxiliaryFiles = await getSnapFiles(
71
+ location,
72
+ manifest.result.source.files
73
+ );
74
+ await Promise.all(
75
+ auxiliaryFiles.map(async (file) => {
76
+ file.data.base64 = await _snapsutils.encodeBase64.call(void 0, file);
77
+ })
78
+ );
79
+ const localizationFiles = await getSnapFiles(
80
+ location,
81
+ manifest.result.source.locales
82
+ );
83
+ const validatedLocalizationFiles = _snapsutils.getValidatedLocalizationFiles.call(void 0, localizationFiles);
84
+ const files = {
85
+ manifest,
86
+ sourceCode,
87
+ svgIcon,
88
+ auxiliaryFiles,
89
+ localizationFiles: validatedLocalizationFiles
90
+ };
91
+ await _snapsutils.validateFetchedSnap.call(void 0, files);
92
+ return files;
93
+ } catch (error) {
94
+ throw new Error(
95
+ `Failed to fetch snap "${snapId}": ${_snapssdk.getErrorMessage.call(void 0, error)}.`
96
+ );
97
+ }
98
+ }
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+ exports.setDiff = setDiff; exports.delay = delay; exports.delayWithTimer = delayWithTimer; exports.hasTimedOut = hasTimedOut; exports.withTimeout = withTimeout; exports.getSnapFiles = getSnapFiles; exports.fetchSnap = fetchSnap;
109
+ //# sourceMappingURL=chunk-BGJPFPCH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AACA,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBA,SAAS,QAGd,SAAkB,SAA0C;AAC5D,SAAO,OAAO,QAAQ,OAAO,EAAE;AAAA,IAC7B,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,EAAE,OAAO,UAAU;AACrB,YAAI,GAAG,IAAI;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAUO,SAAS,MACd,IACA,QAC0C;AAC1C,SAAO,eAAe,IAAI,MAAM,EAAE,GAAG,MAAM;AAC7C;AAUO,SAAS,eACd,OACA,QAC0C;AAC1C,MAAI;AACJ,QAAM,UAAe,IAAI,QAAgB,CAAC,SAAc,WAAW;AACjE,UAAM,MAAM,MAAM;AAChB,iBAAW,SAAY,QAAQ,IAAI,QAAQ,MAAM;AAAA,IACnD,CAAC;AACD,iBAAa;AAAA,EACf,CAAC;AAED,UAAQ,SAAS,MAAM;AACrB,QAAI,MAAM,WAAW,YAAY;AAC/B,YAAM,OAAO;AACb,iBAAW,IAAI,MAAM,8BAA8B,CAAC;AAAA,IACtD;AAAA,EACF;AACA,SAAO;AACT;AAMO,IAAM,cAAc;AAAA,EACzB;AACF;AAaA,eAAsB,YACpB,SACA,WAC4C;AAC5C,QAAM,QACJ,OAAO,cAAc,WAAW,IAAI,MAAM,SAAS,IAAI;AACzD,QAAM,eAAe,eAAe,OAAO,WAAW;AACtD,MAAI;AACF,WAAO,MAAM,QAAQ,KAAK,CAAC,SAAS,YAAY,CAAC;AAAA,EACnD,UAAE;AACA,iBAAa,OAAO;AAAA,EACtB;AACF;AAsGA,eAAsB,aACpB,UACA,OACA;AACA,MAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,MAAM,QAAQ;AAAA,IACnB,MAAM,IAAI,OAAO,aAAa,SAAS,MAAM,QAAQ,CAAC;AAAA,EACxD;AACF;AAWA,eAAsB,UAAU,QAAgB,UAAwB;AACtE,MAAI;AACF,UAAM,WAAW,MAAM,SAAS,SAAS;AACzC,UAAM,aAAa,MAAM,SAAS;AAAA,MAChC,SAAS,OAAO,OAAO,SAAS,IAAI;AAAA,IACtC;AACA,UAAM,EAAE,SAAS,IAAI,SAAS,OAAO,OAAO,SAAS;AACrD,UAAM,UAAU,WAAW,MAAM,SAAS,MAAM,QAAQ,IAAI;AAE5D,UAAM,iBAAiB,MAAM;AAAA,MAC3B;AAAA,MACA,SAAS,OAAO,OAAO;AAAA,IACzB;AAEA,UAAM,QAAQ;AAAA,MACZ,eAAe,IAAI,OAAO,SAAS;AAGjC,aAAK,KAAK,SAAS,MAAM,aAAa,IAAI;AAAA,MAC5C,CAAC;AAAA,IACH;AAEA,UAAM,oBAAoB,MAAM;AAAA,MAC9B;AAAA,MACA,SAAS,OAAO,OAAO;AAAA,IACzB;AAEA,UAAM,6BACJ,8BAA8B,iBAAiB;AAEjD,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,IACrB;AAEA,UAAM,oBAAoB,KAAK;AAE/B,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,yBAAyB,MAAM,MAAM,gBAAgB,KAAK,CAAC;AAAA,IAC7D;AAAA,EACF;AACF","sourcesContent":["import type { SnapId } from '@metamask/snaps-sdk';\nimport { getErrorMessage } from '@metamask/snaps-sdk';\nimport {\n encodeBase64,\n getValidatedLocalizationFiles,\n validateFetchedSnap,\n} from '@metamask/snaps-utils';\n\nimport type { SnapLocation } from './snaps';\nimport { Timer } from './snaps/Timer';\n\n/**\n * Takes two objects and does a Set Difference of them.\n * Set Difference is generally defined as follows:\n * ```\n * 𝑥 ∈ A ∖ B ⟺ 𝑥 ∈ A ∧ 𝑥 ∉ B\n * ```\n * Meaning that the returned object contains all properties of A expect those that also\n * appear in B. Notice that properties that appear in B, but not in A, have no effect.\n *\n * @see [Set Difference]{@link https://proofwiki.org/wiki/Definition:Set_Difference}\n * @param objectA - The object on which the difference is being calculated.\n * @param objectB - The object whose properties will be removed from objectA.\n * @returns The objectA without properties from objectB.\n */\nexport function setDiff<\n ObjectA extends Record<any, unknown>,\n ObjectB extends Record<any, unknown>,\n>(objectA: ObjectA, objectB: ObjectB): Diff<ObjectA, ObjectB> {\n return Object.entries(objectA).reduce<Record<any, unknown>>(\n (acc, [key, value]) => {\n if (!(key in objectB)) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n ) as Diff<ObjectA, ObjectB>;\n}\n\n/**\n * A Promise that delays its return for a given amount of milliseconds.\n *\n * @param ms - Milliseconds to delay the execution for.\n * @param result - The result to return from the Promise after delay.\n * @returns A promise that is void if no result provided, result otherwise.\n * @template Result - The `result`.\n */\nexport function delay<Result = void>(\n ms: number,\n result?: Result,\n): Promise<Result> & { cancel: () => void } {\n return delayWithTimer(new Timer(ms), result);\n}\n\n/**\n * A Promise that delays it's return by using a pausable Timer.\n *\n * @param timer - Timer used to control the delay.\n * @param result - The result to return from the Promise after delay.\n * @returns A promise that is void if no result provided, result otherwise.\n * @template Result - The `result`.\n */\nexport function delayWithTimer<Result = void>(\n timer: Timer,\n result?: Result,\n): Promise<Result> & { cancel: () => void } {\n let rejectFunc: (reason: Error) => void;\n const promise: any = new Promise<Result>((resolve: any, reject) => {\n timer.start(() => {\n result === undefined ? resolve() : resolve(result);\n });\n rejectFunc = reject;\n });\n\n promise.cancel = () => {\n if (timer.status !== 'finished') {\n timer.cancel();\n rejectFunc(new Error('The delay has been canceled.'));\n }\n };\n return promise;\n}\n\n/*\n * We use a Symbol instead of rejecting the promise so that Errors thrown\n * by the main promise will propagate.\n */\nexport const hasTimedOut = Symbol(\n 'Used to check if the requested promise has timeout (see withTimeout)',\n);\n\n/**\n * Executes the given Promise, if the Timer expires before the Promise settles, we return earlier.\n *\n * NOTE:** The given Promise is not cancelled or interrupted, and will continue to execute uninterrupted. We will just discard its result if it does not complete before the timeout.\n *\n * @param promise - The promise that you want to execute.\n * @param timerOrMs - The timer controlling the timeout or a ms value.\n * @returns The resolved `PromiseValue`, or the hasTimedOut symbol if\n * returning early.\n * @template PromiseValue - The value of the Promise.\n */\nexport async function withTimeout<PromiseValue = void>(\n promise: Promise<PromiseValue>,\n timerOrMs: Timer | number,\n): Promise<PromiseValue | typeof hasTimedOut> {\n const timer =\n typeof timerOrMs === 'number' ? new Timer(timerOrMs) : timerOrMs;\n const delayPromise = delayWithTimer(timer, hasTimedOut);\n try {\n return await Promise.race([promise, delayPromise]);\n } finally {\n delayPromise.cancel();\n }\n}\n\n/**\n * Checks whether the type is composed of literal types\n *\n * @returns @type {true} if whole type is composed of literals, @type {false} if whole type is not literals, @type {boolean} if mixed\n * @example\n * ```\n * type t1 = IsLiteral<1 | 2 | \"asd\" | true>;\n * // t1 = true\n *\n * type t2 = IsLiteral<number | string>;\n * // t2 = false\n *\n * type t3 = IsLiteral<1 | string>;\n * // t3 = boolean\n *\n * const s = Symbol();\n * type t4 = IsLiteral<typeof s>;\n * // t4 = true\n *\n * type t5 = IsLiteral<symbol>\n * // t5 = false;\n * ```\n */\ntype IsLiteral<Type> = Type extends string | number | boolean | symbol\n ? Extract<string | number | boolean | symbol, Type> extends never\n ? true\n : false\n : false;\n\n/**\n * Returns all keys of an object, that are literal, as an union\n *\n * @example\n * ```\n * type t1 = _LiteralKeys<{a: number, b: 0, c: 'foo', d: string}>\n * // t1 = 'b' | 'c'\n * ```\n * @see [Literal types]{@link https://www.typescriptlang.org/docs/handbook/literal-types.html}\n */\ntype LiteralKeys<Type> = NonNullable<\n {\n [Key in keyof Type]: IsLiteral<Key> extends true ? Key : never;\n }[keyof Type]\n>;\n\n/**\n * Returns all keys of an object, that are not literal, as an union\n *\n * @example\n * ```\n * type t1 = _NonLiteralKeys<{a: number, b: 0, c: 'foo', d: string}>\n * // t1 = 'a' | 'd'\n * ```\n * @see [Literal types]{@link https://www.typescriptlang.org/docs/handbook/literal-types.html}\n */\ntype NonLiteralKeys<Type> = NonNullable<\n {\n [Key in keyof Type]: IsLiteral<Key> extends false ? Key : never;\n }[keyof Type]\n>;\n\n/**\n * A set difference of two objects based on their keys\n *\n * @example\n * ```\n * type t1 = Diff<{a: string, b: string}, {a: number}>\n * // t1 = {b: string};\n * type t2 = Diff<{a: string, 0: string}, Record<string, unknown>>;\n * // t2 = { a?: string, 0: string};\n * type t3 = Diff<{a: string, 0: string, 1: string}, Record<1 | string, unknown>>;\n * // t3 = {a?: string, 0: string}\n * ```\n * @see {@link setDiff} for the main use-case\n */\nexport type Diff<First, Second> = Omit<First, LiteralKeys<Second>> &\n Partial<Pick<First, Extract<keyof First, NonLiteralKeys<Second>>>>;\n\n/**\n * Makes every specified property of the specified object type mutable.\n *\n * @template Type - The object whose readonly properties to make mutable.\n * @template TargetKey - The property key(s) to make mutable.\n */\nexport type Mutable<\n Type extends Record<string, unknown>,\n TargetKey extends string,\n> = {\n -readonly [Key in keyof Pick<Type, TargetKey>]: Type[Key];\n} & {\n [Key in keyof Omit<Type, TargetKey>]: Type[Key];\n};\n\n/**\n * Get all files in a Snap from an array of file paths.\n *\n * @param location - The location of the Snap.\n * @param files - The array of file paths.\n * @returns The array of files as {@link VirtualFile}s.\n */\nexport async function getSnapFiles(\n location: SnapLocation,\n files?: string[] | undefined,\n) {\n if (!files || files.length === 0) {\n return [];\n }\n\n return await Promise.all(\n files.map(async (filePath) => location.fetch(filePath)),\n );\n}\n\n/**\n * Fetch the Snap manifest, source code, and any other files from the given\n * location.\n *\n * @param snapId - The ID of the Snap to fetch.\n * @param location - The location of the Snap.\n * @returns The Snap files and location.\n * @throws If the Snap files are invalid, or if the Snap could not be fetched.\n */\nexport async function fetchSnap(snapId: SnapId, location: SnapLocation) {\n try {\n const manifest = await location.manifest();\n const sourceCode = await location.fetch(\n manifest.result.source.location.npm.filePath,\n );\n const { iconPath } = manifest.result.source.location.npm;\n const svgIcon = iconPath ? await location.fetch(iconPath) : undefined;\n\n const auxiliaryFiles = await getSnapFiles(\n location,\n manifest.result.source.files,\n );\n\n await Promise.all(\n auxiliaryFiles.map(async (file) => {\n // This should still be safe\n // eslint-disable-next-line require-atomic-updates\n file.data.base64 = await encodeBase64(file);\n }),\n );\n\n const localizationFiles = await getSnapFiles(\n location,\n manifest.result.source.locales,\n );\n\n const validatedLocalizationFiles =\n getValidatedLocalizationFiles(localizationFiles);\n\n const files = {\n manifest,\n sourceCode,\n svgIcon,\n auxiliaryFiles,\n localizationFiles: validatedLocalizationFiles,\n };\n\n await validateFetchedSnap(files);\n\n return files;\n } catch (error) {\n throw new Error(\n `Failed to fetch snap \"${snapId}\": ${getErrorMessage(error)}.`,\n );\n }\n}\n"]}
@@ -0,0 +1,74 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk3RXU6FL7js = require('./chunk-3RXU6FL7.js');
4
+
5
+
6
+ var _chunkOYSDB7WVjs = require('./chunk-OYSDB7WV.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 _chunk3RXU6FL7js.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, _chunkOYSDB7WVjs.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-BKAYI3FB.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,38 @@
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 _chunk3RXU6FL7js = require('./chunk-3RXU6FL7.js');
4
+
5
+ // src/services/iframe/IframeExecutionService.ts
6
+ var _postmessagestream = require('@metamask/post-message-stream');
7
+ var _snapsutils = require('@metamask/snaps-utils');
8
+ var IframeExecutionService = class extends _chunk3RXU6FL7js.AbstractExecutionService {
9
+ constructor({
10
+ iframeUrl,
11
+ messenger,
12
+ setupSnapProvider
13
+ }) {
14
+ super({
15
+ messenger,
16
+ setupSnapProvider
17
+ });
18
+ this.iframeUrl = iframeUrl;
19
+ }
20
+ terminateJob(jobWrapper) {
21
+ _optionalChain([document, 'access', _ => _.getElementById, 'call', _2 => _2(jobWrapper.id), 'optionalAccess', _3 => _3.remove, 'call', _4 => _4()]);
22
+ }
23
+ async initEnvStream(jobId) {
24
+ const iframeWindow = await _snapsutils.createWindow.call(void 0, this.iframeUrl.toString(), jobId);
25
+ const stream = new (0, _postmessagestream.WindowPostMessageStream)({
26
+ name: "parent",
27
+ target: "child",
28
+ targetWindow: iframeWindow,
29
+ targetOrigin: "*"
30
+ });
31
+ return { worker: iframeWindow, stream };
32
+ }
33
+ };
34
+
35
+
36
+
37
+ exports.IframeExecutionService = IframeExecutionService;
38
+ //# sourceMappingURL=chunk-BMLPPIKQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/iframe/IframeExecutionService.ts"],"names":[],"mappings":";;;;;AACA,SAAS,+BAA+B;AACxC,SAAS,oBAAoB;AAStB,IAAM,yBAAN,cAAqC,yBAAiC;AAAA,EAG3E,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA0C;AACxC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,CAAC;AACD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEU,aAAa,YAA+B;AACpD,aAAS,eAAe,WAAW,EAAE,GAAG,OAAO;AAAA,EACjD;AAAA,EAEA,MAAgB,cAAc,OAG3B;AACD,UAAM,eAAe,MAAM,aAAa,KAAK,UAAU,SAAS,GAAG,KAAK;AAExE,UAAM,SAAS,IAAI,wBAAwB;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,cAAc;AAAA,IAChB,CAAC;AAED,WAAO,EAAE,QAAQ,cAAc,OAAO;AAAA,EACxC;AACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { WindowPostMessageStream } from '@metamask/post-message-stream';\nimport { createWindow } from '@metamask/snaps-utils';\n\nimport type { Job, ExecutionServiceArgs } from '../AbstractExecutionService';\nimport { AbstractExecutionService } from '../AbstractExecutionService';\n\ntype IframeExecutionEnvironmentServiceArgs = {\n iframeUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class IframeExecutionService extends AbstractExecutionService<Window> {\n public iframeUrl: URL;\n\n constructor({\n iframeUrl,\n messenger,\n setupSnapProvider,\n }: IframeExecutionEnvironmentServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n });\n this.iframeUrl = iframeUrl;\n }\n\n protected terminateJob(jobWrapper: Job<Window>): void {\n document.getElementById(jobWrapper.id)?.remove();\n }\n\n protected async initEnvStream(jobId: string): Promise<{\n worker: Window;\n stream: BasePostMessageStream;\n }> {\n const iframeWindow = await createWindow(this.iframeUrl.toString(), jobId);\n\n const stream = new WindowPostMessageStream({\n name: 'parent',\n target: 'child',\n targetWindow: iframeWindow,\n targetOrigin: '*',\n });\n\n return { worker: iframeWindow, stream };\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-BMNPP53N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-BUPF6RN3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,58 @@
1
+ import {
2
+ WebViewMessageStream
3
+ } from "./chunk-FYDIMXGD.mjs";
4
+ import {
5
+ ProxyExecutionService
6
+ } from "./chunk-LANLSIYZ.mjs";
7
+ import {
8
+ __privateAdd,
9
+ __privateGet,
10
+ __privateMethod,
11
+ __privateSet
12
+ } from "./chunk-YRZVIDCF.mjs";
13
+
14
+ // src/services/webview/WebViewExecutionService.ts
15
+ var _getWebView, _ensureWebViewLoaded, ensureWebViewLoaded_fn;
16
+ var WebViewExecutionService = class extends ProxyExecutionService {
17
+ constructor({
18
+ messenger,
19
+ setupSnapProvider,
20
+ getWebView
21
+ }) {
22
+ super({
23
+ messenger,
24
+ setupSnapProvider,
25
+ stream: new WebViewMessageStream({
26
+ name: "parent",
27
+ target: "child",
28
+ getWebView
29
+ })
30
+ });
31
+ /**
32
+ * Ensure that the WebView has been loaded by awaiting the getWebView promise.
33
+ */
34
+ __privateAdd(this, _ensureWebViewLoaded);
35
+ __privateAdd(this, _getWebView, void 0);
36
+ __privateSet(this, _getWebView, getWebView);
37
+ }
38
+ /**
39
+ * Create a new stream for the specified job. This wraps the runtime stream
40
+ * in a stream specific to the job.
41
+ *
42
+ * @param jobId - The job ID.
43
+ */
44
+ async initEnvStream(jobId) {
45
+ await __privateMethod(this, _ensureWebViewLoaded, ensureWebViewLoaded_fn).call(this);
46
+ return super.initEnvStream(jobId);
47
+ }
48
+ };
49
+ _getWebView = new WeakMap();
50
+ _ensureWebViewLoaded = new WeakSet();
51
+ ensureWebViewLoaded_fn = async function() {
52
+ await __privateGet(this, _getWebView).call(this);
53
+ };
54
+
55
+ export {
56
+ WebViewExecutionService
57
+ };
58
+ //# sourceMappingURL=chunk-DC3KUFAP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/webview/WebViewExecutionService.ts"],"sourcesContent":["import type { ExecutionServiceArgs } from '../AbstractExecutionService';\nimport { ProxyExecutionService } from '../proxy/ProxyExecutionService';\nimport type { WebViewInterface } from './WebViewMessageStream';\nimport { WebViewMessageStream } from './WebViewMessageStream';\n\nexport type WebViewExecutionServiceArgs = ExecutionServiceArgs & {\n getWebView: () => Promise<WebViewInterface>;\n};\n\nexport class WebViewExecutionService extends ProxyExecutionService {\n #getWebView;\n\n constructor({\n messenger,\n setupSnapProvider,\n getWebView,\n }: WebViewExecutionServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n stream: new WebViewMessageStream({\n name: 'parent',\n target: 'child',\n getWebView,\n }),\n });\n this.#getWebView = getWebView;\n }\n\n /**\n * Create a new stream for the specified job. This wraps the runtime stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n // Ensure that the WebView has been loaded before we proceed.\n await this.#ensureWebViewLoaded();\n\n return super.initEnvStream(jobId);\n }\n\n /**\n * Ensure that the WebView has been loaded by awaiting the getWebView promise.\n */\n async #ensureWebViewLoaded() {\n await this.#getWebView();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AASO,IAAM,0BAAN,cAAsC,sBAAsB;AAAA,EAGjE,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAgC;AAC9B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,QAAQ,IAAI,qBAAqB;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAoBH;AAAA;AAAA;AAAA,uBAAM;AAnCN;AAgBE,uBAAK,aAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAgB,cAAc,OAAe;AAE3C,UAAM,sBAAK,8CAAL;AAEN,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC;AAQF;AAtCE;AAmCM;AAAA,yBAAoB,iBAAG;AAC3B,QAAM,mBAAK,aAAL;AACR;","names":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/snaps/constants.ts
2
+ var _snapsrpcmethods = require('@metamask/snaps-rpc-methods');
3
+ var ALLOWED_PERMISSIONS = Object.freeze([
4
+ "snap_dialog",
5
+ "snap_manageState",
6
+ "snap_notify",
7
+ "snap_getLocale",
8
+ _snapsrpcmethods.SnapEndowments.Cronjob,
9
+ _snapsrpcmethods.SnapEndowments.HomePage,
10
+ _snapsrpcmethods.SnapEndowments.LifecycleHooks,
11
+ _snapsrpcmethods.SnapEndowments.EthereumProvider,
12
+ _snapsrpcmethods.SnapEndowments.TransactionInsight,
13
+ _snapsrpcmethods.SnapEndowments.SignatureInsight
14
+ ]);
15
+
16
+
17
+
18
+ exports.ALLOWED_PERMISSIONS = ALLOWED_PERMISSIONS;
19
+ //# sourceMappingURL=chunk-DLLH2SFQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/snaps/constants.ts"],"names":[],"mappings":";AAAA,SAAS,sBAAsB;AAGxB,IAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB,CAAC","sourcesContent":["import { SnapEndowments } from '@metamask/snaps-rpc-methods';\n\n// These permissions are allowed without being on the allowlist.\nexport const ALLOWED_PERMISSIONS = Object.freeze([\n 'snap_dialog',\n 'snap_manageState',\n 'snap_notify',\n 'snap_getLocale',\n SnapEndowments.Cronjob,\n SnapEndowments.HomePage,\n SnapEndowments.LifecycleHooks,\n SnapEndowments.EthereumProvider,\n SnapEndowments.TransactionInsight,\n SnapEndowments.SignatureInsight,\n]);\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-DQPMF4WI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,72 @@
1
+ import {
2
+ ProxyExecutionService
3
+ } from "./chunk-LANLSIYZ.mjs";
4
+ import {
5
+ __privateAdd,
6
+ __privateMethod
7
+ } from "./chunk-YRZVIDCF.mjs";
8
+
9
+ // src/services/offscreen/OffscreenExecutionService.ts
10
+ import { BrowserRuntimePostMessageStream } from "@metamask/post-message-stream";
11
+ var _createDocument, createDocument_fn;
12
+ var OffscreenExecutionService = class extends ProxyExecutionService {
13
+ /**
14
+ * Create a new offscreen execution service.
15
+ *
16
+ * @param args - The constructor arguments.
17
+ * @param args.documentUrl - The URL of the offscreen document to use as the
18
+ * execution environment. This must be a URL relative to the location where
19
+ * this is called. This cannot be a public (http(s)) URL.
20
+ * @param args.messenger - The messenger to use for communication with the
21
+ * `SnapController`.
22
+ * @param args.setupSnapProvider - The function to use to set up the snap
23
+ * provider.
24
+ */
25
+ constructor({
26
+ documentUrl,
27
+ messenger,
28
+ setupSnapProvider
29
+ }) {
30
+ super({
31
+ messenger,
32
+ setupSnapProvider,
33
+ stream: new BrowserRuntimePostMessageStream({
34
+ name: "parent",
35
+ target: "child"
36
+ })
37
+ });
38
+ /**
39
+ * Creates the offscreen document to be used as the execution environment.
40
+ *
41
+ * If the document already exists, this does nothing.
42
+ */
43
+ __privateAdd(this, _createDocument);
44
+ this.documentUrl = documentUrl;
45
+ }
46
+ /**
47
+ * Create a new stream for the specified job. This wraps the runtime stream
48
+ * in a stream specific to the job.
49
+ *
50
+ * @param jobId - The job ID.
51
+ */
52
+ async initEnvStream(jobId) {
53
+ await __privateMethod(this, _createDocument, createDocument_fn).call(this);
54
+ return super.initEnvStream(jobId);
55
+ }
56
+ };
57
+ _createDocument = new WeakSet();
58
+ createDocument_fn = async function() {
59
+ if (await chrome.offscreen.hasDocument()) {
60
+ return;
61
+ }
62
+ await chrome.offscreen.createDocument({
63
+ justification: "MetaMask Snaps Execution Environment",
64
+ reasons: ["IFRAME_SCRIPTING"],
65
+ url: this.documentUrl.toString()
66
+ });
67
+ };
68
+
69
+ export {
70
+ OffscreenExecutionService
71
+ };
72
+ //# sourceMappingURL=chunk-DX3JFCRL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/offscreen/OffscreenExecutionService.ts"],"sourcesContent":["import { BrowserRuntimePostMessageStream } from '@metamask/post-message-stream';\n\nimport type { ExecutionServiceArgs } from '../AbstractExecutionService';\nimport { ProxyExecutionService } from '../proxy/ProxyExecutionService';\n\ntype OffscreenExecutionEnvironmentServiceArgs = {\n documentUrl: URL;\n} & ExecutionServiceArgs;\n\nexport class OffscreenExecutionService extends ProxyExecutionService {\n public readonly documentUrl: URL;\n\n /**\n * Create a new offscreen execution service.\n *\n * @param args - The constructor arguments.\n * @param args.documentUrl - The URL of the offscreen document to use as the\n * execution environment. This must be a URL relative to the location where\n * this is called. This cannot be a public (http(s)) URL.\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 */\n constructor({\n documentUrl,\n messenger,\n setupSnapProvider,\n }: OffscreenExecutionEnvironmentServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n stream: new BrowserRuntimePostMessageStream({\n name: 'parent',\n target: 'child',\n }),\n });\n\n this.documentUrl = documentUrl;\n }\n\n /**\n * Create a new stream for the specified job. This wraps the runtime stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n // Lazily create the offscreen document.\n await this.#createDocument();\n\n return super.initEnvStream(jobId);\n }\n\n /**\n * Creates the offscreen document to be used as the execution environment.\n *\n * If the document already exists, this does nothing.\n */\n async #createDocument() {\n // Extensions can only have a single offscreen document.\n if (await chrome.offscreen.hasDocument()) {\n return;\n }\n\n await chrome.offscreen.createDocument({\n justification: 'MetaMask Snaps Execution Environment',\n reasons: ['IFRAME_SCRIPTING' as chrome.offscreen.Reason],\n url: this.documentUrl.toString(),\n });\n }\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,uCAAuC;AAAhD;AASO,IAAM,4BAAN,cAAwC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAenE,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA6C;AAC3C,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,QAAQ,IAAI,gCAAgC;AAAA,QAC1C,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAuBH;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AArBJ,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAgB,cAAc,OAAe;AAE3C,UAAM,sBAAK,oCAAL;AAEN,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC;AAmBF;AAZQ;AAAA,oBAAe,iBAAG;AAEtB,MAAI,MAAM,OAAO,UAAU,YAAY,GAAG;AACxC;AAAA,EACF;AAEA,QAAM,OAAO,UAAU,eAAe;AAAA,IACpC,eAAe;AAAA,IACf,SAAS,CAAC,kBAA6C;AAAA,IACvD,KAAK,KAAK,YAAY,SAAS;AAAA,EACjC,CAAC;AACH;","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-E5PSKNI7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});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
+
32
+
33
+
34
+
35
+
36
+
37
+ exports.__require = __require; exports.__privateGet = __privateGet; exports.__privateAdd = __privateAdd; exports.__privateSet = __privateSet; exports.__privateMethod = __privateMethod;
38
+ //# sourceMappingURL=chunk-EXN2TFDJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/snaps/RequestQueue.ts
2
+ var RequestQueue = class {
3
+ constructor(maxQueueSize) {
4
+ this.maxQueueSize = maxQueueSize;
5
+ this.queueSizes = /* @__PURE__ */ new Map();
6
+ }
7
+ /**
8
+ * Increments the queue count for a particular origin.
9
+ *
10
+ * @param origin - A string identifying the origin.
11
+ */
12
+ increment(origin) {
13
+ const currentCount = _nullishCoalesce(this.queueSizes.get(origin), () => ( 0));
14
+ if (currentCount >= this.maxQueueSize) {
15
+ throw new Error("Maximum number of requests reached. Try again later.");
16
+ }
17
+ this.queueSizes.set(origin, currentCount + 1);
18
+ }
19
+ /**
20
+ * Decrements the queue count for a particular origin.
21
+ *
22
+ * @param origin - A string identifying the origin.
23
+ */
24
+ decrement(origin) {
25
+ const currentCount = _nullishCoalesce(this.queueSizes.get(origin), () => ( 0));
26
+ if (currentCount === 0) {
27
+ throw new Error(
28
+ `Cannot decrement, ${origin} does not have any outstanding requests.`
29
+ );
30
+ }
31
+ this.queueSizes.set(origin, currentCount - 1);
32
+ }
33
+ /**
34
+ * Gets the queue count for a particular origin.
35
+ *
36
+ * @param origin - A string identifying the origin.
37
+ * @returns The queue count for the origin.
38
+ */
39
+ get(origin) {
40
+ return _nullishCoalesce(this.queueSizes.get(origin), () => ( 0));
41
+ }
42
+ };
43
+
44
+
45
+
46
+ exports.RequestQueue = RequestQueue;
47
+ //# sourceMappingURL=chunk-F62W2GSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/snaps/RequestQueue.ts"],"names":[],"mappings":";AAAO,IAAM,eAAN,MAAmB;AAAA,EAKxB,YAAY,cAAsB;AAChC,SAAK,eAAe;AACpB,SAAK,aAAa,oBAAI,IAAoB;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,UAAU,QAAgB;AAC/B,UAAM,eAAe,KAAK,WAAW,IAAI,MAAM,KAAK;AACpD,QAAI,gBAAgB,KAAK,cAAc;AACrC,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AACA,SAAK,WAAW,IAAI,QAAQ,eAAe,CAAC;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,UAAU,QAAgB;AAC/B,UAAM,eAAe,KAAK,WAAW,IAAI,MAAM,KAAK;AACpD,QAAI,iBAAiB,GAAG;AACtB,YAAM,IAAI;AAAA,QACR,qBAAqB,MAAM;AAAA,MAC7B;AAAA,IACF;AACA,SAAK,WAAW,IAAI,QAAQ,eAAe,CAAC;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,IAAI,QAAwB;AACjC,WAAO,KAAK,WAAW,IAAI,MAAM,KAAK;AAAA,EACxC;AACF","sourcesContent":["export class RequestQueue {\n public readonly maxQueueSize: number;\n\n private readonly queueSizes: Map<string, number>;\n\n constructor(maxQueueSize: number) {\n this.maxQueueSize = maxQueueSize;\n this.queueSizes = new Map<string, number>();\n }\n\n /**\n * Increments the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n */\n public increment(origin: string) {\n const currentCount = this.queueSizes.get(origin) ?? 0;\n if (currentCount >= this.maxQueueSize) {\n throw new Error('Maximum number of requests reached. Try again later.');\n }\n this.queueSizes.set(origin, currentCount + 1);\n }\n\n /**\n * Decrements the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n */\n public decrement(origin: string) {\n const currentCount = this.queueSizes.get(origin) ?? 0;\n if (currentCount === 0) {\n throw new Error(\n `Cannot decrement, ${origin} does not have any outstanding requests.`,\n );\n }\n this.queueSizes.set(origin, currentCount - 1);\n }\n\n /**\n * Gets the queue count for a particular origin.\n *\n * @param origin - A string identifying the origin.\n * @returns The queue count for the origin.\n */\n public get(origin: string): number {\n return this.queueSizes.get(origin) ?? 0;\n }\n}\n"]}