{"_id":"@chenxxx/egg-swagger-decorator","_rev":"1-60014ae30f3543268d77ec7354b0976f","name":"@chenxxx/egg-swagger-decorator","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"@chenxxx/egg-swagger-decorator","version":"0.3.0","description":"using decorator to make router definitions and automatically generate swagger doc for egg.js","main":"./dist/index.js","types":"./dist/index.d.ts","egg":{"typescript":true},"eggPlugin":{"name":"swaggerDecorator"},"scripts":{"start":"egg-scripts start --baseDir=./test/fixtures/apps/swagger-decorator-test --title=egg-server-tt","stop":"egg-scripts stop --title=egg-server-tt","dev":"egg-bin dev --baseDir=./test/fixtures/apps/example -r egg-ts-helper/register --port 4444","debug":"egg-bin debug --baseDir=./test/fixtures/apps/swagger-decorator-test -r egg-ts-helper/register","test-local":"egg-bin test -r egg-ts-helper/register","test":"npm run lint -- --fix && npm run test-local","cov":"egg-bin cov -r egg-ts-helper/register","tsc":"ets --cwd=./test/fixtures/apps/swagger-decorator-test && tsc -p tsconfig.json","ci":"npm run lint && npm run cov && npm run tsc","autod":"autod","lint":"tslint .","clean":"ets clean","build":"tsc -p tsconfig_publish.json","pub":"npm run build && npm publish","prepare":"yarn build"},"dependencies":{"class-validator":"^0.13.1","lodash":"^4.17.5","reflect-metadata":"^0.1.13","ts-enum-util":"^4.0.2"},"devDependencies":{"@types/lodash":"^4.14.106","@types/mocha":"^2.2.40","@types/node":"^7.0.12","@types/supertest":"^2.0.0","autod":"^3.0.1","autod-egg":"^1.1.0","egg":"^2.29.4","egg-bin":"^4.16.2","egg-ci":"^1.18.0","egg-mock":"^3.17.0","egg-scripts":"^2.13.0","egg-ts-helper":"^1.25.9","tslib":"^1.9.0","tslint":"^4.0.0","typescript":"^4.2.4"},"engines":{"node":">=8.9.0"},"ci":{"version":"8"},"repository":{"type":"git","url":"git+https://github.com/cjfff/egg-swagger-decorator.git"},"eslintIgnore":["coverage"],"keywords":["decorator","swagger","egg","eggPlugin","egg-plugin"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"author":{"name":"cjfff"},"license":"MIT","gitHead":"dffe6f951fc01ebf4a7f3d888ae5bf896eaadef4","bugs":{"url":"https://github.com/cjfff/egg-swagger-decorator/issues"},"homepage":"https://github.com/cjfff/egg-swagger-decorator#readme","_id":"@chenxxx/egg-swagger-decorator@0.3.0","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-wY2JcTyWZBADhfWGlBXAyxVFQLJAq1uvVLj4yH03NpQilgyKHq3AgnRShKPXW5oA4fnNqLMH86J2T6lPLm+SwA==","shasum":"c5e45d13b8d2cd9b1a41a1f94f4916d22075afee","tarball":"https://registry.npmjs.org/@chenxxx/egg-swagger-decorator/-/egg-swagger-decorator-0.3.0.tgz","fileCount":62,"unpackedSize":110762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4+hVCRA9TVsSAnZWagAANkcQAIUSaJvDp4eTcIFTISGX\nud2rPAtJUFAWl2wuvRMRnShxG1hYXJrDiFNApSqpTQP23cAqMvIQTRnap1XU\nwXxo5lVu25ia+yqsIB+8+RBDLFrMNyZAbTSRZNbBrPkxKAKgXKXzNCv6ItC/\nktXmbycriF/tz2dQcj+257x2FI3Duipyp1OT/0M0sOW35w9YfPbStiphQoQc\nb6PcPSUFoTtZOni2HcESMUiQIdLjeUUhJmV+EVl8IhE1V/cBmmJRFLStopX/\n/lNv1bP6szmxV4NAsATAgHRm5VMVZNSexZ6GxdIlRYRfO3g6lXxn/zpDOmib\noKiahMAepXutn5DTlPrs1YxT78fNwHvf39CPZTD75goDKhhdl7SatF/9vRso\n5Po68tqL0e0vpL1wDSeOeBL5OhvPirHzQpsl/PMRpwgHXSZLpGHNULY8QxCK\n7AfWz6B92Kd1aZJP1GBePLRIRJZW3XpjTmQ6xOuewLdkViQw7/ARe8R8AT8q\n9w4bmNaQGlyUAJV88UHQLon5pWl2B77sJCSLUcL59SAuJKzr/yBfw6JQV8cd\nfMqsZiGdFQ7ZPee+v0RIM6OrJKROmEYiKaPI0LubbMXHxowMN4BV1BpiSRhh\nOG7LZ/ynUUz4utTHvVD0r3+gCjLGSxtCrf8PdGBwqxZgAKnueXNhrySaRkvo\n7fiB\r\n=7Cvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjcea68NWOg25cp2kwaS6vVXRle+timYzlAwYErf4xpgIgWw7talYt/Nk+Y6keltbXdktt0lHvA3YqeF+/YaN6PsM="}]},"_npmUser":{"name":"cjfff","email":"cjfff1996@gmail.com"},"directories":{},"maintainers":[{"name":"cjfff","email":"cjfff1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-swagger-decorator_0.3.0_1625548884743_0.3333304869682763"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-06T05:21:24.454Z","0.3.0":"2021-07-06T05:21:24.852Z","modified":"2022-04-04T22:39:16.993Z"},"maintainers":[{"name":"cjfff","email":"cjfff1996@gmail.com"}],"description":"using decorator to make router definitions and automatically generate swagger doc for egg.js","homepage":"https://github.com/cjfff/egg-swagger-decorator#readme","keywords":["decorator","swagger","egg","eggPlugin","egg-plugin"],"repository":{"type":"git","url":"git+https://github.com/cjfff/egg-swagger-decorator.git"},"author":{"name":"cjfff"},"bugs":{"url":"https://github.com/cjfff/egg-swagger-decorator/issues"},"license":"MIT","readme":"# egg-swagger-decorator [npm-url](http://r.npm.guorou.net/-/web/detail/@grfe/egg-swagger-decorator)\n> using decorator to auto generate swagger json docs\n\n## Installation\n\n\n```bash\nyarn add @grfe/egg-swagger-decorator --registry=http://r.npm.guorou.net/\n```\n\n## Introduction\n\n### egg Swagger Decorator\n\nusing decorator to auto generate swagger json docs\n\nbased on [Swagger OpenAPI Specification 2.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md)\n\n## Example\n\n```\n// using commonds below to start and test the example server\n\ngit clone http://git.shensz.local/FE/egg-swagger-decorator\n\ncd egg-swagger-decorator\n\nnpm install\n\nnpm run dev\n\nfinally open:\nhttp://localhost:7001/swagger-html\n\n```\n\n### Requirements\n\n- egg\n- typescript > 2.8\n\n### Introduction\n\n```\n// router.js\nimport { Application } from 'egg';\nimport { wrapper } from '../lib';\nexport default (app: Application) => {\n  wrapper(app, {\n    // // [optional] default is /swagger-html\n    // swaggerHtmlEndpoint: '/sw',\n    // // [optional] default is /swagger-json\n    // swaggerJsonEndpoint: '/sj',\n    // // [optional] default is false. if true, will call makeSwaggerRouter(app) automatically\n    // makeswaggerRouter: false,\n\n    title: 'foo',\n    version: 'v1.0.0',\n    description: 'bar',\n    // autoMount 是否开启\n    // defaultRequestMounte: true\n  });\n  makeSwaggerRouter(app);\n};\n\n```\n\n#### using decorator to make api definition\n\n```ts\n// controller/test.ts\nimport { Controller, Context } from \"egg\";\nimport {\n  request,\n  summary,\n  path,\n  tags,\n  responses,\n  middlewares,\n  description,\n} from \"@grfe/egg-swagger-decorator\";\nimport { PathParamsVO, IGetUserResultVO, IUserListVO } from \"../dto\";\nconst testTag = tags([\"test\"])\nexport default class Test extends Controller {\n  @request(\"get\", \"/users\")\n  @description(\"get user list\")\n  @testTag\n  @middlewares(async (ctx: Context, next) => {\n    ctx.logger.info(\"mid\");\n    await next();\n  })\n  @responses(IUserListVO)\n  public async getUsers() {\n    const { ctx } = this;\n    const users = [{ name: \"cjfff\" }];\n    ctx.body = { users };\n  }\n\n  @request(\"get\", \"/users/{id}\")\n  @summary(\"get user info by id\")\n  @testTag\n  @path(PathParamsVO)\n  @responses(IGetUserResultVO)\n  public async getUser() {\n    const { id } = this.ctx.params;\n    this.ctx.body = { id };\n  }\n}\n\n```\n\ndto define\n```ts\n// ../dto.ts\nexport class PathParamsVO {\n  @ApiProperty({\n    type: \"number\",\n    description: \"用户id\",\n    example: 10086,\n  })\n  @IsNumber({ maxDecimalPlaces: 1000 }, { message: \"id 必须是数字2323232\" })\n  id: number;\n}\n\n\nexport class IUserVO {\n  @ApiProperty({\n    type: 'string'\n  })\n  name: string;\n}\n\nexport class IUserListVO {\n  @ApiProperty({\n    type: IUserVO,\n    isArray: true\n  })\n  users: IUserVO[]\n}\n\n\nexport class IGetUserResultVO {\n  @ApiProperty({\n    type: 'number'\n  })\n  id: number;\n}\n```\n\n#### avaliable annotations:\n\n- tags         \n- query\n- path\n- body\n- formData\n- middlewares\n- summary\n- description\n- responses\n\n```\n\nrequest      // @request('POST', '/users')\n\ntags         // @tags(['example'])\n\nquery        // @query({limit: {type: 'number', required: true, default: 10, description: 'desc'}})\n\npath         // @path({limit: {type: 'number', required: true, default: 10, description: 'desc'}})\n\nbody         // @body({groups: {type: 'array', required: true, items: { type: 'string', example: 'group1' }}})\n\nformData     // @formData({file: {type: 'file', required: true, description: 'file content'}})\n\nmiddlewares  \n// support koa middlewares. \n// eg. @middlewares([func1,func2])\n\nsummary      // @summary('api summary')\n\ndescription  // @description('api description')\n\nresponses \n// @responses({ 200: { description: 'success'}, 400: { description: 'error'}})\n// responses is optional\n```\n\n\n\n##### runing the project and it will generate docs through swagger ui\n\n![image.png](http://upload-images.jianshu.io/upload_images/2563527-4b6ed895183a0055.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n## License\n\n © MIT\n\n\n[npm-url]: https://npmjs.org/package/egg-swagger-decorator\n","readmeFilename":"README.md"}