0.0.4 • Published 2 years ago

insomnia_openapi v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Insomnia OpenAPI

Coverage Status

Javascript utility library written in typescript for converting insomnia V4 exports to openapi v3 spec.

Docs / Sample app

Along with the npm module I created a sample app for quick basic use along with docs.

Insomnia_Openapi_App

Install

npm i insomnia_openapi
import { Parser } from 'insomnia_openapi'

Usage

Currently this is built to accomodate a personal project with the goal to update and handle as many scenarios as I can for a global community.

  let openapiConfig = {
    "title": "My api",
    "description": "Internal API",
    "version": "1.0.0"
  };

  // This would be the export from insomnia as V4
  const INSOV4 = {
    ...
  }

  const parser = new Parser(INSOV4, { openapiConfig })
  const output = parser.convert()
  console.warn('output::', output)

Options

  const responseExample = (url, method) => {
    if (url === '/path/to/api') {
      if (method === 'get') {
        return {
          '200': {
            description: '200 response',
            content: {
              'application/json': {
                schema: 'object',
                properties: {
                  id: {
                    type: 'integer',
                    example: 2
                  }
                }
              }
            }
          }
        }
      }
    }
  }

  const options = {
    serverReturn: true,
    serverCallback: servers => {[]},
    responseCallback: responseExample
  }

  const parser = new Parser(INSOV4, { ..., options })

Build

Typescript compiler for type declarations. Rollup and babel used for bundling.

Build an output file and type declarations

npm run build

Run types and bunding in watch mode

npm run build:watch

Run only types

npm run build:types

Run type checking

npm run type-check

Local Development

To run locally you will want to npm link the package.

NOTE: If you link then unlink a package you must run your install command again.

If you find linking issues make sure both are on the same node version

* Inside insomnia_openapi
npm link
* Inside Application
npm link insomnia_openapi

Testing

Testing uses Jest and 100% coverage is required.

Run tests

npm run test

Run tests in watch mode

npm run test:watch

Run tests coverage report

npm run test:coverage

Docs

Documentation is build using React inside the /docs directory.

Docs use the actual published package so this requires a publish for any changes to see.

Doc publish

Inside the /docs run the following command, which will build the app and deploy using gh-pages

npm run deploy:docs

TODO:

  • Servers is removed from return
  • Params added, need to add schemas
  • Headers added, need to add schemas
  • Add more auth options, bearer and basic currently handled
  • Add JSON to YAML option
  • Add options to config for return values
  • Add ability to pass functions to config for each return to allow user modification
  • Add more tests