@metamask/snaps-rpc-methods 15.1.0 → 16.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 (352) hide show
  1. package/CHANGELOG.md +34 -4
  2. package/dist/endowments/keyring.cjs +2 -5
  3. package/dist/endowments/keyring.cjs.map +1 -1
  4. package/dist/endowments/keyring.d.cts +0 -2
  5. package/dist/endowments/keyring.d.cts.map +1 -1
  6. package/dist/endowments/keyring.d.mts +0 -2
  7. package/dist/endowments/keyring.d.mts.map +1 -1
  8. package/dist/endowments/keyring.mjs +3 -6
  9. package/dist/endowments/keyring.mjs.map +1 -1
  10. package/dist/index.cjs +1 -4
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -2
  13. package/dist/index.d.cts.map +1 -1
  14. package/dist/index.d.mts +1 -2
  15. package/dist/index.d.mts.map +1 -1
  16. package/dist/index.mjs +1 -2
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/permissions.cjs +18 -8
  19. package/dist/permissions.cjs.map +1 -1
  20. package/dist/permissions.d.cts +3 -2
  21. package/dist/permissions.d.cts.map +1 -1
  22. package/dist/permissions.d.mts +3 -2
  23. package/dist/permissions.d.mts.map +1 -1
  24. package/dist/permissions.mjs +17 -7
  25. package/dist/permissions.mjs.map +1 -1
  26. package/dist/permitted/cancelBackgroundEvent.cjs +10 -14
  27. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  28. package/dist/permitted/cancelBackgroundEvent.d.cts +9 -12
  29. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  30. package/dist/permitted/cancelBackgroundEvent.d.mts +9 -12
  31. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  32. package/dist/permitted/cancelBackgroundEvent.mjs +10 -14
  33. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  34. package/dist/permitted/clearState.cjs +10 -16
  35. package/dist/permitted/clearState.cjs.map +1 -1
  36. package/dist/permitted/clearState.d.cts +9 -23
  37. package/dist/permitted/clearState.d.cts.map +1 -1
  38. package/dist/permitted/clearState.d.mts +9 -23
  39. package/dist/permitted/clearState.d.mts.map +1 -1
  40. package/dist/permitted/clearState.mjs +10 -16
  41. package/dist/permitted/clearState.mjs.map +1 -1
  42. package/dist/permitted/closeWebSocket.cjs +7 -14
  43. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  44. package/dist/permitted/closeWebSocket.d.cts +9 -12
  45. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  46. package/dist/permitted/closeWebSocket.d.mts +9 -12
  47. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  48. package/dist/permitted/closeWebSocket.mjs +7 -14
  49. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  50. package/dist/permitted/createInterface.cjs +11 -15
  51. package/dist/permitted/createInterface.cjs.map +1 -1
  52. package/dist/permitted/createInterface.d.cts +23 -37
  53. package/dist/permitted/createInterface.d.cts.map +1 -1
  54. package/dist/permitted/createInterface.d.mts +23 -37
  55. package/dist/permitted/createInterface.d.mts.map +1 -1
  56. package/dist/permitted/createInterface.mjs +11 -15
  57. package/dist/permitted/createInterface.mjs.map +1 -1
  58. package/dist/permitted/endTrace.cjs +4 -6
  59. package/dist/permitted/endTrace.cjs.map +1 -1
  60. package/dist/permitted/endTrace.d.cts +8 -11
  61. package/dist/permitted/endTrace.d.cts.map +1 -1
  62. package/dist/permitted/endTrace.d.mts +8 -11
  63. package/dist/permitted/endTrace.d.mts.map +1 -1
  64. package/dist/permitted/endTrace.mjs +4 -6
  65. package/dist/permitted/endTrace.mjs.map +1 -1
  66. package/dist/permitted/getAllSnaps.cjs +5 -11
  67. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  68. package/dist/permitted/getAllSnaps.d.cts +10 -14
  69. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  70. package/dist/permitted/getAllSnaps.d.mts +10 -14
  71. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  72. package/dist/permitted/getAllSnaps.mjs +5 -11
  73. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  74. package/dist/permitted/getBackgroundEvents.cjs +8 -15
  75. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  76. package/dist/permitted/getBackgroundEvents.d.cts +10 -13
  77. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  78. package/dist/permitted/getBackgroundEvents.d.mts +10 -13
  79. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  80. package/dist/permitted/getBackgroundEvents.mjs +8 -15
  81. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  82. package/dist/permitted/getClientStatus.cjs +5 -6
  83. package/dist/permitted/getClientStatus.cjs.map +1 -1
  84. package/dist/permitted/getClientStatus.d.cts +17 -18
  85. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  86. package/dist/permitted/getClientStatus.d.mts +17 -18
  87. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  88. package/dist/permitted/getClientStatus.mjs +5 -6
  89. package/dist/permitted/getClientStatus.mjs.map +1 -1
  90. package/dist/permitted/getFile.cjs +7 -11
  91. package/dist/permitted/getFile.cjs.map +1 -1
  92. package/dist/permitted/getFile.d.cts +8 -10
  93. package/dist/permitted/getFile.d.cts.map +1 -1
  94. package/dist/permitted/getFile.d.mts +8 -10
  95. package/dist/permitted/getFile.d.mts.map +1 -1
  96. package/dist/permitted/getFile.mjs +7 -11
  97. package/dist/permitted/getFile.mjs.map +1 -1
  98. package/dist/permitted/getInterfaceContext.cjs +12 -15
  99. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  100. package/dist/permitted/getInterfaceContext.d.cts +9 -21
  101. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  102. package/dist/permitted/getInterfaceContext.d.mts +9 -21
  103. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  104. package/dist/permitted/getInterfaceContext.mjs +12 -15
  105. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  106. package/dist/permitted/getInterfaceState.cjs +11 -15
  107. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  108. package/dist/permitted/getInterfaceState.d.cts +9 -21
  109. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  110. package/dist/permitted/getInterfaceState.d.mts +9 -21
  111. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  112. package/dist/permitted/getInterfaceState.mjs +11 -15
  113. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  114. package/dist/permitted/getSnaps.cjs +6 -12
  115. package/dist/permitted/getSnaps.cjs.map +1 -1
  116. package/dist/permitted/getSnaps.d.cts +11 -14
  117. package/dist/permitted/getSnaps.d.cts.map +1 -1
  118. package/dist/permitted/getSnaps.d.mts +11 -14
  119. package/dist/permitted/getSnaps.d.mts.map +1 -1
  120. package/dist/permitted/getSnaps.mjs +6 -12
  121. package/dist/permitted/getSnaps.mjs.map +1 -1
  122. package/dist/permitted/getState.cjs +9 -11
  123. package/dist/permitted/getState.cjs.map +1 -1
  124. package/dist/permitted/getState.d.cts +17 -28
  125. package/dist/permitted/getState.d.cts.map +1 -1
  126. package/dist/permitted/getState.d.mts +17 -28
  127. package/dist/permitted/getState.d.mts.map +1 -1
  128. package/dist/permitted/getState.mjs +9 -11
  129. package/dist/permitted/getState.mjs.map +1 -1
  130. package/dist/permitted/getWebSockets.cjs +11 -14
  131. package/dist/permitted/getWebSockets.cjs.map +1 -1
  132. package/dist/permitted/getWebSockets.d.cts +10 -13
  133. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  134. package/dist/permitted/getWebSockets.d.mts +10 -13
  135. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  136. package/dist/permitted/getWebSockets.mjs +11 -14
  137. package/dist/permitted/getWebSockets.mjs.map +1 -1
  138. package/dist/permitted/index.cjs +0 -1
  139. package/dist/permitted/index.cjs.map +1 -1
  140. package/dist/permitted/index.d.cts +29 -25
  141. package/dist/permitted/index.d.cts.map +1 -1
  142. package/dist/permitted/index.d.mts +29 -25
  143. package/dist/permitted/index.d.mts.map +1 -1
  144. package/dist/permitted/index.mjs +0 -1
  145. package/dist/permitted/index.mjs.map +1 -1
  146. package/dist/permitted/invokeKeyring.cjs +12 -13
  147. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  148. package/dist/permitted/invokeKeyring.d.cts +17 -16
  149. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  150. package/dist/permitted/invokeKeyring.d.mts +17 -16
  151. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  152. package/dist/permitted/invokeKeyring.mjs +12 -13
  153. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  154. package/dist/permitted/invokeSnapSugar.cjs +6 -10
  155. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  156. package/dist/permitted/invokeSnapSugar.d.cts +9 -12
  157. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  158. package/dist/permitted/invokeSnapSugar.d.mts +9 -12
  159. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  160. package/dist/permitted/invokeSnapSugar.mjs +6 -10
  161. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  162. package/dist/permitted/listEntropySources.cjs +28 -12
  163. package/dist/permitted/listEntropySources.cjs.map +1 -1
  164. package/dist/permitted/listEntropySources.d.cts +12 -23
  165. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  166. package/dist/permitted/listEntropySources.d.mts +12 -23
  167. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  168. package/dist/permitted/listEntropySources.mjs +28 -12
  169. package/dist/permitted/listEntropySources.mjs.map +1 -1
  170. package/dist/permitted/middleware.cjs +70 -20
  171. package/dist/permitted/middleware.cjs.map +1 -1
  172. package/dist/permitted/middleware.d.cts +5 -2
  173. package/dist/permitted/middleware.d.cts.map +1 -1
  174. package/dist/permitted/middleware.d.mts +5 -2
  175. package/dist/permitted/middleware.d.mts.map +1 -1
  176. package/dist/permitted/middleware.mjs +70 -20
  177. package/dist/permitted/middleware.mjs.map +1 -1
  178. package/dist/permitted/openWebSocket.cjs +7 -14
  179. package/dist/permitted/openWebSocket.cjs.map +1 -1
  180. package/dist/permitted/openWebSocket.d.cts +9 -12
  181. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  182. package/dist/permitted/openWebSocket.d.mts +9 -12
  183. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  184. package/dist/permitted/openWebSocket.mjs +7 -14
  185. package/dist/permitted/openWebSocket.mjs.map +1 -1
  186. package/dist/permitted/requestSnaps.cjs +14 -19
  187. package/dist/permitted/requestSnaps.cjs.map +1 -1
  188. package/dist/permitted/requestSnaps.d.cts +9 -36
  189. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  190. package/dist/permitted/requestSnaps.d.mts +9 -36
  191. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  192. package/dist/permitted/requestSnaps.mjs +15 -20
  193. package/dist/permitted/requestSnaps.mjs.map +1 -1
  194. package/dist/permitted/resolveInterface.cjs +11 -15
  195. package/dist/permitted/resolveInterface.cjs.map +1 -1
  196. package/dist/permitted/resolveInterface.d.cts +12 -24
  197. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  198. package/dist/permitted/resolveInterface.d.mts +12 -24
  199. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  200. package/dist/permitted/resolveInterface.mjs +11 -15
  201. package/dist/permitted/resolveInterface.mjs.map +1 -1
  202. package/dist/permitted/scheduleBackgroundEvent.cjs +11 -14
  203. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  204. package/dist/permitted/scheduleBackgroundEvent.d.cts +10 -17
  205. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  206. package/dist/permitted/scheduleBackgroundEvent.d.mts +10 -17
  207. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  208. package/dist/permitted/scheduleBackgroundEvent.mjs +11 -14
  209. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  210. package/dist/permitted/sendWebSocketMessage.cjs +10 -14
  211. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  212. package/dist/permitted/sendWebSocketMessage.d.cts +9 -12
  213. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  214. package/dist/permitted/sendWebSocketMessage.d.mts +9 -12
  215. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  216. package/dist/permitted/sendWebSocketMessage.mjs +10 -14
  217. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  218. package/dist/permitted/setState.cjs +18 -21
  219. package/dist/permitted/setState.cjs.map +1 -1
  220. package/dist/permitted/setState.d.cts +18 -45
  221. package/dist/permitted/setState.d.cts.map +1 -1
  222. package/dist/permitted/setState.d.mts +18 -45
  223. package/dist/permitted/setState.d.mts.map +1 -1
  224. package/dist/permitted/setState.mjs +18 -21
  225. package/dist/permitted/setState.mjs.map +1 -1
  226. package/dist/permitted/startTrace.cjs +4 -6
  227. package/dist/permitted/startTrace.cjs.map +1 -1
  228. package/dist/permitted/startTrace.d.cts +8 -11
  229. package/dist/permitted/startTrace.d.cts.map +1 -1
  230. package/dist/permitted/startTrace.d.mts +8 -11
  231. package/dist/permitted/startTrace.d.mts.map +1 -1
  232. package/dist/permitted/startTrace.mjs +4 -6
  233. package/dist/permitted/startTrace.mjs.map +1 -1
  234. package/dist/permitted/trackError.cjs +4 -6
  235. package/dist/permitted/trackError.cjs.map +1 -1
  236. package/dist/permitted/trackError.d.cts +8 -11
  237. package/dist/permitted/trackError.d.cts.map +1 -1
  238. package/dist/permitted/trackError.d.mts +8 -11
  239. package/dist/permitted/trackError.d.mts.map +1 -1
  240. package/dist/permitted/trackError.mjs +4 -6
  241. package/dist/permitted/trackError.mjs.map +1 -1
  242. package/dist/permitted/trackEvent.cjs +4 -6
  243. package/dist/permitted/trackEvent.cjs.map +1 -1
  244. package/dist/permitted/trackEvent.d.cts +8 -11
  245. package/dist/permitted/trackEvent.d.cts.map +1 -1
  246. package/dist/permitted/trackEvent.d.mts +8 -11
  247. package/dist/permitted/trackEvent.d.mts.map +1 -1
  248. package/dist/permitted/trackEvent.mjs +4 -6
  249. package/dist/permitted/trackEvent.mjs.map +1 -1
  250. package/dist/permitted/updateInterface.cjs +11 -15
  251. package/dist/permitted/updateInterface.cjs.map +1 -1
  252. package/dist/permitted/updateInterface.d.cts +9 -22
  253. package/dist/permitted/updateInterface.d.cts.map +1 -1
  254. package/dist/permitted/updateInterface.d.mts +9 -22
  255. package/dist/permitted/updateInterface.d.mts.map +1 -1
  256. package/dist/permitted/updateInterface.mjs +11 -15
  257. package/dist/permitted/updateInterface.mjs.map +1 -1
  258. package/dist/restricted/dialog.cjs +23 -30
  259. package/dist/restricted/dialog.cjs.map +1 -1
  260. package/dist/restricted/dialog.d.cts +10 -58
  261. package/dist/restricted/dialog.d.cts.map +1 -1
  262. package/dist/restricted/dialog.d.mts +10 -58
  263. package/dist/restricted/dialog.d.mts.map +1 -1
  264. package/dist/restricted/dialog.mjs +23 -30
  265. package/dist/restricted/dialog.mjs.map +1 -1
  266. package/dist/restricted/getBip32Entropy.cjs +15 -12
  267. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  268. package/dist/restricted/getBip32Entropy.d.cts +11 -24
  269. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  270. package/dist/restricted/getBip32Entropy.d.mts +11 -24
  271. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  272. package/dist/restricted/getBip32Entropy.mjs +16 -13
  273. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  274. package/dist/restricted/getBip32PublicKey.cjs +15 -12
  275. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  276. package/dist/restricted/getBip32PublicKey.d.cts +11 -24
  277. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  278. package/dist/restricted/getBip32PublicKey.d.mts +11 -24
  279. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  280. package/dist/restricted/getBip32PublicKey.mjs +16 -13
  281. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  282. package/dist/restricted/getBip44Entropy.cjs +14 -10
  283. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  284. package/dist/restricted/getBip44Entropy.d.cts +11 -15
  285. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  286. package/dist/restricted/getBip44Entropy.d.mts +11 -15
  287. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  288. package/dist/restricted/getBip44Entropy.mjs +15 -11
  289. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  290. package/dist/restricted/getEntropy.cjs +10 -10
  291. package/dist/restricted/getEntropy.cjs.map +1 -1
  292. package/dist/restricted/getEntropy.d.cts +11 -15
  293. package/dist/restricted/getEntropy.d.cts.map +1 -1
  294. package/dist/restricted/getEntropy.d.mts +11 -15
  295. package/dist/restricted/getEntropy.d.mts.map +1 -1
  296. package/dist/restricted/getEntropy.mjs +11 -11
  297. package/dist/restricted/getEntropy.mjs.map +1 -1
  298. package/dist/restricted/index.cjs.map +1 -1
  299. package/dist/restricted/index.d.cts +20 -160
  300. package/dist/restricted/index.d.cts.map +1 -1
  301. package/dist/restricted/index.d.mts +20 -160
  302. package/dist/restricted/index.d.mts.map +1 -1
  303. package/dist/restricted/index.mjs.map +1 -1
  304. package/dist/restricted/invokeSnap.cjs +11 -12
  305. package/dist/restricted/invokeSnap.cjs.map +1 -1
  306. package/dist/restricted/invokeSnap.d.cts +9 -13
  307. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  308. package/dist/restricted/invokeSnap.d.mts +9 -13
  309. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  310. package/dist/restricted/invokeSnap.mjs +11 -12
  311. package/dist/restricted/invokeSnap.mjs.map +1 -1
  312. package/dist/restricted/manageState.cjs +21 -20
  313. package/dist/restricted/manageState.cjs.map +1 -1
  314. package/dist/restricted/manageState.d.cts +12 -34
  315. package/dist/restricted/manageState.d.cts.map +1 -1
  316. package/dist/restricted/manageState.d.mts +12 -34
  317. package/dist/restricted/manageState.d.mts.map +1 -1
  318. package/dist/restricted/manageState.mjs +21 -20
  319. package/dist/restricted/manageState.mjs.map +1 -1
  320. package/dist/restricted/notify.cjs +31 -24
  321. package/dist/restricted/notify.cjs.map +1 -1
  322. package/dist/restricted/notify.d.cts +16 -25
  323. package/dist/restricted/notify.d.cts.map +1 -1
  324. package/dist/restricted/notify.d.mts +16 -25
  325. package/dist/restricted/notify.d.mts.map +1 -1
  326. package/dist/restricted/notify.mjs +32 -25
  327. package/dist/restricted/notify.mjs.map +1 -1
  328. package/dist/types.cjs +3 -0
  329. package/dist/types.cjs.map +1 -0
  330. package/dist/types.d.cts +155 -0
  331. package/dist/types.d.cts.map +1 -0
  332. package/dist/types.d.mts +155 -0
  333. package/dist/types.d.mts.map +1 -0
  334. package/dist/types.mjs +2 -0
  335. package/dist/types.mjs.map +1 -0
  336. package/dist/utils.cjs +78 -24
  337. package/dist/utils.cjs.map +1 -1
  338. package/dist/utils.d.cts +21 -13
  339. package/dist/utils.d.cts.map +1 -1
  340. package/dist/utils.d.mts +21 -13
  341. package/dist/utils.d.mts.map +1 -1
  342. package/dist/utils.mjs +75 -22
  343. package/dist/utils.mjs.map +1 -1
  344. package/package.json +6 -6
  345. package/dist/permitted/handlers.cjs +0 -63
  346. package/dist/permitted/handlers.cjs.map +0 -1
  347. package/dist/permitted/handlers.d.cts +0 -299
  348. package/dist/permitted/handlers.d.cts.map +0 -1
  349. package/dist/permitted/handlers.d.mts +0 -299
  350. package/dist/permitted/handlers.d.mts.map +0 -1
  351. package/dist/permitted/handlers.mjs +0 -60
  352. package/dist/permitted/handlers.mjs.map +0 -1
