UNPKG

express-oas-generator

Version:

Module to automatically generate OpenAPI (Swagger) specification for existing ExpressJS 4.x REST API applications

2,017 lines (468 loc) 25.1 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>index - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <script src="scripts/nav.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav > <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/mpashkovskiy/express-oas-generator" target="_blank" class="menu-item" >Source code</a></h2><h2><a href="https://github.com/mpashkovskiy/express-oas-generator/issues" target="_blank" class="menu-item" >Issues</a></h2><h3>Modules</h3><ul><li><a href="module-index.html">index</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-index.html#~getMethod">getMethod</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~getPathKey">getPathKey</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~getSpec">getSpec</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~handleRequests">handleRequests</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~handleResponses">handleResponses</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~init">init</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~patchSpec">patchSpec</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~serveApiDocs">serveApiDocs</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~setPackageInfoPath">setPackageInfoPath</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~updateSchemesAndHost">updateSchemesAndHost</a></li><li data-type='method' style='display: none;'><a href="module-index.html#~updateSpecFromPackage">updateSpecFromPackage</a></li></ul></li><li><a href="module-lib_processors.html">lib/processors</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-lib_processors.html#.processBody">processBody</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#.processHeaders">processHeaders</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#.processPath">processPath</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#.processQuery">processQuery</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#.processResponse">processResponse</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~appendChunkIfNeeded">appendChunkIfNeeded</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~isCompressed">isCompressed</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~updateProduces">updateProduces</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~updateResponses">updateResponses</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~updateSecurity">updateSecurity</a></li><li data-type='method' style='display: none;'><a href="module-lib_processors.html#~updateSecurityDefinitions">updateSecurityDefinitions</a></li></ul></li><li><a href="module-lib_utils.html">lib/utils</a><ul class='methods'><li data-type='method' style='display: none;'><a href="module-lib_utils.html#.getSchema">getSchema</a></li><li data-type='method' style='display: none;'><a href="module-lib_utils.html#.getType">getType</a></li><li data-type='method' style='display: none;'><a href="module-lib_utils.html#.sortObject">sortObject</a></li><li data-type='method' style='display: none;'><a href="module-lib_utils.html#~fillExamples">fillExamples</a></li></ul></li></ul> </nav> <div id="main"> <h1 class="page-title">index</h1> <section> <header> </header> <article> <div class="container-overview"> <div class="description">main file</div> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line1">line 1</a> </li></ul></dd> </dl> </div> <h3 class="subsection-title">Members</h3> <h4 class="name" id="~responseMiddlewareHasBeenApplied"><span class="type-signature">(inner) </span>responseMiddlewareHasBeenApplied<span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line57">line 57</a> </li></ul></dd> </dl> <div class="description"> used make sure the *order* of which the middlewares are applied is correct The `response` middleware MUST be applied FIRST, before the `request` middleware is applied. We'll use this to make sure the order is correct. If not - we'll throw an informative error. </div> <h4 class="name" id="~swaggerUiServePath"><span class="type-signature">(inner) </span>swaggerUiServePath<span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line38">line 38</a> </li></ul></dd> </dl> <h3 class="subsection-title">Methods</h3> <h4 class="name" id="~getMethod"><span class="type-signature">(inner) </span>getMethod<span class="signature">(req)</span><span class="type-signature"> &rarr; {Object|undefined}</span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line185">line 185</a> </li></ul></dd> </dl> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>req</code></td> <td class="type"> </td> <td class="description last"></td> </tr> </tbody> </table> <h5>Returns:</h5> <dl class="param-type"> <dt> Type </dt> <dd> <span class="param-type">Object</span> | <span class="param-type">undefined</span> </dd> </dl> <h4 class="name" id="~getPathKey"><span class="type-signature">(inner) </span>getPathKey<span class="signature">(req)</span><span class="type-signature"> &rarr; {string|undefined|*}</span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line160">line 160</a> </li></ul></dd> </dl> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>req</code></td> <td class="type"> </td> <td class="description last"></td> </tr> </tbody> </table> <h5>Returns:</h5> <dl class="param-type"> <dt> Type </dt> <dd> <span class="param-type">string</span> | <span class="param-type">undefined</span> | <span class="param-type">*</span> </dd> </dl> <h4 class="name" id="~getSpec"><span class="type-signature">(inner) </span>getSpec<span class="signature">()</span><span class="type-signature"> &rarr; {Object}</span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line381">line 381</a> </li></ul></dd> </dl> <h5>Returns:</h5> <dl class="param-type"> <dt> Type </dt> <dd> <span class="param-type">Object</span> </dd> </dl> <h4 class="name" id="~handleRequests"><span class="type-signature">(inner) </span>handleRequests<span class="signature">()</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line296">line 296</a> </li></ul></dd> </dl> <div class="description"> apply the `request` middleware Applies to the `app` you provided in `handleResponses` Also, since this is the last function you'll need to invoke, it also initializes the specification and serves the api documentation. The options are for these tasks. </div> <h5>Returns:</h5> <div class="param-desc"> void </div> <h4 class="name" id="~handleResponses"><span class="type-signature">(inner) </span>handleResponses<span class="signature">(expressApp, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line234">line 234</a> </li></ul></dd> </dl> <div class="description"> apply the `response` middleware. </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>expressApp</code></td> <td class="type"> <span class="param-type">Express</span> </td> <td class="attributes"> </td> <td class="description last">the express app</td> </tr> <tr> <td class="name"><code>options</code></td> <td class="type"> <span class="param-type">Object</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="description last">optional configuration options <h6>Properties</h6> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th>Default</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>specOutputPath</code></td> <td class="type"> <span class="param-type">string</span> | <span class="param-type">undefined</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> </td> <td class="description last">where to write the openAPI specification to. Specify this to create the openAPI specification file.</td> </tr> <tr> <td class="name"><code>writeIntervalMs</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>10000</code> </td> <td class="description last">how often to write the openAPI specification to file</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <h5>Returns:</h5> <div class="param-desc"> void </div> <h4 class="name" id="~init"><span class="type-signature">(inner) </span>init<span class="signature">(aApp, aPredefinedSpec<span class="signature-attributes">opt</span>, aSpecOutputPath<span class="signature-attributes">opt</span>, aWriteInterval<span class="signature-attributes">opt</span>, aSwaggerUiServePath<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line365">line 365</a> </li></ul></dd> </dl> <div class="description"> initialize the `express-oas-generator`. This will apply both `handleResponses` and `handleRequests` and also will call `serveApiDocs`. </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Attributes</th> <th>Default</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>aApp</code></td> <td class="type"> <span class="param-type">Express</span> </td> <td class="attributes"> </td> <td class="default"> </td> <td class="description last">the express app</td> </tr> <tr> <td class="name"><code>aPredefinedSpec</code></td> <td class="type"> <span class="param-type">*</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>{}</code> </td> <td class="description last"></td> </tr> <tr> <td class="name"><code>aSpecOutputPath</code></td> <td class="type"> <span class="param-type">string</span> | <span class="param-type">undefined</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> </td> <td class="description last">where to write the openAPI specification to. Specify this to create the openAPI specification file.</td> </tr> <tr> <td class="name"><code>aWriteInterval</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>10000</code> </td> <td class="description last">how often to write the openAPI specification to file</td> </tr> <tr> <td class="name"><code>aSwaggerUiServePath</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="attributes"> &lt;optional><br> </td> <td class="default"> <code>api-docs</code> </td> <td class="description last">where to serve the openAPI docs. Defaults to `api-docs`</td> </tr> </tbody> </table> <h4 class="name" id="~patchSpec"><span class="type-signature">(inner) </span>patchSpec<span class="signature">(predefinedSpec)</span><span class="type-signature"> &rarr; {Object}</span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line147">line 147</a> </li></ul></dd> </dl> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>predefinedSpec</code></td> <td class="type"> </td> <td class="description last"></td> </tr> </tbody> </table> <h5>Returns:</h5> <dl class="param-type"> <dt> Type </dt> <dd> <span class="param-type">Object</span> </dd> </dl> <h4 class="name" id="~serveApiDocs"><span class="type-signature">(inner) </span>serveApiDocs<span class="signature">()</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line97">line 97</a> </li></ul></dd> </dl> <div class="description"> serve the openAPI docs with swagger at a specified path / url </div> <h5>Returns:</h5> <div class="param-desc"> void </div> <h4 class="name" id="~setPackageInfoPath"><span class="type-signature">(inner) </span>setPackageInfoPath<span class="signature">(pkgInfoPath)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line389">line 389</a> </li></ul></dd> </dl> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>pkgInfoPath</code></td> <td class="type"> </td> <td class="description last">path to package.json</td> </tr> </tbody> </table> <h4 class="name" id="~updateSchemesAndHost"><span class="type-signature">(inner) </span>updateSchemesAndHost<span class="signature">(req)</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line207">line 207</a> </li></ul></dd> </dl> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>req</code></td> <td class="type"> </td> <td class="description last"></td> </tr> </tbody> </table> <h4 class="name" id="~updateSpecFromPackage"><span class="type-signature">(inner) </span>updateSpecFromPackage<span class="signature">()</span><span class="type-signature"></span></h4> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="index.js.html">index.js</a>, <a href="index.js.html#line62">line 62</a> </li></ul></dd> </dl> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Fri Dec 27 2019 14:41:23 GMT+0200 (Eastern European Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme. </footer> <script>prettyPrint();</script> <script src="scripts/polyfill.js"></script> <script src="scripts/linenumber.js"></script> <script src="scripts/collapse.js" defer></script> </body> </html>