tcomb-doc

Documentation tool for tcomb

Usage no npm install needed!

<script type="module">
  import tcombDoc from 'https://cdn.skypack.dev/tcomb-doc';
</script>

README

Documentation tool for tcomb

API

toObject

Signature

toObject(types: TcombType | Array<TcombType>) => JSON blob / JavaScript object

Example

import t from 'tcomb'
import { toObject } from 'tcomb-doc'

const Person = t.struct({
  name: t.String,
  age: t.maybe(t.Number)
}, 'User')

console.log(JSON.stringify(toObject(Person), null, 2))

Output

{
  "kind": "struct",
  "name": "User",
  "required": true,
  "props": {
    "name": {
      "kind": "irreducible",
      "name": "String",
      "required": true
    },
    "age": {
      "kind": "irreducible",
      "name": "Number",
      "required": false
    }
  }
}

Output format

Irriducible

Source

t.String

Output

{
  "kind": "irreducible",
  "required": true,
  "name": "String",
  "predicate": "<function reference>"
}

Refinement

Source

const Password = t.refinement(t.String, (s) => s.length >= 6, 'Password')

Output

{
  "kind": "refinement",
  "required": true,
  "name": "Password",
  "type": {
    "kind": "irreducible",
    "name": "String",
    "required": true,
    "predicate": "<function reference>"
  },
  "predicate": "<function reference>"
}

Maybe

Source

const MaybeString = t.maybe(t.String)

Output

{
  "kind": "irreducible",
  "required": false,
  "name": "String",
  "predicate": "<function reference>"
}

Enum

Source

const Country = t.enums({
  IT: 'Italy',
  US: 'United States'
}, 'Country')

Output

{
  "kind": "enums",
  "required": false,
  "name": "Country",
  "map": {
    IT: 'Italy',
    US: 'United States'
  }
}

Struct

Source

const Person = t.struct({
  name: t.String,
  age: t.Number
}, 'Person')

Output

{
  "kind": "struct",
  "required": false,
  "name": "Person",
  "props": {
    "name": {
      "kind": "irreducible",
      "required": true,
      "name": "String",
      "predicate": "<function reference>"
    },
    ...
  }
}

List

Source

const Tags = t.list(t.String, 'Tags')

Output

{
  "kind": "list",
  "required": true,
  "name": "Tags",
  "type": {
    "kind": "irreducible",
    "name": "String",
    "required": true,
    "predicate": "<function reference>"
  }
}

Tuple

Source

const Tuple = t.tuple([t.String, t.Number], 'Tuple')

Output

{
  "kind": "tuple",
  "name": "Tuple",
  "required": true,
  "types": [
    {
      "kind": "irreducible",
      "required": true,
      "name": "String",
      "predicate": "<function reference>"
    },
    {
      "kind": "irreducible",
      "required": true,
      "name": "Number",
      "predicate": "<function reference>"
    }
  ]
}

Union

Source

const Union = t.union([t.String, t.Number], 'Union')

Output

{
  "kind": "union",
  "name": "Union",
  "required": true,
  "types": [
    {
      "kind": "irreducible",
      "required": true,
      "name": "String",
      "predicate": "<function reference>"
    },
    {
      "kind": "irreducible",
      "required": true,
      "name": "Number",
      "predicate": "<function reference>"
    }
  ],
  "dispatch": "<function reference>"
}

Dict

Source

const Dict = t.dict(t.String, t.Number, 'Dict')

Output

{
  "kind": "dict",
  "name": "Dict",
  "required": true,
  "domain": {
    "kind": "irreducible",
    "required": true,
    "name": "String",
    "predicate": "<function reference>"
    },
    "codomain": {
      "kind": "irreducible",
      "required": true,
      "name": "Number",
      "predicate": "<function reference>"
    }
}