@@ -1,8 +1,20 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
2
4
  import type { GetStateParams, GetStateResult } from "@metamask/snaps-sdk";
3
5
  import { type InferMatching } from "@metamask/snaps-utils";
4
- import type { PendingJsonRpcResponse, Json, JsonRpcRequest } from "@metamask/utils";
6
+ import type { PendingJsonRpcResponse, Json } from "@metamask/utils";
7
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapStateAction } from "../types.mjs";
5
8
  import type { MethodHooksObject } from "../utils.mjs";
9
+ export type GetStateMethodHooks = {
10
+ /**
11
+ * Wait for the extension to be unlocked.
12
+ *
13
+ * @returns A promise that resolves once the extension is unlocked.
14
+ */
15
+ getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;
16
+ };
17
+ export type GetStateMethodActions = PermissionControllerHasPermissionAction | SnapControllerGetSnapStateAction;
6
18
  /**
7
19
  * Get the state of the Snap, or a specific value within the state. By default,
8
20
  * the data is automatically encrypted using a Snap-specific key and
@@ -28,30 +40,9 @@ import type { MethodHooksObject } from "../utils.mjs";
28
40
  * ```
29
41
  */
30
42
  export declare const getStateHandler: {
31
- methodNames: ["snap_getState"];
32
43
  implementation: typeof getStateImplementation;
33
- hookNames: MethodHooksObject<GetStateHooks>;
34
- };
35
- export type GetStateHooks = {
36
- /**
37
- * Check if the requesting origin has a given permission.
38
- *
39
- * @param permissionName - The name of the permission to check.
40
- * @returns Whether the origin has the permission.
41
- */
42
- hasPermission: (permissionName: string) => boolean;
43
- /**
44
- * Get the state of the requesting Snap.
45
- *
46
- * @returns The current state of the Snap.
47
- */
48
- getSnapState: (encrypted: boolean) => Promise<Record<string, Json>>;
49
- /**
50
- * Wait for the extension to be unlocked.
51
- *
52
- * @returns A promise that resolves once the extension is unlocked.
53
- */
54
- getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;
44
+ hookNames: MethodHooksObject<GetStateMethodHooks>;
45
+ actionNames: ("SnapController:getSnapState" | "PermissionController:hasPermission")[];
55
46
  };
