belgattitude/nextvalid

View on GitHub
packages/zod-request/src/ZodRequestError.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { ZodError, ZodIssue } from 'zod';
import type { RequestSchema } from './types';

export class ZodRequestError<TZodError extends ZodError> {
  public requestError: {
    method: ZodIssue[];
    query: ZodIssue[];
    headers: ZodIssue[];
    cookies: ZodIssue[];
  };
  constructor(private zodError: TZodError) {
    this.requestError = this.getError();
  }
  getTypes() {
    const { query, cookies, headers, method } = this.requestError;
    return [method.length > 0 ? 'method' : null].filter((v) => v);
  }
  private getError(): Record<keyof RequestSchema, ZodIssue[]> {
    return {
      method: [
        {
          code: 'invalid_enum_value',
          message: 'Invalid method',
          options: ['GET'],
          received: 'POST',
          path: ['method'],
        },
      ],
      query: [],
      headers: [],
      cookies: [],
    };
  }
}