UNPKG

@metamask/snaps-rpc-methods

Version:
92 lines 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSnapsMethodMiddleware = void 0; const json_rpc_engine_1 = require("@metamask/json-rpc-engine"); const rpc_errors_1 = require("@metamask/rpc-errors"); const snaps_utils_1 = require("@metamask/snaps-utils"); const cancelBackgroundEvent_1 = require("./cancelBackgroundEvent.cjs"); const clearState_1 = require("./clearState.cjs"); const closeWebSocket_1 = require("./closeWebSocket.cjs"); const createInterface_1 = require("./createInterface.cjs"); const endTrace_1 = require("./endTrace.cjs"); const getAllSnaps_1 = require("./getAllSnaps.cjs"); const getBackgroundEvents_1 = require("./getBackgroundEvents.cjs"); const getClientStatus_1 = require("./getClientStatus.cjs"); const getFile_1 = require("./getFile.cjs"); const getInterfaceContext_1 = require("./getInterfaceContext.cjs"); const getInterfaceState_1 = require("./getInterfaceState.cjs"); const getSnaps_1 = require("./getSnaps.cjs"); const getState_1 = require("./getState.cjs"); const getWebSockets_1 = require("./getWebSockets.cjs"); const invokeKeyring_1 = require("./invokeKeyring.cjs"); const invokeSnapSugar_1 = require("./invokeSnapSugar.cjs"); const listEntropySources_1 = require("./listEntropySources.cjs"); const messengerCall_1 = require("./messengerCall.cjs"); const openWebSocket_1 = require("./openWebSocket.cjs"); const requestSnaps_1 = require("./requestSnaps.cjs"); const resolveInterface_1 = require("./resolveInterface.cjs"); const scheduleBackgroundEvent_1 = require("./scheduleBackgroundEvent.cjs"); const sendWebSocketMessage_1 = require("./sendWebSocketMessage.cjs"); const setState_1 = require("./setState.cjs"); const startTrace_1 = require("./startTrace.cjs"); const trackError_1 = require("./trackError.cjs"); const trackEvent_1 = require("./trackEvent.cjs"); const updateInterface_1 = require("./updateInterface.cjs"); /* eslint-disable @typescript-eslint/naming-convention */ const methodHandlers = { wallet_getAllSnaps: getAllSnaps_1.getAllSnapsHandler, wallet_getSnaps: getSnaps_1.getSnapsHandler, wallet_requestSnaps: requestSnaps_1.requestSnapsHandler, wallet_invokeSnap: invokeSnapSugar_1.invokeSnapSugarHandler, wallet_invokeKeyring: invokeKeyring_1.invokeKeyringHandler, snap_clearState: clearState_1.clearStateHandler, snap_getClientStatus: getClientStatus_1.getClientStatusHandler, snap_getFile: getFile_1.getFileHandler, snap_getState: getState_1.getStateHandler, snap_createInterface: createInterface_1.createInterfaceHandler, snap_updateInterface: updateInterface_1.updateInterfaceHandler, snap_getInterfaceState: getInterfaceState_1.getInterfaceStateHandler, snap_getInterfaceContext: getInterfaceContext_1.getInterfaceContextHandler, snap_listEntropySources: listEntropySources_1.listEntropySourcesHandler, snap_resolveInterface: resolveInterface_1.resolveInterfaceHandler, snap_scheduleBackgroundEvent: scheduleBackgroundEvent_1.scheduleBackgroundEventHandler, snap_cancelBackgroundEvent: cancelBackgroundEvent_1.cancelBackgroundEventHandler, snap_getBackgroundEvents: getBackgroundEvents_1.getBackgroundEventsHandler, snap_setState: setState_1.setStateHandler, snap_trackError: trackError_1.trackErrorHandler, snap_trackEvent: trackEvent_1.trackEventHandler, snap_openWebSocket: openWebSocket_1.openWebSocketHandler, snap_closeWebSocket: closeWebSocket_1.closeWebSocketHandler, snap_sendWebSocketMessage: sendWebSocketMessage_1.sendWebSocketMessageHandler, snap_getWebSockets: getWebSockets_1.getWebSocketsHandler, snap_startTrace: startTrace_1.startTraceHandler, snap_endTrace: endTrace_1.endTraceHandler, snap_messengerCall: messengerCall_1.messengerCallHandler, }; /* eslint-enable @typescript-eslint/naming-convention */ /** * Creates a middleware that handles permitted snap RPC methods. * * @param isSnap - A flag that should indicate whether the requesting origin is a snap or not. * @param hooks - An object containing the hooks made available to the permitted RPC methods. * @param messenger - The messenger. * @returns The middleware. */ function createSnapsMethodMiddleware(isSnap, hooks, messenger) { const nestedMiddleware = (0, json_rpc_engine_1.createMethodMiddleware)({ handlers: methodHandlers, hooks, messenger, onError: snaps_utils_1.logError, }); // This is not actually a misused promise, the type is just wrong // eslint-disable-next-line @typescript-eslint/no-misused-promises return async function methodMiddleware(request, response, next, end) { if (String.prototype.startsWith.call(request.method, 'snap_') && !isSnap) { return end(rpc_errors_1.rpcErrors.methodNotFound()); } return nestedMiddleware(request, response, next, end); }; } exports.createSnapsMethodMiddleware = createSnapsMethodMiddleware; //# sourceMappingURL=middleware.cjs.map