{"version":3,"sources":["../src/errors.ts"],"names":["FrameworkError","AggregateError","isFatal","isRetryable","context","constructor","message","errors","options","name","Error","captureStackTrace","R","isBoolean","hasFatalError","err","traverseErrors","error","getCause","Array","from","at","explain","output","index","entries","offset","repeat","push","toString","cause","join","dump","util","inspect","compact","depth","Infinity","ensure","isInstanceOf","isAbortError","AbortError","NotImplementedError","ValueError"],"mappings":"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","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport util from \"util\";\nimport * as R from \"remeda\";\nimport type { ObjectLike } from \"@/internals/types.js\";\n\nexport interface FrameworkErrorOptions {\n  isFatal?: boolean;\n  isRetryable?: boolean;\n  context?: ObjectLike;\n}\n\nexport class FrameworkError extends AggregateError {\n  isFatal = false;\n  isRetryable = true;\n  context: Record<string, any>;\n\n  constructor(\n    message = \"Framework error has occurred.\",\n    errors: Error[] = [],\n    options: FrameworkErrorOptions = {},\n  ) {\n    super(errors || [], message);\n    this.name = this.constructor.name;\n    Error.captureStackTrace(this, AggregateError);\n\n    if (R.isBoolean(options?.isFatal)) {\n      this.isFatal = options?.isFatal;\n    }\n    if (R.isBoolean(options?.isRetryable)) {\n      this.isRetryable = options.isRetryable;\n    }\n    this.context = options?.context ?? {};\n  }\n\n  hasFatalError() {\n    if (this.isFatal) {\n      return true;\n    }\n    for (const err of this.traverseErrors()) {\n      if (err instanceof FrameworkError && err.isFatal) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  *traverseErrors(): Generator<Error> {\n    for (const error of this.errors) {\n      yield error;\n      if (error instanceof FrameworkError) {\n        yield* error.traverseErrors();\n      }\n    }\n  }\n\n  getCause(): Error {\n    const errors = Array.from(this.traverseErrors());\n    return errors.at(-1) ?? this;\n  }\n\n  explain(): string {\n    const output = [];\n    for (const [index, error] of [this, ...this.traverseErrors()].entries()) {\n      const offset = `  `.repeat(2 * index);\n      output.push(`${offset}${error.toString()}`);\n      if (error.cause) {\n        output.push(`${offset}Cause: ${error.cause.toString()}`);\n      }\n    }\n    return output.join(\"\\n\");\n  }\n\n  dump() {\n    return util.inspect(this, {\n      compact: false,\n      depth: Infinity,\n    });\n  }\n\n  static ensure(error: Error): FrameworkError {\n    return error instanceof FrameworkError\n      ? error\n      : new FrameworkError(\"Framework error has occurred.\", [error]);\n  }\n\n  static isInstanceOf(error: unknown): error is FrameworkError {\n    return error instanceof FrameworkError;\n  }\n\n  static isAbortError(error: unknown) {\n    return error instanceof AbortError || (error instanceof Error && error?.name === \"AbortError\");\n  }\n\n  static isRetryable(error: unknown) {\n    if (error instanceof FrameworkError) {\n      return error.isRetryable;\n    }\n    return !FrameworkError.isAbortError(error);\n  }\n}\n\nexport class NotImplementedError extends FrameworkError {\n  constructor(message = \"Not implemented!\", errors?: Error[]) {\n    super(message, errors, {\n      isFatal: true,\n      isRetryable: false,\n    });\n  }\n}\n\nexport class ValueError extends FrameworkError {\n  constructor(\n    message = \"Provided value is not supported!\",\n    errors: Error[] = [],\n    options?: FrameworkErrorOptions,\n  ) {\n    super(message, errors, options);\n  }\n}\n\nexport class AbortError extends FrameworkError {\n  constructor(\n    message = \"Operation has been aborted!\",\n    errors: Error[] = [],\n    options?: FrameworkErrorOptions,\n  ) {\n    super(message, errors, options);\n  }\n}\n"]}