@metamask/snaps-simulation 3.8.0 → 4.1.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 +22 -1
- package/dist/constants.cjs +2 -2
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.mjs +2 -2
- package/dist/constants.mjs.map +1 -1
- package/dist/controllers.cjs +16 -0
- package/dist/controllers.cjs.map +1 -1
- package/dist/controllers.d.cts.map +1 -1
- package/dist/controllers.d.mts.map +1 -1
- package/dist/controllers.mjs +16 -0
- package/dist/controllers.mjs.map +1 -1
- package/dist/methods/hooks/get-snap.cjs +0 -1
- package/dist/methods/hooks/get-snap.cjs.map +1 -1
- package/dist/methods/hooks/get-snap.d.cts.map +1 -1
- package/dist/methods/hooks/get-snap.d.mts.map +1 -1
- package/dist/methods/hooks/get-snap.mjs +0 -1
- package/dist/methods/hooks/get-snap.mjs.map +1 -1
- package/dist/methods/specifications.cjs +2 -0
- package/dist/methods/specifications.cjs.map +1 -1
- package/dist/methods/specifications.d.cts +7 -1
- package/dist/methods/specifications.d.cts.map +1 -1
- package/dist/methods/specifications.d.mts +7 -1
- package/dist/methods/specifications.d.mts.map +1 -1
- package/dist/methods/specifications.mjs +2 -0
- package/dist/methods/specifications.mjs.map +1 -1
- package/dist/middleware/engine.cjs +5 -1
- package/dist/middleware/engine.cjs.map +1 -1
- package/dist/middleware/engine.d.cts +6 -2
- package/dist/middleware/engine.d.cts.map +1 -1
- package/dist/middleware/engine.d.mts +6 -2
- package/dist/middleware/engine.d.mts.map +1 -1
- package/dist/middleware/engine.mjs +5 -1
- package/dist/middleware/engine.mjs.map +1 -1
- package/dist/middleware/internal-methods/chain-id.cjs +7 -4
- package/dist/middleware/internal-methods/chain-id.cjs.map +1 -1
- package/dist/middleware/internal-methods/chain-id.d.cts +4 -4
- package/dist/middleware/internal-methods/chain-id.d.cts.map +1 -1
- package/dist/middleware/internal-methods/chain-id.d.mts +4 -4
- package/dist/middleware/internal-methods/chain-id.d.mts.map +1 -1
- package/dist/middleware/internal-methods/chain-id.mjs +7 -4
- package/dist/middleware/internal-methods/chain-id.mjs.map +1 -1
- package/dist/middleware/internal-methods/net-version.cjs +6 -5
- package/dist/middleware/internal-methods/net-version.cjs.map +1 -1
- package/dist/middleware/internal-methods/net-version.d.cts +4 -4
- package/dist/middleware/internal-methods/net-version.d.cts.map +1 -1
- package/dist/middleware/internal-methods/net-version.d.mts +4 -4
- package/dist/middleware/internal-methods/net-version.d.mts.map +1 -1
- package/dist/middleware/internal-methods/net-version.mjs +7 -6
- package/dist/middleware/internal-methods/net-version.mjs.map +1 -1
- package/dist/middleware/multichain/create-session.cjs +55 -0
- package/dist/middleware/multichain/create-session.cjs.map +1 -0
- package/dist/middleware/multichain/create-session.d.cts +19 -0
- package/dist/middleware/multichain/create-session.d.cts.map +1 -0
- package/dist/middleware/multichain/create-session.d.mts +19 -0
- package/dist/middleware/multichain/create-session.d.mts.map +1 -0
- package/dist/middleware/multichain/create-session.mjs +51 -0
- package/dist/middleware/multichain/create-session.mjs.map +1 -0
- package/dist/middleware/multichain/get-session.cjs +20 -0
- package/dist/middleware/multichain/get-session.cjs.map +1 -0
- package/dist/middleware/multichain/get-session.d.cts +17 -0
- package/dist/middleware/multichain/get-session.d.cts.map +1 -0
- package/dist/middleware/multichain/get-session.d.mts +17 -0
- package/dist/middleware/multichain/get-session.d.mts.map +1 -0
- package/dist/middleware/multichain/get-session.mjs +16 -0
- package/dist/middleware/multichain/get-session.mjs.map +1 -0
- package/dist/middleware/multichain/index.cjs +22 -0
- package/dist/middleware/multichain/index.cjs.map +1 -0
- package/dist/middleware/multichain/index.d.cts +6 -0
- package/dist/middleware/multichain/index.d.cts.map +1 -0
- package/dist/middleware/multichain/index.d.mts +6 -0
- package/dist/middleware/multichain/index.d.mts.map +1 -0
- package/dist/middleware/multichain/index.mjs +6 -0
- package/dist/middleware/multichain/index.mjs.map +1 -0
- package/dist/middleware/multichain/invoke-method.cjs +36 -0
- package/dist/middleware/multichain/invoke-method.cjs.map +1 -0
- package/dist/middleware/multichain/invoke-method.d.cts +15 -0
- package/dist/middleware/multichain/invoke-method.d.cts.map +1 -0
- package/dist/middleware/multichain/invoke-method.d.mts +15 -0
- package/dist/middleware/multichain/invoke-method.d.mts.map +1 -0
- package/dist/middleware/multichain/invoke-method.mjs +32 -0
- package/dist/middleware/multichain/invoke-method.mjs.map +1 -0
- package/dist/middleware/multichain/middleware.cjs +49 -0
- package/dist/middleware/multichain/middleware.cjs.map +1 -0
- package/dist/middleware/multichain/middleware.d.cts +12 -0
- package/dist/middleware/multichain/middleware.d.cts.map +1 -0
- package/dist/middleware/multichain/middleware.d.mts +12 -0
- package/dist/middleware/multichain/middleware.d.mts.map +1 -0
- package/dist/middleware/multichain/middleware.mjs +45 -0
- package/dist/middleware/multichain/middleware.mjs.map +1 -0
- package/dist/middleware/multichain/revoke-session.cjs +17 -0
- package/dist/middleware/multichain/revoke-session.cjs.map +1 -0
- package/dist/middleware/multichain/revoke-session.d.cts +13 -0
- package/dist/middleware/multichain/revoke-session.d.cts.map +1 -0
- package/dist/middleware/multichain/revoke-session.d.mts +13 -0
- package/dist/middleware/multichain/revoke-session.d.mts.map +1 -0
- package/dist/middleware/multichain/revoke-session.mjs +13 -0
- package/dist/middleware/multichain/revoke-session.mjs.map +1 -0
- package/dist/middleware/multichain/utils.cjs +29 -0
- package/dist/middleware/multichain/utils.cjs.map +1 -0
- package/dist/middleware/multichain/utils.d.cts +14 -0
- package/dist/middleware/multichain/utils.d.cts.map +1 -0
- package/dist/middleware/multichain/utils.d.mts +14 -0
- package/dist/middleware/multichain/utils.d.mts.map +1 -0
- package/dist/middleware/multichain/utils.mjs +25 -0
- package/dist/middleware/multichain/utils.mjs.map +1 -0
- package/dist/middleware/provider.cjs +12 -3
- package/dist/middleware/provider.cjs.map +1 -1
- package/dist/middleware/provider.d.cts.map +1 -1
- package/dist/middleware/provider.d.mts.map +1 -1
- package/dist/middleware/provider.mjs +13 -4
- package/dist/middleware/provider.mjs.map +1 -1
- package/dist/simulation.cjs +73 -4
- package/dist/simulation.cjs.map +1 -1
- package/dist/simulation.d.cts +39 -1
- package/dist/simulation.d.cts.map +1 -1
- package/dist/simulation.d.mts +39 -1
- package/dist/simulation.d.mts.map +1 -1
- package/dist/simulation.mjs +71 -3
- package/dist/simulation.mjs.map +1 -1
- package/package.json +9 -8
|
@@ -2,14 +2,16 @@ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
|
2
2
|
import { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
3
3
|
import type { RestrictedMethodParameters } from "@metamask/permission-controller";
|
|
4
4
|
import type { Json } from "@metamask/utils";
|
|
5
|
-
import type { PermittedMiddlewareHooks, RestrictedMiddlewareHooks } from "../simulation.mjs";
|
|
5
|
+
import type { MultichainMiddlewareHooks, PermittedMiddlewareHooks, RestrictedMiddlewareHooks } from "../simulation.mjs";
|
|
6
6
|
import type { Store } from "../store/index.mjs";
|
|
7
7
|
export type CreateJsonRpcEngineOptions = {
|
|
8
8
|
store: Store;
|
|
9
9
|
restrictedHooks: RestrictedMiddlewareHooks;
|
|
10
10
|
permittedHooks: PermittedMiddlewareHooks;
|
|
11
|
+
multichainHooks: MultichainMiddlewareHooks;
|
|
11
12
|
permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;
|
|
12
13
|
endpoint?: string;
|
|
14
|
+
isMultichain: boolean;
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
17
|
* Create a JSON-RPC engine for use in a simulated environment. This engine
|
|
@@ -22,7 +24,9 @@ export type CreateJsonRpcEngineOptions = {
|
|
|
22
24
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
23
25
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
24
26
|
* @param options.permissionMiddleware - The permission middleware to use.
|
|
27
|
+
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
28
|
+
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
25
29
|
* @returns A JSON-RPC engine.
|
|
26
30
|
*/
|
|
27
|
-
export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
|
|
31
|
+
export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, multichainHooks, isMultichain, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
|
|
28
32
|
//# sourceMappingURL=engine.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAM5C,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,eAAe,EAAE,yBAAyB,CAAC;IAC3C,oBAAoB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,YAAY,GACb,EAAE,0BAA0B,iBAgB5B"}
|
|
@@ -2,6 +2,7 @@ import { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
|
2
2
|
import { createSnapsMethodMiddleware } from "@metamask/snaps-rpc-methods";
|
|
3
3
|
import { createInternalMethodsMiddleware } from "./internal-methods/index.mjs";
|
|
4
4
|
import { createMockMiddleware } from "./mock.mjs";
|
|
5
|
+
import { createMultichainMiddleware } from "./multichain/index.mjs";
|
|
5
6
|
import { createProviderMiddleware } from "./provider.mjs";
|
|
6
7
|
/**
|
|
7
8
|
* Create a JSON-RPC engine for use in a simulated environment. This engine
|
|
@@ -14,10 +15,13 @@ import { createProviderMiddleware } from "./provider.mjs";
|
|
|
14
15
|
* @param options.restrictedHooks - Any hooks used by the middleware handlers.
|
|
15
16
|
* @param options.permittedHooks - Any hooks used by the middleware handlers.
|
|
16
17
|
* @param options.permissionMiddleware - The permission middleware to use.
|
|
18
|
+
* @param options.multichainHooks - Hooks used by the multichain middleware.
|
|
19
|
+
* @param options.isMultichain - Whether the engine is used for multichain.
|
|
17
20
|
* @returns A JSON-RPC engine.
|
|
18
21
|
*/
|
|
19
|
-
export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }) {
|
|
22
|
+
export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, multichainHooks, isMultichain, }) {
|
|
20
23
|
const engine = new JsonRpcEngine();
|
|
24
|
+
engine.push(createMultichainMiddleware(isMultichain, multichainHooks));
|
|
21
25
|
engine.push(createMockMiddleware(store));
|
|
22
26
|
// The hooks here do not match the hooks used by the clients, so this
|
|
23
27
|
// middleware should not be used outside of the simulation environment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,oCAAoC;AAG1E,OAAO,EAAE,+BAA+B,EAAE,qCAA2B;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAe;AAC9C,OAAO,EAAE,wBAAwB,EAAE,uBAAmB;
|
|
1
|
+
{"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAE1D,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;AAkBtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,YAAY,GACe;IAC3B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,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;IAC9D,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { createMultichainMiddleware } from './multichain';\nimport { createProviderMiddleware } from './provider';\nimport type {\n MultichainMiddlewareHooks,\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n multichainHooks: MultichainMiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\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.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.permissionMiddleware - The permission middleware to use.\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 store,\n restrictedHooks,\n permittedHooks,\n permissionMiddleware,\n multichainHooks,\n isMultichain,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\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 engine.push(createSnapsMethodMiddleware(true, permittedHooks));\n\n engine.push(permissionMiddleware);\n engine.push(createProviderMiddleware(store));\n\n return engine;\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getChainIdHandler = void 0;
|
|
4
|
+
const utils_1 = require("@metamask/utils");
|
|
4
5
|
/**
|
|
5
6
|
* A mock handler for eth_chainId that always returns a specific
|
|
6
7
|
* hardcoded result.
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
10
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
11
11
|
* result.
|
|
12
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -14,8 +14,11 @@ exports.getChainIdHandler = void 0;
|
|
|
14
14
|
* @param hooks - The method hooks.
|
|
15
15
|
* @returns The JSON-RPC response.
|
|
16
16
|
*/
|
|
17
|
-
async function getChainIdHandler(
|
|
18
|
-
|
|
17
|
+
async function getChainIdHandler(request, response, _next, end, hooks) {
|
|
18
|
+
const requestScope = request.scope && (0, utils_1.parseCaipChainId)(request.scope);
|
|
19
|
+
response.result = requestScope
|
|
20
|
+
? (0, utils_1.bigIntToHex)(BigInt(requestScope.reference))
|
|
21
|
+
: hooks.getSimulationState().chain.chainId;
|
|
19
22
|
return end();
|
|
20
23
|
}
|
|
21
24
|
exports.getChainIdHandler = getChainIdHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-id.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"chain-id.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":";;;AAIA,2CAIyB;AAKzB;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,QAAgC,EAChC,KAAgC,EAChC,GAA6B,EAC7B,KAAiE;IAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,GAAG,YAAY;QAC5B,CAAC,CAAC,IAAA,mBAAW,EAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAE7C,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAbD,8CAaC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport {\n bigIntToHex,\n parseCaipChainId,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type { InternalMethodsMiddlewareHooks } from './middleware';\nimport type { ScopedJsonRpcRequest } from '../multichain';\n\n/**\n * A mock handler for eth_chainId that always returns a specific\n * hardcoded result.\n *\n * @param request - Incoming JSON-RPC request.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function getChainIdHandler(\n request: ScopedJsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>,\n) {\n const requestScope = request.scope && parseCaipChainId(request.scope);\n response.result = requestScope\n ? bigIntToHex(BigInt(requestScope.reference))\n : hooks.getSimulationState().chain.chainId;\n\n return end();\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import
|
|
2
|
+
import { type PendingJsonRpcResponse } from "@metamask/utils";
|
|
3
3
|
import type { InternalMethodsMiddlewareHooks } from "./middleware.cjs";
|
|
4
|
+
import type { ScopedJsonRpcRequest } from "../multichain/index.cjs";
|
|
4
5
|
/**
|
|
5
6
|
* A mock handler for eth_chainId that always returns a specific
|
|
6
7
|
* hardcoded result.
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
10
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
11
11
|
* result.
|
|
12
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -14,5 +14,5 @@ import type { InternalMethodsMiddlewareHooks } from "./middleware.cjs";
|
|
|
14
14
|
* @param hooks - The method hooks.
|
|
15
15
|
* @returns The JSON-RPC response.
|
|
16
16
|
*/
|
|
17
|
-
export declare function getChainIdHandler(
|
|
17
|
+
export declare function getChainIdHandler(request: ScopedJsonRpcRequest, response: PendingJsonRpcResponse, _next: JsonRpcEngineNextCallback, end: JsonRpcEngineEndCallback, hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>): Promise<void>;
|
|
18
18
|
//# sourceMappingURL=chain-id.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-id.d.cts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"chain-id.d.cts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,EAGL,KAAK,sBAAsB,EAC5B,wBAAwB;AAEzB,OAAO,KAAK,EAAE,8BAA8B,EAAE,yBAAqB;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gCAAsB;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,iBAQlE"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import
|
|
2
|
+
import { type PendingJsonRpcResponse } from "@metamask/utils";
|
|
3
3
|
import type { InternalMethodsMiddlewareHooks } from "./middleware.mjs";
|
|
4
|
+
import type { ScopedJsonRpcRequest } from "../multichain/index.mjs";
|
|
4
5
|
/**
|
|
5
6
|
* A mock handler for eth_chainId that always returns a specific
|
|
6
7
|
* hardcoded result.
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
10
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
11
11
|
* result.
|
|
12
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -14,5 +14,5 @@ import type { InternalMethodsMiddlewareHooks } from "./middleware.mjs";
|
|
|
14
14
|
* @param hooks - The method hooks.
|
|
15
15
|
* @returns The JSON-RPC response.
|
|
16
16
|
*/
|
|
17
|
-
export declare function getChainIdHandler(
|
|
17
|
+
export declare function getChainIdHandler(request: ScopedJsonRpcRequest, response: PendingJsonRpcResponse, _next: JsonRpcEngineNextCallback, end: JsonRpcEngineEndCallback, hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>): Promise<void>;
|
|
18
18
|
//# sourceMappingURL=chain-id.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-id.d.mts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"chain-id.d.mts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,EAGL,KAAK,sBAAsB,EAC5B,wBAAwB;AAEzB,OAAO,KAAK,EAAE,8BAA8B,EAAE,yBAAqB;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gCAAsB;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,iBAQlE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { bigIntToHex, parseCaipChainId } from "@metamask/utils";
|
|
1
2
|
/**
|
|
2
3
|
* A mock handler for eth_chainId that always returns a specific
|
|
3
4
|
* hardcoded result.
|
|
4
5
|
*
|
|
5
|
-
* @param
|
|
6
|
-
* handler.
|
|
6
|
+
* @param request - Incoming JSON-RPC request.
|
|
7
7
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
8
8
|
* result.
|
|
9
9
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -11,8 +11,11 @@
|
|
|
11
11
|
* @param hooks - The method hooks.
|
|
12
12
|
* @returns The JSON-RPC response.
|
|
13
13
|
*/
|
|
14
|
-
export async function getChainIdHandler(
|
|
15
|
-
|
|
14
|
+
export async function getChainIdHandler(request, response, _next, end, hooks) {
|
|
15
|
+
const requestScope = request.scope && parseCaipChainId(request.scope);
|
|
16
|
+
response.result = requestScope
|
|
17
|
+
? bigIntToHex(BigInt(requestScope.reference))
|
|
18
|
+
: hooks.getSimulationState().chain.chainId;
|
|
16
19
|
return end();
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=chain-id.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-id.mjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chain-id.mjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EACX,gBAAgB,EAEjB,wBAAwB;AAKzB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,QAAgC,EAChC,KAAgC,EAChC,GAA6B,EAC7B,KAAiE;IAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,GAAG,YAAY;QAC5B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAE7C,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport {\n bigIntToHex,\n parseCaipChainId,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type { InternalMethodsMiddlewareHooks } from './middleware';\nimport type { ScopedJsonRpcRequest } from '../multichain';\n\n/**\n * A mock handler for eth_chainId that always returns a specific\n * hardcoded result.\n *\n * @param request - Incoming JSON-RPC request.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function getChainIdHandler(\n request: ScopedJsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>,\n) {\n const requestScope = request.scope && parseCaipChainId(request.scope);\n response.result = requestScope\n ? bigIntToHex(BigInt(requestScope.reference))\n : hooks.getSimulationState().chain.chainId;\n\n return end();\n}\n"]}
|
|
@@ -6,8 +6,7 @@ const utils_1 = require("@metamask/utils");
|
|
|
6
6
|
* A mock handler for net_version that always returns a specific
|
|
7
7
|
* hardcoded result.
|
|
8
8
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
11
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
12
11
|
* result.
|
|
13
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -15,9 +14,11 @@ const utils_1 = require("@metamask/utils");
|
|
|
15
14
|
* @param hooks - The method hooks.
|
|
16
15
|
* @returns The JSON-RPC response.
|
|
17
16
|
*/
|
|
18
|
-
async function getNetworkVersionHandler(
|
|
19
|
-
const
|
|
20
|
-
response.result =
|
|
17
|
+
async function getNetworkVersionHandler(request, response, _next, end, hooks) {
|
|
18
|
+
const requestScope = request.scope && (0, utils_1.parseCaipChainId)(request.scope);
|
|
19
|
+
response.result = requestScope
|
|
20
|
+
? BigInt(requestScope.reference).toString(10)
|
|
21
|
+
: (0, utils_1.hexToBigInt)(hooks.getSimulationState().chain.chainId).toString(10);
|
|
21
22
|
return end();
|
|
22
23
|
}
|
|
23
24
|
exports.getNetworkVersionHandler = getNetworkVersionHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net-version.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":";;;AAIA,
|
|
1
|
+
{"version":3,"file":"net-version.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":";;;AAIA,2CAAgE;AAMhE;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,wBAAwB,CAC5C,OAA6B,EAC7B,QAAgC,EAChC,KAAgC,EAChC,GAA6B,EAC7B,KAAiE;IAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,GAAG,YAAY;QAC5B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvE,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAbD,4DAaC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport { hexToBigInt, parseCaipChainId } from '@metamask/utils';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { InternalMethodsMiddlewareHooks } from './middleware';\nimport type { ScopedJsonRpcRequest } from '../multichain';\n\n/**\n * A mock handler for net_version that always returns a specific\n * hardcoded result.\n *\n * @param request - Incoming JSON-RPC request.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function getNetworkVersionHandler(\n request: ScopedJsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>,\n) {\n const requestScope = request.scope && parseCaipChainId(request.scope);\n response.result = requestScope\n ? BigInt(requestScope.reference).toString(10)\n : hexToBigInt(hooks.getSimulationState().chain.chainId).toString(10);\n\n return end();\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
3
3
|
import type { InternalMethodsMiddlewareHooks } from "./middleware.cjs";
|
|
4
|
+
import type { ScopedJsonRpcRequest } from "../multichain/index.cjs";
|
|
4
5
|
/**
|
|
5
6
|
* A mock handler for net_version that always returns a specific
|
|
6
7
|
* hardcoded result.
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
10
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
11
11
|
* result.
|
|
12
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -14,5 +14,5 @@ import type { InternalMethodsMiddlewareHooks } from "./middleware.cjs";
|
|
|
14
14
|
* @param hooks - The method hooks.
|
|
15
15
|
* @returns The JSON-RPC response.
|
|
16
16
|
*/
|
|
17
|
-
export declare function getNetworkVersionHandler(
|
|
17
|
+
export declare function getNetworkVersionHandler(request: ScopedJsonRpcRequest, response: PendingJsonRpcResponse, _next: JsonRpcEngineNextCallback, end: JsonRpcEngineEndCallback, hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>): Promise<void>;
|
|
18
18
|
//# sourceMappingURL=net-version.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net-version.d.cts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAEnC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"net-version.d.cts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAEnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,yBAAqB;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gCAAsB;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,iBAQlE"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
3
3
|
import type { InternalMethodsMiddlewareHooks } from "./middleware.mjs";
|
|
4
|
+
import type { ScopedJsonRpcRequest } from "../multichain/index.mjs";
|
|
4
5
|
/**
|
|
5
6
|
* A mock handler for net_version that always returns a specific
|
|
6
7
|
* hardcoded result.
|
|
7
8
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* handler.
|
|
9
|
+
* @param request - Incoming JSON-RPC request.
|
|
10
10
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
11
11
|
* result.
|
|
12
12
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -14,5 +14,5 @@ import type { InternalMethodsMiddlewareHooks } from "./middleware.mjs";
|
|
|
14
14
|
* @param hooks - The method hooks.
|
|
15
15
|
* @returns The JSON-RPC response.
|
|
16
16
|
*/
|
|
17
|
-
export declare function getNetworkVersionHandler(
|
|
17
|
+
export declare function getNetworkVersionHandler(request: ScopedJsonRpcRequest, response: PendingJsonRpcResponse, _next: JsonRpcEngineNextCallback, end: JsonRpcEngineEndCallback, hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>): Promise<void>;
|
|
18
18
|
//# sourceMappingURL=net-version.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net-version.d.mts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAEnC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"net-version.d.mts","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAEnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,yBAAqB;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gCAAsB;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,iBAQlE"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { hexToBigInt } from "@metamask/utils";
|
|
1
|
+
import { hexToBigInt, parseCaipChainId } from "@metamask/utils";
|
|
2
2
|
/**
|
|
3
3
|
* A mock handler for net_version that always returns a specific
|
|
4
4
|
* hardcoded result.
|
|
5
5
|
*
|
|
6
|
-
* @param
|
|
7
|
-
* handler.
|
|
6
|
+
* @param request - Incoming JSON-RPC request.
|
|
8
7
|
* @param response - The outgoing JSON-RPC response, modified to return the
|
|
9
8
|
* result.
|
|
10
9
|
* @param _next - The `json-rpc-engine` middleware next handler.
|
|
@@ -12,9 +11,11 @@ import { hexToBigInt } from "@metamask/utils";
|
|
|
12
11
|
* @param hooks - The method hooks.
|
|
13
12
|
* @returns The JSON-RPC response.
|
|
14
13
|
*/
|
|
15
|
-
export async function getNetworkVersionHandler(
|
|
16
|
-
const
|
|
17
|
-
response.result =
|
|
14
|
+
export async function getNetworkVersionHandler(request, response, _next, end, hooks) {
|
|
15
|
+
const requestScope = request.scope && parseCaipChainId(request.scope);
|
|
16
|
+
response.result = requestScope
|
|
17
|
+
? BigInt(requestScope.reference).toString(10)
|
|
18
|
+
: hexToBigInt(hooks.getSimulationState().chain.chainId).toString(10);
|
|
18
19
|
return end();
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=net-version.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net-version.mjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"net-version.mjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/net-version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB;AAMhE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA6B,EAC7B,QAAgC,EAChC,KAAgC,EAChC,GAA6B,EAC7B,KAAiE;IAEjE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,GAAG,YAAY;QAC5B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvE,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport { hexToBigInt, parseCaipChainId } from '@metamask/utils';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { InternalMethodsMiddlewareHooks } from './middleware';\nimport type { ScopedJsonRpcRequest } from '../multichain';\n\n/**\n * A mock handler for net_version that always returns a specific\n * hardcoded result.\n *\n * @param request - Incoming JSON-RPC request.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function getNetworkVersionHandler(\n request: ScopedJsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>,\n) {\n const requestScope = request.scope && parseCaipChainId(request.scope);\n response.result = requestScope\n ? BigInt(requestScope.reference).toString(10)\n : hexToBigInt(hooks.getSimulationState().chain.chainId).toString(10);\n\n return end();\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSessionHandler = void 0;
|
|
4
|
+
const chain_agnostic_permission_1 = require("@metamask/chain-agnostic-permission");
|
|
5
|
+
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
6
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
7
|
+
const utils_1 = require("@metamask/utils");
|
|
8
|
+
const utils_2 = require("./utils.cjs");
|
|
9
|
+
const ScopesStruct = (0, superstruct_1.record)(utils_1.CaipChainIdStruct, (0, superstruct_1.object)({
|
|
10
|
+
methods: (0, superstruct_1.array)((0, superstruct_1.string)()),
|
|
11
|
+
accounts: (0, superstruct_1.array)(utils_1.CaipAccountIdStruct),
|
|
12
|
+
notifications: (0, superstruct_1.array)((0, superstruct_1.string)()),
|
|
13
|
+
}));
|
|
14
|
+
const CreateSessionParamsStruct = (0, superstruct_1.object)({
|
|
15
|
+
requiredScopes: (0, superstruct_1.optional)(ScopesStruct),
|
|
16
|
+
optionalScopes: (0, superstruct_1.optional)(ScopesStruct),
|
|
17
|
+
sessionProperties: (0, superstruct_1.optional)((0, superstruct_1.record)((0, superstruct_1.string)(), utils_1.JsonStruct)),
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* A handler that implements a simplified version of `wallet_createSession`.
|
|
21
|
+
*
|
|
22
|
+
* @param request - Incoming JSON-RPC request.
|
|
23
|
+
* @param hooks - The method hooks.
|
|
24
|
+
* @returns The JSON-RPC response.
|
|
25
|
+
*/
|
|
26
|
+
async function createSessionHandler(request, hooks) {
|
|
27
|
+
if (!(0, superstruct_1.is)(request.params, CreateSessionParamsStruct)) {
|
|
28
|
+
throw rpc_errors_1.rpcErrors.invalidParams({ data: { request } });
|
|
29
|
+
}
|
|
30
|
+
const caveat = {
|
|
31
|
+
requiredScopes: request.params.requiredScopes ?? {},
|
|
32
|
+
optionalScopes: request.params.optionalScopes ?? {},
|
|
33
|
+
sessionProperties: request.params.sessionProperties ?? {},
|
|
34
|
+
isMultichainOrigin: true,
|
|
35
|
+
};
|
|
36
|
+
const accounts = hooks
|
|
37
|
+
.getAccounts()
|
|
38
|
+
.flatMap((account) => account.scopes.map((scope) => `${scope}:${account.address}`));
|
|
39
|
+
const caveatWithAccounts = (0, chain_agnostic_permission_1.setNonSCACaipAccountIdsInCaip25CaveatValue)(caveat, accounts);
|
|
40
|
+
const permissions = {
|
|
41
|
+
[chain_agnostic_permission_1.Caip25EndowmentPermissionName]: {
|
|
42
|
+
caveats: [
|
|
43
|
+
{
|
|
44
|
+
type: chain_agnostic_permission_1.Caip25CaveatType,
|
|
45
|
+
value: caveatWithAccounts,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
hooks.grantPermissions(permissions);
|
|
51
|
+
const sessionScopes = (0, utils_2.getSessionScopes)(caveatWithAccounts);
|
|
52
|
+
return { sessionScopes, sessionProperties: caveat.sessionProperties };
|
|
53
|
+
}
|
|
54
|
+
exports.createSessionHandler = createSessionHandler;
|
|
55
|
+
//# sourceMappingURL=create-session.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session.cjs","sourceRoot":"","sources":["../../../src/middleware/multichain/create-session.ts"],"names":[],"mappings":";;;AAAA,mFAI6C;AAE7C,qDAAiD;AACjD,uDAO+B;AAC/B,2CAMyB;AAEzB,uCAA2C;AAQ3C,MAAM,YAAY,GAAG,IAAA,oBAAM,EACzB,yBAAiB,EACjB,IAAA,oBAAM,EAAC;IACL,OAAO,EAAE,IAAA,mBAAK,EAAC,IAAA,oBAAM,GAAE,CAAC;IACxB,QAAQ,EAAE,IAAA,mBAAK,EAAC,2BAAmB,CAAC;IACpC,aAAa,EAAE,IAAA,mBAAK,EAAC,IAAA,oBAAM,GAAE,CAAC;CAC/B,CAAC,CACH,CAAC;AAEF,MAAM,yBAAyB,GAAG,IAAA,oBAAM,EAAC;IACvC,cAAc,EAAE,IAAA,sBAAQ,EAAC,YAAY,CAAC;IACtC,cAAc,EAAE,IAAA,sBAAQ,EAAC,YAAY,CAAC;IACtC,iBAAiB,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC;CAC1D,CAAC,CAAC;AAEH;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,KAAgC;IAEhC,IAAI,CAAC,IAAA,gBAAE,EAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAAE,CAAC;QACnD,MAAM,sBAAS,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG;QACb,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE;QACzD,kBAAkB,EAAE,IAAI;KACzB,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK;SACnB,WAAW,EAAE;SACb,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;IAEJ,MAAM,kBAAkB,GAAG,IAAA,sEAA0C,EACnE,MAAM,EACN,QAA2B,CAC5B,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,CAAC,yDAA6B,CAAC,EAAE;YAC/B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,4CAAgB;oBACtB,KAAK,EAAE,kBAAkB;iBAC1B;aACF;SACF;KACsB,CAAC;IAE1B,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,kBAAkB,CAAC,CAAC;IAE3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACxE,CAAC;AA1CD,oDA0CC","sourcesContent":["import {\n Caip25CaveatType,\n Caip25EndowmentPermissionName,\n setNonSCACaipAccountIdsInCaip25CaveatValue,\n} from '@metamask/chain-agnostic-permission';\nimport type { RequestedPermissions } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport {\n array,\n is,\n object,\n string,\n optional,\n record,\n} from '@metamask/superstruct';\nimport {\n type CaipAccountId,\n CaipAccountIdStruct,\n CaipChainIdStruct,\n JsonStruct,\n type JsonRpcRequest,\n} from '@metamask/utils';\n\nimport { getSessionScopes } from './utils';\nimport type { SimulationAccount } from '../../options';\n\nexport type CreateSessionHandlerHooks = {\n grantPermissions: (permissions: RequestedPermissions) => void;\n getAccounts: () => SimulationAccount[];\n};\n\nconst ScopesStruct = record(\n CaipChainIdStruct,\n object({\n methods: array(string()),\n accounts: array(CaipAccountIdStruct),\n notifications: array(string()),\n }),\n);\n\nconst CreateSessionParamsStruct = object({\n requiredScopes: optional(ScopesStruct),\n optionalScopes: optional(ScopesStruct),\n sessionProperties: optional(record(string(), JsonStruct)),\n});\n\n/**\n * A handler that implements a simplified version of `wallet_createSession`.\n *\n * @param request - Incoming JSON-RPC request.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function createSessionHandler(\n request: JsonRpcRequest,\n hooks: CreateSessionHandlerHooks,\n) {\n if (!is(request.params, CreateSessionParamsStruct)) {\n throw rpcErrors.invalidParams({ data: { request } });\n }\n\n const caveat = {\n requiredScopes: request.params.requiredScopes ?? {},\n optionalScopes: request.params.optionalScopes ?? {},\n sessionProperties: request.params.sessionProperties ?? {},\n isMultichainOrigin: true,\n };\n\n const accounts = hooks\n .getAccounts()\n .flatMap((account) =>\n account.scopes.map((scope) => `${scope}:${account.address}`),\n );\n\n const caveatWithAccounts = setNonSCACaipAccountIdsInCaip25CaveatValue(\n caveat,\n accounts as CaipAccountId[],\n );\n\n const permissions = {\n [Caip25EndowmentPermissionName]: {\n caveats: [\n {\n type: Caip25CaveatType,\n value: caveatWithAccounts,\n },\n ],\n },\n } as RequestedPermissions;\n\n hooks.grantPermissions(permissions);\n\n const sessionScopes = getSessionScopes(caveatWithAccounts);\n\n return { sessionScopes, sessionProperties: caveat.sessionProperties };\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RequestedPermissions } from "@metamask/permission-controller";
|
|
2
|
+
import { type JsonRpcRequest } from "@metamask/utils";
|
|
3
|
+
import type { SimulationAccount } from "../../options.cjs";
|
|
4
|
+
export type CreateSessionHandlerHooks = {
|
|
5
|
+
grantPermissions: (permissions: RequestedPermissions) => void;
|
|
6
|
+
getAccounts: () => SimulationAccount[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* A handler that implements a simplified version of `wallet_createSession`.
|
|
10
|
+
*
|
|
11
|
+
* @param request - Incoming JSON-RPC request.
|
|
12
|
+
* @param hooks - The method hooks.
|
|
13
|
+
* @returns The JSON-RPC response.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSessionHandler(request: JsonRpcRequest, hooks: CreateSessionHandlerHooks): Promise<{
|
|
16
|
+
sessionScopes: import("@metamask/chain-agnostic-permission").NormalizedScopesObject;
|
|
17
|
+
sessionProperties: Record<string, import("@metamask/utils").Json>;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=create-session.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session.d.cts","sourceRoot":"","sources":["../../../src/middleware/multichain/create-session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAU5E,OAAO,EAKL,KAAK,cAAc,EACpB,wBAAwB;AAGzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAAsB;AAEvD,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,WAAW,EAAE,MAAM,iBAAiB,EAAE,CAAC;CACxC,CAAC;AAiBF;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,yBAAyB;;;GAwCjC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RequestedPermissions } from "@metamask/permission-controller";
|
|
2
|
+
import { type JsonRpcRequest } from "@metamask/utils";
|
|
3
|
+
import type { SimulationAccount } from "../../options.mjs";
|
|
4
|
+
export type CreateSessionHandlerHooks = {
|
|
5
|
+
grantPermissions: (permissions: RequestedPermissions) => void;
|
|
6
|
+
getAccounts: () => SimulationAccount[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* A handler that implements a simplified version of `wallet_createSession`.
|
|
10
|
+
*
|
|
11
|
+
* @param request - Incoming JSON-RPC request.
|
|
12
|
+
* @param hooks - The method hooks.
|
|
13
|
+
* @returns The JSON-RPC response.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSessionHandler(request: JsonRpcRequest, hooks: CreateSessionHandlerHooks): Promise<{
|
|
16
|
+
sessionScopes: import("@metamask/chain-agnostic-permission").NormalizedScopesObject;
|
|
17
|
+
sessionProperties: Record<string, import("@metamask/utils").Json>;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=create-session.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session.d.mts","sourceRoot":"","sources":["../../../src/middleware/multichain/create-session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAU5E,OAAO,EAKL,KAAK,cAAc,EACpB,wBAAwB;AAGzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAAsB;AAEvD,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,WAAW,EAAE,MAAM,iBAAiB,EAAE,CAAC;CACxC,CAAC;AAiBF;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,yBAAyB;;;GAwCjC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Caip25CaveatType, Caip25EndowmentPermissionName, setNonSCACaipAccountIdsInCaip25CaveatValue } from "@metamask/chain-agnostic-permission";
|
|
2
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
import { array, is, object, string, optional, record } from "@metamask/superstruct";
|
|
4
|
+
import { CaipAccountIdStruct, CaipChainIdStruct, JsonStruct } from "@metamask/utils";
|
|
5
|
+
import { getSessionScopes } from "./utils.mjs";
|
|
6
|
+
const ScopesStruct = record(CaipChainIdStruct, object({
|
|
7
|
+
methods: array(string()),
|
|
8
|
+
accounts: array(CaipAccountIdStruct),
|
|
9
|
+
notifications: array(string()),
|
|
10
|
+
}));
|
|
11
|
+
const CreateSessionParamsStruct = object({
|
|
12
|
+
requiredScopes: optional(ScopesStruct),
|
|
13
|
+
optionalScopes: optional(ScopesStruct),
|
|
14
|
+
sessionProperties: optional(record(string(), JsonStruct)),
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* A handler that implements a simplified version of `wallet_createSession`.
|
|
18
|
+
*
|
|
19
|
+
* @param request - Incoming JSON-RPC request.
|
|
20
|
+
* @param hooks - The method hooks.
|
|
21
|
+
* @returns The JSON-RPC response.
|
|
22
|
+
*/
|
|
23
|
+
export async function createSessionHandler(request, hooks) {
|
|
24
|
+
if (!is(request.params, CreateSessionParamsStruct)) {
|
|
25
|
+
throw rpcErrors.invalidParams({ data: { request } });
|
|
26
|
+
}
|
|
27
|
+
const caveat = {
|
|
28
|
+
requiredScopes: request.params.requiredScopes ?? {},
|
|
29
|
+
optionalScopes: request.params.optionalScopes ?? {},
|
|
30
|
+
sessionProperties: request.params.sessionProperties ?? {},
|
|
31
|
+
isMultichainOrigin: true,
|
|
32
|
+
};
|
|
33
|
+
const accounts = hooks
|
|
34
|
+
.getAccounts()
|
|
35
|
+
.flatMap((account) => account.scopes.map((scope) => `${scope}:${account.address}`));
|
|
36
|
+
const caveatWithAccounts = setNonSCACaipAccountIdsInCaip25CaveatValue(caveat, accounts);
|
|
37
|
+
const permissions = {
|
|
38
|
+
[Caip25EndowmentPermissionName]: {
|
|
39
|
+
caveats: [
|
|
40
|
+
{
|
|
41
|
+
type: Caip25CaveatType,
|
|
42
|
+
value: caveatWithAccounts,
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
hooks.grantPermissions(permissions);
|
|
48
|
+
const sessionScopes = getSessionScopes(caveatWithAccounts);
|
|
49
|
+
return { sessionScopes, sessionProperties: caveat.sessionProperties };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=create-session.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session.mjs","sourceRoot":"","sources":["../../../src/middleware/multichain/create-session.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,0CAA0C,EAC3C,4CAA4C;AAE7C,OAAO,EAAE,SAAS,EAAE,6BAA6B;AACjD,OAAO,EACL,KAAK,EACL,EAAE,EACF,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACP,8BAA8B;AAC/B,OAAO,EAEL,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EAEX,wBAAwB;AAEzB,OAAO,EAAE,gBAAgB,EAAE,oBAAgB;AAQ3C,MAAM,YAAY,GAAG,MAAM,CACzB,iBAAiB,EACjB,MAAM,CAAC;IACL,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACpC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CACH,CAAC;AAEF,MAAM,yBAAyB,GAAG,MAAM,CAAC;IACvC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC;IACtC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC;IACtC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;CAC1D,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,KAAgC;IAEhC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAAE,CAAC;QACnD,MAAM,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG;QACb,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE;QACzD,kBAAkB,EAAE,IAAI;KACzB,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK;SACnB,WAAW,EAAE;SACb,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;IAEJ,MAAM,kBAAkB,GAAG,0CAA0C,CACnE,MAAM,EACN,QAA2B,CAC5B,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,CAAC,6BAA6B,CAAC,EAAE;YAC/B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,kBAAkB;iBAC1B;aACF;SACF;KACsB,CAAC;IAE1B,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAE3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACxE,CAAC","sourcesContent":["import {\n Caip25CaveatType,\n Caip25EndowmentPermissionName,\n setNonSCACaipAccountIdsInCaip25CaveatValue,\n} from '@metamask/chain-agnostic-permission';\nimport type { RequestedPermissions } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport {\n array,\n is,\n object,\n string,\n optional,\n record,\n} from '@metamask/superstruct';\nimport {\n type CaipAccountId,\n CaipAccountIdStruct,\n CaipChainIdStruct,\n JsonStruct,\n type JsonRpcRequest,\n} from '@metamask/utils';\n\nimport { getSessionScopes } from './utils';\nimport type { SimulationAccount } from '../../options';\n\nexport type CreateSessionHandlerHooks = {\n grantPermissions: (permissions: RequestedPermissions) => void;\n getAccounts: () => SimulationAccount[];\n};\n\nconst ScopesStruct = record(\n CaipChainIdStruct,\n object({\n methods: array(string()),\n accounts: array(CaipAccountIdStruct),\n notifications: array(string()),\n }),\n);\n\nconst CreateSessionParamsStruct = object({\n requiredScopes: optional(ScopesStruct),\n optionalScopes: optional(ScopesStruct),\n sessionProperties: optional(record(string(), JsonStruct)),\n});\n\n/**\n * A handler that implements a simplified version of `wallet_createSession`.\n *\n * @param request - Incoming JSON-RPC request.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function createSessionHandler(\n request: JsonRpcRequest,\n hooks: CreateSessionHandlerHooks,\n) {\n if (!is(request.params, CreateSessionParamsStruct)) {\n throw rpcErrors.invalidParams({ data: { request } });\n }\n\n const caveat = {\n requiredScopes: request.params.requiredScopes ?? {},\n optionalScopes: request.params.optionalScopes ?? {},\n sessionProperties: request.params.sessionProperties ?? {},\n isMultichainOrigin: true,\n };\n\n const accounts = hooks\n .getAccounts()\n .flatMap((account) =>\n account.scopes.map((scope) => `${scope}:${account.address}`),\n );\n\n const caveatWithAccounts = setNonSCACaipAccountIdsInCaip25CaveatValue(\n caveat,\n accounts as CaipAccountId[],\n );\n\n const permissions = {\n [Caip25EndowmentPermissionName]: {\n caveats: [\n {\n type: Caip25CaveatType,\n value: caveatWithAccounts,\n },\n ],\n },\n } as RequestedPermissions;\n\n hooks.grantPermissions(permissions);\n\n const sessionScopes = getSessionScopes(caveatWithAccounts);\n\n return { sessionScopes, sessionProperties: caveat.sessionProperties };\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSessionHandler = void 0;
|
|
4
|
+
const chain_agnostic_permission_1 = require("@metamask/chain-agnostic-permission");
|
|
5
|
+
const utils_1 = require("./utils.cjs");
|
|
6
|
+
/**
|
|
7
|
+
* A handler that implements a simplified version of `wallet_getSession`.
|
|
8
|
+
*
|
|
9
|
+
* @param _request - Incoming JSON-RPC request. Ignored for this specific
|
|
10
|
+
* handler.
|
|
11
|
+
* @param hooks - The method hooks.
|
|
12
|
+
* @returns The JSON-RPC response.
|
|
13
|
+
*/
|
|
14
|
+
function getSessionHandler(_request, hooks) {
|
|
15
|
+
const caveat = hooks.getCaveat(chain_agnostic_permission_1.Caip25EndowmentPermissionName, chain_agnostic_permission_1.Caip25CaveatType);
|
|
16
|
+
const sessionScopes = caveat ? (0, utils_1.getSessionScopes)(caveat.value) : {};
|
|
17
|
+
return { sessionScopes };
|
|
18
|
+
}
|
|
19
|
+
exports.getSessionHandler = getSessionHandler;
|
|
20
|
+
//# sourceMappingURL=get-session.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-session.cjs","sourceRoot":"","sources":["../../../src/middleware/multichain/get-session.ts"],"names":[],"mappings":";;;AACA,mFAG6C;AAI7C,uCAA2C;AAS3C;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,QAAwB,EACxB,KAA6B;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAC5B,yDAA6B,EAC7B,4CAAgB,CACoB,CAAC;IAEvC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC3B,CAAC;AAZD,8CAYC","sourcesContent":["import type { Caip25CaveatValue } from '@metamask/chain-agnostic-permission';\nimport {\n Caip25CaveatType,\n Caip25EndowmentPermissionName,\n} from '@metamask/chain-agnostic-permission';\nimport type { Caveat } from '@metamask/permission-controller';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { getSessionScopes } from './utils';\n\nexport type GetSessionHandlerHooks = {\n getCaveat: (\n permission: string,\n caveatType: string,\n ) => Caveat<string, Json> | undefined;\n};\n\n/**\n * A handler that implements a simplified version of `wallet_getSession`.\n *\n * @param _request - Incoming JSON-RPC request. Ignored for this specific\n * handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport function getSessionHandler(\n _request: JsonRpcRequest,\n hooks: GetSessionHandlerHooks,\n) {\n const caveat = hooks.getCaveat(\n Caip25EndowmentPermissionName,\n Caip25CaveatType,\n ) as Caveat<string, Caip25CaveatValue>;\n\n const sessionScopes = caveat ? getSessionScopes(caveat.value) : {};\n\n return { sessionScopes };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Caveat } from "@metamask/permission-controller";
|
|
2
|
+
import type { Json, JsonRpcRequest } from "@metamask/utils";
|
|
3
|
+
export type GetSessionHandlerHooks = {
|
|
4
|
+
getCaveat: (permission: string, caveatType: string) => Caveat<string, Json> | undefined;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A handler that implements a simplified version of `wallet_getSession`.
|
|
8
|
+
*
|
|
9
|
+
* @param _request - Incoming JSON-RPC request. Ignored for this specific
|
|
10
|
+
* handler.
|
|
11
|
+
* @param hooks - The method hooks.
|
|
12
|
+
* @returns The JSON-RPC response.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getSessionHandler(_request: JsonRpcRequest, hooks: GetSessionHandlerHooks): {
|
|
15
|
+
sessionScopes: import("@metamask/chain-agnostic-permission").NormalizedScopesObject;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=get-session.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-session.d.cts","sourceRoot":"","sources":["../../../src/middleware/multichain/get-session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,wCAAwC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,wBAAwB;AAI5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,KACf,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,sBAAsB;;EAU9B"}
|