@metamask/snaps-controllers 9.4.0 → 9.6.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 (716) hide show
  1. package/CHANGELOG.md +23 -2
  2. package/dist/cronjob/CronjobController.cjs +255 -0
  3. package/dist/cronjob/CronjobController.cjs.map +1 -0
  4. package/dist/{types/cronjob/CronjobController.d.ts → cronjob/CronjobController.d.cts} +13 -10
  5. package/dist/cronjob/CronjobController.d.cts.map +1 -0
  6. package/dist/cronjob/CronjobController.d.mts +121 -0
  7. package/dist/cronjob/CronjobController.d.mts.map +1 -0
  8. package/dist/cronjob/CronjobController.mjs +249 -41
  9. package/dist/cronjob/CronjobController.mjs.map +1 -1
  10. package/dist/cronjob/index.cjs +18 -0
  11. package/dist/cronjob/index.cjs.map +1 -0
  12. package/dist/cronjob/index.d.cts +2 -0
  13. package/dist/cronjob/index.d.cts.map +1 -0
  14. package/dist/cronjob/index.d.mts +2 -0
  15. package/dist/cronjob/index.d.mts.map +1 -0
  16. package/dist/cronjob/index.mjs +1 -42
  17. package/dist/cronjob/index.mjs.map +1 -1
  18. package/dist/fsm.cjs +75 -0
  19. package/dist/fsm.cjs.map +1 -0
  20. package/dist/{types/fsm.d.ts → fsm.d.cts} +2 -1
  21. package/dist/fsm.d.cts.map +1 -0
  22. package/dist/fsm.d.mts +25 -0
  23. package/dist/fsm.d.mts.map +1 -0
  24. package/dist/fsm.mjs +69 -9
  25. package/dist/fsm.mjs.map +1 -1
  26. package/dist/index.cjs +23 -0
  27. package/dist/index.cjs.map +1 -0
  28. package/dist/index.d.cts +8 -0
  29. package/dist/index.d.cts.map +1 -0
  30. package/dist/index.d.mts +8 -0
  31. package/dist/index.d.mts.map +1 -0
  32. package/dist/index.mjs +6 -124
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/insights/SnapInsightsController.cjs +182 -0
  35. package/dist/insights/SnapInsightsController.cjs.map +1 -0
  36. package/dist/{types/insights/SnapInsightsController.d.ts → insights/SnapInsightsController.d.cts} +13 -9
  37. package/dist/insights/SnapInsightsController.d.cts.map +1 -0
  38. package/dist/insights/SnapInsightsController.d.mts +38 -0
  39. package/dist/insights/SnapInsightsController.d.mts.map +1 -0
  40. package/dist/insights/SnapInsightsController.mjs +176 -23
  41. package/dist/insights/SnapInsightsController.mjs.map +1 -1
  42. package/dist/insights/index.cjs +18 -0
  43. package/dist/insights/index.cjs.map +1 -0
  44. package/dist/insights/index.d.cts +2 -0
  45. package/dist/insights/index.d.cts.map +1 -0
  46. package/dist/insights/index.d.mts +2 -0
  47. package/dist/insights/index.d.mts.map +1 -0
  48. package/dist/insights/index.mjs +1 -25
  49. package/dist/insights/index.mjs.map +1 -1
  50. package/dist/interface/SnapInterfaceController.cjs +176 -0
  51. package/dist/interface/SnapInterfaceController.cjs.map +1 -0
  52. package/dist/{types/interface/SnapInterfaceController.d.ts → interface/SnapInterfaceController.d.cts} +13 -9
  53. package/dist/interface/SnapInterfaceController.d.cts.map +1 -0
  54. package/dist/interface/SnapInterfaceController.d.mts +107 -0
  55. package/dist/interface/SnapInterfaceController.d.mts.map +1 -0
  56. package/dist/interface/SnapInterfaceController.mjs +170 -7
  57. package/dist/interface/SnapInterfaceController.mjs.map +1 -1
  58. package/dist/interface/index.cjs +18 -0
  59. package/dist/interface/index.cjs.map +1 -0
  60. package/dist/interface/index.d.cts +2 -0
  61. package/dist/interface/index.d.cts.map +1 -0
  62. package/dist/interface/index.d.mts +2 -0
  63. package/dist/interface/index.d.mts.map +1 -0
  64. package/dist/interface/index.mjs +1 -9
  65. package/dist/interface/index.mjs.map +1 -1
  66. package/dist/interface/utils.cjs +165 -0
  67. package/dist/interface/utils.cjs.map +1 -0
  68. package/dist/{types/interface/utils.d.ts → interface/utils.d.cts} +3 -2
  69. package/dist/interface/utils.d.cts.map +1 -0
  70. package/dist/interface/utils.d.mts +34 -0
  71. package/dist/interface/utils.d.mts.map +1 -0
  72. package/dist/interface/utils.mjs +157 -13
  73. package/dist/interface/utils.mjs.map +1 -1
  74. package/dist/logging.cjs +13 -0
  75. package/dist/logging.cjs.map +1 -0
  76. package/dist/{types/logging.d.ts → logging.d.cts} +1 -0
  77. package/dist/logging.d.cts.map +1 -0
  78. package/dist/logging.d.mts +9 -0
  79. package/dist/logging.d.mts.map +1 -0
  80. package/dist/logging.mjs +9 -7
  81. package/dist/logging.mjs.map +1 -1
  82. package/dist/node.cjs +20 -0
  83. package/dist/node.cjs.map +1 -0
  84. package/dist/node.d.cts +3 -0
  85. package/dist/node.d.cts.map +1 -0
  86. package/dist/node.d.mts +3 -0
  87. package/dist/node.d.mts.map +1 -0
  88. package/dist/node.mjs +3 -134
  89. package/dist/node.mjs.map +1 -1
  90. package/dist/react-native.cjs +20 -0
  91. package/dist/react-native.cjs.map +1 -0
  92. package/dist/react-native.d.cts +3 -0
  93. package/dist/react-native.d.cts.map +1 -0
  94. package/dist/react-native.d.mts +3 -0
  95. package/dist/react-native.d.mts.map +1 -0
  96. package/dist/react-native.mjs +3 -131
  97. package/dist/react-native.mjs.map +1 -1
  98. package/dist/services/AbstractExecutionService.cjs +348 -0
  99. package/dist/services/AbstractExecutionService.cjs.map +1 -0
  100. package/dist/{types/services/AbstractExecutionService.d.ts → services/AbstractExecutionService.d.cts} +8 -8
  101. package/dist/services/AbstractExecutionService.d.cts.map +1 -0
  102. package/dist/services/AbstractExecutionService.d.mts +131 -0
  103. package/dist/services/AbstractExecutionService.d.mts.map +1 -0
  104. package/dist/services/AbstractExecutionService.mjs +345 -11
  105. package/dist/services/AbstractExecutionService.mjs.map +1 -1
  106. package/dist/services/ExecutionService.cjs +4 -0
  107. package/dist/services/ExecutionService.cjs.map +1 -0
  108. package/dist/{types/services/ExecutionService.d.ts → services/ExecutionService.d.cts} +4 -3
  109. package/dist/services/ExecutionService.d.cts.map +1 -0
  110. package/dist/services/ExecutionService.d.mts +69 -0
  111. package/dist/services/ExecutionService.d.mts.map +1 -0
  112. package/dist/services/ExecutionService.mjs +2 -1
  113. package/dist/services/ExecutionService.mjs.map +1 -1
  114. package/dist/services/ProxyPostMessageStream.cjs +58 -0
  115. package/dist/services/ProxyPostMessageStream.cjs.map +1 -0
  116. package/dist/{types/services/ProxyPostMessageStream.d.ts → services/ProxyPostMessageStream.d.cts} +3 -2
  117. package/dist/services/ProxyPostMessageStream.d.cts.map +1 -0
  118. package/dist/services/ProxyPostMessageStream.d.mts +35 -0
  119. package/dist/services/ProxyPostMessageStream.d.mts.map +1 -0
  120. package/dist/services/ProxyPostMessageStream.mjs +53 -6
  121. package/dist/services/ProxyPostMessageStream.mjs.map +1 -1
  122. package/dist/services/browser.cjs +27 -0
  123. package/dist/services/browser.cjs.map +1 -0
  124. package/dist/services/browser.d.cts +8 -0
  125. package/dist/services/browser.d.cts.map +1 -0
  126. package/dist/services/browser.d.mts +8 -0
  127. package/dist/services/browser.d.mts.map +1 -0
  128. package/dist/services/browser.mjs +8 -39
  129. package/dist/services/browser.mjs.map +1 -1
  130. package/dist/services/iframe/IframeExecutionService.cjs +30 -0
  131. package/dist/services/iframe/IframeExecutionService.cjs.map +1 -0
  132. package/dist/{types/services/iframe/IframeExecutionService.d.ts → services/iframe/IframeExecutionService.d.cts} +4 -3
  133. package/dist/services/iframe/IframeExecutionService.d.cts.map +1 -0
  134. package/dist/services/iframe/IframeExecutionService.d.mts +17 -0
  135. package/dist/services/iframe/IframeExecutionService.d.mts.map +1 -0
  136. package/dist/services/iframe/IframeExecutionService.mjs +26 -11
  137. package/dist/services/iframe/IframeExecutionService.mjs.map +1 -1
  138. package/dist/services/iframe/index.cjs +18 -0
  139. package/dist/services/iframe/index.cjs.map +1 -0
  140. package/dist/services/iframe/index.d.cts +2 -0
  141. package/dist/services/iframe/index.d.cts.map +1 -0
  142. package/dist/services/iframe/index.d.mts +2 -0
  143. package/dist/services/iframe/index.d.mts.map +1 -0
  144. package/dist/services/iframe/index.mjs +1 -12
  145. package/dist/services/iframe/index.mjs.map +1 -1
  146. package/dist/services/index.cjs +25 -0
  147. package/dist/services/index.cjs.map +1 -0
  148. package/dist/services/index.d.cts +7 -0
  149. package/dist/services/index.d.cts.map +1 -0
  150. package/dist/services/index.d.mts +7 -0
  151. package/dist/services/index.d.mts.map +1 -0
  152. package/dist/services/index.mjs +6 -34
  153. package/dist/services/index.mjs.map +1 -1
  154. package/dist/services/node-js/NodeProcessExecutionService.cjs +30 -0
  155. package/dist/services/node-js/NodeProcessExecutionService.cjs.map +1 -0
  156. package/dist/{types/services/node-js/NodeProcessExecutionService.d.ts → services/node-js/NodeProcessExecutionService.d.cts} +5 -4
  157. package/dist/services/node-js/NodeProcessExecutionService.d.cts.map +1 -0
  158. package/dist/services/node-js/NodeProcessExecutionService.d.mts +13 -0
  159. package/dist/services/node-js/NodeProcessExecutionService.d.mts.map +1 -0
  160. package/dist/services/node-js/NodeProcessExecutionService.mjs +26 -21
  161. package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -1
  162. package/dist/services/node-js/NodeThreadExecutionService.cjs +32 -0
  163. package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -0
  164. package/dist/{types/services/node-js/NodeThreadExecutionService.d.ts → services/node-js/NodeThreadExecutionService.d.cts} +5 -4
  165. package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -0
  166. package/dist/services/node-js/NodeThreadExecutionService.d.mts +13 -0
  167. package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -0
  168. package/dist/services/node-js/NodeThreadExecutionService.mjs +28 -21
  169. package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
  170. package/dist/services/node-js/index.cjs +19 -0
  171. package/dist/services/node-js/index.cjs.map +1 -0
  172. package/dist/services/node-js/index.d.cts +3 -0
  173. package/dist/services/node-js/index.d.cts.map +1 -0
  174. package/dist/services/node-js/index.d.mts +3 -0
  175. package/dist/services/node-js/index.d.mts.map +1 -0
  176. package/dist/services/node-js/index.mjs +2 -26
  177. package/dist/services/node-js/index.mjs.map +1 -1
  178. package/dist/services/node.cjs +19 -0
  179. package/dist/services/node.cjs.map +1 -0
  180. package/dist/services/node.d.cts +3 -0
  181. package/dist/services/node.d.cts.map +1 -0
  182. package/dist/services/node.d.mts +3 -0
  183. package/dist/services/node.d.mts.map +1 -0
  184. package/dist/services/node.mjs +2 -44
  185. package/dist/services/node.mjs.map +1 -1
  186. package/dist/services/offscreen/OffscreenExecutionService.cjs +56 -0
  187. package/dist/services/offscreen/OffscreenExecutionService.cjs.map +1 -0
  188. package/dist/{types/services/offscreen/OffscreenExecutionService.d.ts → services/offscreen/OffscreenExecutionService.d.cts} +3 -2
  189. package/dist/services/offscreen/OffscreenExecutionService.d.cts.map +1 -0
  190. package/dist/services/offscreen/OffscreenExecutionService.d.mts +33 -0
  191. package/dist/services/offscreen/OffscreenExecutionService.d.mts.map +1 -0
  192. package/dist/services/offscreen/OffscreenExecutionService.mjs +51 -12
  193. package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -1
  194. package/dist/services/offscreen/index.cjs +18 -0
  195. package/dist/services/offscreen/index.cjs.map +1 -0
  196. package/dist/services/offscreen/index.d.cts +2 -0
  197. package/dist/services/offscreen/index.d.cts.map +1 -0
  198. package/dist/services/offscreen/index.d.mts +2 -0
  199. package/dist/services/offscreen/index.d.mts.map +1 -0
  200. package/dist/services/offscreen/index.mjs +1 -14
  201. package/dist/services/offscreen/index.mjs.map +1 -1
  202. package/dist/services/proxy/ProxyExecutionService.cjs +85 -0
  203. package/dist/services/proxy/ProxyExecutionService.cjs.map +1 -0
  204. package/dist/{types/services/proxy/ProxyExecutionService.d.ts → services/proxy/ProxyExecutionService.d.cts} +6 -4
  205. package/dist/services/proxy/ProxyExecutionService.d.cts.map +1 -0
  206. package/dist/services/proxy/ProxyExecutionService.d.mts +41 -0
  207. package/dist/services/proxy/ProxyExecutionService.d.mts.map +1 -0
  208. package/dist/services/proxy/ProxyExecutionService.mjs +79 -11
  209. package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -1
  210. package/dist/services/react-native.cjs +19 -0
  211. package/dist/services/react-native.cjs.map +1 -0
  212. package/dist/services/react-native.d.cts +3 -0
  213. package/dist/services/react-native.d.cts.map +1 -0
  214. package/dist/services/react-native.d.mts +3 -0
  215. package/dist/services/react-native.d.mts.map +1 -0
  216. package/dist/services/react-native.mjs +2 -41
  217. package/dist/services/react-native.mjs.map +1 -1
  218. package/dist/services/webview/WebViewExecutionService.cjs +54 -0
  219. package/dist/services/webview/WebViewExecutionService.cjs.map +1 -0
  220. package/dist/{types/services/webview/WebViewExecutionService.d.ts → services/webview/WebViewExecutionService.d.cts} +5 -3
  221. package/dist/services/webview/WebViewExecutionService.d.cts.map +1 -0
  222. package/dist/services/webview/WebViewExecutionService.d.mts +22 -0
  223. package/dist/services/webview/WebViewExecutionService.d.mts.map +1 -0
  224. package/dist/services/webview/WebViewExecutionService.mjs +48 -13
  225. package/dist/services/webview/WebViewExecutionService.mjs.map +1 -1
  226. package/dist/services/webview/WebViewMessageStream.cjs +89 -0
  227. package/dist/services/webview/WebViewMessageStream.cjs.map +1 -0
  228. package/dist/{types/services/webview/WebViewMessageStream.d.ts → services/webview/WebViewMessageStream.d.cts} +3 -2
  229. package/dist/services/webview/WebViewMessageStream.d.cts.map +1 -0
  230. package/dist/services/webview/WebViewMessageStream.d.mts +33 -0
  231. package/dist/services/webview/WebViewMessageStream.d.mts.map +1 -0
  232. package/dist/services/webview/WebViewMessageStream.mjs +84 -6
  233. package/dist/services/webview/WebViewMessageStream.mjs.map +1 -1
  234. package/dist/services/webview/index.cjs +18 -0
  235. package/dist/services/webview/index.cjs.map +1 -0
  236. package/dist/services/webview/index.d.cts +2 -0
  237. package/dist/services/webview/index.d.cts.map +1 -0
  238. package/dist/services/webview/index.d.mts +2 -0
  239. package/dist/services/webview/index.d.mts.map +1 -0
  240. package/dist/services/webview/index.mjs +1 -15
  241. package/dist/services/webview/index.mjs.map +1 -1
  242. package/dist/services/webworker/WebWorkerExecutionService.cjs +101 -0
  243. package/dist/services/webworker/WebWorkerExecutionService.cjs.map +1 -0
  244. package/dist/{types/services/webworker/WebWorkerExecutionService.d.ts → services/webworker/WebWorkerExecutionService.d.cts} +5 -3
  245. package/dist/services/webworker/WebWorkerExecutionService.d.cts.map +1 -0
  246. package/dist/services/webworker/WebWorkerExecutionService.d.mts +47 -0
  247. package/dist/services/webworker/WebWorkerExecutionService.d.mts.map +1 -0
  248. package/dist/services/webworker/WebWorkerExecutionService.mjs +96 -13
  249. package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -1
  250. package/dist/services/webworker/index.cjs +18 -0
  251. package/dist/services/webworker/index.cjs.map +1 -0
  252. package/dist/services/webworker/index.d.cts +2 -0
  253. package/dist/services/webworker/index.d.cts.map +1 -0
  254. package/dist/services/webworker/index.d.mts +2 -0
  255. package/dist/services/webworker/index.d.mts.map +1 -0
  256. package/dist/services/webworker/index.mjs +1 -15
  257. package/dist/services/webworker/index.mjs.map +1 -1
  258. package/dist/snaps/RequestQueue.cjs +44 -0
  259. package/dist/snaps/RequestQueue.cjs.map +1 -0
  260. package/dist/{types/snaps/RequestQueue.d.ts → snaps/RequestQueue.d.cts} +1 -0
  261. package/dist/snaps/RequestQueue.d.cts.map +1 -0
  262. package/dist/snaps/RequestQueue.d.mts +25 -0
  263. package/dist/snaps/RequestQueue.d.mts.map +1 -0
  264. package/dist/snaps/RequestQueue.mjs +39 -7
  265. package/dist/snaps/RequestQueue.mjs.map +1 -1
  266. package/dist/snaps/SnapController.cjs +1896 -0
  267. package/dist/snaps/SnapController.cjs.map +1 -0
  268. package/dist/{types/snaps/SnapController.d.ts → snaps/SnapController.d.cts} +39 -21
  269. package/dist/snaps/SnapController.d.cts.map +1 -0
  270. package/dist/snaps/SnapController.d.mts +667 -0
  271. package/dist/snaps/SnapController.d.mts.map +1 -0
  272. package/dist/snaps/SnapController.mjs +1890 -28
  273. package/dist/snaps/SnapController.mjs.map +1 -1
  274. package/dist/snaps/Timer.cjs +103 -0
  275. package/dist/snaps/Timer.cjs.map +1 -0
  276. package/dist/{types/snaps/Timer.d.ts → snaps/Timer.d.cts} +1 -0
  277. package/dist/snaps/Timer.d.cts.map +1 -0
  278. package/dist/snaps/Timer.d.mts +47 -0
  279. package/dist/snaps/Timer.d.mts.map +1 -0
  280. package/dist/snaps/Timer.mjs +98 -7
  281. package/dist/snaps/Timer.mjs.map +1 -1
  282. package/dist/snaps/constants.cjs +24 -0
  283. package/dist/snaps/constants.cjs.map +1 -0
  284. package/dist/{types/snaps/constants.d.ts → snaps/constants.d.cts} +1 -0
  285. package/dist/snaps/constants.d.cts.map +1 -0
  286. package/dist/snaps/constants.d.mts +8 -0
  287. package/dist/snaps/constants.d.mts.map +1 -0
  288. package/dist/snaps/constants.mjs +19 -8
  289. package/dist/snaps/constants.mjs.map +1 -1
  290. package/dist/snaps/index.cjs +21 -0
  291. package/dist/snaps/index.cjs.map +1 -0
  292. package/dist/snaps/index.d.cts +5 -0
  293. package/dist/snaps/index.d.cts.map +1 -0
  294. package/dist/snaps/index.d.mts +5 -0
  295. package/dist/snaps/index.d.mts.map +1 -0
  296. package/dist/snaps/index.mjs +4 -62
  297. package/dist/snaps/index.mjs.map +1 -1
  298. package/dist/snaps/location/http.cjs +75 -0
  299. package/dist/snaps/location/http.cjs.map +1 -0
  300. package/dist/{types/snaps/location/http.d.ts → snaps/location/http.d.cts} +4 -3
  301. package/dist/snaps/location/http.d.cts.map +1 -0
  302. package/dist/snaps/location/http.d.mts +23 -0
  303. package/dist/snaps/location/http.d.mts.map +1 -0
  304. package/dist/snaps/location/http.mjs +70 -7
  305. package/dist/snaps/location/http.mjs.map +1 -1
  306. package/dist/snaps/location/index.cjs +21 -0
  307. package/dist/snaps/location/index.cjs.map +1 -0
  308. package/dist/snaps/location/index.d.cts +5 -0
  309. package/dist/snaps/location/index.d.cts.map +1 -0
  310. package/dist/snaps/location/index.d.mts +5 -0
  311. package/dist/snaps/location/index.d.mts.map +1 -0
  312. package/dist/snaps/location/index.mjs +4 -30
  313. package/dist/snaps/location/index.mjs.map +1 -1
  314. package/dist/snaps/location/local.cjs +51 -0
  315. package/dist/snaps/location/local.cjs.map +1 -0
  316. package/dist/{types/snaps/location/local.d.ts → snaps/location/local.d.cts} +4 -3
  317. package/dist/snaps/location/local.d.cts.map +1 -0
  318. package/dist/snaps/location/local.d.mts +11 -0
  319. package/dist/snaps/location/local.d.mts.map +1 -0
  320. package/dist/snaps/location/local.mjs +45 -7
  321. package/dist/snaps/location/local.mjs.map +1 -1
  322. package/dist/snaps/location/location.cjs +34 -0
  323. package/dist/{chunk-2AEM5R2M.mjs.map → snaps/location/location.cjs.map} +1 -1
  324. package/dist/{types/snaps/location/location.d.ts → snaps/location/location.d.cts} +4 -3
  325. package/dist/snaps/location/location.d.cts.map +1 -0
  326. package/dist/snaps/location/location.d.mts +45 -0
  327. package/dist/snaps/location/location.d.mts.map +1 -0
  328. package/dist/snaps/location/location.mjs +29 -10
  329. package/dist/snaps/location/location.mjs.map +1 -1
  330. package/dist/snaps/location/npm.cjs +335 -0
  331. package/dist/snaps/location/npm.cjs.map +1 -0
  332. package/dist/{types/snaps/location/npm.d.ts → snaps/location/npm.d.cts} +5 -4
  333. package/dist/snaps/location/npm.d.cts.map +1 -0
  334. package/dist/snaps/location/npm.d.mts +84 -0
  335. package/dist/snaps/location/npm.d.mts.map +1 -0
  336. package/dist/snaps/location/npm.mjs +331 -16
  337. package/dist/snaps/location/npm.mjs.map +1 -1
  338. package/dist/snaps/registry/index.cjs +19 -0
  339. package/dist/snaps/registry/index.cjs.map +1 -0
  340. package/dist/snaps/registry/index.d.cts +3 -0
  341. package/dist/snaps/registry/index.d.cts.map +1 -0
  342. package/dist/snaps/registry/index.d.mts +3 -0
  343. package/dist/snaps/registry/index.d.mts.map +1 -0
  344. package/dist/snaps/registry/index.mjs +2 -12
  345. package/dist/snaps/registry/index.mjs.map +1 -1
  346. package/dist/snaps/registry/json.cjs +224 -0
  347. package/dist/snaps/registry/json.cjs.map +1 -0
  348. package/dist/{types/snaps/registry/json.d.ts → snaps/registry/json.d.cts} +10 -7
  349. package/dist/snaps/registry/json.d.cts.map +1 -0
  350. package/dist/snaps/registry/json.d.mts +51 -0
  351. package/dist/snaps/registry/json.d.mts.map +1 -0
  352. package/dist/snaps/registry/json.mjs +219 -7
  353. package/dist/snaps/registry/json.mjs.map +1 -1
  354. package/dist/snaps/registry/registry.cjs +11 -0
  355. package/dist/snaps/registry/registry.cjs.map +1 -0
  356. package/dist/{types/snaps/registry/registry.d.ts → snaps/registry/registry.d.cts} +4 -3
  357. package/dist/snaps/registry/registry.d.cts.map +1 -0
  358. package/dist/snaps/registry/registry.d.mts +42 -0
  359. package/dist/snaps/registry/registry.d.mts.map +1 -0
  360. package/dist/snaps/registry/registry.mjs +7 -7
  361. package/dist/snaps/registry/registry.mjs.map +1 -1
  362. package/dist/snaps/selectors.cjs +6 -0
  363. package/dist/snaps/selectors.cjs.map +1 -0
  364. package/dist/snaps/selectors.d.cts +3 -0
  365. package/dist/snaps/selectors.d.cts.map +1 -0
  366. package/dist/snaps/selectors.d.mts +3 -0
  367. package/dist/snaps/selectors.d.mts.map +1 -0
  368. package/dist/snaps/selectors.mjs +1 -7
  369. package/dist/snaps/selectors.mjs.map +1 -1
  370. package/dist/types/controllers.cjs +4 -0
  371. package/dist/types/controllers.cjs.map +1 -0
  372. package/dist/types/{types/controllers.d.ts → controllers.d.cts} +3 -2
  373. package/dist/types/controllers.d.cts.map +1 -0
  374. package/dist/types/controllers.d.mts +132 -0
  375. package/dist/types/controllers.d.mts.map +1 -0
  376. package/dist/types/controllers.mjs +2 -1
  377. package/dist/types/controllers.mjs.map +1 -1
  378. package/dist/types/encryptor.cjs +3 -0
  379. package/dist/types/encryptor.cjs.map +1 -0
  380. package/dist/types/{types/encryptor.d.ts → encryptor.d.cts} +2 -1
  381. package/dist/types/encryptor.d.cts.map +1 -0
  382. package/dist/types/encryptor.d.mts +99 -0
  383. package/dist/types/encryptor.d.mts.map +1 -0
  384. package/dist/types/encryptor.mjs +1 -1
  385. package/dist/types/encryptor.mjs.map +1 -1
  386. package/dist/types/index.cjs +19 -0
  387. package/dist/types/index.cjs.map +1 -0
  388. package/dist/types/index.d.cts +3 -0
  389. package/dist/types/index.d.cts.map +1 -0
  390. package/dist/types/index.d.mts +3 -0
  391. package/dist/types/index.d.mts.map +1 -0
  392. package/dist/types/index.mjs +2 -2
  393. package/dist/types/index.mjs.map +1 -1
  394. package/dist/utils.cjs +174 -0
  395. package/dist/utils.cjs.map +1 -0
  396. package/dist/{types/utils.d.ts → utils.d.cts} +9 -15
  397. package/dist/utils.d.cts.map +1 -0
  398. package/dist/utils.d.mts +245 -0
  399. package/dist/utils.d.mts.map +1 -0
  400. package/dist/utils.mjs +167 -22
  401. package/dist/utils.mjs.map +1 -1
  402. package/package.json +42 -30
  403. package/react-native.d.ts +3 -1
  404. package/react-native.js +1 -1
  405. package/dist/chunk-272IFIK7.mjs +0 -1
  406. package/dist/chunk-272IFIK7.mjs.map +0 -1
  407. package/dist/chunk-2AEM5R2M.mjs +0 -40
  408. package/dist/chunk-2MH7QYBP.mjs +0 -2548
  409. package/dist/chunk-2MH7QYBP.mjs.map +0 -1
  410. package/dist/chunk-2XQD4P2S.mjs +0 -1
  411. package/dist/chunk-2XQD4P2S.mjs.map +0 -1
  412. package/dist/chunk-33RRV7F4.mjs +0 -283
  413. package/dist/chunk-33RRV7F4.mjs.map +0 -1
  414. package/dist/chunk-3RNW7OKG.mjs +0 -1
  415. package/dist/chunk-3RNW7OKG.mjs.map +0 -1
  416. package/dist/chunk-3WEWHK2I.mjs +0 -104
  417. package/dist/chunk-3WEWHK2I.mjs.map +0 -1
  418. package/dist/chunk-4CA3O64H.js +0 -13
  419. package/dist/chunk-4CA3O64H.js.map +0 -1
  420. package/dist/chunk-4HVWEABQ.mjs +0 -9
  421. package/dist/chunk-4HVWEABQ.mjs.map +0 -1
  422. package/dist/chunk-4M2FX2AT.mjs +0 -26
  423. package/dist/chunk-4M2FX2AT.mjs.map +0 -1
  424. package/dist/chunk-4URGXJP7.js +0 -1
  425. package/dist/chunk-4URGXJP7.js.map +0 -1
  426. package/dist/chunk-5O4O4BI5.js +0 -276
  427. package/dist/chunk-5O4O4BI5.js.map +0 -1
  428. package/dist/chunk-6EZSNS4O.mjs +0 -59
  429. package/dist/chunk-6EZSNS4O.mjs.map +0 -1
  430. package/dist/chunk-6GMWL4JR.mjs +0 -92
  431. package/dist/chunk-6GMWL4JR.mjs.map +0 -1
  432. package/dist/chunk-6M4XK4PN.mjs +0 -273
  433. package/dist/chunk-6M4XK4PN.mjs.map +0 -1
  434. package/dist/chunk-6WGCLJGC.mjs +0 -58
  435. package/dist/chunk-6WGCLJGC.mjs.map +0 -1
  436. package/dist/chunk-7BUNUNUC.js +0 -58
  437. package/dist/chunk-7BUNUNUC.js.map +0 -1
  438. package/dist/chunk-7Y6P5FRN.js +0 -60
  439. package/dist/chunk-7Y6P5FRN.js.map +0 -1
  440. package/dist/chunk-A6WJEA3C.js +0 -1
  441. package/dist/chunk-A6WJEA3C.js.map +0 -1
  442. package/dist/chunk-AP7CJ6DA.js +0 -47
  443. package/dist/chunk-AP7CJ6DA.js.map +0 -1
  444. package/dist/chunk-B3UTLNYS.mjs +0 -48
  445. package/dist/chunk-B3UTLNYS.mjs.map +0 -1
  446. package/dist/chunk-B6KTRDBK.js +0 -127
  447. package/dist/chunk-B6KTRDBK.js.map +0 -1
  448. package/dist/chunk-B7R3EWM3.mjs +0 -1
  449. package/dist/chunk-B7R3EWM3.mjs.map +0 -1
  450. package/dist/chunk-BAEXVO3U.mjs +0 -1
  451. package/dist/chunk-BAEXVO3U.mjs.map +0 -1
  452. package/dist/chunk-BO2ZDPWV.js +0 -59
  453. package/dist/chunk-BO2ZDPWV.js.map +0 -1
  454. package/dist/chunk-BOFPNIRX.js +0 -119
  455. package/dist/chunk-BOFPNIRX.js.map +0 -1
  456. package/dist/chunk-C4D6GBMY.js +0 -71
  457. package/dist/chunk-C4D6GBMY.js.map +0 -1
  458. package/dist/chunk-CJY2LYEL.mjs +0 -253
  459. package/dist/chunk-CJY2LYEL.mjs.map +0 -1
  460. package/dist/chunk-CPUUURMT.js +0 -273
  461. package/dist/chunk-CPUUURMT.js.map +0 -1
  462. package/dist/chunk-D66YLO7T.js +0 -38
  463. package/dist/chunk-D66YLO7T.js.map +0 -1
  464. package/dist/chunk-D74XJG2L.js +0 -1
  465. package/dist/chunk-D74XJG2L.js.map +0 -1
  466. package/dist/chunk-ESQPQNEF.mjs +0 -1
  467. package/dist/chunk-ESQPQNEF.mjs.map +0 -1
  468. package/dist/chunk-EVKVZUYY.js +0 -104
  469. package/dist/chunk-EVKVZUYY.js.map +0 -1
  470. package/dist/chunk-EXN2TFDJ.js +0 -38
  471. package/dist/chunk-EXN2TFDJ.js.map +0 -1
  472. package/dist/chunk-FKQTV3LO.js +0 -2548
  473. package/dist/chunk-FKQTV3LO.js.map +0 -1
  474. package/dist/chunk-FX5AADOV.mjs +0 -1
  475. package/dist/chunk-FX5AADOV.mjs.map +0 -1
  476. package/dist/chunk-FZOI4WPB.js +0 -82
  477. package/dist/chunk-FZOI4WPB.js.map +0 -1
  478. package/dist/chunk-G66GQJS6.js +0 -1
  479. package/dist/chunk-G66GQJS6.js.map +0 -1
  480. package/dist/chunk-G7U6WKWS.mjs +0 -1
  481. package/dist/chunk-G7U6WKWS.mjs.map +0 -1
  482. package/dist/chunk-HLQQTAMM.mjs +0 -105
  483. package/dist/chunk-HLQQTAMM.mjs.map +0 -1
  484. package/dist/chunk-HOY6NKQR.js +0 -1
  485. package/dist/chunk-HOY6NKQR.js.map +0 -1
  486. package/dist/chunk-HP6S5IOB.js +0 -1
  487. package/dist/chunk-HP6S5IOB.js.map +0 -1
  488. package/dist/chunk-HWJE3SDW.mjs +0 -1
  489. package/dist/chunk-HWJE3SDW.mjs.map +0 -1
  490. package/dist/chunk-IABOI7TW.mjs +0 -1
  491. package/dist/chunk-IABOI7TW.mjs.map +0 -1
  492. package/dist/chunk-IDCWJJCQ.js +0 -1
  493. package/dist/chunk-IDCWJJCQ.js.map +0 -1
  494. package/dist/chunk-IGC4E7PI.mjs +0 -71
  495. package/dist/chunk-IGC4E7PI.mjs.map +0 -1
  496. package/dist/chunk-JAUAKTUL.js +0 -1
  497. package/dist/chunk-JAUAKTUL.js.map +0 -1
  498. package/dist/chunk-JQ54YYLU.js +0 -26
  499. package/dist/chunk-JQ54YYLU.js.map +0 -1
  500. package/dist/chunk-JW7WBUL7.js +0 -1
  501. package/dist/chunk-JW7WBUL7.js.map +0 -1
  502. package/dist/chunk-KCMULJ2M.mjs +0 -1
  503. package/dist/chunk-KCMULJ2M.mjs.map +0 -1
  504. package/dist/chunk-KELDSV7H.js +0 -39
  505. package/dist/chunk-KELDSV7H.js.map +0 -1
  506. package/dist/chunk-KRI4OKC3.mjs +0 -127
  507. package/dist/chunk-KRI4OKC3.mjs.map +0 -1
  508. package/dist/chunk-KYRKZ3RH.mjs +0 -38
  509. package/dist/chunk-KYRKZ3RH.mjs.map +0 -1
  510. package/dist/chunk-LDL6LJ3P.mjs +0 -38
  511. package/dist/chunk-LDL6LJ3P.mjs.map +0 -1
  512. package/dist/chunk-LWBPKSU2.js +0 -48
  513. package/dist/chunk-LWBPKSU2.js.map +0 -1
  514. package/dist/chunk-M7DWHPVM.js +0 -1
  515. package/dist/chunk-M7DWHPVM.js.map +0 -1
  516. package/dist/chunk-NC5PBDKD.mjs +0 -47
  517. package/dist/chunk-NC5PBDKD.mjs.map +0 -1
  518. package/dist/chunk-NXZVKBSV.js +0 -9
  519. package/dist/chunk-NXZVKBSV.js.map +0 -1
  520. package/dist/chunk-NZOUFWUN.mjs +0 -1
  521. package/dist/chunk-NZOUFWUN.mjs.map +0 -1
  522. package/dist/chunk-OHMCPTOI.js +0 -1
  523. package/dist/chunk-OHMCPTOI.js.map +0 -1
  524. package/dist/chunk-OIEUL55W.js +0 -1
  525. package/dist/chunk-OIEUL55W.js.map +0 -1
  526. package/dist/chunk-OJBUUQ5D.js +0 -253
  527. package/dist/chunk-OJBUUQ5D.js.map +0 -1
  528. package/dist/chunk-OVATPF5I.js +0 -58
  529. package/dist/chunk-OVATPF5I.js.map +0 -1
  530. package/dist/chunk-P66VIDFG.js +0 -105
  531. package/dist/chunk-P66VIDFG.js.map +0 -1
  532. package/dist/chunk-P7Y6MIZW.mjs +0 -7
  533. package/dist/chunk-P7Y6MIZW.mjs.map +0 -1
  534. package/dist/chunk-POQSARDG.js +0 -40
  535. package/dist/chunk-POQSARDG.js.map +0 -1
  536. package/dist/chunk-PYSDWIVK.js +0 -38
  537. package/dist/chunk-PYSDWIVK.js.map +0 -1
  538. package/dist/chunk-QL3QGUTM.mjs +0 -1
  539. package/dist/chunk-QL3QGUTM.mjs.map +0 -1
  540. package/dist/chunk-QRISQRFI.js +0 -399
  541. package/dist/chunk-QRISQRFI.js.map +0 -1
  542. package/dist/chunk-RDBT3ZJQ.js +0 -92
  543. package/dist/chunk-RDBT3ZJQ.js.map +0 -1
  544. package/dist/chunk-TG6OXBLR.js +0 -1
  545. package/dist/chunk-TG6OXBLR.js.map +0 -1
  546. package/dist/chunk-TMWMIQV4.js +0 -1
  547. package/dist/chunk-TMWMIQV4.js.map +0 -1
  548. package/dist/chunk-TSDUJNOP.mjs +0 -399
  549. package/dist/chunk-TSDUJNOP.mjs.map +0 -1
  550. package/dist/chunk-U74FML7Z.mjs +0 -1
  551. package/dist/chunk-U74FML7Z.mjs.map +0 -1
  552. package/dist/chunk-UMVUXQ3B.mjs +0 -276
  553. package/dist/chunk-UMVUXQ3B.mjs.map +0 -1
  554. package/dist/chunk-V6NFZ47P.mjs +0 -1
  555. package/dist/chunk-V6NFZ47P.mjs.map +0 -1
  556. package/dist/chunk-VKMY6CKT.mjs +0 -39
  557. package/dist/chunk-VKMY6CKT.mjs.map +0 -1
  558. package/dist/chunk-VNOCJWOK.js +0 -1
  559. package/dist/chunk-VNOCJWOK.js.map +0 -1
  560. package/dist/chunk-WEY7ICES.js +0 -1
  561. package/dist/chunk-WEY7ICES.js.map +0 -1
  562. package/dist/chunk-WKQRCGUW.mjs +0 -331
  563. package/dist/chunk-WKQRCGUW.mjs.map +0 -1
  564. package/dist/chunk-WR7CVDEY.mjs +0 -58
  565. package/dist/chunk-WR7CVDEY.mjs.map +0 -1
  566. package/dist/chunk-XFUP7RFI.js +0 -283
  567. package/dist/chunk-XFUP7RFI.js.map +0 -1
  568. package/dist/chunk-XO7KDFBY.mjs +0 -119
  569. package/dist/chunk-XO7KDFBY.mjs.map +0 -1
  570. package/dist/chunk-XOSHP4J3.mjs +0 -82
  571. package/dist/chunk-XOSHP4J3.mjs.map +0 -1
  572. package/dist/chunk-XWDEGRM5.js +0 -331
  573. package/dist/chunk-XWDEGRM5.js.map +0 -1
  574. package/dist/chunk-YRZVIDCF.mjs +0 -38
  575. package/dist/chunk-YRZVIDCF.mjs.map +0 -1
  576. package/dist/chunk-YYPUPKQY.js +0 -7
  577. package/dist/chunk-YYPUPKQY.js.map +0 -1
  578. package/dist/chunk-ZQAGLOXD.mjs +0 -1
  579. package/dist/chunk-ZQAGLOXD.mjs.map +0 -1
  580. package/dist/chunk-ZVOYOZFT.mjs +0 -60
  581. package/dist/chunk-ZVOYOZFT.mjs.map +0 -1
  582. package/dist/chunk-ZZD3HUNE.mjs +0 -13
  583. package/dist/chunk-ZZD3HUNE.mjs.map +0 -1
  584. package/dist/cronjob/CronjobController.js +0 -43
  585. package/dist/cronjob/CronjobController.js.map +0 -1
  586. package/dist/cronjob/index.js +0 -43
  587. package/dist/cronjob/index.js.map +0 -1
  588. package/dist/fsm.js +0 -10
  589. package/dist/fsm.js.map +0 -1
  590. package/dist/index.js +0 -125
  591. package/dist/index.js.map +0 -1
  592. package/dist/insights/SnapInsightsController.js +0 -25
  593. package/dist/insights/SnapInsightsController.js.map +0 -1
  594. package/dist/insights/index.js +0 -26
  595. package/dist/insights/index.js.map +0 -1
  596. package/dist/interface/SnapInterfaceController.js +0 -9
  597. package/dist/interface/SnapInterfaceController.js.map +0 -1
  598. package/dist/interface/index.js +0 -10
  599. package/dist/interface/index.js.map +0 -1
  600. package/dist/interface/utils.js +0 -14
  601. package/dist/interface/utils.js.map +0 -1
  602. package/dist/logging.js +0 -8
  603. package/dist/logging.js.map +0 -1
  604. package/dist/node.js +0 -135
  605. package/dist/node.js.map +0 -1
  606. package/dist/react-native.js +0 -132
  607. package/dist/react-native.js.map +0 -1
  608. package/dist/services/AbstractExecutionService.js +0 -13
  609. package/dist/services/AbstractExecutionService.js.map +0 -1
  610. package/dist/services/ExecutionService.js +0 -2
  611. package/dist/services/ExecutionService.js.map +0 -1
  612. package/dist/services/ProxyPostMessageStream.js +0 -8
  613. package/dist/services/ProxyPostMessageStream.js.map +0 -1
  614. package/dist/services/browser.js +0 -40
  615. package/dist/services/browser.js.map +0 -1
  616. package/dist/services/iframe/IframeExecutionService.js +0 -12
  617. package/dist/services/iframe/IframeExecutionService.js.map +0 -1
  618. package/dist/services/iframe/index.js +0 -13
  619. package/dist/services/iframe/index.js.map +0 -1
  620. package/dist/services/index.js +0 -35
  621. package/dist/services/index.js.map +0 -1
  622. package/dist/services/node-js/NodeProcessExecutionService.js +0 -22
  623. package/dist/services/node-js/NodeProcessExecutionService.js.map +0 -1
  624. package/dist/services/node-js/NodeThreadExecutionService.js +0 -22
  625. package/dist/services/node-js/NodeThreadExecutionService.js.map +0 -1
  626. package/dist/services/node-js/index.js +0 -27
  627. package/dist/services/node-js/index.js.map +0 -1
  628. package/dist/services/node.js +0 -45
  629. package/dist/services/node.js.map +0 -1
  630. package/dist/services/offscreen/OffscreenExecutionService.js +0 -14
  631. package/dist/services/offscreen/OffscreenExecutionService.js.map +0 -1
  632. package/dist/services/offscreen/index.js +0 -15
  633. package/dist/services/offscreen/index.js.map +0 -1
  634. package/dist/services/proxy/ProxyExecutionService.js +0 -13
  635. package/dist/services/proxy/ProxyExecutionService.js.map +0 -1
  636. package/dist/services/react-native.js +0 -42
  637. package/dist/services/react-native.js.map +0 -1
  638. package/dist/services/webview/WebViewExecutionService.js +0 -15
  639. package/dist/services/webview/WebViewExecutionService.js.map +0 -1
  640. package/dist/services/webview/WebViewMessageStream.js +0 -8
  641. package/dist/services/webview/WebViewMessageStream.js.map +0 -1
  642. package/dist/services/webview/index.js +0 -16
  643. package/dist/services/webview/index.js.map +0 -1
  644. package/dist/services/webworker/WebWorkerExecutionService.js +0 -15
  645. package/dist/services/webworker/WebWorkerExecutionService.js.map +0 -1
  646. package/dist/services/webworker/index.js +0 -16
  647. package/dist/services/webworker/index.js.map +0 -1
  648. package/dist/snaps/RequestQueue.js +0 -8
  649. package/dist/snaps/RequestQueue.js.map +0 -1
  650. package/dist/snaps/SnapController.js +0 -30
  651. package/dist/snaps/SnapController.js.map +0 -1
  652. package/dist/snaps/Timer.js +0 -8
  653. package/dist/snaps/Timer.js.map +0 -1
  654. package/dist/snaps/constants.js +0 -10
  655. package/dist/snaps/constants.js.map +0 -1
  656. package/dist/snaps/index.js +0 -63
  657. package/dist/snaps/index.js.map +0 -1
  658. package/dist/snaps/location/http.js +0 -8
  659. package/dist/snaps/location/http.js.map +0 -1
  660. package/dist/snaps/location/index.js +0 -31
  661. package/dist/snaps/location/index.js.map +0 -1
  662. package/dist/snaps/location/local.js +0 -9
  663. package/dist/snaps/location/local.js.map +0 -1
  664. package/dist/snaps/location/location.js +0 -11
  665. package/dist/snaps/location/location.js.map +0 -1
  666. package/dist/snaps/location/npm.js +0 -18
  667. package/dist/snaps/location/npm.js.map +0 -1
  668. package/dist/snaps/registry/index.js +0 -13
  669. package/dist/snaps/registry/index.js.map +0 -1
  670. package/dist/snaps/registry/json.js +0 -9
  671. package/dist/snaps/registry/json.js.map +0 -1
  672. package/dist/snaps/registry/registry.js +0 -8
  673. package/dist/snaps/registry/registry.js.map +0 -1
  674. package/dist/snaps/selectors.js +0 -8
  675. package/dist/snaps/selectors.js.map +0 -1
  676. package/dist/tsconfig.build.tsbuildinfo +0 -1
  677. package/dist/types/controllers.js +0 -2
  678. package/dist/types/controllers.js.map +0 -1
  679. package/dist/types/cronjob/index.d.ts +0 -1
  680. package/dist/types/encryptor.js +0 -2
  681. package/dist/types/encryptor.js.map +0 -1
  682. package/dist/types/index.d.ts +0 -7
  683. package/dist/types/index.js +0 -3
  684. package/dist/types/index.js.map +0 -1
  685. package/dist/types/insights/index.d.ts +0 -1
  686. package/dist/types/interface/index.d.ts +0 -1
  687. package/dist/types/node.d.ts +0 -2
  688. package/dist/types/react-native.d.ts +0 -2
  689. package/dist/types/services/browser.d.ts +0 -7
  690. package/dist/types/services/iframe/index.d.ts +0 -1
  691. package/dist/types/services/index.d.ts +0 -6
  692. package/dist/types/services/node-js/index.d.ts +0 -2
  693. package/dist/types/services/node.d.ts +0 -2
  694. package/dist/types/services/offscreen/index.d.ts +0 -1
  695. package/dist/types/services/react-native.d.ts +0 -2
  696. package/dist/types/services/webview/index.d.ts +0 -1
  697. package/dist/types/services/webworker/index.d.ts +0 -1
  698. package/dist/types/snaps/index.d.ts +0 -4
  699. package/dist/types/snaps/location/index.d.ts +0 -4
  700. package/dist/types/snaps/registry/index.d.ts +0 -2
  701. package/dist/types/snaps/selectors.d.ts +0 -2
  702. package/dist/types/types/index.d.ts +0 -2
  703. package/dist/types/vendor/global.d.js +0 -1
  704. package/dist/types/vendor/global.d.js.map +0 -1
  705. package/dist/types/vendor/global.d.mjs +0 -1
  706. package/dist/types/vendor/global.d.mjs.map +0 -1
  707. package/dist/types/vendor/readable-stream.d.js +0 -1
  708. package/dist/types/vendor/readable-stream.d.js.map +0 -1
  709. package/dist/types/vendor/readable-stream.d.mjs +0 -1
  710. package/dist/types/vendor/readable-stream.d.mjs.map +0 -1
  711. package/dist/types/vendor/zlib.d.js +0 -1
  712. package/dist/types/vendor/zlib.d.js.map +0 -1
  713. package/dist/types/vendor/zlib.d.mjs +0 -1
  714. package/dist/types/vendor/zlib.d.mjs.map +0 -1
  715. package/dist/utils.js +0 -23
  716. package/dist/utils.js.map +0 -1
