{"version":3,"file":"ErrorResult.mjs","names":[],"sources":["../../../src/results/error/ErrorResult.ts"],"sourcesContent":["import type { Resource } from \"../../Resource\";\nimport type { ConnectedResult } from \"../ConnectedResult\";\n\n/**\n * A result indicating that the request failed in some kind of way\n */\nexport abstract class ErrorResult extends Error implements ConnectedResult {\n  /**\n   * Indicates the specific type of error\n   */\n  abstract readonly type: string;\n\n  /**\n   * Always true\n   */\n  readonly isError = true as const;\n\n  /**\n   * @param message - a custom message for the error\n   */\n  constructor(message?: string) {\n    super(message || \"An unkown error was encountered.\");\n  }\n}\n\n/**\n * An error for a specific resource\n */\nexport abstract class ResourceError<\n  ResourceType extends Resource,\n> extends ErrorResult {\n  /**\n   * The URI of the resource\n   */\n  readonly uri: ResourceType[\"uri\"];\n\n  /**\n   * The resource that failed\n   */\n  readonly resource: ResourceType;\n\n  /**\n   * @param uri - The URI of the resource\n   * @param message - A custom message for the error\n   */\n  constructor(resource: ResourceType, message?: string) {\n    super(message || `An unkown error for ${resource.uri}`);\n    this.uri = resource.uri;\n    this.resource = resource;\n  }\n}\n\n/**\n * An error that aggregates many errors\n */\nexport class AggregateError<ErrorType extends ErrorResult> extends ErrorResult {\n  readonly type = \"aggregateError\" as const;\n\n  /**\n   * A list of all errors returned\n   */\n  readonly errors: ErrorType[];\n\n  /**\n   * @param errors - List of all errors returned\n   * @param message - A custom message for the error\n   */\n  constructor(\n    errors: (ErrorType | AggregateError<ErrorType>)[],\n    message?: string,\n  ) {\n    const allErrors: ErrorType[] = [];\n    errors.forEach((error) => {\n      if (error instanceof AggregateError) {\n        error.errors.forEach((subError) => {\n          allErrors.push(subError);\n        });\n      } else {\n        allErrors.push(error);\n      }\n    });\n    super(\n      message ||\n        `Encountered multiple errors:${allErrors.reduce(\n          (agg, cur) => `${agg}\\n${cur}`,\n          \"\",\n        )}`,\n    );\n    this.errors = allErrors;\n  }\n}\n\n/**\n * Represents some error that isn't handled under other errors. This is usually\n * returned when something threw an error that LDO did not expect.\n */\nexport class UnexpectedResourceError<\n  ResourceType extends Resource,\n> extends ResourceError<ResourceType> {\n  readonly type = \"unexpectedResourceError\" as const;\n\n  /**\n   * The error that was thrown\n   */\n  error: Error;\n\n  /**\n   * @param uri - URI of the resource\n   * @param error - The error that was thrown\n   */\n  constructor(resource: ResourceType, error: Error) {\n    super(resource, error.message);\n    this.error = error;\n  }\n\n  /**\n   * @internal\n   *\n   * Creates an UnexpectedResourceError from a thrown error\n   * @param uri - The URI of the resource\n   * @param err - The thrown error\n   * @returns an UnexpectedResourceError\n   */\n  static fromThrown<ResourceType extends Resource>(\n    resource: ResourceType,\n    err: unknown,\n  ): UnexpectedResourceError<ResourceType> {\n    if (err instanceof Error) {\n      return new UnexpectedResourceError(resource, err);\n    } else if (typeof err === \"string\") {\n      return new UnexpectedResourceError(resource, new Error(err));\n    } else {\n      return new UnexpectedResourceError(\n        resource,\n        new Error(`Error of type ${typeof err} thrown: ${err}`),\n      );\n    }\n  }\n}\n"],"mappings":";;;;AAMA,IAAsB,cAAtB,cAA0C,MAAiC;;;;CAczE,YAAY,SAAkB;AAC5B,QAAM,WAAW,mCAAmC;AANtD,OAAS,UAAU;;;;;;AAarB,IAAsB,gBAAtB,cAEU,YAAY;;;;;CAepB,YAAY,UAAwB,SAAkB;AACpD,QAAM,WAAW,uBAAuB,SAAS,MAAM;AACvD,OAAK,MAAM,SAAS;AACpB,OAAK,WAAW;;;;;;AAOpB,IAAa,iBAAb,MAAa,uBAAsD,YAAY;;;;;CAY7E,YACE,QACA,SACA;EACA,MAAM,YAAyB,EAAE;AACjC,SAAO,SAAS,UAAU;AACxB,OAAI,iBAAiB,eACnB,OAAM,OAAO,SAAS,aAAa;AACjC,cAAU,KAAK,SAAS;KACxB;OAEF,WAAU,KAAK,MAAM;IAEvB;AACF,QACE,WACE,+BAA+B,UAAU,QACtC,KAAK,QAAQ,GAAG,IAAI,IAAI,OACzB,GACD,GACJ;AA/BH,OAAS,OAAO;AAgCd,OAAK,SAAS;;;;;;;AAQlB,IAAa,0BAAb,MAAa,gCAEH,cAA4B;;;;;CAYpC,YAAY,UAAwB,OAAc;AAChD,QAAM,UAAU,MAAM,QAAQ;AAZhC,OAAS,OAAO;AAad,OAAK,QAAQ;;;;;;;;;;CAWf,OAAO,WACL,UACA,KACuC;AACvC,MAAI,eAAe,MACjB,QAAO,IAAI,wBAAwB,UAAU,IAAI;WACxC,OAAO,QAAQ,SACxB,QAAO,IAAI,wBAAwB,UAAU,IAAI,MAAM,IAAI,CAAC;MAE5D,QAAO,IAAI,wBACT,0BACA,IAAI,MAAM,iBAAiB,OAAO,IAAI,WAAW,MAAM,CACxD"}