{
  "version": 3,
  "sources": ["../../../src/base.ts", "../../../src/errors.ts"],
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Options for creating a BaseError.\n */\nexport type BaseErrorOptions = ErrorOptions & {\n  /**\n   * Override base message.\n   */\n  message?: string;\n\n  /**\n   * Structured details about the error.\n   */\n  context?: Record<string, unknown>;\n};\n\n/**\n * Base class for all DXOS errors.\n */\nexport class BaseError<Name extends string = string> extends Error {\n  /**\n   * Primary way of defining new error classes.\n   * Extended class may specialize constructor for required context params.\n   * @param name - Error name.\n   * @param message - Default error message.\n   */\n  static extend<Name extends string = string>(name: Name, message?: string) {\n    return class ExtendedError extends BaseError<Name> {\n      static override name: Name = name;\n\n      static is(error: unknown): error is BaseError {\n        return typeof error === 'object' && error !== null && 'name' in error && error.name === name;\n      }\n\n      static wrap(\n        options?: Omit<BaseErrorOptions, 'cause'> & { ifTypeDiffers?: boolean },\n      ): (error: unknown) => ExtendedError {\n        const wrapFn = (error: unknown) => {\n          if (options?.ifTypeDiffers === true && this.is(error)) {\n            return error as ExtendedError;\n          }\n          const newError: ExtendedError = new this({ message, ...options, cause: error });\n          Error.captureStackTrace(newError, wrapFn); // Position stack-trace to start from the caller of `wrap`.\n          return newError;\n        };\n        return wrapFn;\n      }\n\n      constructor(options?: BaseErrorOptions) {\n        super(name, { message: options?.message ?? message, ...options });\n      }\n    };\n  }\n\n  // NOTE: Errors go through odd transformations and the private fields seem to break.\n  override name: Name;\n  context: Record<string, unknown>;\n\n  constructor(name: Name, options?: BaseErrorOptions) {\n    let message = options?.message;\n    if (message && options?.context && Object.keys(options.context).length > 0) {\n      message += `: ${JSON.stringify(options?.context)}`;\n    }\n\n    super(message, { cause: options?.cause });\n\n    this.name = name;\n    this.context = options?.context ?? {};\n\n    Object.setPrototypeOf(this, new.target.prototype);\n  }\n\n  /** Fallback message. */\n  override get message() {\n    return this.constructor.name;\n  }\n\n  // For effect error matching.\n  get _tag(): Name {\n    return this.name;\n  }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { BaseError } from './base';\n\nexport class ApiError extends BaseError.extend('ApiError', 'API error') {}\n\nexport class SystemError extends BaseError.extend('SystemError', 'System error') {}\n\nexport class InternalError extends BaseError.extend('InternalError', 'Internal error') {}\n\nexport class TimeoutError extends BaseError.extend('TimeoutError', 'Timeout') {}\n\nexport class AbortedError extends BaseError.extend('AbortedError', 'Aborted') {}\n\nexport class NotImplementedError extends BaseError.extend('NotImplementedError', 'Not implemented') {}\n\nexport class RuntimeServiceError extends BaseError.extend('RuntimeServiceError', 'Runtime service error') {}\n"],
  "mappings": ";;;AAsBO,IAAMA,YAAN,MAAMA,mBAAgDC,MAAAA;;;;;;;EAO3D,OAAOC,OAAqCC,MAAYC,SAAkB;AACxE,WAAO,MAAMC,sBAAsBL,WAAAA;MACjC,OAAgBG,OAAaA;MAE7B,OAAOG,GAAGC,OAAoC;AAC5C,eAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,UAAUA,SAASA,MAAMJ,SAASA;MAC1F;MAEA,OAAOK,KACLC,SACmC;AACnC,cAAMC,SAAS,CAACH,UAAAA;AACd,cAAIE,SAASE,kBAAkB,QAAQ,KAAKL,GAAGC,KAAAA,GAAQ;AACrD,mBAAOA;UACT;AACA,gBAAMK,WAA0B,IAAI,KAAK;YAAER;YAAS,GAAGK;YAASI,OAAON;UAAM,CAAA;AAC7EN,gBAAMa,kBAAkBF,UAAUF,MAAAA;AAClC,iBAAOE;QACT;AACA,eAAOF;MACT;MAEA,YAAYD,SAA4B;AACtC,cAAMN,MAAM;UAAEC,SAASK,SAASL,WAAWA;UAAS,GAAGK;QAAQ,CAAA;MACjE;IACF;EACF;;EAGSN;EACTY;EAEA,YAAYZ,MAAYM,SAA4B;AAClD,QAAIL,UAAUK,SAASL;AACvB,QAAIA,WAAWK,SAASM,WAAWC,OAAOC,KAAKR,QAAQM,OAAO,EAAEG,SAAS,GAAG;AAC1Ed,iBAAW,KAAKe,KAAKC,UAAUX,SAASM,OAAAA,CAAAA;IAC1C;AAEA,UAAMX,SAAS;MAAES,OAAOJ,SAASI;IAAM,CAAA;AAEvC,SAAKV,OAAOA;AACZ,SAAKY,UAAUN,SAASM,WAAW,CAAC;AAEpCC,WAAOK,eAAe,MAAM,WAAWC,SAAS;EAClD;;EAGA,IAAalB,UAAU;AACrB,WAAO,KAAK,YAAYD;EAC1B;;EAGA,IAAIoB,OAAa;AACf,WAAO,KAAKpB;EACd;AACF;;;AC9EO,IAAMqB,WAAN,cAAuBC,UAAUC,OAAO,YAAY,WAAA,EAAA;AAAc;AAElE,IAAMC,cAAN,cAA0BF,UAAUC,OAAO,eAAe,cAAA,EAAA;AAAiB;AAE3E,IAAME,gBAAN,cAA4BH,UAAUC,OAAO,iBAAiB,gBAAA,EAAA;AAAmB;AAEjF,IAAMG,eAAN,cAA2BJ,UAAUC,OAAO,gBAAgB,SAAA,EAAA;AAAY;AAExE,IAAMI,eAAN,cAA2BL,UAAUC,OAAO,gBAAgB,SAAA,EAAA;AAAY;AAExE,IAAMK,sBAAN,cAAkCN,UAAUC,OAAO,uBAAuB,iBAAA,EAAA;AAAoB;AAE9F,IAAMM,sBAAN,cAAkCP,UAAUC,OAAO,uBAAuB,uBAAA,EAAA;AAA0B;",
  "names": ["BaseError", "Error", "extend", "name", "message", "ExtendedError", "is", "error", "wrap", "options", "wrapFn", "ifTypeDiffers", "newError", "cause", "captureStackTrace", "context", "Object", "keys", "length", "JSON", "stringify", "setPrototypeOf", "prototype", "_tag", "ApiError", "BaseError", "extend", "SystemError", "InternalError", "TimeoutError", "AbortedError", "NotImplementedError", "RuntimeServiceError"]
}
