@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.
- package/CHANGELOG.md +27 -4
- package/dist/index.cjs +1 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/dist/permissions.cjs +18 -8
- package/dist/permissions.cjs.map +1 -1
- package/dist/permissions.d.cts +3 -2
- package/dist/permissions.d.cts.map +1 -1
- package/dist/permissions.d.mts +3 -2
- package/dist/permissions.d.mts.map +1 -1
- package/dist/permissions.mjs +17 -7
- package/dist/permissions.mjs.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.cjs +10 -14
- package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.cts +9 -12
- package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.mts +9 -12
- package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.mjs +10 -14
- package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/clearState.cjs +10 -16
- package/dist/permitted/clearState.cjs.map +1 -1
- package/dist/permitted/clearState.d.cts +9 -23
- package/dist/permitted/clearState.d.cts.map +1 -1
- package/dist/permitted/clearState.d.mts +9 -23
- package/dist/permitted/clearState.d.mts.map +1 -1
- package/dist/permitted/clearState.mjs +10 -16
- package/dist/permitted/clearState.mjs.map +1 -1
- package/dist/permitted/closeWebSocket.cjs +7 -14
- package/dist/permitted/closeWebSocket.cjs.map +1 -1
- package/dist/permitted/closeWebSocket.d.cts +9 -12
- package/dist/permitted/closeWebSocket.d.cts.map +1 -1
- package/dist/permitted/closeWebSocket.d.mts +9 -12
- package/dist/permitted/closeWebSocket.d.mts.map +1 -1
- package/dist/permitted/closeWebSocket.mjs +7 -14
- package/dist/permitted/closeWebSocket.mjs.map +1 -1
- package/dist/permitted/createInterface.cjs +11 -15
- package/dist/permitted/createInterface.cjs.map +1 -1
- package/dist/permitted/createInterface.d.cts +23 -37
- package/dist/permitted/createInterface.d.cts.map +1 -1
- package/dist/permitted/createInterface.d.mts +23 -37
- package/dist/permitted/createInterface.d.mts.map +1 -1
- package/dist/permitted/createInterface.mjs +11 -15
- package/dist/permitted/createInterface.mjs.map +1 -1
- package/dist/permitted/endTrace.cjs +4 -6
- package/dist/permitted/endTrace.cjs.map +1 -1
- package/dist/permitted/endTrace.d.cts +8 -11
- package/dist/permitted/endTrace.d.cts.map +1 -1
- package/dist/permitted/endTrace.d.mts +8 -11
- package/dist/permitted/endTrace.d.mts.map +1 -1
- package/dist/permitted/endTrace.mjs +4 -6
- package/dist/permitted/endTrace.mjs.map +1 -1
- package/dist/permitted/getAllSnaps.cjs +5 -11
- package/dist/permitted/getAllSnaps.cjs.map +1 -1
- package/dist/permitted/getAllSnaps.d.cts +10 -14
- package/dist/permitted/getAllSnaps.d.cts.map +1 -1
- package/dist/permitted/getAllSnaps.d.mts +10 -14
- package/dist/permitted/getAllSnaps.d.mts.map +1 -1
- package/dist/permitted/getAllSnaps.mjs +5 -11
- package/dist/permitted/getAllSnaps.mjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.cjs +8 -15
- package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.cts +10 -13
- package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.mts +10 -13
- package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
- package/dist/permitted/getBackgroundEvents.mjs +8 -15
- package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
- package/dist/permitted/getClientStatus.cjs +5 -6
- package/dist/permitted/getClientStatus.cjs.map +1 -1
- package/dist/permitted/getClientStatus.d.cts +17 -18
- package/dist/permitted/getClientStatus.d.cts.map +1 -1
- package/dist/permitted/getClientStatus.d.mts +17 -18
- package/dist/permitted/getClientStatus.d.mts.map +1 -1
- package/dist/permitted/getClientStatus.mjs +5 -6
- package/dist/permitted/getClientStatus.mjs.map +1 -1
- package/dist/permitted/getFile.cjs +7 -11
- package/dist/permitted/getFile.cjs.map +1 -1
- package/dist/permitted/getFile.d.cts +8 -10
- package/dist/permitted/getFile.d.cts.map +1 -1
- package/dist/permitted/getFile.d.mts +8 -10
- package/dist/permitted/getFile.d.mts.map +1 -1
- package/dist/permitted/getFile.mjs +7 -11
- package/dist/permitted/getFile.mjs.map +1 -1
- package/dist/permitted/getInterfaceContext.cjs +12 -15
- package/dist/permitted/getInterfaceContext.cjs.map +1 -1
- package/dist/permitted/getInterfaceContext.d.cts +9 -21
- package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
- package/dist/permitted/getInterfaceContext.d.mts +9 -21
- package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
- package/dist/permitted/getInterfaceContext.mjs +12 -15
- package/dist/permitted/getInterfaceContext.mjs.map +1 -1
- package/dist/permitted/getInterfaceState.cjs +11 -15
- package/dist/permitted/getInterfaceState.cjs.map +1 -1
- package/dist/permitted/getInterfaceState.d.cts +9 -21
- package/dist/permitted/getInterfaceState.d.cts.map +1 -1
- package/dist/permitted/getInterfaceState.d.mts +9 -21
- package/dist/permitted/getInterfaceState.d.mts.map +1 -1
- package/dist/permitted/getInterfaceState.mjs +11 -15
- package/dist/permitted/getInterfaceState.mjs.map +1 -1
- package/dist/permitted/getSnaps.cjs +6 -12
- package/dist/permitted/getSnaps.cjs.map +1 -1
- package/dist/permitted/getSnaps.d.cts +11 -14
- package/dist/permitted/getSnaps.d.cts.map +1 -1
- package/dist/permitted/getSnaps.d.mts +11 -14
- package/dist/permitted/getSnaps.d.mts.map +1 -1
- package/dist/permitted/getSnaps.mjs +6 -12
- package/dist/permitted/getSnaps.mjs.map +1 -1
- package/dist/permitted/getState.cjs +9 -11
- package/dist/permitted/getState.cjs.map +1 -1
- package/dist/permitted/getState.d.cts +17 -28
- package/dist/permitted/getState.d.cts.map +1 -1
- package/dist/permitted/getState.d.mts +17 -28
- package/dist/permitted/getState.d.mts.map +1 -1
- package/dist/permitted/getState.mjs +9 -11
- package/dist/permitted/getState.mjs.map +1 -1
- package/dist/permitted/getWebSockets.cjs +11 -14
- package/dist/permitted/getWebSockets.cjs.map +1 -1
- package/dist/permitted/getWebSockets.d.cts +10 -13
- package/dist/permitted/getWebSockets.d.cts.map +1 -1
- package/dist/permitted/getWebSockets.d.mts +10 -13
- package/dist/permitted/getWebSockets.d.mts.map +1 -1
- package/dist/permitted/getWebSockets.mjs +11 -14
- package/dist/permitted/getWebSockets.mjs.map +1 -1
- package/dist/permitted/index.cjs +0 -1
- package/dist/permitted/index.cjs.map +1 -1
- package/dist/permitted/index.d.cts +29 -25
- package/dist/permitted/index.d.cts.map +1 -1
- package/dist/permitted/index.d.mts +29 -25
- package/dist/permitted/index.d.mts.map +1 -1
- package/dist/permitted/index.mjs +0 -1
- package/dist/permitted/index.mjs.map +1 -1
- package/dist/permitted/invokeKeyring.cjs +12 -13
- package/dist/permitted/invokeKeyring.cjs.map +1 -1
- package/dist/permitted/invokeKeyring.d.cts +17 -16
- package/dist/permitted/invokeKeyring.d.cts.map +1 -1
- package/dist/permitted/invokeKeyring.d.mts +17 -16
- package/dist/permitted/invokeKeyring.d.mts.map +1 -1
- package/dist/permitted/invokeKeyring.mjs +12 -13
- package/dist/permitted/invokeKeyring.mjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.cjs +6 -10
- package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.cts +9 -12
- package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.mts +9 -12
- package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
- package/dist/permitted/invokeSnapSugar.mjs +6 -10
- package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
- package/dist/permitted/listEntropySources.cjs +28 -12
- package/dist/permitted/listEntropySources.cjs.map +1 -1
- package/dist/permitted/listEntropySources.d.cts +12 -23
- package/dist/permitted/listEntropySources.d.cts.map +1 -1
- package/dist/permitted/listEntropySources.d.mts +12 -23
- package/dist/permitted/listEntropySources.d.mts.map +1 -1
- package/dist/permitted/listEntropySources.mjs +28 -12
- package/dist/permitted/listEntropySources.mjs.map +1 -1
- package/dist/permitted/middleware.cjs +70 -20
- package/dist/permitted/middleware.cjs.map +1 -1
- package/dist/permitted/middleware.d.cts +5 -2
- package/dist/permitted/middleware.d.cts.map +1 -1
- package/dist/permitted/middleware.d.mts +5 -2
- package/dist/permitted/middleware.d.mts.map +1 -1
- package/dist/permitted/middleware.mjs +70 -20
- package/dist/permitted/middleware.mjs.map +1 -1
- package/dist/permitted/openWebSocket.cjs +7 -14
- package/dist/permitted/openWebSocket.cjs.map +1 -1
- package/dist/permitted/openWebSocket.d.cts +9 -12
- package/dist/permitted/openWebSocket.d.cts.map +1 -1
- package/dist/permitted/openWebSocket.d.mts +9 -12
- package/dist/permitted/openWebSocket.d.mts.map +1 -1
- package/dist/permitted/openWebSocket.mjs +7 -14
- package/dist/permitted/openWebSocket.mjs.map +1 -1
- package/dist/permitted/requestSnaps.cjs +14 -19
- package/dist/permitted/requestSnaps.cjs.map +1 -1
- package/dist/permitted/requestSnaps.d.cts +9 -36
- package/dist/permitted/requestSnaps.d.cts.map +1 -1
- package/dist/permitted/requestSnaps.d.mts +9 -36
- package/dist/permitted/requestSnaps.d.mts.map +1 -1
- package/dist/permitted/requestSnaps.mjs +15 -20
- package/dist/permitted/requestSnaps.mjs.map +1 -1
- package/dist/permitted/resolveInterface.cjs +11 -15
- package/dist/permitted/resolveInterface.cjs.map +1 -1
- package/dist/permitted/resolveInterface.d.cts +12 -24
- package/dist/permitted/resolveInterface.d.cts.map +1 -1
- package/dist/permitted/resolveInterface.d.mts +12 -24
- package/dist/permitted/resolveInterface.d.mts.map +1 -1
- package/dist/permitted/resolveInterface.mjs +11 -15
- package/dist/permitted/resolveInterface.mjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.cjs +11 -14
- package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.cts +10 -17
- package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.mts +10 -17
- package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.mjs +11 -14
- package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.cjs +10 -14
- package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.cts +9 -12
- package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.mts +9 -12
- package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.mjs +10 -14
- package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
- package/dist/permitted/setState.cjs +18 -21
- package/dist/permitted/setState.cjs.map +1 -1
- package/dist/permitted/setState.d.cts +18 -45
- package/dist/permitted/setState.d.cts.map +1 -1
- package/dist/permitted/setState.d.mts +18 -45
- package/dist/permitted/setState.d.mts.map +1 -1
- package/dist/permitted/setState.mjs +18 -21
- package/dist/permitted/setState.mjs.map +1 -1
- package/dist/permitted/startTrace.cjs +4 -6
- package/dist/permitted/startTrace.cjs.map +1 -1
- package/dist/permitted/startTrace.d.cts +8 -11
- package/dist/permitted/startTrace.d.cts.map +1 -1
- package/dist/permitted/startTrace.d.mts +8 -11
- package/dist/permitted/startTrace.d.mts.map +1 -1
- package/dist/permitted/startTrace.mjs +4 -6
- package/dist/permitted/startTrace.mjs.map +1 -1
- package/dist/permitted/trackError.cjs +4 -6
- package/dist/permitted/trackError.cjs.map +1 -1
- package/dist/permitted/trackError.d.cts +8 -11
- package/dist/permitted/trackError.d.cts.map +1 -1
- package/dist/permitted/trackError.d.mts +8 -11
- package/dist/permitted/trackError.d.mts.map +1 -1
- package/dist/permitted/trackError.mjs +4 -6
- package/dist/permitted/trackError.mjs.map +1 -1
- package/dist/permitted/trackEvent.cjs +4 -6
- package/dist/permitted/trackEvent.cjs.map +1 -1
- package/dist/permitted/trackEvent.d.cts +8 -11
- package/dist/permitted/trackEvent.d.cts.map +1 -1
- package/dist/permitted/trackEvent.d.mts +8 -11
- package/dist/permitted/trackEvent.d.mts.map +1 -1
- package/dist/permitted/trackEvent.mjs +4 -6
- package/dist/permitted/trackEvent.mjs.map +1 -1
- package/dist/permitted/updateInterface.cjs +11 -15
- package/dist/permitted/updateInterface.cjs.map +1 -1
- package/dist/permitted/updateInterface.d.cts +9 -22
- package/dist/permitted/updateInterface.d.cts.map +1 -1
- package/dist/permitted/updateInterface.d.mts +9 -22
- package/dist/permitted/updateInterface.d.mts.map +1 -1
- package/dist/permitted/updateInterface.mjs +11 -15
- package/dist/permitted/updateInterface.mjs.map +1 -1
- package/dist/restricted/dialog.cjs +23 -30
- package/dist/restricted/dialog.cjs.map +1 -1
- package/dist/restricted/dialog.d.cts +10 -58
- package/dist/restricted/dialog.d.cts.map +1 -1
- package/dist/restricted/dialog.d.mts +10 -58
- package/dist/restricted/dialog.d.mts.map +1 -1
- package/dist/restricted/dialog.mjs +23 -30
- package/dist/restricted/dialog.mjs.map +1 -1
- package/dist/restricted/getBip32Entropy.cjs +15 -12
- package/dist/restricted/getBip32Entropy.cjs.map +1 -1
- package/dist/restricted/getBip32Entropy.d.cts +11 -24
- package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip32Entropy.d.mts +11 -24
- package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip32Entropy.mjs +16 -13
- package/dist/restricted/getBip32Entropy.mjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.cjs +15 -12
- package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.cts +11 -24
- package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.mts +11 -24
- package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
- package/dist/restricted/getBip32PublicKey.mjs +16 -13
- package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
- package/dist/restricted/getBip44Entropy.cjs +14 -10
- package/dist/restricted/getBip44Entropy.cjs.map +1 -1
- package/dist/restricted/getBip44Entropy.d.cts +11 -15
- package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip44Entropy.d.mts +11 -15
- package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip44Entropy.mjs +15 -11
- package/dist/restricted/getBip44Entropy.mjs.map +1 -1
- package/dist/restricted/getEntropy.cjs +10 -10
- package/dist/restricted/getEntropy.cjs.map +1 -1
- package/dist/restricted/getEntropy.d.cts +11 -15
- package/dist/restricted/getEntropy.d.cts.map +1 -1
- package/dist/restricted/getEntropy.d.mts +11 -15
- package/dist/restricted/getEntropy.d.mts.map +1 -1
- package/dist/restricted/getEntropy.mjs +11 -11
- package/dist/restricted/getEntropy.mjs.map +1 -1
- package/dist/restricted/index.cjs.map +1 -1
- package/dist/restricted/index.d.cts +20 -160
- package/dist/restricted/index.d.cts.map +1 -1
- package/dist/restricted/index.d.mts +20 -160
- package/dist/restricted/index.d.mts.map +1 -1
- package/dist/restricted/index.mjs.map +1 -1
- package/dist/restricted/invokeSnap.cjs +11 -12
- package/dist/restricted/invokeSnap.cjs.map +1 -1
- package/dist/restricted/invokeSnap.d.cts +9 -13
- package/dist/restricted/invokeSnap.d.cts.map +1 -1
- package/dist/restricted/invokeSnap.d.mts +9 -13
- package/dist/restricted/invokeSnap.d.mts.map +1 -1
- package/dist/restricted/invokeSnap.mjs +11 -12
- package/dist/restricted/invokeSnap.mjs.map +1 -1
- package/dist/restricted/manageState.cjs +21 -20
- package/dist/restricted/manageState.cjs.map +1 -1
- package/dist/restricted/manageState.d.cts +12 -34
- package/dist/restricted/manageState.d.cts.map +1 -1
- package/dist/restricted/manageState.d.mts +12 -34
- package/dist/restricted/manageState.d.mts.map +1 -1
- package/dist/restricted/manageState.mjs +21 -20
- package/dist/restricted/manageState.mjs.map +1 -1
- package/dist/restricted/notify.cjs +31 -24
- package/dist/restricted/notify.cjs.map +1 -1
- package/dist/restricted/notify.d.cts +16 -25
- package/dist/restricted/notify.d.cts.map +1 -1
- package/dist/restricted/notify.d.mts +16 -25
- package/dist/restricted/notify.d.mts.map +1 -1
- package/dist/restricted/notify.mjs +32 -25
- package/dist/restricted/notify.mjs.map +1 -1
- package/dist/types.cjs +3 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +155 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +155 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.cjs +78 -24
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +21 -13
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +21 -13
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +75 -22
- package/dist/utils.mjs.map +1 -1
- package/package.json +6 -6
- package/dist/permitted/handlers.cjs +0 -63
- package/dist/permitted/handlers.cjs.map +0 -1
- package/dist/permitted/handlers.d.cts +0 -299
- package/dist/permitted/handlers.d.cts.map +0 -1
- package/dist/permitted/handlers.d.mts +0 -299
- package/dist/permitted/handlers.d.mts.map +0 -1
- package/dist/permitted/handlers.mjs +0 -60
- package/dist/permitted/handlers.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [16.0.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Use messenger for permitted method implementations ([#3987](https://github.com/MetaMask/snaps/pull/3987))
|
|
15
|
+
- `createSnapsMethodMiddleware` now requires a `messenger` parameter.
|
|
16
|
+
- `createSnapsMethodMiddleware` will throw if the expected hooks are not passed.
|
|
17
|
+
- Most previously used method hooks are no longer required.
|
|
18
|
+
- **BREAKING:** Use messenger for restricted method implementations ([#3968](https://github.com/MetaMask/snaps/pull/3968))
|
|
19
|
+
- `buildSnapRestrictedMethodSpecifications` now requires a `messenger` parameter.
|
|
20
|
+
- Most previously used method hooks are no longer required.
|
|
21
|
+
- **BREAKING:** Assert expected hooks for restricted method specifications ([#3993](https://github.com/MetaMask/snaps/pull/3993))
|
|
22
|
+
- `buildSnapRestrictedMethodSpecifications` will now throw if the expected hooks are not passed.
|
|
23
|
+
- Bump `@metamask/permission-controller` `12.3.0` to `^13.1.0` ([#3984](https://github.com/MetaMask/snaps/pull/3984), [#3989](https://github.com/MetaMask/snaps/pull/3989))
|
|
24
|
+
- Bump `@metamask/json-rpc-engine` from `^10.2.4` to `^10.5.0` ([#3982](https://github.com/MetaMask/snaps/pull/3982),[#3992](https://github.com/MetaMask/snaps/pull/3992), [#3998](https://github.com/MetaMask/snaps/pull/3998))
|
|
25
|
+
- Bump `@metamask/messenger` from `^1.1.1` to `^1.2.0` ([#3981](https://github.com/MetaMask/snaps/pull/3981))
|
|
26
|
+
|
|
27
|
+
### Removed
|
|
28
|
+
|
|
29
|
+
- **BREAKING:** `selectHooks` and `permittedMethods` are no longer exported ([#3987](https://github.com/MetaMask/snaps/pull/3987))
|
|
30
|
+
- A `selectHooks` implementation is exported from `@metamask/json-rpc-engine` if needed.
|
|
31
|
+
|
|
10
32
|
## [15.1.1]
|
|
11
33
|
|
|
12
34
|
### Fixed
|
|
@@ -370,15 +392,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
370
392
|
|
|
371
393
|
### Changed
|
|
372
394
|
|
|
373
|
-
- Bump `@metamask/json-rpc-engine` from `^9.0.0` to `^9.0.2` ([#2593](https://github.com/
|
|
374
|
-
- Bump `@metamask/permission-controller` from `^10.0.1` to `^11.0.0` ([#2593](https://github.com/
|
|
395
|
+
- Bump `@metamask/json-rpc-engine` from `^9.0.0` to `^9.0.2` ([#2593](https://github.com/MetaMask/snaps/pull/2593))
|
|
396
|
+
- Bump `@metamask/permission-controller` from `^10.0.1` to `^11.0.0` ([#2593](https://github.com/MetaMask/snaps/pull/2593))
|
|
375
397
|
- Bump `@metamask/snaps-utils` from `^7.8.0` to `^7.8.1` ([#2595](https://github.com/MetaMask/snaps/pull/2595))
|
|
376
398
|
|
|
377
399
|
## [10.0.0]
|
|
378
400
|
|
|
379
401
|
### Added
|
|
380
402
|
|
|
381
|
-
- **BREAKING:** `snap_dialog` now takes the `requestUserApproval` hook ([#2509](https://github.com/
|
|
403
|
+
- **BREAKING:** `snap_dialog` now takes the `requestUserApproval` hook ([#2509](https://github.com/MetaMask/snaps/pull/2509))
|
|
382
404
|
- It should bind to the `addAndShowRequest` method of the `ApprovalController`.
|
|
383
405
|
- Add type `DialogApprovalTypes` and object `DIALOG_APPROVAL_TYPES`.
|
|
384
406
|
|
|
@@ -615,7 +637,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
615
637
|
- The version of the package no longer needs to match the version of all other
|
|
616
638
|
MetaMask Snaps packages.
|
|
617
639
|
|
|
618
|
-
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@
|
|
640
|
+
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@16.0.0...HEAD
|
|
641
|
+
[16.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.1.1...@metamask/snaps-rpc-methods@16.0.0
|
|
619
642
|
[15.1.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.1.0...@metamask/snaps-rpc-methods@15.1.1
|
|
620
643
|
[15.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.2...@metamask/snaps-rpc-methods@15.1.0
|
|
621
644
|
[15.0.2]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.1...@metamask/snaps-rpc-methods@15.0.2
|
package/dist/index.cjs
CHANGED
|
@@ -14,14 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.SnapCaveatType = exports.createSnapsMethodMiddleware = void 0;
|
|
18
18
|
var permitted_1 = require("./permitted/index.cjs");
|
|
19
|
-
Object.defineProperty(exports, "permittedMethods", { enumerable: true, get: function () { return permitted_1.handlers; } });
|
|
20
19
|
Object.defineProperty(exports, "createSnapsMethodMiddleware", { enumerable: true, get: function () { return permitted_1.createSnapsMethodMiddleware; } });
|
|
21
20
|
var snaps_utils_1 = require("@metamask/snaps-utils");
|
|
22
21
|
Object.defineProperty(exports, "SnapCaveatType", { enumerable: true, get: function () { return snaps_utils_1.SnapCaveatType; } });
|
|
23
|
-
var utils_1 = require("./utils.cjs");
|
|
24
|
-
Object.defineProperty(exports, "selectHooks", { enumerable: true, get: function () { return utils_1.selectHooks; } });
|
|
25
22
|
__exportStar(require("./endowments/index.cjs"), exports);
|
|
26
23
|
__exportStar(require("./middleware/index.cjs"), exports);
|
|
27
24
|
__exportStar(require("./permissions.cjs"), exports);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAA0D;AAAjD,wHAAA,2BAA2B,OAAA;AAEpC,qDAAuD;AAA9C,6GAAA,cAAc,OAAA;AACvB,yDAA6B;AAC7B,yDAA6B;AAC7B,oDAA8B;AAC9B,yDAA6B","sourcesContent":["export { createSnapsMethodMiddleware } from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport * from './endowments';\nexport * from './middleware';\nexport * from './permissions';\nexport * from './restricted';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createSnapsMethodMiddleware } from "./permitted/index.cjs";
|
|
2
2
|
export type { PermittedRpcMethodHooks } from "./permitted/index.cjs";
|
|
3
3
|
export { SnapCaveatType } from "@metamask/snaps-utils";
|
|
4
|
-
export { selectHooks } from "./utils.cjs";
|
|
5
4
|
export * from "./endowments/index.cjs";
|
|
6
5
|
export * from "./middleware/index.cjs";
|
|
7
6
|
export * from "./permissions.cjs";
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,8BAAoB;AAC1D,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createSnapsMethodMiddleware } from "./permitted/index.mjs";
|
|
2
2
|
export type { PermittedRpcMethodHooks } from "./permitted/index.mjs";
|
|
3
3
|
export { SnapCaveatType } from "@metamask/snaps-utils";
|
|
4
|
-
export { selectHooks } from "./utils.mjs";
|
|
5
4
|
export * from "./endowments/index.mjs";
|
|
6
5
|
export * from "./middleware/index.mjs";
|
|
7
6
|
export * from "./permissions.mjs";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,8BAAoB;AAC1D,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createSnapsMethodMiddleware } from "./permitted/index.mjs";
|
|
2
2
|
export { SnapCaveatType } from "@metamask/snaps-utils";
|
|
3
|
-
export { selectHooks } from "./utils.mjs";
|
|
4
3
|
export * from "./endowments/index.mjs";
|
|
5
4
|
export * from "./middleware/index.mjs";
|
|
6
5
|
export * from "./permissions.mjs";
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,8BAAoB;AAE1D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B","sourcesContent":["export { createSnapsMethodMiddleware } from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport * from './endowments';\nexport * from './middleware';\nexport * from './permissions';\nexport * from './restricted';\n"]}
|
package/dist/permissions.cjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildSnapRestrictedMethodSpecifications = exports.buildSnapEndowmentSpecifications = exports.processSnapPermissions = void 0;
|
|
4
|
+
const v2_1 = require("@metamask/json-rpc-engine/v2");
|
|
5
|
+
const permission_controller_1 = require("@metamask/permission-controller");
|
|
4
6
|
const utils_1 = require("@metamask/utils");
|
|
5
7
|
const endowments_1 = require("./endowments/index.cjs");
|
|
6
8
|
const restricted_1 = require("./restricted/index.cjs");
|
|
7
|
-
const utils_2 = require("./utils.cjs");
|
|
8
9
|
/**
|
|
9
10
|
* Map initial permissions as defined in a Snap manifest to something that can
|
|
10
11
|
* be processed by the PermissionsController. Each caveat mapping function
|
|
@@ -42,14 +43,23 @@ const buildSnapEndowmentSpecifications = (excludedEndowments) => Object.values(e
|
|
|
42
43
|
return allSpecifications;
|
|
43
44
|
}, {});
|
|
44
45
|
exports.buildSnapEndowmentSpecifications = buildSnapEndowmentSpecifications;
|
|
45
|
-
const buildSnapRestrictedMethodSpecifications = (excludedPermissions, hooks
|
|
46
|
-
|
|
46
|
+
const buildSnapRestrictedMethodSpecifications = (excludedPermissions, hooks, messenger) => {
|
|
47
|
+
const permissionBuilders = Object.values(restricted_1.restrictedMethodPermissionBuilders).filter((builder) => !excludedPermissions.includes(builder.targetName));
|
|
48
|
+
const expectedHookNames = new Set(permissionBuilders.flatMap((builder) => builder.methodHooks
|
|
49
|
+
? Object.getOwnPropertyNames(builder.methodHooks)
|
|
50
|
+
: []));
|
|
51
|
+
(0, v2_1.assertExpectedHooks)(hooks, expectedHookNames);
|
|
52
|
+
return permissionBuilders.reduce((specifications, { targetName, specificationBuilder, methodHooks, actionNames }) => {
|
|
47
53
|
specifications[targetName] = specificationBuilder({
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
methodHooks: (0, v2_1.selectHooks)(hooks, methodHooks),
|
|
55
|
+
messenger: (0, permission_controller_1.createRestrictedMethodMessenger)({
|
|
56
|
+
namespace: targetName,
|
|
57
|
+
rootMessenger: messenger,
|
|
58
|
+
actionNames: actionNames,
|
|
59
|
+
}),
|
|
50
60
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
61
|
+
return specifications;
|
|
62
|
+
}, {});
|
|
63
|
+
};
|
|
54
64
|
exports.buildSnapRestrictedMethodSpecifications = buildSnapRestrictedMethodSpecifications;
|
|
55
65
|
//# sourceMappingURL=permissions.cjs.map
|
package/dist/permissions.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.cjs","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"permissions.cjs","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;;AAAA,qDAAgF;AAChF,2EAIyC;AAEzC,2CAA8C;AAE9C,uDAGsB;AAKtB,uDAGsB;AAEtB;;;;;;;;;;GAUG;AACH,SAAgB,sBAAsB,CACpC,kBAAmC;IAEnC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE;QACpE,IAAI,IAAA,mBAAW,EAAC,0BAAa,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,iBAAiB,EAAE,0BAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,IAAA,mBAAW,EAAC,mCAAsB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,iBAAiB;gBACjB,mCAAsB,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,OAAO;YACL,iBAAiB;YACjB,KAA8C;SAC/C,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AArBD,wDAqBC;AAEM,MAAM,gCAAgC,GAAG,CAC9C,kBAA4B,EAC5B,EAAE,CACF,MAAM,CAAC,MAAM,CAAC,wCAA2B,CAAC,CAAC,MAAM,CAE/C,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE;IAC5D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,iBAAiB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;AAVI,QAAA,gCAAgC,oCAUpC;AAEF,MAAM,uCAAuC,GAAG,CACrD,mBAA6B,EAC7B,KAA8B,EAC9B,SAAoC,EACpC,EAAE;IACF,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CACtC,+CAAkC,CACnC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,WAAW;QACjB,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,EAAE,CACP,CACF,CAAC;IAEF,IAAA,wBAAmB,EAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE9C,OAAO,kBAAkB,CAAC,MAAM,CAG9B,CACE,cAAc,EACd,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,EAC9D,EAAE;QACF,cAAc,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC;YAChD,WAAW,EAAE,IAAA,gBAAW,EAAC,KAAK,EAAE,WAAW,CAAC;YAC5C,SAAS,EAAE,IAAA,uDAA+B,EAAC;gBACzC,SAAS,EAAE,UAAU;gBACrB,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,WAEZ;aACF,CAAC;SACH,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,uCAAuC,2CAwClD","sourcesContent":["import { selectHooks, assertExpectedHooks } from '@metamask/json-rpc-engine/v2';\nimport {\n createRestrictedMethodMessenger,\n type PermissionConstraint,\n type PermissionSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport type { SnapPermissions } from '@metamask/snaps-utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport {\n endowmentCaveatMappers,\n endowmentPermissionBuilders,\n} from './endowments';\nimport type {\n RestrictedMethodActions,\n RestrictedMethodMessenger,\n} from './restricted';\nimport {\n caveatMappers,\n restrictedMethodPermissionBuilders,\n} from './restricted';\n\n/**\n * Map initial permissions as defined in a Snap manifest to something that can\n * be processed by the PermissionsController. Each caveat mapping function\n * should return a valid permission caveat value.\n *\n * This function does not validate the caveat values, since that is done by\n * the PermissionsController itself, upon requesting the permissions.\n *\n * @param initialPermissions - The initial permissions to process.\n * @returns The processed permissions.\n */\nexport function processSnapPermissions(\n initialPermissions: SnapPermissions,\n): Record<string, Pick<PermissionConstraint, 'caveats'>> {\n return Object.fromEntries(\n Object.entries(initialPermissions).map(([initialPermission, value]) => {\n if (hasProperty(caveatMappers, initialPermission)) {\n return [initialPermission, caveatMappers[initialPermission](value)];\n } else if (hasProperty(endowmentCaveatMappers, initialPermission)) {\n return [\n initialPermission,\n endowmentCaveatMappers[initialPermission](value),\n ];\n }\n\n // If we have no mapping, this may be a non-snap permission, return as-is\n return [\n initialPermission,\n value as Pick<PermissionConstraint, 'caveats'>,\n ];\n }),\n );\n}\n\nexport const buildSnapEndowmentSpecifications = (\n excludedEndowments: string[],\n) =>\n Object.values(endowmentPermissionBuilders).reduce<\n Record<string, PermissionSpecificationConstraint>\n >((allSpecifications, { targetName, specificationBuilder }) => {\n if (!excludedEndowments.includes(targetName)) {\n allSpecifications[targetName] = specificationBuilder({});\n }\n return allSpecifications;\n }, {});\n\nexport const buildSnapRestrictedMethodSpecifications = (\n excludedPermissions: string[],\n hooks: Record<string, unknown>,\n messenger: RestrictedMethodMessenger,\n) => {\n const permissionBuilders = Object.values(\n restrictedMethodPermissionBuilders,\n ).filter((builder) => !excludedPermissions.includes(builder.targetName));\n\n const expectedHookNames = new Set(\n permissionBuilders.flatMap((builder) =>\n builder.methodHooks\n ? Object.getOwnPropertyNames(builder.methodHooks)\n : [],\n ),\n );\n\n assertExpectedHooks(hooks, expectedHookNames);\n\n return permissionBuilders.reduce<\n Record<string, PermissionSpecificationConstraint>\n >(\n (\n specifications,\n { targetName, specificationBuilder, methodHooks, actionNames },\n ) => {\n specifications[targetName] = specificationBuilder({\n methodHooks: selectHooks(hooks, methodHooks),\n messenger: createRestrictedMethodMessenger({\n namespace: targetName,\n rootMessenger: messenger,\n actionNames: actionNames as readonly [\n RestrictedMethodActions['type'],\n ],\n }),\n });\n return specifications;\n },\n {},\n );\n};\n"]}
|
package/dist/permissions.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type PermissionConstraint, type PermissionSpecificationConstraint } from "@metamask/permission-controller";
|
|
2
2
|
import type { SnapPermissions } from "@metamask/snaps-utils";
|
|
3
|
+
import type { RestrictedMethodMessenger } from "./restricted/index.cjs";
|
|
3
4
|
/**
|
|
4
5
|
* Map initial permissions as defined in a Snap manifest to something that can
|
|
5
6
|
* be processed by the PermissionsController. Each caveat mapping function
|
|
@@ -13,5 +14,5 @@ import type { SnapPermissions } from "@metamask/snaps-utils";
|
|
|
13
14
|
*/
|
|
14
15
|
export declare function processSnapPermissions(initialPermissions: SnapPermissions): Record<string, Pick<PermissionConstraint, 'caveats'>>;
|
|
15
16
|
export declare const buildSnapEndowmentSpecifications: (excludedEndowments: string[]) => Record<string, PermissionSpecificationConstraint>;
|
|
16
|
-
export declare const buildSnapRestrictedMethodSpecifications: (excludedPermissions: string[], hooks: Record<string, unknown
|
|
17
|
+
export declare const buildSnapRestrictedMethodSpecifications: (excludedPermissions: string[], hooks: Record<string, unknown>, messenger: RestrictedMethodMessenger) => Record<string, PermissionSpecificationConstraint>;
|
|
17
18
|
//# sourceMappingURL=permissions.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.cts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permissions.d.cts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iCAAiC,EACvC,wCAAwC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,8BAA8B;AAO7D,OAAO,KAAK,EAEV,yBAAyB,EAC1B,+BAAqB;AAMtB;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,EAAE,eAAe,GAClC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAmBvD;AAED,eAAO,MAAM,gCAAgC,uBACvB,MAAM,EAAE,sDAStB,CAAC;AAET,eAAO,MAAM,uCAAuC,wBAC7B,MAAM,EAAE,SACtB,OAAO,MAAM,EAAE,OAAO,CAAC,4FAsC/B,CAAC"}
|
package/dist/permissions.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type PermissionConstraint, type PermissionSpecificationConstraint } from "@metamask/permission-controller";
|
|
2
2
|
import type { SnapPermissions } from "@metamask/snaps-utils";
|
|
3
|
+
import type { RestrictedMethodMessenger } from "./restricted/index.mjs";
|
|
3
4
|
/**
|
|
4
5
|
* Map initial permissions as defined in a Snap manifest to something that can
|
|
5
6
|
* be processed by the PermissionsController. Each caveat mapping function
|
|
@@ -13,5 +14,5 @@ import type { SnapPermissions } from "@metamask/snaps-utils";
|
|
|
13
14
|
*/
|
|
14
15
|
export declare function processSnapPermissions(initialPermissions: SnapPermissions): Record<string, Pick<PermissionConstraint, 'caveats'>>;
|
|
15
16
|
export declare const buildSnapEndowmentSpecifications: (excludedEndowments: string[]) => Record<string, PermissionSpecificationConstraint>;
|
|
16
|
-
export declare const buildSnapRestrictedMethodSpecifications: (excludedPermissions: string[], hooks: Record<string, unknown
|
|
17
|
+
export declare const buildSnapRestrictedMethodSpecifications: (excludedPermissions: string[], hooks: Record<string, unknown>, messenger: RestrictedMethodMessenger) => Record<string, PermissionSpecificationConstraint>;
|
|
17
18
|
//# sourceMappingURL=permissions.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.mts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permissions.d.mts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iCAAiC,EACvC,wCAAwC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,8BAA8B;AAO7D,OAAO,KAAK,EAEV,yBAAyB,EAC1B,+BAAqB;AAMtB;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,EAAE,eAAe,GAClC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAmBvD;AAED,eAAO,MAAM,gCAAgC,uBACvB,MAAM,EAAE,sDAStB,CAAC;AAET,eAAO,MAAM,uCAAuC,wBAC7B,MAAM,EAAE,SACtB,OAAO,MAAM,EAAE,OAAO,CAAC,4FAsC/B,CAAC"}
|
package/dist/permissions.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { selectHooks, assertExpectedHooks } from "@metamask/json-rpc-engine/v2";
|
|
2
|
+
import { createRestrictedMethodMessenger } from "@metamask/permission-controller";
|
|
1
3
|
import { hasProperty } from "@metamask/utils";
|
|
2
4
|
import { endowmentCaveatMappers, endowmentPermissionBuilders } from "./endowments/index.mjs";
|
|
3
5
|
import { caveatMappers, restrictedMethodPermissionBuilders } from "./restricted/index.mjs";
|
|
4
|
-
import { selectHooks } from "./utils.mjs";
|
|
5
6
|
/**
|
|
6
7
|
* Map initial permissions as defined in a Snap manifest to something that can
|
|
7
8
|
* be processed by the PermissionsController. Each caveat mapping function
|
|
@@ -37,13 +38,22 @@ export const buildSnapEndowmentSpecifications = (excludedEndowments) => Object.v
|
|
|
37
38
|
}
|
|
38
39
|
return allSpecifications;
|
|
39
40
|
}, {});
|
|
40
|
-
export const buildSnapRestrictedMethodSpecifications = (excludedPermissions, hooks
|
|
41
|
-
|
|
41
|
+
export const buildSnapRestrictedMethodSpecifications = (excludedPermissions, hooks, messenger) => {
|
|
42
|
+
const permissionBuilders = Object.values(restrictedMethodPermissionBuilders).filter((builder) => !excludedPermissions.includes(builder.targetName));
|
|
43
|
+
const expectedHookNames = new Set(permissionBuilders.flatMap((builder) => builder.methodHooks
|
|
44
|
+
? Object.getOwnPropertyNames(builder.methodHooks)
|
|
45
|
+
: []));
|
|
46
|
+
assertExpectedHooks(hooks, expectedHookNames);
|
|
47
|
+
return permissionBuilders.reduce((specifications, { targetName, specificationBuilder, methodHooks, actionNames }) => {
|
|
42
48
|
specifications[targetName] = specificationBuilder({
|
|
43
|
-
// @ts-expect-error The selectHooks type is wonky
|
|
44
49
|
methodHooks: selectHooks(hooks, methodHooks),
|
|
50
|
+
messenger: createRestrictedMethodMessenger({
|
|
51
|
+
namespace: targetName,
|
|
52
|
+
rootMessenger: messenger,
|
|
53
|
+
actionNames: actionNames,
|
|
54
|
+
}),
|
|
45
55
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
56
|
+
return specifications;
|
|
57
|
+
}, {});
|
|
58
|
+
};
|
|
49
59
|
//# sourceMappingURL=permissions.mjs.map
|
package/dist/permissions.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.mjs","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permissions.mjs","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qCAAqC;AAChF,OAAO,EACL,+BAA+B,EAGhC,wCAAwC;AAEzC,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC5B,+BAAqB;AAKtB,OAAO,EACL,aAAa,EACb,kCAAkC,EACnC,+BAAqB;AAEtB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,kBAAmC;IAEnC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE;QACpE,IAAI,WAAW,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,WAAW,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,iBAAiB;gBACjB,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,OAAO;YACL,iBAAiB;YACjB,KAA8C;SAC/C,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,kBAA4B,EAC5B,EAAE,CACF,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAE/C,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE;IAC5D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,iBAAiB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;AAET,MAAM,CAAC,MAAM,uCAAuC,GAAG,CACrD,mBAA6B,EAC7B,KAA8B,EAC9B,SAAoC,EACpC,EAAE;IACF,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CACtC,kCAAkC,CACnC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,WAAW;QACjB,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,EAAE,CACP,CACF,CAAC;IAEF,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE9C,OAAO,kBAAkB,CAAC,MAAM,CAG9B,CACE,cAAc,EACd,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,EAC9D,EAAE;QACF,cAAc,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC;YAChD,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;YAC5C,SAAS,EAAE,+BAA+B,CAAC;gBACzC,SAAS,EAAE,UAAU;gBACrB,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,WAEZ;aACF,CAAC;SACH,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { selectHooks, assertExpectedHooks } from '@metamask/json-rpc-engine/v2';\nimport {\n createRestrictedMethodMessenger,\n type PermissionConstraint,\n type PermissionSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport type { SnapPermissions } from '@metamask/snaps-utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport {\n endowmentCaveatMappers,\n endowmentPermissionBuilders,\n} from './endowments';\nimport type {\n RestrictedMethodActions,\n RestrictedMethodMessenger,\n} from './restricted';\nimport {\n caveatMappers,\n restrictedMethodPermissionBuilders,\n} from './restricted';\n\n/**\n * Map initial permissions as defined in a Snap manifest to something that can\n * be processed by the PermissionsController. Each caveat mapping function\n * should return a valid permission caveat value.\n *\n * This function does not validate the caveat values, since that is done by\n * the PermissionsController itself, upon requesting the permissions.\n *\n * @param initialPermissions - The initial permissions to process.\n * @returns The processed permissions.\n */\nexport function processSnapPermissions(\n initialPermissions: SnapPermissions,\n): Record<string, Pick<PermissionConstraint, 'caveats'>> {\n return Object.fromEntries(\n Object.entries(initialPermissions).map(([initialPermission, value]) => {\n if (hasProperty(caveatMappers, initialPermission)) {\n return [initialPermission, caveatMappers[initialPermission](value)];\n } else if (hasProperty(endowmentCaveatMappers, initialPermission)) {\n return [\n initialPermission,\n endowmentCaveatMappers[initialPermission](value),\n ];\n }\n\n // If we have no mapping, this may be a non-snap permission, return as-is\n return [\n initialPermission,\n value as Pick<PermissionConstraint, 'caveats'>,\n ];\n }),\n );\n}\n\nexport const buildSnapEndowmentSpecifications = (\n excludedEndowments: string[],\n) =>\n Object.values(endowmentPermissionBuilders).reduce<\n Record<string, PermissionSpecificationConstraint>\n >((allSpecifications, { targetName, specificationBuilder }) => {\n if (!excludedEndowments.includes(targetName)) {\n allSpecifications[targetName] = specificationBuilder({});\n }\n return allSpecifications;\n }, {});\n\nexport const buildSnapRestrictedMethodSpecifications = (\n excludedPermissions: string[],\n hooks: Record<string, unknown>,\n messenger: RestrictedMethodMessenger,\n) => {\n const permissionBuilders = Object.values(\n restrictedMethodPermissionBuilders,\n ).filter((builder) => !excludedPermissions.includes(builder.targetName));\n\n const expectedHookNames = new Set(\n permissionBuilders.flatMap((builder) =>\n builder.methodHooks\n ? Object.getOwnPropertyNames(builder.methodHooks)\n : [],\n ),\n );\n\n assertExpectedHooks(hooks, expectedHookNames);\n\n return permissionBuilders.reduce<\n Record<string, PermissionSpecificationConstraint>\n >(\n (\n specifications,\n { targetName, specificationBuilder, methodHooks, actionNames },\n ) => {\n specifications[targetName] = specificationBuilder({\n methodHooks: selectHooks(hooks, methodHooks),\n messenger: createRestrictedMethodMessenger({\n namespace: targetName,\n rootMessenger: messenger,\n actionNames: actionNames as readonly [\n RestrictedMethodActions['type'],\n ],\n }),\n });\n return specifications;\n },\n {},\n );\n};\n"]}
|
|
@@ -4,11 +4,6 @@ exports.cancelBackgroundEventHandler = void 0;
|
|
|
4
4
|
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
5
|
const superstruct_1 = require("@metamask/superstruct");
|
|
6
6
|
const endowments_1 = require("../endowments/index.cjs");
|
|
7
|
-
const methodName = 'snap_cancelBackgroundEvent';
|
|
8
|
-
const hookNames = {
|
|
9
|
-
cancelBackgroundEvent: true,
|
|
10
|
-
hasPermission: true,
|
|
11
|
-
};
|
|
12
7
|
/**
|
|
13
8
|
* Cancel a background event created by
|
|
14
9
|
* [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
|
|
@@ -30,9 +25,11 @@ const hookNames = {
|
|
|
30
25
|
* ```
|
|
31
26
|
*/
|
|
32
27
|
exports.cancelBackgroundEventHandler = {
|
|
33
|
-
methodNames: [methodName],
|
|
34
28
|
implementation: getCancelBackgroundEventImplementation,
|
|
35
|
-
|
|
29
|
+
actionNames: [
|
|
30
|
+
'PermissionController:hasPermission',
|
|
31
|
+
'CronjobController:cancel',
|
|
32
|
+
],
|
|
36
33
|
};
|
|
37
34
|
const CancelBackgroundEventsParametersStruct = (0, superstruct_1.object)({
|
|
38
35
|
id: (0, superstruct_1.string)(),
|
|
@@ -45,20 +42,19 @@ const CancelBackgroundEventsParametersStruct = (0, superstruct_1.object)({
|
|
|
45
42
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
46
43
|
* function.
|
|
47
44
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
50
|
-
* @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
|
|
45
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
46
|
+
* @param messenger - The messenger used to call controller actions.
|
|
51
47
|
* @returns Nothing.
|
|
52
48
|
*/
|
|
53
|
-
async function getCancelBackgroundEventImplementation(req, res, _next, end,
|
|
54
|
-
const { params } = req;
|
|
55
|
-
if (!hasPermission
|
|
49
|
+
async function getCancelBackgroundEventImplementation(req, res, _next, end, _hooks, messenger) {
|
|
50
|
+
const { params, origin } = req;
|
|
51
|
+
if (!messenger.call('PermissionController:hasPermission', origin, endowments_1.SnapEndowments.Cronjob)) {
|
|
56
52
|
return end(rpc_errors_1.providerErrors.unauthorized());
|
|
57
53
|
}
|
|
58
54
|
try {
|
|
59
55
|
const validatedParams = getValidatedParams(params);
|
|
60
56
|
const { id } = validatedParams;
|
|
61
|
-
|
|
57
|
+
messenger.call('CronjobController:cancel', origin, id);
|
|
62
58
|
res.result = null;
|
|
63
59
|
}
|
|
64
60
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelBackgroundEvent.cjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cancelBackgroundEvent.cjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":";;;AAMA,qDAAiE;AAOjE,uDAA4E;AAG5E,wDAA+C;AAU/C;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,4BAA4B,GAAG;IAC1C,cAAc,EAAE,sCAAsC;IACtD,WAAW,EAAE;QACX,oCAAoC;QACpC,0BAA0B;KAC3B;CAOF,CAAC;AAEF,MAAM,sCAAsC,GAAG,IAAA,oBAAM,EAAC;IACpD,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,sCAAsC,CACnD,GAA8D,EAC9D,GAAwD,EACxD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAgE;IAEhE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,2BAAc,CAAC,OAAO,CACvB,EACD,CAAC;QACD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,SAAS,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,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;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAChE,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;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 type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n CancelBackgroundEventParams,\n CancelBackgroundEventResult,\n SnapId,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, string } from '@metamask/superstruct';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n CronjobControllerCancelAction,\n JsonRpcRequestWithOrigin,\n} from '../types';\n\nexport type CancelBackgroundEventMethodActions =\n | PermissionControllerHasPermissionAction\n | CronjobControllerCancelAction;\n\n/**\n * Cancel a background event created by\n * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).\n *\n * @example\n * ```ts\n * const id = await snap.request({\n * method: 'snap_scheduleBackgroundEvent',\n * params: {\n * // ...\n * },\n * });\n *\n * // Later, when you want to cancel the background event:\n * snap.request({\n * method: 'snap_cancelBackgroundEvent',\n * params: { id },\n * });\n * ```\n */\nexport const cancelBackgroundEventHandler = {\n implementation: getCancelBackgroundEventImplementation,\n actionNames: [\n 'PermissionController:hasPermission',\n 'CronjobController:cancel',\n ],\n} satisfies MethodHandler<\n never,\n CancelBackgroundEventMethodActions,\n CancelBackgroundEventParameters,\n CancelBackgroundEventResult,\n { origin: SnapId }\n>;\n\nconst CancelBackgroundEventsParametersStruct = object({\n id: string(),\n});\n\nexport type CancelBackgroundEventParameters = InferMatching<\n typeof CancelBackgroundEventsParametersStruct,\n CancelBackgroundEventParams\n>;\n\n/**\n * The `snap_cancelBackgroundEvent` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nasync function getCancelBackgroundEventImplementation(\n req: JsonRpcRequestWithOrigin<CancelBackgroundEventParameters>,\n res: PendingJsonRpcResponse<CancelBackgroundEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, CancelBackgroundEventMethodActions>,\n): Promise<void> {\n const { params, origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.Cronjob,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n messenger.call('CronjobController:cancel', origin, id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the cancelBackgroundEvent method `params` and returns them cast to the correct type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated resolveInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CancelBackgroundEventParameters {\n try {\n return create(params, CancelBackgroundEventsParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
3
|
+
import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
|
|
4
|
+
import type { CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
|
|
3
5
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
6
|
import { type PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
-
import type {
|
|
6
|
-
export type
|
|
7
|
-
cancelBackgroundEvent: (id: string) => void;
|
|
8
|
-
hasPermission: (permissionName: string) => boolean;
|
|
9
|
-
};
|
|
7
|
+
import type { CronjobControllerCancelAction, JsonRpcRequestWithOrigin } from "../types.cjs";
|
|
8
|
+
export type CancelBackgroundEventMethodActions = PermissionControllerHasPermissionAction | CronjobControllerCancelAction;
|
|
10
9
|
/**
|
|
11
10
|
* Cancel a background event created by
|
|
12
11
|
* [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
|
|
@@ -28,9 +27,8 @@ export type CancelBackgroundEventMethodHooks = {
|
|
|
28
27
|
* ```
|
|
29
28
|
*/
|
|
30
29
|
export declare const cancelBackgroundEventHandler: {
|
|
31
|
-
methodNames: ["snap_cancelBackgroundEvent"];
|
|
32
30
|
implementation: typeof getCancelBackgroundEventImplementation;
|
|
33
|
-
|
|
31
|
+
actionNames: ("CronjobController:cancel" | "PermissionController:hasPermission")[];
|
|
34
32
|
};
|
|
35
33
|
declare const CancelBackgroundEventsParametersStruct: import("@metamask/superstruct").Struct<{
|
|
36
34
|
id: string;
|
|
@@ -46,11 +44,10 @@ export type CancelBackgroundEventParameters = InferMatching<typeof CancelBackgro
|
|
|
46
44
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
47
45
|
* function.
|
|
48
46
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
49
|
-
* @param
|
|
50
|
-
* @param
|
|
51
|
-
* @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
|
|
47
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
48
|
+
* @param messenger - The messenger used to call controller actions.
|
|
52
49
|
* @returns Nothing.
|
|
53
50
|
*/
|
|
54
|
-
declare function getCancelBackgroundEventImplementation(req:
|
|
51
|
+
declare function getCancelBackgroundEventImplementation(req: JsonRpcRequestWithOrigin<CancelBackgroundEventParameters>, res: PendingJsonRpcResponse<CancelBackgroundEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, CancelBackgroundEventMethodActions>): Promise<void>;
|
|
55
52
|
export {};
|
|
56
53
|
//# sourceMappingURL=cancelBackgroundEvent.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelBackgroundEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cancelBackgroundEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAE5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,EAAE,KAAK,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACzB,qBAAiB;AAElB,MAAM,MAAM,kCAAkC,GAC1C,uCAAuC,GACvC,6BAA6B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B;;;CAYxC,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAe,sCAAsC,CACnD,GAAG,EAAE,wBAAwB,CAAC,+BAA+B,CAAC,EAC9D,GAAG,EAAE,sBAAsB,CAAC,2BAA2B,CAAC,EACxD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,kCAAkC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
3
|
+
import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
|
|
4
|
+
import type { CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
|
|
3
5
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
6
|
import { type PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
-
import type {
|
|
6
|
-
export type
|
|
7
|
-
cancelBackgroundEvent: (id: string) => void;
|
|
8
|
-
hasPermission: (permissionName: string) => boolean;
|
|
9
|
-
};
|
|
7
|
+
import type { CronjobControllerCancelAction, JsonRpcRequestWithOrigin } from "../types.mjs";
|
|
8
|
+
export type CancelBackgroundEventMethodActions = PermissionControllerHasPermissionAction | CronjobControllerCancelAction;
|
|
10
9
|
/**
|
|
11
10
|
* Cancel a background event created by
|
|
12
11
|
* [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
|
|
@@ -28,9 +27,8 @@ export type CancelBackgroundEventMethodHooks = {
|
|
|
28
27
|
* ```
|
|
29
28
|
*/
|
|
30
29
|
export declare const cancelBackgroundEventHandler: {
|
|
31
|
-
methodNames: ["snap_cancelBackgroundEvent"];
|
|
32
30
|
implementation: typeof getCancelBackgroundEventImplementation;
|
|
33
|
-
|
|
31
|
+
actionNames: ("CronjobController:cancel" | "PermissionController:hasPermission")[];
|
|
34
32
|
};
|
|
35
33
|
declare const CancelBackgroundEventsParametersStruct: import("@metamask/superstruct").Struct<{
|
|
36
34
|
id: string;
|
|
@@ -46,11 +44,10 @@ export type CancelBackgroundEventParameters = InferMatching<typeof CancelBackgro
|
|
|
46
44
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
47
45
|
* function.
|
|
48
46
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
49
|
-
* @param
|
|
50
|
-
* @param
|
|
51
|
-
* @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
|
|
47
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
48
|
+
* @param messenger - The messenger used to call controller actions.
|
|
52
49
|
* @returns Nothing.
|
|
53
50
|
*/
|
|
54
|
-
declare function getCancelBackgroundEventImplementation(req:
|
|
51
|
+
declare function getCancelBackgroundEventImplementation(req: JsonRpcRequestWithOrigin<CancelBackgroundEventParameters>, res: PendingJsonRpcResponse<CancelBackgroundEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, CancelBackgroundEventMethodActions>): Promise<void>;
|
|
55
52
|
export {};
|
|
56
53
|
//# sourceMappingURL=cancelBackgroundEvent.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelBackgroundEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cancelBackgroundEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAE5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,EAAE,KAAK,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACzB,qBAAiB;AAElB,MAAM,MAAM,kCAAkC,GAC1C,uCAAuC,GACvC,6BAA6B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B;;;CAYxC,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAe,sCAAsC,CACnD,GAAG,EAAE,wBAAwB,CAAC,+BAA+B,CAAC,EAC9D,GAAG,EAAE,sBAAsB,CAAC,2BAA2B,CAAC,EACxD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,kCAAkC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
|
|
2
2
|
import { StructError, create, object, string } from "@metamask/superstruct";
|
|
3
3
|
import { SnapEndowments } from "../endowments/index.mjs";
|
|
4
|
-
const methodName = 'snap_cancelBackgroundEvent';
|
|
5
|
-
const hookNames = {
|
|
6
|
-
cancelBackgroundEvent: true,
|
|
7
|
-
hasPermission: true,
|
|
8
|
-
};
|
|
9
4
|
/**
|
|
10
5
|
* Cancel a background event created by
|
|
11
6
|
* [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
|
|
@@ -27,9 +22,11 @@ const hookNames = {
|
|
|
27
22
|
* ```
|
|
28
23
|
*/
|
|
29
24
|
export const cancelBackgroundEventHandler = {
|
|
30
|
-
methodNames: [methodName],
|
|
31
25
|
implementation: getCancelBackgroundEventImplementation,
|
|
32
|
-
|
|
26
|
+
actionNames: [
|
|
27
|
+
'PermissionController:hasPermission',
|
|
28
|
+
'CronjobController:cancel',
|
|
29
|
+
],
|
|
33
30
|
};
|
|
34
31
|
const CancelBackgroundEventsParametersStruct = object({
|
|
35
32
|
id: string(),
|
|
@@ -42,20 +39,19 @@ const CancelBackgroundEventsParametersStruct = object({
|
|
|
42
39
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
43
40
|
* function.
|
|
44
41
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
45
|
-
* @param
|
|
46
|
-
* @param
|
|
47
|
-
* @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
|
|
42
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
43
|
+
* @param messenger - The messenger used to call controller actions.
|
|
48
44
|
* @returns Nothing.
|
|
49
45
|
*/
|
|
50
|
-
async function getCancelBackgroundEventImplementation(req, res, _next, end,
|
|
51
|
-
const { params } = req;
|
|
52
|
-
if (!hasPermission
|
|
46
|
+
async function getCancelBackgroundEventImplementation(req, res, _next, end, _hooks, messenger) {
|
|
47
|
+
const { params, origin } = req;
|
|
48
|
+
if (!messenger.call('PermissionController:hasPermission', origin, SnapEndowments.Cronjob)) {
|
|
53
49
|
return end(providerErrors.unauthorized());
|
|
54
50
|
}
|
|
55
51
|
try {
|
|
56
52
|
const validatedParams = getValidatedParams(params);
|
|
57
53
|
const { id } = validatedParams;
|
|
58
|
-
|
|
54
|
+
messenger.call('CronjobController:cancel', origin, id);
|
|
59
55
|
res.result = null;
|
|
60
56
|
}
|
|
61
57
|
catch (error) {
|