"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParentNamespace = void 0; const namespace_1 = require("./namespace"); class ParentNamespace extends namespace_1.Namespace { constructor(server) { super(server, "/_" + ParentNamespace.count++); this.children = new Set(); } /** * @private */ _initAdapter() { const broadcast = (packet, opts) => { this.children.forEach((nsp) => { nsp.adapter.broadcast(packet, opts); }); }; // @ts-ignore FIXME is there a way to declare an inner class in TypeScript? this.adapter = { broadcast }; } emit(ev, ...args) { this.children.forEach((nsp) => { nsp.emit(ev, ...args); }); return true; } createChild(name) { const namespace = new namespace_1.Namespace(this.server, name); namespace._fns = this._fns.slice(0); this.listeners("connect").forEach((listener) => namespace.on("connect", listener)); this.listeners("connection").forEach((listener) => namespace.on("connection", listener)); this.children.add(namespace); this.server._nsps.set(name, namespace); return namespace; } fetchSockets() { // note: we could make the fetchSockets() method work for dynamic namespaces created with a regex (by sending the // regex to the other Socket.IO servers, and returning the sockets of each matching namespace for example), but // the behavior for namespaces created with a function is less clear // noteĀ²: we cannot loop over each children namespace, because with multiple Socket.IO servers, a given namespace // may exist on one node but not exist on another (since it is created upon client connection) throw new Error("fetchSockets() is not supported on parent namespaces"); } } exports.ParentNamespace = ParentNamespace; ParentNamespace.count = 0;