# All files / src/schemas/ep committee.ts

100% Statements 3/3
100% Branches 3/3
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45

    58x

    17x

    58x

     /**
     * Committee Zod validation schemas.
     *
     * @module schemas/ep/committee
     */

    import { z } from 'zod';

    /**
     * Get committee info input schema
     */
    export const GetCommitteeInfoSchema = z.object({
      id: z.string()
        .min(1)
        .max(100)
        .optional()
        .describe('Committee identifier'),
      abbreviation: z.string()
        .min(1)
        .max(20)
        .optional()
        .describe('Committee abbreviation'),
      showCurrent: z.boolean()
        .default(false)
        .optional()
        .describe('If true, returns only current active bodies')
    }).refine(
      data => data.showCurrent === true || data.id !== undefined || data.abbreviation !== undefined,
      { message: 'Either showCurrent=true, id, or abbreviation is required' }
    );

    /**
     * Committee output schema
     */
    export const CommitteeSchema = z.object({
      id: z.string(),
      name: z.string(),
      abbreviation: z.string(),
      members: z.array(z.string()),
      chair: z.string().optional(),
      viceChairs: z.array(z.string()).optional(),
      meetingSchedule: z.array(z.string()).optional(),
      responsibilities: z.array(z.string()).optional()
    });