Javascript utility library written in typescript for converting insomnia V4 exports to openapi v3 spec.
Along with the npm module I created a sample app for quick basic use along with docs.
npm i insomnia_openapi
import { Parser } from 'insomnia_openapi'
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)
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 })
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
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 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
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.
Inside the /docs run the following command, which will build the app and deploy using gh-pages
npm run deploy:docs
- 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