joi-md-doc

0.1.0 • Public • Published

joi-md-doc

Generate markdown documentation files from @hapi/joi schemas.

Installation

npm i --save-dev joi-md-doc

Usage

const joi = require('@hapi/joi');
const { makeMarkdownDoc } = require('joi-md-doc');
 
const schema = joi
  .object()
  .keys({
    version: joi
      .number()
      .meta({ default: '1.0.0' })
      .description('Follows semantic versioning.'),
    any: joi.any(),
    primitiveList: joi
      .array()
      .items(joi.string(), joi.number(), joi.boolean())
      .min(1)
      .max(3),
  })
  .meta({ name: 'My Schema', filename: 'mySchema' });
 
makeMarkdownDoc(schema);

API

makeMarkdownDoc(joiSchema[, options])

JoiSchema → undefined

Traverses a root joi object schema and generates a markdown documentation file of every nested object schema in the tree.

makeMarkdownByFilename(joiSchema)

JoiSchema → {String: String}

Meta Tags

filename

string | required

The filename of each generated markdown file. Required for each joi object schema.

const schema = joi.object().keys({
  foo: joi.string(),
}).meta({ filename: 'exampleSchema' });

name

string | optional | defaults to value of filename

The name/title of the markdown file.

const schema = joi.object().keys({
  foo: joi.string(),
}).meta({ name: 'Example Schema', filename: 'exampleSchema' });

default

* | optional

The default value.

const schema = joi.object().keys({
  version: joi.number().meta({ default: '1.0.0' }),
}).meta({ filename: 'exampleSchema '});

isDocumented

boolean | optional | defaults to true

Flag that determines whether or not a key is documented.

const schema = joi.object().keys({
  includedInDoc: joi.boolean(),
  excludedFromDoc: joi.boolean().meta({ isDocumented: false }),
}).meta({ filename: 'exampleSchema' });

Example

Check out the example joi schema and generated markdown for currently supported joi validations.

Readme

Keywords

none

Package Sidebar

Install

npm i joi-md-doc

Weekly Downloads

10

Version

0.1.0

License

ISC

Unpacked Size

27.3 kB

Total Files

16

Last publish

Collaborators

  • jacobworrel