{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/reactive/utils/caching-promise.js"],"names":["CachingPromise","constructor","cachingFetch","trace","f","result","originalThen","Promise","prototype","then","originalFinally","finally","originalCatch","catch","wrapArgs","cbArgs","promiseConstructorHook","p","args","wrappedArgs","map","window","OriginalPromise","constructorHook","rest","__proto__","apply","undefined"],"mappings":";;;;;;;AAAe,YAAMA,cAAN,CAAqB;AAClCC,oBAAYC,YAAZ,EAA0B;AACxB,eAAKA,YAAL,GAAoBA,YAApB;AACD;;AAEDC,cAAMC,CAAN,EAAS;AACP,cAAIC,MAAJ;AACA,cAAIH,eAAe,KAAKA,YAAxB;;AAEA,cAAII,eAAeC,QAAQC,SAAR,CAAkBC,IAArC;AACA,cAAIC,kBAAkBH,QAAQC,SAAR,CAAkBG,OAAxC;AACA,cAAIC,gBAAgBL,QAAQC,SAAR,CAAkBK,KAAtC;;AAEA,cAAIC,WAAYV,CAAD,IAAO;AACpB,mBAAO,CAAC,GAAGW,MAAJ,KAAe;AACpB,qBAAOb,aAAaC,KAAb,CAAmB,MAAM;AAC9B,uBAAOC,EAAE,GAAGW,MAAL,CAAP;AACD,eAFM,CAAP;AAGD,aAJD;AAKD,WAND;;AAQA,mBAASC,sBAAT,CAAgCC,CAAhC,EAAmCC,IAAnC,EAAyC;AACvC,gBAAIC,cAAcD,KAAKE,GAAL,CAASN,QAAT,CAAlB;AACA,mBAAOG,EAAE,GAAGE,WAAL,CAAP;AACD;;AAED;AACA,cAAI,CAACE,OAAOC,eAAZ,EAA6B;AAC3BD,mBAAOC,eAAP,GAAyBf,OAAzB;;AAEAc,mBAAOd,OAAP,GAAiB,SAASA,OAAT,CAAiB,GAAGW,IAApB,EAA0B;AACzC,kBAAI,KAAKK,eAAT,EAA0B;AACxB,oBAAIN,IAAI,CAAC,GAAGO,IAAJ,KAAa;AACnB,yBAAO,IAAIH,OAAOC,eAAX,CAA2B,GAAGE,IAA9B,CAAP;AACD,iBAFD;AAGA,uBAAO,KAAKD,eAAL,CAAqBN,CAArB,EAAwBC,IAAxB,CAAP;AACD;AACD,qBAAO,IAAIG,OAAOC,eAAX,CAA2B,GAAGJ,IAA9B,CAAP;AACD,aARD;AASAG,mBAAOd,OAAP,CAAeC,SAAf,GAA2Ba,OAAOC,eAAP,CAAuBd,SAAlD;AACAa,mBAAOd,OAAP,CAAekB,SAAf,GAA2BJ,OAAOC,eAAlC,CAb2B,CAauB;AACnD;;AAED,cAAI;AACF;AACAD,mBAAOd,OAAP,CAAeC,SAAf,CAAyBe,eAAzB,GAA2CP,sBAA3C;;AAEAT,oBAAQC,SAAR,CAAkBC,IAAlB,GAAyB,UAAS,GAAGS,IAAZ,EAAkB;AACzC,kBAAIC,cAAcD,KAAKE,GAAL,CAASN,QAAT,CAAlB;AACA,qBAAOR,aAAaoB,KAAb,CAAmB,IAAnB,EAAyBP,WAAzB,CAAP;AACD,aAHD;;AAKAZ,oBAAQC,SAAR,CAAkBG,OAAlB,GAA4B,UAAS,GAAGO,IAAZ,EAAkB;AAC5C,kBAAIC,cAAcD,KAAKE,GAAL,CAASN,QAAT,CAAlB;AACA,qBAAOJ,gBAAgBgB,KAAhB,CAAsB,IAAtB,EAA4BP,WAA5B,CAAP;AACD,aAHD;;AAKAZ,oBAAQC,SAAR,CAAkBK,KAAlB,GAA0B,UAAS,GAAGK,IAAZ,EAAkB;AAC1C,kBAAIC,cAAcD,KAAKE,GAAL,CAASN,QAAT,CAAlB;AACA,qBAAOF,cAAcc,KAAd,CAAoB,IAApB,EAA0BP,WAA1B,CAAP;AACD,aAHD;;AAKAd,qBAASD,GAAT;AACD,WApBD,SAoBU;AACRiB,mBAAOd,OAAP,CAAeC,SAAf,CAAyBe,eAAzB,GAA2CI,SAA3C;AACApB,oBAAQC,SAAR,CAAkBC,IAAlB,GAAyBH,YAAzB;AACAC,oBAAQC,SAAR,CAAkBG,OAAlB,GAA4BD,eAA5B;AACAH,oBAAQC,SAAR,CAAkBK,KAAlB,GAA0BD,aAA1B;AACD;;AAED,iBAAOP,MAAP;AACD;AAvEiC;;yBAAfL,c","file":"caching-promise.js","sourcesContent":["export default class CachingPromise {\n  constructor(cachingFetch) {\n    this.cachingFetch = cachingFetch;\n  }\n\n  trace(f) {\n    var result;\n    let cachingFetch = this.cachingFetch;\n\n    let originalThen = Promise.prototype.then;\n    let originalFinally = Promise.prototype.finally;\n    let originalCatch = Promise.prototype.catch;\n\n    var wrapArgs = (f) => {\n      return (...cbArgs) => {\n        return cachingFetch.trace(() => {\n          return f(...cbArgs);\n        });\n      };\n    };\n    \n    function promiseConstructorHook(p, args) {\n      let wrappedArgs = args.map(wrapArgs);\n      return p(...wrappedArgs)\n    }\n        \n    // overwrite Promises only once to avoid endless loops\n    if (!window.OriginalPromise) {      \n      window.OriginalPromise = Promise;\n\n      window.Promise = function Promise(...args) {\n        if (this.constructorHook) {\n          var p = (...rest) => {\n            return new window.OriginalPromise(...rest)\n          }\n          return this.constructorHook(p, args)\n        }\n        return new window.OriginalPromise(...args)\n      };\n      window.Promise.prototype = window.OriginalPromise.prototype;\n      window.Promise.__proto__ = window.OriginalPromise // meta-class inheritance... Promise.all should work\n    }\n\n    try {\n      // Override Promise constructor\n      window.Promise.prototype.constructorHook = promiseConstructorHook;\n\n      Promise.prototype.then = function(...args) {\n        let wrappedArgs = args.map(wrapArgs);\n        return originalThen.apply(this, wrappedArgs);\n      };\n\n      Promise.prototype.finally = function(...args) {\n        let wrappedArgs = args.map(wrapArgs);\n        return originalFinally.apply(this, wrappedArgs);\n      };\n\n      Promise.prototype.catch = function(...args) {\n        let wrappedArgs = args.map(wrapArgs);\n        return originalCatch.apply(this, wrappedArgs);\n      };\n\n      result = f();\n    } finally {\n      window.Promise.prototype.constructorHook = undefined;\n      Promise.prototype.then = originalThen;\n      Promise.prototype.finally = originalFinally;\n      Promise.prototype.catch = originalCatch;\n    }\n\n    return result;\n  }\n}\n"]}