{"version":3,"file":"errors.cjs","names":[],"sources":["../../src/errors.ts"],"sourcesContent":["import createError, { type FastifyErrorConstructor } from '@fastify/error'\nimport type { FastifyError, FastifySchemaValidationError } from 'fastify'\nimport type { $ZodError } from 'zod/v4/core'\n\nexport const InvalidSchemaError: FastifyErrorConstructor<\n  {\n    code: string\n  },\n  [string]\n> = createError<[string]>('FST_ERR_INVALID_SCHEMA', 'Invalid schema passed: %s', 500)\n\nconst ZodFastifySchemaValidationErrorSymbol: symbol = Symbol.for('ZodFastifySchemaValidationError')\n\nexport type ZodFastifySchemaValidationError = FastifySchemaValidationError & {\n  [ZodFastifySchemaValidationErrorSymbol]: true\n}\n\nconst ResponseSerializationBase: FastifyErrorConstructor<\n  {\n    code: string\n  },\n  [\n    {\n      cause: $ZodError\n    },\n  ]\n> = createError<[{ cause: $ZodError }]>(\n  'FST_ERR_RESPONSE_SERIALIZATION',\n  \"Response doesn't match the schema\",\n  500,\n)\n\nexport class ResponseSerializationError extends ResponseSerializationBase {\n  declare cause: $ZodError\n\n  constructor(\n    public method: string,\n    public url: string,\n    options: { cause: $ZodError },\n  ) {\n    super({ cause: options.cause })\n\n    this.cause = options.cause\n  }\n}\n\nexport function isResponseSerializationError(value: unknown): value is ResponseSerializationError {\n  return 'method' in (value as ResponseSerializationError)\n}\n\nfunction isZodFastifySchemaValidationError(\n  error: unknown,\n): error is ZodFastifySchemaValidationError {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    (error as ZodFastifySchemaValidationError)[ZodFastifySchemaValidationErrorSymbol] === true\n  )\n}\n\nexport function hasZodFastifySchemaValidationErrors(\n  error: unknown,\n): error is Omit<FastifyError, 'validation'> & { validation: ZodFastifySchemaValidationError[] } {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    'validation' in error &&\n    Array.isArray(error.validation) &&\n    error.validation.length > 0 &&\n    isZodFastifySchemaValidationError(error.validation[0])\n  )\n}\n\nfunction omit<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K> {\n  const result = {} as Omit<T, K>\n  for (const key of Object.keys(obj) as Array<keyof T>) {\n    if (!keys.includes(key as K)) {\n      // @ts-expect-error\n      result[key] = obj[key]\n    }\n  }\n  return result\n}\n\nexport function createValidationError(error: $ZodError): ZodFastifySchemaValidationError[] {\n  return error.issues.map((issue) => {\n    return {\n      [ZodFastifySchemaValidationErrorSymbol]: true,\n      keyword: issue.code,\n      instancePath: `/${issue.path.join('/')}`,\n      schemaPath: `#/${issue.path.join('/')}/${issue.code}`,\n      message: issue.message,\n      params: {\n        ...omit(issue, ['path', 'code', 'message']),\n      },\n    }\n  })\n}\n"],"mappings":";;;;AAIA,IAAa,sBAAA,GAAA,eAAA,SAKa,0BAA0B,6BAA6B,GAAG;AAEpF,IAAM,wCAAgD,OAAO,IAAI,iCAAiC;AAMlG,IAAM,6BAAA,GAAA,eAAA,SAUJ,kCACA,qCACA,GACF;AAEA,IAAa,6BAAb,cAAgD,0BAA0B;CAI/D;CACA;CAFT,YACE,QACA,KACA,SACA;EACA,MAAM,EAAE,OAAO,QAAQ,MAAM,CAAC;EAJvB,KAAA,SAAA;EACA,KAAA,MAAA;EAKP,KAAK,QAAQ,QAAQ;CACvB;AACF;AAEA,SAAgB,6BAA6B,OAAqD;CAChG,OAAO,YAAa;AACtB;AAEA,SAAS,kCACP,OAC0C;CAC1C,OACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA0C,2CAA2C;AAE1F;AAEA,SAAgB,oCACd,OAC+F;CAC/F,OACE,OAAO,UAAU,YACjB,UAAU,QACV,gBAAgB,SAChB,MAAM,QAAQ,MAAM,UAAU,KAC9B,MAAM,WAAW,SAAS,KAC1B,kCAAkC,MAAM,WAAW,EAAE;AAEzD;AAEA,SAAS,KAA0C,KAAQ,MAAgC;CACzF,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,GAC/B,IAAI,CAAC,KAAK,SAAS,GAAQ,GAEzB,OAAO,OAAO,IAAI;CAGtB,OAAO;AACT;AAEA,SAAgB,sBAAsB,OAAqD;CACzF,OAAO,MAAM,OAAO,KAAK,UAAU;EACjC,OAAO;IACJ,wCAAwC;GACzC,SAAS,MAAM;GACf,cAAc,IAAI,MAAM,KAAK,KAAK,GAAG;GACrC,YAAY,KAAK,MAAM,KAAK,KAAK,GAAG,EAAE,GAAG,MAAM;GAC/C,SAAS,MAAM;GACf,QAAQ,EACN,GAAG,KAAK,OAAO;IAAC;IAAQ;IAAQ;GAAS,CAAC,EAC5C;EACF;CACF,CAAC;AACH"}