MCPcopy Create free account
hub / github.com/Web3Auth/Auth / providerFromEngine

Function providerFromEngine

src/jrpc/jrpcEngine.ts:468–511  ·  view source on GitHub ↗
(engine: JRPCEngine)

Source from the content-addressed store, hash-verified

466 * @deprecated Use {@link providerFromEngineV2} instead.
467 */
468export function providerFromEngine(engine: JRPCEngine): SafeEventEmitterProvider {
469 const provider: SafeEventEmitterProvider = new SafeEventEmitter<ProviderEvents>() as SafeEventEmitterProvider;
470 // handle both rpc send methods
471 provider.sendAsync = async <T extends JRPCParams, U>(req: JRPCRequest<T>) => {
472 const res = await engine.handle(req);
473 if (res.error) {
474 if (typeof res.error === "object" && Object.keys(res.error).includes("stack") === false) res.error.stack = "Stack trace is not available.";
475 log.error(res.error);
476 const err = serializeJrpcError(res.error, {
477 fallbackError: constructFallbackError(res.error),
478 shouldIncludeStack: true,
479 });
480
481 const errorCode = err?.code ?? errorCodes.rpc.internal;
482 const error = new JsonRpcError(errorCode, err?.message ?? getMessageFromCode(errorCode), err?.data);
483 throw error;
484 }
485 return res.result as U;
486 };
487
488 provider.send = <T extends JRPCParams, U>(req: JRPCRequest<T>, callback: (error: unknown, providerRes: JRPCResponse<U>) => void) => {
489 if (typeof callback !== "function") {
490 throw new Error('Must provide callback to "send" method.');
491 }
492 engine.handle(req as JRPCRequest<JRPCParams>, callback);
493 };
494 // forward notifications
495 if (engine.on) {
496 engine.on("notification", (message) => {
497 provider.emit("data", null, message);
498 });
499 }
500
501 provider.request = async <T extends JRPCParams, U>(args: RequestArguments<T>) => {
502 const req: JRPCRequest<JRPCParams> = {
503 ...args,
504 id: Math.random().toString(36).slice(2),
505 jsonrpc: "2.0",
506 };
507 const res = await provider.sendAsync(req);
508 return res as U;
509 };
510 return provider;
511}
512
513/**
514 * @deprecated Use {@link providerFromMiddlewareV2} instead.

Callers 2

jrpcEngine.test.tsFile · 0.90
providerFromMiddlewareFunction · 0.70

Calls 6

serializeJrpcErrorFunction · 0.90
getMessageFromCodeFunction · 0.90
constructFallbackErrorFunction · 0.85
emitMethod · 0.80
toStringMethod · 0.65
handleMethod · 0.45

Tested by

no test coverage detected