UploadQuizSchema.ts
This page is auto-generated. Edit the source to change the content.
import { z } from 'zod';
export const UploadQuizQuestionTypeSchema = z.enum([
'scale',
'boolean',
'multiple_choice',
'freeform',
]);
export const UploadQuizAnswerSchema = z.object({
label: z.string(),
value: z.string(),
score: z.number().gte(0).lte(10),
});
export const UploadQuizQuestionSchema = z.object({
handle: z.string().min(3).max(32),
type: UploadQuizQuestionTypeSchema,
question: z.string(),
maxScore: z.number().gte(1).lte(10),
weight: z.number().gte(0).lte(5),
answers: z.array(UploadQuizAnswerSchema).optional(),
filterQuestion: z.string().min(3).max(32).optional(),
filterValues: z.array(z.string()).default([]),
autoFill: z.string().optional(),
evalHint: z.string().optional(),
});
export const UploadQuizSectionSchema = z.object({
handle: z.string().min(3).max(32),
name: z.string(),
questions: z.array(UploadQuizQuestionSchema),
});
export const UploadQuizSchema = z.object({
name: z.string().min(1).max(100),
slug: z.string().regex(new RegExp('^[0-9a-z_]{3,60}$')),
group: z.string().min(3).max(10),
handle: z.string().min(3).max(17),
version: z.number().default(1),
date: z.string().regex(new RegExp('^([1-3][0-9]{3})-(1[0-2]|0[1-9])-(3[01]|[12][0-9]|0[1-9])$')),
image: z.string().optional(),
icon: z.string().optional(),
description: z.string(),
instructions: z.string(),
randomizeAnswers: z.boolean().default(false),
analysisBotHandle: z.string(),
sections: z.array(UploadQuizSectionSchema),
});
export type UploadQuiz = z.infer<typeof UploadQuizSchema>;