0.6.2 • Published 3 years ago

zodaptoll v0.6.2

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

Zod to Json Schema

Build NPM Version NPM Downloads

Summary

Does what it says on the tin! Supports all relevant schema types as well as basic string, number and array length validations.

String pattern validation (ie email, regexp etc) is not available since Zod doesn't seem to expose the regexp source in any way I can find. Perhaps in later versions, though!

Usage:

import {z} from 'zod';
import zodToJsonSchema from 'zod-to-json-schema';

const mySchema = z.object({
  myString: z.string().min(5),
  myUnion: z.union([z.number(), z.boolean()]),
});

const jsonSchema = zodToJsonSchema(mySchema, 'mySchema');

Expected output:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/mySchema",
  "definitions": {
    "mySchema": {
      "type": "object",
      "properties": {
        "myString": {
          "type": "string",
          "minLength": 5
        },
        "myUnion": {
          "type": ["number", "boolean"]
        }
      },
      "additionalProperties": false,
      "required": ["myString", "myUnion"]
    }
  }
}

Changelog

VersionChange
0.6.2Hotfix for undefined object properties. Could crash the parser when using Pick
0.6.1Fixed bug in union pathing. $Ref was missing /anyOf
0.6.0Moved @types/json-schema and typescript to dev dependencies. @types/json-schema is now only used for the test suites. Using strict: true in ts config.
0.5.1First working release with all relevant Zod types present with most validations (except for string patterns due to Zod not exposing the source regexp pattern for those).
< 0.5.1Deprecated due to broken package structure. Please be patient, I eat crayons.

Disclaimer and notes on versioning

Once I'm satisfied that this package has reached parity with Zod I will keep the major versions in lockstep with that, possibly with simultaneous minor versions of both majors 1 and 3 (zod 2 was deprecated before leaving beta). As for now though (meaning major 0 for this package), expect breaking changes to the api to appear without notice.

0.6.2

3 years ago