1.0.150 • Published 5 months ago

fastify-type-provider-zod2 v1.0.150

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Maintainability Test Coverage npm npm Snyk Vulnerabilities for npm package NPM

fastify-type-provider-zod2

Fastify Type provider for Zod.

Inspired by turkerdev/fastify-type-provider-zod who is not maintened anymore.

Usage

pnpm install fastify-type-provider-zod2 zod

How to use?

import Fastify from "fastify";
import { serializerCompiler, validatorCompiler, ZodTypeProvider } from "fastify-type-provider-zod2";
import z from "zod";

const app = Fastify()

// Add schema validator and serializer
app.setValidatorCompiler(validatorCompiler);
app.setSerializerCompiler(serializerCompiler);

app.withTypeProvider<ZodTypeProvider>().route({
  method: "GET",
  url: "/",
  // Define your schema
  schema: {
    querystring: z.object({
      name: z.string().min(4),
    }),
    response: {
      200: z.string(),
    },
  },
  handler: (req, res) => {
    res.send(req.query.name);
  },
});

app.listen({ port: 4949 });

How to use together with @fastify/swagger

import fastify from 'fastify';
import fastifySwagger from '@fastify/swagger';
import fastifySwaggerUI from '@fastify/swagger-ui';
import { z } from 'zod';

import {
  jsonSchemaTransform,
  createJsonSchemaTransform,
  serializerCompiler,
  validatorCompiler,
  ZodTypeProvider,
} from 'fastify-type-provider-zod2';

const app = fastify();
app.setValidatorCompiler(validatorCompiler);
app.setSerializerCompiler(serializerCompiler);

app.register(fastifySwagger, {
  openapi: {
    info: {
      title: 'SampleApi',
      description: 'Sample backend service',
      version: '1.0.0',
    },
    servers: [],
  },
  transform: jsonSchemaTransform,
  // You can also create transform with custom skiplist of endpoints that should not be included in the specification:
  //
  // transform: createJsonSchemaTransform({
  //   skipList: [ '/documentation/static/*' ]
  // })
});

app.register(fastifySwaggerUI, {
  routePrefix: '/documentation',
});

const LOGIN_SCHEMA = z.object({
  username: z.string().max(32).describe('Some description for username'),
  password: z.string().max(32),
});

app.after(() => {
  app.withTypeProvider<ZodTypeProvider>().route({
    method: 'POST',
    url: '/login',
    schema: { body: LOGIN_SCHEMA },
    handler: (req, res) => {
      res.send('ok');
    },
  });
});

async function run() {
  await app.ready();

  await app.listen({
    port: 4949,
  });

  console.log(`Documentation running at http://localhost:4949/documentation`);
}

run();

Test

To test this package:

pnpm test

Maintain

This package use TSdx. Please check documentation to update this package.

1.0.150

5 months ago

1.0.149

5 months ago

1.0.148

5 months ago

1.0.147

5 months ago

1.0.146

5 months ago

1.0.143

5 months ago

1.0.142

5 months ago

1.0.145

5 months ago

1.0.144

5 months ago

1.0.141

6 months ago

1.0.140

6 months ago

1.0.139

6 months ago

1.0.138

6 months ago

1.0.137

6 months ago

1.0.136

7 months ago

1.0.135

7 months ago

1.0.134

7 months ago

1.0.133

7 months ago

1.0.132

8 months ago

1.0.131

8 months ago

1.0.130

8 months ago

1.0.129

8 months ago

1.0.128

8 months ago

1.0.125

8 months ago

1.0.127

8 months ago

1.0.126

8 months ago

1.0.124

9 months ago

1.0.123

9 months ago

1.0.121

9 months ago

1.0.122

9 months ago

1.0.120

9 months ago

1.0.119

10 months ago

1.0.118

10 months ago

1.0.107

11 months ago

1.0.106

11 months ago

1.0.109

11 months ago

1.0.108

11 months ago

1.0.105

11 months ago

1.0.104

11 months ago

1.0.110

11 months ago

1.0.112

11 months ago

1.0.111

11 months ago

1.0.117

10 months ago

1.0.114

10 months ago

1.0.113

11 months ago

1.0.116

10 months ago

1.0.115

10 months ago

1.0.103

11 months ago

1.0.102

12 months ago

1.0.101

12 months ago

1.0.100

12 months ago

1.0.99

1 year ago

1.0.98

1 year ago

1.0.97

1 year ago

1.0.96

1 year ago

1.0.95

1 year ago

1.0.94

1 year ago

1.0.93

1 year ago

1.0.66

1 year ago

1.0.65

1 year ago

1.0.69

1 year ago

1.0.68

1 year ago

1.0.67

1 year ago

1.0.73

1 year ago

1.0.72

1 year ago

1.0.71

1 year ago

1.0.70

1 year ago

1.0.77

1 year ago

1.0.76

1 year ago

1.0.75

1 year ago

1.0.74

1 year ago

1.0.79

1 year ago

1.0.78

1 year ago

1.0.80

1 year ago

1.0.84

1 year ago

1.0.83

1 year ago

1.0.82

1 year ago

1.0.81

1 year ago

1.0.88

1 year ago

1.0.87

1 year ago

1.0.86

1 year ago

1.0.85

1 year ago

1.0.89

1 year ago

1.0.91

1 year ago

1.0.90

1 year ago

1.0.92

1 year ago

1.0.64

1 year ago

1.0.63

1 year ago

1.0.62

1 year ago

1.0.61

1 year ago

1.0.60

1 year ago

1.0.59

1 year ago

1.0.58

1 year ago

1.0.57

1 year ago

1.0.56

1 year ago

1.0.55

1 year ago

1.0.54

1 year ago

1.0.53

1 year ago

1.0.51

1 year ago

1.0.52

1 year ago

1.0.49

1 year ago

1.0.50

1 year ago

1.0.48

1 year ago

1.0.47

1 year ago

1.0.46

1 year ago

1.0.45

1 year ago

1.0.44

1 year ago

1.0.43

1 year ago

1.0.42

1 year ago

1.0.41

1 year ago

1.0.39

1 year ago

1.0.38

1 year ago

1.0.40

1 year ago

1.0.33

1 year ago

1.0.37

1 year ago

1.0.36

1 year ago

1.0.35

1 year ago

1.0.34

1 year ago

1.0.32

1 year ago

1.0.31

1 year ago

1.0.30

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.27

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.22

1 year ago

1.0.19

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.11

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.10

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

2 years ago