import { url } from "./url.js" ; import { Manager , ManagerOptions } from "./manager.js" ; import { Socket , SocketOptions } from "./socket.js" ; import debugModule from "debug" ; const debug = debugModule ( "socket.io-client" ) ; /**
 * Managers cache.
 */ const cache = { } ; public function lookup ( opts ? ) ; function lookup ( uri , opts ? ) ; function lookup ( uri , opts ? ) ; function lookup ( uri , opts ? ) { if ( typeof uri === "object" ) { opts = uri ; uri = undefined ; } opts = opts || { } ; const parsed = url ( uri as string , opts . path || "/socket.io" ) ; const source = parsed . source ; const id = parsed . id ; const path = parsed . path ; const sameNamespace = cache [ id ] && path in cache [ id ] [ "nsps" ] ; const newConnection = opts . forceNew || opts [ "force new connection" ] || false === opts . multiplex || sameNamespace ; let io ; if ( newConnection ) { debug ( "ignoring socket cache for %s" , source ) ; io = new Manager ( source , opts ) ; } else { if ( ! cache [ id ] ) { debug ( "new io instance for %s" , source ) ; cache [ id ] = new Manager ( source , opts ) ; } io = cache [ id ] ; } if ( parsed . query && ! opts . query ) { opts . query = parsed . queryKey ; } return io . socket ( parsed . path , opts ) ; } Object . assign ( lookup , { Manager , Socket , io : lookup , connect : lookup , } ) ; public export { protocol } from "socket.io-parser" ; public export { Manager , ManagerOptions , Socket , SocketOptions , lookup as io , lookup as connect , lookup as default , } ;