{"version":3,"file":"errors.cjs","sources":["../../src/errors.ts"],"sourcesContent":["import createError, { type FastifyErrorConstructor } from '@fastify/error'\nimport type { FastifyError } from 'fastify'\nimport type { FastifySchemaValidationError } from 'fastify/types/schema'\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  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"],"names":[],"mappings":";;;AAKO,MAAM,qBAKT,YAAsB,0BAA0B,6BAA6B,GAAG;AAEpF,MAAM,wCAAgD,OAAO,IAAI,iCAAiC;AAMlG,MAAM,4BASF;AAAA,EACF;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,mCAAmC,0BAA0B;AAAA,EAGxE,YACS,QACA,KACP,SACA;AACA,UAAM,EAAE,OAAO,QAAQ,MAAA,CAAO;AAJvB,SAAA,SAAA;AACA,SAAA,MAAA;AAKP,SAAK,QAAQ,QAAQ;AAAA,EACvB;AAAA,EAVA;AAWF;AAEO,SAAS,6BAA6B,OAAqD;AAChG,SAAO,YAAa;AACtB;AAEA,SAAS,kCACP,OAC0C;AAC1C,SACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA0C,qCAAqC,MAAM;AAE1F;AAEO,SAAS,oCACd,OAC+F;AAC/F,SACE,OAAO,UAAU,YACjB,UAAU,QACV,gBAAgB,SAChB,MAAM,QAAQ,MAAM,UAAU,KAC9B,MAAM,WAAW,SAAS,KAC1B,kCAAkC,MAAM,WAAW,CAAC,CAAC;AAEzD;AAEA,SAAS,KAA0C,KAAQ,MAAgC;AACzF,QAAM,SAAS,CAAA;AACf,aAAW,OAAO,OAAO,KAAK,GAAG,GAAqB;AACpD,QAAI,CAAC,KAAK,SAAS,GAAQ,GAAG;AAE5B,aAAO,GAAG,IAAI,IAAI,GAAG;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,sBAAsB,OAAqD;AACzF,SAAO,MAAM,OAAO,IAAI,CAAC,UAAU;AACjC,WAAO;AAAA,MACL,CAAC,qCAAqC,GAAG;AAAA,MACzC,SAAS,MAAM;AAAA,MACf,cAAc,IAAI,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,MACtC,YAAY,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC,IAAI,MAAM,IAAI;AAAA,MACnD,SAAS,MAAM;AAAA,MACf,QAAQ;AAAA,QACN,GAAG,KAAK,OAAO,CAAC,QAAQ,QAAQ,SAAS,CAAC;AAAA,MAAA;AAAA,IAC5C;AAAA,EAEJ,CAAC;AACH;;;;;;"}