{"version":3,"sources":["../../../src/internals/helpers/counter.ts"],"names":["RetryCounter","Serializable","remaining","maxRetries","lastError","finalError","ErrorClass","use","error","undefined","isFatal","isRetryable","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;AAQO,MAAMA,qBAAqBC,6BAAAA,CAAAA;EARlC;;;;AASSC,EAAAA,SAAAA;AACYC,EAAAA,UAAAA;AACTC,EAAAA,SAAAA;AACAC,EAAAA,UAAAA;EAEV,WAAA,CACEF,UAAAA,GAAa,GACHG,UAAAA,EACV;AACA,IAAA,KAAA,EAAK,EAAA,KAFKA,UAAAA,GAAAA,UAAAA;AAGV,IAAA,IAAA,CAAKH,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKD,SAAAA,GAAYC,UAAAA;AACnB,EAAA;AAEAI,EAAAA,GAAAA,CAAIC,KAAAA,EAAe;AACjB,IAAA,IAAI,KAAKH,UAAAA,EAAY;AACnB,MAAA,MAAM,IAAA,CAAKA,UAAAA;AACb,IAAA;AAEA,IAAA,IAAA,CAAKD,SAAAA,GAAYI,SAAS,IAAA,CAAKJ,SAAAA;AAC/B,IAAA,IAAA,CAAKF,SAAAA,EAAAA;AACL,IAAA,IAAI,IAAA,CAAKA,YAAY,CAAA,EAAG;AACtB,MAAA,IAAA,CAAKG,UAAAA,GAAa,IAAI,IAAA,CAAKC,UAAAA,CACzB,qCAAqC,IAAA,CAAKH,UAAU,CAAA,mBAAA,CAAA,EACpD,IAAA,CAAKC,SAAAA,GAAY;QAAC,IAAA,CAAKA;UAAaK,MAAAA,EACpC;QAAEC,OAAAA,EAAS,IAAA;QAAMC,WAAAA,EAAa;OAAM,CAAA;AAEtC,MAAA,MAAM,IAAA,CAAKN,UAAAA;AACb,IAAA;AACF,EAAA;EAEAO,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLV,MAAAA,SAAAA,EAAW,IAAA,CAAKA,SAAAA;AAChBC,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBC,MAAAA,SAAAA,EAAW,IAAA,CAAKA,SAAAA;AAChBC,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBC,MAAAA,UAAAA,EAAY,IAAA,CAAKA;AACnB,KAAA;AACF,EAAA;AAEAO,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB,EAAA;AACF","file":"counter.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport class RetryCounter extends Serializable {\n  public remaining: number;\n  protected readonly maxRetries: number;\n  protected lastError?: Error;\n  protected finalError?: Error;\n\n  constructor(\n    maxRetries = 0,\n    protected ErrorClass: typeof FrameworkError,\n  ) {\n    super();\n    this.maxRetries = maxRetries;\n    this.remaining = maxRetries;\n  }\n\n  use(error?: Error) {\n    if (this.finalError) {\n      throw this.finalError;\n    }\n\n    this.lastError = error ?? this.lastError;\n    this.remaining--;\n    if (this.remaining < 0) {\n      this.finalError = new this.ErrorClass(\n        `Maximal amount of global retries (${this.maxRetries}) has been reached.`,\n        this.lastError ? [this.lastError] : undefined,\n        { isFatal: true, isRetryable: false },\n      );\n      throw this.finalError;\n    }\n  }\n\n  createSnapshot() {\n    return {\n      remaining: this.remaining,\n      maxRetries: this.maxRetries,\n      lastError: this.lastError,\n      finalError: this.finalError,\n      ErrorClass: this.ErrorClass,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n"]}