UNPKG

2.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../source/smart-timeout.js"],"names":["cancelToken","Symbol","timeoutRefs","WeakSet","pause","delay","r","setTimeout","smartTimeout","fn","args","newToken","checkRun","has","delete","promise","then","cancel","token","immediate","resolve"],"mappings":";;;;;;;AAAA;;;;;;AAEA,MAAMA,cAAcC,OAAO,cAAP,CAApB;;AAEA,MAAMC,cAAc,IAAIC,OAAJ,EAApB;;AAEA,MAAMC,QAAQC,SAAS,uBAAYC,KAAKC,WAAWD,CAAX,EAAcD,KAAd,CAAjB,CAAvB;;AAEO,MAAMG,sCAAe,CAACC,EAAD,EAAKJ,QAAQ,CAAb,EAAgB,GAAGK,IAAnB,KAA4B;AACtD,QAAMC,WAAWV,OAAO,WAAP,CAAjB;AACA,QAAMW,WAAW,MAAM;AACrB,QAAIV,YAAYW,GAAZ,CAAgBF,QAAhB,CAAJ,EAA+B;AAC7BT,kBAAYY,MAAZ,CAAmBH,QAAnB;AACA,aAAOF,GAAG,GAAGC,IAAN,CAAP;AACD,KAHD,MAGO,OAAO,KAAP;AACR,GALD;AAMA,QAAMK,UAAUX,MAAMC,KAAN,EAAaW,IAAb,CAAkBJ,QAAlB,CAAhB;AACAG,UAAQf,WAAR,IAAuBW,QAAvB;AACA,SAAOI,OAAP;AACD,CAXM;;AAaPP,aAAaS,MAAb,GAAsBF,WAAW;AAC/B,MAAI,CAACA,OAAD,IAAY,CAACA,QAAQf,WAAR,CAAjB,EAAuC,OAAO,KAAP;AACvC,QAAMkB,QAAQH,QAAQf,WAAR,CAAd;AACA,SAAOE,YAAYW,GAAZ,CAAgBK,KAAhB,IACHhB,YAAYY,MAAZ,CAAmBI,KAAnB,CADG,GAEH,KAFJ;AAGD,CAND;;AAQAV,aAAaW,SAAb,GAAyB,CAACV,EAAD,EAAK,GAAGC,IAAR,KACvB,mBACGU,OADH,GAEGJ,IAFH,CAEQ,MAAMP,GAAG,GAAGC,IAAN,CAFd,CADF;;AAKAF,aAAaO,OAAb,GAAuB,CAACN,EAAD,EAAKJ,QAAQ,CAAb,EAAgB,GAAGK,IAAnB,KAA4BN,MAAMC,KAAN,EAChDW,IADgD,CAC3C,MAAMP,GAAG,GAAGC,IAAN,CADqC,CAAnD;;kBAGeF,Y","file":"smart-timeout.js","sourcesContent":["import Promise from 'bluebird'\r\n\r\nconst cancelToken = Symbol('cancel token')\r\n\r\nconst timeoutRefs = new WeakSet\r\n\r\nconst pause = delay => new Promise(r => setTimeout(r, delay))\r\n\r\nexport const smartTimeout = (fn, delay = 0, ...args) => {\r\n const newToken = Symbol('cancel id')\r\n const checkRun = () => {\r\n if (timeoutRefs.has(newToken)) {\r\n timeoutRefs.delete(newToken)\r\n return fn(...args)\r\n } else return false\r\n }\r\n const promise = pause(delay).then(checkRun)\r\n promise[cancelToken] = newToken\r\n return promise\r\n}\r\n\r\nsmartTimeout.cancel = promise => {\r\n if (!promise || !promise[cancelToken]) return false\r\n const token = promise[cancelToken]\r\n return timeoutRefs.has(token)\r\n ? timeoutRefs.delete(token)\r\n : false\r\n}\r\n\r\nsmartTimeout.immediate = (fn, ...args) =>\r\n Promise\r\n .resolve()\r\n .then(() => fn(...args))\r\n\r\nsmartTimeout.promise = (fn, delay = 0, ...args) => pause(delay)\r\n .then(() => fn(...args))\r\n\r\nexport default smartTimeout"]}
\No newline at end of file