@metamask/snaps-simulation 4.1.2 → 4.1.4
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 +21 -2
- package/dist/controllers.cjs.map +1 -1
- package/dist/controllers.d.cts +2 -2
- package/dist/controllers.d.cts.map +1 -1
- package/dist/controllers.d.mts +2 -2
- package/dist/controllers.d.mts.map +1 -1
- package/dist/controllers.mjs.map +1 -1
- package/dist/methods/hooks/index.cjs +0 -2
- package/dist/methods/hooks/index.cjs.map +1 -1
- package/dist/methods/hooks/index.d.cts +0 -2
- package/dist/methods/hooks/index.d.cts.map +1 -1
- package/dist/methods/hooks/index.d.mts +0 -2
- package/dist/methods/hooks/index.d.mts.map +1 -1
- package/dist/methods/hooks/index.mjs +0 -2
- package/dist/methods/hooks/index.mjs.map +1 -1
- package/dist/methods/hooks/state.cjs +1 -1
- package/dist/methods/hooks/state.cjs.map +1 -1
- package/dist/methods/hooks/state.d.cts +1 -1
- package/dist/methods/hooks/state.d.cts.map +1 -1
- package/dist/methods/hooks/state.d.mts +1 -1
- package/dist/methods/hooks/state.d.mts.map +1 -1
- package/dist/methods/hooks/state.mjs +1 -1
- package/dist/methods/hooks/state.mjs.map +1 -1
- package/dist/methods/specifications.cjs +5 -14
- package/dist/methods/specifications.cjs.map +1 -1
- package/dist/methods/specifications.d.cts +7 -17
- package/dist/methods/specifications.d.cts.map +1 -1
- package/dist/methods/specifications.d.mts +7 -17
- package/dist/methods/specifications.d.mts.map +1 -1
- package/dist/methods/specifications.mjs +6 -15
- package/dist/methods/specifications.mjs.map +1 -1
- package/dist/middleware/engine.cjs +8 -4
- package/dist/middleware/engine.cjs.map +1 -1
- package/dist/middleware/engine.d.cts +7 -6
- package/dist/middleware/engine.d.cts.map +1 -1
- package/dist/middleware/engine.d.mts +7 -6
- package/dist/middleware/engine.d.mts.map +1 -1
- package/dist/middleware/engine.mjs +9 -5
- package/dist/middleware/engine.mjs.map +1 -1
- package/dist/simulation.cjs +82 -27
- package/dist/simulation.cjs.map +1 -1
- package/dist/simulation.d.cts +18 -114
- package/dist/simulation.d.cts.map +1 -1
- package/dist/simulation.d.mts +18 -114
- package/dist/simulation.d.mts.map +1 -1
- package/dist/simulation.mjs +83 -28
- package/dist/simulation.mjs.map +1 -1
- package/package.json +12 -12
- package/dist/methods/hooks/get-entropy-sources.cjs +0 -30
- package/dist/methods/hooks/get-entropy-sources.cjs.map +0 -1
- package/dist/methods/hooks/get-entropy-sources.d.cts +0 -14
- package/dist/methods/hooks/get-entropy-sources.d.cts.map +0 -1
- package/dist/methods/hooks/get-entropy-sources.d.mts +0 -14
- package/dist/methods/hooks/get-entropy-sources.d.mts.map +0 -1
- package/dist/methods/hooks/get-entropy-sources.mjs +0 -26
- package/dist/methods/hooks/get-entropy-sources.mjs.map +0 -1
- package/dist/methods/hooks/get-mnemonic-seed.cjs +0 -29
- package/dist/methods/hooks/get-mnemonic-seed.cjs.map +0 -1
- package/dist/methods/hooks/get-mnemonic-seed.d.cts +0 -9
- package/dist/methods/hooks/get-mnemonic-seed.d.cts.map +0 -1
- package/dist/methods/hooks/get-mnemonic-seed.d.mts +0 -9
- package/dist/methods/hooks/get-mnemonic-seed.d.mts.map +0 -1
- package/dist/methods/hooks/get-mnemonic-seed.mjs +0 -25
- package/dist/methods/hooks/get-mnemonic-seed.mjs.map +0 -1
- package/dist/methods/hooks/interface.cjs +0 -34
- package/dist/methods/hooks/interface.cjs.map +0 -1
- package/dist/methods/hooks/interface.d.cts +0 -24
- package/dist/methods/hooks/interface.d.cts.map +0 -1
- package/dist/methods/hooks/interface.d.mts +0 -24
- package/dist/methods/hooks/interface.d.mts.map +0 -1
- package/dist/methods/hooks/interface.mjs +0 -28
- package/dist/methods/hooks/interface.mjs.map +0 -1
|
@@ -2,7 +2,7 @@ import { caip25EndowmentBuilder } from "@metamask/chain-agnostic-permission";
|
|
|
2
2
|
import { endowmentPermissionBuilders, buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications } from "@metamask/snaps-rpc-methods";
|
|
3
3
|
import { DEFAULT_ENDOWMENTS } from "@metamask/snaps-utils";
|
|
4
4
|
import { EXCLUDED_SNAP_ENDOWMENTS, EXCLUDED_SNAP_PERMISSIONS } from "./constants.mjs";
|
|
5
|
-
import { getGetPreferencesMethodImplementation
|
|
5
|
+
import { getGetPreferencesMethodImplementation } from "./hooks/index.mjs";
|
|
6
6
|
/**
|
|
7
7
|
* Get a function which resolves with the specified result.
|
|
8
8
|
*
|
|
@@ -28,34 +28,25 @@ export function asyncResolve(result) {
|
|
|
28
28
|
* @param options - The options.
|
|
29
29
|
* @param options.controllerMessenger - The controller messenger.
|
|
30
30
|
* @param options.hooks - The hooks.
|
|
31
|
-
* @param options.runSaga - The function to run a saga outside the usual Redux
|
|
32
|
-
* flow.
|
|
33
31
|
* @param options.options - The simulation options.
|
|
34
32
|
* @returns The permission specifications for the Snap.
|
|
35
33
|
*/
|
|
36
|
-
export function getPermissionSpecifications({ controllerMessenger, hooks,
|
|
34
|
+
export function getPermissionSpecifications({ controllerMessenger, hooks, options, }) {
|
|
35
|
+
const { getClientCryptography } = hooks;
|
|
37
36
|
return {
|
|
38
37
|
[caip25EndowmentBuilder.targetName]: caip25EndowmentBuilder.specificationBuilder({}),
|
|
39
38
|
...buildSnapEndowmentSpecifications(EXCLUDED_SNAP_ENDOWMENTS),
|
|
40
39
|
...buildSnapRestrictedMethodSpecifications(EXCLUDED_SNAP_PERMISSIONS, {
|
|
41
40
|
// Shared hooks.
|
|
42
|
-
|
|
41
|
+
getClientCryptography,
|
|
43
42
|
// Snaps-specific hooks.
|
|
44
|
-
clearSnapState: getClearSnapStateMethodImplementation(runSaga),
|
|
45
43
|
getPreferences: getGetPreferencesMethodImplementation(options),
|
|
46
|
-
getSnapState: getGetSnapStateMethodImplementation(runSaga),
|
|
47
44
|
getUnlockPromise: asyncResolve(true),
|
|
45
|
+
getSnapKeyring: asyncResolve(null),
|
|
48
46
|
// TODO: Allow the user to specify the result of this function.
|
|
49
47
|
isOnPhishingList: resolve(false),
|
|
50
48
|
maybeUpdatePhishingList: asyncResolve(),
|
|
51
|
-
|
|
52
|
-
showInAppNotification: getShowInAppNotificationImplementation(runSaga),
|
|
53
|
-
showNativeNotification: getShowNativeNotificationImplementation(runSaga),
|
|
54
|
-
updateSnapState: getUpdateSnapStateMethodImplementation(runSaga),
|
|
55
|
-
createInterface: getCreateInterfaceImplementation(controllerMessenger),
|
|
56
|
-
getInterface: getGetInterfaceImplementation(controllerMessenger),
|
|
57
|
-
setInterfaceDisplayed: getSetInterfaceDisplayedImplementation(controllerMessenger),
|
|
58
|
-
}),
|
|
49
|
+
}, controllerMessenger),
|
|
59
50
|
};
|
|
60
51
|
}
|
|
61
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specifications.mjs","sourceRoot":"","sources":["../../src/methods/specifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,4CAA4C;
|
|
1
|
+
{"version":3,"file":"specifications.mjs","sourceRoot":"","sources":["../../src/methods/specifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,4CAA4C;AAQ7E,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,uCAAuC,EACxC,oCAAoC;AAErC,OAAO,EAAE,kBAAkB,EAAE,8BAA8B;AAE3D,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EAC1B,wBAAoB;AACrB,OAAO,EAAE,qCAAqC,EAAE,0BAAgB;AAoBhE;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,MAAe;IACrC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAO,MAAa;IAC9C,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,mBAAmB,EACnB,KAAK,EACL,OAAO,GAC4B;IACnC,MAAM,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IACxC,OAAO;QACL,CAAC,sBAAsB,CAAC,UAAU,CAAC,EACjC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACjD,GAAG,gCAAgC,CAAC,wBAAwB,CAAC;QAC7D,GAAG,uCAAuC,CACxC,yBAAyB,EACzB;YACE,gBAAgB;YAChB,qBAAqB;YAErB,wBAAwB;YACxB,cAAc,EAAE,qCAAqC,CAAC,OAAO,CAAC;YAC9D,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,YAAY,CAAC,IAAI,CAAC;YAElC,+DAA+D;YAC/D,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC;YAEhC,uBAAuB,EAAE,YAAY,EAAE;SACxC,EACD,mBAAgD,CACjD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,oBAAiD,EACjD,MAAc;IAEd,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAEzE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;QAClC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;QAClC,IAAI,oBAAoB,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,aAAa,CACzD,MAAM,EACN,cAAc,CACf,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,WAAW,CAAC,MAAM,CAAC,UAAsB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAExB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import { caip25EndowmentBuilder } from '@metamask/chain-agnostic-permission';\nimport type { CryptographicFunctions } from '@metamask/key-tree';\nimport type {\n GenericPermissionController,\n PermissionSpecificationConstraint,\n PermissionSpecificationMap,\n} from '@metamask/permission-controller';\nimport type { RestrictedMethodMessenger } from '@metamask/snaps-rpc-methods';\nimport {\n endowmentPermissionBuilders,\n buildSnapEndowmentSpecifications,\n buildSnapRestrictedMethodSpecifications,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { DEFAULT_ENDOWMENTS } from '@metamask/snaps-utils';\n\nimport {\n EXCLUDED_SNAP_ENDOWMENTS,\n EXCLUDED_SNAP_PERMISSIONS,\n} from './constants';\nimport { getGetPreferencesMethodImplementation } from './hooks';\nimport type { RootControllerMessenger } from '../controllers';\nimport type { SimulationOptions } from '../options';\n\nexport type PermissionSpecificationsHooks = {\n /**\n * Get the cryptographic functions to use for the client. This may return an\n * empty object to fall back to the default cryptographic functions.\n *\n * @returns The cryptographic functions to use for the client.\n */\n getClientCryptography: () => CryptographicFunctions;\n};\n\nexport type GetPermissionSpecificationsOptions = {\n controllerMessenger: RootControllerMessenger;\n hooks: PermissionSpecificationsHooks;\n options: SimulationOptions;\n};\n\n/**\n * Get a function which resolves with the specified result.\n *\n * @param result - The result to return.\n * @returns The function implementation.\n */\nexport function resolve(result: unknown) {\n return () => result;\n}\n\n/**\n * Get a function which resolves with the specified result.\n *\n * @param result - The result to return. If not specified, the function will\n * resolve with `undefined`.\n * @returns The function implementation.\n */\nexport function asyncResolve<Type>(result?: Type) {\n return async () => result;\n}\n\n/**\n * Get the permission specifications for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.hooks - The hooks.\n * @param options.options - The simulation options.\n * @returns The permission specifications for the Snap.\n */\nexport function getPermissionSpecifications({\n controllerMessenger,\n hooks,\n options,\n}: GetPermissionSpecificationsOptions): PermissionSpecificationMap<PermissionSpecificationConstraint> {\n const { getClientCryptography } = hooks;\n return {\n [caip25EndowmentBuilder.targetName]:\n caip25EndowmentBuilder.specificationBuilder({}),\n ...buildSnapEndowmentSpecifications(EXCLUDED_SNAP_ENDOWMENTS),\n ...buildSnapRestrictedMethodSpecifications(\n EXCLUDED_SNAP_PERMISSIONS,\n {\n // Shared hooks.\n getClientCryptography,\n\n // Snaps-specific hooks.\n getPreferences: getGetPreferencesMethodImplementation(options),\n getUnlockPromise: asyncResolve(true),\n getSnapKeyring: asyncResolve(null),\n\n // TODO: Allow the user to specify the result of this function.\n isOnPhishingList: resolve(false),\n\n maybeUpdatePhishingList: asyncResolve(),\n },\n controllerMessenger as RestrictedMethodMessenger,\n ),\n };\n}\n\n/**\n * Get the endowments for the Snap.\n *\n * @param permissionController - The permission controller.\n * @param snapId - The ID of the Snap.\n * @returns The endowments for the Snap.\n */\nexport async function getEndowments(\n permissionController: GenericPermissionController,\n snapId: SnapId,\n) {\n const allEndowments = await Object.keys(endowmentPermissionBuilders).reduce<\n Promise<string[]>\n >(async (promise, permissionName) => {\n const accumulator = await promise;\n if (permissionController.hasPermission(snapId, permissionName)) {\n const endowments = await permissionController.getEndowments(\n snapId,\n permissionName,\n );\n\n if (endowments) {\n return accumulator.concat(endowments as string[]);\n }\n }\n\n return accumulator;\n }, Promise.resolve([]));\n\n return [...new Set([...DEFAULT_ENDOWMENTS, ...allEndowments])];\n}\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createJsonRpcEngine = void 0;
|
|
4
4
|
const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
|
|
5
|
+
const permission_controller_1 = require("@metamask/permission-controller");
|
|
5
6
|
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
6
7
|
const internal_methods_1 = require("./internal-methods/index.cjs");
|
|
7
8
|
const mock_1 = require("./mock.cjs");
|
|
@@ -14,23 +15,26 @@ const provider_1 = require("./provider.cjs");
|
|
|
14
15
|
* well as Snap-specific requests.
|
|
15
16
|
*
|
|
16
17
|
* @param options - The options to use when creating the engine.
|
|
18
|
+
* @param options.snapId - The Snap ID.
|
|
19
|
+
* @param options.messenger - The messenger.
|
|
17
20
|
* @param options.store - The Redux store to use.
|
|
18
21
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
19
22
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
20
|
-
* @param options.permissionMiddleware - The permission middleware to use.
|
|
21
23
|
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
22
24
|
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
23
25
|
* @returns A JSON-RPC engine.
|
|
24
26
|
*/
|
|
25
|
-
function createJsonRpcEngine({ store, restrictedHooks, permittedHooks,
|
|
27
|
+
function createJsonRpcEngine({ snapId, messenger, store, restrictedHooks, permittedHooks, multichainHooks, isMultichain, }) {
|
|
26
28
|
const engine = new json_rpc_engine_1.JsonRpcEngine();
|
|
29
|
+
engine.push((0, json_rpc_engine_1.createOriginMiddleware)(snapId));
|
|
27
30
|
engine.push((0, multichain_1.createMultichainMiddleware)(isMultichain, multichainHooks));
|
|
28
31
|
engine.push((0, mock_1.createMockMiddleware)(store));
|
|
29
32
|
// The hooks here do not match the hooks used by the clients, so this
|
|
30
33
|
// middleware should not be used outside of the simulation environment.
|
|
31
34
|
engine.push((0, internal_methods_1.createInternalMethodsMiddleware)(restrictedHooks));
|
|
32
|
-
|
|
33
|
-
engine.push(
|
|
35
|
+
// @ts-expect-error Hooks type mismatch.
|
|
36
|
+
engine.push((0, snaps_rpc_methods_1.createSnapsMethodMiddleware)(true, permittedHooks, messenger));
|
|
37
|
+
engine.push((0, permission_controller_1.createPermissionMiddleware)({ messenger, origin: snapId }));
|
|
34
38
|
engine.push((0, provider_1.createProviderMiddleware)(store));
|
|
35
39
|
return engine;
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.cjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"engine.cjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":";;;AAAA,+DAGmC;AACnC,2EAA6E;AAC7E,mEAA0E;AAG1E,mEAAqE;AACrE,qCAA8C;AAC9C,uDAA0D;AAC1D,6CAAsD;AAoBtD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,KAAK,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,GACe;IAC3B,MAAM,MAAM,GAAG,IAAI,+BAAa,EAAE,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,IAAA,wCAAsB,EAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,MAAM,CAAC,IAAI,CAAC,IAAA,uCAA0B,EAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvE,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,IAAA,kDAA+B,EAAC,eAAe,CAAC,CAAC,CAAC;IAE9D,wCAAwC;IACxC,MAAM,CAAC,IAAI,CAAC,IAAA,+CAA2B,EAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1E,MAAM,CAAC,IAAI,CAAC,IAAA,kDAA0B,EAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,IAAA,mCAAwB,EAAC,KAAK,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AA5BD,kDA4BC","sourcesContent":["import {\n JsonRpcEngine,\n createOriginMiddleware,\n} from '@metamask/json-rpc-engine';\nimport { createPermissionMiddleware } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { createMultichainMiddleware } from './multichain';\nimport { createProviderMiddleware } from './provider';\nimport type { RootControllerMessenger } from '../controllers';\nimport type {\n MultichainMiddlewareHooks,\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n snapId: SnapId;\n messenger: RootControllerMessenger;\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n multichainHooks: MultichainMiddlewareHooks;\n endpoint?: string;\n isMultichain: boolean;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.snapId - The Snap ID.\n * @param options.messenger - The messenger.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.multichainHooks - Hooks used by the multichain middleware.\n * @param options.isMultichain - Whether the engine is used for multichain.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n snapId,\n messenger,\n store,\n restrictedHooks,\n permittedHooks,\n multichainHooks,\n isMultichain,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n\n engine.push(createOriginMiddleware(snapId));\n\n engine.push(createMultichainMiddleware(isMultichain, multichainHooks));\n\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n\n // @ts-expect-error Hooks type mismatch.\n engine.push(createSnapsMethodMiddleware(true, permittedHooks, messenger));\n\n engine.push(createPermissionMiddleware({ messenger, origin: snapId }));\n engine.push(createProviderMiddleware(store));\n\n return engine;\n}\n"]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
1
|
import { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
2
|
+
import type { SnapId } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { RootControllerMessenger } from "../controllers.cjs";
|
|
5
4
|
import type { MultichainMiddlewareHooks, PermittedMiddlewareHooks, RestrictedMiddlewareHooks } from "../simulation.cjs";
|
|
6
5
|
import type { Store } from "../store/index.cjs";
|
|
7
6
|
export type CreateJsonRpcEngineOptions = {
|
|
7
|
+
snapId: SnapId;
|
|
8
|
+
messenger: RootControllerMessenger;
|
|
8
9
|
store: Store;
|
|
9
10
|
restrictedHooks: RestrictedMiddlewareHooks;
|
|
10
11
|
permittedHooks: PermittedMiddlewareHooks;
|
|
11
12
|
multichainHooks: MultichainMiddlewareHooks;
|
|
12
|
-
permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;
|
|
13
13
|
endpoint?: string;
|
|
14
14
|
isMultichain: boolean;
|
|
15
15
|
};
|
|
@@ -20,13 +20,14 @@ export type CreateJsonRpcEngineOptions = {
|
|
|
20
20
|
* well as Snap-specific requests.
|
|
21
21
|
*
|
|
22
22
|
* @param options - The options to use when creating the engine.
|
|
23
|
+
* @param options.snapId - The Snap ID.
|
|
24
|
+
* @param options.messenger - The messenger.
|
|
23
25
|
* @param options.store - The Redux store to use.
|
|
24
26
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
25
27
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
26
|
-
* @param options.permissionMiddleware - The permission middleware to use.
|
|
27
28
|
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
28
29
|
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
29
30
|
* @returns A JSON-RPC engine.
|
|
30
31
|
*/
|
|
31
|
-
export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks,
|
|
32
|
+
export declare function createJsonRpcEngine({ snapId, messenger, store, restrictedHooks, permittedHooks, multichainHooks, isMultichain, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
|
|
32
33
|
//# sourceMappingURL=engine.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.cts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"engine.d.cts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,kCAAkC;AAGnC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAMlD,OAAO,KAAK,EAAE,uBAAuB,EAAE,2BAAuB;AAC9D,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,uBAAuB,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,eAAe,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,KAAK,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,GACb,EAAE,0BAA0B,iBAoB5B"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
1
|
import { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
2
|
+
import type { SnapId } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { RootControllerMessenger } from "../controllers.mjs";
|
|
5
4
|
import type { MultichainMiddlewareHooks, PermittedMiddlewareHooks, RestrictedMiddlewareHooks } from "../simulation.mjs";
|
|
6
5
|
import type { Store } from "../store/index.mjs";
|
|
7
6
|
export type CreateJsonRpcEngineOptions = {
|
|
7
|
+
snapId: SnapId;
|
|
8
|
+
messenger: RootControllerMessenger;
|
|
8
9
|
store: Store;
|
|
9
10
|
restrictedHooks: RestrictedMiddlewareHooks;
|
|
10
11
|
permittedHooks: PermittedMiddlewareHooks;
|
|
11
12
|
multichainHooks: MultichainMiddlewareHooks;
|
|
12
|
-
permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;
|
|
13
13
|
endpoint?: string;
|
|
14
14
|
isMultichain: boolean;
|
|
15
15
|
};
|
|
@@ -20,13 +20,14 @@ export type CreateJsonRpcEngineOptions = {
|
|
|
20
20
|
* well as Snap-specific requests.
|
|
21
21
|
*
|
|
22
22
|
* @param options - The options to use when creating the engine.
|
|
23
|
+
* @param options.snapId - The Snap ID.
|
|
24
|
+
* @param options.messenger - The messenger.
|
|
23
25
|
* @param options.store - The Redux store to use.
|
|
24
26
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
25
27
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
26
|
-
* @param options.permissionMiddleware - The permission middleware to use.
|
|
27
28
|
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
28
29
|
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
29
30
|
* @returns A JSON-RPC engine.
|
|
30
31
|
*/
|
|
31
|
-
export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks,
|
|
32
|
+
export declare function createJsonRpcEngine({ snapId, messenger, store, restrictedHooks, permittedHooks, multichainHooks, isMultichain, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
|
|
32
33
|
//# sourceMappingURL=engine.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,kCAAkC;AAGnC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAMlD,OAAO,KAAK,EAAE,uBAAuB,EAAE,2BAAuB;AAC9D,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,uBAAuB,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,eAAe,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,KAAK,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,GACb,EAAE,0BAA0B,iBAoB5B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
1
|
+
import { JsonRpcEngine, createOriginMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
+
import { createPermissionMiddleware } from "@metamask/permission-controller";
|
|
2
3
|
import { createSnapsMethodMiddleware } from "@metamask/snaps-rpc-methods";
|
|
3
4
|
import { createInternalMethodsMiddleware } from "./internal-methods/index.mjs";
|
|
4
5
|
import { createMockMiddleware } from "./mock.mjs";
|
|
@@ -11,23 +12,26 @@ import { createProviderMiddleware } from "./provider.mjs";
|
|
|
11
12
|
* well as Snap-specific requests.
|
|
12
13
|
*
|
|
13
14
|
* @param options - The options to use when creating the engine.
|
|
15
|
+
* @param options.snapId - The Snap ID.
|
|
16
|
+
* @param options.messenger - The messenger.
|
|
14
17
|
* @param options.store - The Redux store to use.
|
|
15
18
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
16
19
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
17
|
-
* @param options.permissionMiddleware - The permission middleware to use.
|
|
18
20
|
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
19
21
|
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
20
22
|
* @returns A JSON-RPC engine.
|
|
21
23
|
*/
|
|
22
|
-
export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks,
|
|
24
|
+
export function createJsonRpcEngine({ snapId, messenger, store, restrictedHooks, permittedHooks, multichainHooks, isMultichain, }) {
|
|
23
25
|
const engine = new JsonRpcEngine();
|
|
26
|
+
engine.push(createOriginMiddleware(snapId));
|
|
24
27
|
engine.push(createMultichainMiddleware(isMultichain, multichainHooks));
|
|
25
28
|
engine.push(createMockMiddleware(store));
|
|
26
29
|
// The hooks here do not match the hooks used by the clients, so this
|
|
27
30
|
// middleware should not be used outside of the simulation environment.
|
|
28
31
|
engine.push(createInternalMethodsMiddleware(restrictedHooks));
|
|
29
|
-
|
|
30
|
-
engine.push(
|
|
32
|
+
// @ts-expect-error Hooks type mismatch.
|
|
33
|
+
engine.push(createSnapsMethodMiddleware(true, permittedHooks, messenger));
|
|
34
|
+
engine.push(createPermissionMiddleware({ messenger, origin: snapId }));
|
|
31
35
|
engine.push(createProviderMiddleware(store));
|
|
32
36
|
return engine;
|
|
33
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,sBAAsB,EACvB,kCAAkC;AACnC,OAAO,EAAE,0BAA0B,EAAE,wCAAwC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,oCAAoC;AAG1E,OAAO,EAAE,+BAA+B,EAAE,qCAA2B;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAe;AAC9C,OAAO,EAAE,0BAA0B,EAAE,+BAAqB;AAC1D,OAAO,EAAE,wBAAwB,EAAE,uBAAmB;AAoBtD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,KAAK,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,GACe;IAC3B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC;IAE9D,wCAAwC;IACxC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1E,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n JsonRpcEngine,\n createOriginMiddleware,\n} from '@metamask/json-rpc-engine';\nimport { createPermissionMiddleware } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { createMultichainMiddleware } from './multichain';\nimport { createProviderMiddleware } from './provider';\nimport type { RootControllerMessenger } from '../controllers';\nimport type {\n MultichainMiddlewareHooks,\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n snapId: SnapId;\n messenger: RootControllerMessenger;\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n multichainHooks: MultichainMiddlewareHooks;\n endpoint?: string;\n isMultichain: boolean;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.snapId - The Snap ID.\n * @param options.messenger - The messenger.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.multichainHooks - Hooks used by the multichain middleware.\n * @param options.isMultichain - Whether the engine is used for multichain.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n snapId,\n messenger,\n store,\n restrictedHooks,\n permittedHooks,\n multichainHooks,\n isMultichain,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n\n engine.push(createOriginMiddleware(snapId));\n\n engine.push(createMultichainMiddleware(isMultichain, multichainHooks));\n\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n\n // @ts-expect-error Hooks type mismatch.\n engine.push(createSnapsMethodMiddleware(true, permittedHooks, messenger));\n\n engine.push(createPermissionMiddleware({ messenger, origin: snapId }));\n engine.push(createProviderMiddleware(store));\n\n return engine;\n}\n"]}
|
package/dist/simulation.cjs
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerActions = exports.getMultichainHooks = exports.getPermittedHooks = exports.getRestrictedHooks = exports.installSnap = void 0;
|
|
4
4
|
const json_rpc_middleware_stream_1 = require("@metamask/json-rpc-middleware-stream");
|
|
5
|
+
const key_tree_1 = require("@metamask/key-tree");
|
|
5
6
|
const messenger_1 = require("@metamask/messenger");
|
|
6
7
|
const permission_controller_1 = require("@metamask/permission-controller");
|
|
7
8
|
const node_1 = require("@metamask/snaps-controllers/node");
|
|
8
9
|
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
9
10
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
11
|
+
const utils_1 = require("@metamask/utils");
|
|
10
12
|
const readable_stream_1 = require("readable-stream");
|
|
11
13
|
const effects_1 = require("redux-saga/effects");
|
|
12
14
|
const controllers_1 = require("./controllers.cjs");
|
|
@@ -15,7 +17,6 @@ const helpers_1 = require("./helpers.cjs");
|
|
|
15
17
|
const interface_1 = require("./interface.cjs");
|
|
16
18
|
const methods_1 = require("./methods/index.cjs");
|
|
17
19
|
const hooks_1 = require("./methods/hooks/index.cjs");
|
|
18
|
-
const get_mnemonic_seed_1 = require("./methods/hooks/get-mnemonic-seed.cjs");
|
|
19
20
|
const middleware_1 = require("./middleware/index.cjs");
|
|
20
21
|
const options_1 = require("./options.cjs");
|
|
21
22
|
const store_1 = require("./store/index.cjs");
|
|
@@ -47,10 +48,10 @@ async function installSnap(snapId, { executionService, executionServiceOptions,
|
|
|
47
48
|
const controllerMessenger = new messenger_1.Messenger({
|
|
48
49
|
namespace: messenger_1.MOCK_ANY_NAMESPACE,
|
|
49
50
|
});
|
|
50
|
-
registerActions(controllerMessenger, runSaga, options, snapId);
|
|
51
|
+
registerActions(controllerMessenger, runSaga, options, snapId, snapFiles.auxiliaryFiles);
|
|
51
52
|
// Set up controllers and JSON-RPC stack.
|
|
52
53
|
const restrictedHooks = getRestrictedHooks(options, store, runSaga);
|
|
53
|
-
const permittedHooks = getPermittedHooks(
|
|
54
|
+
const permittedHooks = getPermittedHooks(runSaga);
|
|
54
55
|
const multichainHooks = getMultichainHooks(snapId, options, controllerMessenger);
|
|
55
56
|
const { subjectMetadataController, permissionController } = (0, controllers_1.getControllers)({
|
|
56
57
|
controllerMessenger,
|
|
@@ -58,22 +59,21 @@ async function installSnap(snapId, { executionService, executionServiceOptions,
|
|
|
58
59
|
runSaga,
|
|
59
60
|
options,
|
|
60
61
|
});
|
|
61
|
-
const permissionMiddleware = permissionController.createPermissionMiddleware({
|
|
62
|
-
origin: snapId,
|
|
63
|
-
});
|
|
64
62
|
const engine = (0, middleware_1.createJsonRpcEngine)({
|
|
63
|
+
snapId,
|
|
64
|
+
messenger: controllerMessenger,
|
|
65
65
|
store,
|
|
66
66
|
restrictedHooks,
|
|
67
67
|
permittedHooks,
|
|
68
|
-
permissionMiddleware,
|
|
69
68
|
multichainHooks,
|
|
70
69
|
isMultichain: false,
|
|
71
70
|
});
|
|
72
71
|
const multichainEngine = (0, middleware_1.createJsonRpcEngine)({
|
|
72
|
+
snapId,
|
|
73
|
+
messenger: controllerMessenger,
|
|
73
74
|
store,
|
|
74
75
|
restrictedHooks,
|
|
75
76
|
permittedHooks,
|
|
76
|
-
permissionMiddleware,
|
|
77
77
|
multichainHooks,
|
|
78
78
|
isMultichain: true,
|
|
79
79
|
});
|
|
@@ -149,7 +149,6 @@ exports.installSnap = installSnap;
|
|
|
149
149
|
function getRestrictedHooks(options, store, runSaga) {
|
|
150
150
|
return {
|
|
151
151
|
getMnemonic: (0, hooks_1.getGetMnemonicImplementation)(options.secretRecoveryPhrase),
|
|
152
|
-
getMnemonicSeed: (0, get_mnemonic_seed_1.getGetMnemonicSeedImplementation)(options.secretRecoveryPhrase),
|
|
153
152
|
getIsLocked: () => false,
|
|
154
153
|
getClientCryptography: () => ({}),
|
|
155
154
|
getSnap: (0, hooks_1.getGetSnapImplementation)(true),
|
|
@@ -161,30 +160,15 @@ exports.getRestrictedHooks = getRestrictedHooks;
|
|
|
161
160
|
/**
|
|
162
161
|
* Get the permitted hooks for the simulation.
|
|
163
162
|
*
|
|
164
|
-
* @param snapId - The ID of the Snap.
|
|
165
|
-
* @param snapFiles - The fetched Snap files.
|
|
166
|
-
* @param controllerMessenger - The controller messenger.
|
|
167
163
|
* @param runSaga - The run saga function.
|
|
168
164
|
* @returns The permitted hooks for the simulation.
|
|
169
165
|
*/
|
|
170
|
-
function getPermittedHooks(
|
|
166
|
+
function getPermittedHooks(runSaga) {
|
|
171
167
|
return {
|
|
172
|
-
hasPermission: () => true,
|
|
173
168
|
getUnlockPromise: (0, methods_1.asyncResolve)(),
|
|
174
|
-
getIsLocked: () => false,
|
|
175
169
|
getIsActive: () => true,
|
|
176
170
|
getVersion: () => '13.6.0-flask.0',
|
|
177
|
-
|
|
178
|
-
createInterface: (...args) => controllerMessenger.call('SnapInterfaceController:createInterface', snapId, ...args),
|
|
179
|
-
updateInterface: (...args) => controllerMessenger.call('SnapInterfaceController:updateInterface', snapId, ...args),
|
|
180
|
-
getInterfaceState: (...args) => controllerMessenger.call('SnapInterfaceController:getInterfaceState', snapId, ...args),
|
|
181
|
-
getInterfaceContext: (...args) => controllerMessenger.call('SnapInterfaceController:getInterface', snapId, ...args).context,
|
|
182
|
-
resolveInterface: async (...args) => controllerMessenger.call('SnapInterfaceController:resolveInterface', snapId, ...args),
|
|
183
|
-
getEntropySources: (0, hooks_1.getGetEntropySourcesImplementation)(),
|
|
184
|
-
getSnapState: (0, hooks_1.getPermittedGetSnapStateMethodImplementation)(runSaga),
|
|
185
|
-
updateSnapState: (0, hooks_1.getPermittedUpdateSnapStateMethodImplementation)(runSaga),
|
|
186
|
-
clearSnapState: (0, hooks_1.getPermittedClearSnapStateMethodImplementation)(runSaga),
|
|
187
|
-
getSnap: (0, hooks_1.getGetSnapImplementation)(true),
|
|
171
|
+
getAllowedKeyringMethods: () => [],
|
|
188
172
|
trackError: (0, hooks_1.getTrackErrorImplementation)(runSaga),
|
|
189
173
|
trackEvent: (0, hooks_1.getTrackEventImplementation)(runSaga),
|
|
190
174
|
startTrace: (0, hooks_1.getStartTraceImplementation)(runSaga),
|
|
@@ -238,6 +222,12 @@ function getMultichainHooks(snapId, options, controllerMessenger) {
|
|
|
238
222
|
};
|
|
239
223
|
}
|
|
240
224
|
exports.getMultichainHooks = getMultichainHooks;
|
|
225
|
+
/**
|
|
226
|
+
* Get the mock mnemonic for a given source ID.
|
|
227
|
+
*
|
|
228
|
+
* @param options - The simulation options.
|
|
229
|
+
* @returns The mnemonic.
|
|
230
|
+
*/
|
|
241
231
|
/**
|
|
242
232
|
* Register mocked action handlers.
|
|
243
233
|
*
|
|
@@ -245,8 +235,9 @@ exports.getMultichainHooks = getMultichainHooks;
|
|
|
245
235
|
* @param runSaga - The run saga function.
|
|
246
236
|
* @param options - The simulation options.
|
|
247
237
|
* @param snapId - The ID of the Snap.
|
|
238
|
+
* @param auxiliaryFiles - Auxiliary files from the fetched Snap.
|
|
248
239
|
*/
|
|
249
|
-
function registerActions(controllerMessenger, runSaga, options, snapId) {
|
|
240
|
+
function registerActions(controllerMessenger, runSaga, options, snapId, auxiliaryFiles) {
|
|
250
241
|
controllerMessenger.registerActionHandler('PhishingController:testOrigin', () => ({ result: false, type: 'all' }));
|
|
251
242
|
controllerMessenger.registerActionHandler('AccountsController:getAccountByAddress',
|
|
252
243
|
// @ts-expect-error - This is a partial account with only the necessary
|
|
@@ -300,6 +291,70 @@ function registerActions(controllerMessenger, runSaga, options, snapId) {
|
|
|
300
291
|
await runSaga(interface_1.resolveWithSaga, value).toPromise();
|
|
301
292
|
return { value };
|
|
302
293
|
});
|
|
294
|
+
controllerMessenger.registerActionHandler('ApprovalController:addRequest',
|
|
295
|
+
// @ts-expect-error Types of property 'requestData' are incompatible.
|
|
296
|
+
(0, hooks_1.getRequestUserApprovalImplementation)(runSaga));
|
|
297
|
+
controllerMessenger.registerActionHandler('SnapController:getSnap', (0, hooks_1.getGetSnapImplementation)(true));
|
|
298
|
+
controllerMessenger.registerActionHandler('SnapController:getSnapState', (0, hooks_1.getGetSnapStateMethodImplementation)(runSaga));
|
|
299
|
+
controllerMessenger.registerActionHandler('SnapController:updateSnapState', (0, hooks_1.getUpdateSnapStateMethodImplementation)(runSaga));
|
|
300
|
+
controllerMessenger.registerActionHandler('SnapController:clearSnapState', (0, hooks_1.getClearSnapStateMethodImplementation)(runSaga));
|
|
301
|
+
controllerMessenger.registerActionHandler('SnapController:getSnapFile', async (_snapId, path, encoding) => (0, files_1.getSnapFile)(auxiliaryFiles, path, encoding));
|
|
302
|
+
const showNativeNotification = (0, hooks_1.getShowNativeNotificationImplementation)(runSaga);
|
|
303
|
+
const showInAppNotification = (0, hooks_1.getShowInAppNotificationImplementation)(runSaga);
|
|
304
|
+
controllerMessenger.registerActionHandler(
|
|
305
|
+
// @ts-expect-error - `RateLimitController` is not part of the simulation messenger types.
|
|
306
|
+
'RateLimitController:call', async (_origin, type, ...args) => {
|
|
307
|
+
switch (type) {
|
|
308
|
+
case 'showNativeNotification':
|
|
309
|
+
return await showNativeNotification(args[0], {
|
|
310
|
+
type: 'native',
|
|
311
|
+
message: args[1],
|
|
312
|
+
});
|
|
313
|
+
case 'showInAppNotification':
|
|
314
|
+
return await showInAppNotification(args[0], args[1]);
|
|
315
|
+
/* istanbul ignore next */
|
|
316
|
+
default:
|
|
317
|
+
return (0, utils_1.assertExhaustive)(type);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
const getMnemonic = (0, hooks_1.getGetMnemonicImplementation)(options.secretRecoveryPhrase);
|
|
321
|
+
controllerMessenger.registerActionHandler(
|
|
322
|
+
// @ts-expect-error - `KeyringController` is not part of the simulation messenger types.
|
|
323
|
+
'KeyringController:getState', () => ({
|
|
324
|
+
isUnlocked: true,
|
|
325
|
+
keyrings: [
|
|
326
|
+
{
|
|
327
|
+
type: 'HD Key Tree',
|
|
328
|
+
metadata: {
|
|
329
|
+
id: 'default',
|
|
330
|
+
name: 'Default Secret Recovery Phrase',
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
type: 'HD Key Tree',
|
|
335
|
+
metadata: {
|
|
336
|
+
id: 'alternative',
|
|
337
|
+
name: 'Alternative Secret Recovery Phrase',
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
}));
|
|
342
|
+
controllerMessenger.registerActionHandler(
|
|
343
|
+
// @ts-expect-error - `KeyringController` is not part of the simulation messenger types.
|
|
344
|
+
'KeyringController:withKeyring', async (selector, operation) => {
|
|
345
|
+
const source = (0, utils_1.hasProperty)(selector, 'id')
|
|
346
|
+
? selector.id
|
|
347
|
+
: undefined;
|
|
348
|
+
const mnemonic = await getMnemonic(source);
|
|
349
|
+
const seed = await (0, key_tree_1.mnemonicToSeed)(mnemonic);
|
|
350
|
+
return await operation({
|
|
351
|
+
keyring: {
|
|
352
|
+
type: 'HD Key Tree',
|
|
353
|
+
mnemonic,
|
|
354
|
+
seed,
|
|
355
|
+
},
|
|
356
|
+
});
|
|
357
|
+
});
|
|
303
358
|
}
|
|
304
359
|
exports.registerActions = registerActions;
|
|
305
360
|
//# sourceMappingURL=simulation.cjs.map
|