1.3.5 β€’ Published 7 years ago

cloverx-doc v1.3.5

Weekly downloads
3
License
ISC
Repository
github
Last release
7 years ago

cloverx-doc

πŸ€convert cloverx api definition into swagger specific format

Usage

Install

npm i cloverx-doc --save

The baseDir shoud have follow directory struct.

.
β”œβ”€β”€ controller # Your api definitions must be created in this folder.
β”‚Β Β  └── v1
β”‚Β Β      β”œβ”€β”€ bundle.js
β”‚Β Β      └── deep
β”‚Β Β          └── client.js
└── schema
    └── swagger
        └── definitions.js # Your data model definations are here

then comment your api following jsdoc style

/**jsdoc
 * The description of your api
 * @tags client, cli
 * @httpMethod post
 * @path /bundle/:platform
 * @param {string#path} platform - description
 * @param {string#formData} dependencies - description, support markdown
 * ```javascirpt
 * Example
 * {
 *   "dfc": "~1.1.0"
 * }
 * ```
 * @response [@Module]
 */
function dependencies() {

}

and finally

const cloverxDoc = require('cloverx-doc');
let output = cloverxDoc.convert({
    baseDir: baseDir
    config: {
        host: '127.0.0.1:7078', // server address
        schemes: ['http'], // protocol, optional: https, http
        basePath: '/', // the prefix of url path
        // info about your app
        info: {
            version: '1.0.1',
            title: 'clover doc test',
            description: 'from test'
        }
    }
});

the swaggerDoc which generated by above code can be see here

Comment Style

The wraper must start with /**jsdoc

/**jsdoc
 * The description of your api write at start of the comment body.
 * markdown support
 * @tag ...
 * @tag ...
 */

Tag Defination

tags

which collection that api was belonged to.
the tags was defined in schema/swagger/tags.yaml.
Example: @tags client, cli

httpMethod

The action of http request which in lowercae.
Example: @httpMethod post

path

The path part of url, Fianl Path = basePath + directory path + path

param

@param {data type#location} params name - comment
Avaliable location see here.
Avaliable data type see here

response

The Modules are defined in schema/swagger/definitions.js.

Basic

GrammarDescription
@ModuleNameref a module directly
[@ModuleName]wrap module in an array. When check the response, the array.length can be one or more, but the elements which are in the array must have the same type.
{:@ModuleName}the module can contain have one or more element which is restricted to same type.
{keyA:@ModuleName, keyB:@ModuleName}Similar to {:@ModuleName}, append the restriction of key-name.

Mix

GrammarDescription
{:[@ModuleName]}-
{keyA:[@ModuleName], keyB:@ModuleName}-

Output-Checker

Have the same grammar with response

Init

const checker = cloverxDoc.checker({
    definitionsPath: 'The path to definitions of swagger module'
});

checkAndFormat

// will get a new list of formated `Module` object
// if there is a mismtach data type in sourceObj, it should throw an error
let res = checker
            .module('[@Module...]')
            .checkAndFormat(sourceObj);

Reference

1.3.5

7 years ago

1.3.4

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.0

7 years ago