UNPKG

@metamask/snaps-simulation

Version:

A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment

40 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createJsonRpcEngine = void 0; const eth_json_rpc_middleware_1 = require("@metamask/eth-json-rpc-middleware"); const json_rpc_engine_1 = require("@metamask/json-rpc-engine"); const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods"); const internal_methods_1 = require("./internal-methods/index.cjs"); const mock_1 = require("./mock.cjs"); const constants_1 = require("../constants.cjs"); /** * Create a JSON-RPC engine for use in a simulated environment. This engine * should be used to handle all JSON-RPC requests. It is set up to handle * requests that would normally be handled internally by the MetaMask client, as * well as Snap-specific requests. * * @param options - The options to use when creating the engine. * @param options.store - The Redux store to use. * @param options.restrictedHooks - Any hooks used by the middleware handlers. * @param options.permittedHooks - Any hooks used by the middleware handlers. * @param options.permissionMiddleware - The permission middleware to use. * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests. * @returns A JSON-RPC engine. */ function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, endpoint = constants_1.DEFAULT_JSON_RPC_ENDPOINT, }) { const engine = new json_rpc_engine_1.JsonRpcEngine(); engine.push((0, mock_1.createMockMiddleware)(store)); // The hooks here do not match the hooks used by the clients, so this // middleware should not be used outside of the simulation environment. engine.push((0, internal_methods_1.createInternalMethodsMiddleware)(restrictedHooks)); engine.push((0, snaps_rpc_methods_1.createSnapsMethodMiddleware)(true, permittedHooks)); engine.push(permissionMiddleware); engine.push((0, eth_json_rpc_middleware_1.createFetchMiddleware)({ btoa: globalThis.btoa, fetch: globalThis.fetch, rpcUrl: endpoint, })); return engine; } exports.createJsonRpcEngine = createJsonRpcEngine; //# sourceMappingURL=engine.cjs.map