Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 1x 7x 1x 7x 7x 7x 7x 5x | import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
import { RpcService } from '@metamask/kernel-rpc-methods';
import type { KernelDatabase } from '@metamask/kernel-store';
import type { Kernel } from '@metamask/ocap-kernel';
import { isJsonRpcRequest } from '@metamask/utils';
import { rpcHandlers } from '../../rpc-handlers/index.ts';
/**
* Makes a middleware function that handles panel messages.
*
* @param kernel - The kernel instance.
* @param kernelDatabase - The kernel database instance.
* @returns The middleware function.
*/
export const makePanelMessageMiddleware = (
kernel: Kernel,
kernelDatabase: KernelDatabase,
): JsonRpcMiddleware => {
const rpcService: RpcService<typeof rpcHandlers> = new RpcService(
rpcHandlers,
{
kernel,
executeDBQuery: (sql: string) => kernelDatabase.executeQuery(sql),
},
);
return async ({ request }) => {
const { method, params } = request;
rpcService.assertHasMethod(method);
const result = await rpcService.execute(method, params);
return isJsonRpcRequest(request) ? result : undefined;
};
};
|