diff --git a/src/modules/plugins/rpc.ts b/src/modules/plugins/rpc.ts index 400a3cb..f1931ef 100644 --- a/src/modules/plugins/rpc.ts +++ b/src/modules/plugins/rpc.ts @@ -11,13 +11,30 @@ import { import { getRpcByPeer } from "../rpc"; import { get as getSwarm, LUMEWEB_TOPIC_HASH } from "../swarm"; import b4a from "b4a"; -import pTimeout, { ClearablePromise } from "p-timeout"; + +import type { ClearablePromise } from "p-timeout"; + +async function dImport(pkg: string): Promise { + return new Function(`return import("${pkg}")`); +} + +let pTimeout: typeof import("p-timeout").default; +const pTimeoutImport = dImport( + "p-timeout" +) as unknown as typeof import("p-timeout"); + +async function importSetup() { + if (!pTimeout) { + pTimeout = (await pTimeoutImport).default; + } +} async function broadcastRequest( request: RPCRequest, relays: string[], timeout = 5000 ): Promise>> { + await importSetup(); const makeRequest = async (relay: string) => { const rpc = await getRpcByPeer(relay); return rpc.request(`${request.module}.${request.method}`, request.data);