56
47
  declare const GetStateParametersStruct: import("@metamask/superstruct").Struct<{
57
48
  encrypted?: boolean | undefined;
@@ -70,13 +61,11 @@ export type GetStateParameters = InferMatching<typeof GetStateParametersStruct,
70
61
  * function.
71
62
  * @param end - The `json-rpc-engine` "end" callback.
72
63
  * @param hooks - The RPC method hooks.
73
- * @param hooks.hasPermission - Check whether a given origin has a given
74
- * permission.
75
- * @param hooks.getSnapState - Get the state of the requesting Snap.
76
64
  * @param hooks.getUnlockPromise - Wait for the extension to be unlocked.
65
+ * @param messenger - The messenger used to call controller actions.
77
66
  * @returns Nothing.
78
67
  */
79
- declare function getStateImplementation(request: JsonRpcRequest<GetStateParameters>, response: PendingJsonRpcResponse<GetStateResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getSnapState, getUnlockPromise }: GetStateHooks): Promise<void>;
68
+ declare function getStateImplementation(request: JsonRpcRequestWithOrigin<GetStateParameters>, response: PendingJsonRpcResponse<GetStateResult>, _next: unknown, end: JsonRpcEngineEndCallback, { getUnlockPromise }: GetStateMethodHooks, messenger: Messenger<string, GetStateMethodActions>): Promise<void>;
80
69
  /**
81
70
  * Get the value of a key in an object. The key may contain Lodash-style path
82
71
  * syntax, e.g., `a.b.c` (with the exception of array syntax). If the key does
@@ -1 +1 @@
1
- {"version":3,"file":"getState.d.mts","sourceRoot":"","sources":["../../src/permitted/getState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,4BAA4B;AAC1E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAQ3D,OAAO,KAAK,EACV,sBAAsB,EACtB,IAAI,EACJ,cAAc,EACf,wBAAwB;AAIzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAWlD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe;;;;CAQ3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;OAIG;IACH,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,QAAA,MAAM,wBAAwB;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,OAAO,wBAAwB,EAC/B,cAAc,CACf,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,iBAAe,sBAAsB,CACnC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,EAM3C,QAAQ,EAAE,sBAAsB,CAAC,cAAc,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAC/D,OAAO,CAAC,IAAI,CAAC,CAsBf;AAuBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,EAClC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GACvB,IAAI,CA+BN"}
1
+ {"version":3,"file":"getState.d.mts","sourceRoot":"","sources":["../../src/permitted/getState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,4BAA4B;AAC1E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAQ3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB;AAIpE,OAAO,KAAK,EACV,wBAAwB,EACxB,gCAAgC,EACjC,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAOlD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,uCAAuC,GACvC,gCAAgC,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe;;;;CAa3B,CAAC;AAEF,QAAA,MAAM,wBAAwB;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,OAAO,wBAAwB,EAC/B,cAAc,CACf,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAe,sBAAsB,CACnC,OAAO,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,EAMrD,QAAQ,EAAE,sBAAsB,CAAC,cAAc,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,gBAAgB,EAAE,EAAE,mBAAmB,EACzC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAgCf;AAuBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,EAClC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GACvB,IAAI,CA+BN"}
@@ -3,10 +3,7 @@ import { boolean, create, object, optional, StructError } from "@metamask/supers
3
3
  import { hasProperty, isObject } from "@metamask/utils";
4
4
  import { manageStateBuilder } from "../restricted/manageState.mjs";
5
5
  import { FORBIDDEN_KEYS, StateKeyStruct } from "../utils.mjs";
6
- const methodName = 'snap_getState';
7
6
  const hookNames = {
8
- hasPermission: true,
9
- getSnapState: true,
10
7
  getUnlockPromise: true,
11
8
  };
12
9
  /**
@@ -34,9 +31,12 @@ const hookNames = {
34
31
  * ```
35
32
  */
36
33
  export const getStateHandler = {
37
- methodNames: [methodName],
38
34
  implementation: getStateImplementation,
39
35
  hookNames,
36
+ actionNames: [
37
+ 'PermissionController:hasPermission',
38
+ 'SnapController:getSnapState',
39
+ ],
40
40
  };
