{"version":3,"sources":["../../../src/instance/hooks.ts"],"names":["runHooks","hooks","onError","error","grouped","acc","cur","key","groups","a","b","group","h"],"mappings":"AAIA,+EAAA,SAAsBA,CAAAA,CACrBC,CAAAA,CACAC,CAAAA,CAAmCC,CAAAA,EAAU,CAC5C,MAAMA,CACP,CAAA,CACC,CACD,MAAMC,CAAAA,CAAUH,CAAAA,CAAM,MAAA,CAAqC,CAACI,CAAAA,CAAKC,CAAAA,CAAAA,EAAQ,CACxE,MAAMC,CAAAA,CAAMD,CAAAA,CAAI,KAAA,CAAM,QAAA,CAAS,CAAA,CAC/B,OAAKD,CAAAA,CAAIE,CAAG,CAAA,EAAA,CAAGF,CAAAA,CAAIE,CAAG,CAAA,CAAI,CAAC,CAAA,CAAA,CAC3BF,CAAAA,CAAIE,CAAG,CAAA,CAAE,IAAA,CAAKD,CAAG,CAAA,CACVD,CACR,CAAA,CAAG,CAAC,CAAC,CAAA,CACCG,CAAAA,CAAS,MAAA,CAAO,IAAA,CAAKJ,CAAO,CAAA,CAChC,IAAA,CAAK,CAACK,CAAAA,CAAGC,CAAAA,CAAAA,EAAM,QAAA,CAASD,CAAC,CAAA,CAAI,QAAA,CAASC,CAAC,CAAC,CAAA,CACxC,GAAA,CAAKH,CAAAA,EAAQH,CAAAA,CAAQG,CAAG,CAAC,CAAA,CAC3B,GAAA,CAAA,MAAWI,EAAAA,GAASH,CAAAA,CACnB,MAAM,OAAA,CAAQ,GAAA,CACbG,CAAAA,CAAM,GAAA,CAAI,MAAOC,CAAAA,EAAM,CACtB,GAAI,CACH,OAAI,OAAOA,CAAAA,CAAE,EAAA,EAAO,UAAA,CAAmB,MAAMA,CAAAA,CAAE,EAAA,CAAG,CAAA,CAC3C,MAAMA,CAAAA,CAAE,EAChB,CAAA,KAAA,CAAST,CAAAA,CAAO,CACf,OAAOD,CAAAA,CAAQC,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAQ,IAAI,KAAA,CAAM,CAAA,EAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/hooks.min.cjs","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"]}