joi2types
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

joi2types

codecov NPM version NPM downloads CircleCI Install size

a converter transforms @hapi/joi schema into TypeScript types.

Online demo

Quick start

Install

$ npm i joi2types @hapi/joi -S

use in your project

const Joi = require("@hapi/joi");
const joi2Types = require("joi2types").default;

// example for react-router-config
const schema = Joi.array().items(
  Joi.object({
    path: Joi.string().description("Any valid URL path"),
    component: Joi.string().description(
      "A React component to render only when the location matches."
    ),
    redirect: Joi.string().description("navigate to a new location"),
    exact: Joi.boolean().description(
      "When true, the active class/style will only be applied if the location is matched exactly."
    )
  }).unknown()
);

(async () => {
  const types = await joi2Types(schema, {
    bannerComment: "/** comment for test */",
    interfaceName: "IRoute"
  });
  console.log('types', types)
})();

It will convert into types as follows:

/** comment for test */

export type IRoute = {
  /**
   * Any valid URL path
   */
  path?: string;
  /**
   * A React component to render only when the location matches.
   */
  component?: string;
  /**
   * navigate to a new location
   */
  redirect?: string;
  /**
   * When true, the active class/style will only be applied if the location is matched exactly.
   */
  exact?: boolean;
  [k: string]: any;
}[];

TODO

  • [ ] support custom type definitions using tsType

Readme

Keywords

none

Package Sidebar

Install

npm i joi2types

Weekly Downloads

4,351

Version

1.1.1

License

ISC

Unpacked Size

25.2 kB

Total Files

23

Last publish

Collaborators

  • sorrycc
  • ycjcl868
  • xiaohuoni
  • chenshuai2144