{"version":3,"file":"asyncHook.cjs","names":["SyncHook"],"sources":["../../../src/utils/hooks/asyncHook.ts"],"sourcesContent":["import { ArgsType, SyncHook } from './syncHook';\n\ntype CallbackReturnType = void | false | Promise<void | false>;\n\nexport class AsyncHook<\n  T,\n  ExternalEmitReturnType = CallbackReturnType,\n> extends SyncHook<T, ExternalEmitReturnType> {\n  override emit(\n    ...data: ArgsType<T>\n  ): Promise<void | false | ExternalEmitReturnType> {\n    let result;\n    const ls = Array.from(this.listeners);\n    if (ls.length > 0) {\n      let i = 0;\n      const call = (prev?: unknown): unknown => {\n        if (prev === false) {\n          return false; // Abort process\n        } else if (i < ls.length) {\n          return Promise.resolve(ls[i++].apply(null, data)).then((result) => {\n            if (\n              result === undefined ||\n              (data.length === 1 && result === data[0])\n            ) {\n              return call(prev);\n            }\n            return call(result);\n          });\n        } else {\n          return prev;\n        }\n      };\n      result = call();\n    }\n    return Promise.resolve(result) as Promise<\n      void | false | ExternalEmitReturnType\n    >;\n  }\n}\n"],"mappings":";;;AAIA,IAAa,YAAb,cAGUA,0BAAoC;CAC5C,AAAS,KACP,GAAG,MAC6C;EAChD,IAAI;EACJ,MAAM,KAAK,MAAM,KAAK,KAAK,UAAU;AACrC,MAAI,GAAG,SAAS,GAAG;GACjB,IAAI,IAAI;GACR,MAAM,QAAQ,SAA4B;AACxC,QAAI,SAAS,MACX,QAAO;aACE,IAAI,GAAG,OAChB,QAAO,QAAQ,QAAQ,GAAG,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,MAAM,WAAW;AACjE,SACE,WAAW,UACV,KAAK,WAAW,KAAK,WAAW,KAAK,GAEtC,QAAO,KAAK,KAAK;AAEnB,YAAO,KAAK,OAAO;MACnB;QAEF,QAAO;;AAGX,YAAS,MAAM;;AAEjB,SAAO,QAAQ,QAAQ,OAAO"}