{"version":3,"sources":["../src/collection/weakObjectMap.ts"],"names":["WeakObjectMap","key","value","weakRef"],"mappings":";;;;AAWO,IAAMA,EAAN,KAAsC,CAOzC,aAAc,CACV,IAAA,CAAK,IAAM,IAAI,GAAA,CACf,KAAK,oBAAuB,CAAA,IAAI,qBAAsBC,CAAQ,EAAA,CAC1D,KAAK,GAAI,CAAA,MAAA,CAAOA,CAAG,EACvB,CAAC,EACL,CAOA,GAAA,CAAIA,EAAaC,CAAgB,CAAA,CAC7B,IAAMC,CAAU,CAAA,IAAI,QAAQD,CAAK,CAAA,CACjC,KAAK,GAAI,CAAA,GAAA,CAAID,EAAKE,CAAO,CAAA,CACzB,KAAK,oBAAqB,CAAA,QAAA,CAASD,EAAOD,CAAG,EACjD,CAOA,GAAA,CAAIA,EAA4B,CAC5B,IAAME,EAAU,IAAK,CAAA,GAAA,CAAI,IAAIF,CAAG,CAAA,CAChC,OAAOE,CAAUA,CAAAA,CAAAA,CAAQ,OAAU,CAAA,MACvC,CAOA,MAAOF,CAAAA,CAAAA,CAAsB,CACzB,OAAO,IAAA,CAAK,IAAI,MAAOA,CAAAA,CAAG,CAC9B,CAOA,GAAA,CAAIA,EAAsB,CACtB,IAAME,EAAU,IAAK,CAAA,GAAA,CAAI,IAAIF,CAAG,CAAA,CAChC,OAAOE,CAAUA,CAAAA,CAAAA,CAAQ,OAAY,GAAA,MAAA,CAAY,KACrD,CACJ","file":"chunk-F6AU7UGK.mjs","sourcesContent":["// @ts-nocheck\n/**\n * 一个基于弱引用（WeakRef）的键值映射集合\n * \n * @template T - 值的类型，必须是对象类型（继承自 `object`）\n * \n * @example\n * const map = new WeakObjectMap<MyObject>();\n * map.set('key1', obj1);\n * const retrieved = map.get('key1'); // 返回 obj1 或 undefined（如果已被垃圾回收）\n */\nexport class WeakObjectMap<T extends object> {\n    private map: Map<string, WeakRef<T>>;\n    private finalizationRegistry: FinalizationRegistry<string>;\n\n    /**\n     * 构造一个新的 WeakObjectMap 实例\n     */\n    constructor() {\n        this.map = new Map();\n        this.finalizationRegistry = new FinalizationRegistry((key) => {\n            this.map.delete(key);\n        });\n    }\n\n    /**\n     * 设置键值对\n     * @param key - 字符串键名\n     * @param value - 要存储的对象值（会被自动包装为弱引用）\n     */\n    set(key: string, value: T): void {\n        const weakRef = new WeakRef(value);\n        this.map.set(key, weakRef);\n        this.finalizationRegistry.register(value, key);\n    }\n\n    /**\n     * 获取指定键对应的值\n     * @param key - 要查找的键名\n     * @returns 如果值存在且未被垃圾回收则返回值，否则返回 undefined\n     */\n    get(key: string): T | undefined {\n        const weakRef = this.map.get(key);\n        return weakRef ? weakRef.deref() : undefined;\n    }\n\n    /**\n     * 删除指定键的映射\n     * @param key - 要删除的键名\n     * @returns 如果键存在并已删除则返回 true，否则返回 false\n     */\n    delete(key: string): boolean {\n        return this.map.delete(key);\n    }\n\n    /**\n     * 检查是否存在指定键的映射（且值未被垃圾回收）\n     * @param key - 要检查的键名\n     * @returns 如果键存在且值未被回收则返回 true，否则返回 false\n     */\n    has(key: string): boolean {\n        const weakRef = this.map.get(key);\n        return weakRef ? weakRef.deref() !== undefined : false;\n    }\n}\n"]}