{"version":3,"sources":["scheduling.ts"],"sourcesContent":["export class TaskScheduler<T = unknown> {\n\tprivate queue: (() => Promise<T>)[] = [];\n\tprivate isRunning = false;\n\tprivate map: Map<() => Promise<T>, {\n\t\tresolve: (arg: T) => void,\n\t\treject: (error: unknown) => unknown\n\t}> = new Map();\n\n\tconstructor(private readonly useLatestTask = false) {}\n\n\tpublic schedule(task: () => Promise<T>) {\n\t\tthis.queue.push(task);\n\t\tconst promise = new Promise<T>((resolve, reject) => {\n\t\t\tthis.map.set(task, {resolve, reject})\n\t\t});\n\t\tif (!this.isRunning)\n\t\t\tthis.next();\n\t\treturn promise;\n\t}\n\n\tprivate async next() {\n\t\tif (this.queue.length) {\n\t\t\tif (this.useLatestTask) {\n\t\t\t\tfor (const task of this.queue.slice(0, -1))\n\t\t\t\t\tthis.map.delete(task);\n\t\t\t\tthis.queue = this.queue.slice(-1)\n\t\t\t}\n\t\t\tthis.isRunning = true;\n\t\t\tconst task = this.queue.shift()!;\n\t\t\tconst {resolve, reject} = this.map.get(task)!;\n\t\t\tthis.map.delete(task);\n\t\t\ttry {\n\t\t\t\tresolve(await task());\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t\tthis.isRunning = false;\n\t\t\tthis.next();\n\t\t}\n\t}\n}\n\nexport function Task<T>(method: (resolve: (res?: T) => void, reject?: (e?: unknown) => void) => Promise<T> | T) {\n\treturn () => new Promise(async (resolve, reject) => {\n\t\ttry {\n\t\t\tawait method(resolve, reject);\n\t\t} catch (e) {\n\t\t\treject?.(e)\n\t\t}\n\t});\n}"],"names":["TaskScheduler","queue","isRunning","map","constructor","useLatestTask","Map","schedule","task","push","promise","Promise","resolve","reject","set","next","length","slice","delete","shift","get","e","Task","method"],"mappings":"AAAA,OAAO,MAAMA;;IACJC,MAAiC;IACjCC,UAAkB;IAClBC,IAGO;IAEfC,YAAY,AAAiBC,gBAAgB,CAAA,CAAK,CAAE;aAAvBA,gBAAAA,oBAPrBJ,QAA8B,EAAE,OAChCC,YAAY,CAAA,QACZC,MAGH,IAAIG;IAE4C;IAE9CC,SAASC,IAAsB,EAAE;QACvC,IAAI,CAACP,KAAK,CAACQ,IAAI,CAACD;QAChB,IAAME,UAAU,IAAIC,QAAW,CAACC,SAASC;YACxC,IAAI,CAACV,GAAG,CAACW,GAAG,CAACN,MAAM;gBAACI;gBAASC;YAAM;QACpC;QAGA,OAFK,IAAI,CAACX,SAAS,IAClB,IAAI,CAACa,IAAI,IACHL;IACR;IAEA,MAAcK,OAAO;QACpB,IAAI,IAAI,CAACd,KAAK,CAACe,MAAM,EAAE;YACtB,IAAI,IAAI,CAACX,aAAa,EAAE;gBACvB,KAAK,IAAMG,QAAQ,IAAI,CAACP,KAAK,CAACgB,KAAK,CAAC,GAAG,IACtC,IAAI,CAACd,GAAG,CAACe,MAAM,CAACV;gBACjB,IAAI,CAACP,KAAK,GAAG,IAAI,CAACA,KAAK,CAACgB,KAAK,CAAC;YAC/B;YACA,IAAI,CAACf,SAAS,GAAG,CAAA;YACjB,IAAMM,OAAO,IAAI,CAACP,KAAK,CAACkB,KAAK,IACvB,EAACP,OAAO,EAAEC,MAAM,EAAC,GAAG,IAAI,CAACV,GAAG,CAACiB,GAAG,CAACZ;YACvC,IAAI,CAACL,GAAG,CAACe,MAAM,CAACV;YAChB,IAAI;gBACHI,QAAQ,MAAMJ;YACf,EAAE,OAAOa,GAAG;gBACXR,OAAOQ;YACR;YACA,IAAI,CAACnB,SAAS,GAAG,CAAA,GACjB,IAAI,CAACa,IAAI;QACV;IACD;AACD;AAEA,OAAO,SAASO,KAAQC,MAAsF;IAC7G,OAAO,IAAM,IAAIZ,QAAQ,OAAOC,SAASC;YACxC,IAAI;gBACH,MAAMU,OAAOX,SAASC;YACvB,EAAE,OAAOQ,GAAG;gBACXR,SAASQ;YACV;QACD;AACD","sourceRoot":"/lib/uix-0.3.28/src/utils/","file":"scheduling.ts"}