create-ts-json-schema
automatically generate json-schema from TypeScript source code and management it!
What is create-ts-json-schema?
create-ts-json-schema is tiny cli utility that automatically generate json-schema from TypeScript source code and management generated json-schema. If you use fastify.js that uses json-schema to validate request and reply. But managing a large number of json-schema takes a lot of effort. create-ts-json-schema help that work.
installation
npm install create-ts-json-schema --save-dev
Usage
# generate json-schema and create database (if exist)
ctjs add
# delete json-schema from database
ctjs del
# truncate database
ctjs truncate
# regenerate all json-schema in database
Fastify.js
Example for fastify
import fastify from 'fastify';
import fs from 'fs';
const server = fastify();
const db = JSON.parse((await fs.promises.readFile('db.json')).toString());
Object.value(db).forEach((record) => server.addSchema(JSON.parse(record.schema)));
server.get(
'/pokemon/:name',
{
schema: {
tags: ['Pokemon'],
summary: 'Pokemon detail information using by name',
querystring: { $ref: 'IReqPokeDetailQuerystring' }, // You can access local reference for fastify schema store
params: { $ref: 'IReqPokeDetailParams' }, // You can access local reference for fastify schema store
response: {
200: { $ref: 'IPokemonDto' }, // You can access local reference for fastify schema store
},
},
},
(req) => {
/* your handler code */
},
);
command and option
command
command |
alias |
description |
add |
a |
add or update json-schema to database file |
del |
d |
delete json-schema from database file |
refresh |
r |
regenerate all json-schema in database file |
truncate |
t |
reset database file |
add option
option |
alias |
description |
project |
p |
tsconfig.json path |
config |
c |
configuration file path |
output |
o |
database file path |
skip-error |
|
skip compile error on source file |
types |
|
TypeScript type of source code. You can use interface, type alias, enum, class. |
files |
|
TypeScript source code file path |
format |
|
generated json-schema save format: json, string, base64 |
delete option
option |
alias |
description |
project |
p |
tsconfig.json path |
config |
c |
configuration file path |
output |
o |
database file path |
skip-error |
|
skip compile error on source file |
types |
|
TypeScript type of source code. You can use interface, type alias, enum, class. |
files |
|
TypeScript source code file path |
refresh option
option |
alias |
description |
project |
p |
tsconfig.json path |
config |
c |
configuration file path |
output |
o |
database file path |
skip-error |
|
skip compile error on source file |
format |
|
generated json-schema save format: json, string, base64 |
truncate option
option |
alias |
description |
project |
p |
tsconfig.json path |
config |
c |
configuration file path |
output |
o |
database file path |