{"_id":"@ecmpvr/swagger-to-ts","_rev":"1-70c91c6f1b10828bf5ca98465b4763e1","name":"@ecmpvr/swagger-to-ts","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.4":{"name":"@ecmpvr/swagger-to-ts","version":"0.0.4","description":"Generate Typescript models and client interface from Swagger yaml","author":{"name":"Eduardo Campver"},"license":"ISC","main":"dist/index.js","bin":{"swagger-to-ts":"dist/index.js"},"types":"dist/types/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc --lib esnext --outDir ./dist --downlevelIteration ./src/index.ts","start":"node ./dist/index.js","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"camelize":"^1.0.0","js-yaml":"^3.14.0","yargs":"^15.3.1","typescript":"^3.9.3"},"devDependencies":{"@types/yargs":"^15.0.5","@types/js-yaml":"^3.12.4","@types/node":"^14.0.5"},"gitHead":"582eaaf89d5a3c041fe5094681f884b63b02f1e7","_id":"@ecmpvr/swagger-to-ts@0.0.4","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fWVE6ZgxCBVt4WYVwX9857gah9UTps3vEnXv6oEI6QFxslzCouTTzWxvD8Sj3yRbnhW8Su21hxiz440tHVya2Q==","shasum":"3bbe62bcba41dacfd0688fbf4ae11bb5f283922b","tarball":"https://registry.npmjs.org/@ecmpvr/swagger-to-ts/-/swagger-to-ts-0.0.4.tgz","fileCount":9,"unpackedSize":19636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCtCnCRA9TVsSAnZWagAAsREP/RM/e5HdSXvXTAe0u1qW\nnbDOqnb3eafNSIsYZhg3f/Ao4tMWIW5t19djdq++cexTT1plGbBUiLAW+0TE\nBYjqB1IzGnFt7K7WQAKGpjltNf/J7VTwi1mWEOWDsLYfHEkCZgtVOtci7o0r\nEOavSU2IvbVn/I96vIKAaPMglEShp68QPpEzETxztSz0WfWVY9kbahkASidV\nKO9nL7MjVUdrF4ThQUMXFxyeEIWhQbZalJYklCsnaJO+4f3J+GDFHKrGIfvv\ng0491u/5X+ujegLtM07K+ayTQqEshFECKgxtjd+m1y1BrhL4QaaP23BkhLac\nVdgeImLQrp3ZiR9PTY4D6k/j6nejN+M0iTfyxgQdw1ywvvEZDEo1AL9OZmNW\nv+2FkKzkyX6sTJEpf23+2bWVq1AvvTRDu+6f8kpxj7WJOjRBWEnViZpN+C+8\nJ3vYmSjjikaUOgGAsM9S6AiFLahNwHr77ndfX5/7XBjT/rltZS/zzWX75Sc2\nqApKD6eOaYug3eE8PmVwCpc1ylt4qxKCsXF5stJ00eF1eXERxyTu2od17TXs\noVQB6OZA1h4DMRwC6dKkMz7ZGuGd2Q9Xu0g6UgBloOVTMoIdy2iQB4lNS6UR\nJtUqBpbxL+4Vt2B61CqCYb2lfkCBSuGr8bUdFKsXbpThgewTcDiQNr8kHnbV\nE2xj\r\n=8i/c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJCEM8YFQayxr0O/JHol2L+T9lJccg9DkFn5ytynuXwAiAh7jjHqatdGKlOnZ1DKZ3B9J1Pq2mB+gHWlILAgnYmsw=="}]},"_npmUser":{"name":"ecmpvr","email":"eduardocampver@gmail.com"},"directories":{},"maintainers":[{"name":"ecmpvr","email":"eduardocampver@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/swagger-to-ts_0.0.4_1611321511234_0.7927200175503206"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-22T13:18:31.171Z","0.0.4":"2021-01-22T13:18:31.356Z","modified":"2022-04-05T06:37:48.622Z"},"maintainers":[{"name":"ecmpvr","email":"eduardocampver@gmail.com"}],"description":"Generate Typescript models and client interface from Swagger yaml","author":{"name":"Eduardo Campver"},"license":"ISC","readme":"# swaggger-to-ts\n\nGenerate Typescript models and client interface from Swagger yaml\n\n## Install\n\n```bash\nnpm install -g @ecmpvr/swagger-to-ts\n```\n\n## Usage\n\n```bash\nUsage: swagger-to-ts [-s path] [-d path] [-n]\n\nOptions:\n  --help             Show help                                         [boolean]\n  --version          Show version number                               [boolean]\n  --source, -s       The swagger yaml file path                       [required]\n  --destination, -d  Generated files destination folder path          [required]\n  --clientName, -n   The interface name for the client    [default: \"ApiClient\"]\n```\n\n## Example\n\nFor the following Swagger spec:\n\n```yaml\nswagger: \"2.0\"\ninfo:\n  title: Users API\n  description: API description in Markdown.\n  version: 1.0.0\nhost: api.example.com\nbasePath: /v1\nschemes:\n  - https\npaths:\n  /users:\n    get:\n      summary: Returns a list of users.\n      description: Optional extended description in Markdown.\n      operationId: getUsers\n      produces:\n        - application/json\n      responses:\n        200:\n          description: OK\n    post:\n      summary: Creates a new user.\n      operationId: createUser\n      parameters:\n        - in: body\n          name: user\n          schema:\n            $ref: '#/definitions/User'\n      responses:\n        200:\n          description: OK\n          schema:\n            $ref: '#/definitions/User'\n  /users/{userId}:\n    get:\n      summary: Returns a user by ID.\n      operationId: getUserById\n      parameters:\n        - in: path\n          name: userId\n          required: true\n          type: integer\n      responses:\n        200:\n          description: OK\n          schema:\n            $ref: '#/definitions/User'\ndefinitions:\n  User:\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n      address:\n        $ref: '#/definitions/Address'\n    required:  \n      - id\n  Address:\n    properties:\n      street:\n        type: string\n      number:\n        type: integer\n    required:\n      - street\n      - number\n```\n\nLet's run the `swagger-to-ts` command:\n\n```bash\nswagger-to-ts -s api-users.yaml -d codegen/ -n UsersClient\n```\n\nThis will yield two files `codegen/models.ts` and `codegen/client.ts` with the following contents:\n\n```typescript\n// models.ts\nexport interface User {\n    id: number;\n    name?: string;\n    address?: Address;\n}\nexport interface Address {\n    number: number;\n    street: string;\n}\n\n// client.ts\nimport { User } from \"./models\";\nexport interface UsersClient {\n    getUsers: () => Promise<unknown>;\n    createUser: (user?: User) => Promise<User>;\n    getUserById: (userId: number) => Promise<User>;\n}\n\n```\n\n## Limitations\n\n* Doesn't support `allOf` attribute\n* Doesn't handle duplicated `operationId` attributes on different paths\n\n## Compatibility\n\nThis tool has only been tested on `Node v12` and `typescript@3.9.3`\n","readmeFilename":"README.md"}