{"version":3,"sources":["meteor://💻app/packages/mongo-id/id.js"],"names":["module","export","MongoID","EJSON","link","v","Random","_looksLikeObjectID","str","length","match","ObjectID","constructor","hexString","toLowerCase","Error","_str","equals","other","valueOf","toString","clone","typeName","getTimestamp","Number","parseInt","substr","toJSONValue","toHexString","addType","idStringify","id","firstChar","charAt","undefined","JSON","stringify","idParse","parse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAAA,MAAM,CAACC,MAAP,CAAc;AAACC,SAAO,EAAC,MAAIA;AAAb,CAAd;AAAqC,IAAIC,KAAJ;AAAUH,MAAM,CAACI,IAAP,CAAY,cAAZ,EAA2B;AAACD,OAAK,CAACE,CAAD,EAAG;AAACF,SAAK,GAACE,CAAN;AAAQ;;AAAlB,CAA3B,EAA+C,CAA/C;AAAkD,IAAIC,MAAJ;AAAWN,MAAM,CAACI,IAAP,CAAY,eAAZ,EAA4B;AAACE,QAAM,CAACD,CAAD,EAAG;AAACC,UAAM,GAACD,CAAP;AAAS;;AAApB,CAA5B,EAAkD,CAAlD;AAG5G,MAAMH,OAAO,GAAG,EAAhB;;AAEAA,OAAO,CAACK,kBAAR,GAA6BC,GAAG,IAAIA,GAAG,CAACC,MAAJ,KAAe,EAAf,IAAqBD,GAAG,CAACE,KAAJ,CAAU,aAAV,CAAzD;;AAEAR,OAAO,CAACS,QAAR,GAAmB,MAAMA,QAAN,CAAe;AAChCC,aAAW,CAAEC,SAAF,EAAa;AACtB;AACA,QAAIA,SAAJ,EAAe;AACbA,eAAS,GAAGA,SAAS,CAACC,WAAV,EAAZ;;AACA,UAAI,CAACZ,OAAO,CAACK,kBAAR,CAA2BM,SAA3B,CAAL,EAA4C;AAC1C,cAAM,IAAIE,KAAJ,CAAU,qDAAV,CAAN;AACD,OAJY,CAKb;;;AACA,WAAKC,IAAL,GAAYH,SAAZ;AACD,KAPD,MAOO;AACL,WAAKG,IAAL,GAAYV,MAAM,CAACO,SAAP,CAAiB,EAAjB,CAAZ;AACD;AACF;;AAEDI,QAAM,CAACC,KAAD,EAAQ;AACZ,WAAOA,KAAK,YAAYhB,OAAO,CAACS,QAAzB,IACP,KAAKQ,OAAL,OAAmBD,KAAK,CAACC,OAAN,EADnB;AAED;;AAEDC,UAAQ,GAAG;AACT,gCAAoB,KAAKJ,IAAzB;AACD;;AAEDK,OAAK,GAAG;AACN,WAAO,IAAInB,OAAO,CAACS,QAAZ,CAAqB,KAAKK,IAA1B,CAAP;AACD;;AAEDM,UAAQ,GAAG;AACT,WAAO,KAAP;AACD;;AAEDC,cAAY,GAAG;AACb,WAAOC,MAAM,CAACC,QAAP,CAAgB,KAAKT,IAAL,CAAUU,MAAV,CAAiB,CAAjB,EAAoB,CAApB,CAAhB,EAAwC,EAAxC,CAAP;AACD;;AAEDP,SAAO,GAAG;AACR,WAAO,KAAKH,IAAZ;AACD;;AAEDW,aAAW,GAAG;AACZ,WAAO,KAAKR,OAAL,EAAP;AACD;;AAEDS,aAAW,GAAG;AACZ,WAAO,KAAKT,OAAL,EAAP;AACD;;AA9C+B,CAAlC;AAkDAhB,KAAK,CAAC0B,OAAN,CAAc,KAAd,EAAqBrB,GAAG,IAAI,IAAIN,OAAO,CAACS,QAAZ,CAAqBH,GAArB,CAA5B;;AAEAN,OAAO,CAAC4B,WAAR,GAAuBC,EAAD,IAAQ;AAC5B,MAAIA,EAAE,YAAY7B,OAAO,CAACS,QAA1B,EAAoC;AAClC,WAAOoB,EAAE,CAACZ,OAAH,EAAP;AACD,GAFD,MAEO,IAAI,OAAOY,EAAP,KAAc,QAAlB,EAA4B;AACjC,QAAIC,SAAS,GAAGD,EAAE,CAACE,MAAH,CAAU,CAAV,CAAhB;;AACA,QAAIF,EAAE,KAAK,EAAX,EAAe;AACb,aAAOA,EAAP;AACD,KAFD,MAEO,IAAIC,SAAS,KAAK,GAAd,IAAqB;AACrBA,aAAS,KAAK,GADd,IACqB;AACrB9B,WAAO,CAACK,kBAAR,CAA2BwB,EAA3B,CAFA,IAEkC;AAClCC,aAAS,KAAK,GAHlB,EAGuB;AAAE;AAC9B,wBAAWD,EAAX;AACD,KALM,MAKA;AACL,aAAOA,EAAP,CADK,CACM;AACZ;AACF,GAZM,MAYA,IAAIA,EAAE,KAAKG,SAAX,EAAsB;AAC3B,WAAO,GAAP;AACD,GAFM,MAEA,IAAI,OAAOH,EAAP,KAAc,QAAd,IAA0BA,EAAE,KAAK,IAArC,EAA2C;AAChD,UAAM,IAAIhB,KAAJ,CAAU,sEAAV,CAAN;AACD,GAFM,MAEA;AAAE;AACP,sBAAWoB,IAAI,CAACC,SAAL,CAAeL,EAAf,CAAX;AACD;AACF,CAtBD;;AAwBA7B,OAAO,CAACmC,OAAR,GAAmBN,EAAD,IAAQ;AACxB,MAAIC,SAAS,GAAGD,EAAE,CAACE,MAAH,CAAU,CAAV,CAAhB;;AACA,MAAIF,EAAE,KAAK,EAAX,EAAe;AACb,WAAOA,EAAP;AACD,GAFD,MAEO,IAAIA,EAAE,KAAK,GAAX,EAAgB;AACrB,WAAOG,SAAP;AACD,GAFM,MAEA,IAAIF,SAAS,KAAK,GAAlB,EAAuB;AAC5B,WAAOD,EAAE,CAACL,MAAH,CAAU,CAAV,CAAP;AACD,GAFM,MAEA,IAAIM,SAAS,KAAK,GAAlB,EAAuB;AAC5B,WAAOG,IAAI,CAACG,KAAL,CAAWP,EAAE,CAACL,MAAH,CAAU,CAAV,CAAX,CAAP;AACD,GAFM,MAEA,IAAIxB,OAAO,CAACK,kBAAR,CAA2BwB,EAA3B,CAAJ,EAAoC;AACzC,WAAO,IAAI7B,OAAO,CAACS,QAAZ,CAAqBoB,EAArB,CAAP;AACD,GAFM,MAEA;AACL,WAAOA,EAAP;AACD;AACF,CAfD,C","file":"/packages/mongo-id.js","sourcesContent":["import { EJSON } from 'meteor/ejson';\nimport { Random } from 'meteor/random';\n\nconst MongoID = {};\n\nMongoID._looksLikeObjectID = str => str.length === 24 && str.match(/^[0-9a-f]*$/);\n\nMongoID.ObjectID = class ObjectID {\n constructor (hexString) {\n //random-based impl of Mongo ObjectID\n if (hexString) {\n hexString = hexString.toLowerCase();\n if (!MongoID._looksLikeObjectID(hexString)) {\n throw new Error('Invalid hexadecimal string for creating an ObjectID');\n }\n // meant to work with _.isEqual(), which relies on structural equality\n this._str = hexString;\n } else {\n this._str = Random.hexString(24);\n }\n }\n\n equals(other) {\n return other instanceof MongoID.ObjectID &&\n this.valueOf() === other.valueOf();\n }\n\n toString() {\n return `ObjectID(\"${this._str}\")`;\n }\n\n clone() {\n return new MongoID.ObjectID(this._str);\n }\n\n typeName() {\n return 'oid';\n }\n\n getTimestamp() {\n return Number.parseInt(this._str.substr(0, 8), 16);\n }\n\n valueOf() {\n return this._str;\n }\n\n toJSONValue() {\n return this.valueOf();\n }\n\n toHexString() {\n return this.valueOf();\n }\n\n}\n\nEJSON.addType('oid', str => new MongoID.ObjectID(str));\n\nMongoID.idStringify = (id) => {\n if (id instanceof MongoID.ObjectID) {\n return id.valueOf();\n } else if (typeof id === 'string') {\n var firstChar = id.charAt(0);\n if (id === '') {\n return id;\n } else if (firstChar === '-' || // escape previously dashed strings\n firstChar === '~' || // escape escaped numbers, true, false\n MongoID._looksLikeObjectID(id) || // escape object-id-form strings\n firstChar === '{') { // escape object-form strings, for maybe implementing later\n return `-${id}`;\n } else {\n return id; // other strings go through unchanged.\n }\n } else if (id === undefined) {\n return '-';\n } else if (typeof id === 'object' && id !== null) {\n throw new Error('Meteor does not currently support objects other than ObjectID as ids');\n } else { // Numbers, true, false, null\n return `~${JSON.stringify(id)}`;\n }\n};\n\nMongoID.idParse = (id) => {\n var firstChar = id.charAt(0);\n if (id === '') {\n return id;\n } else if (id === '-') {\n return undefined;\n } else if (firstChar === '-') {\n return id.substr(1);\n } else if (firstChar === '~') {\n return JSON.parse(id.substr(1));\n } else if (MongoID._looksLikeObjectID(id)) {\n return new MongoID.ObjectID(id);\n } else {\n return id;\n }\n};\n\nexport { MongoID };\n"]}