{"_id":"@brarsanmol/express-decorators","_rev":"5-d0b5f8382dfc8cf8abad857886578a2d","name":"@brarsanmol/express-decorators","dist-tags":{"latest":"2.7.3"},"versions":{"2.6.1":{"name":"@brarsanmol/express-decorators","version":"2.6.1","description":"node decorators - decorators for express library","main":"lib/index.js","types":"lib/index.d.ts","peerDependencies":{"express":">=4.16.3"},"devDependencies":{"@types/express":">=4.16.0","express":">=4.16.3","typescript":">=2.9.2"},"keywords":["nodejs","express","node decorators","typescript"],"author":{"name":"Serhii Sol"},"contributors":[{"name":"Anmol Brar","email":"hey@anmolbrar.ca","url":"https://anmolbrar.ca"}],"license":"MIT","bugs":{"url":"https://github.com/brarsanmol/node-decorators/issues"},"engines":{"node":">=7.1.0"},"repository":{"type":"git","url":"git+https://github.com/brarsanmol/node-decorators.git"},"scripts":{"compile":"tsc"},"dependencies":{"tsyringe":"^4.7.0"},"gitHead":"3083e814dec3b49101b7a5e40f9368d2f9c11895","homepage":"https://github.com/brarsanmol/node-decorators#readme","_id":"@brarsanmol/express-decorators@2.6.1","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-rUMXiHGq+8P2cMuC4x3k86OMgPKnqihyG/KLpLtDvMReqo5d1YY9c08kZ5MHHwSNAxMP6TUdJkv1R4gTuwxDrg==","shasum":"c286a3cb6a04ad13be3cb560adf33d9bb5fd9f9d","tarball":"https://registry.npmjs.org/@brarsanmol/express-decorators/-/express-decorators-2.6.1.tgz","fileCount":20,"unpackedSize":62129,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvW99/VI42LFSfwby3uwwqIqlFJ/ohggHQ4+GXZeV0cAiEAt1EfCWbF4YePqWwiVlx22yqyhJ4GCFRIL3dzyO4Qr4Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhuj3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrz2xAAj2USSOfuNCJVMoqPrXlD9DrGasB0TZ1pwaCYDpUhS/T/DQAS\r\nM367ASnnrL51ZeuYcRI42M22vxOeIeawTDtQITbPR4CePRP2bCRv6a4OQ7lP\r\nB+8zWU+lMNp7kR2g4MxsQn3gdiLIQwIe19Hknyn8/HUDtSBwJ9nF1ApNUbLx\r\nmbhFA3MLYm3QNjnK8CFKmCtfn+ZtkdxaslES/OUIiUWA8JgIcJC4halE8a4a\r\nIJfM8UEuU+Hgayut+Ct4rYAw/2ZUW0YLKd05R20MbpVjhbhF66P59tTlKE4e\r\ndGicCUlkbO09BZVSD9n1Q86o9ymrhN4BZlP0IFgK9VO13Y2lgmIkQs+u08fl\r\na1WJXIYQcEAOKVar9z+KzQogOYFblzAU+h57WuuPQMuBcSS+GcgYhabZrPWw\r\nLxKwkoLIVK+N+N44KJCdui9rM6I0M4OWhAhBg8q7HMpZ7UFM0zejMm/I906g\r\nwPIflf1RMdWBInjZ+xkf8Ur/g88hL07WblfyCosBw3ksrML2f2wetiJhqgRo\r\nPmgQW+sevjXBqJOK+UTdnFz+oriwhM5LIF+p/EF+ZbxHaVGf0ZfNgn0n3A+M\r\nT0DkexWl/7FZ+QYY8Xe1fF6DDZ1qAVzsoZNfPl3xGH2ORC02AK727Xmj+Bqt\r\nLSrwnvg93HLxANvs5P1NXtbZSMAldh7RzfA=\r\n=1jL/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"brarsanmol","email":"hey@anmolbrar.ca"},"directories":{},"maintainers":[{"name":"brarsanmol","email":"hey@anmolbrar.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-decorators_2.6.1_1669785847176_0.8162054384137514"},"_hasShrinkwrap":false},"2.7.1":{"name":"@brarsanmol/express-decorators","version":"2.7.1","description":"node decorators - decorators for express library","main":"lib/index.js","types":"lib/index.d.ts","peerDependencies":{"express":">=4.16.3"},"devDependencies":{"@types/express":">=4.16.0","express":">=4.16.3","typescript":">=2.9.2"},"keywords":["nodejs","express","node decorators","typescript"],"author":{"name":"Serhii Sol"},"contributors":[{"name":"Anmol Brar","email":"hey@anmolbrar.ca","url":"https://anmolbrar.ca"}],"license":"MIT","bugs":{"url":"https://github.com/brarsanmol/node-decorators/issues"},"engines":{"node":">=7.1.0"},"repository":{"type":"git","url":"git+https://github.com/brarsanmol/node-decorators.git"},"scripts":{"compile":"tsc"},"dependencies":{"tsyringe":"^4.7.0"},"gitHead":"06788439fca538a9dce27b47baf0be74a308e89c","homepage":"https://github.com/brarsanmol/node-decorators#readme","_id":"@brarsanmol/express-decorators@2.7.1","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-Jy962z5NeI/ldF84l/bg0Vwp1L/+oN0gvESFVsCvsAEMq4RpEz0RyL3TfO7u5RGGYGdxLYs9vyJXhA7mhSYPmg==","shasum":"08d818e75056a055ecf7dc4ad82c2277d34e7774","tarball":"https://registry.npmjs.org/@brarsanmol/express-decorators/-/express-decorators-2.7.1.tgz","fileCount":20,"unpackedSize":63233,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+hehfK8+0Wwn7Jfdw7oWpeCruq0rwhqNLTkcxf2mroQIhAI5kNrHl4ken3wbgA92mE6SQzoNUPAjD3rXNc8fwVf+/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjk+L9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhZg/5AHhLhggZzHTB/pgItrgM5VoZl50KXJWacVqWqKwDb5j2Bp1+\r\nPLM7o+dSuhc71VAE9+by+0roDyEqRT3n0ZwLTg1cXgHBstGydmjfWdnpd2b1\r\nd6pYct5tLGTw050bmpIsCXujd7n7kY+9vymw4wgFBzc2p5LZEqqlna8G5+p+\r\nvoLT7elK1ZOpQD0dCuu8gRAiRYcBfd+61mGchCMiR+91QETFETGMPmc1UYrq\r\nYm3/Y727SootaQl3kfVg8E1niBxiCj7cbmWgAMb1cRZ72XZfVDzrueezyyts\r\nXV/H9aijj7E/lPN9Umxpsgyjl5HZfMdlGewj6LryhFOvtcNsvIVoRSL7K7ZF\r\nHB4plH+KjUHEvXOWlSIHvuctnvEzOHkoYWuXa+ys9Gfp0jxO61Age1/KX8Ct\r\nem0EsrOKla/ggQlgxIxkaJGhbh9y+S7Xbj585xmpENUTexSCgtfEt/Leb6BU\r\nB2DLRchUECCcEG1zVxev4Q0HORGYCq6Qv1oRnzPiuSF/dV9+ROPFKk6Zr2vU\r\nKr5FkfIRw/eUnWFqLy4Fuf/Sgx6zPoYANUGYZ5pSvLM7CPDj9R1Z6Dc69eOi\r\nKQW1OWoLpZ5qCfHCAUYz9l1reUGDGqR+9l9qRUeZdM93bp42PLLxxNqniub0\r\nTerkIFsl87sY++FgqfFvF7lbmOEc3cfpCSw=\r\n=ErBH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"brarsanmol","email":"hey@anmolbrar.ca"},"directories":{},"maintainers":[{"name":"brarsanmol","email":"hey@anmolbrar.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-decorators_2.7.1_1670636284790_0.7707763801283753"},"_hasShrinkwrap":false},"2.7.2":{"name":"@brarsanmol/express-decorators","version":"2.7.2","description":"node decorators - decorators for express library","main":"lib/index.js","types":"lib/index.d.ts","peerDependencies":{"express":">=4.16.3"},"devDependencies":{"@types/express":">=4.16.0","express":">=4.16.3","typescript":">=2.9.2"},"keywords":["nodejs","express","node decorators","typescript"],"author":{"name":"Serhii Sol"},"contributors":[{"name":"Anmol Brar","email":"hey@anmolbrar.ca","url":"https://anmolbrar.ca"}],"license":"MIT","bugs":{"url":"https://github.com/brarsanmol/node-decorators/issues"},"engines":{"node":">=7.1.0"},"repository":{"type":"git","url":"git+https://github.com/brarsanmol/node-decorators.git"},"scripts":{"compile":"tsc"},"dependencies":{"tsyringe":"^4.7.0"},"gitHead":"d2df7064967f3193b5b0937dc9de3bb9df98d3db","homepage":"https://github.com/brarsanmol/node-decorators#readme","_id":"@brarsanmol/express-decorators@2.7.2","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-D2rOhGSPCVZtYtkfvF3dQFH2qe6yKVWEHPL5E+YG0Gbd7i8WOIMjJmG/KT4OWiFcsSmtJK0kS6/nPW/AvaQTYA==","shasum":"538ba2d25d07940c6191892442214a0d19b837de","tarball":"https://registry.npmjs.org/@brarsanmol/express-decorators/-/express-decorators-2.7.2.tgz","fileCount":20,"unpackedSize":63233,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm55MchDV9GgkN263PO64m30UZAwNq0a7pdfeP3+w4dAIhAKMrN7aPz8wb1QByov22tiqugZA7q5rgxzGmxdSI+0ru"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjk+arACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoG0Q/+Ji4QpcmyTOVG+I7Qnbv+OuOBIhLm8W3URnJgXEckI7m9nPWh\r\nPxLd0HvQpsLA6wrS8KGgV+hz6E24WuxbRiKWFum4Y860oJBNaEIw6CBL/3FM\r\ngeEvsQKBuEteEjkx33s2zP9CeVCpyVyNJnyyIS2A+tNuNlRxKk6Knxc/OIek\r\nHhaSvnb4AtjZ16ANTo+Dl7zwaaVjisWBDjIR9AvttONtfS8L0nQAf/J6XdkJ\r\nHoEg5H7yAXpWUfNsxvDxF+cXQbwPJd7LW7fVOkgZ8Gqy1EbIfOnABtOfLpcw\r\nyQJdkSy4rguK3SoBFL7CfLjmECPa3bujtDFI6+75redD8IDnCrsPhIrHz6wi\r\nWbqzH7P7W7XMgkTnYboA5nwg/m8oB1l6qnnh/kF+ndjOr4slic6fuuK2F+NJ\r\nr9okWt2Ziqr/VNwxuHibuRemDdolP40PlrIl/aBLF77r5LnUyP2JYMxRl57t\r\ngWR0Ku2WFCW7EKOBBfmINEdh+cIJbcB7FcBUehW7VffSEGHYHd2cawSd2UJF\r\nAIDNnZoBsnuDDe9/7GBXzyngPUL9uKrv2l4l2HHsh/YbGTV8UZ4X7Rmx+EOa\r\nLhcWWU/NkeJG9zMkKz95mZGXyeBdpZs+2t1eRhR1nL+jL2bxCg+P8y67BWWe\r\ny9p6/ItcW9HB5M/TawXhlDrOpzYNRwAj34k=\r\n=XNsg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"brarsanmol","email":"hey@anmolbrar.ca"},"directories":{},"maintainers":[{"name":"brarsanmol","email":"hey@anmolbrar.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-decorators_2.7.2_1670637227099_0.22434836556575233"},"_hasShrinkwrap":false},"2.7.3":{"name":"@brarsanmol/express-decorators","version":"2.7.3","description":"node decorators - decorators for express library","main":"lib/index.js","types":"lib/index.d.ts","peerDependencies":{"express":">=4.16.3"},"devDependencies":{"@types/express":">=4.16.0","express":">=4.16.3","typescript":">=2.9.2"},"keywords":["nodejs","express","node decorators","typescript"],"author":{"name":"Serhii Sol"},"contributors":[{"name":"Anmol Brar","email":"hey@anmolbrar.ca","url":"https://anmolbrar.ca"}],"license":"MIT","bugs":{"url":"https://github.com/brarsanmol/node-decorators/issues"},"engines":{"node":">=7.1.0"},"repository":{"type":"git","url":"git+https://github.com/brarsanmol/node-decorators.git"},"scripts":{"compile":"tsc"},"dependencies":{"tsyringe":"^4.7.0"},"gitHead":"d2df7064967f3193b5b0937dc9de3bb9df98d3db","homepage":"https://github.com/brarsanmol/node-decorators#readme","_id":"@brarsanmol/express-decorators@2.7.3","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-K18X3b2uafOhUXdauthhPi69Mj8F2Pqy3tpvbnV5EL7cIdqq0WZ+GS7HlA7MBqzaAdF6MUnNwM81cOHxuncijQ==","shasum":"7c54de0f37f7c8bc29db0c7b782456d1756fbd46","tarball":"https://registry.npmjs.org/@brarsanmol/express-decorators/-/express-decorators-2.7.3.tgz","fileCount":20,"unpackedSize":63292,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErA0K6upLhzqOq4TzoC35I0NjmofpdH6ZsVV4vGBCDYAiBE8mSO6okN8BlnfhKKLIhkC1aV1TXLCEMnua0LIUdRBA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjk+f4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnIw/+LRi5T2pxRCjIiSCiQOqgDvqwDixJ7SvuTWYsFmaIJmvzMFxp\r\nIXjGJtuqOMHBVul6NoeR3eD83ujjMO35y5qcEFCwXjOixtwMiqO9ZzeQ6i1k\r\nRAOeetmLdd1NJmb1se8zmcCZP/ppiSa8uDEc1Hjhi8HeK6spj1fd/0CQ2T8s\r\nu5NBoiObV5PI/786Zxiw3g/Vu2F/P8onWcmDQ2EQn6czYzucS2hsr8dPkSuJ\r\nGniue4u2XTK3VKPSOLpXaSXNWJt093a9la4UH11zT4Tff3TRqSYsz3iZL1ap\r\n7PVwf+JT4OJpvr0wVOhECLHQ/1F9ajb7eQfoVlwQOMFzHqZLed/cNsOo6csS\r\nW8AcnxHLzjbCYloSCx1BDpknXeIxsbkkC74txbpttT5FdTHAqeuFjMlLvhOV\r\nI90/cfF7wVsq9pRKMFZlZnUqrvq4YdyMJ24olIfkFfWkEgP8uIkOuZMlQBHk\r\n2NAvdz7ytKryJkMEFQI8rV3NgUIUKCds58y6I2y4bUTFg+WbXjrLGTPD8D0H\r\n32cWdwY9Fe/BKLC+cu1sIXfZ3bygaMNNUj4+PlD+eo1JdXCP0cIsDLVoKWNj\r\nPPO5e6MPe1URit8gL+HgGOb6tEsZHYI2MqA+jZDZK/B8OFez+rHUQdN5O7VA\r\nxAfRxou+rY5b55vD9HagNd1sm7jBbEeKZ4k=\r\n=xuX5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"brarsanmol","email":"hey@anmolbrar.ca"},"directories":{},"maintainers":[{"name":"brarsanmol","email":"hey@anmolbrar.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-decorators_2.7.3_1670637560489_0.2450187360360101"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-30T05:24:07.100Z","2.6.1":"2022-11-30T05:24:07.375Z","modified":"2022-12-10T01:59:20.785Z","2.7.0":"2022-12-09T23:58:54.904Z","2.7.1":"2022-12-10T01:38:04.966Z","2.7.2":"2022-12-10T01:53:47.353Z","2.7.3":"2022-12-10T01:59:20.696Z"},"maintainers":[{"name":"brarsanmol","email":"hey@anmolbrar.ca"}],"description":"node decorators - decorators for express library","homepage":"https://github.com/brarsanmol/node-decorators#readme","keywords":["nodejs","express","node decorators","typescript"],"repository":{"type":"git","url":"git+https://github.com/brarsanmol/node-decorators.git"},"contributors":[{"name":"Anmol Brar","email":"hey@anmolbrar.ca","url":"https://anmolbrar.ca"}],"author":{"name":"Serhii Sol"},"bugs":{"url":"https://github.com/brarsanmol/node-decorators/issues"},"license":"MIT","readme":"![Node Decorators](https://github.com/serhiisol/node-decorators/blob/master/decorators.png?raw=true)\n\nProject implements decorators for modern tools for NodeJS like:\n- [ExpressJS]\n\n### Installation\n```\nnpm install @decorators/express --save\n```\n\n### API\n#### Functions\n* **attachControllers(app: Express.Application | Express.Router, controllers: Controller[])** - attach controllers to express application\n\n#### Decorators\n##### Class\n* **@Controller(baseUrl: string, middleware?: Middleware[])** - Registers controller for base url\n\n##### Method\n* **@All(url: string, middleware?: Middleware[])** - Registers all routes\n* **@Get(url: string, middleware?: Middleware[])** - Registers get route\n* **@Post(url: string, middleware?: Middleware[])** - Registers post route\n* **@Put(url: string, middleware?: Middleware[])** - Registers put route\n* **@Delete(url: string, middleware?: Middleware[])** - Registers delete route\n* **@Patch(url: string, middleware?: Middleware[])** - Registers patch route\n* **@Options(url: string, middleware?: Middleware[])** - Registers options route\n* **@Head(url: string, middleware?: Middleware[])** - Registers head route\n\nwhere middleware is the class that implements `Middleware` interface.\n\nTo use class, import `Middleware` interface and implement it, like so:\n```typescript\nimport { Middleware } from '@decorators/express';\n\nclass UserMiddleware implements Middleware {\n  public use(request: Request, response: Response, next: NextFunction): void {\n    next();\n  }\n}\n```\n\n##### Parameter\n* **@Request(property?: string)** - Returns express req object or any other object, if name was specified\n* **@Response()** - Returns express res object\n* **@Next()** - Returns express next function\n* **@Params(param?: string)** - Express req.params object or single param, if param name was specified\n* **@Query(param?: string)** - Express req.query object or single query param, if query param name was specified\n* **@Body(param?: string)** - Express req.body object or single body param, if body param name was specified\n* **@Headers(property?: string)** - Express req.headers object or single headers param, if headers param name was specified\n* **@Cookies(param?: string)** - Express req.body object or single cookies param, if cookies param name was specified\n\n#### Error middleware\nTo add error middleware, that handles unhandled errors simply implement `ErrorMiddleware` interface and provide it using `ERROR_MIDDLEWARE` token, like so:\n\n```typescript\nimport { ErrorMiddleware, ERROR_MIDDLEWARE } from '@decorators/express';\n\n@Injectable()\nclass ServerErrorMiddleware implements ErrorMiddleware {\n  public use(error: Error, request: Request, response: Response, next: NextFunction) {\n    next();\n  }\n}\n\nContainer.provide([\n  { provide: ERROR_MIDDLEWARE, useClass: ServerErrorMiddleware }\n]);\n```\n\n#### Dependency injection\nThis module supports dependency injection provided by `@decorators/di` module. For example, see the full example below.\n\n### Example Express Application and Controller:\n```typescript\nimport {\n  Response, Params, Controller, Get,\n  attachControllers, Middleware\n} from '@decorators/express';\n\n@Controller('/')\nclass UsersController {\n\n  constructor(private userService: UserService) {}\n\n  @Get('/users/:id')\n  getData(@Response() res, @Params('id') id: string) {\n    res.send(this.userService.findById(id));\n  }\n}\n\nlet app = express();\nattachControllers(app, [UsersController]);\n\napp.listen(3000);\n```\n\nYou can also attach controllers to express.Router instance. This is useful when you want to namespace all of the routes with a prefix:\n\n```\nimport { attachControllers } from '@decorators/express';\n\nconst apiRouter = express.Router();\nattachControllers(apiRouter, [UsersController]);\n\napp.use('/v1/api', apiRouter);\n```\n\n[ExpressJS]:http://expressjs.com\n","readmeFilename":"README.md"}