{"version":3,"sources":["../../../src/instance/hooks.ts"],"sourcesContent":["export type HookEvent = 'setup' | 'start' | 'close'\nexport type HookCb = Promise<unknown | void> | (() => void | unknown | Promise<void | unknown>)\nexport type HookRecord = { cb: HookCb; order: number }\n\nexport async function runHooks(\n\thooks: HookRecord[],\n\tonError: (error: Error) => void = (error) => {\n\t\tthrow error\n\t},\n) {\n\tconst grouped = hooks.reduce<Record<string, HookRecord[]>>((acc, cur) => {\n\t\tconst key = cur.order.toString()\n\t\tif (!acc[key]) acc[key] = []\n\t\tacc[key].push(cur)\n\t\treturn acc\n\t}, {})\n\tconst groups = Object.keys(grouped)\n\t\t.sort((a, b) => parseInt(a) - parseInt(b))\n\t\t.map((key) => grouped[key])\n\tfor (const group of groups)\n\t\tawait Promise.all(\n\t\t\tgroup.map(async (h) => {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof h.cb === 'function') return await h.cb()\n\t\t\t\t\treturn await h.cb\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn onError(error instanceof Error ? error : new Error(`${error}`))\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n}\n"],"mappings":"AAIA,eAAsB,SACrB,OACA,UAAkC,CAAC,UAAU;AAC5C,QAAM;AACP,GACC;AACD,QAAM,UAAU,MAAM,OAAqC,CAAC,KAAK,QAAQ;AACxE,UAAM,MAAM,IAAI,MAAM,SAAS;AAC/B,QAAI,CAAC,IAAI,GAAG,EAAG,KAAI,GAAG,IAAI,CAAC;AAC3B,QAAI,GAAG,EAAE,KAAK,GAAG;AACjB,WAAO;AAAA,EACR,GAAG,CAAC,CAAC;AACL,QAAM,SAAS,OAAO,KAAK,OAAO,EAChC,KAAK,CAAC,GAAG,MAAM,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,EACxC,IAAI,CAAC,QAAQ,QAAQ,GAAG,CAAC;AAC3B,aAAW,SAAS;AACnB,UAAM,QAAQ;AAAA,MACb,MAAM,IAAI,OAAO,MAAM;AACtB,YAAI;AACH,cAAI,OAAO,EAAE,OAAO,WAAY,QAAO,MAAM,EAAE,GAAG;AAClD,iBAAO,MAAM,EAAE;AAAA,QAChB,SAAS,OAAO;AACf,iBAAO,QAAQ,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;AAAA,QACtE;AAAA,MACD,CAAC;AAAA,IACF;AACF;","names":[]}