@@ -1,253 +0,0 @@
1
- import {
2
- constructState,
3
- getJsxInterface,
4
- validateInterfaceContext
5
- } from "./chunk-3WEWHK2I.mjs";
6
- import {
7
- __privateAdd,
8
- __privateMethod
9
- } from "./chunk-YRZVIDCF.mjs";
10
-
11
- // src/interface/SnapInterfaceController.ts
12
- import { BaseController } from "@metamask/base-controller";
13
- import { getJsonSizeUnsafe, validateJsxLinks } from "@metamask/snaps-utils";
14
- import { assert } from "@metamask/utils";
15
- import { nanoid } from "nanoid";
16
- var MAX_UI_CONTENT_SIZE = 1e7;
17
- var controllerName = "SnapInterfaceController";
18
- var _registerMessageHandlers, registerMessageHandlers_fn, _validateArgs, validateArgs_fn, _validateApproval, validateApproval_fn, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn, _checkPhishingList, checkPhishingList_fn, _hasApprovalRequest, hasApprovalRequest_fn, _acceptApprovalRequest, acceptApprovalRequest_fn, _validateContent, validateContent_fn;
19
- var SnapInterfaceController = class extends BaseController {
20
- constructor({ messenger, state }) {
21
- super({
22
- messenger,
23
- metadata: {
24
- interfaces: { persist: false, anonymous: false }
25
- },
26
- name: controllerName,
27
- state: { interfaces: {}, ...state }
28
- });
29
- /**
30
- * Constructor helper for registering this controller's messaging system
31
- * actions.
32
- */
33
- __privateAdd(this, _registerMessageHandlers);
34
- /**
35
- * Utility function to validate the args passed to the other methods.
36
- *
37
- * @param snapId - The snap id.
38
- * @param id - The interface id.
39
- */
40
- __privateAdd(this, _validateArgs);
41
- /**
42
- * Utility function to validate that the approval request exists.
43
- *
44
- * @param id - The interface id.
45
- */
46
- __privateAdd(this, _validateApproval);
47
- /**
48
- * Trigger a Phishing list update if needed.
49
- */
50
- __privateAdd(this, _triggerPhishingListUpdate);
51
- /**
52
- * Check an origin against the phishing list.
53
- *
54
- * @param origin - The origin to check.
55
- * @returns True if the origin is on the phishing list, otherwise false.
56
- */
57
- __privateAdd(this, _checkPhishingList);
58
- /**
59
- * Check if an approval request exists for a given interface by looking up
60
- * if the ApprovalController has a request with the given interface ID.
61
- *
62
- * @param id - The interface id.
63
- * @returns True if an approval request exists, otherwise false.
64
- */
65
- __privateAdd(this, _hasApprovalRequest);
66
- /**
67
- * Accept an approval request for a given interface.
68
- *
69
- * @param id - The interface id.
70
- * @param value - The value to resolve the promise with.
71
- */
72
- __privateAdd(this, _acceptApprovalRequest);
73
- /**
74
- * Utility function to validate the components of an interface.
75
- * Throws if something is invalid.
76
- *
77
- * @param element - The JSX element to verify.
78
- */
79
- __privateAdd(this, _validateContent);
80
- __privateMethod(this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
81
- }
82
- /**
83
- * Create an interface in the controller state with the associated data.
84
- *
85
- * @param snapId - The snap id that created the interface.
86
- * @param content - The interface content.
87
- * @param context - An optional interface context object.
88
- * @returns The newly interface id.
89
- */
90
- async createInterface(snapId, content, context) {
91
- const element = getJsxInterface(content);
92
- await __privateMethod(this, _validateContent, validateContent_fn).call(this, element);
93
- validateInterfaceContext(context);
94
- const id = nanoid();
95
- const componentState = constructState({}, element);
96
- this.update((draftState) => {
97
- draftState.interfaces[id] = {
98
- snapId,
99
- content: element,
100
- state: componentState,
101
- context: context ?? null
102
- };
103
- });
104
- return id;
105
- }
106
- /**
107
- * Get the data of a given interface id.
108
- *
109
- * @param snapId - The snap id requesting the interface data.
110
- * @param id - The interface id.
111
- * @returns The interface state.
112
- */
113
- getInterface(snapId, id) {
114
- __privateMethod(this, _validateArgs, validateArgs_fn).call(this, snapId, id);
115
- return this.state.interfaces[id];
116
- }
117
- /**
118
- * Update the interface with the given content.
119
- *
120
- * @param snapId - The snap id requesting the update.
121
- * @param id - The interface id.
122
- * @param content - The new content.
123
- */
124
- async updateInterface(snapId, id, content) {
125
- __privateMethod(this, _validateArgs, validateArgs_fn).call(this, snapId, id);
126
- const element = getJsxInterface(content);
127
- await __privateMethod(this, _validateContent, validateContent_fn).call(this, element);
128
- const oldState = this.state.interfaces[id].state;
129
- const newState = constructState(oldState, element);
130
- this.update((draftState) => {
131
- draftState.interfaces[id].state = newState;
132
- draftState.interfaces[id].content = element;
133
- });
134
- }
135
- /**
136
- * Delete an interface from state.
137
- *
138
- * @param id - The interface id.
139
- */
140
- deleteInterface(id) {
141
- this.update((draftState) => {
142
- delete draftState.interfaces[id];
143
- });
144
- }
145
- /**
146
- * Update the interface state.
147
- *
148
- * @param id - The interface id.
149
- * @param state - The new state.
150
- */
151
- updateInterfaceState(id, state) {
152
- this.update((draftState) => {
153
- draftState.interfaces[id].state = state;
154
- });
155
- }
156
- /**
157
- * Resolve the promise of a given interface approval request.
158
- * The approval needs to have the same ID as the interface.
159
- *
160
- * @param snapId - The snap id.
161
- * @param id - The interface id.
162
- * @param value - The value to resolve the promise with.
163
- */
164
- async resolveInterface(snapId, id, value) {
165
- __privateMethod(this, _validateArgs, validateArgs_fn).call(this, snapId, id);
166
- __privateMethod(this, _validateApproval, validateApproval_fn).call(this, id);
167
- await __privateMethod(this, _acceptApprovalRequest, acceptApprovalRequest_fn).call(this, id, value);
168
- this.deleteInterface(id);
169
- }
170
- };
171
- _registerMessageHandlers = new WeakSet();
172
- registerMessageHandlers_fn = function() {
173
- this.messagingSystem.registerActionHandler(
174
- `${controllerName}:createInterface`,
175
- this.createInterface.bind(this)
176
- );
177
- this.messagingSystem.registerActionHandler(
178
- `${controllerName}:getInterface`,
179
- this.getInterface.bind(this)
180
- );
181
- this.messagingSystem.registerActionHandler(
182
- `${controllerName}:updateInterface`,
183
- this.updateInterface.bind(this)
184
- );
185
- this.messagingSystem.registerActionHandler(
186
- `${controllerName}:deleteInterface`,
187
- this.deleteInterface.bind(this)
188
- );
189
- this.messagingSystem.registerActionHandler(
190
- `${controllerName}:updateInterfaceState`,
191
- this.updateInterfaceState.bind(this)
192
- );
193
- this.messagingSystem.registerActionHandler(
194
- `${controllerName}:resolveInterface`,
195
- this.resolveInterface.bind(this)
196
- );
197
- };
198
- _validateArgs = new WeakSet();
199
- validateArgs_fn = function(snapId, id) {
200
- const existingInterface = this.state.interfaces[id];
201
- assert(
202
- existingInterface !== void 0,
203
- `Interface with id '${id}' not found.`
204
- );
205
- assert(
206
- existingInterface.snapId === snapId,
207
- `Interface not created by ${snapId}.`
208
- );
209
- };
210
- _validateApproval = new WeakSet();
211
- validateApproval_fn = function(id) {
212
- assert(
213
- __privateMethod(this, _hasApprovalRequest, hasApprovalRequest_fn).call(this, id),
214
- `Approval request with id '${id}' not found.`
215
- );
216
- };
217
- _triggerPhishingListUpdate = new WeakSet();
218
- triggerPhishingListUpdate_fn = async function() {
219
- await this.messagingSystem.call("PhishingController:maybeUpdateState");
220
- };
221
- _checkPhishingList = new WeakSet();
222
- checkPhishingList_fn = function(origin) {
223
- return this.messagingSystem.call("PhishingController:testOrigin", origin).result;
224
- };
225
- _hasApprovalRequest = new WeakSet();
226
- hasApprovalRequest_fn = function(id) {
227
- return this.messagingSystem.call("ApprovalController:hasRequest", {
228
- id
229
- });
230
- };
231
- _acceptApprovalRequest = new WeakSet();
232
- acceptApprovalRequest_fn = async function(id, value) {
233
- await this.messagingSystem.call(
234
- "ApprovalController:acceptRequest",
235
- id,
236
- value
237
- );
238
- };
239
- _validateContent = new WeakSet();
240
- validateContent_fn = async function(element) {
241
- const size = getJsonSizeUnsafe(element);
242
- assert(
243
- size <= MAX_UI_CONTENT_SIZE,
244
- `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1e6} MB.`
245
- );
246
- await __privateMethod(this, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn).call(this);
247
- validateJsxLinks(element, __privateMethod(this, _checkPhishingList, checkPhishingList_fn).bind(this));
248
- };
249
-
250
- export {
251
- SnapInterfaceController
252
- };
253
- //# sourceMappingURL=chunk-CJY2LYEL.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/interface/SnapInterfaceController.ts"],"sourcesContent":["import type {\n AcceptRequest,\n HasApprovalRequest,\n} from '@metamask/approval-controller';\nimport 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 {\n InterfaceState,\n SnapId,\n ComponentOrElement,\n InterfaceContext,\n} from '@metamask/snaps-sdk';\nimport type { JSXElement } from '@metamask/snaps-sdk/jsx';\nimport { getJsonSizeUnsafe, validateJsxLinks } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\nimport { assert } from '@metamask/utils';\nimport { nanoid } from 'nanoid';\n\nimport {\n constructState,\n getJsxInterface,\n validateInterfaceContext,\n} from './utils';\n\nconst MAX_UI_CONTENT_SIZE = 10_000_000; // 10 mb\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 ResolveInterface = {\n type: `${typeof controllerName}:resolveInterface`;\n handler: SnapInterfaceController['resolveInterface'];\n};\n\nexport type SnapInterfaceControllerAllowedActions =\n | TestOrigin\n | MaybeUpdateState\n | HasApprovalRequest\n | AcceptRequest;\n\nexport type SnapInterfaceControllerActions =\n | CreateInterface\n | GetInterface\n | UpdateInterface\n | DeleteInterface\n | UpdateInterfaceState\n | ResolveInterface;\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: JSXElement;\n state: InterfaceState;\n context: InterfaceContext | null;\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 this.messagingSystem.registerActionHandler(\n `${controllerName}:resolveInterface`,\n this.resolveInterface.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 * @param context - An optional interface context object.\n * @returns The newly interface id.\n */\n async createInterface(\n snapId: SnapId,\n content: ComponentOrElement,\n context?: InterfaceContext,\n ) {\n const element = getJsxInterface(content);\n await this.#validateContent(element);\n validateInterfaceContext(context);\n\n const id = nanoid();\n const componentState = constructState({}, element);\n\n this.update((draftState) => {\n // @ts-expect-error - TS2589: Type instantiation is excessively deep and\n // possibly infinite.\n draftState.interfaces[id] = {\n snapId,\n content: element,\n state: componentState,\n context: context ?? null,\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(\n snapId: SnapId,\n id: string,\n content: ComponentOrElement,\n ) {\n this.#validateArgs(snapId, id);\n const element = getJsxInterface(content);\n await this.#validateContent(element);\n\n const oldState = this.state.interfaces[id].state;\n const newState = constructState(oldState, element);\n\n this.update((draftState) => {\n draftState.interfaces[id].state = newState;\n draftState.interfaces[id].content = element;\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 * Resolve the promise of a given interface approval request.\n * The approval needs to have the same ID as the interface.\n *\n * @param snapId - The snap id.\n * @param id - The interface id.\n * @param value - The value to resolve the promise with.\n */\n async resolveInterface(snapId: SnapId, id: string, value: Json) {\n this.#validateArgs(snapId, id);\n this.#validateApproval(id);\n\n await this.#acceptApprovalRequest(id, value);\n\n this.deleteInterface(id);\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 * Utility function to validate that the approval request exists.\n *\n * @param id - The interface id.\n */\n #validateApproval(id: string) {\n assert(\n this.#hasApprovalRequest(id),\n `Approval request with id '${id}' not found.`,\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 * Check if an approval request exists for a given interface by looking up\n * if the ApprovalController has a request with the given interface ID.\n *\n * @param id - The interface id.\n * @returns True if an approval request exists, otherwise false.\n */\n #hasApprovalRequest(id: string) {\n return this.messagingSystem.call('ApprovalController:hasRequest', {\n id,\n });\n }\n\n /**\n * Accept an approval request for a given interface.\n *\n * @param id - The interface id.\n * @param value - The value to resolve the promise with.\n */\n async #acceptApprovalRequest(id: string, value: Json) {\n await this.messagingSystem.call(\n 'ApprovalController:acceptRequest',\n id,\n value,\n );\n }\n\n /**\n * Utility function to validate the components of an interface.\n * Throws if something is invalid.\n *\n * @param element - The JSX element to verify.\n */\n async #validateContent(element: JSXElement) {\n // We assume the validity of this JSON to be validated by the caller.\n // E.g., in the RPC method implementation.\n const size = getJsonSizeUnsafe(element);\n assert(\n size <= MAX_UI_CONTENT_SIZE,\n `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1000000} MB.`,\n );\n\n await this.#triggerPhishingListUpdate();\n validateJsxLinks(element, this.#checkPhishingList.bind(this));\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,273 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
- var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
7
-
8
- // src/snaps/registry/json.ts
9
- var _basecontroller = require('@metamask/base-controller');
10
- var _snapsregistry = require('@metamask/snaps-registry');
11
- var _snapsutils = require('@metamask/snaps-utils');
12
-
13
-
14
-
15
-
16
-
17
-
18
- var _utils = require('@metamask/utils');
19
- var SNAP_REGISTRY_URL = "https://acl.execution.metamask.io/latest/registry.json";
20
- var SNAP_REGISTRY_SIGNATURE_URL = "https://acl.execution.metamask.io/latest/signature.json";
21
- var DEFAULT_PUBLIC_KEY = "0x025b65308f0f0fb8bc7f7ff87bfc296e0330eee5d3c1d1ee4a048b2fd6a86fa0a6";
22
- var controllerName = "SnapsRegistry";
23
- var defaultState = {
24
- database: null,
25
- lastUpdated: null,
26
- databaseUnavailable: false
27
- };
28
- var _url, _publicKey, _fetchFunction, _recentFetchThreshold, _refetchOnAllowlistMiss, _currentUpdate, _wasRecentlyFetched, wasRecentlyFetched_fn, _triggerUpdate, triggerUpdate_fn, _update, update_fn, _getDatabase, getDatabase_fn, _getSingle, getSingle_fn, _get, get_fn, _resolveVersion, resolveVersion_fn, _getMetadata, getMetadata_fn, _verifySignature, verifySignature_fn, _safeFetch, safeFetch_fn;
29
- var JsonSnapsRegistry = class extends _basecontroller.BaseController {
30
- constructor({
31
- messenger,
32
- state,
33
- url = {
34
- registry: SNAP_REGISTRY_URL,
35
- signature: SNAP_REGISTRY_SIGNATURE_URL
36
- },
37
- publicKey = DEFAULT_PUBLIC_KEY,
38
- fetchFunction = globalThis.fetch.bind(globalThis),
39
- recentFetchThreshold = _utils.inMilliseconds.call(void 0, 5, _utils.Duration.Minute),
40
- refetchOnAllowlistMiss = true
41
- }) {
42
- super({
43
- messenger,
44
- metadata: {
45
- database: { persist: true, anonymous: false },
46
- lastUpdated: { persist: true, anonymous: false },
47
- databaseUnavailable: { persist: true, anonymous: false }
48
- },
49
- name: controllerName,
50
- state: {
51
- ...defaultState,
52
- ...state
53
- }
54
- });
55
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _wasRecentlyFetched);
56
- /**
57
- * Triggers an update of the registry database.
58
- *
59
- * If an existing update is in progress this function will await that update.
60
- */
61
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _triggerUpdate);
62
- /**
63
- * Updates the registry database if the registry hasn't been updated recently.
64
- *
65
- * NOTE: SHOULD NOT be called directly, instead `triggerUpdate` should be used.
66
- */
67
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _update);
68
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getDatabase);
69
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getSingle);
70
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _get);
71
- /**
72
- * Find an allowlisted version within a specified version range. Otherwise return the version range itself.
73
- *
74
- * @param snapId - The ID of the snap we are trying to resolve a version for.
75
- * @param versionRange - The version range.
76
- * @param refetch - An optional flag used to determine if we are refetching the registry.
77
- * @returns An allowlisted version within the specified version range if available otherwise returns the input version range.
78
- */
79
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _resolveVersion);
80
- /**
81
- * Get metadata for the given snap ID.
82
- *
83
- * @param snapId - The ID of the snap to get metadata for.
84
- * @returns The metadata for the given snap ID, or `null` if the snap is not
85
- * verified.
86
- */
87
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getMetadata);
88
- /**
89
- * Verify the signature of the registry.
90
- *
91
- * @param database - The registry database.
92
- * @param signature - The signature of the registry.
93
- * @throws If the signature is invalid.
94
- * @private
95
- */
96
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _verifySignature);
97
- /**
98
- * Fetch the given URL, throwing if the response is not OK.
99
- *
100
- * @param url - The URL to fetch.
101
- * @returns The response body.
102
- * @private
103
- */
104
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _safeFetch);
105
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _url, void 0);
106
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _publicKey, void 0);
107
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _fetchFunction, void 0);
108
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _recentFetchThreshold, void 0);
109
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _refetchOnAllowlistMiss, void 0);
110
- _chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _currentUpdate, void 0);
111
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _url, url);
112
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _publicKey, publicKey);
113
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _fetchFunction, fetchFunction);
114
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _recentFetchThreshold, recentFetchThreshold);
115
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _refetchOnAllowlistMiss, refetchOnAllowlistMiss);
116
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _currentUpdate, null);
117
- this.messagingSystem.registerActionHandler(
118
- "SnapsRegistry:get",
119
- async (...args) => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _get, get_fn).call(this, ...args)
120
- );
121
- this.messagingSystem.registerActionHandler(
122
- "SnapsRegistry:getMetadata",
123
- async (...args) => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getMetadata, getMetadata_fn).call(this, ...args)
124
- );
125
- this.messagingSystem.registerActionHandler(
126
- "SnapsRegistry:resolveVersion",
127
- async (...args) => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _resolveVersion, resolveVersion_fn).call(this, ...args)
128
- );
129
- this.messagingSystem.registerActionHandler(
130
- "SnapsRegistry:update",
131
- async () => _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerUpdate, triggerUpdate_fn).call(this)
132
- );
133
- }
134
- };
135
- _url = new WeakMap();
136
- _publicKey = new WeakMap();
137
- _fetchFunction = new WeakMap();
138
- _recentFetchThreshold = new WeakMap();
139
- _refetchOnAllowlistMiss = new WeakMap();
140
- _currentUpdate = new WeakMap();
141
- _wasRecentlyFetched = new WeakSet();
142
- wasRecentlyFetched_fn = function() {
143
- return this.state.lastUpdated && Date.now() - this.state.lastUpdated < _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _recentFetchThreshold);
144
- };
145
- _triggerUpdate = new WeakSet();
146
- triggerUpdate_fn = async function() {
147
- if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _currentUpdate)) {
148
- await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _currentUpdate);
149
- return;
150
- }
151
- if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _currentUpdate) === null) {
152
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _currentUpdate, _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _update, update_fn).call(this));
153
- }
154
- await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _currentUpdate);
155
- _chunkEXN2TFDJjs.__privateSet.call(void 0, this, _currentUpdate, null);
156
- };
157
- _update = new WeakSet();
158
- update_fn = async function() {
159
- if (_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _wasRecentlyFetched, wasRecentlyFetched_fn).call(this)) {
160
- return;
161
- }
162
- try {
163
- const database = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _safeFetch, safeFetch_fn).call(this, _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _url).registry);
164
- const signature = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _safeFetch, safeFetch_fn).call(this, _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _url).signature);
165
- _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _verifySignature, verifySignature_fn).call(this, database, signature);
166
- this.update((state) => {
167
- state.database = JSON.parse(database);
168
- state.lastUpdated = Date.now();
169
- state.databaseUnavailable = false;
170
- });
171
- } catch {
172
- this.update((state) => {
173
- state.databaseUnavailable = true;
174
- });
175
- }
176
- };
177
- _getDatabase = new WeakSet();
178
- getDatabase_fn = async function() {
179
- if (this.state.database === null) {
180
- await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerUpdate, triggerUpdate_fn).call(this);
181
- }
182
- return this.state.database;
183
- };
184
- _getSingle = new WeakSet();
185
- getSingle_fn = async function(snapId, snapInfo, refetch = false) {
186
- const database = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getDatabase, getDatabase_fn).call(this);
187
- const blockedEntry = database?.blockedSnaps.find((blocked) => {
188
- if ("id" in blocked) {
189
- return blocked.id === snapId && _utils.satisfiesVersionRange.call(void 0, snapInfo.version, blocked.versionRange);
190
- }
191
- return blocked.checksum === snapInfo.checksum;
192
- });
193
- if (blockedEntry) {
194
- return {
195
- status: 1 /* Blocked */,
196
- reason: blockedEntry.reason
197
- };
198
- }
199
- const verified = database?.verifiedSnaps[snapId];
200
- const version = verified?.versions?.[snapInfo.version];
201
- if (version && version.checksum === snapInfo.checksum) {
202
- return { status: 2 /* Verified */ };
203
- }
204
- if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _refetchOnAllowlistMiss) && !refetch) {
205
- await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerUpdate, triggerUpdate_fn).call(this);
206
- return _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getSingle, getSingle_fn).call(this, snapId, snapInfo, true);
207
- }
208
- return {
209
- status: this.state.databaseUnavailable ? 3 /* Unavailable */ : 0 /* Unverified */
210
- };
211
- };
212
- _get = new WeakSet();
213
- get_fn = async function(snaps) {
214
- return Object.entries(snaps).reduce(async (previousPromise, [snapId, snapInfo]) => {
215
- const result = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getSingle, getSingle_fn).call(this, snapId, snapInfo);
216
- const acc = await previousPromise;
217
- acc[snapId] = result;
218
- return acc;
219
- }, Promise.resolve({}));
220
- };
221
- _resolveVersion = new WeakSet();
222
- resolveVersion_fn = async function(snapId, versionRange, refetch = false) {
223
- const database = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getDatabase, getDatabase_fn).call(this);
224
- const versions = database?.verifiedSnaps[snapId]?.versions ?? null;
225
- if (!versions && _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _refetchOnAllowlistMiss) && !refetch) {
226
- await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerUpdate, triggerUpdate_fn).call(this);
227
- return _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _resolveVersion, resolveVersion_fn).call(this, snapId, versionRange, true);
228
- }
229
- if (!versions) {
230
- return versionRange;
231
- }
232
- const targetVersion = _snapsutils.getTargetVersion.call(void 0,
233
- Object.keys(versions),
234
- versionRange
235
- );
236
- if (!targetVersion && _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _refetchOnAllowlistMiss) && !refetch) {
237
- await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _triggerUpdate, triggerUpdate_fn).call(this);
238
- return _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _resolveVersion, resolveVersion_fn).call(this, snapId, versionRange, true);
239
- }
240
- if (!targetVersion) {
241
- return versionRange;
242
- }
243
- _utils.assertIsSemVerRange.call(void 0, targetVersion);
244
- return targetVersion;
245
- };
246
- _getMetadata = new WeakSet();
247
- getMetadata_fn = async function(snapId) {
248
- const database = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getDatabase, getDatabase_fn).call(this);
249
- return database?.verifiedSnaps[snapId]?.metadata ?? null;
250
- };
251
- _verifySignature = new WeakSet();
252
- verifySignature_fn = function(database, signature) {
253
- _utils.assert.call(void 0, _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _publicKey), "No public key provided.");
254
- const valid = _snapsregistry.verify.call(void 0, {
255
- registry: database,
256
- signature: JSON.parse(signature),
257
- publicKey: _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _publicKey)
258
- });
259
- _utils.assert.call(void 0, valid, "Invalid registry signature.");
260
- };
261
- _safeFetch = new WeakSet();
262
- safeFetch_fn = async function(url) {
263
- const response = await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _fetchFunction).call(this, url);
264
- if (!response.ok) {
265
- throw new Error(`Failed to fetch ${url}.`);
266
- }
267
- return await response.text();
268
- };
269
-
270
-
271
-
272
- exports.JsonSnapsRegistry = JsonSnapsRegistry;
273
- //# sourceMappingURL=chunk-CPUUURMT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/snaps/registry/json.ts"],"names":[],"mappings":";;;;;;;;AACA,SAAS,sBAAsB;AAE/B,SAAS,cAAc;AACvB,SAAS,wBAAwB;AAEjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP,IAAM,oBACJ;AAEF,IAAM,8BACJ;AAEF,IAAM,qBACJ;AA2DF,IAAM,iBAAiB;AAEvB,IAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,qBAAqB;AACvB;AA/FA;AAiGO,IAAM,oBAAN,cAAgC,eAIrC;AAAA,EAaA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,IACA,YAAY;AAAA,IACZ,gBAAgB,WAAW,MAAM,KAAK,UAAU;AAAA,IAChD,uBAAuB,eAAe,GAAG,SAAS,MAAM;AAAA,IACxD,yBAAyB;AAAA,EAC3B,GAA0B;AACxB,UAAM;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,QACR,UAAU,EAAE,SAAS,MAAM,WAAW,MAAM;AAAA,QAC5C,aAAa,EAAE,SAAS,MAAM,WAAW,MAAM;AAAA,QAC/C,qBAAqB,EAAE,SAAS,MAAM,WAAW,MAAM;AAAA,MACzD;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF,CAAC;AA6BH;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAmBN;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAyBN,uBAAM;AAQN,uBAAM;AA0CN,uBAAM;AAqBN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AA6CN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAaN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AA7QN;AAEA;AAEA;AAEA;AAEA;AAEA;AA2BE,uBAAK,MAAO;AACZ,uBAAK,YAAa;AAClB,uBAAK,gBAAiB;AACtB,uBAAK,uBAAwB;AAC7B,uBAAK,yBAA0B;AAC/B,uBAAK,gBAAiB;AAEtB,SAAK,gBAAgB;AAAA,MACnB;AAAA,MACA,UAAU,SAAS,sBAAK,cAAL,WAAU,GAAG;AAAA,IAClC;AAEA,SAAK,gBAAgB;AAAA,MACnB;AAAA,MACA,UAAU,SAAS,sBAAK,8BAAL,WAAkB,GAAG;AAAA,IAC1C;AAEA,SAAK,gBAAgB;AAAA,MACnB;AAAA,MACA,UAAU,SAAS,sBAAK,oCAAL,WAAqB,GAAG;AAAA,IAC7C;AAEA,SAAK,gBAAgB;AAAA,MACnB;AAAA,MACA,YAAY,sBAAK,kCAAL;AAAA,IACd;AAAA,EACF;AAsNF;AArRE;AAEA;AAEA;AAEA;AAEA;AAEA;AAuDA;AAAA,wBAAmB,WAAG;AACpB,SACE,KAAK,MAAM,eACX,KAAK,IAAI,IAAI,KAAK,MAAM,cAAc,mBAAK;AAE/C;AAOM;AAAA,mBAAc,iBAAG;AAErB,MAAI,mBAAK,iBAAgB;AACvB,UAAM,mBAAK;AACX;AAAA,EACF;AAEA,MAAI,mBAAK,oBAAmB,MAAM;AAChC,uBAAK,gBAAiB,sBAAK,oBAAL;AAAA,EACxB;AACA,QAAM,mBAAK;AACX,qBAAK,gBAAiB;AACxB;AAOM;AAAA,YAAO,iBAAG;AAEd,MAAI,sBAAK,4CAAL,YAA4B;AAC9B;AAAA,EACF;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,sBAAK,0BAAL,WAAgB,mBAAK,MAAK;AAEjD,UAAM,YAAY,MAAM,sBAAK,0BAAL,WAAgB,mBAAK,MAAK;AAClD,0BAAK,sCAAL,WAAsB,UAAU;AAEhC,SAAK,OAAO,CAAC,UAAU;AACrB,YAAM,WAAW,KAAK,MAAM,QAAQ;AACpC,YAAM,cAAc,KAAK,IAAI;AAC7B,YAAM,sBAAsB;AAAA,IAC9B,CAAC;AAAA,EACH,QAAQ;AAEN,SAAK,OAAO,CAAC,UAAU;AACrB,YAAM,sBAAsB;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;AAEM;AAAA,iBAAY,iBAA0C;AAC1D,MAAI,KAAK,MAAM,aAAa,MAAM;AAChC,UAAM,sBAAK,kCAAL;AAAA,EACR;AAEA,SAAO,KAAK,MAAM;AACpB;AAEM;AAAA,eAAU,eACd,QACA,UACA,UAAU,OACoB;AAC9B,QAAM,WAAW,MAAM,sBAAK,8BAAL;AAEvB,QAAM,eAAe,UAAU,aAAa,KAAK,CAAC,YAAY;AAC5D,QAAI,QAAQ,SAAS;AACnB,aACE,QAAQ,OAAO,UACf,sBAAsB,SAAS,SAAS,QAAQ,YAAY;AAAA,IAEhE;AAEA,WAAO,QAAQ,aAAa,SAAS;AAAA,EACvC,CAAC;AAED,MAAI,cAAc;AAChB,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,aAAa;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,WAAW,UAAU,cAAc,MAAM;AAC/C,QAAM,UAAU,UAAU,WAAW,SAAS,OAAO;AACrD,MAAI,WAAW,QAAQ,aAAa,SAAS,UAAU;AACrD,WAAO,EAAE,yBAAqC;AAAA,EAChD;AAEA,MAAI,mBAAK,4BAA2B,CAAC,SAAS;AAC5C,UAAM,sBAAK,kCAAL;AACN,WAAO,sBAAK,0BAAL,WAAgB,QAAQ,UAAU;AAAA,EAC3C;AACA,SAAO;AAAA,IACL,QAAQ,KAAK,MAAM;AAAA,EAGrB;AACF;AAEM;AAAA,SAAI,eACR,OAC8C;AAC9C,SAAO,OAAO,QAAQ,KAAK,EAAE,OAE3B,OAAO,iBAAiB,CAAC,QAAQ,QAAQ,MAAM;AAC/C,UAAM,SAAS,MAAM,sBAAK,0BAAL,WAAgB,QAAQ;AAC7C,UAAM,MAAM,MAAM;AAClB,QAAI,MAAM,IAAI;AACd,WAAO;AAAA,EACT,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC;AACxB;AAUM;AAAA,oBAAe,eACnB,QACA,cACA,UAAU,OACY;AACtB,QAAM,WAAW,MAAM,sBAAK,8BAAL;AACvB,QAAM,WAAW,UAAU,cAAc,MAAM,GAAG,YAAY;AAE9D,MAAI,CAAC,YAAY,mBAAK,4BAA2B,CAAC,SAAS;AACzD,UAAM,sBAAK,kCAAL;AACN,WAAO,sBAAK,oCAAL,WAAqB,QAAQ,cAAc;AAAA,EACpD;AAGA,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB;AAAA,IACpB,OAAO,KAAK,QAAQ;AAAA,IACpB;AAAA,EACF;AAEA,MAAI,CAAC,iBAAiB,mBAAK,4BAA2B,CAAC,SAAS;AAC9D,UAAM,sBAAK,kCAAL;AACN,WAAO,sBAAK,oCAAL,WAAqB,QAAQ,cAAc;AAAA,EACpD;AAGA,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AAGA,sBAAoB,aAAa;AACjC,SAAO;AACT;AASM;AAAA,iBAAY,eAAC,QAAuD;AACxE,QAAM,WAAW,MAAM,sBAAK,8BAAL;AACvB,SAAO,UAAU,cAAc,MAAM,GAAG,YAAY;AACtD;AAUA;AAAA,qBAAgB,SAAC,UAAkB,WAAmB;AACpD,SAAO,mBAAK,aAAY,yBAAyB;AAEjD,QAAM,QAAQ,OAAO;AAAA,IACnB,UAAU;AAAA,IACV,WAAW,KAAK,MAAM,SAAS;AAAA,IAC/B,WAAW,mBAAK;AAAA,EAClB,CAAC;AAED,SAAO,OAAO,6BAA6B;AAC7C;AASM;AAAA,eAAU,eAAC,KAAa;AAC5B,QAAM,WAAW,MAAM,mBAAK,gBAAL,WAAoB;AAC3C,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,mBAAmB,GAAG,GAAG;AAAA,EAC3C;AAEA,SAAO,MAAM,SAAS,KAAK;AAC7B","sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { SnapsRegistryDatabase } from '@metamask/snaps-registry';\nimport { verify } from '@metamask/snaps-registry';\nimport { getTargetVersion } from '@metamask/snaps-utils';\nimport type { Hex, SemVerRange, SemVerVersion } from '@metamask/utils';\nimport {\n assert,\n assertIsSemVerRange,\n Duration,\n inMilliseconds,\n satisfiesVersionRange,\n} from '@metamask/utils';\n\nimport type {\n SnapsRegistry,\n SnapsRegistryInfo,\n SnapsRegistryMetadata,\n SnapsRegistryRequest,\n SnapsRegistryResult,\n} from './registry';\nimport { SnapsRegistryStatus } from './registry';\n\nconst SNAP_REGISTRY_URL =\n 'https://acl.execution.metamask.io/latest/registry.json';\n\nconst SNAP_REGISTRY_SIGNATURE_URL =\n 'https://acl.execution.metamask.io/latest/signature.json';\n\nconst DEFAULT_PUBLIC_KEY =\n '0x025b65308f0f0fb8bc7f7ff87bfc296e0330eee5d3c1d1ee4a048b2fd6a86fa0a6';\n\ntype JsonSnapsRegistryUrl = {\n registry: string;\n signature: string;\n};\n\nexport type JsonSnapsRegistryArgs = {\n messenger: SnapsRegistryMessenger;\n state?: SnapsRegistryState;\n fetchFunction?: typeof fetch;\n url?: JsonSnapsRegistryUrl;\n recentFetchThreshold?: number;\n refetchOnAllowlistMiss?: boolean;\n publicKey?: Hex;\n};\n\nexport type GetResult = {\n type: `${typeof controllerName}:get`;\n handler: SnapsRegistry['get'];\n};\n\nexport type ResolveVersion = {\n type: `${typeof controllerName}:resolveVersion`;\n handler: SnapsRegistry['resolveVersion'];\n};\n\nexport type GetMetadata = {\n type: `${typeof controllerName}:getMetadata`;\n handler: SnapsRegistry['getMetadata'];\n};\n\nexport type Update = {\n type: `${typeof controllerName}:update`;\n handler: SnapsRegistry['update'];\n};\n\nexport type SnapsRegistryActions =\n | GetResult\n | GetMetadata\n | Update\n | ResolveVersion;\n\nexport type SnapsRegistryEvents = never;\n\nexport type SnapsRegistryMessenger = RestrictedControllerMessenger<\n 'SnapsRegistry',\n SnapsRegistryActions,\n SnapsRegistryEvents,\n SnapsRegistryActions['type'],\n SnapsRegistryEvents['type']\n>;\n\nexport type SnapsRegistryState = {\n database: SnapsRegistryDatabase | null;\n lastUpdated: number | null;\n databaseUnavailable: boolean;\n};\n\nconst controllerName = 'SnapsRegistry';\n\nconst defaultState = {\n database: null,\n lastUpdated: null,\n databaseUnavailable: false,\n};\n\nexport class JsonSnapsRegistry extends BaseController<\n typeof controllerName,\n SnapsRegistryState,\n SnapsRegistryMessenger\n> {\n #url: JsonSnapsRegistryUrl;\n\n #publicKey: Hex;\n\n #fetchFunction: typeof fetch;\n\n #recentFetchThreshold: number;\n\n #refetchOnAllowlistMiss: boolean;\n\n #currentUpdate: Promise<void> | null;\n\n constructor({\n messenger,\n state,\n url = {\n registry: SNAP_REGISTRY_URL,\n signature: SNAP_REGISTRY_SIGNATURE_URL,\n },\n publicKey = DEFAULT_PUBLIC_KEY,\n fetchFunction = globalThis.fetch.bind(globalThis),\n recentFetchThreshold = inMilliseconds(5, Duration.Minute),\n refetchOnAllowlistMiss = true,\n }: JsonSnapsRegistryArgs) {\n super({\n messenger,\n metadata: {\n database: { persist: true, anonymous: false },\n lastUpdated: { persist: true, anonymous: false },\n databaseUnavailable: { persist: true, anonymous: false },\n },\n name: controllerName,\n state: {\n ...defaultState,\n ...state,\n },\n });\n this.#url = url;\n this.#publicKey = publicKey;\n this.#fetchFunction = fetchFunction;\n this.#recentFetchThreshold = recentFetchThreshold;\n this.#refetchOnAllowlistMiss = refetchOnAllowlistMiss;\n this.#currentUpdate = null;\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:get',\n async (...args) => this.#get(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:getMetadata',\n async (...args) => this.#getMetadata(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:resolveVersion',\n async (...args) => this.#resolveVersion(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:update',\n async () => this.#triggerUpdate(),\n );\n }\n\n #wasRecentlyFetched() {\n return (\n this.state.lastUpdated &&\n Date.now() - this.state.lastUpdated < this.#recentFetchThreshold\n );\n }\n\n /**\n * Triggers an update of the registry database.\n *\n * If an existing update is in progress this function will await that update.\n */\n async #triggerUpdate() {\n // If an update is ongoing, wait for that.\n if (this.#currentUpdate) {\n await this.#currentUpdate;\n return;\n }\n // If no update exists, create promise and store globally.\n if (this.#currentUpdate === null) {\n this.#currentUpdate = this.#update();\n }\n await this.#currentUpdate;\n this.#currentUpdate = null;\n }\n\n /**\n * Updates the registry database if the registry hasn't been updated recently.\n *\n * NOTE: SHOULD NOT be called directly, instead `triggerUpdate` should be used.\n */\n async #update() {\n // No-op if we recently fetched the registry.\n if (this.#wasRecentlyFetched()) {\n return;\n }\n\n try {\n const database = await this.#safeFetch(this.#url.registry);\n\n const signature = await this.#safeFetch(this.#url.signature);\n this.#verifySignature(database, signature);\n\n this.update((state) => {\n state.database = JSON.parse(database);\n state.lastUpdated = Date.now();\n state.databaseUnavailable = false;\n });\n } catch {\n // Ignore\n this.update((state) => {\n state.databaseUnavailable = true;\n });\n }\n }\n\n async #getDatabase(): Promise<SnapsRegistryDatabase | null> {\n if (this.state.database === null) {\n await this.#triggerUpdate();\n }\n\n return this.state.database;\n }\n\n async #getSingle(\n snapId: string,\n snapInfo: SnapsRegistryInfo,\n refetch = false,\n ): Promise<SnapsRegistryResult> {\n const database = await this.#getDatabase();\n\n const blockedEntry = database?.blockedSnaps.find((blocked) => {\n if ('id' in blocked) {\n return (\n blocked.id === snapId &&\n satisfiesVersionRange(snapInfo.version, blocked.versionRange)\n );\n }\n\n return blocked.checksum === snapInfo.checksum;\n });\n\n if (blockedEntry) {\n return {\n status: SnapsRegistryStatus.Blocked,\n reason: blockedEntry.reason,\n };\n }\n\n const verified = database?.verifiedSnaps[snapId];\n const version = verified?.versions?.[snapInfo.version];\n if (version && version.checksum === snapInfo.checksum) {\n return { status: SnapsRegistryStatus.Verified };\n }\n // For now, if we have an allowlist miss, we can refetch once and try again.\n if (this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#getSingle(snapId, snapInfo, true);\n }\n return {\n status: this.state.databaseUnavailable\n ? SnapsRegistryStatus.Unavailable\n : SnapsRegistryStatus.Unverified,\n };\n }\n\n async #get(\n snaps: SnapsRegistryRequest,\n ): Promise<Record<string, SnapsRegistryResult>> {\n return Object.entries(snaps).reduce<\n Promise<Record<string, SnapsRegistryResult>>\n >(async (previousPromise, [snapId, snapInfo]) => {\n const result = await this.#getSingle(snapId, snapInfo);\n const acc = await previousPromise;\n acc[snapId] = result;\n return acc;\n }, Promise.resolve({}));\n }\n\n /**\n * Find an allowlisted version within a specified version range. Otherwise return the version range itself.\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 if available otherwise returns the input version range.\n */\n async #resolveVersion(\n snapId: string,\n versionRange: SemVerRange,\n refetch = false,\n ): Promise<SemVerRange> {\n const database = await this.#getDatabase();\n const versions = database?.verifiedSnaps[snapId]?.versions ?? null;\n\n if (!versions && this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#resolveVersion(snapId, versionRange, true);\n }\n\n // If we cannot narrow down the version range we return the unaltered version range.\n if (!versions) {\n return versionRange;\n }\n\n const targetVersion = getTargetVersion(\n Object.keys(versions) as SemVerVersion[],\n versionRange,\n );\n\n if (!targetVersion && this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#resolveVersion(snapId, versionRange, true);\n }\n\n // If we cannot narrow down the version range we return the unaltered version range.\n if (!targetVersion) {\n return versionRange;\n }\n\n // A semver version is technically also a valid semver range.\n assertIsSemVerRange(targetVersion);\n return targetVersion;\n }\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 async #getMetadata(snapId: string): Promise<SnapsRegistryMetadata | null> {\n const database = await this.#getDatabase();\n return database?.verifiedSnaps[snapId]?.metadata ?? null;\n }\n\n /**\n * Verify the signature of the registry.\n *\n * @param database - The registry database.\n * @param signature - The signature of the registry.\n * @throws If the signature is invalid.\n * @private\n */\n #verifySignature(database: string, signature: string) {\n assert(this.#publicKey, 'No public key provided.');\n\n const valid = verify({\n registry: database,\n signature: JSON.parse(signature),\n publicKey: this.#publicKey,\n });\n\n assert(valid, 'Invalid registry signature.');\n }\n\n /**\n * Fetch the given URL, throwing if the response is not OK.\n *\n * @param url - The URL to fetch.\n * @returns The response body.\n * @private\n */\n async #safeFetch(url: string) {\n const response = await this.#fetchFunction(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch ${url}.`);\n }\n\n return await response.text();\n }\n}\n"]}
@@ -1,38 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkQRISQRFIjs = require('./chunk-QRISQRFI.js');
4
-
5
-
6
- var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
7
-
8
- // src/services/node-js/NodeProcessExecutionService.ts
9
- var _postmessagestream = require('@metamask/post-message-stream');
10
- var _child_process = require('child_process');
11
- var NodeProcessExecutionService = class extends _chunkQRISQRFIjs.AbstractExecutionService {
12
- async initEnvStream() {
13
- const worker = _child_process.fork.call(void 0,
14
- _chunkEXN2TFDJjs.__require.resolve(
15
- "@metamask/snaps-execution-environments/dist/browserify/node-process/bundle.js"
16
- ),
17
- {
18
- stdio: "pipe"
19
- }
20
- );
21
- worker.stdout?.on("data", (data) => {
22
- console.log(data.toString());
23
- });
24
- worker.stderr?.on("data", (data) => {
25
- console.error(data.toString());
26
- });
27
- const stream = new (0, _postmessagestream.ProcessParentMessageStream)({ process: worker });
28
- return Promise.resolve({ worker, stream });
29
- }
30
- terminateJob(jobWrapper) {
31
- jobWrapper.worker?.kill();
32
- }
33
- };
34
-
35
-
36
-
37
- exports.NodeProcessExecutionService = NodeProcessExecutionService;
38
- //# sourceMappingURL=chunk-D66YLO7T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;;;;;;;AACA,SAAS,kCAAkC;AAE3C,SAAS,YAAY;AAKd,IAAM,8BAAN,cAA0C,yBAAuC;AAAA,EACtF,MAAgB,gBAGb;AACD,UAAM,SAAS;AAAA,MACb,UAAQ;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAIA,WAAO,QAAQ,GAAG,QAAQ,CAAC,SAAS;AAElC,cAAQ,IAAI,KAAK,SAAS,CAAC;AAAA,IAC7B,CAAC;AAED,WAAO,QAAQ,GAAG,QAAQ,CAAC,SAAS;AAElC,cAAQ,MAAM,KAAK,SAAS,CAAC;AAAA,IAC/B,CAAC;AAED,UAAM,SAAS,IAAI,2BAA2B,EAAE,SAAS,OAAO,CAAC;AACjE,WAAO,QAAQ,QAAQ,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC3C;AAAA,EAEU,aAAa,YAAkD;AACvE,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ProcessParentMessageStream } from '@metamask/post-message-stream';\nimport type { ChildProcess } from 'child_process';\nimport { fork } from 'child_process';\n\nimport type { TerminateJobArgs } from '..';\nimport { AbstractExecutionService } from '..';\n\nexport class NodeProcessExecutionService extends AbstractExecutionService<ChildProcess> {\n protected async initEnvStream(): Promise<{\n worker: ChildProcess;\n stream: BasePostMessageStream;\n }> {\n const worker = fork(\n require.resolve(\n '@metamask/snaps-execution-environments/dist/browserify/node-process/bundle.js',\n ),\n {\n stdio: 'pipe',\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 ProcessParentMessageStream({ process: worker });\n return Promise.resolve({ worker, stream });\n }\n\n protected terminateJob(jobWrapper: TerminateJobArgs<ChildProcess>): void {\n jobWrapper.worker?.kill();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- "use strict";//# sourceMappingURL=chunk-D74XJG2L.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-ESQPQNEF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}