UNPKG

zkverifyjs

Version:

Submit proofs to zkVerify and query proof state with ease using our npm package.

45 lines 1.3 kB
export async function closeSession(provider) { if (!provider) { return; } const disconnectWithRetries = async (name, disconnectFn, isConnectedFn) => { let retries = 5; while (retries > 0) { try { await disconnectFn(); if (!isConnectedFn()) return; } catch (error) { console.debug(`Retrying ${name} disconnect due to error:`, error); } retries--; await new Promise(resolve => setTimeout(resolve, 500)); } console.warn(`Failed to disconnect ${name} after 5 attempts.`); }; try { const apiInstances = provider._apis; if (apiInstances?.length) { await Promise.all(apiInstances.map(async api => { if (api?.isConnected) { await api.disconnect(); } })); } } catch (error) { console.debug('Error while unsubscribing API instances:', error); } try { if ('removeAllListeners' in provider) { provider.removeAllListeners(); } } catch (error) { console.debug('Error while removing event listeners:', error); } if (provider.isConnected) { try { await disconnectWithRetries('Provider', () => provider.disconnect(), () => provider.isConnected); } catch (error) { console.warn('Provider disconnection failed:', error); } } }