{"version":3,"sources":["iterable-weak-map.ts"],"sourcesContent":["/**\n * A WeakMap with iterable entries\n */\nexport class IterableWeakMap<K extends WeakKey, V> extends Map<any, V> {\n\n\t// additional internal WeakSet for faster lookups\n\t#weakMap = new WeakMap<K,V>()\n\n\tset(key: K, value: V): this {\n\t\t// already added\n\t\tif (this.#weakMap.has(key)) return this;\n\t\tthis.#weakMap.set(key, value);\n\t\treturn super.set(new WeakRef(key), value);\n\t}\n\n\tdelete(key: K): boolean {\n\t\tif (!this.#weakMap.has(key)) return false;\n\t\tthis.#weakMap.delete(key);\n\n\t\tconst deleting = new Set<WeakRef<K>>()\n\t\ttry {\n\t\t\tfor (const keyRef of super.keys() as Iterable<WeakRef<K>>) {\n\t\t\t\tconst unwrappedKey = keyRef.deref()\n\t\t\t\tif (unwrappedKey == undefined) {\n\t\t\t\t\tdeleting.add(keyRef);\n\t\t\t\t\tcontinue;\n\t\t\t\t} \n\t\t\t\tif (unwrappedKey === key) {\n\t\t\t\t\tdeleting.add(keyRef)\n\t\t\t\t\tfor (const keyRef of deleting) super.delete(keyRef);\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 keyRef of deleting) super.delete(keyRef);\n\t\t}\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.#weakMap.has(key);\n\t}\n\n\t*keys(): IterableIterator<K> {\n\t\tconst deleting = new Set<WeakRef<K>>()\n\t\ttry {\n\t\t\tfor (const keyRef of super.keys() as Iterable<WeakRef<K>>) {\n\t\t\t\tconst unwrappedKey = keyRef.deref()\n\t\t\t\tif (unwrappedKey == undefined) {\n\t\t\t\t\tdeleting.add(keyRef)\n\t\t\t\t\tcontinue;\n\t\t\t\t} \n\t\t\t\tyield unwrappedKey;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tfor (const keyRef of deleting) super.delete(keyRef);\n\t\t}\n\t}\n\n\tget(key: K): V|undefined {\n\t\treturn this.#weakMap.get(key);\n\t}\n\n\tclear() {\n\t\tthis.#weakMap = new WeakMap()\n\t\tsuper.clear()\n\t}\n\n\t*values(): IterableIterator<V> {\n\t\tfor (const [key, val] of this.entries()) {\n\t\t\tyield val\n\t\t}\n\t}\n\n\t*entries(): IterableIterator<[K, V]> {\n\t\tconst deleting = new Set<WeakRef<K>>()\n\t\ttry {\n\t\t\tfor (const [keyRef, val] of super.entries() as Iterable<[WeakRef<K>, V]>) {\n\t\t\t\tconst unwrappedKey = keyRef.deref()\n\t\t\t\tif (unwrappedKey == undefined) {\n\t\t\t\t\tdeleting.add(keyRef)\n\t\t\t\t\tcontinue;\n\t\t\t\t} \n\t\t\t\tyield [unwrappedKey, val];\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tfor (const keyRef of deleting) super.delete(keyRef);\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.entries()\n\t}\n}"],"names":["Symbol","iterator","IterableWeakMap","Map","WeakMap","set","key","value","has","WeakRef","delete","deleting","Set","keyRef","keys","unwrappedKey","deref","undefined","add","get","clear","values","val","entries"],"mappings":";eA6FEA,OAAOC,QAAQ;AA1FjB,OAAO,MAAMC,wBAA8CC;IAG1D,CAAA,OAAQ,GAAG,IAAIC,UAAc;IAE7BC,IAAIC,GAAM,EAAEC,KAAQ,EAAQ;eAE3B,AAAI,IAAI,CAAC,CAAA,OAAQ,CAACC,GAAG,CAACF,OAAa,IAAI,IACvC,IAAI,CAAC,CAAA,OAAQ,CAACD,GAAG,CAACC,KAAKC,QAChB,KAAK,CAACF,IAAI,IAAII,QAAQH,MAAMC;IACpC;IAEAG,OAAOJ,GAAM,EAAW;QACvB,IAAI,CAAC,IAAI,CAAC,CAAA,OAAQ,CAACE,GAAG,CAACF,MAAM,OAAO,CAAA;QACpC,IAAI,CAAC,CAAA,OAAQ,CAACI,MAAM,CAACJ;QAErB,IAAMK,WAAW,IAAIC;QACrB,IAAI;YACH,KAAK,IAAMC,UAAU,KAAK,CAACC,OAAgC;gBAC1D,IAAMC,eAAeF,OAAOG,KAAK;gBACjC,IAAID,AAAgBE,KAAAA,KAAhBF,cAA2B;oBAC9BJ,SAASO,GAAG,CAACL;oBACb;gBACD;gBACA,IAAIE,iBAAiBT,KAAK;oBAEzB,KAAK,IAAMO,YADXF,SAASO,GAAG,CAACL,SACQF,UAAU,KAAK,CAACD,OAAOG;oBAC5C,OAAO,CAAA;gBACR;YACD;YACA,OAAO,CAAA;QACR,SACQ;YACP,KAAK,IAAMA,UAAUF,SAAU,KAAK,CAACD,OAAOG;QAC7C;IACD;IAEAL,IAAIF,GAAM,EAAW;QACpB,OAAO,IAAI,CAAC,CAAA,OAAQ,CAACE,GAAG,CAACF;IAC1B;IAEA,CAACQ,OAA4B;QAC5B,IAAMH,WAAW,IAAIC;QACrB,IAAI;YACH,KAAK,IAAMC,UAAU,KAAK,CAACC,OAAgC;gBAC1D,IAAMC,eAAeF,OAAOG,KAAK;gBACjC,IAAID,AAAgBE,KAAAA,KAAhBF,cAA2B;oBAC9BJ,SAASO,GAAG,CAACL;oBACb;gBACD;gBACA,MAAME;YACP;QACD,SACQ;YACP,KAAK,IAAMF,UAAUF,SAAU,KAAK,CAACD,OAAOG;QAC7C;IACD;IAEAM,IAAIb,GAAM,EAAe;QACxB,OAAO,IAAI,CAAC,CAAA,OAAQ,CAACa,GAAG,CAACb;IAC1B;IAEAc,QAAQ;QACP,IAAI,CAAC,CAAA,OAAQ,GAAG,IAAIhB,WACpB,KAAK,CAACgB;IACP;IAEA,CAACC,SAA8B;QAC9B,KAAK,IAAM,CAACf,KAAKgB,IAAI,IAAI,IAAI,CAACC,OAAO,GACpC,MAAMD;IAER;IAEA,CAACC,UAAoC;QACpC,IAAMZ,WAAW,IAAIC;QACrB,IAAI;YACH,KAAK,IAAM,CAACC,QAAQS,IAAI,IAAI,KAAK,CAACC,UAAwC;gBACzE,IAAMR,eAAeF,OAAOG,KAAK;gBACjC,IAAID,AAAgBE,KAAAA,KAAhBF,cAA2B;oBAC9BJ,SAASO,GAAG,CAACL;oBACb;gBACD;gBACA,MAAM;oBAACE;oBAAcO;iBAAI;YAC1B;QACD,SACQ;YACP,KAAK,IAAMT,UAAUF,SAAU,KAAK,CAACD,OAAOG;QAC7C;IACD;IAEA,iBAAoB;QACnB,OAAO,IAAI,CAACU,OAAO;IACpB;AACD","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"iterable-weak-map.ts"}