UNPKG

zkverifyjs

Version:

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

55 lines (54 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.closeSession = closeSession; 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); } } }