{"version":3,"file":"GlobalResourceRegistry.mjs","sources":["../../../src/utils/pool/GlobalResourceRegistry.ts"],"sourcesContent":["/** Interface for objects that can be cleaned up by the PoolCollector. */\ninterface Cleanable\n{\n    clear(): void;\n}\n\n/**\n * A singleton collector that manages and provides cleanup for registered pools and caches.\n * Useful for cleaning up all pools/caches at once during application shutdown or reset.\n * @category utils\n * @internal\n */\nexport const GlobalResourceRegistry = {\n    /**\n     * Set of registered pools and cleanable objects.\n     * @private\n     */\n    _registeredResources: new Set<Cleanable>(),\n\n    /**\n     * Registers a pool or cleanable object for cleanup.\n     * @param {Cleanable} pool - The pool or object to register.\n     */\n    register(pool: Cleanable): void\n    {\n        this._registeredResources.add(pool);\n    },\n\n    /**\n     * Unregisters a pool or cleanable object from cleanup.\n     * @param {Cleanable} pool - The pool or object to unregister.\n     */\n    unregister(pool: Cleanable): void\n    {\n        this._registeredResources.delete(pool);\n    },\n\n    /** Clears all registered pools and cleanable objects. This will call clear() on each registered item. */\n    release(): void\n    {\n        this._registeredResources.forEach((pool) => pool.clear());\n    },\n\n    /**\n     * Gets the number of registered pools and cleanable objects.\n     * @returns {number} The count of registered items.\n     */\n    get registeredCount(): number\n    {\n        return this._registeredResources.size;\n    },\n\n    /**\n     * Checks if a specific pool or cleanable object is registered.\n     * @param {Cleanable} pool - The pool or object to check.\n     * @returns {boolean} True if the item is registered, false otherwise.\n     */\n    isRegistered(pool: Cleanable): boolean\n    {\n        return this._registeredResources.has(pool);\n    },\n\n    /**\n     * Removes all registrations without clearing the pools.\n     * Useful if you want to reset the collector without affecting the pools.\n     */\n    reset(): void\n    {\n        this._registeredResources.clear();\n    }\n};\n"],"names":[],"mappings":";AAYO,MAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,oBAAA,sBAA0B,GAAA,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC,SAAS,IAAA,EACT;AACI,IAAA,IAAA,CAAK,oBAAA,CAAqB,IAAI,IAAI,CAAA;AAAA,EACtC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,IAAA,EACX;AACI,IAAA,IAAA,CAAK,oBAAA,CAAqB,OAAO,IAAI,CAAA;AAAA,EACzC,CAAA;AAAA;AAAA,EAGA,OAAA,GACA;AACI,IAAA,IAAA,CAAK,qBAAqB,OAAA,CAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAA;AAAA,EAC5D,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,eAAA,GACJ;AACI,IAAA,OAAO,KAAK,oBAAA,CAAqB,IAAA;AAAA,EACrC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,IAAA,EACb;AACI,IAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,IAAI,CAAA;AAAA,EAC7C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAA,GACA;AACI,IAAA,IAAA,CAAK,qBAAqB,KAAA,EAAM;AAAA,EACpC;AACJ;;;;"}