这是indexloc提供的服务,不要输入任何密码
Skip to content

johngeorgewright/runtyping

Repository files navigation

runtyping

Generate runtypes from static types & JSON schema.

Instructions

Install

npm install runtypes
npm install -D runtyping

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
    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'

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

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'

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

Contributing

  1. Install Yarn
  2. Link your workspace yarn
  3. If using VSCode, be sure to accept the workspace TypeScript version
  4. If using another editor, install the Yarn SDK for it (and commit with your PR)

Thanks

Inspired by a gist by skurfuerst.

About

Generate runtype validation from static types & JSON schema.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 6

Languages