{"_id":"t-controllers","_rev":"8-6fd72a3a16187af2213c1b4b3c813594","name":"t-controllers","description":"Allows to use controllers with express.js in Typescript","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.2":{"name":"t-controllers","version":"0.0.2","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.2","_shasum":"bd633d972997bf0399766d79ee85aa25b9d8c4de","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"bd633d972997bf0399766d79ee85aa25b9d8c4de","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.2.tgz","integrity":"sha512-OPfktPpzzmgfFgDWEPiEKxYAy9DfzrtshTkpZoEsiKzfLLv5U06QIS0kui97op3x2t0/hBFAGbmhw/j0uQu6WQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZx1J5R24btMZU0FIyB3ukp4JZZZ/SLxA0Gdi+I6mhCwIgXKQqKtzmeBScSWh51YzclEvyaIHTwONRiQ4VST4LFbQ="}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]},"0.0.3":{"name":"t-controllers","version":"0.0.3","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.3","_shasum":"f956c0c88dcdab8d6caf414da93757556a93abce","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"f956c0c88dcdab8d6caf414da93757556a93abce","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.3.tgz","integrity":"sha512-iZV7VuhUXY55trycn07+zJ/wb1WcraHvs+LfbEHM1VidQOoYrKEhDnQl2dx9f9o2Rd3T0QQVz4WlSy58c0kwFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH0kwm7o+dU+MNnlfNwlATPvHbr/v0XXyD97g8qngy+gCICivTKvHAjrE2bRWoisb7w59yPbNDljAkMSMu9Ua2fKW"}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]},"0.0.4":{"name":"t-controllers","version":"0.0.4","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.4","_shasum":"45e781a9b8af5e67d1b19070315a768a37995f5e","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"45e781a9b8af5e67d1b19070315a768a37995f5e","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.4.tgz","integrity":"sha512-b+3KUzx/MzPRXkN+CwBxVCj4nW/JvvgrDD3V4MlqZM84phktm5ruUQJj9qH17g0+6yrJXC0IcndjD9JF8Vg8OA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKlpQl7af33aZAjUULgQtlRiu7NGWcB0f4rlOkNLGEjAiBZrou1RA/Se3noJdzRTRCCXnh9ujPC0eblrzbrwJm4Og=="}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]},"0.0.5":{"name":"t-controllers","version":"0.0.5","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.5","_shasum":"f3d6593a01df003685cfbcd6e6ba4c4ea7c61154","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"f3d6593a01df003685cfbcd6e6ba4c4ea7c61154","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.5.tgz","integrity":"sha512-WJmxlIn4+eWTuCu0T66V21bZNcMh8rtWZeItKF6Qj6Nb3s01txRM9d258yxTvYFPuIAwBm/UewePtL4z6BXvOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEOUqllbCk43Ist6/hOOHWo6fri8pWAvwmCU02mh7KxAiBXh7aaISU5IyFzJoTohOyu2JpDnahtiytZqIszbaryWQ=="}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]},"0.0.6":{"name":"t-controllers","version":"0.0.6","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.6","_shasum":"12d15899dc500c7191e701aaea9cd08f6a384794","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"12d15899dc500c7191e701aaea9cd08f6a384794","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.6.tgz","integrity":"sha512-hgF00oBZp+tSSP9UTYnG3wOslOfHAg/m97rsCc12ZV++UMs90WhoCu4KDs70N7tdma/bB3NGIbHzFIJQ3r1ZIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdR2SYZqoV9NPzvo1cRuS5jHFof6dfypQvSUrGoHgdFAIhAISrbtX8MIRlEdd5kfPvHq/ZXXS9XL4o8Zqgv+SoKFz4"}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]},"0.0.7":{"name":"t-controllers","version":"0.0.7","description":"Allows to use controllers with express.js in Typescript","license":"Apache-2.0","author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"tags":["express","typescript","typescript-express","express-controllers","controllers"],"typings":"./t-controllers.d.ts","typescript":{"definition":"t-controllers.d.ts"},"dependencies":{"reflect-metadata":"0.1.2","express":"^4.12.3","fs":"0.0.2","path":"^0.11.14"},"devDependencies":{"body-parser":"^1.12.3","del":"^2.0.2","dts-generator":"^1.5.0","gulp":"^3.9.0","gulp-plumber":"^1.0.1","gulp-shell":"^0.5.0","gulp-typescript":"^2.9.0","run-sequence":"^1.1.4","tsd":"^0.6.4","typescript":"^1.6.2"},"scripts":{"postversion":"gulp package"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","_id":"t-controllers@0.0.7","_shasum":"51f422e6bc9c1015b42551a159ad3c1097048f4e","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"pleerock","email":"zarrhost@gmail.com"},"dist":{"shasum":"51f422e6bc9c1015b42551a159ad3c1097048f4e","tarball":"https://registry.npmjs.org/t-controllers/-/t-controllers-0.0.7.tgz","integrity":"sha512-4sLirWa658AC42HGo1HwHCkH7JXTTYWwviqTY6EKIJi8ZxSrbnJI08lRW9oQLjoVdM7Ufcvi4yFJwOM+q2XD7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVK4+x01qbqleWU/F4jaSem0duJUcbXi3xslWHPHSXLQIgHL94BQ2KC3O3kJeXHyUm9ewpTl6LiLSy2aNhyFMaANo="}]},"maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}]}},"readme":"# Type Controllers\r\n\r\nAllows to create controllers classes that handle requests.\r\nSimple wrapper over express.js routing.\r\n\r\n## Usage\r\n\r\nSimply create a class and put annotations on its methods:\r\n\r\n```typescript\r\nimport {Request, Response} from \"express\";\r\nimport {Controller, Get, Post, Put, Patch, Delete} from \"t-controllers/Annotations\";\r\n\r\n@Controller()\r\nexport class BlogController {\r\n\r\n    @Get('/blogs')\r\n    getAll(request: Request, response: Response) {\r\n        // use request and response like you always do with express.js ...\r\n    }\r\n\r\n    @Get('/blogs/:id')\r\n    getOne(request: Request, response: Response) {\r\n    }\r\n\r\n    @Post('/blogs')\r\n    post(request: Request, response: Response) {\r\n    }\r\n\r\n    @Put('/blogs/:id')\r\n    put(request: Request, response: Response) {\r\n    }\r\n\r\n    @Patch('/blogs/:id')\r\n    patch(request: Request, response: Response) {\r\n    }\r\n\r\n    @Delete('/blogs/:id')\r\n    remove(request: Request, response: Response) {\r\n    }\r\n\r\n}\r\n\r\n// and you need to require controllers and register actions in express app:\r\n\r\nimport {defaultActionRegistry} from \"t-controllers/ActionRegistry\";\r\n\r\nrequire('./BlogController'); // require your controller\r\nlet app = express(); // create express application\r\napp.use(bodyParser.json()); // setup body parser\r\ndefaultActionRegistry.registerActions(app); // register actions in the app\r\napp.listen(3000); // run express app\r\n```\r\n\r\nIf you want to include the directory with controllers do this:\r\n\r\n```typescript\r\nimport {defaultActionRegistry} from \"t-controllers/ActionRegistry\";\r\nimport {ControllerUtils} from \"t-controllers/ControllerUtils\";\r\n\r\nControllerUtils.requireAll([__dirname + '/controllers']); // includes all controllers\r\nlet app = express(); // create express application\r\napp.use(bodyParser.json()); // setup body parser\r\ndefaultActionRegistry.registerActions(app); // register actions in the app\r\napp.listen(3000); // run express app\r\n```\r\n\r\nYou can also return result right from the controller, and this result will be pushed via response.send()\r\n\r\n```typescript\r\n\r\n@Get('/blogs')\r\ngetAll(request: Request, response: Response) {\r\n    return [\r\n        { id: 1, name: 'first blog' },\r\n        { id: 2, name: 'second blog' }\r\n    ];\r\n}\r\n\r\n// its the same as:\r\n// request.send([{ id: 1, name: 'first blog' }, { id: 2, name: 'second blog' }]);\r\n\r\n```\r\n\r\nYou can also return a Promise (object that contains .then method), and its result will be pushed to response.send after\r\npromise is resolved.\r\n\r\n```typescript\r\n\r\n@Get('/blogs')\r\ngetAll(request: Request, response: Response) {\r\n    return SomeService.loadData();\r\n}\r\n\r\n// its the same as SomeService.loadData().then(\r\n//     result => request.send(result),\r\n//     error  => { request.status(500); request.send(error) }\r\n// );\r\n\r\n```\r\n\r\nYou can inject some common express params you may need right into the controller action method:\r\n\r\n```typescript\r\n\r\n@Get('/blogs/:id')\r\ngetAll( request: Request,\r\n        response: Response,\r\n        @Body() requestBody: any,\r\n        @Param('id') id: number,\r\n        @QueryParam('name') name: string) {\r\n    // now you can use your parameters\r\n}\r\n\r\n// its the same as: \r\n// let requestBody = response.body;\r\n// let id = response.params.id;\r\n// let name = response.query.name; \r\n\r\n```\r\n\r\nTake a look on samples in `./sample` for more examples of usages.\r\n\r\n## Todos\r\n\r\n* cover with tests\r\n* integration with other frameworks (other then express.js) can be easily added, so PRs are welcomed\r\n","maintainers":[{"name":"pleerock","email":"zarrhost@gmail.com"}],"time":{"modified":"2022-06-27T03:23:14.626Z","created":"2015-10-15T16:27:48.806Z","0.0.2":"2015-10-15T16:27:48.806Z","0.0.3":"2015-10-17T10:26:26.775Z","0.0.4":"2015-10-17T15:06:06.160Z","0.0.5":"2015-10-17T15:09:56.513Z","0.0.6":"2015-10-17T15:32:49.913Z","0.0.7":"2015-10-27T12:50:55.938Z"},"homepage":"https://github.com/PLEEROCK/t-controllers#readme","repository":{"type":"git","url":"git+https://github.com/PLEEROCK/t-controllers.git"},"author":{"name":"Umed Khudoiberdiev","email":"zarrhost@gmail.com"},"bugs":{"url":"https://github.com/PLEEROCK/t-controllers/issues"},"license":"Apache-2.0","readmeFilename":"README.md"}