@metamask/snaps-rpc-methods 15.1.1 → 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 (344) hide show
  1. package/CHANGELOG.md +27 -4
  2. package/dist/index.cjs +1 -4
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +1 -2
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +1 -2
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +1 -2
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/permissions.cjs +18 -8
  11. package/dist/permissions.cjs.map +1 -1
  12. package/dist/permissions.d.cts +3 -2
  13. package/dist/permissions.d.cts.map +1 -1
  14. package/dist/permissions.d.mts +3 -2
  15. package/dist/permissions.d.mts.map +1 -1
  16. package/dist/permissions.mjs +17 -7
  17. package/dist/permissions.mjs.map +1 -1
  18. package/dist/permitted/cancelBackgroundEvent.cjs +10 -14
  19. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  20. package/dist/permitted/cancelBackgroundEvent.d.cts +9 -12
  21. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  22. package/dist/permitted/cancelBackgroundEvent.d.mts +9 -12
  23. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  24. package/dist/permitted/cancelBackgroundEvent.mjs +10 -14
  25. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  26. package/dist/permitted/clearState.cjs +10 -16
  27. package/dist/permitted/clearState.cjs.map +1 -1
  28. package/dist/permitted/clearState.d.cts +9 -23
  29. package/dist/permitted/clearState.d.cts.map +1 -1
  30. package/dist/permitted/clearState.d.mts +9 -23
  31. package/dist/permitted/clearState.d.mts.map +1 -1
  32. package/dist/permitted/clearState.mjs +10 -16
  33. package/dist/permitted/clearState.mjs.map +1 -1
  34. package/dist/permitted/closeWebSocket.cjs +7 -14
  35. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  36. package/dist/permitted/closeWebSocket.d.cts +9 -12
  37. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  38. package/dist/permitted/closeWebSocket.d.mts +9 -12
  39. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  40. package/dist/permitted/closeWebSocket.mjs +7 -14
  41. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  42. package/dist/permitted/createInterface.cjs +11 -15
  43. package/dist/permitted/createInterface.cjs.map +1 -1
  44. package/dist/permitted/createInterface.d.cts +23 -37
  45. package/dist/permitted/createInterface.d.cts.map +1 -1
  46. package/dist/permitted/createInterface.d.mts +23 -37
  47. package/dist/permitted/createInterface.d.mts.map +1 -1
  48. package/dist/permitted/createInterface.mjs +11 -15
  49. package/dist/permitted/createInterface.mjs.map +1 -1
  50. package/dist/permitted/endTrace.cjs +4 -6
  51. package/dist/permitted/endTrace.cjs.map +1 -1
  52. package/dist/permitted/endTrace.d.cts +8 -11
  53. package/dist/permitted/endTrace.d.cts.map +1 -1
  54. package/dist/permitted/endTrace.d.mts +8 -11
  55. package/dist/permitted/endTrace.d.mts.map +1 -1
  56. package/dist/permitted/endTrace.mjs +4 -6
  57. package/dist/permitted/endTrace.mjs.map +1 -1
  58. package/dist/permitted/getAllSnaps.cjs +5 -11
  59. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  60. package/dist/permitted/getAllSnaps.d.cts +10 -14
  61. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  62. package/dist/permitted/getAllSnaps.d.mts +10 -14
  63. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  64. package/dist/permitted/getAllSnaps.mjs +5 -11
  65. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  66. package/dist/permitted/getBackgroundEvents.cjs +8 -15
  67. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  68. package/dist/permitted/getBackgroundEvents.d.cts +10 -13
  69. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  70. package/dist/permitted/getBackgroundEvents.d.mts +10 -13
  71. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  72. package/dist/permitted/getBackgroundEvents.mjs +8 -15
  73. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  74. package/dist/permitted/getClientStatus.cjs +5 -6
  75. package/dist/permitted/getClientStatus.cjs.map +1 -1
  76. package/dist/permitted/getClientStatus.d.cts +17 -18
  77. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  78. package/dist/permitted/getClientStatus.d.mts +17 -18
  79. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  80. package/dist/permitted/getClientStatus.mjs +5 -6
  81. package/dist/permitted/getClientStatus.mjs.map +1 -1
  82. package/dist/permitted/getFile.cjs +7 -11
  83. package/dist/permitted/getFile.cjs.map +1 -1
  84. package/dist/permitted/getFile.d.cts +8 -10
  85. package/dist/permitted/getFile.d.cts.map +1 -1
  86. package/dist/permitted/getFile.d.mts +8 -10
  87. package/dist/permitted/getFile.d.mts.map +1 -1
  88. package/dist/permitted/getFile.mjs +7 -11
  89. package/dist/permitted/getFile.mjs.map +1 -1
  90. package/dist/permitted/getInterfaceContext.cjs +12 -15
  91. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  92. package/dist/permitted/getInterfaceContext.d.cts +9 -21
  93. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  94. package/dist/permitted/getInterfaceContext.d.mts +9 -21
  95. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  96. package/dist/permitted/getInterfaceContext.mjs +12 -15
  97. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  98. package/dist/permitted/getInterfaceState.cjs +11 -15
  99. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  100. package/dist/permitted/getInterfaceState.d.cts +9 -21
  101. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  102. package/dist/permitted/getInterfaceState.d.mts +9 -21
  103. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  104. package/dist/permitted/getInterfaceState.mjs +11 -15
  105. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  106. package/dist/permitted/getSnaps.cjs +6 -12
  107. package/dist/permitted/getSnaps.cjs.map +1 -1
  108. package/dist/permitted/getSnaps.d.cts +11 -14
  109. package/dist/permitted/getSnaps.d.cts.map +1 -1
  110. package/dist/permitted/getSnaps.d.mts +11 -14
  111. package/dist/permitted/getSnaps.d.mts.map +1 -1
  112. package/dist/permitted/getSnaps.mjs +6 -12
  113. package/dist/permitted/getSnaps.mjs.map +1 -1
  114. package/dist/permitted/getState.cjs +9 -11
  115. package/dist/permitted/getState.cjs.map +1 -1
  116. package/dist/permitted/getState.d.cts +17 -28
  117. package/dist/permitted/getState.d.cts.map +1 -1
  118. package/dist/permitted/getState.d.mts +17 -28
  119. package/dist/permitted/getState.d.mts.map +1 -1
  120. package/dist/permitted/getState.mjs +9 -11
  121. package/dist/permitted/getState.mjs.map +1 -1
  122. package/dist/permitted/getWebSockets.cjs +11 -14
  123. package/dist/permitted/getWebSockets.cjs.map +1 -1
  124. package/dist/permitted/getWebSockets.d.cts +10 -13
  125. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  126. package/dist/permitted/getWebSockets.d.mts +10 -13
  127. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  128. package/dist/permitted/getWebSockets.mjs +11 -14
  129. package/dist/permitted/getWebSockets.mjs.map +1 -1
  130. package/dist/permitted/index.cjs +0 -1
  131. package/dist/permitted/index.cjs.map +1 -1
  132. package/dist/permitted/index.d.cts +29 -25
  133. package/dist/permitted/index.d.cts.map +1 -1
  134. package/dist/permitted/index.d.mts +29 -25
  135. package/dist/permitted/index.d.mts.map +1 -1
  136. package/dist/permitted/index.mjs +0 -1
  137. package/dist/permitted/index.mjs.map +1 -1
  138. package/dist/permitted/invokeKeyring.cjs +12 -13
  139. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  140. package/dist/permitted/invokeKeyring.d.cts +17 -16
  141. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  142. package/dist/permitted/invokeKeyring.d.mts +17 -16
  143. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  144. package/dist/permitted/invokeKeyring.mjs +12 -13
  145. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  146. package/dist/permitted/invokeSnapSugar.cjs +6 -10
  147. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  148. package/dist/permitted/invokeSnapSugar.d.cts +9 -12
  149. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  150. package/dist/permitted/invokeSnapSugar.d.mts +9 -12
  151. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  152. package/dist/permitted/invokeSnapSugar.mjs +6 -10
  153. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  154. package/dist/permitted/listEntropySources.cjs +28 -12
  155. package/dist/permitted/listEntropySources.cjs.map +1 -1
  156. package/dist/permitted/listEntropySources.d.cts +12 -23
  157. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  158. package/dist/permitted/listEntropySources.d.mts +12 -23
  159. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  160. package/dist/permitted/listEntropySources.mjs +28 -12
  161. package/dist/permitted/listEntropySources.mjs.map +1 -1
  162. package/dist/permitted/middleware.cjs +70 -20
  163. package/dist/permitted/middleware.cjs.map +1 -1
  164. package/dist/permitted/middleware.d.cts +5 -2
  165. package/dist/permitted/middleware.d.cts.map +1 -1
  166. package/dist/permitted/middleware.d.mts +5 -2
  167. package/dist/permitted/middleware.d.mts.map +1 -1
  168. package/dist/permitted/middleware.mjs +70 -20
  169. package/dist/permitted/middleware.mjs.map +1 -1
  170. package/dist/permitted/openWebSocket.cjs +7 -14
  171. package/dist/permitted/openWebSocket.cjs.map +1 -1
  172. package/dist/permitted/openWebSocket.d.cts +9 -12
  173. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  174. package/dist/permitted/openWebSocket.d.mts +9 -12
  175. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  176. package/dist/permitted/openWebSocket.mjs +7 -14
  177. package/dist/permitted/openWebSocket.mjs.map +1 -1
  178. package/dist/permitted/requestSnaps.cjs +14 -19
  179. package/dist/permitted/requestSnaps.cjs.map +1 -1
  180. package/dist/permitted/requestSnaps.d.cts +9 -36
  181. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  182. package/dist/permitted/requestSnaps.d.mts +9 -36
  183. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  184. package/dist/permitted/requestSnaps.mjs +15 -20
  185. package/dist/permitted/requestSnaps.mjs.map +1 -1
  186. package/dist/permitted/resolveInterface.cjs +11 -15
  187. package/dist/permitted/resolveInterface.cjs.map +1 -1
  188. package/dist/permitted/resolveInterface.d.cts +12 -24
  189. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  190. package/dist/permitted/resolveInterface.d.mts +12 -24
  191. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  192. package/dist/permitted/resolveInterface.mjs +11 -15
  193. package/dist/permitted/resolveInterface.mjs.map +1 -1
  194. package/dist/permitted/scheduleBackgroundEvent.cjs +11 -14
  195. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  196. package/dist/permitted/scheduleBackgroundEvent.d.cts +10 -17
  197. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  198. package/dist/permitted/scheduleBackgroundEvent.d.mts +10 -17
  199. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  200. package/dist/permitted/scheduleBackgroundEvent.mjs +11 -14
  201. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  202. package/dist/permitted/sendWebSocketMessage.cjs +10 -14
  203. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  204. package/dist/permitted/sendWebSocketMessage.d.cts +9 -12
  205. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  206. package/dist/permitted/sendWebSocketMessage.d.mts +9 -12
  207. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  208. package/dist/permitted/sendWebSocketMessage.mjs +10 -14
  209. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  210. package/dist/permitted/setState.cjs +18 -21
  211. package/dist/permitted/setState.cjs.map +1 -1
  212. package/dist/permitted/setState.d.cts +18 -45
  213. package/dist/permitted/setState.d.cts.map +1 -1
  214. package/dist/permitted/setState.d.mts +18 -45
  215. package/dist/permitted/setState.d.mts.map +1 -1
  216. package/dist/permitted/setState.mjs +18 -21
  217. package/dist/permitted/setState.mjs.map +1 -1
  218. package/dist/permitted/startTrace.cjs +4 -6
  219. package/dist/permitted/startTrace.cjs.map +1 -1
  220. package/dist/permitted/startTrace.d.cts +8 -11
  221. package/dist/permitted/startTrace.d.cts.map +1 -1
  222. package/dist/permitted/startTrace.d.mts +8 -11
  223. package/dist/permitted/startTrace.d.mts.map +1 -1
  224. package/dist/permitted/startTrace.mjs +4 -6
  225. package/dist/permitted/startTrace.mjs.map +1 -1
  226. package/dist/permitted/trackError.cjs +4 -6
  227. package/dist/permitted/trackError.cjs.map +1 -1
  228. package/dist/permitted/trackError.d.cts +8 -11
  229. package/dist/permitted/trackError.d.cts.map +1 -1
  230. package/dist/permitted/trackError.d.mts +8 -11
  231. package/dist/permitted/trackError.d.mts.map +1 -1
  232. package/dist/permitted/trackError.mjs +4 -6
  233. package/dist/permitted/trackError.mjs.map +1 -1
  234. package/dist/permitted/trackEvent.cjs +4 -6
  235. package/dist/permitted/trackEvent.cjs.map +1 -1
  236. package/dist/permitted/trackEvent.d.cts +8 -11
  237. package/dist/permitted/trackEvent.d.cts.map +1 -1
  238. package/dist/permitted/trackEvent.d.mts +8 -11
  239. package/dist/permitted/trackEvent.d.mts.map +1 -1
  240. package/dist/permitted/trackEvent.mjs +4 -6
  241. package/dist/permitted/trackEvent.mjs.map +1 -1
  242. package/dist/permitted/updateInterface.cjs +11 -15
  243. package/dist/permitted/updateInterface.cjs.map +1 -1
  244. package/dist/permitted/updateInterface.d.cts +9 -22
  245. package/dist/permitted/updateInterface.d.cts.map +1 -1
  246. package/dist/permitted/updateInterface.d.mts +9 -22
  247. package/dist/permitted/updateInterface.d.mts.map +1 -1
  248. package/dist/permitted/updateInterface.mjs +11 -15
  249. package/dist/permitted/updateInterface.mjs.map +1 -1
  250. package/dist/restricted/dialog.cjs +23 -30
  251. package/dist/restricted/dialog.cjs.map +1 -1
  252. package/dist/restricted/dialog.d.cts +10 -58
  253. package/dist/restricted/dialog.d.cts.map +1 -1
  254. package/dist/restricted/dialog.d.mts +10 -58
  255. package/dist/restricted/dialog.d.mts.map +1 -1
  256. package/dist/restricted/dialog.mjs +23 -30
  257. package/dist/restricted/dialog.mjs.map +1 -1
  258. package/dist/restricted/getBip32Entropy.cjs +15 -12
  259. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  260. package/dist/restricted/getBip32Entropy.d.cts +11 -24
  261. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  262. package/dist/restricted/getBip32Entropy.d.mts +11 -24
  263. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  264. package/dist/restricted/getBip32Entropy.mjs +16 -13
  265. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  266. package/dist/restricted/getBip32PublicKey.cjs +15 -12
  267. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  268. package/dist/restricted/getBip32PublicKey.d.cts +11 -24
  269. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  270. package/dist/restricted/getBip32PublicKey.d.mts +11 -24
  271. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  272. package/dist/restricted/getBip32PublicKey.mjs +16 -13
  273. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  274. package/dist/restricted/getBip44Entropy.cjs +14 -10
  275. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  276. package/dist/restricted/getBip44Entropy.d.cts +11 -15
  277. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  278. package/dist/restricted/getBip44Entropy.d.mts +11 -15
  279. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  280. package/dist/restricted/getBip44Entropy.mjs +15 -11
  281. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  282. package/dist/restricted/getEntropy.cjs +10 -10
  283. package/dist/restricted/getEntropy.cjs.map +1 -1
  284. package/dist/restricted/getEntropy.d.cts +11 -15
  285. package/dist/restricted/getEntropy.d.cts.map +1 -1
  286. package/dist/restricted/getEntropy.d.mts +11 -15
  287. package/dist/restricted/getEntropy.d.mts.map +1 -1
  288. package/dist/restricted/getEntropy.mjs +11 -11
  289. package/dist/restricted/getEntropy.mjs.map +1 -1
  290. package/dist/restricted/index.cjs.map +1 -1
  291. package/dist/restricted/index.d.cts +20 -160
  292. package/dist/restricted/index.d.cts.map +1 -1
  293. package/dist/restricted/index.d.mts +20 -160
  294. package/dist/restricted/index.d.mts.map +1 -1
  295. package/dist/restricted/index.mjs.map +1 -1
  296. package/dist/restricted/invokeSnap.cjs +11 -12
  297. package/dist/restricted/invokeSnap.cjs.map +1 -1
  298. package/dist/restricted/invokeSnap.d.cts +9 -13
  299. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  300. package/dist/restricted/invokeSnap.d.mts +9 -13
  301. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  302. package/dist/restricted/invokeSnap.mjs +11 -12
  303. package/dist/restricted/invokeSnap.mjs.map +1 -1
  304. package/dist/restricted/manageState.cjs +21 -20
  305. package/dist/restricted/manageState.cjs.map +1 -1
  306. package/dist/restricted/manageState.d.cts +12 -34
  307. package/dist/restricted/manageState.d.cts.map +1 -1
  308. package/dist/restricted/manageState.d.mts +12 -34
  309. package/dist/restricted/manageState.d.mts.map +1 -1
  310. package/dist/restricted/manageState.mjs +21 -20
  311. package/dist/restricted/manageState.mjs.map +1 -1
  312. package/dist/restricted/notify.cjs +31 -24
  313. package/dist/restricted/notify.cjs.map +1 -1
  314. package/dist/restricted/notify.d.cts +16 -25
  315. package/dist/restricted/notify.d.cts.map +1 -1
  316. package/dist/restricted/notify.d.mts +16 -25
  317. package/dist/restricted/notify.d.mts.map +1 -1
  318. package/dist/restricted/notify.mjs +32 -25
  319. package/dist/restricted/notify.mjs.map +1 -1
  320. package/dist/types.cjs +3 -0
  321. package/dist/types.cjs.map +1 -0
  322. package/dist/types.d.cts +155 -0
  323. package/dist/types.d.cts.map +1 -0
  324. package/dist/types.d.mts +155 -0
  325. package/dist/types.d.mts.map +1 -0
  326. package/dist/types.mjs +2 -0
  327. package/dist/types.mjs.map +1 -0
  328. package/dist/utils.cjs +78 -24
  329. package/dist/utils.cjs.map +1 -1
  330. package/dist/utils.d.cts +21 -13
  331. package/dist/utils.d.cts.map +1 -1
  332. package/dist/utils.d.mts +21 -13
  333. package/dist/utils.d.mts.map +1 -1
  334. package/dist/utils.mjs +75 -22
  335. package/dist/utils.mjs.map +1 -1
  336. package/package.json +6 -6
  337. package/dist/permitted/handlers.cjs +0 -63
  338. package/dist/permitted/handlers.cjs.map +0 -1
  339. package/dist/permitted/handlers.d.cts +0 -299
  340. package/dist/permitted/handlers.d.cts.map +0 -1
  341. package/dist/permitted/handlers.d.mts +0 -299
  342. package/dist/permitted/handlers.d.mts.map +0 -1
  343. package/dist/permitted/handlers.mjs +0 -60
  344. package/dist/permitted/handlers.mjs.map +0 -1
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, StartTraceParams, TraceContext, TraceRequest } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { StartTraceParams, TraceContext, TraceRequest } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.mjs";
5
7
  import type { MethodHooksObject } from "../utils.mjs";
