@metamask/snaps-rpc-methods 15.1.0 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -4
- package/dist/endowments/keyring.cjs +2 -5
- package/dist/endowments/keyring.cjs.map +1 -1
- package/dist/endowments/keyring.d.cts +0 -2
- package/dist/endowments/keyring.d.cts.map +1 -1
- package/dist/endowments/keyring.d.mts +0 -2
- package/dist/endowments/keyring.d.mts.map +1 -1
- package/dist/endowments/keyring.mjs +3 -6
- package/dist/endowments/keyring.mjs.map +1 -1
- 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,34 @@ 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
|
+
|
|
32
|
+
## [15.1.1]
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Make `KeyringOrigin` caveat explicitly optional ([#3955](https://github.com/MetaMask/snaps/pull/3955))
|
|
37
|
+
|
|
10
38
|
## [15.1.0]
|
|
11
39
|
|
|
12
40
|
### Added
|
|
@@ -364,15 +392,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
364
392
|
|
|
365
393
|
### Changed
|
|
366
394
|
|
|
367
|
-
- Bump `@metamask/json-rpc-engine` from `^9.0.0` to `^9.0.2` ([#2593](https://github.com/
|
|
368
|
-
- 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))
|
|
369
397
|
- Bump `@metamask/snaps-utils` from `^7.8.0` to `^7.8.1` ([#2595](https://github.com/MetaMask/snaps/pull/2595))
|
|
370
398
|
|
|
371
399
|
## [10.0.0]
|
|
372
400
|
|
|
373
401
|
### Added
|
|
374
402
|
|
|
375
|
-
- **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))
|
|
376
404
|
- It should bind to the `addAndShowRequest` method of the `ApprovalController`.
|
|
377
405
|
- Add type `DialogApprovalTypes` and object `DIALOG_APPROVAL_TYPES`.
|
|
378
406
|
|
|
@@ -609,7 +637,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
609
637
|
- The version of the package no longer needs to match the version of all other
|
|
610
638
|
MetaMask Snaps packages.
|
|
611
639
|
|
|
612
|
-
[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
|
|
642
|
+
[15.1.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.1.0...@metamask/snaps-rpc-methods@15.1.1
|
|
613
643
|
[15.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.2...@metamask/snaps-rpc-methods@15.1.0
|
|
614
644
|
[15.0.2]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.1...@metamask/snaps-rpc-methods@15.0.2
|
|
615
645
|
[15.0.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.0...@metamask/snaps-rpc-methods@15.0.1
|
|
@@ -26,7 +26,7 @@ const specificationBuilder = (_builderOptions) => {
|
|
|
26
26
|
],
|
|
27
27
|
endowmentGetter: (_getterOptions) => null,
|
|
28
28
|
validator: (0, caveats_1.createGenericPermissionValidator)([
|
|
29
|
-
{ type: snaps_utils_1.SnapCaveatType.KeyringOrigin },
|
|
29
|
+
{ type: snaps_utils_1.SnapCaveatType.KeyringOrigin, optional: true },
|
|
30
30
|
{ type: snaps_utils_1.SnapCaveatType.KeyringCapabilities, optional: true },
|
|
31
31
|
{ type: snaps_utils_1.SnapCaveatType.MaxRequestTime, optional: true },
|
|
32
32
|
]),
|
|
@@ -102,13 +102,10 @@ exports.getKeyringCaveatMapper = getKeyringCaveatMapper;
|
|
|
102
102
|
*
|
|
103
103
|
* @param permission - The permission to get the caveat value from.
|
|
104
104
|
* @returns The caveat value.
|
|
105
|
-
* @throws If the permission does not have a valid {@link KeyringOrigins}
|
|
106
|
-
* caveat.
|
|
107
105
|
*/
|
|
108
106
|
function getKeyringCaveatOrigins(permission) {
|
|
109
107
|
const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === snaps_utils_1.SnapCaveatType.KeyringOrigin);
|
|
110
|
-
|
|
111
|
-
return caveat.value;
|
|
108
|
+
return caveat?.value ?? { allowedOrigins: [] };
|
|
112
109
|
}
|
|
113
110
|
exports.getKeyringCaveatOrigins = getKeyringCaveatOrigins;
|
|
114
111
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":";;;AAUA,2EAA8E;AAC9E,qDAAiD;AAKjD,uDAI+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Caveat,\n CaveatConstraint,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n KeyringCapabilities,\n KeyringOrigins,\n} from '@metamask/snaps-utils';\nimport {\n assertIsKeyringCapabilities,\n assertIsKeyringOrigins,\n SnapCaveatType,\n} from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.Keyring;\n\ntype KeyringEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n/**\n * `endowment:keyring` returns nothing; it is intended to be used as a flag\n * by the client to detect whether the snap has keyring capabilities.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the keyring endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n KeyringEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.KeyringOrigin,\n SnapCaveatType.KeyringCapabilities,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.KeyringOrigin, optional: true },\n { type: SnapCaveatType.KeyringCapabilities, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const keyringEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a keyring origins caveat. This does not validate the\n * type of the caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid keyring origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsKeyringOrigins(value, rpcErrors.invalidParams);\n}\n\n/**\n * Validate the value of a keyring capabilities caveat. This does not validate\n * the type of the caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatCapabilities(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid keyring capabilities: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsKeyringCapabilities(value, rpcErrors.invalidParams);\n}\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getKeyringCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (!value || !isObject(value) || Object.keys(value).length === 0) {\n return { caveats: null };\n }\n\n const caveats: CaveatConstraint[] = [\n {\n type: SnapCaveatType.KeyringOrigin,\n value: { allowedOrigins: value.allowedOrigins },\n },\n ];\n\n if (value.capabilities) {\n caveats.push({\n type: SnapCaveatType.KeyringCapabilities,\n value: { capabilities: value.capabilities },\n });\n }\n\n return { caveats: caveats as NonEmptyArray<CaveatConstraint> };\n}\n\n/**\n * Getter function to get the {@link KeyringOrigins} caveat value from a\n * permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n */\nexport function getKeyringCaveatOrigins(\n permission?: PermissionConstraint,\n): KeyringOrigins {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.KeyringOrigin,\n ) as Caveat<string, KeyringOrigins> | undefined;\n\n return caveat?.value ?? { allowedOrigins: [] };\n}\n\n/**\n * Getter function to get the {@link KeyringCapabilities} caveat value from a\n * permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value, or `null` if the permission does not have a\n * {@link KeyringCapabilities} caveat.\n */\nexport function getKeyringCaveatCapabilities(\n permission?: PermissionConstraint,\n): KeyringCapabilities | null {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.KeyringCapabilities,\n ) as Caveat<string, KeyringCapabilities> | undefined;\n\n return caveat?.value ?? null;\n}\n\nexport const keyringCaveatSpecifications: Record<\n SnapCaveatType.KeyringOrigin | SnapCaveatType.KeyringCapabilities,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.KeyringOrigin]: Object.freeze({\n type: SnapCaveatType.KeyringOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n [SnapCaveatType.KeyringCapabilities]: Object.freeze({\n type: SnapCaveatType.KeyringCapabilities,\n validator: (caveat: Caveat<string, any>) =>\n validateCaveatCapabilities(caveat),\n }),\n};\n"]}
|
|
@@ -31,8 +31,6 @@ export declare function getKeyringCaveatMapper(value: Json): Pick<PermissionCons
|
|
|
31
31
|
*
|
|
32
32
|
* @param permission - The permission to get the caveat value from.
|
|
33
33
|
* @returns The caveat value.
|
|
34
|
-
* @throws If the permission does not have a valid {@link KeyringOrigins}
|
|
35
|
-
* caveat.
|
|
36
34
|
*/
|
|
37
35
|
export declare function getKeyringCaveatOrigins(permission?: PermissionConstraint): KeyringOrigins;
|
|
38
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,8BAA8B;AAC/B,OAAO,EAGL,cAAc,EACf,8BAA8B;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,yBAAyB,CAAC;AAyC9C,eAAO,MAAM,uBAAuB;;;wBAtClB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAoC3B,CAAC;AAsCZ;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAoBvC;AAED
|
|
1
|
+
{"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,8BAA8B;AAC/B,OAAO,EAGL,cAAc,EACf,8BAA8B;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,yBAAyB,CAAC;AAyC9C,eAAO,MAAM,uBAAuB;;;wBAtClB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAoC3B,CAAC;AAsCZ;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAoBvC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,oBAAoB,GAChC,cAAc,CAMhB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,CAAC,EAAE,oBAAoB,GAChC,mBAAmB,GAAG,IAAI,CAM5B;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,mBAAmB,EACjE,6BAA6B,CAW9B,CAAC"}
|
|
@@ -31,8 +31,6 @@ export declare function getKeyringCaveatMapper(value: Json): Pick<PermissionCons
|
|
|
31
31
|
*
|
|
32
32
|
* @param permission - The permission to get the caveat value from.
|
|
33
33
|
* @returns The caveat value.
|
|
34
|
-
* @throws If the permission does not have a valid {@link KeyringOrigins}
|
|
35
|
-
* caveat.
|
|
36
34
|
*/
|
|
37
35
|
export declare function getKeyringCaveatOrigins(permission?: PermissionConstraint): KeyringOrigins;
|
|
38
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,8BAA8B;AAC/B,OAAO,EAGL,cAAc,EACf,8BAA8B;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,yBAAyB,CAAC;AAyC9C,eAAO,MAAM,uBAAuB;;;wBAtClB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAoC3B,CAAC;AAsCZ;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAoBvC;AAED
|
|
1
|
+
{"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,8BAA8B;AAC/B,OAAO,EAGL,cAAc,EACf,8BAA8B;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,yBAAyB,CAAC;AAyC9C,eAAO,MAAM,uBAAuB;;;wBAtClB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAoC3B,CAAC;AAsCZ;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAoBvC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,oBAAoB,GAChC,cAAc,CAMhB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,CAAC,EAAE,oBAAoB,GAChC,mBAAmB,GAAG,IAAI,CAM5B;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,mBAAmB,EACjE,6BAA6B,CAW9B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
2
2
|
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
3
|
import { assertIsKeyringCapabilities, assertIsKeyringOrigins, SnapCaveatType } from "@metamask/snaps-utils";
|
|
4
|
-
import {
|
|
4
|
+
import { hasProperty, isObject, isPlainObject } from "@metamask/utils";
|
|
5
5
|
import { createGenericPermissionValidator } from "./caveats/index.mjs";
|
|
6
6
|
import { SnapEndowments } from "./enum.mjs";
|
|
7
7
|
const permissionName = SnapEndowments.Keyring;
|
|
@@ -23,7 +23,7 @@ const specificationBuilder = (_builderOptions) => {
|
|
|
23
23
|
],
|
|
24
24
|
endowmentGetter: (_getterOptions) => null,
|
|
25
25
|
validator: createGenericPermissionValidator([
|
|
26
|
-
{ type: SnapCaveatType.KeyringOrigin },
|
|
26
|
+
{ type: SnapCaveatType.KeyringOrigin, optional: true },
|
|
27
27
|
{ type: SnapCaveatType.KeyringCapabilities, optional: true },
|
|
28
28
|
{ type: SnapCaveatType.MaxRequestTime, optional: true },
|
|
29
29
|
]),
|
|
@@ -98,13 +98,10 @@ export function getKeyringCaveatMapper(value) {
|
|
|
98
98
|
*
|
|
99
99
|
* @param permission - The permission to get the caveat value from.
|
|
100
100
|
* @returns The caveat value.
|
|
101
|
-
* @throws If the permission does not have a valid {@link KeyringOrigins}
|
|
102
|
-
* caveat.
|
|
103
101
|
*/
|
|
104
102
|
export function getKeyringCaveatOrigins(permission) {
|
|
105
103
|
const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === SnapCaveatType.KeyringOrigin);
|
|
106
|
-
|
|
107
|
-
return caveat.value;
|
|
104
|
+
return caveat?.value ?? { allowedOrigins: [] };
|
|
108
105
|
}
|
|
109
106
|
/**
|
|
110
107
|
* Getter function to get the {@link KeyringCapabilities} caveat value from a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAC9E,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAKjD,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACf,8BAA8B;AAE/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/endowments/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Caveat,\n CaveatConstraint,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n KeyringCapabilities,\n KeyringOrigins,\n} from '@metamask/snaps-utils';\nimport {\n assertIsKeyringCapabilities,\n assertIsKeyringOrigins,\n SnapCaveatType,\n} from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.Keyring;\n\ntype KeyringEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n/**\n * `endowment:keyring` returns nothing; it is intended to be used as a flag\n * by the client to detect whether the snap has keyring capabilities.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the keyring endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n KeyringEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.KeyringOrigin,\n SnapCaveatType.KeyringCapabilities,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.KeyringOrigin, optional: true },\n { type: SnapCaveatType.KeyringCapabilities, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const keyringEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a keyring origins caveat. This does not validate the\n * type of the caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid keyring origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsKeyringOrigins(value, rpcErrors.invalidParams);\n}\n\n/**\n * Validate the value of a keyring capabilities caveat. This does not validate\n * the type of the caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatCapabilities(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid keyring capabilities: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsKeyringCapabilities(value, rpcErrors.invalidParams);\n}\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getKeyringCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (!value || !isObject(value) || Object.keys(value).length === 0) {\n return { caveats: null };\n }\n\n const caveats: CaveatConstraint[] = [\n {\n type: SnapCaveatType.KeyringOrigin,\n value: { allowedOrigins: value.allowedOrigins },\n },\n ];\n\n if (value.capabilities) {\n caveats.push({\n type: SnapCaveatType.KeyringCapabilities,\n value: { capabilities: value.capabilities },\n });\n }\n\n return { caveats: caveats as NonEmptyArray<CaveatConstraint> };\n}\n\n/**\n * Getter function to get the {@link KeyringOrigins} caveat value from a\n * permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n */\nexport function getKeyringCaveatOrigins(\n permission?: PermissionConstraint,\n): KeyringOrigins {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.KeyringOrigin,\n ) as Caveat<string, KeyringOrigins> | undefined;\n\n return caveat?.value ?? { allowedOrigins: [] };\n}\n\n/**\n * Getter function to get the {@link KeyringCapabilities} caveat value from a\n * permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value, or `null` if the permission does not have a\n * {@link KeyringCapabilities} caveat.\n */\nexport function getKeyringCaveatCapabilities(\n permission?: PermissionConstraint,\n): KeyringCapabilities | null {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.KeyringCapabilities,\n ) as Caveat<string, KeyringCapabilities> | undefined;\n\n return caveat?.value ?? null;\n}\n\nexport const keyringCaveatSpecifications: Record<\n SnapCaveatType.KeyringOrigin | SnapCaveatType.KeyringCapabilities,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.KeyringOrigin]: Object.freeze({\n type: SnapCaveatType.KeyringOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n [SnapCaveatType.KeyringCapabilities]: Object.freeze({\n type: SnapCaveatType.KeyringCapabilities,\n validator: (caveat: Caveat<string, any>) =>\n validateCaveatCapabilities(caveat),\n }),\n};\n"]}
|
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) {
|