@soapjs/soap-contract-zod
v0.1.1
Published
Zod HTTP contracts — one schema for validation middleware and OpenAPI fragments
Readme
@soapjs/soap-contract-zod
One Zod schema for request validation and OpenAPI fragments — no duplicate JSON Schema definitions.
Depends only on @soapjs/soap (route apiDoc / DecoratorRegistry) and express (middleware shape). Does not require @soapjs/soap-express or @soapjs/soap-openapi.
Install
npm install @soapjs/soap-contract-zod zod @soapjs/soap expressUse with @soapjs/soap-express controllers in your app if you like — that is an app choice, not a dependency of this package.
Usage
import { z } from 'zod';
import { Post, Controller } from '@soapjs/soap-express';
import { bodyContract } from '@soapjs/soap-contract-zod';
const CreateBody = z.object({ name: z.string(), universe: z.enum(['marvel', 'dc']) });
@Controller('/characters')
class CharactersController {
@Post('/', bodyContract(CreateBody, { tags: ['characters'], summary: 'Create' }))
async create() { /* ... */ }
}bodyContract() sets middlewares.pre (Zod validation) and apiDoc (ApiDocFragment for @soapjs/soap-openapi).
Peer dependencies
@soapjs/soap>= 0.12.1zod>= 3.22express>= 4 (middleware only)