6
8
  export type StartTraceMethodHooks = {
7
9
  /**
@@ -11,13 +13,8 @@ export type StartTraceMethodHooks = {
11
13
  * @returns The performance trace context.
12
14
  */
13
15
  startTrace: (request: TraceRequest) => TraceContext;
14
- /**
15
- * Get Snap metadata.
16
- *
17
- * @param snapId - The ID of a Snap.
18
- */
19
- getSnap: (snapId: string) => Snap | undefined;
20
16
  };
17
+ export type StartTraceMethodActions = SnapControllerGetSnapAction;
21
18
  declare const StartTraceParametersStruct: import("@metamask/superstruct").Struct<{
22
19
  name: string;
23
20
  id?: string | undefined;
@@ -40,9 +37,9 @@ export type StartTraceParameters = InferMatching<typeof StartTraceParametersStru
40
37
  * @internal
41
38
  */
42
39
  export declare const startTraceHandler: {
43
- methodNames: ["snap_startTrace"];
44
40
  implementation: typeof getStartTraceImplementation;
45
41
  hookNames: MethodHooksObject<StartTraceMethodHooks>;
42
+ actionNames: "SnapController:getSnap"[];
46
43
  };
47
44
  /**
48
45
  * The `snap_startTrace` method implementation. This method is used to start a
@@ -55,9 +52,9 @@ export declare const startTraceHandler: {
55
52
  * @param end - The `json-rpc-engine` "end" callback.
56
53
  * @param hooks - The RPC method hooks.
57
54
  * @param hooks.startTrace - The hook function to start a performance trace.
58
- * @param hooks.getSnap - The hook function to get Snap metadata.
55
+ * @param messenger - The messenger used to call controller actions.
59
56
  * @returns Nothing.
60
57
  */
61
- declare function getStartTraceImplementation(request: JsonRpcRequest<StartTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { startTrace, getSnap }: StartTraceMethodHooks): void;
58
+ declare function getStartTraceImplementation(request: JsonRpcRequestWithOrigin<StartTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { startTrace }: StartTraceMethodHooks, messenger: Messenger<string, StartTraceMethodActions>): void;
62
59
  export {};
63
60
  //# sourceMappingURL=startTrace.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"startTrace.d.mts","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EACb,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAYjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;IAEpD;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAC7C,IAAI,CAmBN"}
1
+ {"version":3,"file":"startTrace.d.mts","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EACb,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAY3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAMlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAU7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACvD,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,qBAAqB,EACrC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CAiBN"}
@@ -1,10 +1,8 @@
1
1
  import { rpcErrors } from "@metamask/rpc-errors";
2
2
  import { boolean, number, record, union, create, object, string, StructError, exactOptional } from "@metamask/superstruct";
3
3
  import { JsonStruct } from "@metamask/utils";
4
- const methodName = 'snap_startTrace';
5
4
  const hookNames = {
6
5
  startTrace: true,
7
- getSnap: true,
8
6
  };
9
7
  const StartTraceParametersStruct = object({
10
8
  data: exactOptional(record(string(), union([string(), number(), boolean()]))),
@@ -20,9 +18,9 @@ const StartTraceParametersStruct = object({
20
18
  * @internal
21
19
  */
22
20
  export const startTraceHandler = {
23
- methodNames: [methodName],
24
21
  implementation: getStartTraceImplementation,
25
22
  hookNames,
23
+ actionNames: ['SnapController:getSnap'],
26
24
  };
27
25
  /**
28
26
  * The `snap_startTrace` method implementation. This method is used to start a
@@ -35,11 +33,11 @@ export const startTraceHandler = {
35
33
  * @param end - The `json-rpc-engine` "end" callback.
36
34
  * @param hooks - The RPC method hooks.
37
35
  * @param hooks.startTrace - The hook function to start a performance trace.
38
- * @param hooks.getSnap - The hook function to get Snap metadata.
36
+ * @param messenger - The messenger used to call controller actions.
39
37
  * @returns Nothing.
40
38
  */
41
- function getStartTraceImplementation(request, response, _next, end, { startTrace, getSnap }) {
42
- const snap = getSnap(request.origin);
39
+ function getStartTraceImplementation(request, response, _next, end, { startTrace }, messenger) {
40
+ const snap = messenger.call('SnapController:getSnap', request.origin);
43
41
  if (!snap?.preinstalled) {
44
42
  return end(rpcErrors.methodNotFound());
45
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"startTrace.mjs","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AASjD,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACd,8BAA8B;AAE/B,OAAO,EAAE,UAAU,EAAE,wBAAwB;AAI7C,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAmBF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,EAAE;IACd,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC;IACxC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n StartTraceParams,\n StartTraceResult,\n TraceContext,\n TraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n boolean,\n number,\n record,\n union,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_startTrace';\n\nconst hookNames: MethodHooksObject<StartTraceMethodHooks> = {\n startTrace: true,\n getSnap: true,\n};\n\nexport type StartTraceMethodHooks = {\n /**\n * Start a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n startTrace: (request: TraceRequest) => TraceContext;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst StartTraceParametersStruct = object({\n data: exactOptional(record(string(), union([string(), number(), boolean()]))),\n id: exactOptional(string()),\n name: string(),\n parentContext: exactOptional(JsonStruct),\n startTime: exactOptional(number()),\n tags: exactOptional(record(string(), union([string(), number(), boolean()]))),\n});\n\nexport type StartTraceParameters = InferMatching<\n typeof StartTraceParametersStruct,\n StartTraceParams\n>;\n\n/**\n * Handler for the `snap_startTrace` method.\n *\n * @internal\n */\nexport const startTraceHandler = {\n methodNames: [methodName] as const,\n implementation: getStartTraceImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n StartTraceMethodHooks,\n StartTraceParameters,\n StartTraceResult\n>;\n\n/**\n * The `snap_startTrace` method implementation. This method is used to start a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\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.startTrace - The hook function to start a performance trace.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getStartTraceImplementation(\n request: JsonRpcRequest<StartTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { startTrace, getSnap }: StartTraceMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<StartTraceParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n response.result = startTrace(validatedParams);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_startTrace` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): StartTraceParameters {\n try {\n return create(params, StartTraceParametersStruct);\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"]}
1
+ {"version":3,"file":"startTrace.mjs","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAQjD,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACd,8BAA8B;AAE/B,OAAO,EAAE,UAAU,EAAE,wBAAwB;AAQ7C,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;CACjB,CAAC;AAcF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,EAAE;IACd,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC;IACxC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc,EAAE,2BAA2B;IAC3C,SAAS;IACT,WAAW,EAAE,CAAC,wBAAwB,CAAC;CAOxC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAAuD,EACvD,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAyB,EACrC,SAAqD;IAErD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n StartTraceParams,\n StartTraceResult,\n TraceContext,\n TraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n number,\n record,\n union,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<StartTraceMethodHooks> = {\n startTrace: true,\n};\n\nexport type StartTraceMethodHooks = {\n /**\n * Start a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n startTrace: (request: TraceRequest) => TraceContext;\n};\n\nexport type StartTraceMethodActions = SnapControllerGetSnapAction;\n\nconst StartTraceParametersStruct = object({\n data: exactOptional(record(string(), union([string(), number(), boolean()]))),\n id: exactOptional(string()),\n name: string(),\n parentContext: exactOptional(JsonStruct),\n startTime: exactOptional(number()),\n tags: exactOptional(record(string(), union([string(), number(), boolean()]))),\n});\n\nexport type StartTraceParameters = InferMatching<\n typeof StartTraceParametersStruct,\n StartTraceParams\n>;\n\n/**\n * Handler for the `snap_startTrace` method.\n *\n * @internal\n */\nexport const startTraceHandler = {\n implementation: getStartTraceImplementation,\n hookNames,\n actionNames: ['SnapController:getSnap'],\n} satisfies MethodHandler<\n StartTraceMethodHooks,\n StartTraceMethodActions,\n StartTraceParameters,\n StartTraceResult,\n { origin: string }\n>;\n\n/**\n * The `snap_startTrace` method implementation. This method is used to start a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\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.startTrace - The hook function to start a performance trace.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getStartTraceImplementation(\n request: JsonRpcRequestWithOrigin<StartTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { startTrace }: StartTraceMethodHooks,\n messenger: Messenger<string, StartTraceMethodActions>,\n): void {\n const snap = messenger.call('SnapController:getSnap', request.origin);\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n response.result = startTrace(validatedParams);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_startTrace` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): StartTraceParameters {\n try {\n return create(params, StartTraceParametersStruct);\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"]}
@@ -4,10 +4,8 @@ exports.trackErrorHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const snaps_utils_1 = require("@metamask/snaps-utils");
6
6
  const superstruct_1 = require("@metamask/superstruct");
7
- const methodName = 'snap_trackError';
8
7
  const hookNames = {
9
8
  trackError: true,
10
- getSnap: true,
11
9
  };
12
10
  const TrackErrorParametersStruct = (0, superstruct_1.object)({
13
11
  error: snaps_utils_1.TrackableErrorStruct,
@@ -18,9 +16,9 @@ const TrackErrorParametersStruct = (0, superstruct_1.object)({
18
16
  * @internal
19
17
  */
20
18
  exports.trackErrorHandler = {
21
- methodNames: [methodName],
22
19
  implementation: getTrackErrorImplementation,
23
20
  hookNames,
21
+ actionNames: ['SnapController:getSnap'],
24
22
  };
25
23
  /**
26
24
  * The `snap_trackError` method implementation. This method allows preinstalled
@@ -33,11 +31,11 @@ exports.trackErrorHandler = {
33
31
  * @param end - The `json-rpc-engine` "end" callback.
34
32
  * @param hooks - The RPC method hooks.
35
33
  * @param hooks.trackError - The hook function to track an error.
36
- * @param hooks.getSnap - The hook function to get Snap metadata.
34
+ * @param messenger - The messenger used to call controller actions.
37
35
  * @returns Nothing.
38
36
  */
39
- function getTrackErrorImplementation(request, response, _next, end, { trackError, getSnap }) {
40
- const snap = getSnap(request.origin);
37
+ function getTrackErrorImplementation(request, response, _next, end, { trackError }, messenger) {
38
+ const snap = messenger.call('SnapController:getSnap', request.origin);
41
39
  if (!snap?.preinstalled) {
42
40
  return end(rpc_errors_1.rpcErrors.methodNotFound());
43
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trackError.cjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAQjD,uDAA6D;AAC7D,uDAAoE;AAKpE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAoBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,KAAK,EAAE,kCAAoB;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport { TrackableErrorStruct } from '@metamask/snaps-utils';\nimport { create, object, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_trackError';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n getSnap: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n *\n * @internal\n */\nexport const trackErrorHandler = {\n methodNames: [methodName] as const,\n implementation: getTrackErrorImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n TrackErrorMethodHooks,\n TrackErrorParameters,\n TrackErrorResult\n>;\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\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.trackError - The hook function to track an error.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequest<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError, getSnap }: TrackErrorMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<TrackErrorParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\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 * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
1
+ {"version":3,"file":"trackError.cjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":";;;AAKA,qDAAiD;AAOjD,uDAA6D;AAC7D,uDAAoE;AASpE,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;CACjB,CAAC;AAeF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,KAAK,EAAE,kCAAoB;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B,cAAc,EAAE,2BAA2B;IAC3C,SAAS;IACT,WAAW,EAAE,CAAC,wBAAwB,CAAC;CAOxC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAAuD,EACvD,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAyB,EACrC,SAAqD;IAErD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { TrackableErrorStruct } from '@metamask/snaps-utils';\nimport { create, object, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n};\n\nexport type TrackErrorMethodActions = SnapControllerGetSnapAction;\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n *\n * @internal\n */\nexport const trackErrorHandler = {\n implementation: getTrackErrorImplementation,\n hookNames,\n actionNames: ['SnapController:getSnap'],\n} satisfies MethodHandler<\n TrackErrorMethodHooks,\n TrackErrorMethodActions,\n TrackErrorParameters,\n TrackErrorResult,\n { origin: string }\n>;\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\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.trackError - The hook function to track an error.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequestWithOrigin<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError }: TrackErrorMethodHooks,\n messenger: Messenger<string, TrackErrorMethodActions>,\n): void {\n const snap = messenger.call('SnapController:getSnap', request.origin);\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\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 * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.cjs";
5
7
  import type { MethodHooksObject } from "../utils.cjs";
6
8
  export type TrackErrorMethodHooks = {
7
9
  /**
@@ -12,13 +14,8 @@ export type TrackErrorMethodHooks = {
12
14
  * in the client.
13
15
  */
14
16
  trackError: (error: Error) => string;
15
- /**
16
- * Get Snap metadata.
17
- *
18
- * @param snapId - The ID of a Snap.
19
- */
20
- getSnap: (snapId: string) => Snap | undefined;
21
17
  };
18
+ export type TrackErrorMethodActions = SnapControllerGetSnapAction;
22
19
  declare const TrackErrorParametersStruct: import("@metamask/superstruct").Struct<{
23
20
  error: TrackableError;
24
21
  }, {
@@ -31,9 +28,9 @@ export type TrackErrorParameters = InferMatching<typeof TrackErrorParametersStru
31
28
  * @internal
32
29
  */
33
30
  export declare const trackErrorHandler: {
34
- methodNames: ["snap_trackError"];
35
31
  implementation: typeof getTrackErrorImplementation;
36
32
  hookNames: MethodHooksObject<TrackErrorMethodHooks>;
33
+ actionNames: "SnapController:getSnap"[];
37
34
  };
38
35
  /**
39
36
  * The `snap_trackError` method implementation. This method allows preinstalled
@@ -46,9 +43,9 @@ export declare const trackErrorHandler: {
46
43
  * @param end - The `json-rpc-engine` "end" callback.
47
44
  * @param hooks - The RPC method hooks.
48
45
  * @param hooks.trackError - The hook function to track an error.
49
- * @param hooks.getSnap - The hook function to get Snap metadata.
46
+ * @param messenger - The messenger used to call controller actions.
50
47
  * @returns Nothing.
51
48
  */
52
- declare function getTrackErrorImplementation(request: JsonRpcRequest<TrackErrorParameters>, response: PendingJsonRpcResponse<TrackErrorResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackError, getSnap }: TrackErrorMethodHooks): void;
49
+ declare function getTrackErrorImplementation(request: JsonRpcRequestWithOrigin<TrackErrorParameters>, response: PendingJsonRpcResponse<TrackErrorResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackError }: TrackErrorMethodHooks, messenger: Messenger<string, TrackErrorMethodActions>): void;
53
50
  export {};
54
51
  //# sourceMappingURL=trackError.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackError.d.cts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAGjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAErC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAC7C,IAAI,CAqBN"}
1
+ {"version":3,"file":"trackError.d.cts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAG3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAMlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAU7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACvD,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,qBAAqB,EACrC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CAmBN"}
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.mjs";
5
7
  import type { MethodHooksObject } from "../utils.mjs";
6
8
  export type TrackErrorMethodHooks = {
7
9
  /**
@@ -12,13 +14,8 @@ export type TrackErrorMethodHooks = {
12
14
  * in the client.
13
15
  */
14
16
  trackError: (error: Error) => string;
15
- /**
16
- * Get Snap metadata.
17
- *
18
- * @param snapId - The ID of a Snap.
19
- */
20
- getSnap: (snapId: string) => Snap | undefined;
21
17
  };
18
+ export type TrackErrorMethodActions = SnapControllerGetSnapAction;
22
19
  declare const TrackErrorParametersStruct: import("@metamask/superstruct").Struct<{
23
20
  error: TrackableError;
24
21
  }, {
@@ -31,9 +28,9 @@ export type TrackErrorParameters = InferMatching<typeof TrackErrorParametersStru
31
28
  * @internal
32
29
  */
33
30
  export declare const trackErrorHandler: {
34
- methodNames: ["snap_trackError"];
35
31
  implementation: typeof getTrackErrorImplementation;
36
32
  hookNames: MethodHooksObject<TrackErrorMethodHooks>;
33
+ actionNames: "SnapController:getSnap"[];
37
34
  };
38
35
  /**
39
36
  * The `snap_trackError` method implementation. This method allows preinstalled
@@ -46,9 +43,9 @@ export declare const trackErrorHandler: {
46
43
  * @param end - The `json-rpc-engine` "end" callback.
47
44
  * @param hooks - The RPC method hooks.
48
45
  * @param hooks.trackError - The hook function to track an error.
49
- * @param hooks.getSnap - The hook function to get Snap metadata.
46
+ * @param messenger - The messenger used to call controller actions.
50
47
  * @returns Nothing.
51
48
  */
52
- declare function getTrackErrorImplementation(request: JsonRpcRequest<TrackErrorParameters>, response: PendingJsonRpcResponse<TrackErrorResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackError, getSnap }: TrackErrorMethodHooks): void;
49
+ declare function getTrackErrorImplementation(request: JsonRpcRequestWithOrigin<TrackErrorParameters>, response: PendingJsonRpcResponse<TrackErrorResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackError }: TrackErrorMethodHooks, messenger: Messenger<string, TrackErrorMethodActions>): void;
53
50
  export {};
54
51
  //# sourceMappingURL=trackError.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackError.d.mts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAGjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAErC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAC7C,IAAI,CAqBN"}
1
+ {"version":3,"file":"trackError.d.mts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAG3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAMlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAU7B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,2BAA2B,CAClC,OAAO,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACvD,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,qBAAqB,EACrC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CAmBN"}
@@ -1,10 +1,8 @@
1
1
  import { rpcErrors } from "@metamask/rpc-errors";
2
2
  import { TrackableErrorStruct } from "@metamask/snaps-utils";
3
3
  import { create, object, StructError } from "@metamask/superstruct";
4
- const methodName = 'snap_trackError';
5
4
  const hookNames = {
6
5
  trackError: true,
7
- getSnap: true,
8
6
  };
9
7
  const TrackErrorParametersStruct = object({
10
8
  error: TrackableErrorStruct,
@@ -15,9 +13,9 @@ const TrackErrorParametersStruct = object({
15
13
  * @internal
16
14
  */
17
15
  export const trackErrorHandler = {
18
- methodNames: [methodName],
19
16
  implementation: getTrackErrorImplementation,
20
17
  hookNames,
18
+ actionNames: ['SnapController:getSnap'],
21
19
  };
22
20
  /**
23
21
  * The `snap_trackError` method implementation. This method allows preinstalled
@@ -30,11 +28,11 @@ export const trackErrorHandler = {
30
28
  * @param end - The `json-rpc-engine` "end" callback.
31
29
  * @param hooks - The RPC method hooks.
32
30
  * @param hooks.trackError - The hook function to track an error.
33
- * @param hooks.getSnap - The hook function to get Snap metadata.
31
+ * @param messenger - The messenger used to call controller actions.
34
32
  * @returns Nothing.
35
33
  */
36
- function getTrackErrorImplementation(request, response, _next, end, { trackError, getSnap }) {
37
- const snap = getSnap(request.origin);
34
+ function getTrackErrorImplementation(request, response, _next, end, { trackError }, messenger) {
35
+ const snap = messenger.call('SnapController:getSnap', request.origin);
38
36
  if (!snap?.preinstalled) {
39
37
  return end(rpcErrors.methodNotFound());
40
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trackError.mjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAQjD,OAAO,EAAE,oBAAoB,EAAE,8BAA8B;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B;AAKpE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAoBF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport { TrackableErrorStruct } from '@metamask/snaps-utils';\nimport { create, object, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_trackError';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n getSnap: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n *\n * @internal\n */\nexport const trackErrorHandler = {\n methodNames: [methodName] as const,\n implementation: getTrackErrorImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n TrackErrorMethodHooks,\n TrackErrorParameters,\n TrackErrorResult\n>;\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\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.trackError - The hook function to track an error.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequest<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError, getSnap }: TrackErrorMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<TrackErrorParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\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 * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
1
+ {"version":3,"file":"trackError.mjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAOjD,OAAO,EAAE,oBAAoB,EAAE,8BAA8B;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B;AASpE,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;CACjB,CAAC;AAeF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc,EAAE,2BAA2B;IAC3C,SAAS;IACT,WAAW,EAAE,CAAC,wBAAwB,CAAC;CAOxC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAAuD,EACvD,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAyB,EACrC,SAAqD;IAErD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { TrackableErrorStruct } from '@metamask/snaps-utils';\nimport { create, object, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n};\n\nexport type TrackErrorMethodActions = SnapControllerGetSnapAction;\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n *\n * @internal\n */\nexport const trackErrorHandler = {\n implementation: getTrackErrorImplementation,\n hookNames,\n actionNames: ['SnapController:getSnap'],\n} satisfies MethodHandler<\n TrackErrorMethodHooks,\n TrackErrorMethodActions,\n TrackErrorParameters,\n TrackErrorResult,\n { origin: string }\n>;\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\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.trackError - The hook function to track an error.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequestWithOrigin<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError }: TrackErrorMethodHooks,\n messenger: Messenger<string, TrackErrorMethodActions>,\n): void {\n const snap = messenger.call('SnapController:getSnap', request.origin);\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\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 * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
@@ -4,7 +4,6 @@ exports.trackEventHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
6
  const utils_1 = require("@metamask/utils");
7
- const methodName = 'snap_trackEvent';
8
7
  const PropertiesStruct = (0, superstruct_1.optional)((0, superstruct_1.record)((0, superstruct_1.string)(), utils_1.JsonStruct));
9
8
  const snakeCaseRegex = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/u;
10
9
  const SnakeCasePropertiesStruct = (0, superstruct_1.refine)(PropertiesStruct, 'snake_case_keys', (value) => {
@@ -15,7 +14,6 @@ const SnakeCasePropertiesStruct = (0, superstruct_1.refine)(PropertiesStruct, 's
15
14
  });
16
15
  const hookNames = {
17
16
  trackEvent: true,
18
- getSnap: true,
19
17
  };
20
18
  const TrackEventParametersStruct = (0, superstruct_1.object)({
21
19
  event: (0, superstruct_1.object)({
@@ -30,9 +28,9 @@ const TrackEventParametersStruct = (0, superstruct_1.object)({
30
28
  * @internal
31
29
  */
32
30
  exports.trackEventHandler = {
33
- methodNames: [methodName],
34
31
  implementation: getTrackEventImplementation,
35
32
  hookNames,
33
+ actionNames: ['SnapController:getSnap'],
36
34
  };
37
35
  /**
38
36
  * The `snap_trackEvent` method implementation.
@@ -44,11 +42,11 @@ exports.trackEventHandler = {
44
42
  * @param end - The `json-rpc-engine` "end" callback.
45
43
  * @param hooks - The RPC method hooks.
46
44
  * @param hooks.trackEvent - The function to track the event.
47
- * @param hooks.getSnap - The function to get Snap metadata.
45
+ * @param messenger - The messenger used to call controller actions.
48
46
  * @returns Nothing.
49
47
  */
50
- function getTrackEventImplementation(req, res, _next, end, { trackEvent, getSnap }) {
51
- const snap = getSnap(req.origin);
48
+ function getTrackEventImplementation(req, res, _next, end, { trackEvent }, messenger) {
49
+ const snap = messenger.call('SnapController:getSnap', req.origin);
52
50
  if (!snap?.preinstalled) {
53
51
  return end(rpc_errors_1.rpcErrors.methodNotFound());
54
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trackEvent.cjs","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAOjD,uDAQ+B;AAE/B,2CAA6C;AAI7C,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,gBAAgB,GAAG,IAAA,sBAAQ,EAAC,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC;AAEhE,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,MAAM,yBAAyB,GAAG,IAAA,oBAAM,EACtC,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC,CACF,CAAC;AAEF,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAuBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,KAAK,EAAE,IAAA,oBAAM,EAAC;QACZ,KAAK,EAAE,IAAA,oBAAM,GAAE;QACf,UAAU,EAAE,yBAAyB;QACrC,mBAAmB,EAAE,yBAAyB;KAC/C,CAAC;CACH,CAAC,CAAC;AAOH;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,2BAA2B,CAClC,GAAyC,EACzC,GAA6C,EAC7C,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,GAA6D,CAAC,MAAM,CACtE,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,UAAU,KAAK,iBAAiB,EAAE,CAAC;gBAC3C,MAAM,sBAAS,CAAC,aAAa,CAAC;oBAC5B,OAAO,EAAE,mHAAmH,KAAK,CAAC,GAAG,IAAI;iBAC1I,CAAC,CAAC;YACL,CAAC;YAED,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n TrackEventParams,\n TrackEventResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n create,\n object,\n optional,\n record,\n refine,\n string,\n StructError,\n} from '@metamask/superstruct';\nimport type { Json, PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_trackEvent';\n\nconst PropertiesStruct = optional(record(string(), JsonStruct));\n\nconst snakeCaseRegex = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/u;\n\nconst SnakeCasePropertiesStruct = refine(\n PropertiesStruct,\n 'snake_case_keys',\n (value) => {\n if (!value) {\n return true;\n }\n\n return Object.keys(value).every((key) => snakeCaseRegex.test(key));\n },\n);\n\nconst hookNames: MethodHooksObject<TrackEventMethodHooks> = {\n trackEvent: true,\n getSnap: true,\n};\n\nexport type TrackEventMethodHooks = {\n /**\n * Track an event.\n *\n * @param event - The event object containing event details and properties.\n */\n trackEvent: (event: TrackEventObject) => void;\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nexport type TrackEventObject = {\n event: string;\n properties?: Record<string, Json>;\n sensitiveProperties?: Record<string, Json>;\n};\n\nconst TrackEventParametersStruct = object({\n event: object({\n event: string(),\n properties: SnakeCasePropertiesStruct,\n sensitiveProperties: SnakeCasePropertiesStruct,\n }),\n});\n\nexport type TrackEventParameters = InferMatching<\n typeof TrackEventParametersStruct,\n TrackEventParams\n>;\n\n/**\n * Handler for the `snap_trackEvent` method.\n *\n * @internal\n */\nexport const trackEventHandler = {\n methodNames: [methodName] as const,\n implementation: getTrackEventImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n TrackEventMethodHooks,\n TrackEventParameters,\n TrackEventResult\n>;\n\n/**\n * The `snap_trackEvent` method implementation.\n * This method allows pre-installed Snaps to submit tracking events to the client.\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.\n * @param hooks.trackEvent - The function to track the event.\n * @param hooks.getSnap - The function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getTrackEventImplementation(\n req: JsonRpcRequest<TrackEventParameters>,\n res: PendingJsonRpcResponse<TrackEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackEvent, getSnap }: TrackEventMethodHooks,\n): void {\n const snap = getSnap(\n (req as JsonRpcRequest<TrackEventParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n trackEvent(validatedParams.event);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_trackEvent method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackEventParameters {\n try {\n return create(params, TrackEventParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n if (error.refinement === 'snake_case_keys') {\n throw rpcErrors.invalidParams({\n message: `Invalid params: All property keys must be in snake_case format. The following key contains invalid properties: \"${error.key}\".`,\n });\n }\n\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"trackEvent.cjs","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":";;;AAKA,qDAAiD;AAGjD,uDAQ+B;AAE/B,2CAA6C;AAQ7C,MAAM,gBAAgB,GAAG,IAAA,sBAAQ,EAAC,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC;AAEhE,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,MAAM,yBAAyB,GAAG,IAAA,oBAAM,EACtC,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC,CACF,CAAC;AAEF,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;CACjB,CAAC;AAmBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,KAAK,EAAE,IAAA,oBAAM,EAAC;QACZ,KAAK,EAAE,IAAA,oBAAM,GAAE;QACf,UAAU,EAAE,yBAAyB;QACrC,mBAAmB,EAAE,yBAAyB;KAC/C,CAAC;CACH,CAAC,CAAC;AAOH;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B,cAAc,EAAE,2BAA2B;IAC3C,SAAS;IACT,WAAW,EAAE,CAAC,wBAAwB,CAAC;CAOxC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,2BAA2B,CAClC,GAAmD,EACnD,GAA6C,EAC7C,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAyB,EACrC,SAAqD;IAErD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,UAAU,KAAK,iBAAiB,EAAE,CAAC;gBAC3C,MAAM,sBAAS,CAAC,aAAa,CAAC;oBAC5B,OAAO,EAAE,mHAAmH,KAAK,CAAC,GAAG,IAAI;iBAC1I,CAAC,CAAC;YACL,CAAC;YAED,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { TrackEventParams, TrackEventResult } from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport {\n create,\n object,\n optional,\n record,\n refine,\n string,\n StructError,\n} from '@metamask/superstruct';\nimport type { Json, PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\n\nconst PropertiesStruct = optional(record(string(), JsonStruct));\n\nconst snakeCaseRegex = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/u;\n\nconst SnakeCasePropertiesStruct = refine(\n PropertiesStruct,\n 'snake_case_keys',\n (value) => {\n if (!value) {\n return true;\n }\n\n return Object.keys(value).every((key) => snakeCaseRegex.test(key));\n },\n);\n\nconst hookNames: MethodHooksObject<TrackEventMethodHooks> = {\n trackEvent: true,\n};\n\nexport type TrackEventMethodHooks = {\n /**\n * Track an event.\n *\n * @param event - The event object containing event details and properties.\n */\n trackEvent: (event: TrackEventObject) => void;\n};\n\nexport type TrackEventMethodActions = SnapControllerGetSnapAction;\n\nexport type TrackEventObject = {\n event: string;\n properties?: Record<string, Json>;\n sensitiveProperties?: Record<string, Json>;\n};\n\nconst TrackEventParametersStruct = object({\n event: object({\n event: string(),\n properties: SnakeCasePropertiesStruct,\n sensitiveProperties: SnakeCasePropertiesStruct,\n }),\n});\n\nexport type TrackEventParameters = InferMatching<\n typeof TrackEventParametersStruct,\n TrackEventParams\n>;\n\n/**\n * Handler for the `snap_trackEvent` method.\n *\n * @internal\n */\nexport const trackEventHandler = {\n implementation: getTrackEventImplementation,\n hookNames,\n actionNames: ['SnapController:getSnap'],\n} satisfies MethodHandler<\n TrackEventMethodHooks,\n TrackEventMethodActions,\n TrackEventParameters,\n TrackEventResult,\n { origin: string }\n>;\n\n/**\n * The `snap_trackEvent` method implementation.\n * This method allows pre-installed Snaps to submit tracking events to the client.\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.\n * @param hooks.trackEvent - The function to track the event.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getTrackEventImplementation(\n req: JsonRpcRequestWithOrigin<TrackEventParameters>,\n res: PendingJsonRpcResponse<TrackEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackEvent }: TrackEventMethodHooks,\n messenger: Messenger<string, TrackEventMethodActions>,\n): void {\n const snap = messenger.call('SnapController:getSnap', req.origin);\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n trackEvent(validatedParams.event);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_trackEvent method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackEventParameters {\n try {\n return create(params, TrackEventParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n if (error.refinement === 'snake_case_keys') {\n throw rpcErrors.invalidParams({\n message: `Invalid params: All property keys must be in snake_case format. The following key contains invalid properties: \"${error.key}\".`,\n });\n }\n\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, TrackEventParams, TrackEventResult } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { TrackEventParams, TrackEventResult } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { Json, PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.cjs";
5
7
  import type { MethodHooksObject } from "../utils.cjs";
6
8
  export type TrackEventMethodHooks = {
7
9
  /**
@@ -10,13 +12,8 @@ export type TrackEventMethodHooks = {
10
12
  * @param event - The event object containing event details and properties.
11
13
  */
12
14
  trackEvent: (event: TrackEventObject) => void;
13
- /**
14
- * Get Snap metadata.
15
- *
16
- * @param snapId - The ID of a Snap.
17
- */
18
- getSnap: (snapId: string) => Snap | undefined;
19
15
  };
16
+ export type TrackEventMethodActions = SnapControllerGetSnapAction;
20
17
  export type TrackEventObject = {
21
18
  event: string;
22
19
  properties?: Record<string, Json>;
@@ -46,9 +43,9 @@ export type TrackEventParameters = InferMatching<typeof TrackEventParametersStru
46
43
  * @internal
47
44
  */
48
45
  export declare const trackEventHandler: {
49
- methodNames: ["snap_trackEvent"];
50
46
  implementation: typeof getTrackEventImplementation;
51
47
  hookNames: MethodHooksObject<TrackEventMethodHooks>;
48
+ actionNames: "SnapController:getSnap"[];
52
49
  };
53
50
  /**
54
51
  * The `snap_trackEvent` method implementation.
@@ -60,9 +57,9 @@ export declare const trackEventHandler: {
60
57
  * @param end - The `json-rpc-engine` "end" callback.
61
58
  * @param hooks - The RPC method hooks.
62
59
  * @param hooks.trackEvent - The function to track the event.
63
- * @param hooks.getSnap - The function to get Snap metadata.
60
+ * @param messenger - The messenger used to call controller actions.
64
61
  * @returns Nothing.
65
62
  */
66
- declare function getTrackEventImplementation(req: JsonRpcRequest<TrackEventParameters>, res: PendingJsonRpcResponse<TrackEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackEvent, getSnap }: TrackEventMethodHooks): void;
63
+ declare function getTrackEventImplementation(req: JsonRpcRequestWithOrigin<TrackEventParameters>, res: PendingJsonRpcResponse<TrackEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackEvent }: TrackEventMethodHooks, messenger: Messenger<string, TrackEventMethodActions>): void;
67
64
  export {};
68
65
  //# sourceMappingURL=trackEvent.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAUjE,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,wBAAwB;AAGpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAyBlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,cAAc,CAAC,oBAAoB,CAAC,EACzC,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAC7C,IAAI,CAoBN"}
1
+ {"version":3,"file":"trackEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAU3D,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,wBAAwB;AAGpE,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAsBlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAU7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACnD,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,qBAAqB,EACrC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CAkBN"}
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, TrackEventParams, TrackEventResult } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { TrackEventParams, TrackEventResult } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { Json, PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.mjs";
5
7
  import type { MethodHooksObject } from "../utils.mjs";
6
8
  export type TrackEventMethodHooks = {
7
9
  /**
@@ -10,13 +12,8 @@ export type TrackEventMethodHooks = {
10
12
  * @param event - The event object containing event details and properties.
11
13
  */
12
14
  trackEvent: (event: TrackEventObject) => void;
13
- /**
14
- * Get Snap metadata.
15
- *
16
- * @param snapId - The ID of a Snap.
17
- */
18
- getSnap: (snapId: string) => Snap | undefined;
19
15
  };
16
+ export type TrackEventMethodActions = SnapControllerGetSnapAction;
20
17
  export type TrackEventObject = {
21
18
  event: string;
22
19
  properties?: Record<string, Json>;
@@ -46,9 +43,9 @@ export type TrackEventParameters = InferMatching<typeof TrackEventParametersStru
46
43
  * @internal
47
44
  */
48
45
  export declare const trackEventHandler: {
49
- methodNames: ["snap_trackEvent"];
50
46
  implementation: typeof getTrackEventImplementation;
51
47
  hookNames: MethodHooksObject<TrackEventMethodHooks>;
48
+ actionNames: "SnapController:getSnap"[];
52
49
  };
53
50
  /**
54
51
  * The `snap_trackEvent` method implementation.
@@ -60,9 +57,9 @@ export declare const trackEventHandler: {
60
57
  * @param end - The `json-rpc-engine` "end" callback.
61
58
  * @param hooks - The RPC method hooks.
62
59
  * @param hooks.trackEvent - The function to track the event.
63
- * @param hooks.getSnap - The function to get Snap metadata.
60
+ * @param messenger - The messenger used to call controller actions.
64
61
  * @returns Nothing.
65
62
  */
66
- declare function getTrackEventImplementation(req: JsonRpcRequest<TrackEventParameters>, res: PendingJsonRpcResponse<TrackEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackEvent, getSnap }: TrackEventMethodHooks): void;
63
+ declare function getTrackEventImplementation(req: JsonRpcRequestWithOrigin<TrackEventParameters>, res: PendingJsonRpcResponse<TrackEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { trackEvent }: TrackEventMethodHooks, messenger: Messenger<string, TrackEventMethodActions>): void;
67
64
  export {};
68
65
  //# sourceMappingURL=trackEvent.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAUjE,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,wBAAwB;AAGpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAyBlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,cAAc,CAAC,oBAAoB,CAAC,EACzC,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAC7C,IAAI,CAoBN"}
1
+ {"version":3,"file":"trackEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/trackEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAU3D,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,wBAAwB;AAGpE,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAsBlD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;CAU7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAS,2BAA2B,CAClC,GAAG,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACnD,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,qBAAqB,EACrC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,GACpD,IAAI,CAkBN"}