{"version":3,"file":"asyncWaterfallHooks.cjs","names":["SyncHook","error","isObject","checkReturnData"],"sources":["../../../src/utils/hooks/asyncWaterfallHooks.ts"],"sourcesContent":["import { error, warn } from '../logger';\nimport { isObject } from '../tool';\nimport { SyncHook } from './syncHook';\nimport { checkReturnData } from './syncWaterfallHook';\n\ntype CallbackReturnType<T> = T | void | Promise<T | void>;\n\nexport class AsyncWaterfallHook<T extends object> extends SyncHook<\n  [T],\n  CallbackReturnType<T>\n> {\n  onerror: (errMsg: string | Error | unknown) => void = error;\n  constructor(type: string) {\n    super();\n    this.type = type;\n  }\n\n  override emit(data: T): Promise<T> {\n    if (!isObject(data)) {\n      error(`The response data for the \"${this.type}\" hook must be an object.`);\n    }\n    const ls = Array.from(this.listeners);\n\n    if (ls.length > 0) {\n      let i = 0;\n      const processError = (e: unknown): T => {\n        warn(e);\n        this.onerror(e);\n        return data;\n      };\n\n      const call = (prevData?: T | Awaited<T> | void): T | Promise<T> => {\n        if (prevData !== undefined && checkReturnData(data, prevData)) {\n          data = prevData as T;\n        } else if (prevData !== undefined) {\n          this.onerror(\n            `A plugin returned an incorrect value for the \"${this.type}\" type.`,\n          );\n          return data;\n        }\n        if (i < ls.length) {\n          try {\n            return Promise.resolve(ls[i++](data)).then(call, processError);\n          } catch (e) {\n            return processError(e);\n          }\n        }\n        return data;\n      };\n      return Promise.resolve(call(data));\n    }\n    return Promise.resolve(data);\n  }\n}\n"],"mappings":";;;;;;AAOA,IAAa,qBAAb,cAA0DA,0BAGxD;CAEA,YAAY,MAAc;AACxB,SAAO;iBAF6CC;AAGpD,OAAK,OAAO;;CAGd,AAAS,KAAK,MAAqB;AACjC,MAAI,CAACC,sBAAS,KAAK,CACjB,sBAAM,8BAA8B,KAAK,KAAK,2BAA2B;EAE3E,MAAM,KAAK,MAAM,KAAK,KAAK,UAAU;AAErC,MAAI,GAAG,SAAS,GAAG;GACjB,IAAI,IAAI;GACR,MAAM,gBAAgB,MAAkB;AACtC,wBAAK,EAAE;AACP,SAAK,QAAQ,EAAE;AACf,WAAO;;GAGT,MAAM,QAAQ,aAAqD;AACjE,QAAI,aAAa,UAAaC,0CAAgB,MAAM,SAAS,CAC3D,QAAO;aACE,aAAa,QAAW;AACjC,UAAK,QACH,iDAAiD,KAAK,KAAK,SAC5D;AACD,YAAO;;AAET,QAAI,IAAI,GAAG,OACT,KAAI;AACF,YAAO,QAAQ,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC,KAAK,MAAM,aAAa;aACvD,GAAG;AACV,YAAO,aAAa,EAAE;;AAG1B,WAAO;;AAET,UAAO,QAAQ,QAAQ,KAAK,KAAK,CAAC;;AAEpC,SAAO,QAAQ,QAAQ,KAAK"}