apidoc-plugin-ts-archlet

A plugin for apidoc leveraging TypeScript interfaces.

Usage no npm install needed!

<script type="module">
  import apidocPluginTsArchlet from 'https://cdn.skypack.dev/apidoc-plugin-ts-archlet';
</script>

README

apidoc-plugin-ts

A plugin for apidoc that injects @apiSuccess and @apiParam params from TypeScript interfaces. Supports extended and nested interfaces.

Getting started

npm install --save-dev apidoc @archlet/apidoc-plugin-ts
yarn add -D apidoc @archlet/apidoc-plugin-ts

A custom api-doc param @apiInterfaceSuccess is exposed:

@apiInterfaceSuccess (optional path to definitions file) {INTERFACE_NAME}

Example

Given the following interface:

// filename: ./employers.ts

export interface Employer {
  /**
   * Employer job title
   */
  jobTitle: string;
  /**
   * Employer personal details
   */
  personalDetails: {
    name: string;
    age: number;
  }
}

@apiInterfaceSuccess example

and the following custom param:

@apiInterfaceSuccess (./employers.ts) {Employer}

under the hood this would transpile to:

@apiSuccess {String} jobTitle Job title
@apiSuccess {Object} personalDetails Employer personal details
@apiSuccess {String} personalDetails.name
@apiSuccess {Number} personalDetails.age

Note if the Person interface is defined in the same file then you can drop the path:

@apiInterfaceSuccess {Person}

@apiInterfaceParam example

and the following custom param:

@apiInterfaceParam (./employers.ts) {Employer}

under the hood this would transpile to:

@apiParam {String} jobTitle Job title
@apiParam {Object} personalDetails Employer personal details
@apiParam {String} personalDetails.name
@apiParam {Number} personalDetails.age

Note if the Person interface is defined in the same file then you can drop the path:

@apiInterfaceParam {Person}