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

2.1.0 • Public • Published

@runtyping/io-ts

Generate io-ts from static types & JSON schema.

Instructions

Install

npm install io-ts fp-ts
npm install -D @runtyping/io-ts

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/io-ts'

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/io-ts'
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/io-ts'

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

Readme

Keywords

none

Package Sidebar

Install

npm i @runtyping/io-ts

Weekly Downloads

4

Version

2.1.0

License

MIT

Unpacked Size

73.8 kB

Total Files

57

Last publish

Collaborators

  • johngeorgewright