import {Emitter} from '@welshman/lib' import {Connection} from "./Connection" export class Pool extends Emitter { data: Map constructor() { super() this.data = new Map() } has(url: string) { return this.data.has(url) } get(url: string): Connection { const oldConnection = this.data.get(url) if (oldConnection) { return oldConnection } const newConnection = new Connection(url) this.data.set(url, newConnection) this.emit('init', newConnection) return newConnection } remove(url: string) { const connection = this.data.get(url) if (connection) { connection.close() this.data.delete(url) } } clear() { for (const url of this.data.keys()) { this.remove(url) } } }