tsoa-zod-validator
Version:
Zod validation decorators for tsoa
59 lines (58 loc) • 2.13 kB
JavaScript
"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(),
});