{"_id":"@alterior/core","_rev":"31-3b968435b93b4b367388ee6bd1899bac","name":"@alterior/core","description":"An Express-based Typescript MVC framework with decorators and dependency injection.","dist-tags":{"latest":"2.0.3","beta":"2.0.0-b1"},"versions":{"0.0.1":{"name":"@alterior/core","version":"0.0.1","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/rezonant/alterior-core.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha **/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","body-parser":"^1.15.2","connect-mongo":"^1.3.2","express":"^4.14.0","express-fileupload":"0.0.5","express-session":"^1.14.1","mkdirp":"^0.5.1","mongodb":"^2.2.8","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"5c1bd546172e8f87a8fb06c1b16daa936a952e28","bugs":{"url":"https://github.com/rezonant/alterior-core/issues"},"homepage":"https://github.com/rezonant/alterior-core#readme","_id":"@alterior/core@0.0.1","_shasum":"eff914463fc9d7099a095da358f6cbbdbf072f4f","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"eff914463fc9d7099a095da358f6cbbdbf072f4f","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.1.tgz","integrity":"sha512-PEwwYNTs1N8H3LAn8KGNZ6USe0M0Qwux9+n0Z646Do7w2oeHsobSJiHJIFC2AO6hrU8pKRVvNftBLX8QKPtLbA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGW+4XCn2JmjlT4tGFwaKeksEVr2HWV9v7OViN4Pzp1PAiA+5QjE2QD5g055BiSMHqTLTPpT6njkXC9Hnb6NkGmxBQ=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/core-0.0.1.tgz_1474442357141_0.39508514595218003"},"directories":{}},"0.0.3":{"name":"@alterior/core","version":"0.0.3","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha **/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","connect-mongo":"^1.3.2","express":"^4.14.0","express-fileupload":"0.0.5","express-session":"^1.14.1","mkdirp":"^0.5.1","mongodb":"^2.2.8","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"c4ff950bebf3420a98f343f96fecd7ed74342c58","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.3","_shasum":"da660596302c1c6b67cf2e20eec5dbfc33d57f41","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"da660596302c1c6b67cf2e20eec5dbfc33d57f41","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.3.tgz","integrity":"sha512-o/AbF8Fb0AnlKiv3YOV7Ed58oKjP0g3eyf+WtbqirQIPTYpD7I1S42ju4yumScFxhglvwFylC4e0wxGSmpYibQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgFWAVs7JYMljDRXKK1E00RzUn0bIoNE/p4USXLjxn/AiAqVv//HFBZnY8hZ17nEaKvRaEFpohXXceyf/msLuUAoQ=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.3.tgz_1474521663152_0.5303133281413466"},"directories":{}},"0.0.4":{"name":"@alterior/core","version":"0.0.4","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha **/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","connect-mongo":"^1.3.2","express":"^4.14.0","express-fileupload":"0.0.5","express-session":"^1.14.1","mkdirp":"^0.5.1","mongodb":"^2.2.8","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"4af06e29f2a66d83838aec5943d58ea9481d311b","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.4","_shasum":"1f2c17e9aed91df42298ee9958c32a75e9cbbfc1","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"1f2c17e9aed91df42298ee9958c32a75e9cbbfc1","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.4.tgz","integrity":"sha512-wbpWVaHuO/UhZZs8h3GDKuVY7W/1TqxbnF5VbV0/7EUswNl/UynBoog3J/bQEdT7Is6T6jDtGfLBjQo+lm5e6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFVxBc0SkKy3K8awSqdfvOO/hgkMYWxlcaCzwfjvHIVwIgG+IZ5jZUOeKUaA8AOXlUWCMBcK1QiVZMhBqTy066XqY="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/core-0.0.4.tgz_1474523521395_0.656272508436814"},"directories":{}},"0.0.5":{"name":"@alterior/core","version":"0.0.5","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha **/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","connect-mongo":"^1.3.2","express":"^4.14.0","express-fileupload":"0.0.5","express-session":"^1.14.1","mkdirp":"^0.5.1","mongodb":"^2.2.8","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"ff5e57a210c7c7ca408c633c90aa6eb5eaf1aa27","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.5","_shasum":"0dcd8c684dd463ecc5f06f9076aa9f5e8584ddc1","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"0dcd8c684dd463ecc5f06f9076aa9f5e8584ddc1","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.5.tgz","integrity":"sha512-Im3y9eqg6e5E6pYJHZi+FjF9aADdzg6LDGJTmg9cocZ7BmhoHvOvH2LDiNdIlu4J8OYKlOYEfoCTiHE0AKL4eA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFp9fBRtqPDxmleIGOhAoEad8ANakks9GcrnBfGOzLb1AiEAq6quF9rZihAQD1VcYo4ovGan4iZdumxesupGNMsp2g8="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.5.tgz_1474525311154_0.8489013025537133"},"directories":{}},"0.0.6":{"name":"@alterior/core","version":"0.0.6","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha **/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","connect-mongo":"^1.3.2","express":"^4.14.0","express-fileupload":"0.0.5","express-session":"^1.14.1","mkdirp":"^0.5.1","mongodb":"^2.2.8","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"3ae90b05047a7ef927282db2ffecfd4804f44dfe","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.6","_shasum":"ee2f6b6e3ebf771d5374dc759d70a3ee5379d46a","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"ee2f6b6e3ebf771d5374dc759d70a3ee5379d46a","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.6.tgz","integrity":"sha512-NvvZA8jJTBGbpc+kMOUmF1ouPXRXrrQwZMQ7RWJl+mcAzBCjU4e1GRY4FRihvlemjl4+Akq4Hbx0TjfVH+5qAQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeTTvOxiEyGshWMokr5W8PbIxFkCn67/w6YZwDhg1vkAIgPwabY7tkoVvahrvOJBEItAksQTKb3DWk08/ycM+H9fs="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/core-0.0.6.tgz_1474759317665_0.21068815817125142"},"directories":{}},"0.0.7":{"name":"@alterior/core","version":"0.0.7","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"8be765fc991e88e13c7892b826c44c284429f919","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.7","_shasum":"93636e414cee38db5f7e125ae9bba23eb3d4b0a7","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"93636e414cee38db5f7e125ae9bba23eb3d4b0a7","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.7.tgz","integrity":"sha512-Q3D8aXo6nCPdIJTsbZuRoc0F6ep3IMwk0UN6vZq/FQrR5eZpGU09WBA1RFerUg9WeX/HKcqbSzXV/awkqO/vHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfcyYTZWELBiqZ7JHC27x+peHm2FWEDU2GJRtw4FbTrwIhAMq9B/8pJbDdJJm1r4pumKKr2ZaVXyuxpH/qg6X1wRpz"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.7.tgz_1474787889828_0.5609903333242983"},"directories":{}},"0.0.8":{"name":"@alterior/core","version":"0.0.8","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"32efd1049e78e780bf8399055c5e2741f6d9fd00","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.8","_shasum":"cefc68e35ad6d5ce7976cd62f330a90873717445","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"cefc68e35ad6d5ce7976cd62f330a90873717445","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.8.tgz","integrity":"sha512-VBsDyzFPpScrE2jon1H+Ao+AZP6CcjZdLrNXqgG/pEAVU4wI5jho9chLrOWgAYuLk/B7NxDKWmbq36BTNXkb2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHPW7ldSJgqF1Js0PmtABii+6Bw5i2GuuMhLUB7J/hA+AiB/is4VenhOgrVKdqy99Luf8ROxoM1z/+eGOa1y0B/Krg=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/core-0.0.8.tgz_1474847526557_0.18139760219492018"},"directories":{}},"0.0.9":{"name":"@alterior/core","version":"0.0.9","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"5c7f3d4f861f4edca63e00ef07855c57d2e75b83","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.9","_shasum":"8a35205ce7ba5e82a91a4745d9a7b679af33a0ac","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"8a35205ce7ba5e82a91a4745d9a7b679af33a0ac","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.9.tgz","integrity":"sha512-9wr5vhMIvm5mJq/hJOEoEPo6uO4qgEQIvdA6OtHt9Sr4C2QwkiCh47fpeAcXwRwf3PStSY4zBSwRCKj6Hhy3BQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwcO7UftLGs+JutlbqH8kVuP/juS3u0W7w1LIX94BsJgIgYS+kKmkFo2b8kHNNkSFdwlbHdwiwyl6HyCS8tvWodKA="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.9.tgz_1475354940943_0.8523877484258264"},"directories":{}},"0.0.10":{"name":"@alterior/core","version":"0.0.10","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"c09b0107a81c9acc2fffe5280640fcde1dd4938c","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.10","_shasum":"ca1040357b82f2aa617a6f5379d9891e1857fb51","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"ca1040357b82f2aa617a6f5379d9891e1857fb51","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.10.tgz","integrity":"sha512-Yda5LZY4QsnS+ThzJin71+YFTEyeGGXnprQD43HK4iYsDQEp1+uFfhPt4GAmlqiNhvf5QidGLmunNDP6JXJZaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQ7PRKRyBrt1awoub8qjupHDGHUC5peuVGpsqPNYsU+AiBsqqUxyccYbaDGN7G9zaYRBLtomBvTfKpfWGAbDApRMA=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/core-0.0.10.tgz_1477111745738_0.3233124290127307"},"directories":{}},"0.0.11":{"name":"@alterior/core","version":"0.0.11","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"25c01d046e607c67a9cd8aadb302cad174dc429e","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.11","_shasum":"f6093b22b06fe433cca3475d907e5df97eb92f6a","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"f6093b22b06fe433cca3475d907e5df97eb92f6a","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.11.tgz","integrity":"sha512-3irJu5YO31sPkiKiYC5/6Y2FpM8AYsC5Q06kKQuZfWSJXEjMgSFdR11Y5scY1+3pwmSHRJ4jm4uu377AFWgETA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4popSoG6HM3vaT63wgShD08OceBli/pinAh5k55negAiEA9ddecizRVwQuJmOxFcivKaKM+iesLwl8V3swQTp5TUM="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/core-0.0.11.tgz_1477707952344_0.7195442486554384"},"directories":{}},"0.0.12":{"name":"@alterior/core","version":"0.0.12","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"ef02ba41e17ae92cb35a981d002c608055db3ebe","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.12","_shasum":"2729bee662edbcf8fed62d9540c3f8b9950c8e9e","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"2729bee662edbcf8fed62d9540c3f8b9950c8e9e","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.12.tgz","integrity":"sha512-HWCypxzSve4nsLXVJ19fbU3RVBBJ3zXpxvWmT+yC2S8A17MZhdSYrlQETrCaa9WP7VFPNYICb2ht5Er5e7RQQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvCGnKugub70hWmSGgfC2jPoSeIeMPxXUPkyT4vr8/UAiEA+uBTSn60IH/UQbsoe6KX0IhJSPKTEQLuVgS/0eduHko="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.12.tgz_1477708957085_0.32945808325894177"},"directories":{}},"0.0.14":{"name":"@alterior/core","version":"0.0.14","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"69cfa9c12574261ff6b16e0f8371bda67ffbf478","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.14","_shasum":"70fd116e2f0a6cdacbd0c83665c3f1430c0814e2","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"70fd116e2f0a6cdacbd0c83665c3f1430c0814e2","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.14.tgz","integrity":"sha512-ntHvKe+Kwbt1XtCivHs6oLlq55hnH9Pij6OZJjKFLomy1/Cf3keuT8wrYXQblGfpd7LJz+eSog/V1snl//fO+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+3WB1hcdKf1XPMPpyLN/S+CvYmRR0UoZJNM28bWLJBAiBP3vuf0oWo2tTA9igMYorvmluVtGdQ1neCsbP1XeuFkw=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/core-0.0.14.tgz_1477724846341_0.6958798211999238"},"directories":{}},"0.0.15":{"name":"@alterior/core","version":"0.0.15","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"dc12f7ad90e1662fe98335cbb539926627c55e67","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.15","_shasum":"f46e3b2e96f5bf693e443325de29ca86df8da66e","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"f46e3b2e96f5bf693e443325de29ca86df8da66e","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.15.tgz","integrity":"sha512-mvPfR6JshGp1fowaDyDPayp0xXVSrhovypYsjP5VdHOWPyh0LAAwttxGcnVkTPg7auod5gKpehlc+PFTBxA+Ww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD++1X4RGkdONxxlgkpSEkIQwHO8V3ZKNjZ5sdiE0htmwIgV5p8xq1v1jTYWP8CoUGCyeexPWpPuBbaXfxd+LL/1qE="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.15.tgz_1477724926183_0.2597232856787741"},"directories":{}},"0.0.16":{"name":"@alterior/core","version":"0.0.16","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"6844bb360962c11cffa83a0b7c5b905243e5d5a7","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.16","_shasum":"d48ecdfbf7a6dcf687117d4d2ff2a28c3470a308","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"d48ecdfbf7a6dcf687117d4d2ff2a28c3470a308","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.16.tgz","integrity":"sha512-JCEIPOg0cxWp+lqLp4GO+45zsP85St/QH6u6W1xXjvNbuG6l2+6hA4pkBW95zpKs7OTDJHIxyWeZBcaPR6Aimg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3cSU33JtMuVQw4L3X6809MCbOxfr911GhJ51T03YyXAiBCQEbYbKcPm5QoKnJexNn+4MC1IG4U/fit3wYVrzfnNw=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.16.tgz_1477725662106_0.4998608189634979"},"directories":{}},"0.0.23":{"name":"@alterior/core","version":"0.0.23","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"539d81fc663f847277c28d57b890df8716a9330c","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@0.0.23","_shasum":"01e14ec7edc45ab88a4f698ab0d0de9820cd0e7a","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"01e14ec7edc45ab88a4f698ab0d0de9820cd0e7a","tarball":"https://registry.npmjs.org/@alterior/core/-/core-0.0.23.tgz","integrity":"sha512-zcEhw1kYV93F1qJtLPJMrIGW5NKF6G8Yc6uCBArFt60nJxR0CRivDB1iinhX5iFgj/5a4ZKOiLdQVVi5Eo0BpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCpyGp5Qjez/UxuMALoDJCBv2lWDCRzh6DaNoltAxKHAIhAKWV/IIIy9ulA3BPhZkZ2uyuk4KHlfN/7A2xghsC1NFw"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-0.0.23.tgz_1478900033166_0.8929833767469972"},"directories":{}},"1.0.0":{"name":"@alterior/core","version":"1.0.0","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^1.8.10"},"gitHead":"f155e920ecdde2d33b7ed4de6d141db9e8ca1eea","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@1.0.0","_shasum":"e136b73dec7ea77d6c3f6cde9bbb5b08965532cf","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.5.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"e136b73dec7ea77d6c3f6cde9bbb5b08965532cf","tarball":"https://registry.npmjs.org/@alterior/core/-/core-1.0.0.tgz","integrity":"sha512-kJLI5u1Ne8Hb+e5QHuXQpjupKQiNOLGqRJhmICcOGTyA+Wc0p5kzVztQxHkfAZGcEhSx6J/vGQwa9BH+T6FL0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApyLP4taryyW53VsMNcJ1fLbbSB8tCjE5i/R+JyveShAiEAhnJxsyRU5tOmOtqygduuhaxvNaEmrwDQGZkSyd70Dmg="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-1.0.0.tgz_1481409853332_0.9723047665320337"},"directories":{}},"1.0.1":{"name":"@alterior/core","version":"1.0.1","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^2.0.0"},"gitHead":"07dcf56d015a828f89661f3751aa522e393bbec9","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@1.0.1","_shasum":"f8237726755306431d23f0dcbc8f90f35ee48950","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"f8237726755306431d23f0dcbc8f90f35ee48950","tarball":"https://registry.npmjs.org/@alterior/core/-/core-1.0.1.tgz","integrity":"sha512-uOwex8/SsKCSZOlkeTB0YEsXKdWIrtq5B1Wc7QOhXLas0Q9Z9gJANh6hPnqtD5Mmdep+3yy+ziyD4ZiJINmn3Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbkd9uRctOm7a8txcH8dlISCPyLNG1AHa67yEhY7IKwwIgEp7boJDfba5/XanzMlF7DaLGZouBkhmPrIVOn6K4RkQ="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-1.0.1.tgz_1482796938171_0.9932198030874133"},"directories":{}},"1.0.2":{"name":"@alterior/core","version":"1.0.2","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"tsc && node ./node_modules/mocha/bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","supertest":"^2.0.0","typescript":"^2.0.0"},"gitHead":"540c7cffabbe17a0e64536be9d5c8c2ec60baca0","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@1.0.2","_shasum":"9df24263922a97e385b841eab5f0361122bee824","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"shasum":"9df24263922a97e385b841eab5f0361122bee824","tarball":"https://registry.npmjs.org/@alterior/core/-/core-1.0.2.tgz","integrity":"sha512-Z7Y+kJ9658b7P0IAQ/j36yuYdXhazpNPbZ0NxzfIg9HGTAuvYwD4lftJ6HQT5MMQUZOrc59TttBHBahbGLy7xA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNH+hrCNRY3eaCfYN5vFMRTDEbEmT4N9TIShmpGzTXmgIhALDvzUjjFFaJYPy3fqvtvzq/eaGWRla5Jhx8OqmqTBLQ"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/core-1.0.2.tgz_1482797631134_0.43110296688973904"},"directories":{}},"1.0.3":{"name":"@alterior/core","version":"1.0.3","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && ./node_modules/.bin/mocha lib/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc","prepublish":"typings install && tsc"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"chai":"^3.5.0","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^3.0.2","mocha-typescript":"^1.0.10","nodemon":"^1.17.4","supertest":"^2.0.0","typings":"^2.1.1","typescript":"^2.0.0"},"gitHead":"e854287d3c63de0e306a9a3cc94ee0aadbeacffc","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@1.0.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-WJgMIUTDZaoW4gDbIxcQvQz4wclTMAIVbJz0II+r7Bn1qQFeaRsWfse/+lrnj8k9xoKcjpG48RTeiZ0K9JWvxw==","shasum":"85ba8c10a2a4fcfc2db85b23f7afc3cc205106f5","tarball":"https://registry.npmjs.org/@alterior/core/-/core-1.0.3.tgz","fileCount":79,"unpackedSize":176441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9A1DCRA9TVsSAnZWagAAYoIP/1IeYd0X10TD3jOXO7GV\n1524qbcC21+TvEVIcP7CEWozDqHK8MsBwnkEu1HjW8mqSnhiMthfZJcaybOp\nspDhNmap+JdaTGi86+RA42ERsRix5lGGjmSpAqR0iHw64UUNAPGgC7qwtLDN\nMZvhqCic1B5ss5L9o4biFFffZM8SkH87/rf/IyRnwv8AxOPJBZ0L0np/EjvQ\n+Kiyn+g1Da6VDvPskRLZzTmhAwA0/PTJE7xHkR5e36Ndru+Xi5kYG6WgBKrH\ni/ZLG9Ny/8kqh65hdDwq/vkqDDSyJBMgX5+EgU+sg8qsRpU6M3iWSw2djXsp\nfp+nhjty5xx/ke85TPZMHeKrAxUhgc7su9oHfTMLZvkbHzWIkegHUkTq2FXR\nNhJbOfT1gXRqjNYZHVGtKZCWPAQkJYA8Q7+6r+qs3oiGZfMmRo+3aEk6/42z\ncX8qOSsrHuSRrVEighz5kBLo8PtsBYZ/dv2pjpp9gG0w6kKrhyUbJsERfFe4\nG5DMBni0ZTsI3CXx32pCd0leCqwSg2xRIqGjxEpayDwo2tPGC+i1DfDJxrnK\nP2IrP/iAxpgF6taPbUsHwMb0q8RhMOwLjNxkV86EgSC0fP00fC52N0p0PjPd\nOPFjIm7cqw6YPkTEgzCv2eqx8CU3hEYZM4GLI5o8MM/EufvlePa3h2fsEAyr\nPc24\r\n=Tld2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkMzs/wYmp6jJ9WNoiWlhaBQlaeL7i+UFYQMbQrDuypAIhAL4BHvnR463bS4l1qmwMqBrh04egVn63H8xEqLaBLCzs"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.0.3_1525943617597_0.8194731013647683"},"_hasShrinkwrap":false},"1.1.0":{"name":"@alterior/core","version":"1.1.0","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","prepublish":"npm run build"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@angular/core":"^2.0.0","@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"@types/body-parser":"^1.17.0","@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/mkdirp":"^0.5.2","@types/node":"^10.5.1","@types/reflect-metadata":"^0.1.0","@types/superagent":"^3.8.1","@types/supertest":"^2.0.4","@types/underscore":"^1.8.8","chai":"^3.5.0","growl":"^1.10.5","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"cab9e406d9f78633c3380699af06cffe9d9d88eb","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@1.1.0","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-y7ktXmEirU9mNSl265v9PhK5bWXTN8lIG/XJCuKSwUuUldHD8IvBgf7jKw+sXPkilOa//MWY835KNbFmKSgMoQ==","shasum":"34c19bb247815794836f5df42361f56c4271278b","tarball":"https://registry.npmjs.org/@alterior/core/-/core-1.1.0.tgz","fileCount":158,"unpackedSize":493194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOEZZCRA9TVsSAnZWagAAv0AP/0S8+P6DzGLLGGm9zKcB\niOk2JQqi6YKCcFmoRpNw83hr95EVPXRahE+FQVwVA0m3ZNj1Xj4XJSwFToZV\nIrT/YRmZMMMIa6lveBa4BbaYX90hsvXvSg9UHE4zZ7EReYrDHyZDia9xCCz3\nW7kSavxwcfrWYz0gQeCWFgoXTFozliuSMw9lZUHIDHpj/cmbyaNgRXnZvbyS\nxsDMawexhTv1QaCXTCAL0JD2jt3UBNokUcF/6iTaa6GA3u2eQBt5Zk1q/kVY\nz0tLMI/P7l85fykbGqpCYg6XXnpAFATqFOGtqpFd9p2ZH+C1Aa0ucJrCNPtv\n0m+W8Dj3BT9J51+VLzcInaLDqVBKO8lS/tmFKN2wLuC7akRngwVqKVZ4T53P\nHFiYxO7tivBbEqd6umvjkQFAshFfensAzq/KFr4VOaCcA9mJH6cANsB1Ir2x\n3hKfsIim8Y74RPZsvpTxEiP1siXs2Q7xRyfvdVdlCPMQb4xGCDGWiW0Dlwnc\nmr/6irEncInewfJD89HzZPlJZnIkQqMc0/bxkLLIWgAExqVrWXfreriByM2o\nvMXsk7XGem7HhZZhyVVVUZPi6O274wOttu42/YV5xq6sFhpX+1QAcv2Jj+Ds\ndPmKw2Ibf2/2xUfFFuTiHl7hGVIcoV6CS8wZTUHhIkxzjEq1l6LlQ7M61DaF\n80ud\r\n=RWZW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjvF4YcDIpL0JGTl6mpDTlOzBX9dxGnjkU+Sh2kgRrcgIhAIVZOpSqPGCroK+LVzYZ75K6ht0pT+tpJ7yiXBYIKujC"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_1.1.0_1530414681670_0.5388234455965404"},"_hasShrinkwrap":false},"2.0.0-b1":{"name":"@alterior/core","version":"2.0.0-b1","private":false,"description":"An Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","prepublish":"npm run build"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","injection-js":"^2.2.1","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"@types/body-parser":"^1.17.0","@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/mkdirp":"^0.5.2","@types/node":"^10.5.1","@types/reflect-metadata":"^0.1.0","@types/superagent":"^3.8.1","@types/supertest":"^2.0.4","@types/underscore":"^1.8.8","chai":"^3.5.0","growl":"^1.10.5","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"5396cd9c950659156d6671f69096f64bc9d74933","readme":"# Alterior\r\n\r\n[![Build status on Travis CI](https://travis-ci.org/alterior-mvc/alterior.svg?branch=master)](https://travis-ci.org/alterior-mvc/alterior)\r\n[![Join the chat at https://gitter.im/alterior-mvc/Lobby](https://badges.gitter.im/alterior-core/Lobby.svg)](https://gitter.im/alterior-mvc/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\r\n[![npm version](https://badge.fury.io/js/%40alterior%2Fcore.svg)](https://www.npmjs.com/package/@alterior/core)\r\n\r\nAn Express-based Typescript MVC framework using decorators and Angular 2 dependency injection.\r\n\r\n## Getting started\r\n\r\nNeed a sample project? See [Alterior Quickstart](https://github.com/alterior-mvc/quickstart)\r\n\r\nInstall the package:\r\n```\r\nnpm install @alterior/core\r\n```\r\n\r\nCreate an application class (usually in `app.ts`):\r\n\r\n```typescript\r\nimport 'reflect-metadata';\r\nimport { OnSanityCheck, OnInit, AppOptions } from '@alterior/core';\r\n\r\nexport class Application implements OnSanityCheck, OnInit {\r\n    public altOnSanityCheck(): Promise<boolean> {\r\n        // Perform \"health\" checks like connecting to database, etc\r\n        // When your app is called with 'test' as first argument,\r\n        // Alterior will execute this and exit with code 0 on success,\r\n        // code 1 on error. You could then use this as a prestart check\r\n        // during deployment\r\n    \treturn Promise.resolve(true);\r\n    }\r\n    \r\n    public altOnInit() {\r\n        console.log('Service is started!');\r\n    }\r\n}\r\n```\r\n\r\nNow, create a controller (let's say `foo.ts`). Note that everything a controller can have, the `Application` class can have as well! You don't need to make a Controller if you don't want to (more details on that later).\r\n\r\n```typescript\r\nimport { Controller, Get, RouteEvent } from '@alterior/core';\r\nimport * as express from 'express';\r\n\r\n@Controller('/optional-prefix')\r\nexport class FooController {\r\n    @Get('/simple')\r\n    public simple(ev : RouteEvent)\r\n    {\r\n    \treturn { status: 'success!' };\r\n    }\r\n    \r\n    /**\r\n     * You can also return promises.\r\n     */\r\n    @Get('/promises')\r\n    public canHazPromises()\r\n    {\r\n        return Promise.resolve({ nifty: 123 });\r\n    }\r\n    \r\n    /**\r\n     * Or use async/await (the recommended way!)\r\n     */\r\n    @Get('/async')\r\n    public async canHasAsync()\r\n    {\r\n    \treturn await someFunction();\r\n    }\r\n    \r\n    /**\r\n     * The parameters specified by your route methods are automatically analyzed,\r\n     * and the correct value is provided depending on what type (and in some cases what name)\r\n     * your parameter has.\r\n     *\r\n     * For example, you can get access to the Express request and response by injecting RouteEvent.\r\n     */\r\n    @Get('/useRouteEvent')\r\n    public canHazRouteEvent(ev : RouteEvent)\r\n    {\r\n        ev.response.status(200).send(\"/foo works!\");\r\n    }\r\n    \r\n    /**\r\n     * You can also request the Express request/response explicitly (note that this is \r\n     * based on the parameter name, see below for more details about\r\n     * route method parameters).\r\n     */\r\n    @Get('/bar')\r\n    public bar(req : express.Request, res : express.Response)\r\n    {\r\n        return Promise.resolve({ nifty: 123 });\r\n    }\r\n    \r\n    /**\r\n     * Promises can reject with an HttpException to specify HTTP errors...\r\n     */\r\n    @Get('/error')\r\n    public errorExample(req : express.Request, res : express.Response)\r\n    {\r\n        return Promise.reject(new HttpException(301, {message: \"No, over there\"}));\r\n    }\r\n\r\n    /**\r\n     * Or return an Alterior Response object for more flexibility...\r\n     */\r\n    @Get('/specificResponse')\r\n    public specificResponseAndSuch(req : express.Request, res : express.Response)\r\n    {\r\n\treturn Response.serverError({ message: `uh oh, that's never happened before` });\r\n    }\r\n    \r\n    /**\r\n     * You can even specify middleware directly on a route method...\r\n     */\r\n    @Get('/middlewareRocks', {\r\n        middleware: [ myGreatMiddleware(someParameters) ]\r\n    })\r\n    public middlewareRolls(req : express.Request, res : express.Response)\r\n    {\r\n\treturn Response.serverError({ message: `uh oh, that's never happened before` });\r\n    }\r\n    \r\n}\r\n```\r\n\r\nBy default, all classes with the @Controller() decorator declared throughout your application will \r\nbe automatically registered in your application, but you have to ensure that your class is imported \r\nfor it to work. You can override this behavior by specifying \r\n`autoRegisterControllers: false` in your application's `@AppOptions` decorator. If you do so, only the \r\ncontrollers you specify in the `controllers` array of `@AppOptions` will be included in your application. \r\n\r\nWhen using automatic discovery, the recommended way to ensure a controller gets loaded is with a bare import, like so:\r\n\r\n```typescript\r\nimport \"foo\";\r\n```\r\n\r\nYou could put these into your `main.ts` or wherever you are bootstrapping Alterior.\r\n\r\nNote: If you are doing microservices or tests, you might want to avoid having an extra single controller class \r\nwhen it's not necessary. Also, there are certain routes (think /, /version, /health) which you may want to \r\nrespond with some static responses but wouldn't really warrant having an entire controller with separate\r\ndependencies from your \"application\", even in larger multi-controller services.\r\n\r\nFor these reasons, if you choose to, you can put your routes directly on your application class:  \r\n\r\n```\r\nexport class Application {\r\n    @Get('/version')\r\n    version() {\r\n        return { version: \"1.0.0\" };\r\n    }\r\n}\r\n```\r\n\r\nFinally, you must bootstrap your application. Typically this is done in a `main.ts` entrypoint file, but could be done wherever or however you want to do it:\r\n\r\n```typescript\r\nimport { Application } from './app';\r\nimport { bootstrap } from '@alterior/core';\r\n\r\nbootstrap(Application);\r\n```\r\n\r\nHint: This is a good place to bare-import your controllers when using automatic controller discovery as described above.\r\n\r\n## Building your app\r\n\r\nIt is recommended to set your Typescript to target ES5, or do a compiler pass with an ES6 transpiler. Alterior does ship with an ESM build, so you can try it, but your mileage may vary. \r\n\r\nYou can use any build system you want, but the standard Typescript compiler (ie `tsc`) is recommended. The NPM scripts used in `@alterior/core` to build and test the core library could easily be used to build and test an Alterior application. \r\n\r\nYou can test your app however you want as well, but there is a slick way to do it with `supertest`, `mocha`, and `mocha-typescript` from NPM. You can see this style of testing used in this repository (`lib/**/*.test.ts`). Or, supercharge your testing with Zone.js using https://github.com/rezonant/razmin (shameless plug)!\r\n\r\n## Route Parameters\r\n\r\nAlterior inspects the parameters of controller methods to determine what values to provide. Firstly, parameters of type `RouteEvent` will be provided with an instance of that class which\r\ncontains the Express request and response objects.\r\n\r\n```typescript\r\n@Get('/do')\r\ndoThings(ev : RouteEvent) {\r\n\tev.response.status(404).send(\"Not found.\");\r\n}\r\n```\r\n\r\nAlternatively, parameters which are named `request` or `req` will also be fulfilled with the Express request. Likewise, `response` or `res` \r\ncan be used to get the response object. Note that using `RouteEvent` is preferred and recommended since it is a type-based rule. \r\n\r\n```typescript\r\n@Get('/do')\r\ndoThings(req : express.Request, res : express.Response) {\r\n\tres.status(404).send(\"Not found.\");\r\n}\r\n```\r\n\r\nParameters named `body` will be filled with the value of `request.body`, which is useful since you can set the type of the parameter to whatever you\r\nneed to, such as an interface describing the expected fields that clients can send (coupled with the appropriate Express body parsing middleware). When combined with value returns, you can achieve a very natural style:  \r\n\r\n```typescript\r\ninterface MyRequestType {\r\n\taction : string;\r\n\tfoo? : number;\r\n}\r\n\r\n@Get('/do')\r\ndoThings(body : MyRequestType) {\r\n\treturn {status: \"success\"};\r\n}\r\n```\r\n\r\n## HTTP Exceptions\r\n\r\nThe `HttpException` class is included to signal Alterior to send certain HTTP status codes and responses back to the client when exceptional circumstances occur.\r\n\r\n```typescript\r\n\t// Perhaps we couldn't contact a microservice needed to fulfill the request.\r\n\tthrow new HttpException(502, \"Service is not available\");\r\n```\r\n\r\n## `Response` class\r\n\r\nAlterior includes a `Response` class that makes it easy to return a rich HTTP response from your method. You can use this instead of HTTP exceptions if you wish, so here's the same example using `Response`:\r\n\r\n```typescript\r\n\t// Perhaps we couldn't contact a microservice needed to fulfill the request.\r\n\treturn Response.badGateway({ message: \"Service is not available\" });\r\n```\r\n\r\n## Dependency Injection\r\n\r\nAlterior supports dependency injection using Angular 2's dependency injector. A number of injectable services are \r\nin the box- perhaps you need access to the Express application object to do something Alterior doesn't support:\r\n\r\n```typescript\r\nimport \r\n@Controller()\r\nexport class FooController {\r\n    constructor(\r\n        private expressRef : ExpressRef\r\n    ) {\r\n        this.expressApp = expressRef.application;\r\n        this.expressApp.get('/something', (req, res) => {\r\n            res.status(200).send('/something works!');\r\n        });\r\n    }\r\n    \r\n    private expressApp : express.Application;\r\n}\r\n```\r\n\r\nOther builtin injectables include:\r\n - The Application class. You will be given the singleton instance of your Application class.\r\n - `ExpressRef`: Provides reference to the `express.Application` instance as configured for your application\r\n - `Injector` (from `injection-js`): Provides access to the injector which resolved your class's dependencies\r\n\r\n## Applying Middleware\r\nAlterior is based on Express (https://expressjs.com/), so naturally it supports any Express or Connect based middleware. Middleware can be used globally, it can be mounted to a specific set of URLs,  or it can be declared as part of a route, just like you can with vanilla Express.\r\n\r\nTo add middleware globally you must use the `@AppOptions` decorator on your app class:\r\n\r\n```typescript\r\nimport * as bodyParser from 'body-parser'; // you will need to load the body-parser typings for this syntax\r\n@AppOptions({\r\n    middleware: [bodyParser.json()]\r\n})\r\nexport class Application {\r\n    // ...\r\n}\r\n```\r\n\r\nTo add \"mounted\" middleware:\r\n\r\n```typescript\r\nconst fileUpload = require('express-fileupload');\r\n\r\n@AppOptions({\r\n    middleware: [\r\n        ['/files', fileUpload]\r\n    ]\r\n})\r\nexport class Application {\r\n    // ...\r\n}\r\n```\r\n\r\nTo add route-specific middleware:\r\n\r\n```typescript\r\n    @Get('/foo', { middleware: [bodyParser.json()] })\r\n    public foo(req : express.Request, res : express.Response) {\r\n        // todo\r\n    }\r\n```\r\n\r\n## Uncaught Exceptions\r\n\r\nWhen an exception occurs while executing a controller route method (excluding HttpExceptions), Alterior will respond\r\nwith an HTTP 500 error. By default, exception information will be included with the response. If the caught exception \r\nhas a `toString()` method, it will be executed and its return value will be sent. If it does not, the error object will\r\nbe included directly, being converted along with the rest of the response to JSON.\r\n\r\n`throw new Error('This is the error text')` would produce:\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\",\"error\":\"Error: This is the error text                                                                 \r\n    at FooController.sampleRequest (music.js:36:29)\"}\r\n```\r\n\r\n`throw { foo: 'bar' }` would product:\r\n\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\",\"error\":{\"foo\":\"bar\"}}\r\n``` \r\n\r\nYou can disable the inclusion of exception information in responses (and this is recommended for production).\r\nTo do so, set `AppOptions.hideExceptions` to `true`. The `error` field will then be excluded from 500 responses.\r\n\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\"}\r\n``` \r\n\r\n## MongoDB integration\r\n\r\nMongoDB integration is no longer bundled in. See [@alterior/mongo](https://github.com/alterior-mvc/alterior-mongo)\r\n\r\n## Sessions\r\n\r\nTo add session support, use `express-session`:\r\n\r\n```\r\nnpm i express-session --save\r\ntypings i dt~express-session --save\r\n```\r\n\r\nInclude it as middleware:\r\n\r\n```typescript\r\nimport * as session from 'express-session';\r\n@AppOptions({\r\n\tmiddleware: [session({ secret: SESSION_SECRET })]\r\n})\r\n```\r\n\r\nYou can then use the session by requesting it as a parameter from your controller methods:\r\n\r\n```typescript\r\n\r\ninterface SessionData {\r\n\tusername : string;\r\n\tcartTotal : number;\r\n}\r\n\r\n@Controller()\r\nclass SampleController {\r\n\t@Get('/')\r\n\thome(session : SessionData) {\r\n\t\treturn session.cartTotal;\r\n\t}\r\n}\r\n```\r\n\r\n[Alterior Mongo](https://github.com/alterior-mvc/alterior-mongo) alternatively provides a MongoDB-based session provider based on `connect-mongo`,\r\nor you can use any Express/Connect middleware that provides `request.session`.\r\n\r\n## Custom services\r\n\r\nThis is Angular 2's dependency injector, so you can define your own services just as you would in Angular.\r\nYou can add providers at the bootstrap, or app-class levels.\r\n\r\n## That's great but how do you pronounce this?\r\n\r\nAlterior is pronounced like \"ulterior\" but with an A. We know it's not a proper word :-)\r\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@2.0.0-b1","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-R4ProF1d8Hq14pHlyAS8vZsYYrhmMOGsUQzxluzG8P/TlkhWt+HB672+BwrDS71UWnIKITSCij7mhVF+3DjF8Q==","shasum":"a11855d6e0ad81d240799b6236b0ea9e8e80db30","tarball":"https://registry.npmjs.org/@alterior/core/-/core-2.0.0-b1.tgz","fileCount":160,"unpackedSize":499082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbd+ghCRA9TVsSAnZWagAAoSYP/ibphOCFuq2j67+WHdJu\nlM6Ojjy3fNFeepUfODyTc7GONHqceSUGDWyBeCcSQJaYIUzoDdJU8P1w8erE\nJ/pleJQcF5v/WlUBnWj8hIACuxneczPq+Kix/L0Du8mvbPs9V46QN3VC5m0p\n0rYUbkunW9CrdVqFv2YXQLEd/kl4fwpHcxMMzFbQltWIrAfNk+VNbsip/cc9\n0ble7Lxl5z+UOGsv4j0TqwX30FApffyY0chqh0BObO2rt6wvXYoWEpvURnxA\nBiY0MSifQhgiBG7tVwvSDJ9k4DHi8gl8hLQFfKMqAtEHYqK2BrrgR/ZSTvR8\ndCdcdlimMSKBODHsUDxWw1qs0xN92jCtxeZbHPlUVrrFQQFyxA4XDN/iDceB\nNWybtXoho+NUxRPkH6UIxDPRn2YDHao9hoxJGPl52RwOJiIGk4noDkMxGw+d\nKAUW4la7ErsZ3w6/9/gYzgqtBMcHWRfjoZzJkbYPD0J/YzTGAyUsJIgfBEIr\nM7oIAM1b93fOQfAxpzo8N4mJVoFF4u4jn3XV3hiaK/1IACjNrFL8IopgBtdg\n/oRh/zZTvcnDzj2ng+17fVkGVod91I/H+Uc5mUvmhsjs0yi3SxaQ7sJtqZPj\nKkCBLSzgqnMHH0Nfo9334P8C8STR2Nde7OKzAs7jfeleR36B7EeX3sPDxLe9\n8kAc\r\n=yYWd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYZXSMuOk4sP8lvk64O9r1XtWyVnyMmaR+XR8tIhxxtAiEAlRB3+Te60jYcVttxxBXlqBVegetVO9qebfDm09jvmKk="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0-b1_1534584864714_0.38085790996805535"},"_hasShrinkwrap":false},"2.0.0":{"name":"@alterior/core","version":"2.0.0","private":false,"description":"An Express-based Typescript MVC framework with decorators and dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","prepublish":"npm run build"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@avejidah/get-parameter-names":"^0.3.2","body-parser":"^1.15.2","express":"^4.14.0","express-fileupload":"0.0.5","injection-js":"^2.2.1","mkdirp":"^0.5.1","reflect-metadata":"^0.1.8","rxjs":"^5.0.0-beta.12","source-map-support":"^0.4.6","underscore":"^1.8.3"},"devDependencies":{"@types/body-parser":"^1.17.0","@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/mkdirp":"^0.5.2","@types/node":"^10.5.1","@types/reflect-metadata":"^0.1.0","@types/superagent":"^3.8.1","@types/supertest":"^2.0.4","@types/underscore":"^1.8.8","chai":"^3.5.0","growl":"^1.10.5","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"5f9a9d77ecd2e471d1158abf291a6bcc0db3aea3","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@2.0.0","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-ZlLcB+XrcuhWpIUEN1RcD+OXY+Q6BxuxXwZXBk22fc8SBcwfXJblvN/HW5SXMWaEjH6Dn99BDg9sxHR9fH9amg==","shasum":"90ea28477b66c079271e392e8c062afe0c869c18","tarball":"https://registry.npmjs.org/@alterior/core/-/core-2.0.0.tgz","fileCount":160,"unpackedSize":499069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbd+uGCRA9TVsSAnZWagAAtIwP/R+niDw4zZF2EcJTLrgt\njs5mlUbYhfkIfphXMs2OicTtwm54urin0aLHk4qLTruW+FOlPJY5jQJiIKwr\nIoAFUPzZSBKQevImtbTppQeWOY60lqTCCvvbX7LcZSJ9AgJKmh9SlPR7S3qe\n3EKjVnPho+4KPS5Bxs+nqpDNnKlUEUyeSv6oOsfE1xtCd2qTTstfgNO05tRE\nlX9eAwIWYAvjaKUuwCkfP9K7QPrGk5UpGmfveMjwtMD6/GpoxCOrW92Rv8qT\n3SfHX666CjxyeD5QhrdRPLcTH+J07HIVT3cMBbBQKGHMKdxakpB+d1E99R03\nnZl2x3WwsF8PodFHf4SO3PAWPOvI/QtMPYAkvoKsK0O8/I0O5gP/UyYkx4od\nvaUeBSXUOYRwfJ3pHldZdySWJur2kZBkqCrarX7xV00Ym5q8TtKKAEPNM2uG\neRMoAwJSQLjss50EezmLnYfpRw3n57j0QzbpCLM+3IOfIx5lnzJdD8OChlvC\n9Yla3XcW9JHoZjeai8EGzLdjLIl09O92E1B5kYgHIBYpaxAas22CRrHY/ciI\nyB9LeospMqePNrnbyh+lXOS9TI3QXkjijc7yI3Wq4RbRrMpBZQtgWaBpEguF\n1tKNG/TJNJdu4J+nZbcB3VFf/ia6vakIYFqb18doatM/TYp85lFedoYBjcXw\nYxUM\r\n=KJ++\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKMBDAgr1veYXBVG5wn/7N5Zt53rImQNKRkNtaEFcdvAIhAMHS8g1Ed8KGhChjhiiTjTz4rA0YiQGWHC0tqNIYnmsi"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.0_1534585733159_0.23638381569119238"},"_hasShrinkwrap":false},"2.0.1":{"name":"@alterior/core","version":"2.0.1","private":false,"description":"An Express-based Typescript MVC framework with decorators and dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","prepublish":"npm run build"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@avejidah/get-parameter-names":"^0.3.2","express":"^4.14.0","injection-js":"^2.2.1","reflect-metadata":"^0.1.8","source-map-support":"^0.4.6"},"devDependencies":{"@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/mkdirp":"^0.5.2","@types/node":"^10.5.1","@types/reflect-metadata":"^0.1.0","@types/superagent":"^3.8.1","@types/supertest":"^2.0.4","@types/underscore":"^1.8.8","chai":"^3.5.0","growl":"^1.10.5","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"b428a4deb3e08e3b81b2651a552a74ebe6bb25a0","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@2.0.1","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-tpwL00p8AumFLoIbfbNXM+4cSb/aVFemJDN8ucrXLcm37olD6v97qcUhA5sT8WetsXHcoI8AeE8/wwBwWnWcIw==","shasum":"3b04d0340a554dc61ec075b95444dd21c635f60d","tarball":"https://registry.npmjs.org/@alterior/core/-/core-2.0.1.tgz","fileCount":160,"unpackedSize":499046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeJvTCRA9TVsSAnZWagAAIZoP/REIGcZaLpHwFOu49rc3\nJVABGw/RT5XOi4C7nRs3SGjlQ2BOA9HKRESZSQOOyJ2oOepUk+djCTXXrWwK\n14DrXYevYpJfcomM41pmZtCwnE4Uo4oe85JDkjKz0U+LbK2x+pxQN7KCMs6K\nsCLwlg0ziSm9MHQuaS2i6v20bXwz/1O5pfzMG4Y3rU68/9on1XDXWCUwTh2U\n5zFAvUIdN6kWxAl1o3NuxhBalsRRKTuIrGQU+PQRZAmQO4VyX4+BJnZXyIvs\nJfJ7MJrN8O63vhO04yLTrprXqF8xb277+i701LT4dyu7zba5EuvFrYMQPELA\nsyYjEtB1Llcmsch1WJRlJodLKbBstGJdlIol7nfU+O9Qe9I/zyWGWW/YjXzV\nXwNvCVEZ+RrE6nbXZ0dfpQ8yKi2PJpl53ssKMoMPd+m5knZjErp33yt2tSHH\nSriLeEsTWqpAP6MjQ9KNWtSCZ7D/Yb7vFEzwuhZu5Uqwogzj/M1zruNdW9e/\n5nTbpO2ArLCZ+qB1WaVoCQz31b8b/7IkP8qMAhIpOJovEULOGUC3GGwrdKLA\nufgtLWwQHCKe99oKkSAC0AF2MYT2alPWTcLmW7bp1PB9Ed7LU4aT78qLcOpx\ne4aGfcj5eAMrQRVpMewnMI8CpGj11uukEfWkRX1qkuydrSGUdTmvAtSqE7C1\nyUl3\r\n=JzJc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLkFkllsb3zI5Qr6d0Eg3G9n7qc/WZmJOJNXTlHxactAIhANCttKH2rnrk1wRhH4rQ10DCS1OAAWpx6Wm64ePSymc1"}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.1_1534630866731_0.4094842866248505"},"_hasShrinkwrap":false},"2.0.2":{"name":"@alterior/core","version":"2.0.2","private":false,"description":"An Express-based Typescript MVC framework with decorators and dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","prepublish":"npm run build"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@avejidah/get-parameter-names":"^0.3.2","express":"^4.14.0","injection-js":"^2.2.1","reflect-metadata":"^0.1.8","source-map-support":"^0.4.6"},"devDependencies":{"@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/node":"^10.5.1","@types/supertest":"^2.0.4","chai":"^3.5.0","growl":"^1.10.5","jasmine":"^2.5.2","jasmine-core":"^2.5.2","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"3f11665d386f56eb5995b14c1871dfa879f24168","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@2.0.2","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-g2xkgI8Mg96FSmfqxpVONVwY5HodpdGUFhIVOSjnJGh9B8CaJy7/5ZnoJMkO+sUQhIusy+3kBGAnD3mv00cmbA==","shasum":"786cae67c49ec6e1b8071624474a2622c3cb12e4","tarball":"https://registry.npmjs.org/@alterior/core/-/core-2.0.2.tgz","fileCount":160,"unpackedSize":498904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeJ22CRA9TVsSAnZWagAAapkP/Ag9lbApuKd77+SItO/v\nUThtWmDCy1CzfA3iMdbO4zbdV8zvz3LWpNV0o4By6piaEP5hmKqI09KJafGD\nsc9FiMSAjvOOjKjlxk42EfZ4A8E969lBqdFAl8fA9wQZPHV+WlQcLVsGZPEo\nkFtFZLRpQcoOfwTmubaHrgu2l9uofwFLFX5jQI1rtrcUnX1/bVpBTX7KRaH8\nBtV/aBTTk9OB7J8WqdvJduosgRpt9K5EBaLCz1MI3b1YJPRPIfZayQks0Fm6\ny1SQ28Ffp1tGqNhOlbupB4lGcLeU4dT4C/D2YN0nsfGMJmUM/jbXMDxUt/sW\nY3x8zYo9XrJj1MSrdR2NA+WXadJBS2p+O9r4Vg3YlfSpUFSWId/pe8XvznYK\nsxVf2MvW8O6yCvHOlCebErZ+ZVOGtS9Jn3DjZPKkfDFqiy7IoGfumSYNhzkc\nU1QsZp9IZyXE/quWySBc2muG8YGExHoJt4B5Z/ofKCJhj5rQqup3DKhGWkZA\nbk6jomnPXDdsxe/ZhRPsZV3T15BpLmsH7JjdUE10jkSloN/1muI/t8SCxvPu\nIY3XmXq9IwQvzacAb3IxUOdohjFTre8CcdSS6oL2idnR4nZH8yHu7Er9UmJ8\n/fqUyn22YbW00B/qjv4zKxkQbRPikNQ1f/14I2cwqqcIqbd9mZWoDTJ37djp\nhPiZ\r\n=vN4t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG1nQNV92fxeNtXlThMToopLjWvhyDLJoiIqQ3YvgXqrAiBaNoN9HycpzLIttY85G9tgpcaUKBuHcLm1gj/ms6s3ww=="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.2_1534631350033_0.4771203368462711"},"_hasShrinkwrap":false},"2.0.3":{"name":"@alterior/core","version":"2.0.3","private":false,"description":"An Express-based Typescript MVC framework with decorators and dependency injection.","main":"dist/index.js","module":"dist.esm/index.js","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"scripts":{"test":"npm run build && mocha dist/**/*.test.js","dev-test":"nodemon -e ts --ignore \"*.d.ts\" --exec npm test ","clean":"rimraf dist dist.esm","build":"tsc -p .","build:esm":"tsc -p tsconfig.esm.json","build:all":"npm run clean && npm run build && npm run build:esm","prepare":"npm run build:all"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"license":"MIT","dependencies":{"@avejidah/get-parameter-names":"^0.3.2","express":"^4.14.0","injection-js":"^2.2.1","reflect-metadata":"^0.1.8","source-map-support":"^0.4.6"},"devDependencies":{"@types/chai":"^4.1.4","@types/express":"^4.16.0","@types/node":"^10.5.1","@types/supertest":"^2.0.4","chai":"^3.5.0","mocha":"^5.2.0","mocha-typescript":"^1.1.16","nodemon":"^1.17.4","rimraf":"^2.6.2","supertest":"^3.1.0","typescript":"^2.9.2"},"gitHead":"4d5dc163aad16b5461cb6915d7f152e6c60373c1","bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"homepage":"https://github.com/alterior-mvc/alterior#readme","_id":"@alterior/core@2.0.3","_npmVersion":"6.0.0","_nodeVersion":"10.1.0","_npmUser":{"name":"alterior","email":"wilahti@gmail.com"},"dist":{"integrity":"sha512-3sIaIDRYX4+rbRNNlsHndceXeQ+KODcpH/Rug1kerZrkd9+hiNLfsO1HPx4r+YXgZYLHLZqE9s8g1qGObAIAZw==","shasum":"3593a2d7d87e018287f3e562606b73f42f6acb3b","tarball":"https://registry.npmjs.org/@alterior/core/-/core-2.0.3.tgz","fileCount":160,"unpackedSize":499006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeJ9VCRA9TVsSAnZWagAAZJsP/1TA20x98cJ9rGps2t+M\nxbT++w+UQQjyRmb9FHlza0X5LeCK/2lMcgjGx2aEpQH2mGhRV4zPpDg3ZLI9\nqklN5d/iqEIJpl3u5reEU4p+nMGZinJch7BkRjSbundeEREwvv77BB4M/ewp\nVv7yyxoEMUyBwMq4C+hCOeU1w+aFQABN263MgzkD2mjYx/ren+yP+owGFqAQ\nGZITE77oTtomfYz6xVUQQcuhxWzspOWQezI7WNHIy8qg8o6k+6NjSYFagrT4\nSiCtLZHlvTPN7Cc5OK8WpQD6ZbZQCoTKXD2azZ0F4rkWybdRxxeD3JkM4hIz\nwvMrcahHDCcHhnu3G4JcrC8p30UsnWPOhPgiSPt52v6CbSvJUirF5NK5lZbu\nHBGDHYhkv8c4hWVciQQdxmKq0w0FZg/9shr6+GkLdpdmo+Qk3r5LQI7N+RUG\nKf0PJAT6q92kyJQ7oQvSPNqsPjteTv20xslv9RgsU5KOZ0tdztAfYLRHtkEo\n+oJQadoV0l+HLWLNEtuEiQ3qATaSCthn2sIf+74ev9VAYYbRn38l5THRtwA3\n0YEjhWX1SOgf+I5WKd5FKfmHJS/iemQoIAucPctWQ41TVRGUMsJP2yRzdSIO\ncwQlx3Tl/WXoSfFv3R0rqyuD55i4N/V+pMl87cp/GLN3f4SopsbnXm2dU6H6\nbF5x\r\n=dig9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo+DzTLPSXGoyBO3qBXCTTmM70sdG6IOt9XILxfJvz8QIgNPRsrVlNs3meefi+ovDbXmhjk8tp+5zUTY+MFaccDhE="}]},"maintainers":[{"name":"alterior","email":"wilahti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_2.0.3_1534631765263_0.6019370031722744"},"_hasShrinkwrap":false}},"readme":"# Alterior\r\n\r\n[![Build status on Travis CI](https://travis-ci.org/alterior-mvc/alterior.svg?branch=master)](https://travis-ci.org/alterior-mvc/alterior)\r\n[![Join the chat at https://gitter.im/alterior-mvc/Lobby](https://badges.gitter.im/alterior-core/Lobby.svg)](https://gitter.im/alterior-mvc/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\r\n[![npm version](https://badge.fury.io/js/%40alterior%2Fcore.svg)](https://www.npmjs.com/package/@alterior/core)\r\n\r\nAn Express-based Typescript MVC framework using decorators and Angular's dependency injection.\r\n\r\n## Getting started\r\n\r\nNeed a sample project? See [Alterior Quickstart](https://github.com/alterior-mvc/quickstart)\r\n\r\nInstall the package:\r\n```\r\nnpm install @alterior/core\r\n```\r\n\r\nCreate an application class (usually in `app.ts`):\r\n\r\n```typescript\r\nimport 'reflect-metadata';\r\nimport { OnSanityCheck, OnInit, AppOptions } from '@alterior/core';\r\n\r\nexport class Application implements OnSanityCheck, OnInit {\r\n    public altOnSanityCheck(): Promise<boolean> {\r\n        // Perform \"health\" checks like connecting to database, etc\r\n        // When your app is called with 'test' as first argument,\r\n        // Alterior will execute this and exit with code 0 on success,\r\n        // code 1 on error. You could then use this as a prestart check\r\n        // during deployment\r\n    \treturn Promise.resolve(true);\r\n    }\r\n    \r\n    public altOnInit() {\r\n        console.log('Service is started!');\r\n    }\r\n}\r\n```\r\n\r\nNow, create a controller (let's say `foo.ts`). Note that everything a controller can have, the `Application` class can have as well! You don't need to make a Controller if you don't want to (more details on that later).\r\n\r\n```typescript\r\nimport { Controller, Get, RouteEvent } from '@alterior/core';\r\nimport * as express from 'express';\r\n\r\n@Controller('/optional-prefix')\r\nexport class FooController {\r\n    @Get('/simple')\r\n    public simple(ev : RouteEvent)\r\n    {\r\n    \treturn { status: 'success!' };\r\n    }\r\n    \r\n    /**\r\n     * You can also return promises.\r\n     */\r\n    @Get('/promises')\r\n    public canHazPromises()\r\n    {\r\n        return Promise.resolve({ nifty: 123 });\r\n    }\r\n    \r\n    /**\r\n     * Or use async/await (the recommended way!)\r\n     */\r\n    @Get('/async')\r\n    public async canHasAsync()\r\n    {\r\n    \treturn await someFunction();\r\n    }\r\n    \r\n    /**\r\n     * The parameters specified by your route methods are automatically analyzed,\r\n     * and the correct value is provided depending on what type (and in some cases what name)\r\n     * your parameter has.\r\n     *\r\n     * For example, you can get access to the Express request and response by injecting RouteEvent.\r\n     */\r\n    @Get('/useRouteEvent')\r\n    public canHazRouteEvent(ev : RouteEvent)\r\n    {\r\n        ev.response.status(200).send(\"/foo works!\");\r\n    }\r\n    \r\n    /**\r\n     * You can also request the Express request/response explicitly (note that this is \r\n     * based on the parameter name, see below for more details about\r\n     * route method parameters).\r\n     */\r\n    @Get('/bar')\r\n    public bar(req : express.Request, res : express.Response)\r\n    {\r\n        return Promise.resolve({ nifty: 123 });\r\n    }\r\n    \r\n    /**\r\n     * Promises can reject with an HttpException to specify HTTP errors...\r\n     */\r\n    @Get('/error')\r\n    public errorExample(req : express.Request, res : express.Response)\r\n    {\r\n        return Promise.reject(new HttpException(301, {message: \"No, over there\"}));\r\n    }\r\n\r\n    /**\r\n     * Or return an Alterior Response object for more flexibility...\r\n     */\r\n    @Get('/specificResponse')\r\n    public specificResponseAndSuch(req : express.Request, res : express.Response)\r\n    {\r\n\treturn Response.serverError({ message: `uh oh, that's never happened before` });\r\n    }\r\n    \r\n    /**\r\n     * You can even specify middleware directly on a route method...\r\n     */\r\n    @Get('/middlewareRocks', {\r\n        middleware: [ myGreatMiddleware(someParameters) ]\r\n    })\r\n    public middlewareRolls(req : express.Request, res : express.Response)\r\n    {\r\n\treturn Response.serverError({ message: `uh oh, that's never happened before` });\r\n    }\r\n    \r\n}\r\n```\r\n\r\nBy default, all classes with the @Controller() decorator declared throughout your application will \r\nbe automatically registered in your application, but you have to ensure that your class is imported \r\nfor it to work. You can override this behavior by specifying \r\n`autoRegisterControllers: false` in your application's `@AppOptions` decorator. If you do so, only the \r\ncontrollers you specify in the `controllers` array of `@AppOptions` will be included in your application. \r\n\r\nWhen using automatic discovery, the recommended way to ensure a controller gets loaded is with a bare import, like so:\r\n\r\n```typescript\r\nimport \"foo\";\r\n```\r\n\r\nYou could put these into your `main.ts` or wherever you are bootstrapping Alterior.\r\n\r\nNote: If you are doing microservices or tests, you might want to avoid having an extra single controller class \r\nwhen it's not necessary. Also, there are certain routes (think /, /version, /health) which you may want to \r\nrespond with some static responses but wouldn't really warrant having an entire controller with separate\r\ndependencies from your \"application\", even in larger multi-controller services.\r\n\r\nFor these reasons, if you choose to, you can put your routes directly on your application class:  \r\n\r\n```\r\nexport class Application {\r\n    @Get('/version')\r\n    version() {\r\n        return { version: \"1.0.0\" };\r\n    }\r\n}\r\n```\r\n\r\nFinally, you must bootstrap your application. Typically this is done in a `main.ts` entrypoint file, but could be done wherever or however you want to do it:\r\n\r\n```typescript\r\nimport { Application } from './app';\r\nimport { bootstrap } from '@alterior/core';\r\n\r\nbootstrap(Application);\r\n```\r\n\r\nHint: This is a good place to bare-import your controllers when using automatic controller discovery as described above.\r\n\r\n## Building your app\r\n\r\nIt is recommended to set your Typescript to target ES5, or do a compiler pass with an ES6 transpiler. Alterior does ship with an ESM build, so you can try it, but your mileage may vary. \r\n\r\nYou can use any build system you want, but the standard Typescript compiler (ie `tsc`) is recommended. The NPM scripts used in `@alterior/core` to build and test the core library could easily be used to build and test an Alterior application. \r\n\r\nYou can test your app however you want as well, but there is a slick way to do it with `supertest`, `mocha`, and `mocha-typescript` from NPM. You can see this style of testing used in this repository (`lib/**/*.test.ts`). Or, supercharge your testing with Zone.js using https://github.com/rezonant/razmin (shameless plug)!\r\n\r\n## Route Parameters\r\n\r\nAlterior inspects the parameters of controller methods to determine what values to provide. Firstly, parameters of type `RouteEvent` will be provided with an instance of that class which\r\ncontains the Express request and response objects.\r\n\r\n```typescript\r\n@Get('/do')\r\ndoThings(ev : RouteEvent) {\r\n\tev.response.status(404).send(\"Not found.\");\r\n}\r\n```\r\n\r\nAlternatively, parameters which are named `request` or `req` will also be fulfilled with the Express request. Likewise, `response` or `res` \r\ncan be used to get the response object. Note that using `RouteEvent` is preferred and recommended since it is a type-based rule. \r\n\r\n```typescript\r\n@Get('/do')\r\ndoThings(req : express.Request, res : express.Response) {\r\n\tres.status(404).send(\"Not found.\");\r\n}\r\n```\r\n\r\nParameters named `body` will be filled with the value of `request.body`, which is useful since you can set the type of the parameter to whatever you\r\nneed to, such as an interface describing the expected fields that clients can send (coupled with the appropriate Express body parsing middleware). When combined with value returns, you can achieve a very natural style:  \r\n\r\n```typescript\r\ninterface MyRequestType {\r\n\taction : string;\r\n\tfoo? : number;\r\n}\r\n\r\n@Get('/do')\r\ndoThings(body : MyRequestType) {\r\n\treturn {status: \"success\"};\r\n}\r\n```\r\n\r\n## HTTP Exceptions\r\n\r\nThe `HttpException` class is included to signal Alterior to send certain HTTP status codes and responses back to the client when exceptional circumstances occur.\r\n\r\n```typescript\r\n\t// Perhaps we couldn't contact a microservice needed to fulfill the request.\r\n\tthrow new HttpException(502, \"Service is not available\");\r\n```\r\n\r\n## `Response` class\r\n\r\nAlterior includes a `Response` class that makes it easy to return a rich HTTP response from your method. You can use this instead of HTTP exceptions if you wish, so here's the same example using `Response`:\r\n\r\n```typescript\r\n\t// Perhaps we couldn't contact a microservice needed to fulfill the request.\r\n\treturn Response.badGateway({ message: \"Service is not available\" });\r\n```\r\n\r\n## Dependency Injection\r\n\r\nAlterior supports dependency injection using the same pattern as with Angular's dependency injection system (via the excellent `injection-js` spinoff library). A number of injectable services are in the box- perhaps you need access to the Express application object to do something Alterior doesn't support:\r\n\r\n```typescript\r\nimport \r\n@Controller()\r\nexport class FooController {\r\n    constructor(\r\n        private expressRef : ExpressRef\r\n    ) {\r\n        this.expressApp = expressRef.application;\r\n        this.expressApp.get('/something', (req, res) => {\r\n            res.status(200).send('/something works!');\r\n        });\r\n    }\r\n    \r\n    private expressApp : express.Application;\r\n}\r\n```\r\n\r\nOther builtin injectables include:\r\n - The Application class. You will be given the singleton instance of your Application class.\r\n - `ExpressRef`: Provides reference to the `express.Application` instance as configured for your application\r\n - `Injector` (from `injection-js`): Provides access to the injector which resolved your class's dependencies\r\n\r\n## Applying Middleware\r\nAlterior is based on Express (https://expressjs.com/), so naturally it supports any Express or Connect based middleware. Middleware can be used globally, it can be mounted to a specific set of URLs,  or it can be declared as part of a route, just like you can with vanilla Express.\r\n\r\nTo add middleware globally you must use the `@AppOptions` decorator on your app class:\r\n\r\n```typescript\r\nimport * as bodyParser from 'body-parser'; // you will need to load the body-parser typings for this syntax\r\n@AppOptions({\r\n    middleware: [bodyParser.json()]\r\n})\r\nexport class Application {\r\n    // ...\r\n}\r\n```\r\n\r\nTo add \"mounted\" middleware:\r\n\r\n```typescript\r\nconst fileUpload = require('express-fileupload');\r\n\r\n@AppOptions({\r\n    middleware: [\r\n        ['/files', fileUpload]\r\n    ]\r\n})\r\nexport class Application {\r\n    // ...\r\n}\r\n```\r\n\r\nTo add route-specific middleware:\r\n\r\n```typescript\r\n    @Get('/foo', { middleware: [bodyParser.json()] })\r\n    public foo(req : express.Request, res : express.Response) {\r\n        // todo\r\n    }\r\n```\r\n\r\n## Uncaught Exceptions\r\n\r\nWhen an exception occurs while executing a controller route method (excluding HttpExceptions), Alterior will respond\r\nwith an HTTP 500 error. By default, exception information will be included with the response. If the caught exception \r\nhas a `toString()` method, it will be executed and its return value will be sent. If it does not, the error object will\r\nbe included directly, being converted along with the rest of the response to JSON.\r\n\r\n`throw new Error('This is the error text')` would produce:\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\",\"error\":\"Error: This is the error text                                                                 \r\n    at FooController.sampleRequest (music.js:36:29)\"}\r\n```\r\n\r\n`throw { foo: 'bar' }` would product:\r\n\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\",\"error\":{\"foo\":\"bar\"}}\r\n``` \r\n\r\nYou can disable the inclusion of exception information in responses (and this is recommended for production).\r\nTo do so, set `AppOptions.hideExceptions` to `true`. The `error` field will then be excluded from 500 responses.\r\n\r\n```\r\n{\"message\":\"An exception occurred while handling this request.\"}\r\n``` \r\n\r\n## MongoDB integration\r\n\r\nMongoDB integration is no longer bundled in. See [@alterior/mongo](https://github.com/alterior-mvc/alterior-mongo)\r\n\r\n## Sessions\r\n\r\nTo add session support, use `express-session`:\r\n\r\n```\r\nnpm i express-session --save\r\ntypings i dt~express-session --save\r\n```\r\n\r\nInclude it as middleware:\r\n\r\n```typescript\r\nimport * as session from 'express-session';\r\n@AppOptions({\r\n\tmiddleware: [session({ secret: SESSION_SECRET })]\r\n})\r\n```\r\n\r\nYou can then use the session by requesting it as a parameter from your controller methods:\r\n\r\n```typescript\r\n\r\ninterface SessionData {\r\n\tusername : string;\r\n\tcartTotal : number;\r\n}\r\n\r\n@Controller()\r\nclass SampleController {\r\n\t@Get('/')\r\n\thome(session : SessionData) {\r\n\t\treturn session.cartTotal;\r\n\t}\r\n}\r\n```\r\n\r\n[Alterior Mongo](https://github.com/alterior-mvc/alterior-mongo) alternatively provides a MongoDB-based session provider based on `connect-mongo`,\r\nor you can use any Express/Connect middleware that provides `request.session`.\r\n\r\n## Custom services\r\n\r\nThis is Angular's dependency injector, so you can define your own services just as you would in Angular.\r\nYou can add providers at the bootstrap, or app-class levels.\r\n\r\n## That's great but how do you pronounce this?\r\n\r\nAlterior is pronounced like \"ulterior\" but with an A. We know it's not a proper word :-)\r\n","maintainers":[{"email":"wilahti@gmail.com","name":"rezonant"}],"time":{"modified":"2022-06-12T14:35:55.155Z","created":"2016-09-21T07:19:19.439Z","0.0.1":"2016-09-21T07:19:19.439Z","0.0.3":"2016-09-22T05:21:05.026Z","0.0.4":"2016-09-22T05:52:02.197Z","0.0.5":"2016-09-22T06:21:53.049Z","0.0.6":"2016-09-24T23:21:59.010Z","0.0.7":"2016-09-25T07:18:11.779Z","0.0.8":"2016-09-25T23:52:07.857Z","0.0.9":"2016-10-01T20:49:02.891Z","0.0.10":"2016-10-22T04:49:07.056Z","0.0.11":"2016-10-29T02:25:52.968Z","0.0.12":"2016-10-29T02:42:39.294Z","0.0.14":"2016-10-29T07:07:26.969Z","0.0.15":"2016-10-29T07:08:48.311Z","0.0.16":"2016-10-29T07:21:04.208Z","0.0.23":"2016-11-11T21:33:55.128Z","1.0.0":"2016-12-10T22:44:15.736Z","1.0.1":"2016-12-27T00:02:20.370Z","1.0.2":"2016-12-27T00:13:53.496Z","1.0.3":"2018-05-10T09:13:37.911Z","1.1.0":"2018-07-01T03:11:21.926Z","2.0.0-b1":"2018-08-18T09:34:24.826Z","2.0.0":"2018-08-18T09:48:53.272Z","2.0.1":"2018-08-18T22:21:06.811Z","2.0.2":"2018-08-18T22:29:10.147Z","2.0.3":"2018-08-18T22:36:05.375Z"},"homepage":"https://github.com/alterior-mvc/alterior#readme","repository":{"type":"git","url":"git+https://github.com/alterior-mvc/alterior.git"},"author":{"name":"William Lahti","email":"wilahti@gmail.com"},"bugs":{"url":"https://github.com/alterior-mvc/alterior/issues"},"license":"MIT","readmeFilename":"README.md"}