{"_id":"@anycloud/express-controller","_rev":"3-a3ae4d7151f861737aa4d09b3b3582a1","name":"@anycloud/express-controller","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@anycloud/express-controller","version":"0.1.0","publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/anycloud-inc/express-controller.git"},"homepage":"https://github.com/anycloud-inc/express-controller#readme","scripts":{"prepare":"tsc -p ."},"dependencies":{},"devDependencies":{"@types/express":"^4.17.13","@types/node":"^14.14.13","ts-node":"^9.1.1","typescript":"^4.1.3"},"gitHead":"39cdcfedc69136c8a8d7898ba07cdc67ba6a4aef","bugs":{"url":"https://github.com/anycloud-inc/express-controller/issues"},"_id":"@anycloud/express-controller@0.1.0","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-7T362xw9IkvX3iRww86Y5DBec+/OIsR3wT7CI5zcpNq3YqIeqefNlc+qcCtiXVirCYiPjR0QVYfdqVFQNZAC/Q==","shasum":"f1975895eeb75c937889b0fedf793f107118c97f","tarball":"https://registry.npmjs.org/@anycloud/express-controller/-/express-controller-0.1.0.tgz","fileCount":7,"unpackedSize":27551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNANjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrB3g//UGNNAoCJeRuVTK+9BrgIfLO7SPoYQagZ3oo2et6TA5EEpvR7\r\nc5FXGN97gbr+6BZumvWMY/OR4RGpQeD0YJUOoGjggtZz7TFwwq/Jzlj+oY+E\r\nOazqKtOIrNFE6RDYtqk6UjqXWSZuW+U44bhJxWurZe1iRnbJ7DQ2GKSSk88+\r\nds9Mko7+UoFfh1hUKY2Eta/TWT2+ZRCSdgInOqC9+owEfYMMtYWI+tkfKIWO\r\nV5ReHlV1m7pra6GWlmQ0NbLx/Dl7oCMlKxD8DmzGqKlwQnCml+pdbM/3d7J5\r\n3EmYmR+LFGA6xjVN7VXIAX1o4ia8aUuS4IdZwx7oxQ/am2W7B3uHrSwY/yzX\r\nx0wyJuRzPS3Y4AcqZOdJjjq9uQPO1szqekHuBQE4c9hCd74gEYaHIhrWqgnc\r\nG+De2LAA2bN/AWJtDVkIdt/PHn4eomBgvjxnLIziql03FgzHgyXdeF1ha3Yi\r\nudPfrxKXWTq5WLTrVCUmZ0q7BQcZKj1gTPtJosA+SbBPEauXBop4EJGA2DND\r\nW1bL+oHxJuwz0CVgi1vsRDZu5O1ewv15ictSFQOrOZ9qZhKyvniRE9F9CpVt\r\nWwxGcB6Go2ciuIEWUddpFblzz9NxIGCkK4NMpkl3tz5SuSLgww8+OhlZ1wVa\r\njfCCgdlqRrqGolo/PTpfarlffZe+697GlfA=\r\n=z1Ev\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzZ02r/wJWAvbwdUcRHHp/x2iLKVw4TY2zMyvKCmUdVgIhANX9NI8erFqMWp/fplN+IJin85MNQ7LXdBhYsF/WGIVX"}]},"_npmUser":{"name":"anycloud","email":"dev@anycloud.co.jp"},"directories":{},"maintainers":[{"name":"anycloud","email":"dev@anycloud.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-controller_0.1.0_1647575907170_0.5355851126825852"},"_hasShrinkwrap":false},"0.1.1":{"name":"@anycloud/express-controller","version":"0.1.1","publishConfig":{"access":"public"},"main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/anycloud-inc/express-controller.git"},"homepage":"https://github.com/anycloud-inc/express-controller#readme","scripts":{"prepare":"tsc -p ."},"dependencies":{},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.1.3"},"gitHead":"39cdcfedc69136c8a8d7898ba07cdc67ba6a4aef","bugs":{"url":"https://github.com/anycloud-inc/express-controller/issues"},"_id":"@anycloud/express-controller@0.1.1","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LMXIUxE4qV2GjREQywDjIjJBT5gBCpQE2l/yd8lckQkHEDOX9uqBFHa+OXc9NX2MoeKOp6sFoiaXZvDYTYfMBg==","shasum":"7a8a46984318ee11397879e8782f34d7964af612","tarball":"https://registry.npmjs.org/@anycloud/express-controller/-/express-controller-0.1.1.tgz","fileCount":10,"unpackedSize":30848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNA24ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8gQ/+Icypf6keIF007DzBGtu/ZMIc7DdkOlFJqdgZDXSDgUFkYOzm\r\nB0uaA/sk2JQRza7G65Wo6UE8ir9VHMyhftnJ4ji/pCTNq0dVSTu1EXvohMBn\r\nvaKDKU61m1cNTQdiITbsrDrb4sy2ohyqVMZGCD8WEmp+aL8KZygD1bfr0nEH\r\nnTio+WDGBrLi2JuGBZKyUxJ2aek0MFxXJnCoh5bJjdifIwJAmx4SbxvR6bm1\r\nMb9+tByufEYpGuKmXfUgQrEnoKYU3pUKqKHDZQ2aj4INb46HV9+b9/7vRrTb\r\nkKr+wLafDfT8waXr1zXzXurHJr+6Qcw8Vab2JV/4UaPjSmFCgCPhChbOG4Ai\r\ndpu6N9UqoiS1hsCN2cA5NlCtfN8Ma8aMrqr9sAOuofKB3PA9sm/G3La8H8Lk\r\n58nz6kyA633th300kRmlOc0hpGiyEEE2TnLABhL2ZFDMJEf1z+lSf50EM7Hb\r\n34XY7cXC6oIPibiBcOd0HVTCKfnrolWkiJQ//798kKbmKjeQv2r5PfcoERDW\r\naVzzQZNXFWm6uzSI2E23NplqIHfDSfLfIzF9liT4NJCV8JElTWEDAxXMn9n+\r\nVzu+wJGooFtltldalxChX4PXqEADxkycwCkpUJgXUJwsmpvNkGh/lo3p8y+r\r\nZqtl6f6gfNOp4TMcJy0Js9bmm93MBqSzZp0=\r\n=XMe7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxx03xo9rP+McW+/Qp1ULNWrqiVD92y1tvDF/JrjapEAIgW8W46j9OFncH1gwx8haVJvlJVlIrh/UfUOsv5KotEvA="}]},"_npmUser":{"name":"anycloud","email":"dev@anycloud.co.jp"},"directories":{},"maintainers":[{"name":"anycloud","email":"dev@anycloud.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-controller_0.1.1_1647578551952_0.8861186199756774"},"_hasShrinkwrap":false},"0.1.2":{"name":"@anycloud/express-controller","version":"0.1.2","publishConfig":{"access":"public"},"main":"dist/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/anycloud-inc/express-controller.git"},"homepage":"https://github.com/anycloud-inc/express-controller#readme","scripts":{"prepare":"tsc -p ."},"dependencies":{},"devDependencies":{"@types/express":"^4.17.13","typescript":"^4.1.3"},"gitHead":"6def1e43e2721764f0c3f26eb505f472cb596107","description":"[![npm version](https://badge.fury.io/js/@anycloud%2Fexpress-controller.svg)](https://badge.fury.io/js/@anycloud%2Fexpress-controller)","bugs":{"url":"https://github.com/anycloud-inc/express-controller/issues"},"_id":"@anycloud/express-controller@0.1.2","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-U99w3NGGqDS9884EUk0R2pZtIeEfC+JO96sI1u0tKSwWlsGn6YYP9UX1vqvczY8rhTCEircKCPJGlJhgM5+WXQ==","shasum":"416390b96866e971fbb947bbf4d249595ccd894e","tarball":"https://registry.npmjs.org/@anycloud/express-controller/-/express-controller-0.1.2.tgz","fileCount":11,"unpackedSize":33194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNEKeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHSw//Uu24Cd+Rrya38Q4KZdgE5H3/WlHijlVo5rt+TQjBR8xbqdwF\r\n7Vhwx4Ll9lgmVOz7CFLAHpmn0HYvzkToVSJPsUVOUycJzQ2nCqouSqf8XL4y\r\nbSWGhboke+ySSX/TmKJFAgaPlDkJEvjIJ0sbByL75K69YzLoJ+PPni2hYoUl\r\nIzpUG28ANJ1B1N1tJa+7bBVp3I/rzLhZwxMjf0n9qUYcF3GLTufmRv9K+Bly\r\nRJ4OKMVPnZmcGcw0KGfVMKY9MIbEYQVPbsN8ShokWER5YDrbeJ+W8egWkh+f\r\noVkO0V/uoK5MaAZjkCSjjp2zj05ur6tjuHX5e0BV5A+NJScwYTeI0Jfy5Sf2\r\n9nR+frBGl8lggH864RmxgDyT1BrLbTe8/YGTruf4Oe+Xx6hGafZvbnCI8QvN\r\nR3l5vLbS1b1koVMDvVye4pPA8AiebtnO/rLqnA/Br2+JfJU4pm+oG152yYyc\r\nQYjwi3GDlOzSWc/WJLLbUGTV8++K87F4Ny1GGgWTEeHKllZRIWknyWkMApEZ\r\n8kchp1AdrMQ/4KzEeVDSHX9p2qvqLbP/XLKCNXRsgZgenHj7GYDP8CZMOE2x\r\n99I9mFq6J67pwcPChBpn5m6QBT6AUpGUBnmagBP3HQaUlO61I22HliNcDdJU\r\noG2FAqnxxCA52h2xWvoUxRXRx93d0pJjoAY=\r\n=D3v0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcHRmNbziZzSBujcSyW/Fx1Gd8+WYo8MPKTEVhF+Sh4AiAj8x3aooVtWEO+HcGJNkXtCk/ZKa4DFoJPcYMtm72/rQ=="}]},"_npmUser":{"name":"anycloud","email":"dev@anycloud.co.jp"},"directories":{},"maintainers":[{"name":"anycloud","email":"dev@anycloud.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-controller_0.1.2_1647592093844_0.3780636379968987"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-18T03:58:27.122Z","0.1.0":"2022-03-18T03:58:27.335Z","modified":"2022-04-04T14:26:46.807Z","0.1.1":"2022-03-18T04:42:32.223Z","0.1.2":"2022-03-18T08:28:14.218Z"},"maintainers":[{"name":"anycloud","email":"dev@anycloud.co.jp"}],"homepage":"https://github.com/anycloud-inc/express-controller#readme","repository":{"type":"git","url":"git+https://github.com/anycloud-inc/express-controller.git"},"bugs":{"url":"https://github.com/anycloud-inc/express-controller/issues"},"license":"MIT","readme":"# express-controller\n\n[![npm version](https://badge.fury.io/js/@anycloud%2Fexpress-controller.svg)](https://badge.fury.io/js/@anycloud%2Fexpress-controller)\n\nThis package provides class-based RESTful controllers for express.\n\nInspired by [routing-controllers](https://github.com/typestack/routing-controllers), but with a minimal and lightweight implementation.\n\n## Installation\n\n1. Install module:\n   `npm install @anycloud/express-controller`\n\n2. Set options in `tsconfig.json` file of your project:\n   ```json\n   {\n     \"emitDecoratorMetadata\": true,\n     \"experimentalDecorators\": true\n   }\n   ```\n\n## Example of usage\n\nSuppose you want to create a CRUD API for users resources as follows.\n\n```\nGET /users\nGET /users/:id\nPOST /users\nPATCH /users/:id\nDELETE /users/:id\n```\n\nThis can be accomplished with the following code.\n\n1. Create a controller\n\n```ts\nimport { Request, Response, NextFunction } from \"express\";\n\nimport {\n  Controller,\n  Delete,\n  Get,\n  Patch,\n  Post,\n} from \"@anycloud/express-controller\";\n\n// Register a base path\n@Controller(\"/users\")\nclass UserController {\n  // Register a path for each endoint\n  @Get(\"/\")\n  async index(_req: Request, res: Response, _next: NextFunction) {\n    res.json({\n      message: \"index example\",\n    });\n  }\n\n  // Parameters can be written in the same way as for express router\n  @Get(\"/:id\")\n  async show(req: Request, res: Response, _next: NextFunction) {\n    res.json({\n      params: req.params,\n      message: \"show example\",\n    });\n  }\n\n  @Post(\"/\")\n  async create(req: Request, res: Response, _next: NextFunction) {\n    res.json({\n      body: req.body,\n      message: \"create example\",\n    });\n  }\n\n  @Patch(\"/:id\")\n  async update(req: Request, res: Response, _next: NextFunction) {\n    res.json({\n      params: req.params,\n      body: req.body,\n      message: \"update example\",\n    });\n  }\n\n  @Delete(\"/:id\")\n  async delete(req: Request, res: Response, _next: NextFunction) {\n    res.json({\n      params: req.params,\n      message: \"delete example\",\n    });\n  }\n}\n```\n\n2. Register the controller with express router.\n\n```ts\nimport * as express from \"express\";\nimport { registerControllers } from \"@anycloud/express-controller\";\n\nconst app = express();\nconst router = express.Router();\n\nregisterControllers({ router, controllers: [UserController] });\n\napp.use(router);\napp.listen();\n```\n","readmeFilename":"README.md","description":"[![npm version](https://badge.fury.io/js/@anycloud%2Fexpress-controller.svg)](https://badge.fury.io/js/@anycloud%2Fexpress-controller)"}