{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stable/src/blockchain/model/transaction/transactionCollection.js"],"names":["forge","TransactionCollection","constructor","_transactions","Map","hash","displayName","substring","add","transaction","isFinalized","set","remove","Error","has","delete","fees","Array","from","entries","reduce","total","entry","finalize","_hash","size","forEach","callback","value","getByHash","get","sha256","md","create","update","keys","join","digest","toHex"],"mappings":";;;;;;AAAOA,W;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,qBAAN,CAA4B;AACzCC,sBAAc;AACZ,eAAKC,aAAL,GAAqB,IAAIC,GAAJ,EAArB;AACA,eAAKC,IAAL,GAAY,IAAZ;AACD;;AAED,YAAIC,WAAJ,GAAkB;AAChB,cAAI,CAAC,KAAKD,IAAV,EAAgB;AACd,mBAAO,WAAP;AACD;;AAED,iBAAO,MAAM,KAAKA,IAAL,CAAUE,SAAV,CAAoB,CAApB,EAAuB,EAAvB,CAAb;AACD;;AAEDC,YAAIC,WAAJ,EAAiB;AACf,cAAI,KAAKC,WAAL,EAAJ,EAAwB;AACtB,mBAAO,IAAP;AACD;;AAED,eAAKP,aAAL,CAAmBQ,GAAnB,CAAuBF,YAAYJ,IAAnC,EAAyCI,WAAzC;AACA,iBAAO,IAAP;AACD;;AAEDG,eAAOH,WAAP,EAAoB;AAClB,cAAI,KAAKC,WAAL,EAAJ,EAAwB;AACtB,kBAAM,IAAIG,KAAJ,CAAU,kEAAV,CAAN;AACD;;AAED,cAAI,CAAC,KAAKV,aAAL,CAAmBW,GAAnB,CAAuBL,YAAYJ,IAAnC,CAAL,EAA+C;AAC7C;AACD;;AAED,eAAKF,aAAL,CAAmBY,MAAnB,CAA0BN,YAAYJ,IAAtC;AACD;;AAED,YAAIW,IAAJ,GAAW;AACT,iBAAOC,MAAMC,IAAN,CAAW,KAAKf,aAAL,CAAmBgB,OAAnB,EAAX,EAAyCC,MAAzC,CAAgD,CAACC,KAAD,EAAQC,KAAR,KAAkB;AACvE,mBAAOD,QAAQC,MAAM,CAAN,EAASN,IAAxB;AACD,WAFM,EAEJ,CAFI,CAAP;AAGD;;AAEDO,mBAAW;AACT,cAAI,KAAKb,WAAL,EAAJ,EAAwB;AACtB,mBAAO,IAAP;AACD;;AAED,eAAKL,IAAL,GAAY,KAAKmB,KAAL,EAAZ;AACA,iBAAO,IAAP;AACD;;AAEDC,eAAO;AACL,iBAAO,KAAKtB,aAAL,CAAmBsB,IAA1B;AACD;;AAEDC,gBAAQC,QAAR,EAAkB;AAChB,eAAKxB,aAAL,CAAmBuB,OAAnB,CAA4BE,KAAD,IAAWD,SAASC,KAAT,CAAtC;AACD;;AAEDC,kBAAUxB,IAAV,EAAgB;AACd,iBAAO,KAAKF,aAAL,CAAmB2B,GAAnB,CAAuBzB,IAAvB,CAAP;AACD;;AAEDK,sBAAc;AACZ,iBAAO,CAAC,CAAC,KAAKL,IAAd;AACD;;AAEDmB,gBAAQ;AACN,gBAAMO,SAAS/B,MAAMgC,EAAN,CAASD,MAAT,CAAgBE,MAAhB,EAAf;AACAF,iBAAOG,MAAP,CACEjB,MAAMC,IAAN,CAAW,KAAKf,aAAL,CAAmBgC,IAAnB,EAAX,EAAsCC,IAAtC,CAA2C,EAA3C,CADF;AAGA,iBAAOL,OAAOM,MAAP,GAAgBC,KAAhB,EAAP;AACD;AAxEwC;;yBAAtBrC,qB","file":"transactionCollection.js","sourcesContent":["import forge from 'node_modules/node-forge/dist/forge.min.js';\n\nexport default class TransactionCollection {\n  constructor() {\n    this._transactions = new Map();\n    this.hash = null;\n  }\n  \n  get displayName() {\n    if (!this.hash) {\n      return \"#NotAName\";\n    }\n    \n    return \"#\" + this.hash.substring(0, 10);\n  }\n  \n  add(transaction) {\n    if (this.isFinalized()) {\n      return this;\n    }\n    \n    this._transactions.set(transaction.hash, transaction);\n    return this;\n  }\n  \n  remove(transaction) {\n    if (this.isFinalized()) {\n      throw new Error(\"Cannot remove transaction from finalized transaction collection!\");\n    }\n    \n    if (!this._transactions.has(transaction.hash)) {\n      return;\n    }\n    \n    this._transactions.delete(transaction.hash);\n  }\n  \n  get fees() {\n    return Array.from(this._transactions.entries()).reduce((total, entry) => {\n      return total + entry[1].fees;\n    }, 0);\n  }\n  \n  finalize() {\n    if (this.isFinalized()) {\n      return this;\n    }\n    \n    this.hash = this._hash();\n    return this;\n  }\n  \n  size() {\n    return this._transactions.size;\n  }\n  \n  forEach(callback) {\n    this._transactions.forEach((value) => callback(value));\n  }\n  \n  getByHash(hash) {\n    return this._transactions.get(hash);\n  }\n  \n  isFinalized() {\n    return !!this.hash;\n  }\n  \n  _hash() {\n    const sha256 = forge.md.sha256.create();\n    sha256.update(\n      Array.from(this._transactions.keys()).join('')\n    );\n    return sha256.digest().toHex();\n  }\n}"]}