{"_id":"oapi3codegen","_rev":"52-da56f8437d5d650cb7e4c5001e5e4faf","name":"oapi3codegen","dist-tags":{"first-publish":"0.1.0","latest":"0.1.50","docs-init":"0.1.1","experimental":"0.1.47"},"versions":{"0.1.0":{"name":"oapi3codegen","version":"0.1.0","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"postinstall":"if [ ! -f './.init.lock' ]\nthen\n touch ./.init.lock && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5"},"devDependencies":{"execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"9b6592a59b149b0b20e226083a2a448ba6047987","_id":"oapi3codegen@0.1.0","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-KZY+1MXpicDIDVLgGNN7n6VmAVwT+GqTjmJ+5fIz5WOiPkBe+DeTYHa9F9QM0bvxRb6TiVNWaQlmaKnsRCQ0KQ==","shasum":"85fe93f95c1ab197643737050e1c9e11684b5ca8","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.0.tgz","fileCount":40,"unpackedSize":80573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9x9vCRA9TVsSAnZWagAATuAP/RaS4FjEZMuvCP4+dCSO\nFSZPMhdKGffOwWLWgJGwNlSZCwoFySc6xUABZi/h4NIoBacgdc4EhAfZOPdx\nlNzhdfs47vqpeMdrRhLRSYQmIS9E0GKfpc8f0ArW32fVp25oV3+hsRR5/eOw\nJldLVMKe0v9QECRSDMw1bSMcx0MuVL388cDrZqI8NOuSzUSe/tiLcQOJQUCg\nlbXjY+TY/8eshQdOduEpOlbz/D3wOWECruRDIiAq/BSozqTcwHC9FnuApBd8\nm7J0TwCHJtPmmV4iyNAE2lKfc/iGxNSv/93gv7fEv3h2gidoiOUICMmbIWZC\nggw5pBdzBt8ImdboSAcbpV+B1rfCrdeFz+gMh423/WfOMLh8e1pUXXrBGyQk\nICh0cmL3WldgTPcFIZX8qVd44xujh70SY2SA7hHr2XgL+jiqqrggJj/XnZls\nXQ5ThYMsJanfnCk/vwMp2e+jlAAnDwteaxlbXXLGCZb3sw8VkDoodvRIjLDi\nxHmfdmrFxesP1pZaRga6PXdKXxOPxwJbdRInzPMm8aOUXATPLzE+pFWW0lcM\nUYHUIZcOpJ5FQEn6t0dUZs2YWYLcBeEadhyUQhh0YytVsovkUHbmpO8OAIuX\nweghjZbt328neKXlJAcu4zKvfoT2bDjxolVXZIwZKeb95+cUdjWhtQXo+A7U\n2wjx\r\n=Adky\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE/7Q8LYjBaoOivbmvUHWtxedJ81zYODfh16BjAiw642AiADtOnzzBCJl9KJ5MV6jHCtnYnrx5kShO1Ib/7jHKH31A=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.0_1526144877857_0.07078805929517507"},"_hasShrinkwrap":false},"0.1.1":{"name":"oapi3codegen","version":"0.1.1","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"postinstall":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5"},"devDependencies":{"execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","prettier":"^1.12.1","typescript":"^2.8.1"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to *TypeScript* types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * ## MetaDataView\n *\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\ntype GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *URL's support [in progress]*\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support and docs\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen'\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen'\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"bb74edb73b518c8ead1f58b40d7e69ab5940967b","_id":"oapi3codegen@0.1.1","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-C2udAzhFB5UEzkDsk4tkfNJvmgvQD4GQZqaoCbVJWiGIQh1SBVvO8lYp8g4WH300dQMy//z06rA+H8vJWvu7xQ==","shasum":"38afc756756fca8981aa4b692b12f9d03ffcce36","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.1.tgz","fileCount":42,"unpackedSize":130364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+B2FCRA9TVsSAnZWagAAQZAP/2hlCSVduvBXz1yA+84C\nLkgBnwLDJZl3LyT3P+OjGcwN+iQKu1mn+vPy+TdrkSyaPcxjU3JZDvxlWpQL\noh/p8FewR6kJspYUwlhSmduTFRiE+ZP3bkdEXj0FkzcUx9kVFwr73roMRNgT\nrdsD4r6KIBSxG50bYJZmBHVRqBQPynv7W0uirrDnTITdZCZZsSzH9kpa8fAC\nvpwpKvZ/qw7ia+qqQ+LsYz3x2uRrw/nWrDh2xavHxM68HvrQXX2BWKVtv5He\nZX8pFoakaspnDfMs3hu/HV90eP3qIuq4Z+hYDZ98VGRMOeA0r3DTWfkX6UVM\nVLMFZ5sfuF6Pn0t60Y0ya8bEzjdKDi+FdKdZyvtrQesDdOfn9OVdHwLY4r/u\nbffnghqFeR2XIvJ0goRqOROZFmBsIsGTZlbAphFXKvx80xPZhgE72MtCUcqs\nwyVvegKAe4xs9Xi6oQYAJegqyx5BgIsJ/gZTE30HInP9zpnI10yB8MNjmGrN\ngqdTgzngVUyIGCgVsjeAKTTCFEc++oSoPe1PonKle3SHpTtdax+Bk5DB9WNt\n4QIy1WLxF7fMgn1YSGWWqTLCWggSrytQrHeBYZg3zz2zOXx8dqfk9pnT71Fi\nStPEjMqfBwg76qvIDNaeyY8re1RsUMGCBWQ8FtnmhdZ8NsremZzC3a6l1FNJ\njQFd\r\n=VUMZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+DdiX77fOKiFYAtrHx2f5SfK8WC8uH7xVyLFgAXIeNQIgVsa7eic1JaiHILJFPoa55qPIqgn8Zf4jWTwr+ZYLSA0="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.1_1526209924484_0.8984430910915835"},"_hasShrinkwrap":false},"0.1.2":{"name":"oapi3codegen","version":"0.1.2","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"postinstall":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5"},"devDependencies":{"execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"bb74edb73b518c8ead1f58b40d7e69ab5940967b","_id":"oapi3codegen@0.1.2","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-o1kPCImAs5YqpdMyseB+STorzVMW6eLTIcgFyhV7vfrBaGogdzDPubnKFLiziW8TrQga9Aha1QZ+JnHc+Re/3Q==","shasum":"e1bf946292ff6539831d1e27c98e0fa660256e81","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.2.tgz","fileCount":42,"unpackedSize":130364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+B3dCRA9TVsSAnZWagAAK6UP/1/n2235Q1AXrGzo4RnG\nSJPMetG/5rP5FWnrXtfQblmW3NL5Nw4yPbXmT5oQuoKTSbcQ6qLcpOAbAs+2\n2ngKLIoaYBOFlII9TkBPGaLLEoyR9tAY5vu4cAm4oB0zKLB6kaKy8vXzybjb\nbW8qR8cVP+nC1qBoUbVU0mRdrARBtCQPhwiKpIP/S6FQJzLfsqsADyJ0cUUu\nt3HTjAfvfM12Ry2ZD6FFpfxXawb3Te4/skVOQ0iqYUhsVlKxN7QGM7hR6QHW\nswPP2BobK4/vOMaT8Xc5xBd7QY5WCk4UGzxat4e/kGG3sS0Kg+hhYxCZ8dMT\ngUJLHblpkJ8Xk6TDGhdZj2MMjEw9Sei8fxzfCx62AjHnu1KY9oEnxnz4PKP1\ntSsmR4p6yO0f9vloKlRftSR6s1Ev1FsbvP/MWsyP3TJqvivoMfJnD0Eky16r\nrm/eVKXTawjb7c0j7a0z1JZ7C6HE/t3zr9/0u8N5l6L1iEdQ/VZ5GLVz+3L4\n+C6Kb/nybkIf1cLmuWQ1MjkurixAox/yMgkZs6WNadZX0t8Ha6+RL+KszSDU\nb1iDmfLFV/P6Xm+6jQonpw0GObfqZPZ1A+L2dyLM5iudmmUqaFuheWxAr9kD\nbMjPJpO19et2bxSKxGC7yx9WQeX3YwMDuazQhitKIvk9qnnp7rrvWRuKJXAz\nlhwJ\r\n=tJE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0rfgmYKr5u/B4Mkn5ByNRBzj5NAQXrDkWOYEyNyymDAiEAuxC0PPEUrYGn6UcNIXTtZ0f9EinLLH9Ia05tyOMR+O0="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.2_1526210012013_0.34993459779763625"},"_hasShrinkwrap":false},"0.1.3":{"name":"oapi3codegen","version":"0.1.3","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"postinstall":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1"},"devDependencies":{"execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","typescript":"^2.8.1"},"gitHead":"bb74edb73b518c8ead1f58b40d7e69ab5940967b","_id":"oapi3codegen@0.1.3","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-RYNgFFdgas8V/JtM3S5xnQHV2P9psEuyjrgLKAT6P3Hg4DSYdsqMdVDd+TeE/6Si+UF+0tGU+btzWpR7jwuKsQ==","shasum":"c6d39ba156d6b6f27aa56339349b50423b291d00","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.3.tgz","fileCount":42,"unpackedSize":130364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+B5vCRA9TVsSAnZWagAACeEQAJNyHdBEzvaNd7TcEGUt\ntkV7Pm60I+B1RmqhP2WpsmjbWgbcgZW5BXztSL32WraVucEX/wkbdHHPe6cM\nTPZB4aF0ocGHgNsU3C0VI/sILWkdRfrp3S8tZnlUmW/dASWM1PuH8H9KSNtZ\nnb+E7Bpb+dvZOYlGpOKyXtrPFM6JiSw2nVFds6J901Pq0T/9atLEV7MGdBxF\nll7Y8bVm05kjjJ+QUhskrd5cHxRqcdWm87ovmR+jwzs0IrlrAqx8lWZnItBL\nts91o2wFtndFcUm/D112QA7rHsiaSpCxpSZqXMqhM9YfefsClfOjxz1e9GFW\nD4/+zIhyVRih5GS07Kb5OGd/ovO0Geu03D06wZsSrG/qXLzjsdXfLaarRYz/\nUjIgbqEoKYWlkqpMPKfA+M15qsF8pqLUbOI28ix8KJNQ+r2uRH8xe5WCZbwO\nwKl3tjNAlhV6EwCQF6YCB5gtkgLDYVRQXYluhj4boOau3dXAYqZuTgWxe4rn\nzrbixbNRIsAbOzLytsnvj9kffv6Nud/58td75mxP4umAEs50PML691YbPniH\nbxEiP0cbQNdknArnumckDwSY+OfwTwhcdoXTmESErpVnPAjcpkH5midT40oV\n4xX0njURrnV5jF1M+3KUT/YivFo/OFqXzdc4mFb566YBrS33QlWdlqBBsi+8\ng7DY\r\n=OGUH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjoMQGawXbgUzDLmRIolPU0WDLtU8jTCpNQIjEBK65IgIhAIMgqFZRUhoNVG1CXkHML2uRa9nkVbkaQbQUdB6xgo/Z"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.3_1526210158410_0.6516697297329266"},"_hasShrinkwrap":false},"0.1.4":{"name":"oapi3codegen","version":"0.1.4","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1"},"devDependencies":{"execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","typescript":"^2.8.1"},"gitHead":"bb74edb73b518c8ead1f58b40d7e69ab5940967b","_id":"oapi3codegen@0.1.4","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-TPhirqifkJr/ZDU+4KUhMuZzE4zWMWem8GKp/dkBX/utAn88vDjMegAcdUFwS+ZdA33x/9Rt+hmH1J5NyFq3Fg==","shasum":"9b48a202ef7368af718584dbe8a74b6961f2f644","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.4.tgz","fileCount":42,"unpackedSize":130360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+CC8CRA9TVsSAnZWagAAINQQAKQmQ7F4ry624asyYpBd\nfhoMcy8p3pYCqG2I3bbfqC78kKQcNR/yy2BNz0CCI/JCsK4QZb0SZL8vAo4a\nc5gqEL6bl8HThAUqcHXrtt4UUI6FUfg2PfgStfITW3xhnS5CI/9ZpTaYUz1I\nVMQnDj8I4P3s2UB9EqrO1GQPDoLqg+U43sKcC6XX2fTO5ejz7RXk62FUQgGx\n1r1EXupKA+DhYX/1hXOw2nbCc0NaFLvi0J1uLhZMlREQTJZ+bX/Of4CFM/lG\nHtGzF5vvuVG3wvRgYmXxFQwKlPyAqeiKBLRahKjGZKX9ARbo7l4s51icxDzv\nOHpwJOG6ir1ioHv6ztICqZKDxS5TVje5beNBdHes0KZH70Ccm2IwB8v3DA7C\nRDHmsQ9E5uQp1CvZhKI1S+2M1+MrSqWeykKdqnBqw3G+R1kIsAFJa7/5cTbA\n7WqC7n9dDnt0HOiBZRzS/Q3q2Nbc6OByaE2cfMyGMQSv9Rhihcm+PnM43znX\nLTS69gpU0+y0+LIuzuOWJOZuitvSFLoNsc96QA6HuNTim0I98jT+kNC31Qnc\nCm4ykKcS/wHzet/YhuUbcaxoOGVgqyE1cGs7JGUFyVYfXzOxly1MSbZh8RrD\nIEc+x+JBsOwqOvm08QAnpGRP1w3bmMtaMQ0c2Ulo2e7YEHm/yZZ6h22J3YNW\nsy2t\r\n=6NW+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWg3KkXry5H5yvMzkUht6UEAH9OwmcKuPDsq2+tFHoDgIgY42Np19/Gsvbj1/IL+kcVn09V/S6IG9aQMHHV443+WA="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.4_1526210746975_0.8811330284127794"},"_hasShrinkwrap":false},"0.1.5":{"name":"oapi3codegen","version":"0.1.5","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","typescript":"^2.8.1"},"gitHead":"bb74edb73b518c8ead1f58b40d7e69ab5940967b","_id":"oapi3codegen@0.1.5","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-jt3Y9wuWNPSeSbuDFGF2f9Q/12BhCx6DSVeXwLx2xB3gVH3iRE2JIwDk20oqaxVA86WRD81H76AFiw9uLOQebQ==","shasum":"d04669f8ccd713a0fa8c62962c435d4d2a18c30f","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.5.tgz","fileCount":42,"unpackedSize":130333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+CFyCRA9TVsSAnZWagAAKeUQAIeY/Elv5Ppq09VNPba2\nhTdd/ifVJMftu1XOON20MoxHbKpuisrIcKPphO7RCZThJlbZF5Al2r2dnG+k\nj9VgQKgQdaxTrchLKN5HzhfmUhojHQ8OEnHfdKWOmADO0uAvpIbdMqWwO1NT\nvS6EFFwcvsWUi9DYD5g+Zxvr2GUJ5qZZhZdMv/cw4s5sRwgUJzG41lPvdu67\n7cXjcAk9uUIk/lXZqV9p3KiLOxp6SXCjT/w4fpx3PobdQpaa/Zhk5Ros7/i6\ngEinKH10UuioyD7dT/fCJEa7YDP3sNAZ0n+z6Uf6S7LCM41YJ2OHaUyNw2zh\nwMi8PYL1RPyFVp3xtKWdvUkcJ/1MyufP6IsFK8Ex7UVKBwLYN8K6e1s1JGk6\nltbs5sDP1/rrHDOvquvQXqHD3A1+5e3SZ3PnDwoHzTjQ6hcBGlkmPLyF6vgR\nO+124j8CtRf48x4Y7EGBVdrb09M+xKLbd0v47znmyQxRibiKPEIlnsReKfVY\nGtYTi0ZhKZBR9OTbV2zCPigyERAey51jYXghwZEMchodV14cfOwSRDhJVpD9\noC0zowZljlWKkAPV/2mHapkwm8as2QoSUS2sU846h6i4QwS+TqOlv9N2HsVL\nUCE5YvEtc4bzG4VJMgKtC3BWvyp5ZVsxWP4cFN2zSmKADKtm0tqMtM6UKNhJ\n4+nI\r\n=ibQ0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfT0US4kCRumbFnYNS1eilWOrXUl/7MVpsY1TVIg4XRQIgWd3b1d2v/Xl7buUKVpGWXESTuBbWnsaxHo10oL0cw0Y="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.5_1526210929725_0.748170337914601"},"_hasShrinkwrap":false},"0.1.6":{"name":"oapi3codegen","version":"0.1.6","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","path":"^0.12.7","typescript":"^2.8.1"},"gitHead":"b6149b5715eb34755a01047fcc267d9298380f7d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.6","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-GATgiyQ8W8fnLKJV0Gk1yCRhq6fqVdk1IDx6hJLQr+EBQIDnNGfrMCMix8OQZ5fvm9SY6W2LU3jBE4lH+Nrsbg==","shasum":"6ac59e99d6bb3a545ded7f1092e5fbdbc02915b3","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.6.tgz","fileCount":42,"unpackedSize":130394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+CWKCRA9TVsSAnZWagAAcrsP/0eVWj4CiB6K6his9Noa\ncLUaN1Ou5F1XXg21uN6HUgl/hXaIkfYB8VjrQAOBNwBfVKACXBjypb1ffsAY\n3noPgdt8ATBGNPNuEK6MFDDj65/i3se+T9kwSsHAupjE5PSywhCYX9ukvOOf\nupEk8BDDoyRRwAN01dR0uRuOPj5TLJ/6RZW9iBY8l1fUYUvhOLfdUXeuqXNE\n0dF/h/M9/a4TPLaTFl8gqJgHl4L4+o35WxQprF7h//h53+Xtq64cL44zyT/B\n0IuJsV9Tfm9jnnj8cbWwEO/j/7R/DRNZtQCyLCN35IPc9UZViF4onbI1cPbZ\n57tPgiL4XqFQgNKRCQ0rqix+so1zMDvd2dwwXAA3iT63+/uau+zMBEYHO4dR\nbtI40FUwNJhbPMyN9uNoavEBOeODhvrH+z3Y603eiofZDTmZz4G8Q5+t7onG\nvECyK9Q4mgjZEgQ98j7z3FEOlaJZXVLueMUMrTzwCBeQehpWEus1OOjhRIJF\nMa/ke9XmvNk6LbcIcFlwyTpTdODKFdKmy4IO590bXKpdJ17k7wlpl+SpW67D\n3Gt0vofOOzSxe954LGejFh0OrT8eWfl1TeZLQxX/wR72fA19zzJb8xykmny6\nZTkDLg26Z38SvBjOtyttY3aFM0WOpQT7sUvcuiML/Z9qPZ4sHsa3+w3vd70b\nNwfC\r\n=wrQG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB4B4Mohq8ZC1ykKBOlqE43xd6GTWKEML45fzHJNn1dhAiAHU9MrOAUArO3w0omjOqQokXf0PDwl7gBcso/iaNiGmQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.6_1526211977855_0.4644584949557977"},"_hasShrinkwrap":false},"0.1.7":{"name":"oapi3codegen","version":"0.1.7","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["openapi","oapi","openapi3","swagger","ts","typescript"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","typescript":"^2.8.1"},"gitHead":"c11adcf64d8cc297dc0fa3b0f1ccfd8d4c315add","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.7","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-lf7G2K7np/O1207/G2sQDdBlo9emMvK7Ibp1gLwoD/Iws4Jd7vROncktIh02HXJCVVn9VUvIjlOL5ra883BW5w==","shasum":"d022cbe22310bf05e602d8efc3b105223c6f8a4f","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.7.tgz","fileCount":42,"unpackedSize":130410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+CtOCRA9TVsSAnZWagAAbb0P/ilS1K8/tsGz+aQTWci8\nw/pZck+veIddkeuorL35Gunm4iRj/zSfQeLlhJ4nz8S+Vi5rXeE+ebxny7Es\nKnupxaKy6BZinPfW9Eu0kcjr3t6k8w5Erj1gDjUqjPJHcJh7M8sBZmghSp+P\nDEmd/w+mDHHRrUyC3RIaJ6yhAbd4lbtIzqXMIaeQtmDcmzEgpR/t62/PFfQw\ndvynN8ETMF8tLh7ZV93yCkVSEnIA1diYK02pP9vemN0F7G0eR8h5Z3DmUyZM\ns+Vq/hAl2Iyc1iDfk/ZR0gQGhjZigjCGOHU9AX52QX00wOsS5VI+T/+KDn+E\nJoFPcmvaExj8OPghBGg2Y0xSpVKgJUxm3Y9dZam7Cod8WyyEnkn6pIX3vcy+\n/ft9PkVLxcZoIxiQp4048gRQSQQ98C7pBzA0tz9kjusM0fMviwCdLrPPGVrs\nWT5y0ROVXNEp6cfa1V07sTDnSN66iFnLvCBZSM3s4cKe+gkvMoWXiRmW/cqi\njPysuPaz/h9PjzOvG+cDOXjiV9Yi+c2uE8lnWd4PExegPQGRb8cljJosHeEa\n4AfcdT+JxA+yrxKxUQTmgWs7S0kPrnDGaFaEUx0cWp2sbtE/D+bTDuhw5gl0\nRwy/+N3IvJmA9hoX5Izwx8K6/AC30Xw70u1nEa4Gs3qQbpjPYdQ/fh9k5LvY\n5RPw\r\n=S7sn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFwgye0r3JcOKEGBGw6yaIpB/l7E2yuCjsLYmBCo6QbcAiA6CWAtocjKpW7U6n1YytYPaZLSDM+KIfysdEaIzcEEtQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.7_1526213453024_0.4582139755201702"},"_hasShrinkwrap":false},"0.1.8":{"name":"oapi3codegen","version":"0.1.8","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","swagger","ts","typescript","codegeneration","code-generation"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","typescript":"^2.8.1"},"gitHead":"cab5dcb506ebaa5ff4edc7d93ab2a82d62c7aecf","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.8","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-uRoUwRJiEZJ0eMa3l7zWom3z/O2HIhJayfrRfGQZsXMfeDS4DcNye/2PywTKS57j3EuPAdA2Df+g+JW1k2rXeg==","shasum":"c21fd900986acd75a2dec605bd415e491c8b4335","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.8.tgz","fileCount":82,"unpackedSize":176196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+E11CRA9TVsSAnZWagAA13kP/jpLPmzEDw7nuOljoXOb\nnmXC8UQyyHs22gbe5QFX62zJII5sfhs/0rPPKkNP0W43pWLUaY6UNtpONDv4\nithUVE6HP/9014EChCs7U/T1ORMchV0R/KS0g8BDGjzj18gCpabOL5dl0grR\nB6kmhDxEs8bJYx/EQfu5RtpNQQlb+w6is/tr5d/Z/MCPyxcDxoyuZIcTrMjV\nZfsm4yQhbhNwup2Hdit8a0ycm0F+ibd0Tq1YLG35mxfcQxdm+BSlLhRz1DWc\nIUQxgb48E5pFdmTlt3dxRSryOXYzrBBlxqIBkhBQiZCS6LPHR33GooZe8vy5\nU7dLajsQDT1ywTBjKfyF8pGZM+w3LCrI8xW/9Xxgr5NYox88+aivR6+3zqVT\n1fZcFw5YFKZEI2P5DMehJlGOnE5+I98Z9qQXQK53lP86HqbmIzntHu4IPGqO\nrT7cJBVJxfDHd8wE9TkHiYi+vSDbtPCxZjGPkqDu2bqQ3ybDpkvO0XBW/4Dg\nESjw+we4wSvH/6RqY/F4bfnYBdjAWr+PHr+4NnhZNnOGZ+mAkWYF+ifUYewE\niRGI4V0wXnGoKPIB4dCUdUF7ukKpc5MEqK/R0PfzcVY3ZzVQxT/7oOLIe81p\nW7Z8L+dclSGPkbciZ/MqpY7tlKuhSj4z0u5DoXOa5FZJIMYUUm3u02AQZnMt\nEvTS\r\n=drMf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEg51d4TwaGFVcMNi8SJG9FKgI5mcjXS1ckBy4fu/EAHAiBCxNLm5+wNMyBhxHDvMY1VwjTl84Gskej5FmoMz30fqA=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.8_1526222196164_0.3689049420886492"},"_hasShrinkwrap":false},"0.1.9":{"name":"oapi3codegen","version":"0.1.9","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","swagger","ts","typescript","codegeneration","code-generation"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","typescript":"^2.8.1"},"gitHead":"4341ef11a24fd9077cb0c0a081ec73b640d6ab78","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.9","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-CRaOcZTX43bK3MmokRHWgNnjX9PP5uRblt8YduAnJ7YR+9Mq2FI9yaDX4jw9zUssvF4PoZYvr3KEgqqORYZm1w==","shasum":"989ead81e78fa26b10d2c4a6a68cc55aba78be24","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.9.tgz","fileCount":41,"unpackedSize":88357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+E61CRA9TVsSAnZWagAAOIUQAIxyu2pgNf4Su+DjEHSd\niJn4cazVgee+oIm7ljMjWlwDGzsg3OL0G/R6VVW6aNljlhMQofBOH3eZM6u0\nVaAIcOuXAjfLqVyCLsnGaSN0GlNNNJli/OUYYp3xEKyuO0hKEh6/0XvYZlSN\nI2iPvSjUI6T0SGEo4tCQGFamZmZCh+2Y9p/xAo3EC4r/YtBjzHU3Eco2xQD3\nQpiRsvJET05nqEltQn5n6enBx16T4q5pDe0eLHQQRfuSwFLDclXPY0IqOPgX\nhC50OjphSEDc55MQZWuTlGfc4szWL3eZu5SDeBe3KChXQEGDk3KkP0W1IQcm\nr8alV8zWUDEXdxXg4NAivDPEgiKGLQ+H3+QWsdw/2hfWB1SAlU8O6IKzkpTq\n+e/BVOOs5e9aiUsKVhktinmr93TEy0Qz0roeBCX5iWi9befFKXqLN9/qvSVm\nOB+Y8euBtb/KAdPE96IVLcq/TQFKX4qp/rI6tXKYwnyj96WYz6GEEzdCazuX\nuydIW3uUOL6PqsD0AQNYWvfgZjwChNproU6j4y/h3ieJwPX2/LBJqbzxWgn/\nUs9NWSQEIGGz+pbaSFw6wILxYThZnSB9BX2YazSDZhE+orfj1TP4qlefCEdH\nt6cTP342CRmGZHftZfqLOiV3xeSArFTquVCGqzlxwwg6g9XE4f9jtUs7eP2s\n9DG4\r\n=wNqG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkrlsv6Tu6YpdEr+ik/SLwHpZ4oT3N0gxoVy7EOEFfCgIgVmRXYYRpJRmsL7diDVul6g/2qb5JuWANc0VdLAsoDWs="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.9_1526222516135_0.26135431121995367"},"_hasShrinkwrap":false},"0.1.10":{"name":"oapi3codegen","version":"0.1.10","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","swagger","ts","typescript","codegeneration","code-generation"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","typescript":"^2.8.1"},"gitHead":"4341ef11a24fd9077cb0c0a081ec73b640d6ab78","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.10","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-EfgVIJE0O5oS+MMx1uydGsTPKypcKQDDI71pYPr96XL562Z0OM7B2qmzyAxUjI1GkRUdc1WQi2K3bl19Y6G0NA==","shasum":"3d3800127e5ee44d52ec2e74f7960c99a7715fa8","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.10.tgz","fileCount":41,"unpackedSize":88365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+E+PCRA9TVsSAnZWagAA4ToP/ilVdMfwhG7F0yShigXm\nww6fDofCkmPtMC+QwrHnobUO20ArXzX0jxozzNlUN89B3Dzbs7ekr/e8ynNK\n+Q39aznUK0ci2f155ZLgQAvPPTAQFUzVYxTE09/vGI+KB7t/v7DbVHgaDuL4\nyXRSWs0Xs3tk0CYA3GrBVJsEGA4pW9GtEbxR3KF/KMEZEZj9/+qwLaJk/fUr\nfpS/PB7//lESH2g22dC8mrg5vw1ehafxQAkH3N2BCh+Kov+srzTR2sZUpkUJ\nuh4n2cLmm0OnN/pK96TqsC4UXBN7crIFDA055cRuBf2XurqeMtoAJdFjizvT\nla1Bt7u+BLfzXY5oOhB5ymaNy4OWMTabEZs3aAPLMXxTsEaAXC46B2CPYcLe\ntkHiBpMOXd/9Dse0AyCCGPbDnA+od0VGgvUz67Clp+0N5rih+RaW/Gx2IfV8\nwngDKJIboZml4u2z+ZK8+ZDBNvskxtjAxrLLldZHiR7FiH2LgpR97v6coX8a\nWXmHQAt9U//ONBNazegoO3Cw47QWsfr9FluPzH9rNlsNVdQJvUIJkRWvq9xl\nF898DTVy0mCU/UE/fDR4ij/y3Xc88OixPGymkQiTMjvyldubsiX2age5kwM0\nWbuvvu5QpjyIi0Bo74o+wdl0vasupJ+QL0LGsoze85cQ5DqhbICf6r3GWHmB\nGEO0\r\n=FdKu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJfqFy5kEZHjnbKoMFu0FO1rISVqLN4duheNG1Et9H/wIhANHohVQwNlY9kzByOjzfL1m3DMt+fq3pmK2B9CgHM9ug"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.10_1526222734449_0.5340210544589259"},"_hasShrinkwrap":false},"0.1.11":{"name":"oapi3codegen","version":"0.1.11","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","lodash":"^4.17.5","prettier":"^1.12.1","execa":"^0.10.0","fs-extra":"^5.0.0","typescript":"^2.8.1"},"gitHead":"99f64ff5d10eae30b55d6667f1a80668e2b194ee","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.11","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-RGH637bVBWIJ1EP+r+QeTGN1ymTNydIii8+76JQBMbkM0BcTSpuO30qPO4GPRTnypqqruVOTyiimzuVLRNN7Qg==","shasum":"3e9bcaf1570723216c9875a403e91e8e5f4ef98e","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.11.tgz","fileCount":81,"unpackedSize":135231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+I9sCRA9TVsSAnZWagAAeQ0QAJSITgUvydm0MWNnDi7m\nsZczuHDnlez8aIBpDZLqVZ0aerBCpObLIvLdsxxYdXTckTjoYuvVyN8tRTEs\nuvX2o0+MiThkx4mdweWArAWKYfKZ20Q3/myLA2vk678QTB2O4p/w0oGOcPUT\n03J5CjkgkaSZ+jSa4sLvLFefce58h0GZ/EU01B5SaHSR3j6qpLwk+lRD1wPU\nWrlpphZ4BRC+dk81MhLZ/v3uwp+LNQxiB+sOLgF8EVX+nNXgTQwz/8otcEfq\nz0HkVUtq9dBszswM4iWk0AM+7BHkgb1O1BTAAnAsN7QowhNMSngwQSVtCVyZ\nDLVyT65pIDHYx6uL4so9WmS5cUkf6hA/z/J3Emwue2T71nbcbctMsykE+Y73\nG+dM0Q8qMaSGU6klNv1KaSt/3gD/w8K4AqvmNAIPKscIVd2Fgcj1dgG8pG46\n8N19GWBhBFGUrr+T+4ciZg1f7JvxPhmB93s5qC8b42w1hmNJhASC1+VXXKf3\nV4zwdgd8sIiw4A6o3zmByXYZXBNbB/5mtf3JIIwHlBy4b81YwBPNilyxEPTv\nmhhG1DvYsTAlnMgl2zpOxzJmHuzmSC+i0jfiDI5+VSqB08g9KyQj7mc5TdKA\n+QP5b/Y2aaq1uIEVmqEI0Jrqm4i4M3ymRT4JNEr5eNLkbOEdrrJRzuyoN/si\ne3d3\r\n=AnK+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3m/tvLfUdG0Rbgw5vpUxaSv1qTdO2uJ+5Zd1Reb87TQIhAJKLV9hzT8wYiPmWKmMbolqa+AYzARMi+f88TS373jsC"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.11_1526239084067_0.848016393358199"},"_hasShrinkwrap":false},"0.1.12":{"name":"oapi3codegen","version":"0.1.12","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"3e55235a94885d10204abba740e43ce67b709413","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.12","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-mjSsk2yqsRFi51MJpKomYb/jnUt/V8PzWaQvQ+ySanq8BwNWmV8ui/2V8GYDGsqcKlmB6ZmNkt4RL+4Rd1pkUw==","shasum":"62d4c166c8732f4da2f6cf5895114d228431cf64","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.12.tgz","fileCount":42,"unpackedSize":97072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+KsLCRA9TVsSAnZWagAAGtEP/315J7/3Gu+QVhOTGKe+\nnIMq0d+z1vB2lka1c9igjc26ttcfrB2d2lgKOirQR6xtFOthdRz5mS03sUba\npbS9x6UBjWnDOOAWsToUmKd8o6O07ZO1TdtbubWg2PxfVh+C6ZarZJa619D3\nDML7/rn+ni+RgaTjZBMzqF99wDdLTlpKaHeWvJry0gLZ3lYmLscDzuOFeaUy\n63ZniYoXRAIfmvhxLsm2wdc+x3aXzA7M0hSsk7M4yqqqcJECBNOb2LOW4uCM\nsoALkD+4ueIc7piVMuvnWwIqVkQs0eYSVeKE/Dzi887h5T0kCemvyqK20g1j\nc3KVbbBGsLbpXb3r93xZvIdDzzj5UvkI74FTkWHrF9WFOsR66gctp3AxHu7u\nxv31QZLP3yB67eyr6AQsVTL7I1R7tDNuFjIQ1PLazK/RrZIYlled1tQmM5Oj\ng0aXzUa8MjKHYOXMX5lk6IhI9c/NePG9WbzTS1lvc/0yBNY8Q0tOLv8GBGfj\ndytQK2p6euur+hCANRF75EHn/a6NuB1w5vzkAew7uSvPnOPZ9B+v/u2eFcg3\n+bRX7zUaGcBRG5DSu+LIdepmZAYKPKFkZaDxmBroB+abpGpWx6FdTxt+oOkQ\nz7sxxmsG7U/iXE9z3RA7k81K+y8tbwgzKJnAVKidANRneJE3JES7Arfmo9kg\nLB3g\r\n=yRW0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEqr37HgFueo+iVi9W/Nj5KIvtSLfcETc+aDTC6EDd9zAiEA4uRgK+iE1N+Je7ebGDdDGssSTyb//S2B9jniPMQ16hk="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.12_1526246154629_0.8763392565415697"},"_hasShrinkwrap":false},"0.1.13":{"name":"oapi3codegen","version":"0.1.13","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"0ec1bd74aa6ef3d1bfdf6370778e9f8e47de387d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.13","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-JurHYK4oKmU9/ToxqybFKf8FwlgTiAGL7qu3BVbcOREbbwlL/Z+De2Pg33519DyY6kVvVrS37+pd58ZAamkk2g==","shasum":"7c5c0bd855e91a6c1de4b3a400b35c2bec1510c9","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.13.tgz","fileCount":42,"unpackedSize":97072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+TlGCRA9TVsSAnZWagAAOaoP/3dvNA8xZRzgdP1+JS+4\nf87mZJt6/q+Up8Sd4NPiHFhY8m1GRd2btcF2ueFKr/mHEO7nElcba+pA+gzA\nGzrq7ftZ3GkRGKO4IaZglq44Aj4D2oeILZRLAgCSqBmzctdZXjYccV9QkLOG\nyvUOOesbHpsXYNEMy1GquUwqB5ohxBXNngoY1Ayqm2kKlGABFwL/tqJZnFD0\nHKNFhU4eQcIt26prBtpsBfpKZlYpsZDkZ63Qk1fvlVwwqbw1emPE3Du0LULa\nCcYlL2nI5OfFguimmDYlSvbHiFaCgyMVwDc59YqTCd8K5NxpfeThFJvdyDll\nnL7cLGnPvLaKdpWb2ePwasAxbHJfMMsXseQRospfyyVc8yAz+5+q62/eMOqb\nlGDrBgr4sF7nuZa0DhvzGQqEyJpyin2/qccZLzOfCBQiWXA3ocBX9I4qJyaH\n80H8Rk8OEoDlGUhQuOsn5DICub0tH58begxHmAAXlVSPm8tGz7GUQMjIB2t3\n4lNgAlbsyG1I4r6hU/1Iac7HUIpt58QS3fB/Xr7GtKbT8ZAnVaIzdBpIA6rC\noXr8fq39FSN+QRmbq6slx3PStjUMhcvKX7ArK9CoAlNLfSyV+dOhNTjwxrMc\nB/gLBp00pPgtelyFOkw+/KbxaP+2FlfJZexEfqzgyy+MGLoqNR4jcPxWCd/d\n3eWC\r\n=3Fl0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHP5yzXs46qdJaekL9Nepl79YY4Iw9Ikc0FUcwLRsjzYAiBx0crBqiQtiWUJnAsi/NuIzC+0qpoOgsE+7JF5m4aflg=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.13_1526282565258_0.38144319656956016"},"_hasShrinkwrap":false},"0.1.14":{"name":"oapi3codegen","version":"0.1.14","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"0ec1bd74aa6ef3d1bfdf6370778e9f8e47de387d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.14","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-/7bB0JuB2/FUlx/jIJlYsGFA2SXSWHvPXUu8MhC1nLApVH+yESxBeygHVzf/mAt6GCWQ+vR1K0+iNVWA4LCtfw==","shasum":"8036bb1fa960375682242666c2c9ffd52b50587e","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.14.tgz","fileCount":41,"unpackedSize":90311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+UBRCRA9TVsSAnZWagAAquYQAJXCxuBNLJ0ga1VvmZCX\nfvvCCHvlbwsxtganAaC1kOoUya4c6zcqJny7avSZTVJVG42rhYLbNc7/2QeC\n54YMUNyGYO3kGzsLHXuzju1+1m0gV8lMwIhGInGZiliDgQaThABnz07q+VmR\nJTMGx2K5ztYDa/oqIyx3XbeiXQXki7V8XPVvwDwfsvE4y2BmrsOXyO/mWDMb\nXD0FntM/lmCDOiQMmu3DqAgWKUbM0CSZszNMkLgIr/iPrRCGcK6trhYOblf6\neU5If3yNXBq1tJyYojXNVz2jmt6dpij0siIh8Dgj+/XOIwKm/M9JG4ZY3BvE\neUegMWWQWTCp3zqj+9wVwXZ+Sacq8r8PA5Qfixr3eFxCuT3T0SMq+cMHzI+D\n1MOAcbid2uA9QrXGFf0EwLYXsnMTzdMNzn9BwbEAgvZTVWKKx0qelN3Hrhb3\nHS6SQ41DH2D4M2MmoedTOHgNqqF2atKiP+S3E0cZF3DwbqdJ9+DivIGyGNZH\nVDLBkA1H2BMirRLYFUFaQk7nfc1VzQjTjuuJFYcmODMssFTtt5IsPhDWVuZi\nIfhgRUaGMEQQL868G0CUVDQEbaWBWQheyH3J9wlt4R9ZDKYCxkIwKjVnQBQL\niCRXlwJmJGrUBj+B8Le/kpMKbY0bWyjwwlgrL8WL1YTIWGM1d5ubbgsUDER6\ngikK\r\n=tEvb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHDEZ213wdexLLDz20EuSoeggqVZ+fKU1IyJ837N/9tdAiEA7S6C/OgHWkGP6xBLDFFVr52gEn3/hNbs4NXPdt5o+QU="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.14_1526284369024_0.23621274012659899"},"_hasShrinkwrap":false},"0.1.15":{"name":"oapi3codegen","version":"0.1.15","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"0ec1bd74aa6ef3d1bfdf6370778e9f8e47de387d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.15","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-aOPAROCJPclGLCEr1J8x4spkO8HhRSWGvSEZZOaJgUDi4K2P80T5rGKi4ItzB7uEonAkn6cI22HcFwCnzPYbpA==","shasum":"d1cc2eb3129bff7b5afcde1ae8e077d3207ad991","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.15.tgz","fileCount":41,"unpackedSize":90447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+UGdCRA9TVsSAnZWagAAUf0P/ivhgYP0by8c5O9JA+eS\nRQ+FUrKbqn5Yrr/MomDs3BETL37oF0mneyI1sATrUjGrUo+ijf+04joJCwh+\nG/ztnxBEkCciMitvDnmEFVlqQDlufyDfuj8Q/RAecHRPnAbo/CZlS0/5tiLl\n9edEXyfMq94kyRdTVZopl/gVDyAj9XX857BvAdS/LVRArj+3mHfhlYAbs9Sc\ndO8SiyR2Ody+AWiLkJmgn7aqKHA4Xc/bQacNTrnzuL6sp8AUmnPb3zkD9UYS\ng1Jf/ZLEoFoDr07nmvpEW2ssSWjJwejRiHZC3aZGdGhvT8imVg4eFZnrInfl\nse641X76bQb7JZ5llNwfcA+etthKD7UPwqtNZ/P8gtUQ9YFI5d9QktMaC0gy\nVENqFkg+tRsv3q0uUgjva0fuJJzQ9U6O/gHl8+LVL+25tJKhu/cBJt7zdcDF\nLeFm7jNYEL7Y56skD+DKUUqdjKNs5pu20P1QtsjhpWsQ0coWhNM+kwCKbJcQ\nANAPOADHSkd8RKr/S3dmvzrsg7QUy4jTXtKHy9QMwzGh7djXeW4lmrC1vFov\nC9ly7t66Nt0ZIK7fejnyeGQWN+ruQrBqaKx85FPGscF94VVm0f9SV74RS8PC\nji+xeMaPNnLGSl8q2OCC1E3ntRKIirng4Lc2igCQVQdvrpc+jS4gTQGR+zcG\nuRTJ\r\n=hy/T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEC525+bboWTgUgtGLnqWNpvkYuZ+WibGUEBljWP7/BiAiASR7RlL7u0BZAZ2UL4s1P0oX70FZBzCLXHQMY2PBUDTQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.15_1526284701000_0.04300808691975022"},"_hasShrinkwrap":false},"0.1.16":{"name":"oapi3codegen","version":"0.1.16","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"6820497a5b9dcfe4dcba8900d32d302c2f4da3ae","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.16","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-1r6CeDYr6zIG1Cao3WVKf/kCjdFf0PhS4x6tGXZ97ojlIAIND8KJH4hkI0Tg2h4V7kcM05bveJ7rAe9fJ1Lr1Q==","shasum":"60df562478717f710588683ab90d07f0a967ace3","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.16.tgz","fileCount":41,"unpackedSize":90456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+YrNCRA9TVsSAnZWagAAPRcP/iWsIeA8vbSgWKd6IXE/\nocT+GtMRhcHPMCHB9NyZu9LfaBkY5QZgGCyNoTlFmJHwR7VZa8iVDRFNDaj2\nbLdLtZap8eDgSgltg57HSdAyj00OMCZ8OQCWEzUOr/dg7m/J3zgVoGEAvAUF\neaCpKG6Ae/D5OwTfAFwKjRt4y4L5eXoaUNMpZVbxaOBEgFTRg0NHDPYg/sgE\n/bmqwpJ2dDQtdfO2GlEf2OAj16oYQLkVWb/NeMt8ArXNtGHky6wmQgGA7dSl\ne1OMYd/iNDYBSoW6208KP9x/x4Ugxi8B1jiq0CM3lCwMT3/UNi8Ek+qlx1D+\nBmfBXRc7hySwffQbrKiDXHzh2vYIjvDr21WxBl4m0uCx0vibfbseKaSATCev\nr3+6jsJQp7ve6gnZDMWpKb+QikzNYxi5IJeHGQBCG0Bzxau91st6FzPVtD3u\nMptw6j89jQImCrEtOWhPixnJ9h8j3m7oyZd3L0pQIPOcoKCCtDLqf9Arghl6\nlLmmN3XR/HFZdvYYYEYAUOhQmvJePJn+UB0sb7q/LyiU27NxoVwnkkf7TTTW\ndLmTVVlLG6SkJNaCMiTa52ZDfqIbj1unfIqBmv/oepShlEhhjRTlqcicDyS5\nlsWgD8HvQ+8pZb86WhgwScK0WIKR/q4XfctaMYTQ4o5PYb56MjCoBonUtA5T\nafdH\r\n=1TzZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6LV2Pkslz1zx6bzN0pXXojxtkZjxkRhHIr2fZSOX3KgIhANnbecb9XO2T3V/h1eNbukcD+agSi0golnG/AGgx+I4O"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.16_1526303436738_0.07276727292009744"},"_hasShrinkwrap":false},"0.1.17":{"name":"oapi3codegen","version":"0.1.17","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"6820497a5b9dcfe4dcba8900d32d302c2f4da3ae","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.17","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-cBYpV4ImXYVxP04FtiqrA+Bq/2McoPusXoJsUgOecZof7RHy33MAZU8sgzgoiNU3YSSPsPvrN0cyFZ4iL2T7lQ==","shasum":"863eb050e08cb15e1bc8173b8542f1e16d570fbb","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.17.tgz","fileCount":43,"unpackedSize":116573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+ec2CRA9TVsSAnZWagAAxEgP/2aIxSlFS3D9bpp96xm1\nqxT9AaP4NIYcw+SGrr3Im5irF15GPoUcs24Hr/+SK9JkPf+l5meVmtLceEBa\nYwQrfU/uOAq0+pBVyHVU93DAJbfPoVECfYz7DIeBDdFeaN8rnmnWxh22zhnW\nzjbaZGtHcTcQ2TxNvIa7I8Da8lHHMgwt94rII8FtqmBVU25L8ElkQz05S5Ve\nqVl0tEHK4No+c/oY5OyawkFWnbquSbf2Jc5wE+25asadDXWMxTm0m35vEfZ9\nTmWlfnnnCmxDiTKU5NqRxYky/kaVhaNba4dZaOF1URTCjiqh5XRx9ktBVAca\n2nuZg8XbFGz3DxISziU08kf0lznGl//IIg/lc7r3F6hFjh6qOHkO65Vqgpdm\n3ZNW6Qr+HAIc1jGSLwIFo64D4fycbXJBDEVcp/JA8gwecu30xxX7lLLcWHi9\neHdyaYniQRMyuF2dqf2cUTZw5h5F3QsS8pwD6Cy7xWofGes354MHRHV/AwjR\npGtK+s9sIFKzM3qowB/MAkKiBcFy4BqKhe5hJwxHbVlCt7hBi/w85bvc8KEZ\nYx+/ObJ0pd6lLkRdnMOBcbLGQHps8Yu03NVniOl1DP74EvqzPFMlYDXKBerd\nWfoLKybWXRRIybN+4UEF7tl07o96xMejqWX753IdX3ViPlyaJcvY6ThW63C9\nxfQQ\r\n=soiA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyvHLCcVW7/d63kSTQV9keOeo87lGR5Pm7eCclRqxT6AIhANEq9I5p9oZnATLrkMWTIvoulaAv6C65Bje1J6gV4Z3i"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.17_1526327092938_0.2835132766089652"},"_hasShrinkwrap":false},"0.1.18":{"name":"oapi3codegen","version":"0.1.18","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"051ac934a026f2febc4b5411d443b77bb329bbf3","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.18","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-8y/YTV961QVjfIfeqHVIQszhuVEWGrRZaZSBZLc43L9YK+iUNEAHYFZ10b5VBmJH5X5xra1ZKVhcLWPIAbFlew==","shasum":"9a7d586ebdafe23f3becc303d3ea27e89280dbf3","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.18.tgz","fileCount":43,"unpackedSize":121424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+e66CRA9TVsSAnZWagAAgMQQAIWs8JOBP27h5uFAGyia\nf4zUONkChlkrX9pTfRnMUb+lMmz+94AbBEilybRcxJGx/Tn82YkhrfvsSFuV\netvTCOox7LlSaaIZhm/mSZdatEu8R6j1B1yaFHpa5SvV2O7DuKJIyzn76mw2\nPLHm+nJf0QJdizenIEdXgHwKLGtHakFV3lAR9uKKrbtIuP9qB3VVvDSVpoyW\nZIFtv7OCKJ/11Cismo+je8dVdJ+ExZwLJ8CDgdkAobdPjxzVsjjxJ6uEbP9w\nz9tufh/M3hCqySCCio5ajUc89DMRHrEKjbwh0TntWe8DbNgfmIN2lw+8jZQt\npVPKxpQfl/7KYuzF4rQ+SnjNbHm2kwGc8m7pCJMQ0BsR9lCRm562q48A+V6X\nWFdiq+lZiHhdFIaNlglRVYXpykzhEbZWBnuXD868GW3q01vYm1YX4konvKGe\nUl6y4OWa8FicIE1u0c/wLkazm9nXMT1sqQswgZOXbsNCzAkclFPBALH5w6wg\nyFg+TszRzyQAiGo0cKt65ZcV9GbUXZQQliAqSysHyQ3jz4J+qJO5N+d5bP8v\ngNlChyyQzPRGeETJulLjuZQ81A4v/p97pBJRi/h4esCHwmqrkonxdEjoIn+Y\nKQx9ByG2iMTA6taAQ/ZxLSjlfzvCWx7SkzgeYmSuPwNG9oT3JbyN/4Qwwstj\nVTjX\r\n=ghtn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEyj7pDZLJKECqH9yxquR8R4yRqL6V1eDvz1pbGaMjd1AiB6Na19VZiHqTcEe5MCtv1zoIx5bs/0MTDOcxIVPUrQew=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.18_1526329017707_0.38345952726602905"},"_hasShrinkwrap":false},"0.1.19":{"name":"oapi3codegen","version":"0.1.19","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","start":"node ./dist/cli.js","build":"tsc","build:start":"tsc && node ./dist/cli.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.4.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.5","prettier":"^1.12.1","typescript":"^2.8.1"},"gitHead":"6f440e3f77ace6ba916e05ee22ca6812bca61bc0","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.19","_npmVersion":"5.8.0","_nodeVersion":"8.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-X/w8IllKbPV0XqiqoQ/GpOmoQyJvPZ7EKzCBZP8jI88Uu/PTyOdsTkOX37RMRIb1d7XnMmuo7vaMTyu0wychgA==","shasum":"da012c1ba027c996e2433e4d67a0229677e249f6","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.19.tgz","fileCount":43,"unpackedSize":102498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+oneCRA9TVsSAnZWagAAwOoP/RLE0pybtFHnGk+89pXI\nu6p4elDE42qYGnU3YxduYkZAsGgRoSvvSgF1AqmC7Uz+ybh3DFIB8bvuHQON\n1xDois5/UcLrfoloCZzDLKhq5kPKqVpRn5ZwEaJz5E7uQSZ7jes1Sb/tNTsp\n0f++ocNwujLlJnDPk13iOBLkvNq+Y7W70G4pJsdFr06Mqq896eHYkg4fLrJA\nUAdA7Axnd3YbGsLu2rHr0vbt1lnnaXWsHvBJ/GsTimyjyMLJP1XVy8oKQe38\nfJqIFCWFqp+px71MDyVizyhX0H5gvq3pJScO76uW/JZBGrmhi18+dp0gik65\nv0dDe6ZbP6T4eZIQGPzG9TCWcg1CMrg886gyOU5xkIdEfObzht/G8VRLCvae\nVpEPoExtGay9lTUKj/doRVMzMcGAW5nPTiF6M0esZw/P51jhdMzd+Xwwhr1d\nhxbZ1fiWkEXNAxfnlUUBFY0ftERjgTpKG6mIEO0wPLrri7jqZIyQ8MCkhZOC\nm+KhQ7XtB0gOHgkdR1nr6+UeVXLHFO8qBsyjkdEqBXaej9NBL1h9SDK4z8TA\nETJJgZ++sqpILqP1ZWCKq5GuI2FAzOCB2xJvqx3/hnHZP+4CCr5Nx4SPZpHD\nDBRt/krL221eV7DPQFbm8iJtr95kcJTHWil+jBVK1EzcWPD6vLu2RQNcX14Y\nkv//\r\n=YmRr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDgLfjm4sA3ag16GQzyzEX3kJInKQQshlIyyzoA67jtAiEA2FQBNwDlFHkbFM8ya51fO+nJRnxQw3GStFj4JgjaU4k="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.19_1526368733000_0.6712220918949428"},"_hasShrinkwrap":false},"0.1.20":{"name":"oapi3codegen","version":"0.1.20","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"0c2c1881626de225c88e291b3c0f4ce32df21fe3","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.20","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-QFBId4F/qVuPQw46fMfrTZTYrDUmpCCiQQrTern64RxLdrp9sMIkH6Xmg+axrhKk/WtpfV2ep3ULCIHnyoGbEA==","shasum":"409c0451b8c71acbdcc13e7f28ae80ac3fdecaa8","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.20.tgz","fileCount":139,"unpackedSize":229682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGX4nCRA9TVsSAnZWagAAUR8QAJynRzbtAaqY0WdgIzF+\nJad+zfSouY57+pe12TnvepH31Xi6gArAfYQZnneoXc+bhRKwZILPb8wh+0QB\n5givD5S/L8ZC3fW9aDLBbLXaV/5YtcGr6TX+/F07p6/LKDyrUCocf5cr6oTY\nXYPQJrsRGxeE0iiaCMl0qeZvIP5UCsIXD2qxtUG+je6d44f7oiDOiw7MpnY6\nQnQbLdY6futtL3dBcqom0JVgcSTSrGWVmXrj9E4MfZjFEcMmri0arusIZKDi\niEmZdruZqaIdasVFbz9nmya6qtlfix1jSl57CofdgIUZ9afQL1aRFEtngo9r\nrpBuBlK4+210WQOGl/6IIWWHtpHZTeY1e+JxdolkKLLOQaCiwfEUuCthLVtd\n/vJwIYyWTwkIaANyxQ7anCPK8uGyjeid5mhzeDnznuURlV4qqHf2GeKK+1No\npvn4Ka7Vpy0/PTYazT8CG7LCksNxaxjpnpBdQ7lDRTAzhyoRGMO+IkA6Neb5\nxFADXEKAibOTM4W//6A1DlfHOV8DtuW4/CsZ+ywzaNLFITO3Um3Gwl/3SXIQ\nV4ext4ady5OyYeegpwiK56XwaxksBdKFrsaw6yEunB2NwqGO9FzdHSewmJxY\n2TVe6Ea9+K9j3RPqQaXdftKiS5W2bfyMk2X+eCU/43h/63rRSMRGj25RTGtM\nN/BH\r\n=e9Pv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDEA1UoQAhqzw278DuNuNjinQKMwx03beBUYPnqbO/vVAiBK0KEacZaUMIyn4HwZZV5vWJc6awGjM12KcMVMyQplCg=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.20_1528397351246_0.15719063488879415"},"_hasShrinkwrap":false},"0.1.21":{"name":"oapi3codegen","version":"0.1.21","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"7ffd9a49d737c5a7be6c3feb068a504ae4f3f9ee","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.21","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-5rup2cL9s0AUARB0wdbdngaglIi/k2QnwhMVBWqShdMuSjOyBoXZVK9kqpyETOeRbEkqKe1n1JpEZha1qlf3Qg==","shasum":"e9a80508856d0a0155883f6a83748971cbd75175","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.21.tgz","fileCount":46,"unpackedSize":217198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHQpVCRA9TVsSAnZWagAACI8P/3hZQp/SEVuiCZwA+mxv\nTxdsqG57Diqh3aIwyDyQ8LVAGw/2DmOgvxOBrqTKjGZPGK/zpEHBbxoV098B\nklsNY1apNkg9YCyRVImGHp1U3PjpbPia7IdWXwT82w5fUX+4YaXnbLIKV0Lx\n2J97J++J+uKnDjhJpndqkjKQMDhZhjNIJPlCXjGPnjCqjj7yqrrisaIv3HgA\nPMnD2FpcAa6JpuktX/UTRrZpEvlhgEp6jdTMxV8wxEzlgXgf3LielYu2Xrh5\n4akdZq3r+gwJ2X5iAj1v1vChikf73dbk3t8HnwdMLSk66Un/qzr55UkRRy9i\nUy5QT+BPtiulOE37YukJcp7XO3yHvIO2zBBtlQeqKkrF90x+MkwNpTbOIKoG\nn6MwerbswvSU6xNQ+WfbviRiydJb7Z602UkwSGPheSymHS5XOfEXlskp8b+K\ntZRU1QMo6WJsC8l1L0s2WfDJtVo4XqSe2nInF5UxtvGrNprCmSrLXl7VnNSD\n3c/3FcqldPAhWcwkWbR6EYUFrlYX3LmRWTQDpoUvP+9L9Czl0HiuTFXQPFeG\n+DbcQXrqOAHq+6yh98Yom0oi5iUAO/blgZj3fp6FeIIMqjbNPspaCn5D+7Fs\neLlPWGQHbqzr9dXU0bMvcldEVrBqtYHiIp+r+B/Yk8jY6RsUswF/GWXprRi8\ncIng\r\n=HyRR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWSnOBcBxPuYe1cKpZCKhZpIv8rKDJWpOwlKVAPPKVwAiAcEEeSWdE0/cAKBYKv6S5H3tCNoLy/busUTkYaW3hioA=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.21_1528629843959_0.5297335604455553"},"_hasShrinkwrap":false},"0.1.22":{"name":"oapi3codegen","version":"0.1.22","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"7a977f129dd25c0714f8f7cbd34db9a70d28c93a","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.22","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-pIaasxPJU49WDhpQU7KUM7AP/b8ldaNRsOohZvnIQeveBPgZLbywEHY22V2EMhwPKS9My4DjpUl177N+Q7wXQw==","shasum":"2faf5cecce6a36be8b3d82b3c7f4966c3f83c11e","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.22.tgz","fileCount":8633,"unpackedSize":86827874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIPWwCRA9TVsSAnZWagAAE4MQAJ46cdc+iKrU7EQckKNS\n6dd3BCnAlz/m2eylYnOgI3Okf+nMhmzO6DXZtSAHEkI9dRmajs34G0xHum83\nyubfrtqQW7JEpCa5QFuuuYT7Iz3GnwuQ/W+frEAJvd3M+JU/ARItJS1cPqRt\nWLKT8C2fqZQUnI4pNYw9e4IcYjMFlTjEqz1zT6Xem39aJ/3h3IXQPtAMLRbh\n5ALVOAkFqUYKPGLxO7FKInf3vgcP357EZ0hDwgFheoZc6OG6VWeTUpj3ZATU\nSzB130LDmhfJG94QbDiFTgCVOhLfxLN7hZTjFxjMEITPWKqdex0cUuHtVhLg\nHDG6AsjQ+noITWm7IJBieD/Ttc6mzbPChyJGGnQttLEvTTlJI/UkSuOXMPy9\nxt0fj6tpxW872iq3qc1kk9wsvb0fSY/Nlz9Rt9dYbMummdkA0WsjUscVWZrz\nEz/QagoVmFj8jfTd+r3klqQrk7T6OiffRO5SZSH1q31atIQnB3nnCl+SvJrG\n4cHBX2kva22jSPANfcPAuCaVkSBMphQGSWUtPXicIc9wzNmdlm1rZbCyeGxJ\nCs5t31ySl3tDk+2eM5L0uWR2aqnEEjOUkjRBiM77lnEP9m5AP99xgQ5vGX0V\ngaMjd7VYggEjGlc9TMb/JEGqxjw9INAoF63xse80OtsH50Dgrf3d4K04QXHS\n98hX\r\n=/gBn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9HSXNn6MZVvhJ/znYCmYsx+2/TDAJDWgaHjhMsNEp2AIgKGdRsztyb/wvrkRgJyIOWyApzMo9v0UCjrTuDY53ffw="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.22_1528886703365_0.6622039407690572"},"_hasShrinkwrap":false},"0.1.23":{"name":"oapi3codegen","version":"0.1.23","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"c8b57b9d59bb8d1d3e3a77c5817cab2b2e175b09","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.23","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-Mo2tFvNy/gLncSF71tub8gY+ee+JN1QrhQKLneKB4ZTvCCP+kUiOE/YdTyCtj/8SnHuKOOTVPn3Jr57vUlkRtQ==","shasum":"3fdfcd99eb0d72878ebf8105cdb0c5d83892e082","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.23.tgz","fileCount":9210,"unpackedSize":76289136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLNC2CRA9TVsSAnZWagAAbnoP/RyRY1eEL8+dtb0lYggd\n6lptvuBrpCEx1bnI38wGE/aMDQJVafvjEYAQ+pU7eb1ng0KrVVe2ueyRyK6M\nL6m/PvJzKHrOl6Xck4hce401U3/MpQcriGgvycDVrDV3uztJX6jzKrqYY1fO\ngC5G1nLWzvnIi0rEI6NLRdD9+qtnn3/Sdu32Omo/wGSCX0rEU8GlPjeHoY3p\n4pxHtL4LPEoVR65Y5TOA+WvkAygWjN5DWGMMwaBbiX3S6nUasaGu8TQ0huZm\n0A5zLPDzuWw3Ydiw4YQssqtz8s7FoFcLDxgUOqbcWt5mjk+NNS2Bdjd2+Bxf\ncieqhsD9ZumDF5L9k7pPy9Y9SGBcoORrhszJ0QXHSB0LmYZaahkxD7S1e7Hy\nUuePdbIPA/gIYJ35XLiyN/25Tz12M8xSe3zz8935Q+HGHQkQD2BCR6QgHTHV\nnZQNdvnME+V5mucgScVSqxPbsiv1NtEn+g7+emR+cxQiUqz6ohOGeVxKty/9\nntC6g86WAk+ZyV7W3EEW6+Tecy+UMswyLKJbeBfqejrEc/uYk7IzFlj4Rq8J\ntvde5fUNu1yjJDycWK7FW38W8j0bbF541+kZFyK3jIglIXMhv6VzpaskU71B\njnUR3iFdPZvX2OqogAIMsmrHc6fvf6RN7TJAwSjd2mAzRReragpZEDor7d7z\nINJc\r\n=pT1u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrv3bu53H5xF+XYqzU1PNTUuGSgSOlcPohHnu87M89/AIhAK4SNiLkUIPTzkxdgR6Z4kxQzQzmDZVONtWDoVsunhLB"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.23_1529663669774_0.02544630300309736"},"_hasShrinkwrap":false},"0.1.24":{"name":"oapi3codegen","version":"0.1.24","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"4d88cf5b4a8e3a6ae7c33d2535f0f2ab208941be","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.24","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-d/1M3jcaPOLFb61UUnErDa6IUzh8b1gO0u84ZbPcrMYMp38WxOMEreEVVPAJEG2JDnXxnMmTAJbSwFceitTBQA==","shasum":"f229d92226ec4385436f1983ac46cd4bb2f57665","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.24.tgz","fileCount":9104,"unpackedSize":76046877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLSF7CRA9TVsSAnZWagAAd1AP/0CZKlBEBwNwSqkdCxSA\nxIDiNIm22qHdqe9bUFGT/msMCm3zth0zjenGtL4RQ14YIaIl2tOmTq/BYCJ7\nPz3iu7Q11Z5qKMqksKDW9F9DEEBuWGX8EgasAUV4iOCeSxE1xQCFVDZlTc7O\nCuHj6UgWqJdv8b+E4EBc7lokex/HsrYkyiAoaOX94siKgYcRmVQd5VziME4l\nKMmpEcMbrPJjMAv84RLE7nE3TTR7PH1Y0ciUP5iyPYAu+KpBxiWshcrs7hTd\nWt2WsMXCYAS8i5yqH9hRDKkKXlpNzHgIz0HHJkdeKafLd5aqEj0Vr3bnZ2St\nYr/Fb+gkDUWY6Frm6NNn4SrNSf3TKGgrq4FwcPEK3lvSKRHC/evZPuFESDLl\nk3W7nHtjts3b8+0oJOIlwC+9iFA9bkaEsBUmpKEwoHVg488tehIQWvlyqKsA\nrhoWlbHkW/DMQxqy7W4Dmr/0T38cIcpl2MVGBkk4UM0rHxYFc+VjJ1CCHx9z\nNWcvNGJqtpJozm0rxfdZkKSzNgc69QHBicntAeOffiveB75A/2dkZHZ4ua/d\nWOZgO756BSEKv3u7ZkvzRnvCodaQXS7MzDI9W5kJXIhHtc/wnvKkVyNjDw0v\nBDkVRkjr5Fw+3Fe5vyyVFEQDbISJGE5n6OQXnx3YjhtsCJrVkpP7WhiONOWA\nauu5\r\n=ltI1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKqtPt6pKcB85rMsLFCwq+P0H8H8sWlQ/4P6yvDP29WAiEAmY+wcWXLQwvwWf3s57STGcBES7KNe7x4IUV34rEW7EU="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.24_1529684346953_0.28988314214598043"},"_hasShrinkwrap":false},"0.1.25":{"name":"oapi3codegen","version":"0.1.25","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"8101bca00fc45eb980552b3cd94e98bec3947f17","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.25","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-mW1SpdWCgL0/1pDRAZEZDSiRVmpS3rZmXa5w8hkv555+5vIZJ+2kaamWwxe8BCaKYXcv+qBjKtcUM7SB/8iKfQ==","shasum":"f9e03c91022fd680e55c76d58b3f573f7461c9fa","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.25.tgz","fileCount":9104,"unpackedSize":76048666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbO1CiCRA9TVsSAnZWagAASJMQAIISqJt1woXhZa4Gc8nY\na7SPTa/zaM6KtQhBDBmtCQpFhU6l2ocKjWWzGmJLoXD2f1vGLikzQHRmR5se\niUolZ4zEhEBTC5hY325bq5JpUC0evRS83NPXPuPj5NX719xVHYlLbzAzUJM8\nWVEkzW6DGUPAwLcB+efws/vfytRDbNhTZ65sjLvIVJSgxujuvXO4eT8jtvtO\nxZvqTeM5Aj+W8Bkoe9hwsgXIKdNhrX6fi9N0X53efifgUijUkNGQh6M2HIfg\n5qATWe3W/pw43zxOHdV1Woi1KyTu/BN64oDxgiYQL26vMY6GQcg4oZSyXyR6\nz0mvQusXMjzVO7PUDccWwRPf4iWo88JsYex1D812oqymwKJkd7LSE92ygcAz\nkdmkAMjF1kJdLlMgIzgN/sp7QuvxC50zWuRkmUFU5Ue4NQ8XC/+795/CMMPZ\nyMIQPyKV/2m/UWoWkU7k1UwhLk1tiWAuVWvUC+RZCKxL/f3Z7tlOfUH5O5AD\no33pyMiAnK/x8x77DwF6EN9f81RTp4bWeZekFtxrB7Bu/PKzVUGJoYHFNIx8\nxy3bbQ1k3oy4J5q7kFwqFehRfUcEs3UPv4h1ukeV8Yu2xqA8FYyRcZl6IjzB\nOYBbvshy0u33hDQ3uFfTa+ponryQlvVKsk0dHpiz8bcA9uLIM4md5uqNCu8C\nozpH\r\n=ZjXM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEq/DdsCta45a5q7W+7Q3A9jj4yFh8aptCmeIZQ80z7RAiEAyMv6BswUDoSfQqjHBG3RJLXh6pJDZs8lN6JFFC7PhOs="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.25_1530613921266_0.5037777464373014"},"_hasShrinkwrap":false},"0.1.26":{"name":"oapi3codegen","version":"0.1.26","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"8101bca00fc45eb980552b3cd94e98bec3947f17","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.26","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-deQAFkAXBihqf63Mg5+5C2KPyOeoePuXsV7LJtEyRmAaEbf9yRcfZHD4K9jiOdSeNMHXH0Vf1FctBvfxbcwAtg==","shasum":"68a9debfd85b24fc9ac77d08a66db7d9991bd97d","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.26.tgz","fileCount":9104,"unpackedSize":76048678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbO3heCRA9TVsSAnZWagAAW6cP/j3+3WgoCjct30uvg4Tt\nsJCoRl6XYaddxS42saYixdVa5/mLL0cq+fXLcwIML44wM7TjzXqhqBpMhm5n\nLpy3eWKWobKSazlbz6A0gyhsxf+Tbuiv9As+dyrBjDGrem6r8n6wPXVPLq0b\nhKppzI+3bKOxPqPfh5N365xAVO8yClxKkUscwtTWlP3wZ1ik7KfkMGVNgy+l\nWHDy+T5u5gJk/cbJfzPLfiHii29+QAYvZ4ikFTmsrEWBC0q13sBSSS+rY0sI\nECu2PiZMAFT31y10Dmcs0I9/FUFsD4PwaQnO1CiZFhwCqA2Rja4dmrjZbkaS\nQU31PCPKkhXj6KfJaEjjRpskVHR/zSTD7/xbyWNncHMfDtzsdotNXzN9fvtO\nEZxUrJcYaRvyRzQJ8ah0Ta5Xl7SidL06gDHX7HDiu1UDBGtCa/Kbbq2MipH+\nq68uHxnxG1k6BsZP2dtTCbTv1YQQ/IdKQhXd+80fJEUfW7kAMWeskPIx2VXD\n+SuzUiAZgBdsrlJ0LyvCZGZD1wj4eFhLVI2S2K41ucdnVW135N44vq6aUw09\nbrCb+JWPXzatoQ7fZyyXQ9pGENYdDIF0Y63H7W2Jqu9OLBB0HSk0gcMhhcLn\njjXYFJzS9qH4+MuSM24EwKV7HdJkFH93f9D2JP4WSMkLSF4Keo+RlhAuYjD9\nw13k\r\n=E8kk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV3e7NAvlaoQtTLVYHeevWSP6owrhPtXHW+cjK+JTncwIgDN8dAL+KyQKC9c6G0za4eJOkk23i2a6PhDC/Ov6jIdo="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.26_1530624094037_0.8504990450626235"},"_hasShrinkwrap":false},"0.1.27":{"name":"oapi3codegen","version":"0.1.27","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.3","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"5fc8467b0164f97fa182957ff0d97799e178d35d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.27","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-lpyaV7ubLSyMo4Ko/+hqqoG5/1KP9LSduzw4Yrmr79km5vBYJCb5uZoTRPnIhPwgmekchky04Q4LS+iWdhIfMA==","shasum":"52b841637e4e2b9092d8baf4066561a23b6be8c3","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.27.tgz","fileCount":9238,"unpackedSize":76588876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZEeKCRA9TVsSAnZWagAA7xQP/23lsZS3sISKrFuZ1DU3\nfC7sgjJzbyYJfGcwVyVKRboR9b4KjU0OZ2Rhyj/pwGLKDXnpY+jnr/DPkn1S\nULObQObQ6PLmZd4mZb53Bom1C6Keqg8Ko9OkEROiZ+0l0C6raehbthQ56mLm\n1BnR34fILQbbDQiXNk5YNXzxsJPznfJjcLCDXZdgGZN4x0BKXuXmOEQBr1H7\nrWoPdxrTQgrjdem4VZV2E1/9BhpJRf3pddXOicoJINu2TpOQsWSn1Ay+jjxK\nItmu20bh2U3mGWArMoAOwJTTTqTAy+G+oDorojVhq0YA+onEH5aM89W6rZkB\n4D3APwiTpHfGdCSiKK3V+YNLF6H6fXtqXBaCFs/YBChSyi+tmQJAksmg+0yy\nf9gOuaEbz5onOFMPLB7qPAiFeKdCW0FaUpBSr3hT3bUdi6x3u1oxl3P6Of4J\nnAOt0OwMfej8Q3Huzxga1wdaluf9xAS7LZgoOnbtvPh+jEDGQiKWpM5410JN\nrEsircUS7T0GsqzDPlbs2Jed+C0Cx9a8a1c0Y6wYP7w+AUphXV2QoYEasfBY\npIqVj4dkm0/hbyXf2WR00z2iU6APYVvkbZl+tSPaM6zsLrV1HhCIf6vbRK+C\nIaXCDevPVreGfnAA9/aLrmlDMhrU28Sz0U+AGC34qIqmn47hqwo8sjGcofRt\nqe9F\r\n=ui9+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA8rtv1qPttPpjU60uAmNNrBEBYAxrRKOlu5nk3AYRk8AiAA64BwPWdso8ChYM231PI1W2MIbYzsmSiVMUxkqN5FVQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.27_1533298569374_0.4237401875507967"},"_hasShrinkwrap":false},"0.1.29":{"name":"oapi3codegen","version":"0.1.29","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"4f67c8ce49eb598c97637c452a64bb42e847efd2","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.29","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-6cMtob47MXcvkyvkpkxNDCHpWUXNQyXUUSHuFNqhaWg8oh69FVxrdiotIN6ZMku4J9aQ/eT/tliw4snS0VkK7g==","shasum":"670efbab3853b164b0ed7d0789b3003e6f5747dd","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.29.tgz","fileCount":9212,"unpackedSize":76584425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbC6WCRA9TVsSAnZWagAA96kP/3FQCgF7cyKfK3zrzRLP\nUl+18Ts+C+Tj0wNMnYU7zZLjsR1FGH4qCkuHGJi3Tr0IynESnwUDej0Gt4Rp\nC/SLuDikwglu9Xt35jiRdJ8dJDlBm0CMV5y55Hx+dWpbntwpS23ZAiW4QlyS\nydh34x8dTi8T5OJy5/vomU90Kzut6Xw/5G9VzgG3Yc4SVM8Iw6xuS+0NcBTU\nigUuR6V8KwMZURs1ElUrCdsZ5qwHjx0Kg6p99Xcxvfw5XgAaENHV8lgS2Pyp\nQWkkP9eOUfzxGALKYbRrlpmjI7gA+sz6lSAIq3tmIbT3aYNfMZtYBew345n3\n7Y9vAbTdCV5lET5b0H24ohkpVmDdUzrHv55geiixpxMiGVJjSHv9vpHixajJ\n+u/g9YW3ROwrQSLbFZJ3qsX+g3gmrmSe6w+b8EVS2iT90IQsydK3eU0mlIzA\n7SgOZypmkCJA3BOVnhZqNyZUktmBtHnPJHe2h9a8toE4ozzjI72TOAO71ktw\nEnQn9TCy9J+wdrqXghg+kCGfzOHpC0XrbVCekFcelwnPTZ7qAnRzFRCsRJKj\nVEPIz5/gASVAea6DXiJtwlc3k9AaWI0kFtIJ3dodiJLsrOvwm5ZmOOEhttC2\nbrMJk6Kk2IAMzB42omhRZwolaz0LMaQRObD5OC2HVFf/hGcJ3T8Uq/+R4k8o\nhO/3\r\n=s/XU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3yCZMXhGZDG92PRRcnFwrzMoZQPM+EwZqYVzAMhhFrgIgNVyBvouuz1yt8XNgaUYVSjERPMDuD411HWImc4wSC54="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.29_1533816469142_0.6248648273353921"},"_hasShrinkwrap":false},"0.1.30":{"name":"oapi3codegen","version":"0.1.30","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"4f67c8ce49eb598c97637c452a64bb42e847efd2","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.30","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-k90zyPJszWhgCzS3FtJyYZoQe3KQivb4COXJNxn0KQGF0WWyZWB3HugytVj1W6wdyWzTotcrDablu02q5UKRUQ==","shasum":"03bd9d46f58372c6f889d2ed2bedfcde28c3bedb","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.30.tgz","fileCount":9212,"unpackedSize":76586930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbDQrCRA9TVsSAnZWagAA10gP/iwT0DFJ+7x9iA2YSoM8\nOXWN5kV8xl88Wvja7SJfjtaDcF1Wc9w8D1KioeYuoSs3CdJzdWKlmjmHx6oL\nP9rp9/AjpkhYE7phWRGSiha+wfhnM9C6nHeaoaGm2NdNGnbqTPonaA2fQKzl\nPNf+rvQxBrB4nXz8o/xterXfepWRH4MdlJ2DVdANQhglQHxgpMLbTkV5PR7C\nrLleiQcv2UgH5Y6EWg+XPZPrEgmqAxemCQRe87gmekZi8fs70u9gOS4y6L+i\nmkVtxrT40WlKWKE5bbHsecwT7IfSqy2nj0rgMxB3sySf9cty4RFQnW7NNzW/\n9m7M25GhJyBWsxS6i3elRzDKbWFNU6b/5OAaXsaHScZhTzK1Lk99gr61M+h4\nlg3o6yRBzZzSsJFiNigCjhSUBrMTPjj1plWbme8KYB42X3iG42AgdcDw7Yr8\neYJ0LtsocnFiD67vFz3Yo3U+7QOfgLR1PrCdNjS0OHDShn3qnQYHNEKoG8ZA\nE608AYESb/Wb+9iZZ5hHnjqmg7MSZcIzF72OHeq1coVf0OuKvdKUgbAhkjUd\nTEaHB7e+HeGtRrlwHeclFx5qAncy6ob2D2OFf0KOl4ikRPGPCe0SzLTJiX+B\n2wB09iJqe5kbKk5AWG3cSw3OFH7vOIdQHHjS934mg3EU6oYX8JGrrdJJcg/m\naTlM\r\n=+6SE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3zIBZDlZ4rZVt8GkVDvqz9hFyuHs0kbFzePz3YYDhhQIhAIOwJFAydkGJX1hjbQA7vnSOkUI2CmcX+YglyEgd/c6/"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.30_1533817898488_0.320546900388599"},"_hasShrinkwrap":false},"0.1.31":{"name":"oapi3codegen","version":"0.1.31","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"4f67c8ce49eb598c97637c452a64bb42e847efd2","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.31","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-x1/6Bsi0DxY4uqdnqr4cp32jiD8EpMqGiWTMI+jycYzT40Wyw5lpI8nwChmsXN7ilgQaX/9oS7PCQgXEG3zn9Q==","shasum":"7d65365fbbf7a526a2c369b93ec7d1be4548969d","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.31.tgz","fileCount":9212,"unpackedSize":76586932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbDnkCRA9TVsSAnZWagAAb+kP/2I4LzdoJKw845D3gBb3\njRj3oL7hbq5dHmfFY68KHSViy10p/YbJnhU7EjJWGJK/URG9t3j/JBHrcz9B\nn9Kw6G6Mi5pYsNnIHMwKDoh2Dfv1l3nqbGQiX2HIfoVjzKRmRSNMN9AZPC0A\nJG0sjnCtsr9zgpRz9/3w7rdVzc4HtkfB074WtjtRYt3GS7eSAhAWKVq7lql5\nM3G9CubOv2Ju4mKJFJ5mAf3G+zBf/lzHtPgronRPCwGunR07zkAlqRWWRffu\nGxStIChEC7VKv46c25dT7v8MLJqc93MbK+EVJk/CEClkP+j3OULT3LJcMJaP\nyNmBXMzL6oY8Mds+VWAdzV3RJIQnjL0RDEIKxpRLVOdos5wSRaMul3ZpveY6\nsdO0v0mO1GErFYkpF4RraBfkHphDhVoV06ktZXXnkM8Z7j+46fvVc+swBZzb\nZGcYuWTjqh5U8ZLPBPR4kk20PdwkCCXRiIHcIq/jV/o7UpVSfjcSNJfThj+f\n029pGP1u0R5rBG0lN66frZUZ3eQ2f93+QaErDYmCucditMGx5ZqcKfZV0wZA\nYQHPaEU6YJMLe+qJzbu1RYdAyvRnt52HATdC0ghA/z+AUcvwkLCKrBUMI8cC\nBpK7McftP/ZOeTkSB3tpbSZNiMbX8tQGNmEU3eBt8HX7ggM58PIWKPgPHOjT\nfF7H\r\n=Ca8t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGlP61U05Ipf0YDy84M5TGUlgFftUehJfWC4lFUYWtdQIgXinLWw3KsZByrkr4yGe0cFi/nnzcs9STs2BWW3cA8hE="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.31_1533819363161_0.9761109953523692"},"_hasShrinkwrap":false},"0.1.32":{"name":"oapi3codegen","version":"0.1.32","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"66d2cf0c89fc1023bb475395c79567a4fd195ccf","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.32","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-QsKiySH0ENkHiCtperE+V478StS05RAcOwrEs0VmBA7WOEJMVHQOjDd6OSon3+FuURTLTcbE1CYiP+HKqAMecw==","shasum":"b06b6cae4af8272af2aea6e0bb6893e2b91db766","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.32.tgz","fileCount":9231,"unpackedSize":76678998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkC/6CRA9TVsSAnZWagAAwr4P/2N7NL0uKbyZC9uorCaX\ng7NCkZaX2PbCdyPClHe2iGBFXYaocbKjdFZNBAMiEzCH5f9k8/OAHYUd+0w0\ntRfCTHtYOKDhEfXo79PnuTi5ghzzTMXu2oBICwmCFyt9yqBQz1fxR/d+SFkR\nQnMvn4Lp6uYlSvm3PB6vxcwdJkQR/o8j4F9NtDiEw7iDD49uFh703NpKhVE8\nvmdjW7W4dfd3ayM499I0YALn8/JRpTC/90K5b8MVWQpiEUkxQOWIxpS/smx3\na57cscahmhDGnbMp/W7WDujcGT6R20jNoflCrsvpwQdFALHaOtRKXeE3sjIC\n/aydu0Btk7+TVxHJHIe4mvapKxNNzmNR7OmNbzvcxSudNpkKr8bKs+ATZV4r\n9G9oG3E0zZCBEUFaxBZWJU2+t0eA7x7BSDgprij+8BoX1KiXk73oTlM996Uy\nfVrLeNsDg+npNLucq5cbpDmDJViOs+ykz/TUlwkeuGhSu/h4+dm6Oh6jOPu9\nZUo9+6R32LRnHdE3wIyKawuoBJUu35qn8ZNOncI048hbswTaI1DkFCrqOMqz\nHg6hBKUEwJG2uGK+g8mOmhcYnUjy1YH219DRwcKC9BLmCyKqFqQR9dTq/Kxd\n47uEktnjovZCvEBzpF+IN8cRnWrYTT4S6ak4qilpEWGreKEIgHFsOvf/cfAD\nNRAg\r\n=FITX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOGbeYnZcbVJnx3t1sJg0DG3zGkizoFNQC3mo0jkrogAiEAuxEjBMe/iTY4dip/xDVTstJq+nZTT3ao4bWb87hSPkg="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.32_1536176121536_0.6361260901779753"},"_hasShrinkwrap":false},"0.1.33":{"name":"oapi3codegen","version":"0.1.33","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"04831907fca1960ec6004cc74b8c8c57cc32f4e9","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.33","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-4SEGVTWm5qfNu4jTEC2++IcLuil+Xl2RxnTvhw4eoMfBYg+VcWrW+Sfs3ev03lNLyEDnkqzbS+WgfIuMdxToqQ==","shasum":"0cf12f5c0125756a1ccddc113542dd20cd34e7d6","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.33.tgz","fileCount":9231,"unpackedSize":76678998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkDDQCRA9TVsSAnZWagAArK4P/jPbpNfGmifDM54ujPK0\n8s7WMoKn0LZNbuh+OK6Ko9vmqvf1iBU36xVCqWZqVIvjrXGuKPeC1DpNaN4h\nnAnJRBh8HXJzEyiCfHKqcPG/s8ibqIft470EsmkLZ06Sm7YV59H33W2hIAwR\nHaMoWXNNks/uazMM/rgwfe7AIIgf+dPj2ntj6iR2Jr8CHWzoGji6Nc7an3CP\n7MPuJQBmiUJEXexxUGE4tbzWNJ43NMr0faFoKMm4vFj118ukbWx0bICEhXae\nrMq+vr9+EHZgUw8ZE+Ho/ICFqlZUZVbcdlFPGl3w2UmDZyveWtoYAVmTn3DU\nf2QrXGrB/T0Kb2A3uue8L8NEzr8TMFt2TwoArlqEYMtD03I11iOzV06nifsI\ndeAy/WG2MkAqaO/IvEep6Vc05zAYYHl1cgU2bS9G83aDzoCIz+JUaU1+jmH3\niOMzIj4oCmsknyNK5qUmRTmpD31u6EHyKBI1HKV4I6IkYR9rBDNRvZg6rDYE\nzaSZyH1z5oiE/o5ue1uIL5BzkR1W4RHjOec/dES4YUz2VbDANzqp2/hm6LiN\nzaelt01zDu4cuxv70NqvM/QJ+lW8RGXzSndOYZyvuf2EBZu5y4om/IRdAgnb\ndmlNe4w6RZk84yC8tIicmwAbH2hrSKZRLI6EyZqCXI+EiSCphf2t3C8K+LnI\n23KS\r\n=8H/i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIFSEBUfZ0VON1DJfa/YmFhkCvbwVoYcGrDXk94rETygBAh8PGqUvGfYc9HHS0cucJT16JB9O4ZtwPDF5JFNXZPDl"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.33_1536176335595_0.7394344812108369"},"_hasShrinkwrap":false},"0.1.34":{"name":"oapi3codegen","version":"0.1.34","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"04831907fca1960ec6004cc74b8c8c57cc32f4e9","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.34","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-j4iORi6o8T3xMVMKr305Hio2vBZvFaXp0WKvU/ccDe/kNFJgDPvXQmj1404chFQ7BceNuibk2rOMSroPO2WUxg==","shasum":"46fd2b388cb57b2e0f824a12b4d21f94937a9f86","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.34.tgz","fileCount":9226,"unpackedSize":76666733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkDY3CRA9TVsSAnZWagAAxXcP/3cF8vyLQtyHLQbzSYCk\nTqNUTIh8SasmewTXoUpWwoUCunuzz2LyI8LqOdONfrI3IxNIpJxj0DqVfG0p\nJBqNc4upZnK51HrWWCTWKM5LlLrruCPxldkt/n9YixJJBzNyTEUJRxQh/o3G\n9FsyU4v/2hv4W3tZLE53BMZ8Pt0kGARIfApPWH9QOS56FyrAC+A0BYfWbveD\n2oOkuICUBAa/Wa85emZwhsLuA61g3QeT06ckNb+8tEZMrLaxd1MinNWXL0vh\n+yoAkZpns/KMAQzcEYDH2GBj3Tm5WEoxaFEyNhaOWEMWxj5Bf1gvP8D8sShF\n6fwOzR7N6D2CaA3gesOOB/tumtEOYxQOFqt5iazpXX8mhHrJXDyrVzL8ty45\nYygpUrhQ+etLT9EXiD/G/eUFcJheXqhyTWxHPNbUQJSpzOB+ETG33BfqGbU0\n38JylhHVzCC7SdUa76Vj9aqFP6xdgeOBV3/oPdWpDnltPT4kSs65jJ3R3uis\necVuar1cczppAyxpLFjC8mQ3DXs9tjP4tm8wOGW4wzJdfnLsTfCjHNhXuHD6\n4unj/U0r4BBjC3O7IyO081Bdby9eOZxV5+ns0n7jm9ucSzv5qElVyR88gPIM\nRmbGaNUhBjYo/fGiZkueEMGjxpBzxEv5LWKl3pMLb9snSqVuzMY0KVEu1f0u\njnlU\r\n=yLbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD35rPoddmEhbn/2IT+kO5VtA0lYKfVQqM30QKrei9dGAIgbHu/esfwd778VJ9cpkg6kJ3+p98iAEXE6SFJpTlrXL4="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.34_1536177718165_0.7807586806008571"},"_hasShrinkwrap":false},"0.1.35":{"name":"oapi3codegen","version":"0.1.35","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"04831907fca1960ec6004cc74b8c8c57cc32f4e9","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.35","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-2Hs1JnK+dKKwcaav+Bqq1XMatYr3ZFWlfOl+mGSBW3vHjm6ie+s1suWgbc7cHAmAJdjQRWBcUqvaTgYJ1GZ/ZQ==","shasum":"1795c91dcc4adc8f307f280585b12f97f5495810","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.35.tgz","fileCount":9226,"unpackedSize":76666733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkDaTCRA9TVsSAnZWagAA8L4P/18PxETu/+Sv2vjVU7ha\n7kAx+JruWtEuwCjLy4tPKgsvAycKWZSlyXGjSudJh1gF9u7ZbXNWEbqaIyIx\nbe7nAX1KKsN7etFC8VH6KP0Cu4WzUX+A0TaItHNJ7xvXapd6maJsyN1iGHna\nJGA4saAaeSuT5XHQyJlxfTj9zirI285eB0vkUtIBcgzkpjdrO38lnlgcydSL\nj8L14HuFMpzI6xhF+j2UUst4Q0rUa02JGTidYxiPP9D5lvDEl1Cj3bYVyd+j\nY8F98sBWXvaQ7BTakDhDR0Rojb5OiZ+Olcm6JBSTNaqKgTBJpcBtC9HQ2m4w\nChveO2t8aYxYTxFZ/ilIeQ5qL6vLtooOVFOZNhALLTEUIOBpzvtrO63rBfnv\nEnV/W7niB/iUMZ4J6YG4rX5+PNBPUg+6newUXtM+dxreyrs2GWncDjNsf9xI\nIPkLcDxw7+We6aK9iS137blc0RSnHW0AYqSS857SvG99xOCz4yG3ujysSZBc\nj51oxRdDDI/f/W6gMMI04+/thXeFOJJ1YzW5u/DFNuv51xATyGOR4kuogoJk\n9XmfM0ZVD2AKoOsgEewucXbwRCPFYPLGsrdyCSS+hJ52HOSWbuy0KIZmibb6\nS7v8hD9tGTO2cGTjFbNGrQ8BZHjaIy0wSKe5pU19HUQDnuBwhp/hG/ro/lfm\nXQN4\r\n=DCKf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEurqqqFJzNOW6VQLcTp4nOUF30a+JuQCySiCdMV/jhQIgJ1uOcw6imJfKUS0uAAeU3UctffOA5WGfu7Pf1HJN5Zo="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.35_1536177810033_0.17984329469122762"},"_hasShrinkwrap":false},"0.1.36":{"name":"oapi3codegen","version":"0.1.36","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"04831907fca1960ec6004cc74b8c8c57cc32f4e9","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.36","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-bZg05lr4Oqg/kJr3ITkx33/adsiGh8dzvVRDyozFLq5gpXMPXQ5FBNQ61L023Aij/qsCeZ815e6rkofAWpIlfw==","shasum":"3c39227ca645e8dc091b933f94cc503a25870604","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.36.tgz","fileCount":9104,"unpackedSize":76051102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkDbeCRA9TVsSAnZWagAAF6sP/3ZRm9ktWctyquCupdt+\nHlDDdP+kFVKjJmWQjU1ezpQctAfMRHntLFOOQDe52WXQLlPkDki8PoeMJG3g\nCONfdafTF+zSbbR01/m+vGmEYjQ8CpFVYUKjKVIkaxp5CxlvpLMIOBn+wdrb\nKeImHxL84Rtb+5Rfzw/Bht3U7JvWcOGOvfa0bZLDn4D6OsBTWwkwSEwUjqK8\nPJkIBlDPBVT70mmJ31knSBkLxB+vUw88PKZq070wPNdKo8IxOjg+5Aft4zKa\nPueOZlMqH8j3ZnqU2nnWGiJ+6Gz1SMAHNK9bZMNFnXPTMZMOc7YWEzZ/UWHj\nljTbT+EB4LD0qA02ju4++MvMrLEsKvYYc7CFd8IW0OdEUL8vGVw3+555KrSV\nH8mLwnX1HoiKNFT/6gvKpfbtX1e3G2rbHXqeDKDsa8WIQgZWEsIpo3A+XBAz\nFNRYk9E6aBqpbwqq14sAJCGOyfmcsMD283jZ/208S6XKlaRMlXW9uK8T2LQS\nGhIn9Au/plpkP+MRKdltTQKPyw0+mjO2IOjChi11x9U5cX5uCni5g2uQdXv5\np5sxgI2BTsEd/LBvAclwNPxpaN1H1GMqWs+Si6QIrzmlVTRPemnewrA+C2H6\nenXVUCoc56WR8dUU9X0nm0rygJu50HLsAZ2JMhAFWKDGeWRCsoTzIDbUzPWt\nH0Wx\r\n=uYEj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClMDqJQOyHN8/XkRLGFBtThrCnCidIu1qOv6df4J5NFgIgFmAGndQs3zFDf7kzh+rdZMm+mooRdV32HDnnwr0kej0="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.36_1536177885125_0.9806360549283459"},"_hasShrinkwrap":false},"0.1.37":{"name":"oapi3codegen","version":"0.1.37","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.8","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"04831907fca1960ec6004cc74b8c8c57cc32f4e9","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.37","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-R5MPFFfzCTTvchQsLBgmE48NmEkDMgdxmYwcl4grEqDeVNpE9K10ZGD3XmtP57sQoEOpQ/PimRA21XhUbiIk0g==","shasum":"acb86d47377814aa625c924ab341247c695732a1","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.37.tgz","fileCount":9104,"unpackedSize":76051102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkDclCRA9TVsSAnZWagAAI/0P/RkwVuBkDlX4P44Yg0G3\nKY5JuO9asLnmiBUfk55cu17nIzMsUV0Izz1+RKAPU+zYby9/dy6vOYdRxpqB\nHe6N3jzp/NAK9gd7SbxNaRCPR/0p7L2+ISsSoKo7MMrABFRxxcyjP0mX4oRJ\nd0r2AU9Kxxc+YV2CeCIuTwUU6YU1vyqZnUYbjnUjs9X4SiTZ69zy+ZKIuPe6\n5OW0Efhm7ccOqPt8/faC6NpXwRV3FHrSJEgIaYQAjFLAy+mFraD2IE8H9vlA\nBtgqwDZKiHdeowcykRS5+qRBuFEuHaIYI3OdCTFQbmbagGxhi4ZVkMnE1gec\nOAhwsLnjOJnF1i0Kmf/9Pt4ApnXAkQcEHo5YKz3wEEakMcmunndBptDrYSLS\n51cZmBGzCVcDEV7UASMV4OzRg97kXJpvjdA5GiNAPVdZ6aW4aO4Tcyr2kFhS\nmPhO+xbixxiH6vJD7n4SlOz2kD68WqKjdSf4u+8XAbIkrxLwGtQNpRLazC6p\nTJBdxAOl5L+wlYQtKjz83UdBmKaWhNWr9rgOkE1+hyHrP4BnggruOZoUGkpd\nHFhZ4q6rqUGFtghsY73KcSMlumHojegi2Svcmyc2J+takdDGnh4o1a/5QndF\nlPQKxW/meZWSuY++Q70bQRSCrL84m8dw6vcerJ51jGu9nYdmVBNhD/E6eDDE\n3YIz\r\n=Vxzw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAb05D3FhaIMqaA6t+4FrPdMJX3wRGwICfhfN6eANZuPAiASFYbvlzWDYuDUrMK0Y+x/i77maiWifQHlJgK65uwEYA=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.37_1536177956374_0.4193363947385267"},"_hasShrinkwrap":false},"0.1.38":{"name":"oapi3codegen","version":"0.1.38","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^0.1.13","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"c7d3b34162b24a4e9e5688bd7c470af9f2a1a313","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.38","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-nSvvDsBON6WWrjEd9DJRJXpoZ2nVlHlyuKbji4fOjeJ6DsKMbsPeR9uJjEWtA7o8mIy6GyFI9K7BYUv2U41Gmw==","shasum":"93d0cb1b58b074d7511569bd45f0feb2f6174235","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.38.tgz","fileCount":9104,"unpackedSize":76051038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbokg1CRA9TVsSAnZWagAAaUkP/2oVHr+cClin+e7HBK7j\ndMhjdqiu+3WiI5HKlAa7HwHS8DQe4oTmBW/91/4ha3Ub6C6kutjhchj+CjQf\nCsokiiYmucwUFvw8JGAJchq9mmNyMCCSZjfoCeO7Y/zw5PKthDFsx+LXK83Q\n9Z/CcrLkKv8Sdy8lbiJZuyakSrW4ApB0Jn5NJq5tes0nSjFdLmhtPGVC8/Vm\nmKqmBpBrd6bbQYk1vtppWGeqfNFIuYO40G3uulvyETpisc0NLWD2G39666T8\nfpZ/sXqIaWtkk0zthuxjy/Puv9JxxfQ+VkI3Oce0jux3/I9wmkQ8tUR9khG8\n8hkAlkUF+vLav32MhGHcYTtYeq0M7JwhozprRhr+AUHYskZ1voS3gBrtXoj2\neQUEjLkY4nQRh9m3ukGpTbns7xGQypS4PP/XyIMXMEUdpOcBh7rfGulAh+VP\nBJCxGNRJvrRCWQi27XYgztGMpxKC/REC1RHvXt0n/3fOWOXNzqY84erX7gyj\n9k3YcCOYRpz3jVqbpOK8vxy9netZ5ZJ8NF32Jail4k9QJzKdV79i3mqg9bys\n0KXIU4I9mC3kig6g/bl52RleMEOGwh21RgDa46BdnQ025BiRr3hkUjEaQcry\neXtC7Cd8FrEf9KXe/Hca1jLdiiUPwOEheAQJS0dX7iyCzVLX3+VipxdGh8bJ\ndjpI\r\n=Of2N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFD1uho/+6g8JOKl3vm0JXy39zDifW4g8nAoN4BnaUPcAiAmwloIStpaVvm8XMI0AQRDOLovWa7RIrI2uczjOC5haA=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.38_1537361972197_0.6103251616325553"},"_hasShrinkwrap":false},"0.1.39":{"name":"oapi3codegen","version":"0.1.39","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.1","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"ca053a1737e92bf422a54bb4ea2aacfe321627da","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.39","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-UajCR4wbUu/CeILmmCns5LLCZ+FWvbPi7E5AnxFQ4CsZdcQoZKxA3v7h3NdM80L8kcqjZkL/r5IcwU9+CLxwEg==","shasum":"36ebb9b8f8aecd1dd412e6099f7e871cfa8e1e13","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.39.tgz","fileCount":9104,"unpackedSize":76051036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpQTwCRA9TVsSAnZWagAAP2sP/iTi1wjn3plfxlkFc1LW\nMFrCQVAMpXPuw5RZZK8PdierJA66ziwImXMLChSmiI07qkq0FxC2GGbFYkOP\nC9MG7cdNHlsEgk4Od4CdsKZDz64PnlrOyPITGFUSA3QuBBZr7pEsaNpEsId8\nZZwdE3QvMgMaYXqSTZHQpWAVr478dyQZ3Gq7eEz4uJKub81VPzr2igXjfiqD\nASfbF4j4maE/UKfX2qkDAwDOW+7ccYtzhcHNuaBTogluu1e5l+y96NnV4mgY\nH3UVZwAuB6FPBopC58C5UNTNw1r8AI2M18gzvuHYUS1jhGnbJpRm4ps4o5g5\n/SGp5IwQsbtHcB2vY2uMxMySYM4Nwsm5UQ08YYiiJ94n8yJIt4VPHRe+l64E\n7NZjn5TnHbxd9Oz6EfCnYiDl9yyOlEE5EDRecn9CBWx0FtN+xtRdM/zDPQvG\n4/deJBNxu4exIxiRmLdGxo3jLuEwnA+vgIa3vbNhcWdZA2VDpMHpOciqB5kV\nl4cIaZxWGNRbetybyvkmH9e2DcvuOGjqgBM3PUfpVc01iq11D3+ooMIlFFf5\nfFcsP+ZOzrFNFjtGTkC9NS3MPb1MA7VwNH3jvJzOmGLHBZxNR7EpBVfa74EZ\nR+IXrsc8FUoqt5ibykbMq6FNpDJ9b60BCi2g009/5R33hyU6IjIuSrBdYsjO\nsasH\r\n=I+zM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtwEwgNIAqTDfkBG5xAZMG6UusrMvK5Ao5RiAYmtF9gQIhANqQYzKBzYNGpkSLSOt2c3gJhnTu70kbVOvJ8rVEaHyL"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.39_1537541359244_0.9392064302883423"},"_hasShrinkwrap":false},"0.1.40":{"name":"oapi3codegen","version":"0.1.40","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.1","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"ca053a1737e92bf422a54bb4ea2aacfe321627da","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.40","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-hNB4nRKnmyWujEiZ1GJqReUdFeGdYHgpglF2qkawiYp1eBNIxgSXsbHpUT6jJSsJgGRRGnkIqVcb1b7MUspnbQ==","shasum":"161ca4a83d66e146e13d31a23647135bfd01c189","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.40.tgz","fileCount":55,"unpackedSize":149103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpQfcCRA9TVsSAnZWagAAi2QP/jHyeZc9YcX7EdsMy1y0\n2/4+BIdoVY/8T0L8nMdxjdbc09XEFIyMUPqH/jE+lnjuVqDILDpvVzH/hYxu\n2Pvbw3eeQ9sKIwBcsbQtL5Nrxq9iDT63WT+m5ByqXx7YxVTlbRy50egab2PW\nkr3EI5kPcCh4H0Qd/BQOW0YSU3QBCyGpIjV/CSnrpZeK1yWhBq9twa/40cb+\n7Ghk1vvI13zMP6VPURM/stPf9WEUEdE9TuYN6gDEyfTh/Mv39gJ8yTgT8pf+\nZVDMEOc6o/XJXAqDes2/1s6SykETMPlRThQeflLbQK1KI7WiIb5RZVZYqEM7\n9mrtJAka1D4nvIeIh+2ULozTN1rF6IC8f7WDGzsrHCq9ufYjFBhkNp6jOBUb\ny5jQ50HNT5/8ED57oczKpiBWbqXHTfrqky/KF9HKu4RjjAmjJy/ukUa8q8+6\nSBGLnbi4x8LBl4N/ApxWfeTatkA2AUqNwdUMjYb+aFKsWrmo2abTnurnJIl2\nIZzJsU3v+Gb77DZbMp3bWQhCrypwsOS3KI4qeEWfUIv5ZHDHki7T/YimhZnG\nia6qfD/O7UAel52esMU+mT2xzUN1evu/QzigSq/0tMvNapL3zwXj1gUReKyd\nBQR5hWTmGKJ7DU8SOlVig0Z87xDEAg8eTBtB8hJXTDITKLLGbv+m/chAZOUk\nVLlm\r\n=jyo3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwIphxPGaDGLRxd0O0IlXPyohgwMykiQCHxqRquR0LGAiAw4EOVFiFby0SaxNfgpOgh+C14inlcgHUnRfEac4nHxg=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.40_1537542107586_0.6799900014128333"},"_hasShrinkwrap":false},"0.1.41":{"name":"oapi3codegen","version":"0.1.41","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"4a15091674af8942b837451726fa01463b7c6ba5","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.41","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-h8A0KgUBBdEEKCSXSyg1PlMZ9pn26pmA74c0zfzgvJJYtxFPOOaIiXwdBBT/OqJ/CgxFJDfao/0RFUJANdygdQ==","shasum":"30b08a6087cafe588b044866045a5b1fca565b1d","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.41.tgz","fileCount":55,"unpackedSize":149069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpQnuCRA9TVsSAnZWagAAZqwP/R7zGbv0HIB38J/tRhVT\noxW8fxR0Hd/wzDbZ8QYKAqSyfRi4JQ/BhvsVJtUA2QagX3ccamGWXefMEZRf\nMvzMac4mxqcK85/18vdg25QiSmS7AZnawqNH0DOsIln6NIO9jbJuMznbO93v\n4ObtnuYhX/0xZhnD7lD2iiHbRLDT3OvSaievtE2gdItL8Vr1CrYleu9HMOwR\nvOwxbPEdNomhwv/odK8wXnOcU7ROcoTR2edWT6ZXoAMvwSOYzrnN2a8ZZ3bh\nX6bUFA4iwyLcjrX5TLYqsC0YwGvBSDDuO6BDubbe2ab9eyfIumlvN79XxBCN\nkSBJiYm6pRVx9lb2lA2IXAfaI6cG2RntG7MV7L7fQYxYsG8RO/rdQvAAxLvc\ntZejaHlbwPCNtUoOeyLZdIWyxFvkLOthFhgSNEuSYzupC2p29eZvfraPXl3e\neXOx/xl+Jitjx1s2akh0p1BmNX+9dHZJJCeA2Vqjm2is7vs8lRxQgLhCseRC\nOMyPLYeDWZj/0jFbm/1VkAuy90BNCxAmPaK6jsGP9ejxSqnZ8qzjN6lLg8r4\nsksyyUdIAIHzkUFwNZenPETP29FkJ/2Hwb+NWHsNet9KISRKMNEShLW3SL4a\nxvwcThiE7cm/VXZobKGBG0/CFnp8S0wPpb1+HqtbdZLSvv9QK6CdXZnE/SqT\noLaK\r\n=e4hs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfJvChLnBtQ2IjT/1fTI7+x0pTf02MyiqK4YqV1F9VvQIhAIVKQLYcAZx7un41FIJG/gwG+xm4qGyA5NTGuyFG9+hl"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.41_1537542637579_0.6424306359852687"},"_hasShrinkwrap":false},"0.1.42":{"name":"oapi3codegen","version":"0.1.42","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"33b2333c7e60bc4190111479f848ad585af5bb23","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.42","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-VxSAacpIVJ6XzRO533w28WX7tocHZxl7w/9h4qiwQ8R+JqE8gWLq6+4PsO5QBIgqc1AAYDc7JGZVRTBg3itjkA==","shasum":"3bc72930b569ebd2a8a19a2b72523092fa9b998b","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.42.tgz","fileCount":70,"unpackedSize":798666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2ZwlCRA9TVsSAnZWagAAdiIQAIeAo8dEr/3Xusam4VQc\nWJ76eMec+jL/EJ59NrRBG4AYs84NjTMpRw/QRuN137V3nGbr9r+zkVVPm2Nx\nygfcScmAri+/jAHwlni53mP90YTHCrzYacRD6otcU9Zwq0EXNu7p5dunisuR\nR+b87o/A0HwgdBw4dHzAhaboAF+w408RDjRxMjZVly6RrqPNhzvzA8e+B3US\n3yB8viCyKbPFECMYkVFe4S16X3+aJ33ObhaLSsRXMnb0/ywvhXSbf8h3EL90\nJs/uHwGEeKonh5f4+aGfMtnghQZvUx6wNqnrAmPY5ZeYleaVnDu8IX9jtqR7\nd7oWqF4F+NYnVAL/bGjnzFkuFIew7eO5AZz8DiT/3awOm50FZozmiuX/iSHj\nnFN3TOT1i8jLEDp8065TgoTwZUPQrNOaCXIy4I0H2CN1gxkSWDrOagW2EuZ6\nUqMHBHFxgfz9w8vXYVYkfkwBchOusAKtduH9aKSl7nKjxVILbylN+OmRTtV+\nkQ2fDDUP5NkOCWXzPDY6/Wu9hWbF6nF++4OssHt3xQfWg1PJj+uE2zenah1v\nb2KmTzFZ6ttwSrG0os+opsnyH7MwOCb41c9E3ZC5ww2deaeOOFSSSWukLScv\nob7WLZzbq2lGyRW4VLS0MJ6B6CXlECujKF5Iys6Gty3nIg9jGdh1tGvB5FZm\nHRY6\r\n=xjun\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRufc0mROJvgyG6+HGZgcbdu4Bnjl4fRkO4/L67yHiSAiEA0bFmgl3uK8PuTpwEc3U5TMFZK+UxVki4I51dZvLni18="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.42_1540987940687_0.6009125970244258"},"_hasShrinkwrap":false},"0.1.43":{"name":"oapi3codegen","version":"0.1.43","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"2413a340c9445290a65110d676b07d155a110774","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.43","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-dOLPn8FTdLeEG1cAEa4p4IjO6AksZLIU/cwlrKvUbakKFhDvHwHOFZ+oXzyGRIfISNpIstSNF9OOeGqoHzFExA==","shasum":"62cebb3f8f427cacdc084db8b6522fc9a8359ead","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.43.tgz","fileCount":55,"unpackedSize":149404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2Z0RCRA9TVsSAnZWagAAJOMP/36ZMfaiAuq5e3NBMhba\nr0wWL7XnKpoD8KImHedrtN3FmIV97uAidy6hPRv6UpDkGKf85GMKY6hGZAiw\nSvjgZMDPPJoUZ0rmQbnp3A+7oWfPU15d+B057zj/HYvNUbek5Q+Jgx5PDG9n\nxs8EDoOaoz7jOMZg7Z3sZH2zVuJZVbdExPIG37504gSRQ9ZzSGLJoeyOkDHw\nTSFB4xBMDR2oQ++XSkbpghW6UeaiuwmTjeoPjnWNqn30rg0hrGoETaUtqtPK\nSfu3dgEOBsnXzFbqh/BwNWNyfllNQMkeFxferVfy82LHgJJq45ie1rsBHG1n\nPcHeF2YEKHw3bVwU2Xo7KwfPDYQ24pKd6CTCGKH3qJh3hxtsbHuxJW8hbcEs\nsS+BqGyMxNURdDNeqvw1QgNqJ4zLrmGB3ZnaCw0hmYdGdELZQfhFFihO43vP\nlFsGUt674+lPp65P2eQzH2Hi2Z1F7Jg9d0KqOMANDq6gPBG8QLRgZE3U/Tef\nFKBKNdjw7T8UjE9TbEHMgIKRvJ47p71ybdbuftwQ4lBxxbymtAInXofOheHE\nXXMQMATdXT/GMAlWWAdUJb4iwhyoPTNrTh/k1VOPpy4SXq/LylNqavImvrSq\nWLp2GzSmnZ0uoRRANvVRV2zSX3kQAJEhPeOZSsMhEhnwp85ZBzhM0j9ysbAC\nfYSR\r\n=HDMk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZQ64TR1/OTRd/hz3DCQDq9O3VWGSzB0bgtJPq7bcIPAIhALwulmS5ih1P1uq6TwgYP0y7QXcWGDzZgDvGS4X9rHHF"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.43_1540988177271_0.9501298847064255"},"_hasShrinkwrap":false},"0.1.44":{"name":"oapi3codegen","version":"0.1.44","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"340eff990a5355f511e513405c895059443082cf","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.44","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-xnnoq9r/IxspPLWT1Q8B6HCP6LLOAjXdW/v4kBgaLBbhvmgaMb0ul55mjigLTCpsaUAqrHVSdfMuRUMElKK3KA==","shasum":"b616774a62d3f94e3ea9a277bebbedba70bcf4d4","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.44.tgz","fileCount":55,"unpackedSize":149995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEOJ/CRA9TVsSAnZWagAAUKYQAJbm0BIWp06DBKcr15Mp\noGTShmO0gGn+cMeHCZneDd7rc3tumSAWRf2+RDNSg5hMWkGrO4nQSyqcuPxa\n+KhGOsRWkQCTi4/1v43yVD2pcHX+OM5tnHVnxVuNDSSdogF/PBT0NdeXfkMp\naYicQdIOdoBhCi2r6RIOssY8GIPH+MMLIRDY5bt5oR1A2ashZPIG6CtXAfsg\n0jZ/qMJDd0IFDu/CoKTcgrsxSP451p2z7gMwDZbitNPL8nrtlx4SZEfMKo4T\n4tcVBCDP40beaSd4KGtjh66W6mKw7k7F9TFCBbXZWYt7DG02QNECyDzzAquK\nf4Up/odZrDwtuGcW2vC3lFxztMrA+jhUUuVZlsibcYT/FBwlISVdX4dz1jVn\nMNEoiLZbC/2DnJIFHxyPyfdinTNLcOdBR2nDCOGmSFuAcwp9cqvWSXk7LovR\nm7fABZ3G6qHRVXevJVgeEYqcaIxbfvYJHmpva5WFe4ZtBFm+jgy9EfUdhvuT\n3+rzhpqIC7n9CFn3ScenorOsDpTeBsoEuXCzVD09u4xQQnDRinn1jispAz4Z\nbZ4yir4bQFuyeCCFxjWoDaLIgY0v9ZU0c6qNB7szx1ehdmoKB4NDdRdj53UK\nxYRotqJVym7yyygY90ZwZg8CZM1ZShkYq0sCPglKjRBEkq+z1H5gBOEskoFX\nqQyF\r\n=kYfa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD94omc3FxsX8N3GLs59FqT5mkfnri7jGLKTxcXGPTkhQIgQ33tNYMqeVGXPASjhRbYGWw6cCVp2zy1PxDhFJ4b9Eo="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.44_1544610430895_0.40116822136860386"},"_hasShrinkwrap":false},"0.1.45":{"name":"oapi3codegen","version":"0.1.45","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"587e02498f1ab591a8e67ad493a56051457b1f00","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.45","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-QHmLpg4GICpBzGIiKiZD1HS0+0VLMhdczNB2OGj1AdwnNgeAtG0TTYI0nX6DIG+LcA+QsFxuYRPwDgaJYBTuaQ==","shasum":"7738c5644e9475c8a52426c338afaf732f03b19b","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.45.tgz","fileCount":55,"unpackedSize":149995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEOK9CRA9TVsSAnZWagAAkjcQAJgt9t1k/6nr3+Are1ui\nqJVIZSMqO9S/xjWQheiFcC8DDSWsIbzpnBaUG9sUYMzVS9DP1KdkHDjxCM0g\nhBLi+HTqbJvAAXn37aEjYxLK38y03uPIC2kVe9kI/K4vB1DQLltpkb2zakE5\nfqepBNdXHjiABNOiu0uD6RAJkEjMjSC4z/9FyZ+8oqPaEqo3tZqnZLD8qNJn\ntUj8o7wVbmHVs90bg//SWTm8LoPUmBXrXYyE/ZK0Gt4b62HlWzCVIS+fcFnK\n44GXmITG7Ej6I/03UwQlU+2YIAN3mqiX1WHg9Hfl0RCypOJW2wgVrsjmjM3e\nIPrpVU0by7PGyhJjuQ463Atrl0vIF4cK7+hfYRO8wFEgP/uixxn2bKMWYI6+\nFXviGXlJq5YGdNYthWA6QEdY2+0NjjHCv3dpyC7m9Qf8M6v/+F3hfSwUWSTB\nUUF3laNhTEedlYr0twTJ9wcMGRsBiAmsLT6V6OGzK+zQ+QLlxmIsn6tAEiIk\nOP8fgJSOv/xXzmE5J5tgpi9LDXRMPC+OI4/Oh95gg9LfWrrGWUXSjvTwPUES\nMCTavNCc9aqTn17LnL4nUsmFRf9UoPNtuCP7ytGg//vkFIXxFi82lf0AHCbx\nvgQ8vGxj6vXcOdjKSW6En3R6t6f5ImGt3a7oaoeXaBwrJYRVHjZpdOoZB8ZK\nqd0x\r\n=5Ap1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH8mjz1N3eEgGmIHu8Q/MAplgdJ9NfiZCkxUZdsmCNHfAiEAweziMucJRw3ZYE3IjnLrG35od/VDvo48hwDM5qRCN5A="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.45_1544610492957_0.9979136701157931"},"_hasShrinkwrap":false},"0.1.46":{"name":"oapi3codegen","version":"0.1.46","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"c0872f2c421266ceaeeece26d3bb872307b50f95","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.46","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-EGgkPfsyqURlk19UqYjENzCMteh89GF6Yl178tQOd/9PF/02PS/mHOerLU0DUNmRto/ze58U9T36gWmP3MgNRg==","shasum":"5891dac1d899bdcab7dd88cb7d81a555049ffedd","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.46.tgz","fileCount":81,"unpackedSize":174490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE+j+CRA9TVsSAnZWagAAP0AP/iDx3R6cditcimMoClPw\nTrpxDq6VZ0Ki78F4LGUjUriCr/UtzLX/zGa4X9oSYUNGA2SARV8T8ybSNCTE\nIzrBbxdGoxit7dOvw/KMycwMrZR21hDBB+ZDoBX95MeFVoL90fgo3DxNTjfc\n5Dik74eCP7KjWW0CriqN1DEMzR5hwT074495SCQuNdPKqdgE/Yi21Z0h590H\nLC9Sc1p1brpU8HQei5iieRwwp8cmWf2XndBki6F6EHqlAkSZlMPDBf+YqGDQ\nGiUrA0Damltba90PMqrWO7oZsH/QMTpeXOkaFYzcwEF+wbDjNFLCowRXzDLD\ntLubuRIpmc4unkNJwwCLUhaWtZWs0I0xBdub3xgRx/FQd6I1hapuLAG2EziZ\nKNF1tOkD45n0zvX8WbPeOyg6g75wbx7EQkc/UxchtNxxpg6L/kl2J6bn3Wpk\nbA1xo30jqb3ESRtE0HCx4eWeoxjxh6oO9PNf6Ci+qSnx6XONVszl0clccrjV\nnwIKlqoaOVx0lWaZiLPM0t3G+srBPdTWNOeo5X0yReC8ucN+kcY1MqDdUq+l\n1GQUFznLraqVl+ugfowJNB8tylm5vM2PJusWE8mY54h+AYUA11eKRd2CukYd\n5MklH4Ictly0ouZTLt364ijTuFIB7EdUXW6lUbYpblajQZxtgUMyFeYp+T/W\nCC62\r\n=h9Nj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT8amP06aajRU55p2NAXLj1JDRrOgCAeVFDeMC09W3yAIhAO4DS+uzmTfRLAgU3kBRWSD5F0BUXlT4GHrHyXuj9fDm"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.46_1544808701988_0.9369885415810864"},"_hasShrinkwrap":false},"0.1.47":{"name":"oapi3codegen","version":"0.1.47","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.4","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","gitHead":"0bc65753bab1c6d2e57faf1d43b09c15ead3ac8d","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.47","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-4kGUH63K4lGz80uRoY0vQiejED7bfKsXvPsdN5clBcT/gOlsLOwKWIyi2/mBfBMbEkqjD6XSuy+wnJpPSFoUAw==","shasum":"603f3f6795964deedf1638ca5516599ff46b587b","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.47.tgz","fileCount":81,"unpackedSize":174490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE+kmCRA9TVsSAnZWagAAVuIP/i94cDFIsN3/Kw/6PgyV\nMYSL+RRGhhxcleHNUKUleFH6dgrn7lWJM9Maum5XqB8G2VFPIvk9nVkVL8KF\noRMFLIuVkLdkewAzgoOrU4PsPKjmRduU6QKiDnGsWLWP37iMx9S9mrP91P3A\nQCzPzrXYM+Y43xrBXTLO1GZqW3jNcRcVzfGecLK1cdZmo5TDFM5CG59WEMWw\nAWPTa9bE0EYQJ1x96TZIf8AR5OMPC0Z6QjDpnz5khJfZpowGaYWHBsRZjknJ\nfL5HK0TQxC0nulkZpEZsII+XhQjRhmOlEMPZQFyq0GxAo6pf/R5bvT37NAnj\nySIgukgCXK4+hlw/ycerxr6U9Y0GUMo6rYOzZvX8mUx11O/o1tSlvAc/Sz1X\n68MpEdyY/L+0epA6ZjAtZ13lzD1fEj9sIWtQS8PZoq1V31mM7+3cjfmeoHxQ\ncn4bJFtzALiNujaIpn+hCvpRcUysO7GBLl8+kinltTz9rsQZVndM/XEJ158K\nyksi0lGOaeNA2bmE/T7WYZQuF7KZed8oreTAJRkJDdHBpH/q4RWIKz4UPOm+\nxjkhGykv9XpAnbuD2xWhI47Zqgb2cWAeZIk0eYcf+eZYGTDMdn8J6fkCAWEN\ntHRT0M5awxbChWK8vRrip1a0NdaQ2cpxql+8URRS8/CpWzy0dAWoBQkG48he\nwGG+\r\n=LrLD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHCKCUARlLERqefTtt+kSW2xu2f2tq2kRONJYyb1s01AiBSoeRcZQjjNXbLUp3RGlMrAbAO9FTcICyUWIGw1GlAxQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.47_1544808742067_0.9535870977220666"},"_hasShrinkwrap":false},"0.1.48":{"name":"oapi3codegen","version":"0.1.48","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.10","oapi3codegen-agent-angular":"^1.0.5","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"d8872d71f744ec25496ea76b92b23c77e19696a8","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.48","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-r4KPnWTZXBK3iDWP2gy0L2zPxjWX01QnrJbom3CtZ+5srLuu84e6WKybL3lAwGP4nq1EYV5r+ghPGYmY2uqcPw==","shasum":"5e03fa1c0ed7f3b9be74dd9b64bb4505c4be7e27","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.48.tgz","fileCount":81,"unpackedSize":174734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGjHpCRA9TVsSAnZWagAArusP/jimIRYpTAcyhXiq0tbd\nrAoRX2EUVWT6nE9igXgx2TzDoFhgYrvuShEM2Y3KW8s05o8EU27Rm3fBdWv8\n9ILeDJp7xQxt6IIhQ/glnTVojTZeg4yerVKTKnU3EkcRXgDaI/TJzl02UD5P\nLdOpVO6P7KFQddangg9A8vuaRuyLDgrLxwYzX/rW6RWWhrcoyrKKRxUqgnkL\nfj2fBVsf1ZFadTmhP7CDZRdgpDtVbswCJrT5FO2NHG8YT86G2cnPUPc6N+LJ\nPGDfACad0QT9OIgbh9Uv2L4Vogd7IA9Ac84dwcXgSsjVQYDWF+90nZsbaRg8\nmz1YKsajuyQVP5VjDhQqx/3X+wRd7Maw1VDdtpbz7GxwDGzAddsuV1cq97iH\nsqzLNO2enYLDoOihwWOPwODt//JnJehjQeGa7aaoVlIpzN93NOEU3+25fXo6\nfSpt5dUANfvvGDbnhXiaQtt84NKuxYqI3eOXVs9vzceW/pPRQ6R5utSw4qk2\nmd8+E7Cfo3PgV48kMSLNredZJXtZK5/CFOAz3Qv+qe0s3DGRZo8qdBd6x1WY\nJH/DAKhtTLC0t45YKxutqsjB5gwZ252Osd6YEUminWddboVdBm/l1dHaFFLC\nReNBb//XpRjnwNhZkA2ai56wEgxbVzSt+LK+jR+ISx27GPwMooJOcjmRD88s\nDkwK\r\n=wLUZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsqDsI6hVFbGM8VbhNZkWMTFLByYx6PtycGocplsCkmwIhAJUVDJ88za7rltrbNBMcRQwSOSmnYa7cZuAq2J0fgUob"}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.48_1545220585099_0.4095559645748077"},"_hasShrinkwrap":false},"0.1.49":{"name":"oapi3codegen","version":"0.1.49","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.11","oapi3codegen-agent-angular":"^1.0.6","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"5518d684700a3ddbd6e2b42a71426f66e82098b6","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.49","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-UW7cEBwFd4D5lBpq0JHHCzVrbuGcvvaELkYNHzJc9kIpKJ2WRZCyY6PgDFm3qecebZ/wtOlHTE7+0tVzssID5w==","shasum":"6fbef7c9d1684b81fcf49cb3c1973fa98b69a946","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.49.tgz","fileCount":56,"unpackedSize":155777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckN9OCRA9TVsSAnZWagAANJgP/REorkK9rm3fruI0dgu2\nZEiC3MWEHCRjbztr75RWMp0BUHQB+hFjcJzLRL7v5MYPuSUnaUki00u8OHYO\nVDaHZrb9yVV/o3xNHZNA4Bw5Kbt+rfExzomhm7XMTQiM5Rl//mMSiL4Zo1m2\neb3H/mkMVGEzSsRyWV1hxdNKE8I5jRMdkh/JKyMrMoRGboDqN09c+26fG6jG\nIi9L/jdD93FptCIS9KKAVXpWh8zWMxjt9jO52+SFEGH3bSjMyyGwruRYT13T\nIJU6HuF/ndykYw8syyHYhhaDc+uv3mzij+f7Au9oqJDUdlQ7m2Mmmh7TpMWm\n0ObeXWvWgsHSaS2jS33H9s5QXpXB7e3vU1DzFWuxC/yi99cAWIFP426HI4ga\nDDQUVQnb1Y0AUWbIeA3V2MINchNJPh4FDATU1/NSrAquRS0C6AAcIR5OecuT\n9G5/fvQ3gZsifAC7J9tRwcBb+wy9pqge5M17HnhY2PL833Xgfj9+zxuy3bqm\nGJwvZa7wo0o63at0L4FJAl3eYSvVkHZjFR5ftur9rjbUv/3UH5F7tCnZ/NxU\nm7M9amlmnW+xjRfzOuiTYPhBDmvgoyvuyYz8cIq7zeQazG1KRIlwH5MstvGZ\nxkZDAeorP16gHyMEtzM+HGv97p6dCj01BcHY6aNFBKMtkTKBQnUEkHCUCpCh\nA334\r\n=NIEF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCzzEMWojyf7PXTMfrRLCyQaUeNXX0pcTVRw0HRxb8NAiARTURRkEg99pTJYop9c5uxJCHYMOcDiSvxXeIol9KhxQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.49_1552998222340_0.0752638046430909"},"_hasShrinkwrap":false},"0.1.50":{"name":"oapi3codegen","version":"0.1.50","description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","main":"index.ts","bin":{"oapi3codegen":"./bin/oapi3codegen.js"},"scripts":{"prepare":"if [ ! \"$OAPI3CODEGEN_PREPARED\" = \"yes\" ]\nthen\n export OAPI3CODEGEN_PREPARED=\"yes\" && npm install\nfi","build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","dependencies":{"ajv":"^6.5.0","download":"^7.0.0","execa":"^0.10.0","fs-extra":"^5.0.0","lodash":"^4.17.11","oapi3codegen-agent-angular":"^1.0.6","oapi3codegen-assert":"^0.1.1","prettier":"^1.12.1","typescript":"^2.8.3"},"gitHead":"b1cc2e71036a833f4783f535cc8590bd5a691f05","bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"},"homepage":"https://github.com/koshevy/oapi3codegen#readme","_id":"oapi3codegen@0.1.50","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"koshevy","email":"koshevy@gmail.com"},"dist":{"integrity":"sha512-kMgFZTIaAOGNbPbmMIcIc72W7FDFIR8gUpKdft2Iy+yF9qFzxvMog3cEpwYDS4x46DB3/5yyxpRWYWVUxbHYQQ==","shasum":"759158e42074c02f72caea9485d60853f49ca5ec","tarball":"https://registry.npmjs.org/oapi3codegen/-/oapi3codegen-0.1.50.tgz","fileCount":84,"unpackedSize":173382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcqwH2CRA9TVsSAnZWagAAiscP/j2YvFG3ghpiieaQNBSv\n2uDIDw/CwegH3BXee1bGfD1mX37AqhC/hEknS06CyHp4rs/flaooPH8N6ef+\n8gOXr2zLE1fRg2eCoBYJpPsMvaWMICH9BIM0LG4E2Jw+Rs0YMBohHfwHtPbe\nJmucOAvY6GSZv75L8NXtR+ACoAFguaFiRDCb+g7pM2YYdGo6RP7WRM4fcVQH\nx9Qi9aOk9KUfAnsJ2F7oVXMGURF8se2jaAWCWE3oZRGshLxR77L8CTRmzEC5\noLxElh0IQ5RfObF2/ZwKlX6dKLvyq6nNamOtQuu5nIOhksRcrN/dHB+KTk+P\n0AFMLpml8b7MKwayJDiaCdUEMfMkSL5z4CIr6IrzHy8ltJr+J49a6D64BuON\nKx11WNyrCC4RoNDqIT2bRKOvnchx/yG0RH9ineEPz+o9GV4ySseVZ6RltYe1\n6dHPAAtxNQJF8s+qKCQAtlVlQI9EeUrWpMuO3iuJTTjnAOi/UnreSwBcVcVd\nKs2olHMFL7I7iWD1q9dVc03uOnMTEs5o2yZusSQbGtM7SYlhmlz/P6+vCnAp\nZqqIzN1VTk1W50rqMCO9s7um1kjLmexIlyEDZiWL7uTU8oIoBeOCtCnYM/GB\n7upN+jgjSMAJ7VVTzzgM3wDyHDiLxs4/0Z/Z1geFmujhXBMlYChtKM6BjEyj\nPpo2\r\n=6BgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApKe7UEsiYGilmIqp+daXAxApBz4CaXycSOdmaXDFZ2AiACNqId4XTEV1xU/HSgGetZ9vfq+Fni4BPf8R9vBZq4WQ=="}]},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/oapi3codegen_0.1.50_1554711029994_0.5424260549747226"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-12T17:06:30.389Z","1.0.0":"2018-05-12T17:06:30.467Z","modified":"2022-05-12T00:15:54.997Z","0.1.0":"2018-05-12T17:07:58.526Z","0.1.1":"2018-05-13T11:12:04.610Z","0.1.2":"2018-05-13T11:13:32.191Z","0.1.3":"2018-05-13T11:15:58.492Z","0.1.4":"2018-05-13T11:25:47.120Z","0.1.5":"2018-05-13T11:28:49.854Z","0.1.6":"2018-05-13T11:46:18.020Z","0.1.7":"2018-05-13T12:10:53.155Z","0.1.8":"2018-05-13T14:36:36.275Z","0.1.9":"2018-05-13T14:41:56.264Z","0.1.10":"2018-05-13T14:45:34.519Z","0.1.11":"2018-05-13T19:18:04.179Z","0.1.12":"2018-05-13T21:15:54.745Z","0.1.13":"2018-05-14T07:22:45.375Z","0.1.14":"2018-05-14T07:52:49.083Z","0.1.15":"2018-05-14T07:58:21.138Z","0.1.16":"2018-05-14T13:10:36.817Z","0.1.17":"2018-05-14T19:44:52.994Z","0.1.18":"2018-05-14T20:16:57.794Z","0.1.19":"2018-05-15T07:18:53.065Z","0.1.20":"2018-06-07T18:49:11.372Z","0.1.21":"2018-06-10T11:24:04.044Z","0.1.22":"2018-06-13T10:45:03.935Z","0.1.23":"2018-06-22T10:34:30.383Z","0.1.24":"2018-06-22T16:19:07.272Z","0.1.25":"2018-07-03T10:32:02.075Z","0.1.26":"2018-07-03T13:21:34.656Z","0.1.27":"2018-08-03T12:16:10.475Z","0.1.29":"2018-08-09T12:07:49.957Z","0.1.30":"2018-08-09T12:31:39.053Z","0.1.31":"2018-08-09T12:56:03.857Z","0.1.32":"2018-09-05T19:35:22.506Z","0.1.33":"2018-09-05T19:38:56.407Z","0.1.34":"2018-09-05T20:01:59.126Z","0.1.35":"2018-09-05T20:03:30.815Z","0.1.36":"2018-09-05T20:04:45.674Z","0.1.37":"2018-09-05T20:05:56.967Z","0.1.38":"2018-09-19T12:59:32.902Z","0.1.39":"2018-09-21T14:49:20.249Z","0.1.40":"2018-09-21T15:01:47.750Z","0.1.41":"2018-09-21T15:10:37.764Z","0.1.42":"2018-10-31T12:12:20.834Z","0.1.43":"2018-10-31T12:16:17.443Z","0.1.44":"2018-12-12T10:27:11.074Z","0.1.45":"2018-12-12T10:28:13.069Z","0.1.46":"2018-12-14T17:31:42.227Z","0.1.47":"2018-12-14T17:32:22.179Z","0.1.48":"2018-12-19T11:56:25.280Z","0.1.49":"2019-03-19T12:23:42.560Z","0.1.50":"2019-04-08T08:10:30.310Z"},"maintainers":[{"name":"koshevy","email":"koshevy@gmail.com"}],"description":"OpenAPI 3 codegeneration for TypeScript: interfaces, validations, APIs","keywords":["api","openapi","open-api","oapi","open-api3","openapi3","openapi 3","openapi 3.0","swagger","ts","typescript","codegeneration","code-generation","codegen"],"author":{"name":"koshevy"},"license":"MIT","readme":"# Code generation from OpenAPI 3 to TypeScript\n\nLightweight and simple. Can be used for *browser's* and for Node.js ecosystems.\nNow supports converting from **OpenAPI 3** to **TypeScript** types (OpenAPI 2 and below are not supported).\n\n<details>\n<summary>For example, creates constructions such as (click to expand):</summary>\n\n```typescript\n/**\n * Typical 401 response\n */\nexport interface HttpErrorUnauthorized {\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\nexport interface GetParametersMeta_response401\n  extends HttpErrorUnauthorized {\n\n  /**\n   * Error message\n   */\n  message: string;\n\n  /**\n   * Data appropriate to\n   * [WWW-Authenticate](https://tools.ietf.org/html/rfc7235#section-3.1).\n   */\n  wwwAuthenticate?: {\n    /**\n     * Prompt to authenticate\n     */\n    title: string;\n\n    /**\n     * Kind of authorization user has to use\n     */\n    type: string;\n\n    /**\n     * Type of authority (\"barrier\" or etc.)\n     */\n    realm: string;\n  };\n}\n\n/**\n * Kind of request error: syntax or semantic. Syntax error means the\n * application logic error, semantics — error of data, that contragent\n * inputs.\n */\nexport enum HttpErrorBadRequestTypeEnum {\n  Syntax = \"syntax\",\n  Semantic = \"semantic\"\n}\n\n/**\n * Typical response one Bad Request Error (400)\n */\nexport interface HttpErrorBadRequest {\n  /**\n   * Common error message\n   */\n  message: string;\n\n  /**\n   * Kind of request error: syntax or semantic. Syntax error means the\n   * application logic error, semantics — error of data, that contragent\n   * inputs.\n   */\n  type?: HttpErrorBadRequestTypeEnum;\n\n  /**\n   * Explained description of error\n   */\n  description?: string;\n\n  /**\n   * Additional list of errors with JSON-pointers\n   */\n  errors?: Array<{\n    originalMessage: string;\n\n    message?: string;\n\n    jsonPointer: string;\n  }>;\n}\n\n/**\n * ## MetaDataView\n * MetaData helps decide what the method has to use to\n * interpret and render parameter or category of parameters.\n */\nexport type GetParametersMeta_response200 = Array<Category | Parameter>;\n\n```\n</details>\n\n-----\n\n> #### 🚦 Status of project\n> - **Stabilization:** ready to use in non-production projects (see Road Map).\n> - **Not supported YML (only JSON)**. *Will be supported soon. Now, you can use something like [js-yaml](https://www.npmjs.com/package/js-yaml)*\n> - ***🐞 UPDATE:*** Fixed problem with infinity loop in recursive types!\n>\n> Please, if it possible: send me your schemas that not converts properly.\n\n### Online demo\n\nWork in progress! Now, see how to use.\n\n### Road map\n\nWork is just started, and current functionality (creating TypeScript types) —\nIt's just a first part of the supposed functionality.\nWith time, it's supposed, possibilities of this plugin will be extended by:\n\n- *Make project well documented [in progress]*\n- *YAML support [in progress]*\n- *Stabilization [in progress]*\n- *Playground site [in progress]*\n- Plugins support\n- Generation classes (now creates only interfaces) with internal validation [ *concept description is coming soon* ]\n- Generation API Classes\n    - Solutions for AngularX based on *Assured requests idea* with internal validation [ *concept description is coming soon* ]\n    - *May be, something else...*\n- **DDD-tools** (Start kit for OpenAPI3-projects):\n    - Bundler for complex files structure. Need fo organization complex API-libraries.\n    - [Dredd](https://www.npmjs.com/package/dredd)\n    - Most populars doc-generators (at least, [Redoc](https://www.npmjs.com/package/redoc) and [SwaggerUI](https://www.npmjs.com/package/swagger-ui))\n    - Convention for working with DDD OpenAPI3\n- **Other languages** (is there are need for it?): Kotlin, Java, PHP, \n\n### Ideology\n\n- **Data format loyalty:** it's should be as useful as it possible regardless validity of source data.\n- **Integration**: solution should be able to be integrated to any system (at least, based on NPM). It's mean, should have CLI and API.\n\n### Why not swagger-codegen?\n\n- Uses NPM instead Java (install via npm and easy-integratable)\n- Lightweight ([swagger-codegen](https://github.com/swagger-api/swagger-codegen) solution — it's about a 14mb for ready JAR)\n- Supports OpenAPI3\n- Above all, intended for TypeScript \n\n## Install\n\n##### 1. Install TypeScript\n\n```sh\nnpm install typescript@latest -g\n``` \n\n##### 2. Install oapi3codegen global (for CLI using)\n\n```sh\nnpm install oapi3codegen -g\n``` \n\n##### 3. Install oapi3codegen for local project\n\n```sh\nnpm install oapi3codegen --save\n``` \n\n## Using via CLI\n\n```sh\noapi3codegen --srcPath /PATH/TO/SRC/open-api-file.json --destPath /PATH/TO/DEST --separatedFiles true\n```\n\n#### CLI arguments\n\n| CLI Argument       | Description                                                                   |\n|--------------------|-------------------------------------------------------------------------------|\n| **srcPath**        | Path of url of JSON file with OpenAPI3 specification                          |\n| **destPath**       | Path for destination directory                                                |\n| **separatedFiles** | Whether should converted types be saved in separated files, or in single file |\n\nAlso, you can set some of options for convertor's [configuration](https://github.com/koshevy/oapi3codegen/blob/master/core/config.ts#L99)\nconfig via CLI:\n\n| Option                          | Description                                                                   |\n|---------------------------------|-------------------------------------------------------------------------------|\n| **defaultContentType**          | Default content-type contains no prefixes/suffixes in type names.             |\n| **implicitTypesRefReplacement** | Mode when models that refer to any models via `$ref` are replacing implicitly even if firsts have names |\n\n## Using via API (TypeScript)\n\nYou can convert whole OpenAPI3-specification:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n\nconst convertor: Convertor = new Convertor();\n\n/**\n * Base models of specification:\n *  - Requests bodies models\n *  - Requests params sets models\n *  - Responses models\n *\n * Converting starts from entry points and extracts\n * referred types and dependencies. It s why we need\n * to get \"entry points\". \n */\nconst entryPoints = convertor.getOAPI3EntryPoints(context);\n\n/**\n * Rendering each type: every entry point and each of\n * theirs related types.\n */\nConvertor.renderRecursive(\n    entryPoints,\n    (descriptor: DataTypeDescriptor, text) => {\n        // Here your code: you get text and type descriptor.\n        // You can see how oapi3codegen's CLI uses this calback here:\n        // https://github.com/koshevy/oapi3codegen/blob/master/cli.ts#L73\n    }\n);\n```\n\nAnd also, you can convert stand-alone JSON-schema into type descriptor,\nthat could be rendered:\n\n```typescript\nimport { Convertor } from 'oapi3codegen';\n// you need prettier to beautify result of rendering\nimport * as prettier from 'prettier';\n// provides `_.each(...)` for our example\nimport * as _ from 'lodash';\n\nconst convertor: Convertor = new Convertor();\n\nconst anotherJsonSchemaObject = {\n    \"title\": \"Person\",\n    \"description\": \"Information about person you have to register in your system.\",\n    \"type\": \"object\",\n    \"properties\": {\n        \"firstName\": {\n            \"type\": \"string\"\n        },\n        \"lastName\": {\n            \"type\": \"string\"\n        },\n        \"age\": {\n            \"description\": \"Age in years\",\n            \"type\": \"integer\",\n            \"minimum\": 0\n        }\n    },\n    \"required\": [\"firstName\", \"lastName\"]\n};\n\nconst convertResult = convertor.convert(\n    anotherJsonSchemaObject,\n    {},\n    'AnotherType'\n);\n\n_.each(convertResult, typeDescriptor => {\n    const typeCode = prettier.format(\n        typeDescriptor.render([]),\n        {parser: 'typescript'}\n    );\n\n    console.log(typeCode);\n});\n\n```\n\nAnd this code will print result:\n\n```typescript\n/**\n * ## Person\n * Information about person you have to register in your system.\n */\nexport interface AnotherType {\n  firstName: string;\n\n  lastName: string;\n\n  /**\n   * Age in years\n   */\n  age?: number;\n}\n```\n\n## API (TypeScript)\n\nComing soon...\n\n## How to extend?\n\nComing soon...","readmeFilename":"README.md","homepage":"https://github.com/koshevy/oapi3codegen#readme","repository":{"type":"git","url":"git+https://github.com/koshevy/oapi3codegen.git"},"bugs":{"url":"https://github.com/koshevy/oapi3codegen/issues"}}