{"version":3,"names":["CompositeKey","constructor","_compositeKeyStore","Map","_compositeKeyStoreReverse","_newMap","_getByPrimaryKey","obj1","getOrCreate","_get","obj2","secondKeyMap","has","compKey","set","get","for","keysFor","remove","delete","size","clear"],"sources":["composite-key.js"],"sourcesContent":["export default class CompositeKey {\n\n  constructor() {\n    this._compositeKeyStore = new Map();\n    this._compositeKeyStoreReverse = new Map();\n  }\n\n  _newMap() { return new Map(); }\n  \n  _getByPrimaryKey(obj1) {\n    return this._compositeKeyStore.getOrCreate(obj1, this._newMap);\n  }\n  _get(obj1, obj2) {\n    const secondKeyMap = this._getByPrimaryKey(obj1);\n    if(!secondKeyMap.has(obj2)) {\n      const compKey = {};\n      secondKeyMap.set(obj2, compKey);\n      this._compositeKeyStoreReverse.set(compKey, [obj1, obj2]);\n    }\n    return secondKeyMap.get(obj2);\n  }\n  \n  for(obj1, obj2) {\n    return this._get(obj1, obj2);\n  }\n  \n  /**\n   * Reverse operation of @link(for)\n   */\n  keysFor(compKey) {\n    return this._compositeKeyStoreReverse.get(compKey) || [];\n  }\n  \n  remove(compKey) {\n    const [obj1, obj2] = this._compositeKeyStoreReverse.get(compKey);\n    \n    const secondKeyMap = this._getByPrimaryKey(obj1);\n    secondKeyMap.delete(obj2);\n    if(secondKeyMap.size === 0) {\n      this._compositeKeyStore.delete(obj1);\n    }\n    this._compositeKeyStoreReverse.delete(compKey);\n  }\n  \n  clear() {\n    this._compositeKeyStore.clear();\n    this._compositeKeyStoreReverse.clear();\n  }\n}\n"],"mappings":";;;MAAqBA,YAAY;EAAA;EAAA;IAAA;IAAA;MAAA;MAAA;MAAA,mBAAZA,YAAY,GAAlB,MAAMA,YAAY,CAAC;QAEhCC,WAAW,GAAG;UACZ,IAAI,CAACC,kBAAkB,GAAG,IAAIC,GAAG,EAAE;UACnC,IAAI,CAACC,yBAAyB,GAAG,IAAID,GAAG,EAAE;QAC5C;QAEAE,OAAO,GAAG;UAAE,OAAO,IAAIF,GAAG,EAAE;QAAE;QAE9BG,gBAAgB,CAACC,IAAI,EAAE;UACrB,OAAO,IAAI,CAACL,kBAAkB,CAACM,WAAW,CAACD,IAAI,EAAE,IAAI,CAACF,OAAO,CAAC;QAChE;QACAI,IAAI,CAACF,IAAI,EAAEG,IAAI,EAAE;UACf,MAAMC,YAAY,GAAG,IAAI,CAACL,gBAAgB,CAACC,IAAI,CAAC;UAChD,IAAG,CAACI,YAAY,CAACC,GAAG,CAACF,IAAI,CAAC,EAAE;YAC1B,MAAMG,OAAO,GAAG,CAAC,CAAC;YAClBF,YAAY,CAACG,GAAG,CAACJ,IAAI,EAAEG,OAAO,CAAC;YAC/B,IAAI,CAACT,yBAAyB,CAACU,GAAG,CAACD,OAAO,EAAE,CAACN,IAAI,EAAEG,IAAI,CAAC,CAAC;UAC3D;UACA,OAAOC,YAAY,CAACI,GAAG,CAACL,IAAI,CAAC;QAC/B;QAEAM,GAAG,CAACT,IAAI,EAAEG,IAAI,EAAE;UACd,OAAO,IAAI,CAACD,IAAI,CAACF,IAAI,EAAEG,IAAI,CAAC;QAC9B;;QAEA;AACF;AACA;QACEO,OAAO,CAACJ,OAAO,EAAE;UACf,OAAO,IAAI,CAACT,yBAAyB,CAACW,GAAG,CAACF,OAAO,CAAC,IAAI,EAAE;QAC1D;QAEAK,MAAM,CAACL,OAAO,EAAE;UACd,MAAM,CAACN,IAAI,EAAEG,IAAI,CAAC,GAAG,IAAI,CAACN,yBAAyB,CAACW,GAAG,CAACF,OAAO,CAAC;UAEhE,MAAMF,YAAY,GAAG,IAAI,CAACL,gBAAgB,CAACC,IAAI,CAAC;UAChDI,YAAY,CAACQ,MAAM,CAACT,IAAI,CAAC;UACzB,IAAGC,YAAY,CAACS,IAAI,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAClB,kBAAkB,CAACiB,MAAM,CAACZ,IAAI,CAAC;UACtC;UACA,IAAI,CAACH,yBAAyB,CAACe,MAAM,CAACN,OAAO,CAAC;QAChD;QAEAQ,KAAK,GAAG;UACN,IAAI,CAACnB,kBAAkB,CAACmB,KAAK,EAAE;UAC/B,IAAI,CAACjB,yBAAyB,CAACiB,KAAK,EAAE;QACxC;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,mBAhDoBrB,6CAAY;UAAA;QAAA;QAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}