41
41
  const GetStateParametersStruct = object({
42
42
  key: optional(StateKeyStruct),
@@ -51,10 +51,8 @@ const GetStateParametersStruct = object({
51
51
  * function.
52
52
  * @param end - The `json-rpc-engine` "end" callback.
53
53
  * @param hooks - The RPC method hooks.
54
- * @param hooks.hasPermission - Check whether a given origin has a given
55
- * permission.
56
- * @param hooks.getSnapState - Get the state of the requesting Snap.
57
54
  * @param hooks.getUnlockPromise - Wait for the extension to be unlocked.
55
+ * @param messenger - The messenger used to call controller actions.
58
56
  * @returns Nothing.
59
57
  */
60
58
  async function getStateImplementation(request,
@@ -63,9 +61,9 @@ async function getStateImplementation(request,
63
61
  // We use `GetStateResult` here to make it clear that this is the expected
64
62
  // type of the result.
65
63
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments
66
- response, _next, end, { hasPermission, getSnapState, getUnlockPromise }) {
67
- const { params } = request;
68
- if (!hasPermission(manageStateBuilder.targetName)) {
64
+ response, _next, end, { getUnlockPromise }, messenger) {
65
+ const { params, origin } = request;
66
+ if (!messenger.call('PermissionController:hasPermission', origin, manageStateBuilder.targetName)) {
69
67
  return end(providerErrors.unauthorized());
70
68
  }
71
69
  try {
@@ -74,7 +72,7 @@ response, _next, end, { hasPermission, getSnapState, getUnlockPromise }) {
74
72
  if (encrypted) {
75
73
  await getUnlockPromise(true);
76
74
  }
77
- const state = await getSnapState(encrypted);
75
+ const state = await messenger.call('SnapController:getSnapState', origin, encrypted);
78
76
  response.result = get(state, key);
79
77
  }
80
78
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"getState.mjs","sourceRoot":"","sources":["../../src/permitted/getState.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { GetStateParams, GetStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type {\n PendingJsonRpcResponse,\n Json,\n JsonRpcRequest,\n} from '@metamask/utils';\nimport { hasProperty, isObject } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type { MethodHooksObject } from '../utils';\nimport { FORBIDDEN_KEYS, StateKeyStruct } from '../utils';\n\nconst methodName = 'snap_getState';\n\nconst hookNames: MethodHooksObject<GetStateHooks> = {\n hasPermission: true,\n getSnapState: true,\n getUnlockPromise: true,\n};\n\n/**\n * Get the state of the Snap, or a specific value within the state. By default,\n * the data is automatically encrypted using a Snap-specific key and\n * automatically decrypted when retrieved. You can set `encrypted` to `false` to\n * use unencrypted storage (available when the client is locked).\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"snap_manageState\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const state = await snap.request({\n * method: 'snap_getState',\n * params: {\n * key: 'some.nested.value', // Optional, defaults to entire state\n * encrypted: true, // Optional, defaults to `true`\n * },\n * });\n * ```\n */\nexport const getStateHandler = {\n methodNames: [methodName] as const,\n implementation: getStateImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetStateHooks,\n GetStateParameters,\n GetStateResult\n>;\n\nexport type GetStateHooks = {\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * Get the state of the requesting Snap.\n *\n * @returns The current state of the Snap.\n */\n getSnapState: (encrypted: boolean) => Promise<Record<string, Json>>;\n\n /**\n * Wait for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\nconst GetStateParametersStruct = object({\n key: optional(StateKeyStruct),\n encrypted: optional(boolean()),\n});\n\nexport type GetStateParameters = InferMatching<\n typeof GetStateParametersStruct,\n GetStateParams\n>;\n\n/**\n * The `snap_getState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - Check whether a given origin has a given\n * permission.\n * @param hooks.getSnapState - Get the state of the requesting Snap.\n * @param hooks.getUnlockPromise - Wait for the extension to be unlocked.\n * @returns Nothing.\n */\nasync function getStateImplementation(\n request: JsonRpcRequest<GetStateParameters>,\n // `GetStateResult` is an alias for `Json` (which is the default type argument\n // for `PendingJsonRpcResponse`), but that may not be the case in the future.\n // We use `GetStateResult` here to make it clear that this is the expected\n // type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n response: PendingJsonRpcResponse<GetStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getSnapState, getUnlockPromise }: GetStateHooks,\n): Promise<void> {\n const { params } = request;\n\n if (!hasPermission(manageStateBuilder.targetName)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { key, encrypted = true } = validatedParams;\n\n if (encrypted) {\n await getUnlockPromise(true);\n }\n\n const state = await getSnapState(encrypted);\n response.result = get(state, key);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_getState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, GetStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n\n/**\n * Get the value of a key in an object. The key may contain Lodash-style path\n * syntax, e.g., `a.b.c` (with the exception of array syntax). If the key does\n * not exist, `null` is returned.\n *\n * This is a simplified version of Lodash's `get` function, but Lodash doesn't\n * seem to be maintained anymore, so we're using our own implementation.\n *\n * @param value - The object to get the key from.\n * @param key - The key to get.\n * @returns The value of the key in the object, or `null` if the key does not\n * exist.\n */\nexport function get(\n value: Record<string, Json> | null,\n key?: string | undefined,\n): Json {\n if (key === undefined) {\n return value;\n }\n\n const keys = key.split('.');\n let result: Json = value;\n\n // Intentionally using a classic for loop here for performance reasons.\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < keys.length; i++) {\n const currentKey = keys[i];\n if (FORBIDDEN_KEYS.includes(currentKey)) {\n throw rpcErrors.invalidParams(\n 'Invalid params: Key contains forbidden characters.',\n );\n }\n\n if (isObject(result)) {\n if (!hasProperty(result, currentKey)) {\n return null;\n }\n\n result = result[currentKey];\n continue;\n }\n\n return null;\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"getState.mjs","sourceRoot":"","sources":["../../src/permitted/getState.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { GetStateParams, GetStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, Json } from '@metamask/utils';\nimport { hasProperty, isObject } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapStateAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\nimport { FORBIDDEN_KEYS, StateKeyStruct } from '../utils';\n\nconst hookNames: MethodHooksObject<GetStateMethodHooks> = {\n getUnlockPromise: true,\n};\n\nexport type GetStateMethodHooks = {\n /**\n * Wait for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\nexport type GetStateMethodActions =\n | PermissionControllerHasPermissionAction\n | SnapControllerGetSnapStateAction;\n\n/**\n * Get the state of the Snap, or a specific value within the state. By default,\n * the data is automatically encrypted using a Snap-specific key and\n * automatically decrypted when retrieved. You can set `encrypted` to `false` to\n * use unencrypted storage (available when the client is locked).\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"snap_manageState\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const state = await snap.request({\n * method: 'snap_getState',\n * params: {\n * key: 'some.nested.value', // Optional, defaults to entire state\n * encrypted: true, // Optional, defaults to `true`\n * },\n * });\n * ```\n */\nexport const getStateHandler = {\n implementation: getStateImplementation,\n hookNames,\n actionNames: [\n 'PermissionController:hasPermission',\n 'SnapController:getSnapState',\n ],\n} satisfies MethodHandler<\n GetStateMethodHooks,\n GetStateMethodActions,\n GetStateParameters,\n GetStateResult,\n { origin: string }\n>;\n\nconst GetStateParametersStruct = object({\n key: optional(StateKeyStruct),\n encrypted: optional(boolean()),\n});\n\nexport type GetStateParameters = InferMatching<\n typeof GetStateParametersStruct,\n GetStateParams\n>;\n\n/**\n * The `snap_getState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.getUnlockPromise - Wait for the extension to be unlocked.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nasync function getStateImplementation(\n request: JsonRpcRequestWithOrigin<GetStateParameters>,\n // `GetStateResult` is an alias for `Json` (which is the default type argument\n // for `PendingJsonRpcResponse`), but that may not be the case in the future.\n // We use `GetStateResult` here to make it clear that this is the expected\n // type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n response: PendingJsonRpcResponse<GetStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getUnlockPromise }: GetStateMethodHooks,\n messenger: Messenger<string, GetStateMethodActions>,\n): Promise<void> {\n const { params, origin } = request;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n manageStateBuilder.targetName,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { key, encrypted = true } = validatedParams;\n\n if (encrypted) {\n await getUnlockPromise(true);\n }\n\n const state = await messenger.call(\n 'SnapController:getSnapState',\n origin,\n encrypted,\n );\n response.result = get(state, key);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_getState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, GetStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n\n/**\n * Get the value of a key in an object. The key may contain Lodash-style path\n * syntax, e.g., `a.b.c` (with the exception of array syntax). If the key does\n * not exist, `null` is returned.\n *\n * This is a simplified version of Lodash's `get` function, but Lodash doesn't\n * seem to be maintained anymore, so we're using our own implementation.\n *\n * @param value - The object to get the key from.\n * @param key - The key to get.\n * @returns The value of the key in the object, or `null` if the key does not\n * exist.\n */\nexport function get(\n value: Record<string, Json> | null,\n key?: string | undefined,\n): Json {\n if (key === undefined) {\n return value;\n }\n\n const keys = key.split('.');\n let result: Json = value;\n\n // Intentionally using a classic for loop here for performance reasons.\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < keys.length; i++) {\n const currentKey = keys[i];\n if (FORBIDDEN_KEYS.includes(currentKey)) {\n throw rpcErrors.invalidParams(\n 'Invalid params: Key contains forbidden characters.',\n );\n }\n\n if (isObject(result)) {\n if (!hasProperty(result, currentKey)) {\n return null;\n }\n\n result = result[currentKey];\n continue;\n }\n\n return null;\n }\n\n return result;\n}\n"]}
@@ -3,11 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getWebSocketsHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const endowments_1 = require("../endowments/index.cjs");
6
- const methodName = 'snap_getWebSockets';
7
- const hookNames = {
8
- hasPermission: true,
9
- getWebSockets: true,
10
- };
11
6
  /**
12
7
  * Get the connected WebSockets for the Snap.
13
8
  *
@@ -38,28 +33,30 @@ const hookNames = {
38
33
  * ```
39
34
  */
40
35
  exports.getWebSocketsHandler = {
41
- methodNames: [methodName],
42
36
  implementation: getWebSocketsImplementation,
43
- hookNames,
37
+ actionNames: [
38
+ 'PermissionController:hasPermission',
39
+ 'WebSocketService:getAll',
40
+ ],
44
41
  };
45
42
  /**
46
43
  * The `snap_getWebSockets` method implementation.
47
44
  *
48
- * @param _req - The JSON-RPC request object. Not used by this function.
45
+ * @param req - The JSON-RPC request object.
49
46
  * @param res - The JSON-RPC response object.
50
47
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
51
48
  * @param end - The `json-rpc-engine` "end" callback.
52
- * @param hooks - The RPC method hooks.
53
- * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
54
- * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.
49
+ * @param _hooks - The RPC method hooks. Not used by this function.
50
+ * @param messenger - The messenger used to call controller actions.
55
51
  * @returns Nothing.
56
52
  */
57
- function getWebSocketsImplementation(_req, res, _next, end, { hasPermission, getWebSockets }) {
58
- if (!hasPermission(endowments_1.SnapEndowments.NetworkAccess)) {
53
+ function getWebSocketsImplementation(req, res, _next, end, _hooks, messenger) {
54
+ const { origin } = req;
55
+ if (!messenger.call('PermissionController:hasPermission', origin, endowments_1.SnapEndowments.NetworkAccess)) {
59
56
  return end(rpc_errors_1.providerErrors.unauthorized());
60
57
  }
61
58
  try {
62
- res.result = getWebSockets();
59
+ res.result = messenger.call('WebSocketService:getAll', origin);
63
60
  }
64
61
  catch (error) {
65
62
  return end(error);
@@ -1 +1 @@
1
- {"version":3,"file":"getWebSockets.cjs","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":";;;AAEA,qDAAsD;AAQtD,wDAA+C;AAG/C,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,MAAM,SAAS,GAAgD;IAC7D,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;CACpB,CAAC;AAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACU,QAAA,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAS,2BAA2B,CAClC,IAAyC,EACzC,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,aAAa,EAA4B;IAE1D,IAAI,CAAC,aAAa,CAAC,2BAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n GetWebSocketsParams,\n GetWebSocketsResult,\n JsonRpcRequest,\n} from '@metamask/snaps-sdk';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_getWebSockets';\n\nconst hookNames: MethodHooksObject<GetWebSocketsMethodHooks> = {\n hasPermission: true,\n getWebSockets: true,\n};\n\nexport type GetWebSocketsMethodHooks = {\n hasPermission: (permissionName: string) => boolean;\n getWebSockets: () => GetWebSocketsResult;\n};\n\n/**\n * Get the connected WebSockets for the Snap.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const webSockets = await snap.request({ method: 'snap_getWebSockets' });\n * console.log(webSockets);\n * // Example output:\n * // [\n * // {\n * // id: 'websocket-1',\n * // url: 'wss://example.com/socket',\n * // protocols: ['protocol1', 'protocol2'],\n * // },\n * // {\n * // id: 'websocket-2',\n * // url: 'ws://example.org/endpoint',\n * // protocols: [],\n * // },\n * // ]\n * ```\n */\nexport const getWebSocketsHandler = {\n methodNames: [methodName] as const,\n implementation: getWebSocketsImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetWebSocketsMethodHooks,\n GetWebSocketsParams,\n GetWebSocketsResult\n>;\n\n/**\n * The `snap_getWebSockets` method implementation.\n *\n * @param _req - The JSON-RPC request object. Not used by this function.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.\n * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.\n * @returns Nothing.\n */\nfunction getWebSocketsImplementation(\n _req: JsonRpcRequest<GetWebSocketsParams>,\n res: PendingJsonRpcResponse<GetWebSocketsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getWebSockets }: GetWebSocketsMethodHooks,\n): void {\n if (!hasPermission(SnapEndowments.NetworkAccess)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n res.result = getWebSockets();\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
1
+ {"version":3,"file":"getWebSockets.cjs","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":";;;AAMA,qDAAsD;AAOtD,wDAA+C;AAU/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACU,QAAA,oBAAoB,GAAG;IAClC,cAAc,EAAE,2BAA2B;IAC3C,WAAW,EAAE;QACX,oCAAoC;QACpC,yBAAyB;KAC1B;CAOF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAS,2BAA2B,CAClC,GAAkD,EAClD,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAwD;IAExD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,2BAAc,CAAC,aAAa,CAC7B,EACD,CAAC;QACD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n GetWebSocketsParams,\n GetWebSocketsResult,\n} from '@metamask/snaps-sdk';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n JsonRpcRequestWithOrigin,\n WebSocketServiceGetAllAction,\n} from '../types';\n\nexport type GetWebSocketsMethodActions =\n | PermissionControllerHasPermissionAction\n | WebSocketServiceGetAllAction;\n\n/**\n * Get the connected WebSockets for the Snap.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const webSockets = await snap.request({ method: 'snap_getWebSockets' });\n * console.log(webSockets);\n * // Example output:\n * // [\n * // {\n * // id: 'websocket-1',\n * // url: 'wss://example.com/socket',\n * // protocols: ['protocol1', 'protocol2'],\n * // },\n * // {\n * // id: 'websocket-2',\n * // url: 'ws://example.org/endpoint',\n * // protocols: [],\n * // },\n * // ]\n * ```\n */\nexport const getWebSocketsHandler = {\n implementation: getWebSocketsImplementation,\n actionNames: [\n 'PermissionController:hasPermission',\n 'WebSocketService:getAll',\n ],\n} satisfies MethodHandler<\n never,\n GetWebSocketsMethodActions,\n GetWebSocketsParams,\n GetWebSocketsResult,\n { origin: string }\n>;\n\n/**\n * The `snap_getWebSockets` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getWebSocketsImplementation(\n req: JsonRpcRequestWithOrigin<GetWebSocketsParams>,\n res: PendingJsonRpcResponse<GetWebSocketsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, GetWebSocketsMethodActions>,\n): void {\n const { origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.NetworkAccess,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n res.result = messenger.call('WebSocketService:getAll', origin);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
@@ -1,11 +1,10 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { GetWebSocketsParams, GetWebSocketsResult, JsonRpcRequest } from "@metamask/snaps-sdk";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
4
+ import type { GetWebSocketsParams, GetWebSocketsResult } from "@metamask/snaps-sdk";
3
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
4
- import type { MethodHooksObject } from "../utils.cjs";
5
- export type GetWebSocketsMethodHooks = {
6
- hasPermission: (permissionName: string) => boolean;
7
- getWebSockets: () => GetWebSocketsResult;
8
- };
6
+ import type { JsonRpcRequestWithOrigin, WebSocketServiceGetAllAction } from "../types.cjs";
7
+ export type GetWebSocketsMethodActions = PermissionControllerHasPermissionAction | WebSocketServiceGetAllAction;
9
8
  /**
10
9
  * Get the connected WebSockets for the Snap.
11
10
  *
@@ -36,22 +35,20 @@ export type GetWebSocketsMethodHooks = {
36
35
  * ```
37
36
  */
38
37
  export declare const getWebSocketsHandler: {
39
- methodNames: ["snap_getWebSockets"];
40
38
  implementation: typeof getWebSocketsImplementation;
41
- hookNames: MethodHooksObject<GetWebSocketsMethodHooks>;
39
+ actionNames: ("WebSocketService:getAll" | "PermissionController:hasPermission")[];
42
40
  };
43
41
  /**
44
42
  * The `snap_getWebSockets` method implementation.
45
43
  *
46
- * @param _req - The JSON-RPC request object. Not used by this function.
44
+ * @param req - The JSON-RPC request object.
47
45
  * @param res - The JSON-RPC response object.
48
46
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
49
47
  * @param end - The `json-rpc-engine` "end" callback.
50
- * @param hooks - The RPC method hooks.
51
- * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
52
- * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.
48
+ * @param _hooks - The RPC method hooks. Not used by this function.
49
+ * @param messenger - The messenger used to call controller actions.
53
50
  * @returns Nothing.
54
51
  */
55
- declare function getWebSocketsImplementation(_req: JsonRpcRequest<GetWebSocketsParams>, res: PendingJsonRpcResponse<GetWebSocketsResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getWebSockets }: GetWebSocketsMethodHooks): void;
52
+ declare function getWebSocketsImplementation(req: JsonRpcRequestWithOrigin<GetWebSocketsParams>, res: PendingJsonRpcResponse<GetWebSocketsResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, GetWebSocketsMethodActions>): void;
56
53
  export {};
57
54
  //# sourceMappingURL=getWebSockets.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getWebSockets.d.cts","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,4BAA4B;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,aAAa,EAAE,MAAM,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,oBAAoB;;;;CAQhC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,2BAA2B,CAClC,IAAI,EAAE,cAAc,CAAC,mBAAmB,CAAC,EACzC,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,wBAAwB,GACzD,IAAI,CAYN"}
1
+ {"version":3,"file":"getWebSockets.d.cts","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC7B,qBAAiB;AAElB,MAAM,MAAM,0BAA0B,GAClC,uCAAuC,GACvC,4BAA4B,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,oBAAoB;;;CAYhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,EAClD,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACvD,IAAI,CAoBN"}
@@ -1,11 +1,10 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { GetWebSocketsParams, GetWebSocketsResult, JsonRpcRequest } from "@metamask/snaps-sdk";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
4
+ import type { GetWebSocketsParams, GetWebSocketsResult } from "@metamask/snaps-sdk";
3
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
4
- import type { MethodHooksObject } from "../utils.mjs";
5
- export type GetWebSocketsMethodHooks = {
6
- hasPermission: (permissionName: string) => boolean;
7
- getWebSockets: () => GetWebSocketsResult;
8
- };
6
+ import type { JsonRpcRequestWithOrigin, WebSocketServiceGetAllAction } from "../types.mjs";
7
+ export type GetWebSocketsMethodActions = PermissionControllerHasPermissionAction | WebSocketServiceGetAllAction;
9
8
  /**
10
9
  * Get the connected WebSockets for the Snap.
11
10
  *
@@ -36,22 +35,20 @@ export type GetWebSocketsMethodHooks = {
36
35
  * ```
37
36
  */
38
37
  export declare const getWebSocketsHandler: {
39
- methodNames: ["snap_getWebSockets"];
40
38
  implementation: typeof getWebSocketsImplementation;
41
- hookNames: MethodHooksObject<GetWebSocketsMethodHooks>;
39
+ actionNames: ("WebSocketService:getAll" | "PermissionController:hasPermission")[];
42
40
  };
43
41
  /**
44
42
  * The `snap_getWebSockets` method implementation.
45
43
  *
46
- * @param _req - The JSON-RPC request object. Not used by this function.
44
+ * @param req - The JSON-RPC request object.
47
45
  * @param res - The JSON-RPC response object.
48
46
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
49
47
  * @param end - The `json-rpc-engine` "end" callback.
50
- * @param hooks - The RPC method hooks.
51
- * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
52
- * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.
48
+ * @param _hooks - The RPC method hooks. Not used by this function.
49
+ * @param messenger - The messenger used to call controller actions.
53
50
  * @returns Nothing.
54
51
  */
55
- declare function getWebSocketsImplementation(_req: JsonRpcRequest<GetWebSocketsParams>, res: PendingJsonRpcResponse<GetWebSocketsResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getWebSockets }: GetWebSocketsMethodHooks): void;
52
+ declare function getWebSocketsImplementation(req: JsonRpcRequestWithOrigin<GetWebSocketsParams>, res: PendingJsonRpcResponse<GetWebSocketsResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, GetWebSocketsMethodActions>): void;
56
53
  export {};
57
54
  //# sourceMappingURL=getWebSockets.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getWebSockets.d.mts","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,4BAA4B;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,aAAa,EAAE,MAAM,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,oBAAoB;;;;CAQhC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,2BAA2B,CAClC,IAAI,EAAE,cAAc,CAAC,mBAAmB,CAAC,EACzC,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,wBAAwB,GACzD,IAAI,CAYN"}
1
+ {"version":3,"file":"getWebSockets.d.mts","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC7B,qBAAiB;AAElB,MAAM,MAAM,0BAA0B,GAClC,uCAAuC,GACvC,4BAA4B,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,oBAAoB;;;CAYhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,EAClD,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACvD,IAAI,CAoBN"}
@@ -1,10 +1,5 @@
1
1
  import { providerErrors } from "@metamask/rpc-errors";
2
2
  import { SnapEndowments } from "../endowments/index.mjs";
3
- const methodName = 'snap_getWebSockets';
4
- const hookNames = {
5
- hasPermission: true,
6
- getWebSockets: true,
7
- };
8
3
  /**
9
4
  * Get the connected WebSockets for the Snap.
10
5
  *
@@ -35,28 +30,30 @@ const hookNames = {
35
30
  * ```
36
31
  */
37
32
  export const getWebSocketsHandler = {
38
- methodNames: [methodName],
39
33
  implementation: getWebSocketsImplementation,
40
- hookNames,
34
+ actionNames: [
35
+ 'PermissionController:hasPermission',
36
+ 'WebSocketService:getAll',
37
+ ],
41
38
  };
42
39
  /**
43
40
  * The `snap_getWebSockets` method implementation.
44
41
  *
45
- * @param _req - The JSON-RPC request object. Not used by this function.
42
+ * @param req - The JSON-RPC request object.
46
43
  * @param res - The JSON-RPC response object.
47
44
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
48
45
  * @param end - The `json-rpc-engine` "end" callback.
49
- * @param hooks - The RPC method hooks.
50
- * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
51
- * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.
46
+ * @param _hooks - The RPC method hooks. Not used by this function.
47
+ * @param messenger - The messenger used to call controller actions.
52
48
  * @returns Nothing.
53
49
  */
54
- function getWebSocketsImplementation(_req, res, _next, end, { hasPermission, getWebSockets }) {
55
- if (!hasPermission(SnapEndowments.NetworkAccess)) {
50
+ function getWebSocketsImplementation(req, res, _next, end, _hooks, messenger) {
51
+ const { origin } = req;
52
+ if (!messenger.call('PermissionController:hasPermission', origin, SnapEndowments.NetworkAccess)) {
56
53
  return end(providerErrors.unauthorized());
57
54
  }
58
55
  try {
59
- res.result = getWebSockets();
56
+ res.result = messenger.call('WebSocketService:getAll', origin);
60
57
  }
61
58
  catch (error) {
62
59
  return end(error);
@@ -1 +1 @@
1
- {"version":3,"file":"getWebSockets.mjs","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,6BAA6B;AAQtD,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAG/C,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,MAAM,SAAS,GAAgD;IAC7D,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;CACpB,CAAC;AAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAS,2BAA2B,CAClC,IAAyC,EACzC,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,aAAa,EAA4B;IAE1D,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n GetWebSocketsParams,\n GetWebSocketsResult,\n JsonRpcRequest,\n} from '@metamask/snaps-sdk';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_getWebSockets';\n\nconst hookNames: MethodHooksObject<GetWebSocketsMethodHooks> = {\n hasPermission: true,\n getWebSockets: true,\n};\n\nexport type GetWebSocketsMethodHooks = {\n hasPermission: (permissionName: string) => boolean;\n getWebSockets: () => GetWebSocketsResult;\n};\n\n/**\n * Get the connected WebSockets for the Snap.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const webSockets = await snap.request({ method: 'snap_getWebSockets' });\n * console.log(webSockets);\n * // Example output:\n * // [\n * // {\n * // id: 'websocket-1',\n * // url: 'wss://example.com/socket',\n * // protocols: ['protocol1', 'protocol2'],\n * // },\n * // {\n * // id: 'websocket-2',\n * // url: 'ws://example.org/endpoint',\n * // protocols: [],\n * // },\n * // ]\n * ```\n */\nexport const getWebSocketsHandler = {\n methodNames: [methodName] as const,\n implementation: getWebSocketsImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetWebSocketsMethodHooks,\n GetWebSocketsParams,\n GetWebSocketsResult\n>;\n\n/**\n * The `snap_getWebSockets` method implementation.\n *\n * @param _req - The JSON-RPC request object. Not used by this function.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.\n * @param hooks.getWebSockets - The function to get the connected WebSockets for the origin.\n * @returns Nothing.\n */\nfunction getWebSocketsImplementation(\n _req: JsonRpcRequest<GetWebSocketsParams>,\n res: PendingJsonRpcResponse<GetWebSocketsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getWebSockets }: GetWebSocketsMethodHooks,\n): void {\n if (!hasPermission(SnapEndowments.NetworkAccess)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n res.result = getWebSockets();\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
1
+ {"version":3,"file":"getWebSockets.mjs","sourceRoot":"","sources":["../../src/permitted/getWebSockets.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,6BAA6B;AAOtD,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAU/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,2BAA2B;IAC3C,WAAW,EAAE;QACX,oCAAoC;QACpC,yBAAyB;KAC1B;CAOF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAS,2BAA2B,CAClC,GAAkD,EAClD,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAwD;IAExD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,cAAc,CAAC,aAAa,CAC7B,EACD,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n GetWebSocketsParams,\n GetWebSocketsResult,\n} from '@metamask/snaps-sdk';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n JsonRpcRequestWithOrigin,\n WebSocketServiceGetAllAction,\n} from '../types';\n\nexport type GetWebSocketsMethodActions =\n | PermissionControllerHasPermissionAction\n | WebSocketServiceGetAllAction;\n\n/**\n * Get the connected WebSockets for the Snap.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const webSockets = await snap.request({ method: 'snap_getWebSockets' });\n * console.log(webSockets);\n * // Example output:\n * // [\n * // {\n * // id: 'websocket-1',\n * // url: 'wss://example.com/socket',\n * // protocols: ['protocol1', 'protocol2'],\n * // },\n * // {\n * // id: 'websocket-2',\n * // url: 'ws://example.org/endpoint',\n * // protocols: [],\n * // },\n * // ]\n * ```\n */\nexport const getWebSocketsHandler = {\n implementation: getWebSocketsImplementation,\n actionNames: [\n 'PermissionController:hasPermission',\n 'WebSocketService:getAll',\n ],\n} satisfies MethodHandler<\n never,\n GetWebSocketsMethodActions,\n GetWebSocketsParams,\n GetWebSocketsResult,\n { origin: string }\n>;\n\n/**\n * The `snap_getWebSockets` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getWebSocketsImplementation(\n req: JsonRpcRequestWithOrigin<GetWebSocketsParams>,\n res: PendingJsonRpcResponse<GetWebSocketsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, GetWebSocketsMethodActions>,\n): void {\n const { origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.NetworkAccess,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n res.result = messenger.call('WebSocketService:getAll', origin);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./handlers.cjs"), exports);
18
17
  __exportStar(require("./middleware.cjs"), exports);
19
18
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgDA,iDAA2B;AAC3B,mDAA6B","sourcesContent":["import type { CancelBackgroundEventMethodHooks } from './cancelBackgroundEvent';\nimport type { ClearStateHooks } from './clearState';\nimport type { CloseWebSocketMethodHooks } from './closeWebSocket';\nimport type { CreateInterfaceMethodHooks } from './createInterface';\nimport type { EndTraceMethodHooks } from './endTrace';\nimport type { GetAllSnapsHooks } from './getAllSnaps';\nimport type { GetBackgroundEventsMethodHooks } from './getBackgroundEvents';\nimport type { GetClientStatusHooks } from './getClientStatus';\nimport type { GetInterfaceStateMethodHooks } from './getInterfaceState';\nimport type { GetSnapsHooks } from './getSnaps';\nimport type { GetStateHooks } from './getState';\nimport type { GetWebSocketsMethodHooks } from './getWebSockets';\nimport type { ListEntropySourcesHooks } from './listEntropySources';\nimport type { OpenWebSocketMethodHooks } from './openWebSocket';\nimport type { RequestSnapsHooks } from './requestSnaps';\nimport type { ResolveInterfaceMethodHooks } from './resolveInterface';\nimport type { ScheduleBackgroundEventMethodHooks } from './scheduleBackgroundEvent';\nimport type { SendWebSocketMessageMethodHooks } from './sendWebSocketMessage';\nimport type { SetStateHooks } from './setState';\nimport type { StartTraceMethodHooks } from './startTrace';\nimport type { TrackErrorMethodHooks } from './trackError';\nimport type { TrackEventMethodHooks } from './trackEvent';\nimport type { UpdateInterfaceMethodHooks } from './updateInterface';\n\nexport type PermittedRpcMethodHooks = ClearStateHooks &\n GetAllSnapsHooks &\n GetClientStatusHooks &\n GetSnapsHooks &\n GetStateHooks &\n ListEntropySourcesHooks &\n RequestSnapsHooks &\n CreateInterfaceMethodHooks &\n UpdateInterfaceMethodHooks &\n GetInterfaceStateMethodHooks &\n ResolveInterfaceMethodHooks &\n ScheduleBackgroundEventMethodHooks &\n CancelBackgroundEventMethodHooks &\n GetBackgroundEventsMethodHooks &\n SetStateHooks &\n OpenWebSocketMethodHooks &\n CloseWebSocketMethodHooks &\n SendWebSocketMessageMethodHooks &\n GetWebSocketsMethodHooks &\n TrackEventMethodHooks &\n TrackErrorMethodHooks &\n StartTraceMethodHooks &\n EndTraceMethodHooks;\n\nexport * from './handlers';\nexport * from './middleware';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAqFA,mDAA6B","sourcesContent":["import type { CancelBackgroundEventMethodActions } from './cancelBackgroundEvent';\nimport type { ClearStateMethodActions } from './clearState';\nimport type { CloseWebSocketMethodActions } from './closeWebSocket';\nimport type { CreateInterfaceMethodActions } from './createInterface';\nimport type { EndTraceMethodActions, EndTraceMethodHooks } from './endTrace';\nimport type { GetAllSnapsMethodActions } from './getAllSnaps';\nimport type { GetBackgroundEventsMethodActions } from './getBackgroundEvents';\nimport type {\n GetClientStatusMethodActions,\n GetClientStatusMethodHooks,\n} from './getClientStatus';\nimport type { GetFileMethodActions } from './getFile';\nimport type { GetInterfaceContextMethodActions } from './getInterfaceContext';\nimport type { GetInterfaceStateMethodActions } from './getInterfaceState';\nimport type { GetSnapsMethodActions } from './getSnaps';\nimport type { GetStateMethodActions, GetStateMethodHooks } from './getState';\nimport type { GetWebSocketsMethodActions } from './getWebSockets';\nimport type {\n InvokeKeyringMethodActions,\n InvokeKeyringMethodHooks,\n} from './invokeKeyring';\nimport type { InvokeSnapSugarMethodActions } from './invokeSnapSugar';\nimport type {\n ListEntropySourcesMethodActions,\n ListEntropySourcesMethodHooks,\n} from './listEntropySources';\nimport type { OpenWebSocketMethodActions } from './openWebSocket';\nimport type { RequestSnapsMethodActions } from './requestSnaps';\nimport type { ResolveInterfaceMethodActions } from './resolveInterface';\nimport type { ScheduleBackgroundEventMethodActions } from './scheduleBackgroundEvent';\nimport type { SendWebSocketMessageMethodActions } from './sendWebSocketMessage';\nimport type { SetStateMethodActions, SetStateMethodHooks } from './setState';\nimport type {\n StartTraceMethodActions,\n StartTraceMethodHooks,\n} from './startTrace';\nimport type {\n TrackErrorMethodActions,\n TrackErrorMethodHooks,\n} from './trackError';\nimport type {\n TrackEventMethodActions,\n TrackEventMethodHooks,\n} from './trackEvent';\nimport type { UpdateInterfaceMethodActions } from './updateInterface';\n\nexport type PermittedRpcMethodActions =\n | CancelBackgroundEventMethodActions\n | ClearStateMethodActions\n | CloseWebSocketMethodActions\n | CreateInterfaceMethodActions\n | EndTraceMethodActions\n | GetAllSnapsMethodActions\n | GetBackgroundEventsMethodActions\n | GetClientStatusMethodActions\n | GetFileMethodActions\n | GetInterfaceContextMethodActions\n | GetInterfaceStateMethodActions\n | GetSnapsMethodActions\n | GetStateMethodActions\n | GetWebSocketsMethodActions\n | InvokeKeyringMethodActions\n | InvokeSnapSugarMethodActions\n | ListEntropySourcesMethodActions\n | OpenWebSocketMethodActions\n | RequestSnapsMethodActions\n | ResolveInterfaceMethodActions\n | ScheduleBackgroundEventMethodActions\n | SendWebSocketMessageMethodActions\n | SetStateMethodActions\n | StartTraceMethodActions\n | TrackErrorMethodActions\n | TrackEventMethodActions\n | UpdateInterfaceMethodActions;\n\nexport type PermittedRpcMethodHooks = GetClientStatusMethodHooks &\n GetStateMethodHooks &\n ListEntropySourcesMethodHooks &\n SetStateMethodHooks &\n TrackEventMethodHooks &\n TrackErrorMethodHooks &\n StartTraceMethodHooks &\n EndTraceMethodHooks &\n InvokeKeyringMethodHooks;\n\nexport * from './middleware';\n"]}
@@ -1,27 +1,31 @@
1
- import type { CancelBackgroundEventMethodHooks } from "./cancelBackgroundEvent.cjs";
2
- import type { ClearStateHooks } from "./clearState.cjs";
3
- import type { CloseWebSocketMethodHooks } from "./closeWebSocket.cjs";
4
- import type { CreateInterfaceMethodHooks } from "./createInterface.cjs";
5
- import type { EndTraceMethodHooks } from "./endTrace.cjs";
6
- import type { GetAllSnapsHooks } from "./getAllSnaps.cjs";
7
- import type { GetBackgroundEventsMethodHooks } from "./getBackgroundEvents.cjs";
8
- import type { GetClientStatusHooks } from "./getClientStatus.cjs";
9
- import type { GetInterfaceStateMethodHooks } from "./getInterfaceState.cjs";
10
- import type { GetSnapsHooks } from "./getSnaps.cjs";
11
- import type { GetStateHooks } from "./getState.cjs";
12
- import type { GetWebSocketsMethodHooks } from "./getWebSockets.cjs";
13
- import type { ListEntropySourcesHooks } from "./listEntropySources.cjs";
14
- import type { OpenWebSocketMethodHooks } from "./openWebSocket.cjs";
15
- import type { RequestSnapsHooks } from "./requestSnaps.cjs";
16
- import type { ResolveInterfaceMethodHooks } from "./resolveInterface.cjs";
17
- import type { ScheduleBackgroundEventMethodHooks } from "./scheduleBackgroundEvent.cjs";
18
- import type { SendWebSocketMessageMethodHooks } from "./sendWebSocketMessage.cjs";
19
- import type { SetStateHooks } from "./setState.cjs";
20
- import type { StartTraceMethodHooks } from "./startTrace.cjs";
21
- import type { TrackErrorMethodHooks } from "./trackError.cjs";
22
- import type { TrackEventMethodHooks } from "./trackEvent.cjs";
23
- import type { UpdateInterfaceMethodHooks } from "./updateInterface.cjs";
24
- export type PermittedRpcMethodHooks = ClearStateHooks & GetAllSnapsHooks & GetClientStatusHooks & GetSnapsHooks & GetStateHooks & ListEntropySourcesHooks & RequestSnapsHooks & CreateInterfaceMethodHooks & UpdateInterfaceMethodHooks & GetInterfaceStateMethodHooks & ResolveInterfaceMethodHooks & ScheduleBackgroundEventMethodHooks & CancelBackgroundEventMethodHooks & GetBackgroundEventsMethodHooks & SetStateHooks & OpenWebSocketMethodHooks & CloseWebSocketMethodHooks & SendWebSocketMessageMethodHooks & GetWebSocketsMethodHooks & TrackEventMethodHooks & TrackErrorMethodHooks & StartTraceMethodHooks & EndTraceMethodHooks;
25
- export * from "./handlers.cjs";
1
+ import type { CancelBackgroundEventMethodActions } from "./cancelBackgroundEvent.cjs";
2
+ import type { ClearStateMethodActions } from "./clearState.cjs";
3
+ import type { CloseWebSocketMethodActions } from "./closeWebSocket.cjs";
4
+ import type { CreateInterfaceMethodActions } from "./createInterface.cjs";
5
+ import type { EndTraceMethodActions, EndTraceMethodHooks } from "./endTrace.cjs";
6
+ import type { GetAllSnapsMethodActions } from "./getAllSnaps.cjs";
7
+ import type { GetBackgroundEventsMethodActions } from "./getBackgroundEvents.cjs";
8
+ import type { GetClientStatusMethodActions, GetClientStatusMethodHooks } from "./getClientStatus.cjs";
9
+ import type { GetFileMethodActions } from "./getFile.cjs";
10
+ import type { GetInterfaceContextMethodActions } from "./getInterfaceContext.cjs";
11
+ import type { GetInterfaceStateMethodActions } from "./getInterfaceState.cjs";
12
+ import type { GetSnapsMethodActions } from "./getSnaps.cjs";
13
+ import type { GetStateMethodActions, GetStateMethodHooks } from "./getState.cjs";
14
+ import type { GetWebSocketsMethodActions } from "./getWebSockets.cjs";
15
+ import type { InvokeKeyringMethodActions, InvokeKeyringMethodHooks } from "./invokeKeyring.cjs";
16
+ import type { InvokeSnapSugarMethodActions } from "./invokeSnapSugar.cjs";
17
+ import type { ListEntropySourcesMethodActions, ListEntropySourcesMethodHooks } from "./listEntropySources.cjs";
18
+ import type { OpenWebSocketMethodActions } from "./openWebSocket.cjs";
19
+ import type { RequestSnapsMethodActions } from "./requestSnaps.cjs";
20
+ import type { ResolveInterfaceMethodActions } from "./resolveInterface.cjs";
21
+ import type { ScheduleBackgroundEventMethodActions } from "./scheduleBackgroundEvent.cjs";
22
+ import type { SendWebSocketMessageMethodActions } from "./sendWebSocketMessage.cjs";
23
+ import type { SetStateMethodActions, SetStateMethodHooks } from "./setState.cjs";
24
+ import type { StartTraceMethodActions, StartTraceMethodHooks } from "./startTrace.cjs";
25
+ import type { TrackErrorMethodActions, TrackErrorMethodHooks } from "./trackError.cjs";
26
+ import type { TrackEventMethodActions, TrackEventMethodHooks } from "./trackEvent.cjs";
27
+ import type { UpdateInterfaceMethodActions } from "./updateInterface.cjs";
28
+ export type PermittedRpcMethodActions = CancelBackgroundEventMethodActions | ClearStateMethodActions | CloseWebSocketMethodActions | CreateInterfaceMethodActions | EndTraceMethodActions | GetAllSnapsMethodActions | GetBackgroundEventsMethodActions | GetClientStatusMethodActions | GetFileMethodActions | GetInterfaceContextMethodActions | GetInterfaceStateMethodActions | GetSnapsMethodActions | GetStateMethodActions | GetWebSocketsMethodActions | InvokeKeyringMethodActions | InvokeSnapSugarMethodActions | ListEntropySourcesMethodActions | OpenWebSocketMethodActions | RequestSnapsMethodActions | ResolveInterfaceMethodActions | ScheduleBackgroundEventMethodActions | SendWebSocketMessageMethodActions | SetStateMethodActions | StartTraceMethodActions | TrackErrorMethodActions | TrackEventMethodActions | UpdateInterfaceMethodActions;
29
+ export type PermittedRpcMethodHooks = GetClientStatusMethodHooks & GetStateMethodHooks & ListEntropySourcesMethodHooks & SetStateMethodHooks & TrackEventMethodHooks & TrackErrorMethodHooks & StartTraceMethodHooks & EndTraceMethodHooks & InvokeKeyringMethodHooks;
26
30
  export * from "./middleware.cjs";
27
31
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAgC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAAyB;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAmB;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAsB;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,kCAA8B;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAA4B;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,iCAA6B;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAAuB;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,+BAA2B;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,sCAAkC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,mCAA+B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AAEpE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GACnD,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,2BAA2B,GAC3B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,aAAa,GACb,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,GACxB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,CAAC;AAEtB,+BAA2B;AAC3B,iCAA6B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,oCAAgC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAqB;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,6BAAyB;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,8BAA0B;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAmB;AAC7E,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAAsB;AAC9D,OAAO,KAAK,EAAE,gCAAgC,EAAE,kCAA8B;AAC9E,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAC3B,8BAA0B;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAkB;AACtD,OAAO,KAAK,EAAE,gCAAgC,EAAE,kCAA8B;AAC9E,OAAO,KAAK,EAAE,8BAA8B,EAAE,gCAA4B;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAmB;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAmB;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAAwB;AAClE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,4BAAwB;AACzB,OAAO,KAAK,EAAE,4BAA4B,EAAE,8BAA0B;AACtE,OAAO,KAAK,EACV,+BAA+B,EAC/B,6BAA6B,EAC9B,iCAA6B;AAC9B,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAAwB;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,2BAAuB;AAChE,OAAO,KAAK,EAAE,6BAA6B,EAAE,+BAA2B;AACxE,OAAO,KAAK,EAAE,oCAAoC,EAAE,sCAAkC;AACtF,OAAO,KAAK,EAAE,iCAAiC,EAAE,mCAA+B;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAmB;AAC7E,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,yBAAqB;AACtB,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,yBAAqB;AACtB,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,yBAAqB;AACtB,OAAO,KAAK,EAAE,4BAA4B,EAAE,8BAA0B;AAEtE,MAAM,MAAM,yBAAyB,GACjC,kCAAkC,GAClC,uBAAuB,GACvB,2BAA2B,GAC3B,4BAA4B,GAC5B,qBAAqB,GACrB,wBAAwB,GACxB,gCAAgC,GAChC,4BAA4B,GAC5B,oBAAoB,GACpB,gCAAgC,GAChC,8BAA8B,GAC9B,qBAAqB,GACrB,qBAAqB,GACrB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,+BAA+B,GAC/B,0BAA0B,GAC1B,yBAAyB,GACzB,6BAA6B,GAC7B,oCAAoC,GACpC,iCAAiC,GACjC,qBAAqB,GACrB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,4BAA4B,CAAC;AAEjC,MAAM,MAAM,uBAAuB,GAAG,0BAA0B,GAC9D,mBAAmB,GACnB,6BAA6B,GAC7B,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,wBAAwB,CAAC;AAE3B,iCAA6B"}