{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/schema.ts"],"sourcesContent":["// biome-ignore lint/style/useNodejsImportProtocol: use 'util' for RN Metro + polyfill support\nimport { inspect } from 'util'\n\ninterface AxiosLikeResponse {\n  status?: number\n  statusText?: string\n  data?: unknown\n}\n\ninterface AxiosLikeError {\n  response?: AxiosLikeResponse\n  message?: string\n  name?: string\n  stack?: string\n}\n\nfunction isAxiosLikeError(err: unknown): err is AxiosLikeError {\n  return typeof err === 'object' && err !== null\n}\n\nexport type ClientErrorCode =\n  | 400\n  | 401\n  | 402\n  | 403\n  | 404\n  | 405\n  | 406\n  | 407\n  | 408\n  | 409\n  | 410\n  | 411\n  | 412\n  | 413\n  | 414\n  | 415\n  | 416\n  | 417\n  | 418\n  | 421\n  | 422\n  | 423\n  | 424\n  | 425\n  | 426\n  | 428\n  | 429\n  | 431\n  | 451\nexport type ServerErrorCode =\n  | 500\n  | 501\n  | 502\n  | 503\n  | 504\n  | 505\n  | 506\n  | 507\n  | 508\n  | 510\n  | 511\nexport type ErrorCode = ClientErrorCode | ServerErrorCode\n\ntype SerializedError = {\n  message: string\n  stack?: string\n}\n\n// Base HttpError class\nexport class HttpError extends Error {\n  statusCode: number\n\n  constructor(statusCode: number, message: string, cause?: Error) {\n    super(message)\n    if (cause) {\n      this.stack = undefined\n      this.cause = cause\n    }\n    this.statusCode = statusCode\n    Object.setPrototypeOf(this, new.target.prototype)\n  }\n\n  toJSON(showStack = false) {\n    const serialized: SerializedError = {\n      message: this.message,\n    }\n    if (showStack) {\n      serialized.stack = inspect(this)\n    }\n    return serialized\n  }\n}\n\n// Specific error classes extending HttpError\nexport class BadRequestError extends HttpError {\n  constructor(message = 'Bad Request', cause?: Error) {\n    super(400, message, cause)\n  }\n}\n\nexport class UnauthorizedError extends HttpError {\n  constructor(message = 'Unauthorized', cause?: Error) {\n    super(401, message, cause)\n  }\n}\n\nexport class PaymentRequiredError extends HttpError {\n  constructor(message = 'Payment Required', cause?: Error) {\n    super(402, message, cause)\n  }\n}\n\nexport class ForbiddenError extends HttpError {\n  constructor(message = 'Forbidden', cause?: Error) {\n    super(403, message, cause)\n  }\n}\n\nexport class NotFoundError extends HttpError {\n  constructor(message = 'Not Found', cause?: Error) {\n    super(404, message, cause)\n  }\n}\n\nexport class MethodNotAllowedError extends HttpError {\n  constructor(message = 'Method Not Allowed', cause?: Error) {\n    super(405, message, cause)\n  }\n}\n\nexport class NotAcceptableError extends HttpError {\n  constructor(message = 'Not Acceptable', cause?: Error) {\n    super(406, message, cause)\n  }\n}\n\nexport class ProxyAuthenticationRequiredError extends HttpError {\n  constructor(message = 'Proxy Authentication Required', cause?: Error) {\n    super(407, message, cause)\n  }\n}\n\nexport class RequestTimeoutError extends HttpError {\n  constructor(message = 'Request Timeout', cause?: Error) {\n    super(408, message, cause)\n  }\n}\n\nexport class ConflictError extends HttpError {\n  constructor(message = 'Conflict', cause?: Error) {\n    super(409, message, cause)\n  }\n}\n\nexport class GoneError extends HttpError {\n  constructor(message = 'Gone', cause?: Error) {\n    super(410, message, cause)\n  }\n}\n\nexport class LengthRequiredError extends HttpError {\n  constructor(message = 'Length Required', cause?: Error) {\n    super(411, message, cause)\n  }\n}\n\nexport class PreconditionFailedError extends HttpError {\n  constructor(message = 'Precondition Failed', cause?: Error) {\n    super(412, message, cause)\n  }\n}\n\nexport class PayloadTooLargeError extends HttpError {\n  constructor(message = 'Payload Too Large', cause?: Error) {\n    super(413, message, cause)\n  }\n}\n\nexport class URITooLongError extends HttpError {\n  constructor(message = 'URI Too Long', cause?: Error) {\n    super(414, message, cause)\n  }\n}\n\nexport class UnsupportedMediaTypeError extends HttpError {\n  constructor(message = 'Unsupported Media Type', cause?: Error) {\n    super(415, message, cause)\n  }\n}\n\nexport class RangeNotSatisfiableError extends HttpError {\n  constructor(message = 'Range Not Satisfiable', cause?: Error) {\n    super(416, message, cause)\n  }\n}\n\nexport class ExpectationFailedError extends HttpError {\n  constructor(message = 'Expectation Failed', cause?: Error) {\n    super(417, message, cause)\n  }\n}\n\nexport class IMATeapotError extends HttpError {\n  constructor(message = \"I'm a teapot\", cause?: Error) {\n    super(418, message, cause)\n  }\n}\n\nexport class MisdirectedRequestError extends HttpError {\n  constructor(message = 'Misdirected Request', cause?: Error) {\n    super(421, message, cause)\n  }\n}\n\nexport class UnprocessableEntityError extends HttpError {\n  constructor(message = 'Unprocessable Entity', cause?: Error) {\n    super(422, message, cause)\n  }\n}\n\nexport class LockedError extends HttpError {\n  constructor(message = 'Locked', cause?: Error) {\n    super(423, message, cause)\n  }\n}\n\nexport class FailedDependencyError extends HttpError {\n  constructor(message = 'Failed Dependency', cause?: Error) {\n    super(424, message, cause)\n  }\n}\n\nexport class TooEarlyError extends HttpError {\n  constructor(message = 'Too Early', cause?: Error) {\n    super(425, message, cause)\n  }\n}\n\nexport class UpgradeRequiredError extends HttpError {\n  constructor(message = 'Upgrade Required', cause?: Error) {\n    super(426, message, cause)\n  }\n}\n\nexport class PreconditionRequiredError extends HttpError {\n  constructor(message = 'Precondition Required', cause?: Error) {\n    super(428, message, cause)\n  }\n}\n\nexport class TooManyRequestsError extends HttpError {\n  constructor(message = 'Too Many Requests', cause?: Error) {\n    super(429, message, cause)\n  }\n}\n\nexport class RequestHeaderFieldsTooLargeError extends HttpError {\n  constructor(message = 'Request Header Fields Too Large', cause?: Error) {\n    super(431, message, cause)\n  }\n}\n\nexport class UnavailableForLegalReasonsError extends HttpError {\n  constructor(message = 'Unavailable For Legal Reasons', cause?: Error) {\n    super(451, message, cause)\n  }\n}\n\n// 500 Range Error Classes\nexport class InternalServerError extends HttpError {\n  constructor(message = 'Internal Server Error', cause?: Error) {\n    super(500, message, cause)\n  }\n}\n\nexport class NotImplementedError extends HttpError {\n  constructor(message = 'Not Implemented', cause?: Error) {\n    super(501, message, cause)\n  }\n}\n\nexport class BadGatewayError extends HttpError {\n  constructor(message = 'Bad Gateway', cause?: Error) {\n    super(502, message, cause)\n  }\n}\n\nexport class ServiceUnavailableError extends HttpError {\n  constructor(message = 'Service Unavailable', cause?: Error) {\n    super(503, message, cause)\n  }\n}\n\nexport class GatewayTimeoutError extends HttpError {\n  constructor(message = 'Gateway Timeout', cause?: Error) {\n    super(504, message, cause)\n  }\n}\n\nexport class HTTPVersionNotSupportedError extends HttpError {\n  constructor(message = 'HTTP Version Not Supported', cause?: Error) {\n    super(505, message, cause)\n  }\n}\n\nexport class VariantAlsoNegotiatesError extends HttpError {\n  constructor(message = 'Variant Also Negotiates', cause?: Error) {\n    super(506, message, cause)\n  }\n}\n\nexport class InsufficientStorageError extends HttpError {\n  constructor(message = 'Insufficient Storage', cause?: Error) {\n    super(507, message, cause)\n  }\n}\n\nexport class LoopDetectedError extends HttpError {\n  constructor(message = 'Loop Detected', cause?: Error) {\n    super(508, message, cause)\n  }\n}\n\nexport class NotExtendedError extends HttpError {\n  constructor(message = 'Not Extended', cause?: Error) {\n    super(510, message, cause)\n  }\n}\n\nexport class NetworkAuthenticationRequiredError extends HttpError {\n  constructor(message = 'Network Authentication Required', cause?: Error) {\n    super(511, message, cause)\n  }\n}\n\n// Function to create an error based on status code\nexport const createHttpError = (\n  statusCode: ErrorCode,\n  message?: string,\n  cause?: Error\n): HttpError => {\n  switch (statusCode) {\n    case 400:\n      return new BadRequestError(message, cause)\n    case 401:\n      return new UnauthorizedError(message, cause)\n    case 402:\n      return new PaymentRequiredError(message, cause)\n    case 403:\n      return new ForbiddenError(message, cause)\n    case 404:\n      return new NotFoundError(message, cause)\n    case 405:\n      return new MethodNotAllowedError(message, cause)\n    case 406:\n      return new NotAcceptableError(message, cause)\n    case 407:\n      return new ProxyAuthenticationRequiredError(message, cause)\n    case 408:\n      return new RequestTimeoutError(message, cause)\n    case 409:\n      return new ConflictError(message, cause)\n    case 410:\n      return new GoneError(message, cause)\n    case 411:\n      return new LengthRequiredError(message, cause)\n    case 412:\n      return new PreconditionFailedError(message, cause)\n    case 413:\n      return new PayloadTooLargeError(message, cause)\n    case 414:\n      return new URITooLongError(message, cause)\n    case 415:\n      return new UnsupportedMediaTypeError(message, cause)\n    case 416:\n      return new RangeNotSatisfiableError(message, cause)\n    case 417:\n      return new ExpectationFailedError(message, cause)\n    case 418:\n      return new IMATeapotError(message, cause)\n    case 421:\n      return new MisdirectedRequestError(message, cause)\n    case 422:\n      return new UnprocessableEntityError(message, cause)\n    case 423:\n      return new LockedError(message, cause)\n    case 424:\n      return new FailedDependencyError(message, cause)\n    case 425:\n      return new TooEarlyError(message, cause)\n    case 426:\n      return new UpgradeRequiredError(message, cause)\n    case 428:\n      return new PreconditionRequiredError(message, cause)\n    case 429:\n      return new TooManyRequestsError(message, cause)\n    case 431:\n      return new RequestHeaderFieldsTooLargeError(message, cause)\n    case 451:\n      return new UnavailableForLegalReasonsError(message, cause)\n    case 500:\n      return new InternalServerError(message, cause)\n    case 501:\n      return new NotImplementedError(message, cause)\n    case 502:\n      return new BadGatewayError(message, cause)\n    case 503:\n      return new ServiceUnavailableError(message, cause)\n    case 504:\n      return new GatewayTimeoutError(message, cause)\n    case 505:\n      return new HTTPVersionNotSupportedError(message, cause)\n    case 506:\n      return new VariantAlsoNegotiatesError(message, cause)\n    case 507:\n      return new InsufficientStorageError(message, cause)\n    case 508:\n      return new LoopDetectedError(message, cause)\n    case 510:\n      return new NotExtendedError(message, cause)\n    case 511:\n      return new NetworkAuthenticationRequiredError(message, cause)\n  }\n  /* istanbul ignore next */\n  return new HttpError(statusCode, message ?? 'Error', cause)\n}\n\nexport const fromAxiosError = (error: unknown): HttpError => {\n  const e: AxiosLikeError = isAxiosLikeError(error) ? error : {}\n  // Default to 500 Internal Server Error if the status code is not available\n  const statusCode = (e.response?.status || 500) as ErrorCode\n  const message = e.response?.statusText || e.message || 'Internal Server Error'\n\n  // The internal error can contain more specific details about the Axios error\n  const cause = new Error(e.message)\n  cause.name = e.name ?? 'Error'\n  cause.stack = e.stack\n  // If the error response has a data property pass it along\n  cause.cause = e.response?.data\n\n  return createHttpError(statusCode, message, cause)\n}\n","import type { SchemaObject } from './common'\nimport type { OpenApiDocument, OperationObject } from './openapi'\nimport type { APIServerDefinition } from './types'\n\nconst clone = <T>(orig: T): T => JSON.parse(JSON.stringify(orig))\n\n/**\n * Marks unimplemented paths as deprecated and tags them with 'not-implemented'.\n * Use to hide or visually separate endpoints not yet available on the given server.\n *\n * @param document - The OpenAPI document to modify\n * @param server - The server definition to check against for implemented paths\n * @returns A cloned document with unimplemented paths marked as deprecated\n */\nexport const disableUnimplementedPaths = <\n  T extends OpenApiDocument,\n  S extends APIServerDefinition,\n>(\n  document: T,\n  server: S\n): T => {\n  const doc = clone(document)\n  for (const path of Object.keys(doc.paths)) {\n    const pathObj = doc.paths[path as keyof typeof doc.paths]\n    const fixedPath = path.replace(/{(.+)}/, ':$1')\n    if (!server[fixedPath] && !fixedPath.startsWith('/health')) {\n      for (const method of Object.values(pathObj)) {\n        const operation = method as OperationObject\n        operation.deprecated = true\n        operation.tags = [...(operation.tags ?? []), 'not-implemented']\n      }\n    }\n  }\n  return doc\n}\n\n/**\n * Appends the API version segment to all server URLs.\n *\n * @param document - The OpenAPI document to modify\n * @param version - The version string to append\n * @returns A cloned document with updated server URLs\n */\nexport const appendVersionToServers = <T extends OpenApiDocument>(\n  document: T,\n  version: string\n): T => {\n  const doc = clone(document)\n  for (const server of doc.servers || []) {\n    server.url = `${server.url}/${version}`\n  }\n  return doc\n}\n\n/**\n * Resolves a $ref string to its schema definition within the document.\n *\n * @param ref - A JSON pointer ref string e.g. `#/components/schemas/Foo`\n * @param doc - The OpenAPI document to resolve against\n * @returns The resolved schema, or undefined if the ref cannot be resolved\n */\nexport const resolveRef = (\n  ref: string,\n  doc: OpenApiDocument\n): SchemaObject | undefined => {\n  const parts = ref.replace('#/', '').split('/')\n  let current: unknown = doc\n  for (const part of parts) {\n    if (typeof current !== 'object' || current === null) return undefined\n    current = (current as Record<string, unknown>)[part]\n  }\n  return current as SchemaObject\n}\n\n/**\n * Flattens all schemas typed as oneOf[$ref, $ref, ...] where all refs resolve to enums\n * into a single merged enum. Enables API UI tools to render a dropdown instead of a text input.\n *\n * @param document - The OpenAPI document to modify\n * @returns A cloned document with flattened enum schemas\n */\nexport const flattenEnums = <T extends OpenApiDocument>(document: T): T => {\n  const doc = clone(document)\n\n  const flatten = (schema: SchemaObject): SchemaObject => {\n    if (!('oneOf' in schema) || !schema.oneOf) return schema\n\n    let allEnums = true\n    const enumValues: unknown[] = []\n\n    for (const s of schema.oneOf) {\n      if (!('$ref' in s)) {\n        allEnums = false\n        break\n      }\n      const resolved = resolveRef(s.$ref, doc)\n      if (!resolved || !('enum' in resolved) || !Array.isArray(resolved.enum)) {\n        allEnums = false\n        break\n      }\n      for (const v of resolved.enum) enumValues.push(v)\n    }\n\n    if (allEnums && enumValues.length > 0) {\n      return { type: 'string', enum: [...new Set(enumValues)] as string[] }\n    }\n    return schema\n  }\n\n  if (doc.components?.parameters) {\n    for (const parameter of Object.values(doc.components.parameters)) {\n      parameter.schema = flatten(\n        parameter.schema as SchemaObject\n      ) as unknown as typeof parameter.schema\n    }\n  }\n\n  if (doc.components?.schemas) {\n    for (const [key, schema] of Object.entries(doc.components.schemas)) {\n      doc.components.schemas[key] = flatten(\n        schema as SchemaObject\n      ) as unknown as typeof schema\n    }\n  }\n\n  for (const pathItem of Object.values(doc.paths)) {\n    for (const operation of Object.values(pathItem)) {\n      const op = operation as OperationObject\n      if (!op.parameters) continue\n      for (const parameter of op.parameters) {\n        if ('schema' in parameter) {\n          parameter.schema = flatten(\n            parameter.schema as SchemaObject\n          ) as unknown as typeof parameter.schema\n        }\n      }\n    }\n  }\n\n  return doc\n}\n"],"mappings":"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"}