/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/task-manager-core@0.9.19/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var b=Object.create;var m=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var O=(c,t)=>{for(var e in t)m(c,e,{get:t[e],enumerable:!0})},_=(c,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of x(t))!A.call(c,a)&&a!==e&&m(c,a,{get:()=>t[a],enumerable:!(r=w(t,a))||r.enumerable});return c};var B=(c,t,e)=>(e=c!=null?b(I(c)):{},_(t||!c||!c.__esModule?m(e,"default",{value:c,enumerable:!0}):e,c)),H=c=>_(m({},"__esModule",{value:!0}),c);var j={};O(j,{TaskManagerCore:()=>q,taskManager:()=>F});module.exports=H(j);var p=require("idb-keyval");var D=B(require("crypto-js/md5.js")),g=class c{constructor(t){this._encodeConfig=t}_getHash(t){let e=t.length;return(0,D.default)(this._encodeConfig.getParamsString?this._encodeConfig.getParamsString(...t):e===0?"default":e===1&&typeof t[0]=="object"?c.getObjectUniqueString(t[0]):JSON.stringify(t)).toString()}static getObjectUniqueString(t){return JSON.stringify(Object.entries(t).sort(([e],[r])=>e.localeCompare(r)))}};var P=class extends g{constructor(e){super({getParamsString:e.getParamsString});this._cacheConfig=e;try{this._cacheStore=this._cacheConfig?.enableCache?(0,p.createStore)(this._cacheConfig?.cacheId??"db-default","store-default"):void 0}catch{}}_cacheStore;async _getCache(e){if(!this._cacheConfig.enableCache||!this._cacheStore)return;let r=await(0,p.get)(e,this._cacheStore);return this._isCacheExpired(r)?void 0:r}async _setCache(e,r){if(!(!this._cacheConfig.enableCache||!this._cacheStore))try{await(0,p.set)(e,r,this._cacheStore)}catch(a){console.error(a)}}async deleteCache(e){this._cacheStore&&(0,p.del)(e,this._cacheStore)}async clearCache(){this._cacheStore&&(0,p.clear)(this._cacheStore)}_isCacheExpired(e){return!!e&&!!this._cacheConfig.cacheExpiry&&this._cacheConfig.cacheExpiry>0&&Date.now()-e.updatedAt>this._cacheConfig.cacheExpiry}};var C=class extends P{constructor(e){super(e.cache??{});this._config=e}_retriedOnError=0;_defaultRequestDetails={};_requestDetails=this._defaultRequestDetails;get requestDetails(){return{value:this._requestDetails}}get meta(){return this._config.meta??{}}_setRequestDetails(e){this._requestDetails=e(this.requestDetails.value)}_isPrevented({hash:e,config:{isInvalidate:r=!1,isPreProcess:a=!1}}){let o=this.requestDetails.value??{},i=this._config.preventNewRequestDuration??0,u=!!(!r&&o.createdAt&&!o.isFailed&&!o.isBlocked&&i>0&&this._isSameRequest(e)&&Date.now()-o.createdAt<=i);return u&&!r&&!a&&this._setRequestDetails(d=>({...d,isBlocked:!0,status:"blocked",procedure:(d.procedure??[]).concat("blocked")})),u}async _requestCore({parameters:e,config:r}){let a=Date.now(),o=this.meta,i=r.isPreProcess,u=r.isInvalidate,d=this._getHash(e);if(this._isPrevented({hash:d,config:r}))return{createdAt:a,updatedAt:a,hash:d,parameters:e,meta:o,isPrevented:!0,isPreProcess:i,isInvalidate:u};!r.isPreProcess&&!r.isInvalidate&&this._setRequestDetails(()=>({parameters:e,hash:d,createdAt:a,updatedAt:a,isRequested:!0,status:"requested",procedure:["requested"]}));let l=null,s,n,y=!1;try{let k=await this._try({parameters:e,config:r,hash:d});l=k.data,k.isPrevented&&(y=!0)}catch(k){s=await this._error({parameters:e,config:r,hash:d,error:k})}finally{if(y)return{createdAt:a,updatedAt:Date.now(),parameters:e,hash:d,error:s,data:l,meta:o,isPrevented:y,isInvalidate:u,isPreProcess:i,isError:n};await this._finally({parameters:e,config:r,hash:d,error:s,data:l})}return{createdAt:a,updatedAt:Date.now(),parameters:e,hash:d,error:s,data:l,meta:o,isPrevented:y,isInvalidate:u,isPreProcess:i,isError:n}}async _try({parameters:e,config:r,hash:a}){let o=this.meta,i=null,{onRequest:u,onSuccess:d,onCache:l,isInvalidate:s,isPreProcess:n}=r;this._config.cache?.enableCache&&this._getCache(a).then(async h=>{let{cache:R,isIgnored:v=!1}=await this._config.interceptors?.cache?.({cache:h,hash:a,parameters:[...e],config:r,meta:o,isInvalidate:s,isPreProcess:n},this)??{cache:h};if(v)return;let f=this._isSameRequest(a);f&&this.requestDetails.value?.isSucceed||((f||s||n)&&await l?.({cache:R,isInvalidate:s,isPreProcess:n,hash:a,parameters:e,meta:o},this),f&&!n&&!s&&await this._config.defaultEventHandlers?.onCache?.({cache:R,isInvalidate:s,isPreProcess:n,hash:a,parameters:[...e],meta:o},this),f&&!n&&!s&&this._setRequestDetails(E=>({...E,isCached:!0,status:"cached",updatedAt:Date.now(),procedure:(E.procedure??[]).concat("cached"),cache:R})))});let{parameters:y,isPrevented:k=!1}=await this._config.interceptors?.request?.({parameters:[...e],config:r,hash:a,meta:o,isInvalidate:s,isPreProcess:n},this)??{parameters:e},T=this._isSameRequest(a);if(T&&k&&!s&&!n)return this._setRequestDetails(h=>({...h,isBlocked:!0,status:"blocked",updatedAt:Date.now(),procedure:(h.procedure??[]).concat("blocked")})),{data:i,isPrevented:!0};(T||s||n)&&await u?.({parameters:[...e],hash:a,isInvalidate:s,isPreProcess:n,meta:o},this),(T&&!n||s)&&await this._config.defaultEventHandlers?.onRequest?.({parameters:[...e],hash:a,isInvalidate:s,isPreProcess:n,meta:o},this),T=this._isSameRequest(a),T&&!s&&!n&&this._setRequestDetails(h=>({...h,isRequested:!0,status:"began",updatedAt:Date.now(),procedure:(h.procedure??[]).concat("began")})),i=await this._config.handler(...y??[]),this._setCache(a,{data:i??void 0,updatedAt:Date.now()}),T=this._isSameRequest(a),T&&(this._retriedOnError=0),T&&!s&&!n&&this._setRequestDetails(h=>({...h,isSucceed:!0,status:"succeed",updatedAt:Date.now(),procedure:(h.procedure??[]).concat("succeed"),data:i}));let{data:M,isIgnored:S=!1}=await this._config.interceptors?.success?.({parameters:e,config:r,data:i,hash:a,meta:o,isInvalidate:s,isPreProcess:n},this)??{data:i};return S?{data:i,isPrevented:!0}:(i=M,T=this._isSameRequest(a),(T||s||n)&&await d?.({data:i,hash:a,isInvalidate:s,isPreProcess:n,parameters:[...e],meta:o},this),(T&&!n||s)&&await this._config.defaultEventHandlers?.onSuccess?.({data:i,hash:a,isInvalidate:s,isPreProcess:n,parameters:[...e],meta:o},this),{data:i})}async _error({parameters:e,config:r,hash:a,error:o}){let i=this.meta,u=[...e],{error:d,isIgnored:l=!1}=await this._config.interceptors?.error?.({parameters:u,config:r,error:o,hash:a,meta:i,isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess},this)??{error:o};if(l)return d;let s=this._isSameRequest(a);return s&&!r.isInvalidate&&!r.isPreProcess&&this._setRequestDetails(n=>({...n,isFailed:!0,status:"failed",updatedAt:Date.now(),procedure:(n.procedure??[]).concat("failed"),error:d})),this._isRetryOnError&&s&&!r.isInvalidate&&!r.isPreProcess?(++this._retriedOnError,this._config.retryOnErrorDelay&&this._config.retryOnErrorDelay>0?setTimeout(()=>{this._requestCore({parameters:u,config:r})},this._config.retryOnErrorDelay):this._requestCore({parameters:u,config:r}),d):((s||r.isPreProcess||r.isInvalidate)&&await r.onError?.({error:d,hash:a,parameters:[...e],isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess,meta:i},this),(s&&!r.isPreProcess||r.isInvalidate)&&await this._config.defaultEventHandlers?.onError?.({error:d,hash:a,parameters:[...e],isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess,meta:i},this),d)}async _finally({parameters:e,config:r,hash:a,error:o,data:i}){let u=this.meta,{data:d,error:l,isIgnored:s=!1}=await this._config.interceptors?.finally?.({parameters:[...e],config:r,data:i,error:o,hash:a,meta:u,isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess},this)??{data:i,error:o};if(s)return;let n=this._isSameRequest(a);(n||r.isPreProcess||r.isInvalidate)&&await r.onFinally?.({data:d,error:l,hash:a,parameters:[...e],isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess,meta:u},this),(n&&!r.isPreProcess||r.isInvalidate)&&await this._config.defaultEventHandlers?.onFinally?.({data:d,error:l,hash:a,parameters:[...e],isInvalidate:r.isInvalidate,isPreProcess:r.isPreProcess,meta:u},this)}get _isRetryOnError(){let e=this._config.retryOnError??0;return e>0&&this._retriedOnError<e}_isSameRequest(e){return e===this.requestDetails.value?.hash}reset(){return this._setRequestDetails(()=>this._defaultRequestDetails),this._retriedOnError=0,this}};var q=class extends C{constructor(t){super(t)}async request(...t){return this._retriedOnError=0,await this._requestCore({parameters:t,config:{}})}config(t){if(t.isInvalidate&&t.isPreProcess)throw new Error("isInvalidate and isPreProcess cannot be used together!");return{request:async(...e)=>(this._retriedOnError=0,await this._requestCore({parameters:e,config:t??{}}))}}async invalidate(t={}){let e=this.requestDetails.value;if(!e?.createdAt)return;let r=e.parameters??[];return await this.config({...t,isInvalidate:!0}).request(...r)}async preProcess(...t){return await this._requestCore({parameters:t,config:{isPreProcess:!0}})}};function F(c){return new q(c)}0&&(module.exports={TaskManagerCore,taskManager});
//# sourceMappingURL=index.js.map