UNPKG

@metamask/snaps-rpc-methods

Version:
1 lines 3.71 kB
{"version":3,"file":"getBackgroundEvents.mjs","sourceRoot":"","sources":["../../src/permitted/getBackgroundEvents.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,6BAA6B;AAQtD,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAU/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc,EAAE,oCAAoC;IACpD,WAAW,EAAE,CAAC,oCAAoC,EAAE,uBAAuB,CAAC;CAO7E,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,oCAAoC,CACjD,GAAwD,EACxD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAA8D;IAE9D,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,cAAc,CAAC,OAAO,CACvB,EACD,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n GetBackgroundEventsParams,\n GetBackgroundEventsResult,\n SnapId,\n} from '@metamask/snaps-sdk';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n CronjobControllerGetAction,\n JsonRpcRequestWithOrigin,\n} from '../types';\n\nexport type GetBackgroundEventsMethodActions =\n | PermissionControllerHasPermissionAction\n | CronjobControllerGetAction;\n\n/**\n * Get the scheduled background events for the Snap.\n *\n * @example\n * ```ts\n * const events = await snap.request({\n * method: 'snap_getBackgroundEvents',\n * });\n * console.log(events);\n * // [\n * // {\n * // id: 'event-1',\n * // scheduledAt: 1672531200000,\n * // snapId: 'npm:example-snap',\n * // date: 1672531200000,\n * // request: {\n * // method: 'example_method',\n * // params: { example: 'data' },\n * // },\n * // },\n * // ...,\n * // ]\n * ```\n */\nexport const getBackgroundEventsHandler = {\n implementation: getGetBackgroundEventsImplementation,\n actionNames: ['PermissionController:hasPermission', 'CronjobController:get'],\n} satisfies MethodHandler<\n never,\n GetBackgroundEventsMethodActions,\n GetBackgroundEventsParams,\n GetBackgroundEventsResult,\n { origin: SnapId }\n>;\n\n/**\n * The `snap_getBackgroundEvents` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback.\n * Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns An array of background events.\n */\nasync function getGetBackgroundEventsImplementation(\n req: JsonRpcRequestWithOrigin<GetBackgroundEventsParams>,\n res: PendingJsonRpcResponse<GetBackgroundEventsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, GetBackgroundEventsMethodActions>,\n): Promise<void> {\n const { origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.Cronjob,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n try {\n res.result = messenger.call('CronjobController:get', origin);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}