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

/joi2types/

    Package Sidebar

    Install

    npm i joi2types

    Weekly Downloads

    4,404

    Version

    1.1.1

    License

    ISC

    Unpacked Size

    25.2 kB

    Total Files

    23

    Last publish

    Collaborators

    • sorrycc
    • ycjcl868
    • xiaohuoni
    • chenshuai2144