@runtyping/zod
TypeScript icon, indicating that this package has built-in type declarations

2.1.1 • Public • Published

@runtyping/zod

Generate zod from static types & JSON schema.

Instructions

Install

npm install zod
npm install -D @runtyping/zod

Use from the command line

  1. Create a file, in the root of your project, called "runtyping.yml".

    # runtyping.yml
    
    targetFile: ./src/other-runtypes.ts # The file to create
    runtypeFormat: {type}Rt # Optional: use a custom name format for the created runtype
    transformers: # Optional: specify a transformer for a type
      [TYPENAME]:
        file: /path/to/transformer
        export: exportNameOfTranformer
    typeFormat: {type}Type  # Optional: use a custom name format for the created type
    sourceTypes:
      exportStaticType: true # Optional: export static types as well (true by default)
      file: ./src/types.ts # The file where your type lives
      type: Foo # The type you want to convert to a runtype

    You can also specify a list of target files, if you want to create more than one:

    # runtyping.yml
    
    - targetFile: ./src/other-runtypes.ts
      sourceTypes:
        file: ./src/types.ts
        type: Foo
    
    - targetFile: ./src/runtypes.ts
      sourceTypes:
        # Source types can also be a list
        - file: ./src/types.ts
          type: Foo
    
        - file: ./json/my-json-schema.json # You can even use JSON schema files!!
          type: [ExampleType, AnotherExampleType] # You may use an array of types
  2. Then run: npx runtyping

Use from a script

Basic example:

import { Generator } from '@runtyping/zod'

const generator = new Generator({
  targetFile: './src/runtypes.ts',
  // optional: runtypeFormat / typeFormat (see above)
})

generator
  .generate([
    { file: './src/types.ts', type: 'Foo' },
    { file: 'json/my-json-schema.json', type: 'ExampleType' },
  ])
  .then((file) => file.save())

Passing a custom tsconfig file

import { Generator } from '@runtyping/zod'
const generator = new Generator({
  targetFile: './src/runtypes.ts',
  tsConfigFile: '/path/to/tsconfig.json',
})

Passing a custom ts-morph project (for the internal compiler)

(see generate.ts for the defaults)

import { Project } from 'ts-morph'
import { Generator } from '@runtyping/zod'

const generator = new Generator({
  targetFile: './src/runtypes.ts',
  project: new Project({
    // ...
  }),
})

Readme

Keywords

none

Package Sidebar

Install

npm i @runtyping/zod

Weekly Downloads

188

Version

2.1.1

License

MIT

Unpacked Size

66.6 kB

Total Files

57

Last publish

Collaborators

  • johngeorgewright