{"version":3,"sources":["iterable-weak-set.ts"],"sourcesContent":["/**\n * A WeakSet with iterable entries\n */\nexport class IterableWeakSet<T extends WeakKey> extends Set {\n\n\t// additional internal WeakSet for faster lookups\n\t#weakSet = new WeakSet<T>()\n\n\tadd(value: T): this {\n\t\t// already added\n\t\tif (this.#weakSet.has(value)) return this;\n\t\tthis.#weakSet.add(value);\n\t\treturn super.add(new WeakRef(value));\n\t}\n\n\tdelete(value: T): boolean {\n\t\tif (!this.#weakSet.has(value)) return false;\n\t\tthis.#weakSet.delete(value);\n\t\t\n\t\tconst deleting = new Set<WeakRef<T>>()\n\t\ttry {\n\t\t\tfor (const valRef of super.values() as Iterable<WeakRef<T>>) {\n\t\t\t\tconst val = valRef.deref()\n\t\t\t\tif (val == undefined) {\n\t\t\t\t\tdeleting.add(valRef)\n\t\t\t\t\tcontinue;\n\t\t\t\t} \n\t\t\t\tif (val === value) {\n\t\t\t\t\tdeleting.add(valRef)\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tfinally {\n\t\t\tfor (const valRef of deleting) super.delete(valRef);\n\t\t}\n\t}\n\n\thas(value: T): boolean {\n\t\treturn this.#weakSet.has(value);\n\t}\n\n\t*values(): IterableIterator<T> {\n\t\tconst deleting = new Set<WeakRef<T>>()\n\t\ttry {\n\t\t\tfor (const valRef of super.values() as Iterable<WeakRef<T>>) {\n\t\t\t\tconst val = valRef.deref()\n\t\t\t\tif (val == undefined) {\n\t\t\t\t\tdeleting.add(valRef);\n\t\t\t\t\tcontinue;\n\t\t\t\t} \n\t\t\t\tyield val;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tfor (const valRef of deleting) super.delete(valRef);\n\t\t}\n\t}\n\n\tclear() {\n\t\tthis.#weakSet = new WeakSet()\n\t\tsuper.clear()\n\t}\n\n\tkeys(): IterableIterator<T> {\n\t\treturn this.values()\n\t}\n\n\t*entries(): IterableIterator<[T, T]> {\n\t\tfor (const val of this.values()) {\n\t\t\tyield [val, val]\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.values()\n\t}\n}"],"names":["Symbol","iterator","IterableWeakSet","Set","WeakSet","add","value","has","WeakRef","delete","deleting","valRef","values","val","deref","undefined","clear","keys","entries"],"mappings":";eA2EEA,OAAOC,QAAQ;AAxEjB,OAAO,MAAMC,wBAA2CC;IAGvD,CAAA,OAAQ,GAAG,IAAIC,UAAY;IAE3BC,IAAIC,KAAQ,EAAQ;eAEnB,AAAI,IAAI,CAAC,CAAA,OAAQ,CAACC,GAAG,CAACD,SAAe,IAAI,IACzC,IAAI,CAAC,CAAA,OAAQ,CAACD,GAAG,CAACC,QACX,KAAK,CAACD,IAAI,IAAIG,QAAQF;IAC9B;IAEAG,OAAOH,KAAQ,EAAW;QACzB,IAAI,CAAC,IAAI,CAAC,CAAA,OAAQ,CAACC,GAAG,CAACD,QAAQ,OAAO,CAAA;QACtC,IAAI,CAAC,CAAA,OAAQ,CAACG,MAAM,CAACH;QAErB,IAAMI,WAAW,IAAIP;QACrB,IAAI;YACH,KAAK,IAAMQ,UAAU,KAAK,CAACC,SAAkC;gBAC5D,IAAMC,MAAMF,OAAOG,KAAK;gBACxB,IAAID,AAAOE,KAAAA,KAAPF,KAAkB;oBACrBH,SAASL,GAAG,CAACM;oBACb;gBACD;gBACA,IAAIE,QAAQP,OAEX,OADAI,SAASL,GAAG,CAACM,SACN,CAAA;YAET;YACA,OAAO,CAAA;QACR,SACQ;YACP,KAAK,IAAMA,UAAUD,SAAU,KAAK,CAACD,OAAOE;QAC7C;IACD;IAEAJ,IAAID,KAAQ,EAAW;QACtB,OAAO,IAAI,CAAC,CAAA,OAAQ,CAACC,GAAG,CAACD;IAC1B;IAEA,CAACM,SAA8B;QAC9B,IAAMF,WAAW,IAAIP;QACrB,IAAI;YACH,KAAK,IAAMQ,UAAU,KAAK,CAACC,SAAkC;gBAC5D,IAAMC,MAAMF,OAAOG,KAAK;gBACxB,IAAID,AAAOE,KAAAA,KAAPF,KAAkB;oBACrBH,SAASL,GAAG,CAACM;oBACb;gBACD;gBACA,MAAME;YACP;QACD,SACQ;YACP,KAAK,IAAMF,UAAUD,SAAU,KAAK,CAACD,OAAOE;QAC7C;IACD;IAEAK,QAAQ;QACP,IAAI,CAAC,CAAA,OAAQ,GAAG,IAAIZ,WACpB,KAAK,CAACY;IACP;IAEAC,OAA4B;QAC3B,OAAO,IAAI,CAACL,MAAM;IACnB;IAEA,CAACM,UAAoC;QACpC,KAAK,IAAML,OAAO,IAAI,CAACD,MAAM,GAC5B,MAAM;YAACC;YAAKA;SAAI;IAElB;IAEA,iBAAoB;QACnB,OAAO,IAAI,CAACD,MAAM;IACnB;AACD","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"iterable-weak-set.ts"}