@metamask/snaps-jest 8.3.2 → 8.5.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 +80 -1
- package/LICENSE +15 -0
- package/dist/environment.cjs +2 -1
- package/dist/environment.cjs.map +1 -1
- package/dist/environment.d.cts +2 -2
- package/dist/environment.d.cts.map +1 -1
- package/dist/environment.d.mts +2 -2
- package/dist/environment.d.mts.map +1 -1
- package/dist/environment.mjs +3 -2
- package/dist/environment.mjs.map +1 -1
- package/dist/helpers.cjs +9 -176
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +1 -44
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.mts +1 -44
- package/dist/helpers.d.mts.map +1 -1
- package/dist/helpers.mjs +11 -171
- package/dist/helpers.mjs.map +1 -1
- package/dist/index.cjs +8 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/internals/index.cjs +0 -3
- package/dist/internals/index.cjs.map +1 -1
- package/dist/internals/index.d.cts +0 -3
- package/dist/internals/index.d.cts.map +1 -1
- package/dist/internals/index.d.mts +0 -3
- package/dist/internals/index.d.mts.map +1 -1
- package/dist/internals/index.mjs +0 -3
- package/dist/internals/index.mjs.map +1 -1
- package/dist/matchers.cjs +3 -3
- package/dist/matchers.cjs.map +1 -1
- package/dist/matchers.d.cts.map +1 -1
- package/dist/matchers.d.mts.map +1 -1
- package/dist/matchers.mjs +1 -1
- package/dist/matchers.mjs.map +1 -1
- package/package.json +38 -33
- package/dist/internals/request.cjs +0 -143
- package/dist/internals/request.cjs.map +0 -1
- package/dist/internals/request.d.cts +0 -56
- package/dist/internals/request.d.cts.map +0 -1
- package/dist/internals/request.d.mts +0 -56
- package/dist/internals/request.d.mts.map +0 -1
- package/dist/internals/request.mjs +0 -138
- package/dist/internals/request.mjs.map +0 -1
- package/dist/internals/simulation/constants.cjs +0 -21
- package/dist/internals/simulation/constants.cjs.map +0 -1
- package/dist/internals/simulation/constants.d.cts +0 -18
- package/dist/internals/simulation/constants.d.cts.map +0 -1
- package/dist/internals/simulation/constants.d.mts +0 -18
- package/dist/internals/simulation/constants.d.mts.map +0 -1
- package/dist/internals/simulation/constants.mjs +0 -18
- package/dist/internals/simulation/constants.mjs.map +0 -1
- package/dist/internals/simulation/controllers.cjs +0 -101
- package/dist/internals/simulation/controllers.cjs.map +0 -1
- package/dist/internals/simulation/controllers.d.cts +0 -41
- package/dist/internals/simulation/controllers.d.cts.map +0 -1
- package/dist/internals/simulation/controllers.d.mts +0 -41
- package/dist/internals/simulation/controllers.d.mts.map +0 -1
- package/dist/internals/simulation/controllers.mjs +0 -96
- package/dist/internals/simulation/controllers.mjs.map +0 -1
- package/dist/internals/simulation/files.cjs +0 -94
- package/dist/internals/simulation/files.cjs.map +0 -1
- package/dist/internals/simulation/files.d.cts +0 -49
- package/dist/internals/simulation/files.d.cts.map +0 -1
- package/dist/internals/simulation/files.d.mts +0 -49
- package/dist/internals/simulation/files.d.mts.map +0 -1
- package/dist/internals/simulation/files.mjs +0 -91
- package/dist/internals/simulation/files.mjs.map +0 -1
- package/dist/internals/simulation/index.cjs +0 -22
- package/dist/internals/simulation/index.cjs.map +0 -1
- package/dist/internals/simulation/index.d.cts +0 -6
- package/dist/internals/simulation/index.d.cts.map +0 -1
- package/dist/internals/simulation/index.d.mts +0 -6
- package/dist/internals/simulation/index.d.mts.map +0 -1
- package/dist/internals/simulation/index.mjs +0 -6
- package/dist/internals/simulation/index.mjs.map +0 -1
- package/dist/internals/simulation/interface.cjs +0 -527
- package/dist/internals/simulation/interface.cjs.map +0 -1
- package/dist/internals/simulation/interface.d.cts +0 -152
- package/dist/internals/simulation/interface.d.cts.map +0 -1
- package/dist/internals/simulation/interface.d.mts +0 -152
- package/dist/internals/simulation/interface.d.mts.map +0 -1
- package/dist/internals/simulation/interface.mjs +0 -513
- package/dist/internals/simulation/interface.mjs.map +0 -1
- package/dist/internals/simulation/methods/constants.cjs +0 -72
- package/dist/internals/simulation/methods/constants.cjs.map +0 -1
- package/dist/internals/simulation/methods/constants.d.cts +0 -11
- package/dist/internals/simulation/methods/constants.d.cts.map +0 -1
- package/dist/internals/simulation/methods/constants.d.mts +0 -11
- package/dist/internals/simulation/methods/constants.d.mts.map +0 -1
- package/dist/internals/simulation/methods/constants.mjs +0 -69
- package/dist/internals/simulation/methods/constants.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/get-preferences.cjs +0 -18
- package/dist/internals/simulation/methods/hooks/get-preferences.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/get-preferences.d.cts +0 -14
- package/dist/internals/simulation/methods/hooks/get-preferences.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/get-preferences.d.mts +0 -14
- package/dist/internals/simulation/methods/hooks/get-preferences.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/get-preferences.mjs +0 -14
- package/dist/internals/simulation/methods/hooks/get-preferences.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/index.cjs +0 -22
- package/dist/internals/simulation/methods/hooks/index.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/index.d.cts +0 -6
- package/dist/internals/simulation/methods/hooks/index.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/index.d.mts +0 -6
- package/dist/internals/simulation/methods/hooks/index.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/index.mjs +0 -6
- package/dist/internals/simulation/methods/hooks/index.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/interface.cjs +0 -24
- package/dist/internals/simulation/methods/hooks/interface.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/interface.d.cts +0 -17
- package/dist/internals/simulation/methods/hooks/interface.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/interface.d.mts +0 -17
- package/dist/internals/simulation/methods/hooks/interface.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/interface.mjs +0 -19
- package/dist/internals/simulation/methods/hooks/interface.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/notifications.cjs +0 -58
- package/dist/internals/simulation/methods/hooks/notifications.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/notifications.d.cts +0 -17
- package/dist/internals/simulation/methods/hooks/notifications.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/notifications.d.mts +0 -17
- package/dist/internals/simulation/methods/hooks/notifications.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/notifications.mjs +0 -55
- package/dist/internals/simulation/methods/hooks/notifications.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/request-user-approval.cjs +0 -38
- package/dist/internals/simulation/methods/hooks/request-user-approval.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/request-user-approval.d.cts +0 -16
- package/dist/internals/simulation/methods/hooks/request-user-approval.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/request-user-approval.d.mts +0 -16
- package/dist/internals/simulation/methods/hooks/request-user-approval.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/request-user-approval.mjs +0 -35
- package/dist/internals/simulation/methods/hooks/request-user-approval.mjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/state.cjs +0 -84
- package/dist/internals/simulation/methods/hooks/state.cjs.map +0 -1
- package/dist/internals/simulation/methods/hooks/state.d.cts +0 -24
- package/dist/internals/simulation/methods/hooks/state.d.cts.map +0 -1
- package/dist/internals/simulation/methods/hooks/state.d.mts +0 -24
- package/dist/internals/simulation/methods/hooks/state.d.mts.map +0 -1
- package/dist/internals/simulation/methods/hooks/state.mjs +0 -79
- package/dist/internals/simulation/methods/hooks/state.mjs.map +0 -1
- package/dist/internals/simulation/methods/index.cjs +0 -18
- package/dist/internals/simulation/methods/index.cjs.map +0 -1
- package/dist/internals/simulation/methods/index.d.cts +0 -2
- package/dist/internals/simulation/methods/index.d.cts.map +0 -1
- package/dist/internals/simulation/methods/index.d.mts +0 -2
- package/dist/internals/simulation/methods/index.d.mts.map +0 -1
- package/dist/internals/simulation/methods/index.mjs +0 -2
- package/dist/internals/simulation/methods/index.mjs.map +0 -1
- package/dist/internals/simulation/methods/specifications.cjs +0 -85
- package/dist/internals/simulation/methods/specifications.cjs.map +0 -1
- package/dist/internals/simulation/methods/specifications.d.cts +0 -57
- package/dist/internals/simulation/methods/specifications.d.cts.map +0 -1
- package/dist/internals/simulation/methods/specifications.d.mts +0 -57
- package/dist/internals/simulation/methods/specifications.d.mts.map +0 -1
- package/dist/internals/simulation/methods/specifications.mjs +0 -78
- package/dist/internals/simulation/methods/specifications.mjs.map +0 -1
- package/dist/internals/simulation/middleware/engine.cjs +0 -37
- package/dist/internals/simulation/middleware/engine.cjs.map +0 -1
- package/dist/internals/simulation/middleware/engine.d.cts +0 -27
- package/dist/internals/simulation/middleware/engine.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/engine.d.mts +0 -27
- package/dist/internals/simulation/middleware/engine.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/engine.mjs +0 -34
- package/dist/internals/simulation/middleware/engine.mjs.map +0 -1
- package/dist/internals/simulation/middleware/index.cjs +0 -18
- package/dist/internals/simulation/middleware/index.cjs.map +0 -1
- package/dist/internals/simulation/middleware/index.d.cts +0 -2
- package/dist/internals/simulation/middleware/index.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/index.d.mts +0 -2
- package/dist/internals/simulation/middleware/index.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/index.mjs +0 -2
- package/dist/internals/simulation/middleware/index.mjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/accounts.cjs +0 -34
- package/dist/internals/simulation/middleware/internal-methods/accounts.cjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/accounts.d.cts +0 -20
- package/dist/internals/simulation/middleware/internal-methods/accounts.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/accounts.d.mts +0 -20
- package/dist/internals/simulation/middleware/internal-methods/accounts.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/accounts.mjs +0 -30
- package/dist/internals/simulation/middleware/internal-methods/accounts.mjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/index.cjs +0 -18
- package/dist/internals/simulation/middleware/internal-methods/index.cjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/index.d.cts +0 -2
- package/dist/internals/simulation/middleware/internal-methods/index.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/index.d.mts +0 -2
- package/dist/internals/simulation/middleware/internal-methods/index.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/index.mjs +0 -2
- package/dist/internals/simulation/middleware/internal-methods/index.mjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/middleware.cjs +0 -44
- package/dist/internals/simulation/middleware/internal-methods/middleware.cjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/middleware.d.cts +0 -23
- package/dist/internals/simulation/middleware/internal-methods/middleware.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/middleware.d.mts +0 -23
- package/dist/internals/simulation/middleware/internal-methods/middleware.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/middleware.mjs +0 -40
- package/dist/internals/simulation/middleware/internal-methods/middleware.mjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/provider-state.cjs +0 -28
- package/dist/internals/simulation/middleware/internal-methods/provider-state.cjs.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/provider-state.d.cts +0 -16
- package/dist/internals/simulation/middleware/internal-methods/provider-state.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/provider-state.d.mts +0 -16
- package/dist/internals/simulation/middleware/internal-methods/provider-state.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs +0 -24
- package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs.map +0 -1
- package/dist/internals/simulation/middleware/mock.cjs +0 -22
- package/dist/internals/simulation/middleware/mock.cjs.map +0 -1
- package/dist/internals/simulation/middleware/mock.d.cts +0 -11
- package/dist/internals/simulation/middleware/mock.d.cts.map +0 -1
- package/dist/internals/simulation/middleware/mock.d.mts +0 -11
- package/dist/internals/simulation/middleware/mock.d.mts.map +0 -1
- package/dist/internals/simulation/middleware/mock.mjs +0 -18
- package/dist/internals/simulation/middleware/mock.mjs.map +0 -1
- package/dist/internals/simulation/options.cjs +0 -25
- package/dist/internals/simulation/options.cjs.map +0 -1
- package/dist/internals/simulation/options.d.cts +0 -40
- package/dist/internals/simulation/options.d.cts.map +0 -1
- package/dist/internals/simulation/options.d.mts +0 -40
- package/dist/internals/simulation/options.d.mts.map +0 -1
- package/dist/internals/simulation/options.mjs +0 -21
- package/dist/internals/simulation/options.mjs.map +0 -1
- package/dist/internals/simulation/simulation.cjs +0 -155
- package/dist/internals/simulation/simulation.cjs.map +0 -1
- package/dist/internals/simulation/simulation.d.cts +0 -103
- package/dist/internals/simulation/simulation.d.cts.map +0 -1
- package/dist/internals/simulation/simulation.d.mts +0 -103
- package/dist/internals/simulation/simulation.d.mts.map +0 -1
- package/dist/internals/simulation/simulation.mjs +0 -150
- package/dist/internals/simulation/simulation.mjs.map +0 -1
- package/dist/internals/simulation/store/index.cjs +0 -21
- package/dist/internals/simulation/store/index.cjs.map +0 -1
- package/dist/internals/simulation/store/index.d.cts +0 -5
- package/dist/internals/simulation/store/index.d.cts.map +0 -1
- package/dist/internals/simulation/store/index.d.mts +0 -5
- package/dist/internals/simulation/store/index.d.mts.map +0 -1
- package/dist/internals/simulation/store/index.mjs +0 -5
- package/dist/internals/simulation/store/index.mjs.map +0 -1
- package/dist/internals/simulation/store/mocks.cjs +0 -39
- package/dist/internals/simulation/store/mocks.cjs.map +0 -1
- package/dist/internals/simulation/store/mocks.d.cts +0 -36
- package/dist/internals/simulation/store/mocks.d.cts.map +0 -1
- package/dist/internals/simulation/store/mocks.d.mts +0 -36
- package/dist/internals/simulation/store/mocks.d.mts.map +0 -1
- package/dist/internals/simulation/store/mocks.mjs +0 -35
- package/dist/internals/simulation/store/mocks.mjs.map +0 -1
- package/dist/internals/simulation/store/notifications.cjs +0 -35
- package/dist/internals/simulation/store/notifications.cjs.map +0 -1
- package/dist/internals/simulation/store/notifications.d.cts +0 -45
- package/dist/internals/simulation/store/notifications.d.cts.map +0 -1
- package/dist/internals/simulation/store/notifications.d.mts +0 -45
- package/dist/internals/simulation/store/notifications.d.mts.map +0 -1
- package/dist/internals/simulation/store/notifications.mjs +0 -32
- package/dist/internals/simulation/store/notifications.mjs.map +0 -1
- package/dist/internals/simulation/store/state.cjs +0 -54
- package/dist/internals/simulation/store/state.cjs.map +0 -1
- package/dist/internals/simulation/store/state.d.cts +0 -56
- package/dist/internals/simulation/store/state.d.cts.map +0 -1
- package/dist/internals/simulation/store/state.d.mts +0 -56
- package/dist/internals/simulation/store/state.d.mts.map +0 -1
- package/dist/internals/simulation/store/state.mjs +0 -50
- package/dist/internals/simulation/store/state.mjs.map +0 -1
- package/dist/internals/simulation/store/store.cjs +0 -51
- package/dist/internals/simulation/store/store.cjs.map +0 -1
- package/dist/internals/simulation/store/store.d.cts +0 -22
- package/dist/internals/simulation/store/store.d.cts.map +0 -1
- package/dist/internals/simulation/store/store.d.mts +0 -22
- package/dist/internals/simulation/store/store.d.mts.map +0 -1
- package/dist/internals/simulation/store/store.mjs +0 -45
- package/dist/internals/simulation/store/store.mjs.map +0 -1
- package/dist/internals/simulation/store/ui.cjs +0 -24
- package/dist/internals/simulation/store/ui.cjs.map +0 -1
- package/dist/internals/simulation/store/ui.d.cts +0 -27
- package/dist/internals/simulation/store/ui.d.cts.map +0 -1
- package/dist/internals/simulation/store/ui.d.mts +0 -27
- package/dist/internals/simulation/store/ui.d.mts.map +0 -1
- package/dist/internals/simulation/store/ui.mjs +0 -21
- package/dist/internals/simulation/store/ui.mjs.map +0 -1
- package/dist/internals/structs.cjs +0 -157
- package/dist/internals/structs.cjs.map +0 -1
- package/dist/internals/structs.d.cts +0 -205
- package/dist/internals/structs.d.cts.map +0 -1
- package/dist/internals/structs.d.mts +0 -205
- package/dist/internals/structs.d.mts.map +0 -1
- package/dist/internals/structs.mjs +0 -154
- package/dist/internals/structs.mjs.map +0 -1
- package/dist/types/index.cjs +0 -18
- package/dist/types/index.cjs.map +0 -1
- package/dist/types/index.d.cts +0 -2
- package/dist/types/index.d.cts.map +0 -1
- package/dist/types/index.d.mts +0 -2
- package/dist/types/index.d.mts.map +0 -1
- package/dist/types/index.mjs +0 -2
- package/dist/types/index.mjs.map +0 -1
- package/dist/types/types.cjs +0 -3
- package/dist/types/types.cjs.map +0 -1
- package/dist/types/types.d.cts +0 -386
- package/dist/types/types.d.cts.map +0 -1
- package/dist/types/types.d.mts +0 -386
- package/dist/types/types.d.mts.map +0 -1
- package/dist/types/types.mjs +0 -2
- package/dist/types/types.mjs.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { ComponentOrElementStruct } from "@metamask/snaps-sdk";
|
|
2
|
-
import { unwrapError } from "@metamask/snaps-utils";
|
|
3
|
-
import { is } from "@metamask/superstruct";
|
|
4
|
-
import { assert, getSafeJson, hasProperty, isPlainObject } from "@metamask/utils";
|
|
5
|
-
import $reduxjstoolkit from "@reduxjs/toolkit";
|
|
6
|
-
const { nanoid } = $reduxjstoolkit;
|
|
7
|
-
import { clearNotifications, getInterface, getInterfaceActions, getNotifications } from "./simulation/index.mjs";
|
|
8
|
-
import { SnapResponseStruct } from "./structs.mjs";
|
|
9
|
-
/**
|
|
10
|
-
* Send a JSON-RPC request to the Snap, and wrap the response in a
|
|
11
|
-
* {@link SnapResponse} object.
|
|
12
|
-
*
|
|
13
|
-
* @param options - The request options.
|
|
14
|
-
* @param options.snapId - The ID of the Snap to send the request to.
|
|
15
|
-
* @param options.store - The Redux store.
|
|
16
|
-
* @param options.executionService - The execution service to use to send the
|
|
17
|
-
* request.
|
|
18
|
-
* @param options.handler - The handler to use to send the request.
|
|
19
|
-
* @param options.controllerMessenger - The controller messenger used to call actions.
|
|
20
|
-
* @param options.runSaga - A function to run a saga outside the usual Redux
|
|
21
|
-
* flow.
|
|
22
|
-
* @param options.request - The request to send.
|
|
23
|
-
* @param options.request.id - The ID of the request. If not provided, a random
|
|
24
|
-
* ID will be generated.
|
|
25
|
-
* @param options.request.origin - The origin of the request. Defaults to
|
|
26
|
-
* `https://metamask.io`.
|
|
27
|
-
* @returns The response, wrapped in a {@link SnapResponse} object.
|
|
28
|
-
*/
|
|
29
|
-
export function handleRequest({ snapId, store, executionService, handler, controllerMessenger, runSaga, request: { id = nanoid(), origin = 'https://metamask.io', ...options }, }) {
|
|
30
|
-
const getInterfaceError = () => {
|
|
31
|
-
throw new Error('Unable to get the interface from the Snap: The request to the Snap failed.');
|
|
32
|
-
};
|
|
33
|
-
const promise = executionService
|
|
34
|
-
.handleRpcRequest(snapId, {
|
|
35
|
-
origin,
|
|
36
|
-
handler,
|
|
37
|
-
request: {
|
|
38
|
-
jsonrpc: '2.0',
|
|
39
|
-
id: 1,
|
|
40
|
-
...options,
|
|
41
|
-
},
|
|
42
|
-
})
|
|
43
|
-
.then(async (result) => {
|
|
44
|
-
const notifications = getNotifications(store.getState());
|
|
45
|
-
store.dispatch(clearNotifications());
|
|
46
|
-
try {
|
|
47
|
-
const getInterfaceFn = await getInterfaceApi(result, snapId, controllerMessenger);
|
|
48
|
-
return {
|
|
49
|
-
id: String(id),
|
|
50
|
-
response: {
|
|
51
|
-
result: getSafeJson(result),
|
|
52
|
-
},
|
|
53
|
-
notifications,
|
|
54
|
-
...(getInterfaceFn ? { getInterface: getInterfaceFn } : {}),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
const [unwrappedError] = unwrapError(error);
|
|
59
|
-
return {
|
|
60
|
-
id: String(id),
|
|
61
|
-
response: {
|
|
62
|
-
error: unwrappedError.serialize(),
|
|
63
|
-
},
|
|
64
|
-
notifications: [],
|
|
65
|
-
getInterface: getInterfaceError,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
.catch((error) => {
|
|
70
|
-
const [unwrappedError] = unwrapError(error);
|
|
71
|
-
return {
|
|
72
|
-
id: String(id),
|
|
73
|
-
response: {
|
|
74
|
-
error: unwrappedError.serialize(),
|
|
75
|
-
},
|
|
76
|
-
notifications: [],
|
|
77
|
-
getInterface: getInterfaceError,
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
promise.getInterface = async () => {
|
|
81
|
-
const sagaPromise = runSaga(getInterface, runSaga, snapId, controllerMessenger).toPromise();
|
|
82
|
-
const result = await Promise.race([promise, sagaPromise]);
|
|
83
|
-
// If the request promise has resolved to an error, we should throw
|
|
84
|
-
// instead of waiting for an interface that likely will never be displayed
|
|
85
|
-
if (is(result, SnapResponseStruct) &&
|
|
86
|
-
hasProperty(result.response, 'error')) {
|
|
87
|
-
throw new Error(`Unable to get the interface from the Snap: The returned interface may be invalid. The error message received was: ${result.response.error.message}`);
|
|
88
|
-
}
|
|
89
|
-
return await sagaPromise;
|
|
90
|
-
};
|
|
91
|
-
return promise;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get the interface ID from the result if it's available or create a new interface if the result contains static components.
|
|
95
|
-
*
|
|
96
|
-
* @param result - The handler result object.
|
|
97
|
-
* @param snapId - The Snap ID.
|
|
98
|
-
* @param controllerMessenger - The controller messenger.
|
|
99
|
-
* @returns The interface ID or undefined if the result doesn't include content.
|
|
100
|
-
*/
|
|
101
|
-
export async function getInterfaceFromResult(result, snapId, controllerMessenger) {
|
|
102
|
-
if (isPlainObject(result) && hasProperty(result, 'id')) {
|
|
103
|
-
return result.id;
|
|
104
|
-
}
|
|
105
|
-
if (isPlainObject(result) && hasProperty(result, 'content')) {
|
|
106
|
-
assert(is(result.content, ComponentOrElementStruct), 'The Snap returned an invalid interface.');
|
|
107
|
-
const id = await controllerMessenger.call('SnapInterfaceController:createInterface', snapId, result.content);
|
|
108
|
-
return id;
|
|
109
|
-
}
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Get the response content from the `SnapInterfaceController` and include the
|
|
114
|
-
* interaction methods.
|
|
115
|
-
*
|
|
116
|
-
* @param result - The handler result object.
|
|
117
|
-
* @param snapId - The Snap ID.
|
|
118
|
-
* @param controllerMessenger - The controller messenger.
|
|
119
|
-
* @returns The content components if any.
|
|
120
|
-
*/
|
|
121
|
-
export async function getInterfaceApi(result, snapId, controllerMessenger) {
|
|
122
|
-
const interfaceId = await getInterfaceFromResult(result, snapId, controllerMessenger);
|
|
123
|
-
if (interfaceId) {
|
|
124
|
-
return () => {
|
|
125
|
-
const { content } = controllerMessenger.call('SnapInterfaceController:getInterface', snapId, interfaceId);
|
|
126
|
-
const actions = getInterfaceActions(snapId, controllerMessenger, {
|
|
127
|
-
id: interfaceId,
|
|
128
|
-
content,
|
|
129
|
-
});
|
|
130
|
-
return {
|
|
131
|
-
content,
|
|
132
|
-
...actions,
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=request.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request.mjs","sourceRoot":"","sources":["../../src/internals/request.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractExecutionService } from '@metamask/snaps-controllers';\nimport {\n type ComponentOrElement,\n ComponentOrElementStruct,\n type JsonRpcError,\n type SnapId,\n} from '@metamask/snaps-sdk';\nimport type { HandlerType } from '@metamask/snaps-utils';\nimport { unwrapError } from '@metamask/snaps-utils';\nimport { is } from '@metamask/superstruct';\nimport {\n assert,\n getSafeJson,\n hasProperty,\n isPlainObject,\n} from '@metamask/utils';\nimport { nanoid } from '@reduxjs/toolkit';\n\nimport type {\n RequestOptions,\n SnapHandlerInterface,\n SnapRequest,\n} from '../types';\nimport type { RunSagaFunction, Store } from './simulation';\nimport {\n clearNotifications,\n getInterface,\n getInterfaceActions,\n getNotifications,\n} from './simulation';\nimport type { RootControllerMessenger } from './simulation/controllers';\nimport { SnapResponseStruct } from './structs';\n\nexport type HandleRequestOptions = {\n snapId: SnapId;\n store: Store;\n executionService: AbstractExecutionService<unknown>;\n handler: HandlerType;\n controllerMessenger: RootControllerMessenger;\n runSaga: RunSagaFunction;\n request: RequestOptions;\n};\n\n/**\n * Send a JSON-RPC request to the Snap, and wrap the response in a\n * {@link SnapResponse} object.\n *\n * @param options - The request options.\n * @param options.snapId - The ID of the Snap to send the request to.\n * @param options.store - The Redux store.\n * @param options.executionService - The execution service to use to send the\n * request.\n * @param options.handler - The handler to use to send the request.\n * @param options.controllerMessenger - The controller messenger used to call actions.\n * @param options.runSaga - A function to run a saga outside the usual Redux\n * flow.\n * @param options.request - The request to send.\n * @param options.request.id - The ID of the request. If not provided, a random\n * ID will be generated.\n * @param options.request.origin - The origin of the request. Defaults to\n * `https://metamask.io`.\n * @returns The response, wrapped in a {@link SnapResponse} object.\n */\nexport function handleRequest({\n snapId,\n store,\n executionService,\n handler,\n controllerMessenger,\n runSaga,\n request: { id = nanoid(), origin = 'https://metamask.io', ...options },\n}: HandleRequestOptions): SnapRequest {\n const getInterfaceError = () => {\n throw new Error(\n 'Unable to get the interface from the Snap: The request to the Snap failed.',\n );\n };\n\n const promise = executionService\n .handleRpcRequest(snapId, {\n origin,\n handler,\n request: {\n jsonrpc: '2.0',\n id: 1,\n ...options,\n },\n })\n .then(async (result) => {\n const notifications = getNotifications(store.getState());\n store.dispatch(clearNotifications());\n\n try {\n const getInterfaceFn = await getInterfaceApi(\n result,\n snapId,\n controllerMessenger,\n );\n\n return {\n id: String(id),\n response: {\n result: getSafeJson(result),\n },\n notifications,\n ...(getInterfaceFn ? { getInterface: getInterfaceFn } : {}),\n };\n } catch (error) {\n const [unwrappedError] = unwrapError(error);\n return {\n id: String(id),\n response: {\n error: unwrappedError.serialize(),\n },\n notifications: [],\n getInterface: getInterfaceError,\n };\n }\n })\n .catch((error) => {\n const [unwrappedError] = unwrapError(error);\n\n return {\n id: String(id),\n response: {\n error: unwrappedError.serialize(),\n },\n notifications: [],\n getInterface: getInterfaceError,\n };\n }) as unknown as SnapRequest;\n\n promise.getInterface = async () => {\n const sagaPromise = runSaga(\n getInterface,\n runSaga,\n snapId,\n controllerMessenger,\n ).toPromise();\n const result = await Promise.race([promise, sagaPromise]);\n\n // If the request promise has resolved to an error, we should throw\n // instead of waiting for an interface that likely will never be displayed\n if (\n is(result, SnapResponseStruct) &&\n hasProperty(result.response, 'error')\n ) {\n throw new Error(\n `Unable to get the interface from the Snap: The returned interface may be invalid. The error message received was: ${\n (result.response.error as JsonRpcError).message\n }`,\n );\n }\n\n return await sagaPromise;\n };\n\n return promise;\n}\n\n/**\n * Get the interface ID from the result if it's available or create a new interface if the result contains static components.\n *\n * @param result - The handler result object.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger.\n * @returns The interface ID or undefined if the result doesn't include content.\n */\nexport async function getInterfaceFromResult(\n result: unknown,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n) {\n if (isPlainObject(result) && hasProperty(result, 'id')) {\n return result.id as string;\n }\n\n if (isPlainObject(result) && hasProperty(result, 'content')) {\n assert(\n is(result.content, ComponentOrElementStruct),\n 'The Snap returned an invalid interface.',\n );\n const id = await controllerMessenger.call(\n 'SnapInterfaceController:createInterface',\n snapId,\n result.content as ComponentOrElement,\n );\n\n return id;\n }\n\n return undefined;\n}\n\n/**\n * Get the response content from the `SnapInterfaceController` and include the\n * interaction methods.\n *\n * @param result - The handler result object.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger.\n * @returns The content components if any.\n */\nexport async function getInterfaceApi(\n result: unknown,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n): Promise<(() => SnapHandlerInterface) | undefined> {\n const interfaceId = await getInterfaceFromResult(\n result,\n snapId,\n controllerMessenger,\n );\n\n if (interfaceId) {\n return () => {\n const { content } = controllerMessenger.call(\n 'SnapInterfaceController:getInterface',\n snapId,\n interfaceId,\n );\n\n const actions = getInterfaceActions(snapId, controllerMessenger, {\n id: interfaceId,\n content,\n });\n\n return {\n content,\n ...actions,\n };\n };\n }\n\n return undefined;\n}\n"]}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_JSON_RPC_ENDPOINT = exports.DEFAULT_CURRENCY = exports.DEFAULT_LOCALE = exports.DEFAULT_SRP = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* A secret recovery phrase that is used for testing purposes. Do not use this
|
|
6
|
-
* to store any real funds!
|
|
7
|
-
*/
|
|
8
|
-
exports.DEFAULT_SRP = 'test test test test test test test test test test test ball';
|
|
9
|
-
/**
|
|
10
|
-
* The default locale.
|
|
11
|
-
*/
|
|
12
|
-
exports.DEFAULT_LOCALE = 'en';
|
|
13
|
-
/**
|
|
14
|
-
* The default currency.
|
|
15
|
-
*/
|
|
16
|
-
exports.DEFAULT_CURRENCY = 'usd';
|
|
17
|
-
/**
|
|
18
|
-
* The default JSON-RPC endpoint for Ethereum requests.
|
|
19
|
-
*/
|
|
20
|
-
exports.DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';
|
|
21
|
-
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../src/internals/simulation/constants.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;GAEG;AACU,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACU,QAAA,yBAAyB,GAAG,6BAA6B,CAAC","sourcesContent":["/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The default JSON-RPC endpoint for Ethereum requests.\n */\nexport const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';\n"]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A secret recovery phrase that is used for testing purposes. Do not use this
|
|
3
|
-
* to store any real funds!
|
|
4
|
-
*/
|
|
5
|
-
export declare const DEFAULT_SRP = "test test test test test test test test test test test ball";
|
|
6
|
-
/**
|
|
7
|
-
* The default locale.
|
|
8
|
-
*/
|
|
9
|
-
export declare const DEFAULT_LOCALE = "en";
|
|
10
|
-
/**
|
|
11
|
-
* The default currency.
|
|
12
|
-
*/
|
|
13
|
-
export declare const DEFAULT_CURRENCY = "usd";
|
|
14
|
-
/**
|
|
15
|
-
* The default JSON-RPC endpoint for Ethereum requests.
|
|
16
|
-
*/
|
|
17
|
-
export declare const DEFAULT_JSON_RPC_ENDPOINT = "https://cloudflare-eth.com/";
|
|
18
|
-
//# sourceMappingURL=constants.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../src/internals/simulation/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A secret recovery phrase that is used for testing purposes. Do not use this
|
|
3
|
-
* to store any real funds!
|
|
4
|
-
*/
|
|
5
|
-
export declare const DEFAULT_SRP = "test test test test test test test test test test test ball";
|
|
6
|
-
/**
|
|
7
|
-
* The default locale.
|
|
8
|
-
*/
|
|
9
|
-
export declare const DEFAULT_LOCALE = "en";
|
|
10
|
-
/**
|
|
11
|
-
* The default currency.
|
|
12
|
-
*/
|
|
13
|
-
export declare const DEFAULT_CURRENCY = "usd";
|
|
14
|
-
/**
|
|
15
|
-
* The default JSON-RPC endpoint for Ethereum requests.
|
|
16
|
-
*/
|
|
17
|
-
export declare const DEFAULT_JSON_RPC_ENDPOINT = "https://cloudflare-eth.com/";
|
|
18
|
-
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/internals/simulation/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A secret recovery phrase that is used for testing purposes. Do not use this
|
|
3
|
-
* to store any real funds!
|
|
4
|
-
*/
|
|
5
|
-
export const DEFAULT_SRP = 'test test test test test test test test test test test ball';
|
|
6
|
-
/**
|
|
7
|
-
* The default locale.
|
|
8
|
-
*/
|
|
9
|
-
export const DEFAULT_LOCALE = 'en';
|
|
10
|
-
/**
|
|
11
|
-
* The default currency.
|
|
12
|
-
*/
|
|
13
|
-
export const DEFAULT_CURRENCY = 'usd';
|
|
14
|
-
/**
|
|
15
|
-
* The default JSON-RPC endpoint for Ethereum requests.
|
|
16
|
-
*/
|
|
17
|
-
export const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';
|
|
18
|
-
//# sourceMappingURL=constants.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/internals/simulation/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC","sourcesContent":["/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The default JSON-RPC endpoint for Ethereum requests.\n */\nexport const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';\n"]}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerSnap = exports.getControllers = void 0;
|
|
4
|
-
const permission_controller_1 = require("@metamask/permission-controller");
|
|
5
|
-
const snaps_controllers_1 = require("@metamask/snaps-controllers");
|
|
6
|
-
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
7
|
-
const utils_1 = require("@metamask/utils");
|
|
8
|
-
const methods_1 = require("./methods/index.cjs");
|
|
9
|
-
const constants_1 = require("./methods/constants.cjs");
|
|
10
|
-
/**
|
|
11
|
-
* Get the controllers for the Snap.
|
|
12
|
-
*
|
|
13
|
-
* @param options - The options.
|
|
14
|
-
* @returns The controllers for the Snap.
|
|
15
|
-
*/
|
|
16
|
-
function getControllers(options) {
|
|
17
|
-
const { controllerMessenger } = options;
|
|
18
|
-
const subjectMetadataController = new permission_controller_1.SubjectMetadataController({
|
|
19
|
-
messenger: controllerMessenger.getRestricted({
|
|
20
|
-
name: 'SubjectMetadataController',
|
|
21
|
-
allowedActions: [],
|
|
22
|
-
allowedEvents: [],
|
|
23
|
-
}),
|
|
24
|
-
subjectCacheLimit: 100,
|
|
25
|
-
});
|
|
26
|
-
const interfaceController = new snaps_controllers_1.SnapInterfaceController({
|
|
27
|
-
messenger: controllerMessenger.getRestricted({
|
|
28
|
-
name: 'SnapInterfaceController',
|
|
29
|
-
allowedActions: [
|
|
30
|
-
'PhishingController:maybeUpdateState',
|
|
31
|
-
'PhishingController:testOrigin',
|
|
32
|
-
'ApprovalController:hasRequest',
|
|
33
|
-
'ApprovalController:acceptRequest',
|
|
34
|
-
],
|
|
35
|
-
allowedEvents: [],
|
|
36
|
-
}),
|
|
37
|
-
});
|
|
38
|
-
const permissionController = getPermissionController(options);
|
|
39
|
-
return {
|
|
40
|
-
permissionController,
|
|
41
|
-
subjectMetadataController,
|
|
42
|
-
interfaceController,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
exports.getControllers = getControllers;
|
|
46
|
-
/**
|
|
47
|
-
* Get the permission controller for the Snap.
|
|
48
|
-
*
|
|
49
|
-
* @param options - The options.
|
|
50
|
-
* @param options.controllerMessenger - The controller messenger.
|
|
51
|
-
* @param options.options - Miscellaneous options.
|
|
52
|
-
* @returns The permission controller for the Snap.
|
|
53
|
-
*/
|
|
54
|
-
function getPermissionController(options) {
|
|
55
|
-
const { controllerMessenger } = options;
|
|
56
|
-
const permissionSpecifications = (0, methods_1.getPermissionSpecifications)(options);
|
|
57
|
-
return new permission_controller_1.PermissionController({
|
|
58
|
-
messenger: controllerMessenger.getRestricted({
|
|
59
|
-
name: 'PermissionController',
|
|
60
|
-
allowedActions: [
|
|
61
|
-
`ApprovalController:addRequest`,
|
|
62
|
-
`ApprovalController:hasRequest`,
|
|
63
|
-
`ApprovalController:acceptRequest`,
|
|
64
|
-
`ApprovalController:rejectRequest`,
|
|
65
|
-
`SnapController:getPermitted`,
|
|
66
|
-
`SnapController:install`,
|
|
67
|
-
`SubjectMetadataController:getSubjectMetadata`,
|
|
68
|
-
],
|
|
69
|
-
allowedEvents: [],
|
|
70
|
-
}),
|
|
71
|
-
caveatSpecifications: {
|
|
72
|
-
...snaps_rpc_methods_1.caveatSpecifications,
|
|
73
|
-
...snaps_rpc_methods_1.endowmentCaveatSpecifications,
|
|
74
|
-
},
|
|
75
|
-
permissionSpecifications,
|
|
76
|
-
unrestrictedMethods: constants_1.UNRESTRICTED_METHODS,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Register the Snap. This sets up the Snap's permissions and subject metadata.
|
|
81
|
-
*
|
|
82
|
-
* @param snapId - The ID of the Snap to install.
|
|
83
|
-
* @param manifest - The parsed manifest.
|
|
84
|
-
* @param controllers - The controllers for the Snap.
|
|
85
|
-
* @param controllers.permissionController - The permission controller.
|
|
86
|
-
* @param controllers.subjectMetadataController - The subject metadata controller.
|
|
87
|
-
*/
|
|
88
|
-
async function registerSnap(snapId, manifest, { permissionController, subjectMetadataController, }) {
|
|
89
|
-
subjectMetadataController.addSubjectMetadata({
|
|
90
|
-
origin: snapId,
|
|
91
|
-
subjectType: permission_controller_1.SubjectType.Snap,
|
|
92
|
-
});
|
|
93
|
-
const approvedPermissions = (0, snaps_rpc_methods_1.processSnapPermissions)((0, utils_1.getSafeJson)(manifest.initialPermissions));
|
|
94
|
-
permissionController.grantPermissions({
|
|
95
|
-
approvedPermissions,
|
|
96
|
-
subject: { origin: snapId },
|
|
97
|
-
preserveExistingPermissions: false,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
exports.registerSnap = registerSnap;
|
|
101
|
-
//# sourceMappingURL=controllers.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.cjs","sourceRoot":"","sources":["../../../src/internals/simulation/controllers.ts"],"names":[],"mappings":";;;AAOA,2EAIyC;AACzC,mEAAsE;AAMtE,mEAIqC;AAGrC,2CAA8C;AAE9C,iDAAwD;AACxD,uDAA2D;AAiC3D;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,iDAAyB,CAAC;QAC9D,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,2BAA2B;YACjC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,EAAE;SAClB,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,2CAAuB,CAAC;QACtD,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,yBAAyB;YAC/B,cAAc,EAAE;gBACd,qCAAqC;gBACrC,+BAA+B;gBAC/B,+BAA+B;gBAC/B,kCAAkC;aACnC;YACD,aAAa,EAAE,EAAE;SAClB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AA/BD,wCA+BC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IACtE,OAAO,IAAI,4CAAoB,CAAC;QAC9B,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,sBAAsB;YAC5B,cAAc,EAAE;gBACd,+BAA+B;gBAC/B,+BAA+B;gBAC/B,kCAAkC;gBAClC,kCAAkC;gBAClC,6BAA6B;gBAC7B,wBAAwB;gBACxB,8CAA8C;aAC/C;YACD,aAAa,EAAE,EAAE;SAClB,CAAC;QACF,oBAAoB,EAAE;YACpB,GAAG,wCAA0B;YAC7B,GAAG,iDAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,gCAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,mCAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,0CAAsB,EAChD,IAAA,mBAAW,EAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC;AAtBD,oCAsBC","sourcesContent":["import type { ControllerMessenger } from '@metamask/base-controller';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { MiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerMessenger = ControllerMessenger<\n RootControllerAllowedActions,\n any\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: ControllerMessenger<any, any>;\n hooks: MiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: controllerMessenger.getRestricted({\n name: 'SubjectMetadataController',\n allowedActions: [],\n allowedEvents: [],\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: controllerMessenger.getRestricted({\n name: 'SnapInterfaceController',\n allowedActions: [\n 'PhishingController:maybeUpdateState',\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n ],\n allowedEvents: [],\n }),\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n return new PermissionController({\n messenger: controllerMessenger.getRestricted({\n name: 'PermissionController',\n allowedActions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n allowedEvents: [],\n }),\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { ControllerMessenger } from "@metamask/base-controller";
|
|
2
|
-
import type { CaveatSpecificationConstraint, PermissionSpecificationConstraint, PermissionControllerActions, SubjectMetadataControllerActions } from "@metamask/permission-controller";
|
|
3
|
-
import { PermissionController, SubjectMetadataController } from "@metamask/permission-controller";
|
|
4
|
-
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
5
|
-
import type { ExecutionServiceActions, SnapInterfaceControllerActions, SnapInterfaceControllerAllowedActions } from "@metamask/snaps-controllers";
|
|
6
|
-
import type { SnapId } from "@metamask/snaps-sdk";
|
|
7
|
-
import type { SnapManifest } from "@metamask/snaps-utils";
|
|
8
|
-
import type { SimulationOptions } from "./options.cjs";
|
|
9
|
-
import type { MiddlewareHooks } from "./simulation.cjs";
|
|
10
|
-
import type { RunSagaFunction } from "./store/index.cjs";
|
|
11
|
-
export type RootControllerAllowedActions = SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions | PermissionControllerActions | ExecutionServiceActions | SubjectMetadataControllerActions;
|
|
12
|
-
export type RootControllerMessenger = ControllerMessenger<RootControllerAllowedActions, any>;
|
|
13
|
-
export type GetControllersOptions = {
|
|
14
|
-
controllerMessenger: ControllerMessenger<any, any>;
|
|
15
|
-
hooks: MiddlewareHooks;
|
|
16
|
-
runSaga: RunSagaFunction;
|
|
17
|
-
options: SimulationOptions;
|
|
18
|
-
};
|
|
19
|
-
export type Controllers = {
|
|
20
|
-
permissionController: PermissionController<PermissionSpecificationConstraint, CaveatSpecificationConstraint>;
|
|
21
|
-
subjectMetadataController: SubjectMetadataController;
|
|
22
|
-
interfaceController: SnapInterfaceController;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Get the controllers for the Snap.
|
|
26
|
-
*
|
|
27
|
-
* @param options - The options.
|
|
28
|
-
* @returns The controllers for the Snap.
|
|
29
|
-
*/
|
|
30
|
-
export declare function getControllers(options: GetControllersOptions): Controllers;
|
|
31
|
-
/**
|
|
32
|
-
* Register the Snap. This sets up the Snap's permissions and subject metadata.
|
|
33
|
-
*
|
|
34
|
-
* @param snapId - The ID of the Snap to install.
|
|
35
|
-
* @param manifest - The parsed manifest.
|
|
36
|
-
* @param controllers - The controllers for the Snap.
|
|
37
|
-
* @param controllers.permissionController - The permission controller.
|
|
38
|
-
* @param controllers.subjectMetadataController - The subject metadata controller.
|
|
39
|
-
*/
|
|
40
|
-
export declare function registerSnap(snapId: SnapId, manifest: SnapManifest, { permissionController, subjectMetadataController, }: Omit<Controllers, 'interfaceController'>): Promise<void>;
|
|
41
|
-
//# sourceMappingURL=controllers.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.cts","sourceRoot":"","sources":["../../../src/internals/simulation/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAAkC;AACrE,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACtC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CACvD,4BAA4B,EAC5B,GAAG,CACJ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CA+B1E;AAoCD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { ControllerMessenger } from "@metamask/base-controller";
|
|
2
|
-
import type { CaveatSpecificationConstraint, PermissionSpecificationConstraint, PermissionControllerActions, SubjectMetadataControllerActions } from "@metamask/permission-controller";
|
|
3
|
-
import { PermissionController, SubjectMetadataController } from "@metamask/permission-controller";
|
|
4
|
-
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
5
|
-
import type { ExecutionServiceActions, SnapInterfaceControllerActions, SnapInterfaceControllerAllowedActions } from "@metamask/snaps-controllers";
|
|
6
|
-
import type { SnapId } from "@metamask/snaps-sdk";
|
|
7
|
-
import type { SnapManifest } from "@metamask/snaps-utils";
|
|
8
|
-
import type { SimulationOptions } from "./options.mjs";
|
|
9
|
-
import type { MiddlewareHooks } from "./simulation.mjs";
|
|
10
|
-
import type { RunSagaFunction } from "./store/index.mjs";
|
|
11
|
-
export type RootControllerAllowedActions = SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions | PermissionControllerActions | ExecutionServiceActions | SubjectMetadataControllerActions;
|
|
12
|
-
export type RootControllerMessenger = ControllerMessenger<RootControllerAllowedActions, any>;
|
|
13
|
-
export type GetControllersOptions = {
|
|
14
|
-
controllerMessenger: ControllerMessenger<any, any>;
|
|
15
|
-
hooks: MiddlewareHooks;
|
|
16
|
-
runSaga: RunSagaFunction;
|
|
17
|
-
options: SimulationOptions;
|
|
18
|
-
};
|
|
19
|
-
export type Controllers = {
|
|
20
|
-
permissionController: PermissionController<PermissionSpecificationConstraint, CaveatSpecificationConstraint>;
|
|
21
|
-
subjectMetadataController: SubjectMetadataController;
|
|
22
|
-
interfaceController: SnapInterfaceController;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Get the controllers for the Snap.
|
|
26
|
-
*
|
|
27
|
-
* @param options - The options.
|
|
28
|
-
* @returns The controllers for the Snap.
|
|
29
|
-
*/
|
|
30
|
-
export declare function getControllers(options: GetControllersOptions): Controllers;
|
|
31
|
-
/**
|
|
32
|
-
* Register the Snap. This sets up the Snap's permissions and subject metadata.
|
|
33
|
-
*
|
|
34
|
-
* @param snapId - The ID of the Snap to install.
|
|
35
|
-
* @param manifest - The parsed manifest.
|
|
36
|
-
* @param controllers - The controllers for the Snap.
|
|
37
|
-
* @param controllers.permissionController - The permission controller.
|
|
38
|
-
* @param controllers.subjectMetadataController - The subject metadata controller.
|
|
39
|
-
*/
|
|
40
|
-
export declare function registerSnap(snapId: SnapId, manifest: SnapManifest, { permissionController, subjectMetadataController, }: Omit<Controllers, 'interfaceController'>): Promise<void>;
|
|
41
|
-
//# sourceMappingURL=controllers.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.mts","sourceRoot":"","sources":["../../../src/internals/simulation/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAAkC;AACrE,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACtC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CACvD,4BAA4B,EAC5B,GAAG,CACJ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CA+B1E;AAoCD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { PermissionController, SubjectMetadataController, SubjectType } from "@metamask/permission-controller";
|
|
2
|
-
import { SnapInterfaceController } from "@metamask/snaps-controllers";
|
|
3
|
-
import { caveatSpecifications as snapsCaveatsSpecifications, endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications, processSnapPermissions } from "@metamask/snaps-rpc-methods";
|
|
4
|
-
import { getSafeJson } from "@metamask/utils";
|
|
5
|
-
import { getPermissionSpecifications } from "./methods/index.mjs";
|
|
6
|
-
import { UNRESTRICTED_METHODS } from "./methods/constants.mjs";
|
|
7
|
-
/**
|
|
8
|
-
* Get the controllers for the Snap.
|
|
9
|
-
*
|
|
10
|
-
* @param options - The options.
|
|
11
|
-
* @returns The controllers for the Snap.
|
|
12
|
-
*/
|
|
13
|
-
export function getControllers(options) {
|
|
14
|
-
const { controllerMessenger } = options;
|
|
15
|
-
const subjectMetadataController = new SubjectMetadataController({
|
|
16
|
-
messenger: controllerMessenger.getRestricted({
|
|
17
|
-
name: 'SubjectMetadataController',
|
|
18
|
-
allowedActions: [],
|
|
19
|
-
allowedEvents: [],
|
|
20
|
-
}),
|
|
21
|
-
subjectCacheLimit: 100,
|
|
22
|
-
});
|
|
23
|
-
const interfaceController = new SnapInterfaceController({
|
|
24
|
-
messenger: controllerMessenger.getRestricted({
|
|
25
|
-
name: 'SnapInterfaceController',
|
|
26
|
-
allowedActions: [
|
|
27
|
-
'PhishingController:maybeUpdateState',
|
|
28
|
-
'PhishingController:testOrigin',
|
|
29
|
-
'ApprovalController:hasRequest',
|
|
30
|
-
'ApprovalController:acceptRequest',
|
|
31
|
-
],
|
|
32
|
-
allowedEvents: [],
|
|
33
|
-
}),
|
|
34
|
-
});
|
|
35
|
-
const permissionController = getPermissionController(options);
|
|
36
|
-
return {
|
|
37
|
-
permissionController,
|
|
38
|
-
subjectMetadataController,
|
|
39
|
-
interfaceController,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get the permission controller for the Snap.
|
|
44
|
-
*
|
|
45
|
-
* @param options - The options.
|
|
46
|
-
* @param options.controllerMessenger - The controller messenger.
|
|
47
|
-
* @param options.options - Miscellaneous options.
|
|
48
|
-
* @returns The permission controller for the Snap.
|
|
49
|
-
*/
|
|
50
|
-
function getPermissionController(options) {
|
|
51
|
-
const { controllerMessenger } = options;
|
|
52
|
-
const permissionSpecifications = getPermissionSpecifications(options);
|
|
53
|
-
return new PermissionController({
|
|
54
|
-
messenger: controllerMessenger.getRestricted({
|
|
55
|
-
name: 'PermissionController',
|
|
56
|
-
allowedActions: [
|
|
57
|
-
`ApprovalController:addRequest`,
|
|
58
|
-
`ApprovalController:hasRequest`,
|
|
59
|
-
`ApprovalController:acceptRequest`,
|
|
60
|
-
`ApprovalController:rejectRequest`,
|
|
61
|
-
`SnapController:getPermitted`,
|
|
62
|
-
`SnapController:install`,
|
|
63
|
-
`SubjectMetadataController:getSubjectMetadata`,
|
|
64
|
-
],
|
|
65
|
-
allowedEvents: [],
|
|
66
|
-
}),
|
|
67
|
-
caveatSpecifications: {
|
|
68
|
-
...snapsCaveatsSpecifications,
|
|
69
|
-
...snapsEndowmentCaveatSpecifications,
|
|
70
|
-
},
|
|
71
|
-
permissionSpecifications,
|
|
72
|
-
unrestrictedMethods: UNRESTRICTED_METHODS,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Register the Snap. This sets up the Snap's permissions and subject metadata.
|
|
77
|
-
*
|
|
78
|
-
* @param snapId - The ID of the Snap to install.
|
|
79
|
-
* @param manifest - The parsed manifest.
|
|
80
|
-
* @param controllers - The controllers for the Snap.
|
|
81
|
-
* @param controllers.permissionController - The permission controller.
|
|
82
|
-
* @param controllers.subjectMetadataController - The subject metadata controller.
|
|
83
|
-
*/
|
|
84
|
-
export async function registerSnap(snapId, manifest, { permissionController, subjectMetadataController, }) {
|
|
85
|
-
subjectMetadataController.addSubjectMetadata({
|
|
86
|
-
origin: snapId,
|
|
87
|
-
subjectType: SubjectType.Snap,
|
|
88
|
-
});
|
|
89
|
-
const approvedPermissions = processSnapPermissions(getSafeJson(manifest.initialPermissions));
|
|
90
|
-
permissionController.grantPermissions({
|
|
91
|
-
approvedPermissions,
|
|
92
|
-
subject: { origin: snapId },
|
|
93
|
-
preserveExistingPermissions: false,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=controllers.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.mjs","sourceRoot":"","sources":["../../../src/internals/simulation/controllers.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,WAAW,EACZ,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AAMtE,OAAO,EACL,oBAAoB,IAAI,0BAA0B,EAClD,6BAA6B,IAAI,kCAAkC,EACnE,sBAAsB,EACvB,oCAAoC;AAGrC,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,OAAO,EAAE,2BAA2B,EAAE,4BAAkB;AACxD,OAAO,EAAE,oBAAoB,EAAE,gCAA4B;AAiC3D;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC;QAC9D,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,2BAA2B;YACjC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,EAAE;SAClB,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,CAAC;QACtD,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,yBAAyB;YAC/B,cAAc,EAAE;gBACd,qCAAqC;gBACrC,+BAA+B;gBAC/B,+BAA+B;gBAC/B,kCAAkC;aACnC;YACD,aAAa,EAAE,EAAE;SAClB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,IAAI,oBAAoB,CAAC;QAC9B,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,sBAAsB;YAC5B,cAAc,EAAE;gBACd,+BAA+B;gBAC/B,+BAA+B;gBAC/B,kCAAkC;gBAClC,kCAAkC;gBAClC,6BAA6B;gBAC7B,wBAAwB;gBACxB,8CAA8C;aAC/C;YACD,aAAa,EAAE,EAAE;SAClB,CAAC;QACF,oBAAoB,EAAE;YACpB,GAAG,0BAA0B;YAC7B,GAAG,kCAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,oBAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,WAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { ControllerMessenger } from '@metamask/base-controller';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { MiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerMessenger = ControllerMessenger<\n RootControllerAllowedActions,\n any\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: ControllerMessenger<any, any>;\n hooks: MiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: controllerMessenger.getRestricted({\n name: 'SubjectMetadataController',\n allowedActions: [],\n allowedEvents: [],\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: controllerMessenger.getRestricted({\n name: 'SnapInterfaceController',\n allowedActions: [\n 'PhishingController:maybeUpdateState',\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n ],\n allowedEvents: [],\n }),\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n return new PermissionController({\n messenger: controllerMessenger.getRestricted({\n name: 'PermissionController',\n allowedActions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n allowedEvents: [],\n }),\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
|