{"version":3,"sources":["../src/func/timeout.ts"],"names":["TimeoutError","timeout","fn","options","resolve","reject","result","timerId"],"mappings":";;;;AAIO,IAAMA,EAAN,cAA2B,KAAM,CACpC,WAAa,EAAA,CACT,MAAM,SAAS,EACnB,CACJ,EASQ,SAASC,CAAQC,CAAAA,CAAAA,CAAkBC,EAAqC,EAAC,CAAgB,CAC7F,OAAGA,CAAAA,CAAQ,KAAQ,GAAA,CAAA,CAAUD,EACtB,gBAAwB,CAC3B,OAAO,IAAI,OAAA,CAAQ,MAAOE,CAAQC,CAAAA,CAAAA,GAAS,CACvC,IAAIC,CAAAA,CACAC,EAAU,UAAW,CAAA,IAAI,CACtBJ,CAAQ,CAAA,OAAA,EAAS,KAChBE,CAAO,CAAA,IAAIL,CAAc,CAAA,CAEzBI,EAAQD,CAAQ,CAAA,OAAO,EAE/B,CAAEA,CAAAA,CAAAA,CAAQ,KAAK,CACf,CAAA,GAAG,CACCG,CAAS,CAAA,MAAMJ,EAAG,IAAK,CAAA,IAAA,CAAK,GAAG,SAAS,CAAA,CACxCE,EAAQE,CAAM,EAClB,CAAS,KAAA,CACFH,EAAQ,OAAS,EAAA,IAAA,CAChBE,EAAO,IAAIL,CAAc,EAEzBI,CAAQD,CAAAA,CAAAA,CAAQ,OAAO,EAE/B,CAAA,OAAC,CACG,YAAaI,CAAAA,CAAO,EACxB,CACJ,CAAC,CACL,CACJ","file":"chunk-2LMR75UL.mjs","sourcesContent":["\nimport type { AsyncFunction } from \"../types\";\n \n\nexport class TimeoutError extends Error {\n    constructor(){\n        super('TIMEOUT')\n    }\n}\n\n/**\n * 包装异步函数，使之具备超时能力,当超时时会触发TIMEOUT错误\n * 当执行超过times时会触发异常\n * @param fn\n * @param options {value:<超时值>,default:<超时返回的均默认值>}\n * @return {function(): unknown}\n */\n export function timeout(fn:AsyncFunction, options:{value?:number,default?:any}={}):AsyncFunction{    \n    if(options.value===0) return fn\n    return async function(this:any){\n        return new Promise(async (resolve,reject)=>{\n            let result\n            let timerId = setTimeout(()=>{\n                if(options.default==undefined){\n                    reject(new TimeoutError())\n                }else{\n                    resolve(options.default)\n                }\n            },options.value)\n            try{\n                result = await fn.call(this,...arguments) \n                resolve(result)\n            }catch(e){\n                if(options.default==undefined){\n                    reject(new TimeoutError())\n                }else{\n                    resolve(options.default)\n                }\n            }finally{\n                clearTimeout(timerId) \n            } \n        })\n    }\n}\n\n"]}