{"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,eAAsBA,EACrBC,EACAC,EAAmCC,GAAU,CAC5C,MAAMA,CACP,EACC,CACD,MAAMC,EAAUH,EAAM,OAAqC,CAACI,EAAKC,IAAQ,CACxE,MAAMC,EAAMD,EAAI,MAAM,SAAS,EAC/B,OAAKD,EAAIE,CAAG,IAAGF,EAAIE,CAAG,EAAI,CAAC,GAC3BF,EAAIE,CAAG,EAAE,KAAKD,CAAG,EACVD,CACR,EAAG,CAAC,CAAC,EACCG,EAAS,OAAO,KAAKJ,CAAO,EAChC,KAAK,CAACK,EAAGC,IAAM,SAASD,CAAC,EAAI,SAASC,CAAC,CAAC,EACxC,IAAKH,GAAQH,EAAQG,CAAG,CAAC,EAC3B,UAAWI,KAASH,EACnB,MAAM,QAAQ,IACbG,EAAM,IAAI,MAAOC,GAAM,CACtB,GAAI,CACH,OAAI,OAAOA,EAAE,IAAO,WAAmB,MAAMA,EAAE,GAAG,EAC3C,MAAMA,EAAE,EAChB,OAAST,EAAO,CACf,OAAOD,EAAQC,aAAiB,MAAQA,EAAQ,IAAI,MAAM,GAAGA,CAAK,EAAE,CAAC,CACtE,CACD,CAAC,CACF,CACF","names":["runHooks","hooks","onError","error","grouped","acc","cur","key","groups","a","b","group","h"]}