{"version":3,"file":"syncWaterfallHook.cjs","names":["isObject","SyncHook","error"],"sources":["../../../src/utils/hooks/syncWaterfallHook.ts"],"sourcesContent":["import { error, warn } from '../logger';\nimport { isObject } from '../tool';\nimport { SyncHook } from './syncHook';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function checkReturnData(originalData: any, returnedData: any): boolean {\n  if (!isObject(returnedData)) {\n    return false;\n  }\n  if (originalData !== returnedData) {\n    // eslint-disable-next-line no-restricted-syntax\n    for (const key in originalData) {\n      if (!(key in returnedData)) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport class SyncWaterfallHook<T extends Record<string, any>> extends SyncHook<\n  [T],\n  T | void\n> {\n  onerror: (errMsg: string | Error | unknown) => void = error;\n\n  constructor(type: string) {\n    super();\n    this.type = type;\n  }\n\n  override emit(data: T): T {\n    if (!isObject(data)) {\n      error(`The data for the \"${this.type}\" hook should be an object.`);\n    }\n    for (const fn of this.listeners) {\n      try {\n        const tempData = fn(data);\n        if (tempData === undefined) {\n          continue;\n        }\n        if (checkReturnData(data, tempData)) {\n          data = tempData;\n        } else {\n          this.onerror(\n            `A plugin returned an unacceptable value for the \"${this.type}\" type.`,\n          );\n          break;\n        }\n      } catch (e) {\n        warn(e);\n        this.onerror(e);\n      }\n    }\n    return data;\n  }\n}\n"],"mappings":";;;;;AAKA,SAAgB,gBAAgB,cAAmB,cAA4B;AAC7E,KAAI,CAACA,sBAAS,aAAa,CACzB,QAAO;AAET,KAAI,iBAAiB,cAEnB;OAAK,MAAM,OAAO,aAChB,KAAI,EAAE,OAAO,cACX,QAAO;;AAIb,QAAO;;AAGT,IAAa,oBAAb,cAAsEC,0BAGpE;CAGA,YAAY,MAAc;AACxB,SAAO;iBAH6CC;AAIpD,OAAK,OAAO;;CAGd,AAAS,KAAK,MAAY;AACxB,MAAI,CAACF,sBAAS,KAAK,CACjB,sBAAM,qBAAqB,KAAK,KAAK,6BAA6B;AAEpE,OAAK,MAAM,MAAM,KAAK,UACpB,KAAI;GACF,MAAM,WAAW,GAAG,KAAK;AACzB,OAAI,aAAa,OACf;AAEF,OAAI,gBAAgB,MAAM,SAAS,CACjC,QAAO;QACF;AACL,SAAK,QACH,oDAAoD,KAAK,KAAK,SAC/D;AACD;;WAEK,GAAG;AACV,uBAAK,EAAE;AACP,QAAK,QAAQ,EAAE;;AAGnB,SAAO"}