From 2e298dd9f2194504ae58b8894f6b1bbf9ea29c37 Mon Sep 17 00:00:00 2001 From: ultraviolet10 Date: Mon, 14 Jul 2025 19:10:24 +0530 Subject: [PATCH 1/2] refactor: allow injecting existing PublicClient into SemaphoreViem --- packages/data/src/types/index.ts | 3 ++- packages/data/src/viem.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/data/src/types/index.ts b/packages/data/src/types/index.ts index 4e003526b..2d3a38c0a 100644 --- a/packages/data/src/types/index.ts +++ b/packages/data/src/types/index.ts @@ -1,4 +1,4 @@ -import { Chain, Transport } from "viem" +import { Chain, PublicClient, Transport } from "viem" export type EthersNetwork = | "mainnet" @@ -65,4 +65,5 @@ export type ViemOptions = { transport?: Transport // Transport from viem chain?: Chain // Chain from viem apiKey?: string + publicClient?: PublicClient } diff --git a/packages/data/src/viem.ts b/packages/data/src/viem.ts index 283209075..a8cd97192 100644 --- a/packages/data/src/viem.ts +++ b/packages/data/src/viem.ts @@ -131,10 +131,12 @@ export default class SemaphoreViem { this._options = options // Create the public client - this._client = createPublicClient({ - transport, - chain: options.chain as Chain - }) + this._client = + options.publicClient ?? + createPublicClient({ + transport, + chain: options.chain as Chain + }) // Create the contract instance this._contract = getContract({ From 7c1e58a3d69852e0cb59ffbdf6f450a7ac7f2989 Mon Sep 17 00:00:00 2001 From: ultraviolet10 Date: Mon, 14 Jul 2025 19:16:54 +0530 Subject: [PATCH 2/2] fix: remove comment --- packages/data/src/viem.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/data/src/viem.ts b/packages/data/src/viem.ts index a8cd97192..e1d397836 100644 --- a/packages/data/src/viem.ts +++ b/packages/data/src/viem.ts @@ -117,7 +117,6 @@ export default class SemaphoreViem { throw new Error(`Network '${networkOrEthereumURL}' needs a Semaphore contract address`) } - // Create the public client let transport: Transport if (options.transport) {