{"version":3,"sources":["../../../src/instance/hooks.ts","/home/runner/work/equipped/equipped/dist/cjs/instance/hooks.cjs"],"names":[],"mappings":"AAIA,+EAAA,SAAsB,QAAA,CACrB,KAAA,EACA,QAAA,EAAkC,CAAC,KAAA,EAAA,GAAU;AAC5C,EAAA,MAAM,KAAA;AACP,CAAA,EACC;AACD,EAAA,MAAM,QAAA,EAAU,KAAA,CAAM,MAAA,CAAqC,CAAC,GAAA,EAAK,GAAA,EAAA,GAAQ;AACxE,IAAA,MAAM,IAAA,EAAM,GAAA,CAAI,KAAA,CAAM,QAAA,CAAS,CAAA;AAC/B,IAAA,GAAA,CAAI,CAAC,GAAA,CAAI,GAAG,CAAA,EAAG,GAAA,CAAI,GAAG,EAAA,EAAI,CAAC,CAAA;AAC3B,IAAA,GAAA,CAAI,GAAG,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACjB,IAAA,OAAO,GAAA;AAAA,EACR,CAAA,EAAG,CAAC,CAAC,CAAA;AACL,EAAA,MAAM,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAChC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,EAAA,GAAM,QAAA,CAAS,CAAC,EAAA,EAAI,QAAA,CAAS,CAAC,CAAC,CAAA,CACxC,GAAA,CAAI,CAAC,GAAA,EAAA,GAAQ,OAAA,CAAQ,GAAG,CAAC,CAAA;AAC3B,EAAA,IAAA,CAAA,MAAW,MAAA,GAAS,MAAA;AACnB,IAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,MACb,KAAA,CAAM,GAAA,CAAI,MAAA,CAAO,CAAA,EAAA,GAAM;AACtB,QAAA,IAAI;AACH,UAAA,GAAA,CAAI,OAAO,CAAA,CAAE,GAAA,IAAO,UAAA,EAAY,OAAO,MAAM,CAAA,CAAE,EAAA,CAAG,CAAA;AAClD,UAAA,OAAO,MAAM,CAAA,CAAE,EAAA;AAAA,QAChB,EAAA,MAAA,CAAS,KAAA,EAAO;AACf,UAAA,OAAO,OAAA,CAAQ,MAAA,WAAiB,MAAA,EAAQ,MAAA,EAAQ,IAAI,KAAA,CAAM,CAAA,EAAA;AAC3D,QAAA;AACA,MAAA;AACF,IAAA;AACF;ACRqE;AACA;AACA","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/hooks.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",null]}