UNPKG

tsoa-zod-validator

Version:
59 lines (58 loc) 2.13 kB
"use strict"; /** * This file contains sample validators that can be used with the tsoa-zod-validator library. * These are provided as examples and are not part of the core library. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.UpdateProductSchema = exports.CreateProductSchema = exports.BaseProductSchema = exports.FileUploadSchema = exports.AuthHeadersSchema = exports.PaginationSchema = exports.UserSchema = void 0; const zod_1 = require("zod"); /** * Example user schema for validation */ exports.UserSchema = zod_1.z.object({ name: zod_1.z.string().min(2).max(100), email: zod_1.z.string().email(), age: zod_1.z.number().min(18).optional(), role: zod_1.z.enum(['user', 'admin', 'guest']).default('user'), }); /** * Example pagination schema for query parameters */ exports.PaginationSchema = zod_1.z.object({ page: zod_1.z.coerce.number().int().min(1).default(1), limit: zod_1.z.coerce.number().int().min(1).max(100).default(10), sort: zod_1.z.string().optional(), }); /** * Example schema for authentication headers */ exports.AuthHeadersSchema = zod_1.z.object({ authorization: zod_1.z .string() .regex(/^Bearer .+$/, 'Must be a valid Bearer token'), }); /** * Example schema for file upload configurations */ exports.FileUploadSchema = zod_1.z.object({ maxSize: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional(), allowedTypes: zod_1.z.array(zod_1.z.string()).optional(), maxFiles: zod_1.z.number().int().min(1).optional(), required: zod_1.z.boolean().optional(), minFiles: zod_1.z.number().int().min(1).optional(), }); /** * Example of schema composition */ exports.BaseProductSchema = zod_1.z.object({ name: zod_1.z.string().min(2), description: zod_1.z.string().min(10), price: zod_1.z.number().positive(), }); exports.CreateProductSchema = exports.BaseProductSchema.extend({ categoryId: zod_1.z.string().uuid(), tags: zod_1.z.array(zod_1.z.string()).optional(), }); exports.UpdateProductSchema = exports.BaseProductSchema.partial().extend({ id: zod_1.z.string().uuid(), });