tson-schema
    TypeScript icon, indicating that this package has built-in type declarations

    0.7.0 • Public • Published

    tson-schema

    This project aims to bring you an easy way to create json-schemas and TypeScript types using a single API. This API is kept as close as possible to json-schema so you don't have to worry about learning yet another API. Support for new json-schema versions and new TypeScript versions is added on a best effort basis.

    This is a work in progress! Known missing json-schema features include:

    • array.additionalItems
    • object.additionalProperties
    • $ref
    • JSON-Schema conditional schemas (if/else)
    • Limited TypeScript support for:
      • big enum schemas
      • big allOf schemas

    Installing

    npm install -S tson-schema
    

    Or

    yarn add tson-schema
    

    Usage

    import * as t from 'tson-schema'
     
    /**
     * Array
     */
    const numberArraySchema = t.array({
      items: t.number({
        minimum: 1
      }),
      minItems: 2,
      uniqueItems: true
    })
     
    numberArraySchema.getSchema() // { type: 'array', items: { type: 'number', minimum: 1 }, minItems: 2, uniqueItems: true }
    numberArraySchema.type        // number[]
     
    /**
     * Object
     */
    const objectSchema = t.object({
      properties: {
        req: t.string(),
        opt: t.tuple({
          items: [t.integer()]
        })
      },
      required: ['req']
    })
     
    objectSchema.getSchema() // { type: 'object', properties: { req: { type: 'string' }, opt: { type: 'array', items: [{ type: 'integer' }] } }, required: ['req'] }
    objectSchema.type        // { req: 'string', opt?: [number] }
     
    /**
     * Enum
     */
    const enumSchema = t.enum(['A', 2, 'C', 4])
     
    enumSchema.getSchema() // { enum: ['A', 2, 'C', 4] }
    enumSchema.type        // 'A' | 2 | 'C' | 4
     
    /**
     * anyOf
     */
    const anyOfSchema = t.anyOf([
      s.const('A'),
      s.integer()
    ])
     
    enumSchema.getSchema() // { anyOf: [{ const: 'A' }, { type: 'integer' }] }
    enumSchema.type        // 'A' | number

    Keywords

    none

    Install

    npm i tson-schema

    DownloadsWeekly Downloads

    2

    Version

    0.7.0

    License

    ISC

    Unpacked Size

    25.1 kB

    Total Files

    43

    Last publish

    Collaborators

    • mjwwit