{"version":3,"sources":["meteor://💻app/packages/id-map/id-map.js"],"names":["module","export","IdMap","constructor","idStringify","idParse","_map","Map","_idStringify","JSON","stringify","_idParse","parse","get","id","key","set","value","remove","delete","has","empty","size","clear","forEach","iterator","breakIfFalse","call","setDefault","def","clone","EJSON"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAAA,MAAM,CAACC,MAAP,CAAc;AAACC,OAAK,EAAC,MAAIA;AAAX,CAAd;;AACO,MAAMA,KAAN,CAAY;AACjBC,aAAW,CAACC,WAAD,EAAcC,OAAd,EAAuB;AAChC,SAAKC,IAAL,GAAY,IAAIC,GAAJ,EAAZ;AACA,SAAKC,YAAL,GAAoBJ,WAAW,IAAIK,IAAI,CAACC,SAAxC;AACA,SAAKC,QAAL,GAAgBN,OAAO,IAAII,IAAI,CAACG,KAAhC;AACD,GALgB,CAOnB;AACA;AACA;AACA;;;AAEEC,KAAG,CAACC,EAAD,EAAK;AACN,UAAMC,GAAG,GAAG,KAAKP,YAAL,CAAkBM,EAAlB,CAAZ;;AACA,WAAO,KAAKR,IAAL,CAAUO,GAAV,CAAcE,GAAd,CAAP;AACD;;AAEDC,KAAG,CAACF,EAAD,EAAKG,KAAL,EAAY;AACb,UAAMF,GAAG,GAAG,KAAKP,YAAL,CAAkBM,EAAlB,CAAZ;;AACA,SAAKR,IAAL,CAAUU,GAAV,CAAcD,GAAd,EAAmBE,KAAnB;AACD;;AAEDC,QAAM,CAACJ,EAAD,EAAK;AACT,UAAMC,GAAG,GAAG,KAAKP,YAAL,CAAkBM,EAAlB,CAAZ;;AACA,SAAKR,IAAL,CAAUa,MAAV,CAAiBJ,GAAjB;AACD;;AAEDK,KAAG,CAACN,EAAD,EAAK;AACN,UAAMC,GAAG,GAAG,KAAKP,YAAL,CAAkBM,EAAlB,CAAZ;;AACA,WAAO,KAAKR,IAAL,CAAUc,GAAV,CAAcL,GAAd,CAAP;AACD;;AAEDM,OAAK,GAAG;AACN,WAAO,KAAKf,IAAL,CAAUgB,IAAV,KAAmB,CAA1B;AACD;;AAEDC,OAAK,GAAG;AACN,SAAKjB,IAAL,CAAUiB,KAAV;AACD,GAtCgB,CAwCjB;;;AACAC,SAAO,CAACC,QAAD,EAAW;AAChB;AACA,SAAK,IAAI,CAACV,GAAD,EAAME,KAAN,CAAT,IAAyB,KAAKX,IAA9B,EAAmC;AACjC,YAAMoB,YAAY,GAAGD,QAAQ,CAACE,IAAT,CACnB,IADmB,EAEnBV,KAFmB,EAGnB,KAAKN,QAAL,CAAcI,GAAd,CAHmB,CAArB;;AAKA,UAAIW,YAAY,KAAK,KAArB,EAA4B;AAC1B;AACD;AACF;AACF;;AAEDJ,MAAI,GAAG;AACL,WAAO,KAAKhB,IAAL,CAAUgB,IAAjB;AACD;;AAEDM,YAAU,CAACd,EAAD,EAAKe,GAAL,EAAU;AAClB,UAAMd,GAAG,GAAG,KAAKP,YAAL,CAAkBM,EAAlB,CAAZ;;AACA,QAAI,KAAKR,IAAL,CAAUc,GAAV,CAAcL,GAAd,CAAJ,EAAwB;AACtB,aAAO,KAAKT,IAAL,CAAUO,GAAV,CAAcE,GAAd,CAAP;AACD;;AACD,SAAKT,IAAL,CAAUU,GAAV,CAAcD,GAAd,EAAmBc,GAAnB;;AACA,WAAOA,GAAP;AACD,GAlEgB,CAoEjB;AACA;;;AACAC,OAAK,GAAG;AACN,UAAMA,KAAK,GAAG,IAAI5B,KAAJ,CAAU,KAAKM,YAAf,EAA6B,KAAKG,QAAlC,CAAd,CADM,CAEN;;AACA,SAAKL,IAAL,CAAUkB,OAAV,CAAkB,UAASP,KAAT,EAAgBF,GAAhB,EAAoB;AACpCe,WAAK,CAACxB,IAAN,CAAWU,GAAX,CAAeD,GAAf,EAAoBgB,KAAK,CAACD,KAAN,CAAYb,KAAZ,CAApB;AACD,KAFD;;AAGA,WAAOa,KAAP;AACD;;AA7EgB,C","file":"/packages/id-map.js","sourcesContent":["\nexport class IdMap {\n constructor(idStringify, idParse) {\n this._map = new Map();\n this._idStringify = idStringify || JSON.stringify;\n this._idParse = idParse || JSON.parse;\n }\n\n// Some of these methods are designed to match methods on OrderedDict, since\n// (eg) ObserveMultiplex and _CachingChangeObserver use them interchangeably.\n// (Conceivably, this should be replaced with \"UnorderedDict\" with a specific\n// set of methods that overlap between the two.)\n\n get(id) {\n const key = this._idStringify(id);\n return this._map.get(key);\n }\n\n set(id, value) {\n const key = this._idStringify(id);\n this._map.set(key, value);\n }\n\n remove(id) {\n const key = this._idStringify(id);\n this._map.delete(key);\n }\n\n has(id) {\n const key = this._idStringify(id);\n return this._map.has(key);\n }\n\n empty() {\n return this._map.size === 0;\n }\n\n clear() {\n this._map.clear();\n }\n\n // Iterates over the items in the map. Return `false` to break the loop.\n forEach(iterator) {\n // don't use _.each, because we can't break out of it.\n for (let [key, value] of this._map){\n const breakIfFalse = iterator.call(\n null,\n value,\n this._idParse(key)\n );\n if (breakIfFalse === false) {\n return;\n }\n }\n }\n\n size() {\n return this._map.size;\n }\n\n setDefault(id, def) {\n const key = this._idStringify(id);\n if (this._map.has(key)) {\n return this._map.get(key);\n }\n this._map.set(key, def);\n return def;\n }\n\n // Assumes that values are EJSON-cloneable, and that we don't need to clone\n // IDs (ie, that nobody is going to mutate an ObjectId).\n clone() {\n const clone = new IdMap(this._idStringify, this._idParse);\n // copy directly to avoid stringify/parse overhead\n this._map.forEach(function(value, key){\n clone._map.set(key, EJSON.clone(value));\n });\n return clone;\n }\n}\n"]}