{"_id":"typescript-lambda-api","_rev":"30-a8831b647d3009346cea9ec659d388e7","name":"typescript-lambda-api","dist-tags":{"latest":"0.4.3"},"versions":{"0.0.1":{"name":"typescript-lambda-api","version":"0.0.1","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"aws-sdk":"^2.400.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/aws-lambda":"^8.10.19","@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-p6T/hHLjkmqlnpy6dlUIvlKeSrVShdLzwiIwBSCKyU/Zbci5o40jb0mZdP/oOvFo4ZkKxHHEm5q29pGEzyVJ/w==","shasum":"9e4c1dff9de4e1a263a62bbcd39a86a80b386e0b","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.1.tgz","fileCount":27,"unpackedSize":17141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZdzZCRA9TVsSAnZWagAA3MMP/j9HGLGr8WBu8uGNiUZs\nV8+TgXD5jf9QwBVfJ+TJ2QR0nn0mYUeJrCwllfY0vK4APXhxO7pKBqy6Jo4Q\nu6E7MKx6r3TtbUEznb7q9YIwFL2nLIetfBDpb3aVTl23+s/KQ0Zf/mTxCxbI\ng6FJ0W2d2UDnu21gCn6bXwnqRzDVeS2ahnszfF1o5wmJKpd3Ef5H32+RtQKY\nlWbhiDvTbfqDkm/HsmklHJXvQW1ej8WRYBbBRQ0t7OmwF7vdfz75Xp120ArU\nUKBEUUSiQbEyPQCnM6ezCxFnpAh3V6Pcb2+4hrGsa1FNUWCAX/ME8giVy/ic\npC2upjGWwr0sC1OBRnbuXEIp/m4cwSsk0otsj20VXusoJDXWASZOsQbB7OJC\n56hKErsW9PjCwA71IJEM26XHKy1fuDHLiVmBB27mwjIPAEYn/JQTtOYE+h6V\n6+oTN1qvQP4K315un1E2h/mW7XgvIAAqnbMRL8gDWqrdS61Rqbwq4EIYtZon\noJR1+uaXJYL+PBj+UHyEFnPrhHRqGbbw2CPJ8LqDwC6uluUYW0vZ3Me0fvLC\nQobpRpN5MO9S7j46jDVODId4FVkCwNJEMFuE5ZTdyxD06+IclCnP1vk1PTiO\nVGjaqcR4qL2BvT+X73JjjiTx4IXPc1cysuZS6xZ2xshWPZrjqgPf3wWZWJ7H\nq1g2\r\n=XbDZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA3LR4M2FQkONhAmQ82ocBAqv7DMeeOxVQVjIEjZxIydAiEAwCw8iHEcZQcBf+JUD5hk57WxQNb5JCPZoXNZ0jhDykI="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.1_1550179544771_0.7266737284717781"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.2":{"name":"typescript-lambda-api","version":"0.0.2","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"aws-sdk":"^2.400.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/aws-lambda":"^8.10.19","@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.2","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-6mTgjSDy/5RrvIMm7qx65+SzOQfohuDaX2hkJmaa9SmtDCQbPavQATLkq4EDJLycv8SuGOYaenmbGPc5uhYZrg==","shasum":"5bb8a5b1cfbd0d115bf9ce01f6340d440397058c","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.2.tgz","fileCount":28,"unpackedSize":17639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZeAHCRA9TVsSAnZWagAAToUP/2RLWPAI+fwuXkZYGqhA\n4tfeHJ6ud4Na/V187pwXnIwiyRaWirkKQSZmX22Ukb0yX17PaGwnpQbADTZg\ngToUGvH9rITIo3i3IdV78eWAog0FDju3Um+bwLKhlvQyDD5htLowRFc6x6OT\nC8fSYoddG5AVANR6vuV/Qu8Ym0U9S09CS/ypyAyt9tox5FAvnOoMHaqpVmeR\nZ57SvCMSWnPCMjfSMJRTpBPuu4ySkfr0gccTV3RTcV12CG57OkVOzviwWwyd\nwdtYY1F4XPgG+M9OQQTBm29165KECW+MIyDKNzBhABK7kMFNg4ro7HXiHljO\n9ilyHoy+wqnf/68v+++JJVBCppK2KfP7ZkO31DEskChVopsOjbvoJ0dCuGI1\nYZBQo+YT0jeVEun5zwkESbVrbfuLTz0G9qW2Cj2dOiquMt4C8XgymMtrLvfm\n4x+QQjP2KP61c16lGs11YGdObpFcei0xf4gQb+RxTjFhE20Ct8myJXoD6KTa\n8aoui6QllJuyFGWH7M2+JXduwGiIV4T9Jh1VULJCYAeBk8o48zr8g9rAJ0ZK\nLMtH8u0jr9uN42I+j/vcD1GUGoWTJEMmGXQx5SG++ZGUgjmjndBSITnCrfpO\nFSjHMQEzj/gjs/6LAHgdWvT3LpRpzIb42xy+o/zclTI1q03b7G4TLihK4MIT\nd292\r\n=iXHC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/F3jdYRPLzUQ/m71KfS/IU/y3dUyeWA+lSTIglm8Y3AiArixKbp5/FEWOtgf0uzDFRZwor7T/wdE5QuaJHcU1Q0A=="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.2_1550180358285_0.6090894788311818"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.3":{"name":"typescript-lambda-api","version":"0.0.3","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.3","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-KUa+ToeGKZC8+s0eEl/awfWJ8lJf+cdxIn2Y7IYyzV1BZbpMTtrWhb8RMC2sgrrM3+N9k47vMNAVcTTJTGig3w==","shasum":"b72617d3d5844e22c765db120dbc3022d0082800","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.3.tgz","fileCount":28,"unpackedSize":17644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZeVGCRA9TVsSAnZWagAA8HcP/ApxxMtUe5e4DU0s/0WP\nd1lURpT3kEcajwOtvIKh2XTfNgWDdLfasFrsKgl77N4Z+MAvvTebPbMh+5pu\n5Am7eVHqdAlrloTXfMkkIjGYELgvBuRKsERKlLtXkOdVRtBgpM9TFWEw7kTf\nMVX6CidFvsXcwFuAj8SsA22wFVRWFCba8WqlfuwSVHWkleBZYYRTZZKhs4Ei\nql7gWhPx4mV99vgMAhNBt4+JyVPApsArkYRm+rRlHdVq9CtGwICfqxYeg5mO\nxpnf/w5mJ0+/A/x3Iyc+24PcV6/DZadkwVM8qsX4PyL3tz95F5lTygd66ILd\neDgmSvHpDIEBxsn0yQgIAyideeTwT0PFP39c1CrEos5D/xgZxL6Hu5Cmutko\n/OaQAi5PJJI51shNzTihkmBqP28P08WHs5HY/9a7Ud2XOtXklhqs8iFFddo4\nzD+l4btEKOLuC6I011SGOPetc6W6h/YHuzWtVgVFRBsOw4cT4qVgyGcPI/JP\nz22umLgWUiW6evol2z+Uqzs5oPcDWrpUpJBdvshhAyTJXkw1W914MIbPUdfc\nkklLCnRozEOnZlYJUG5lEyqk3i601sopp6kpzHTM64ex/oUJXf9U5FKYHM2x\nzQL34oJf0gFxf8aqYgqpLVEyLxb3v7HZRuYWiEaJHxDnazjTchDLMhCHFig4\nK5z/\r\n=5N/i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/uXZzOLk5WviyAOnxA4plsgKzmc/0y0ndLRK6i6G8PQIgBcaFBTHE12fcirLPnhZzF1KeScq7luENFAJU3c23tBI="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.3_1550181701650_0.7880312045179361"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.4":{"name":"typescript-lambda-api","version":"0.0.4","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.4","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-m3I8jSNpagAAw8tj+HI30YqAUMzLm75nhpya3jIPvuF5tCEUtovIon2qTGDujzlawozMGTdYNT3txRHdpkjW9Q==","shasum":"50db9e517e12b7ebbd74be42293e354982f00b6f","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.4.tgz","fileCount":28,"unpackedSize":17937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZe7GCRA9TVsSAnZWagAAW7IP/RuIlH9aDwzrcuZ+X1Gs\nNJJ/ifoswkFvcJbI5JvPMyWJ4M8q6SDosiv01NYb5WQ0eDn/YE445/pZiYNa\nlz29Em6Nm1GEkP4KKkUgds5WlUCKAvekPGKZVNyHZoxjD4kHwIBHRXBGsfPe\nZJ2e+EuA+UPof4FrgI1KfeGWplMR/SoDk7wi/olY+iAuOzrVFyKteDIHvSTz\n0cXjieYnKQtAzstdrisXCZudat5smaoBlrt7EVlgc5J0ES5I83/K7c97UFhX\nZ8JhCCre6CWe8Yu5/p2sbOWoEVjTgj1AcEOsKKFEJpUBhAaDVoFYh8xzWMC2\nY3VqYUbfw9K7sL+uGvdrMbM++O8iaprLSqPU6RjsTqRGrBTepocUyNbjZf3g\n9goqf8FoWHDqfPQisGy2Xbqlrc5LPTLz27KO6DN09k8W8nzSDktwb4RGYGJX\nBAo+LWtzELfJQCHl+SdOSu+k9UwYPHc1HE9WE3zA+RYCoSUQNGTtXzAiVasb\nJQTTIv3o39fTWEpFSwKxFvek9XWvP/DuYO3jhzj0T5razW4w0lR4tQgG0ITF\nK/h4RslSAE8n50LlZqiki+5qwkyup+Ok9zRXuXd0siGrpUtjyGjTfUPCos4+\n9+Mf4bzNnITQVGlHFRlVvLzCgAusNcmDa7cSaekKxVVIjW00Qb3N+GQ24X9V\naqNi\r\n=rJJO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf5Ta2D/MRytIhm7bWIqLL80QFe6IA31L9oUTISpTNfwIhAOwzvKbaMPgwHC5SkO/w9jjsdTbxYhiU03ypAiXM2Zb6"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.4_1550184134198_0.16882024169220777"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.5":{"name":"typescript-lambda-api","version":"0.0.5","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.5","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-WfdnKr7fu4B51A9eg1d0vCyYZX5L1K7DcCEfnyMYzqO80pCyawH996QIEh369nW1Juud5wYfiHPKw4Ih9Xduqw==","shasum":"b928bf5c0da4fe35370428fe6004df75f3b993be","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.5.tgz","fileCount":28,"unpackedSize":18096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZe+GCRA9TVsSAnZWagAATb4P/1jmC59PG+xwdjmLUW37\nh1kzwPAeBSdmmkk6+/rZ54NwzmeSuGlJJx9sxARo/aW6zexKAjFZ4TLlzeGD\nKhZ6V/HdU025Upr01NiKmC55Fqi6kHRLJ+8EONwFHu+Bg6WM+qtcg7NOPGUv\nCmHn2B5E082ELTjIfvzN9IMgkhtVhEOkvZuxRPJoNULKgGml8S5JtImDR9Lk\n5IoocHSabHFi804RY2xbECZSMXeHdt1cvdIdb56TrYO7Og5P4DBxIEsmUz7M\nplXZcZLNzEb8NpBDSvQslv0X7BeCfDNEhWJStKn18nWv0nlcY+Q/VMqVT/9X\no0FcSNTNqjQjydAWwe9VKobTC0qt+h0675QKLUE8YOkHk73tDV6HeQTmkEod\nNwkGIDM+bBTsnthkUgghhlBOWh4nEl7vFBdEL62/XBbTybxUBXCJ1yPQQ9dC\nTKDPC9P2FGkIRtGOW5kl3+8GgF4XIHLeG15bf296JN/sZAz2gfrC06Y8OXO9\nxLZ2QhiUD9zhrdSKnqC65h3SCRgmk5t3Z9kYdd3oByREwF5xQ9icoQjySd5+\nHEmwCHri7A4GdImpt/8lNxOYBNx/o5A/tbkY0KS7gepoQGQsx+crPt2YcNnf\npLuqRjmyUKYCG8xMGVuFJSTwhdXEwyzHzmcrADatBOK43RneZdlxhJ0HabKm\na8zr\r\n=A1th\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwHATgLpp7h007qPIIbwCiaWm3hqBuA14TOzBVFisc+AiAJJVRFS282vczXK9G3yYzGONzAyDoQA9n8dyyTP2ha7A=="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.5_1550184326023_0.31149360494183176"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.6":{"name":"typescript-lambda-api","version":"0.0.6","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.6","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-9JdOAaOXURe0E9/xiyis+uGkSK8rYx48Bk6mCwFpgjQdzlDdZQkFIc67v5tC6GKkXjAFDglTeU1cKfB0zSWPaA==","shasum":"502306e5fff66ceadd9a5ae92fb1b2374c00fe52","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.6.tgz","fileCount":28,"unpackedSize":18119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZe/ACRA9TVsSAnZWagAAWP4P/37GeuSzm8wYT0Tpx0cR\nWyE7vWUuNw0xd+23qfQ1Ci/ZB3B//LOXRnOT3xgFJvrPIZ5Wj+Iy0uvR4e85\nrLZ+KKum931tcsT3v0POLuzSk6BfbYgs6LZLAmjM2nQ7C5ZjkAaHf5cu1yfR\nVpWT8AhQmtUBdGs8S47DsFhzpk5tFGuzQfAK0s17T799djoExC6BLWzq5J4w\ndrpKNWIDW6uG67eC/KXBXh83fTlObExeroi3tBT/M/vJTbYidM4VjJu9L55+\nU0qzJWfm0uLRJfWu3H7RtGI2TTL2toKyuVSd18GXyxOfWb16o9xhwsroxsh+\n4syH9+C1DCI6cyB5ciQVOvKJXRNwLye7BSeeZtj8sXrXfFpFp1TSg0gCHIwh\nZ+HXj8qERHnLg2uLG74WCMV6s2xawSo42/erRBIjK4Cxe4DotzpJzTUZtG1t\nh++gZZhzDNApByvjxexNIfM6slMIPbW4MArhfvzmTCTCgRfhfhO77R0olh3L\nBKvGXDRRhWIo1rjaierdz5o6prJNl+L+Gsvh2qxQBRyTrwtvu5LgAXPJvZlU\nPbKHbfd1PBW1XQ+6V738u4Xe3783l7lVUEOp93PET9JpvnUhkXBSSs5tkM9e\niz6QsVXxSXEIQ0fzmHGu32VqWFxqsAAV4XK4y1BWUeBlHvfCY3g7VF4763PP\nxijm\r\n=6l92\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiL9tHGpEUSveG3j07NCj1djZli7PqXz0NGBiVVZMYdAIhAOuEjks+2q8ePxVuLWYUYB1Fz5Z/1z+HeYQ0DZkqGoDq"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.6_1550184383591_0.25091115773304695"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.7":{"name":"typescript-lambda-api","version":"0.0.7","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c986d709fe5b1935cb3b8883eff3b4b936d308ca","_id":"typescript-lambda-api@0.0.7","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-gDDz6AKsmkMjX8KNCnDvzPFDlzBJA2tKANuPVfqUVBZEgn+QySkOzuHX/4WvWALxFe5WGvcfL+eVN4XWicKshg==","shasum":"3fcdd7e1295e725f92b38dd01e584bf70ef3151e","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.7.tgz","fileCount":28,"unpackedSize":18385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZfGxCRA9TVsSAnZWagAA9GMP+wemRoMiSKHISdm2Iix9\nmtMUwyKD+TxRBZms14/9D/MVjmyDyXOqjDC8xT3Z9LqFiVMjrNOtpHYC7+PC\nbodjYqhl4q4IQ2l9R5Vwi5M5Vl2VNhMwZqgVkoROYuYntlDTjBvs4AqYWrKi\n5Vb72Wf28CeowyBjB3TLH60VtnKVzUfAjgmP5GxOH1SoNzsALE84OKywerw9\nBPGZJ01c5A7yAmcvfyuHk31seBxsemuz6sF4Y3illzDpfS2bjW+bNli9sx5d\n2PFqo8JlW9jWgl2Q7Ddip91GP9U9yrgOs4WjRNTC5S2TxhqZRj1PG9fEt1wY\nAvdubO1vy0rDxam15wGsEtVFhoovhvwltCJKbfaTkRVJmRbBhffCtxVl2Svr\nt35zQj/uYfnNtpyTbSeT8gWuPloDWVMtIYqHlfjGrkoUJj2oyDRmncEXfoDb\nhGmYGUzjD0hvWv1tiuKm+ix/stAjy3ef2hf3xB0ZMRLU0B4uU04NcU5dKynk\nxsYmp38RsexK3clb13eWtEh+4mwGkjQE/jumFf6WxkPWdcYPEmn5o4RZsmS9\nFj9D3c7x5/sBw0Hie+7LqNHtp9BgvLSStyujz4GeRBgjuz518qCnbiyNP0SY\nrFMt54lcC6zK4k+5rsgeV3JwJirMm/fM0kUJvhqENHJ8XAvdPUIkmEQ4eKUw\nBqUi\r\n=FBPy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDb31rKigy/rbrTE1p6vSSMB3lHsYUACTIhXsyBmCOcOgIhAK5iWqqeMSJhQCM4ul+emYI8Wg0oIllXzRGS+/Yr8lX5"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.7_1550184881061_0.9461909677783533"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.8":{"name":"typescript-lambda-api","version":"0.0.8","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf dist","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"07bea0e5c5e1c7894945ace42556ad30603f4c46","_id":"typescript-lambda-api@0.0.8","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-hkcC3MzQVlC2MMje7Anoo77eNyGkSEMcXzXrF6Rf8/BdiWShG3vHzlkixdEB3VzIRH+n3vZ+FaT7avpc+NrQew==","shasum":"0c725f8b74c70e0bde8373f41e55ef4ceaff6b92","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.8.tgz","fileCount":28,"unpackedSize":23701,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZg77CRA9TVsSAnZWagAAFjoQAIJ+m12f50nLVojQLPm3\ntloE/UHPVRTOo2BJVLP09AtHA+qm5lV2BKuK2MRbvdrXWoVobYyvjACeoWBQ\nc1dtafijyGvHfA9uLbAx4pJpkxilGkmRASjLGvkpasvewDrn9xbDtT0BDk/1\nfGuxzM0pnwSOwcio/0EkuqlZIZbCUmZbrUnbW1gne8OTU+Wed5AiuJu/UwiX\nS34ZX8eoq/ocikHs3kV9+yGrw41/PeH9VDb+AykpgbNFmpU1y4B2bcPpXruK\nhsi97dcd1ChueM8WKeENGEqcsSxNfFmQ/gzmyxy0odIl0kkI8T0a5vKXBPut\nUP+I6t2OxAWpJ8qJeEEFCzCXixO98QHZQUvBgnXcHsYBTtSutrLHh7bc0fFr\nV8e6GMeIXVAVGXmK+YUl+iW5C5+Fnu/3net7LbrQfxDKFHgssdhMG9v2DZ7P\n5cSAUln+GuTwenUhRnzNPRMWzFg/15iDVJ0WpRTUPTZEtx6epJTE7OT/0jA6\nz3IpOH8WAPS9tTYsdqdoeEXBOMLUcwiYfGChGx9+hG4YgXsolpkZme3aiuud\nnOGkxwj1ciLa5Qi6y0cWQOnyxq8gOcSR+Amtlt5V4AboK1rKIbmfhBFmDQz/\nX+XoekV+odNcJgOs5eGapWaAN1NR3txmnSZMBTAXwXVfYQq5SkUOFZkw0mvI\neZWi\r\n=30+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzv3DzS3z87SpeaCL7A3x0JHTeGHC4kt/qDRo6wu0G1AiALaOFtzvdMTgKfn8+QYpfOKmo/vKleO0CED8E6rBEWsg=="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.8_1550192379194_0.7122050576554582"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.0.9":{"name":"typescript-lambda-api","version":"0.0.9","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"25e4a1166c8273c24073b44003d1606802e56496","_id":"typescript-lambda-api@0.0.9","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-Yk50iZhdpQKnZLaqy3kofUnZrm2NGZYxruGtm0xl+QFLWdurnT0gWQLQ6VhY5O1Mekd7o9DWsEp9Tjv+Dh/Lhg==","shasum":"788f27bc10d6a4ae7d59e2427fde278c04533a7f","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.0.9.tgz","fileCount":28,"unpackedSize":23859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZzToCRA9TVsSAnZWagAAAsoP/3fVfuGA9mjKL6q+eSAL\nQlIu5SGISDlFqfs+9ijWeMC7br18Ebnoi+Ebbw/Mt5K51fSIPT11CtB4BF0J\n+qf44S1XpvXTbiD3dURX910okuWN6yHoIXGF2QTXJTdvPREUanLSIbBsVIFs\nB3Z1Tz5QGBZp/uadd5prbrAUHBZERqbSjbox5pYOQTMRRMDVZ8fIJE7C/23B\nx4W5gZArDaMG3QYy8sN/KPjY89EEVb0zzEbeHone4PTNAVqCzNH8BefNDaOn\n+8X3qHCGFPki629vD5w8Ykh+cz71rkGV/LXcfA0699P7v2dG1HnlU+PdPAeg\nDl37OWoUY/HoIbk4n9kY6SeYEaFqh0zx2rAXDUP3eU/nOcWWXGmpw+r7iDRx\nggw11EzGba5jRUE3yFweCbQ7V/tDpqkuQs/vADMTREAmR8iFsUExcOkMgBWp\n/nnDGcjGDqUqvEI/zRGLwvK0Y9xkC/TvuGLKCvp9illFwd6Gq1jFi+fxQvr2\njvW/TXelGu91fAXY3GFH20eXGp7soe34Wd/a/skxjRGrNNwyylEloHb007Pp\nTec9JnW1sd8ao1ydPQC8wxVGYx+qS7bM6lf5JW11fxPlj23yR0xAUXSlwD1n\nfPSfzdWyv//QvsKXUDbTuCO//9fVlkM1RnOjrdG4B6HOPme1WG+3KycfFD3M\nKz7T\r\n=cEuS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2OQ1E6s50on1nsOxiv9l1JWO6GyFFGSG0myRmsvktJAIgRl3Hh5Wsje5hfRsAtkHcHP25dOFNn9EC/8Qd1j8uqFY="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.0.9_1550267623622_0.6334418388504484"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.0":{"name":"typescript-lambda-api","version":"0.1.0","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"33f207eb583f969b936f1bf23bc28d2887afbf14","_id":"typescript-lambda-api@0.1.0","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-vvgK7h5fqfnNliApcz+syC2QoQpVWc38RveWpCOC689hDhtDRnVI1SvIGLrznumZBv4JkVmsrVWIYmhfgVCxwg==","shasum":"141d86e54d106d967e3bd6090401c7c82be1d480","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.0.tgz","fileCount":28,"unpackedSize":25023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ0ObCRA9TVsSAnZWagAAbVcQAIXT6ctjEGKtpl5OidZI\noEDfuGP3y7MwRgBKUAQD0ObaUTnn52JUeH7gkCkE6+Os0UgejBzLDnOETsmQ\niQlKCGevuzBbcsqN1YnGmKr1jvawL2cstfa2+6BByDSV/pr+y2Yw2GWdOnz+\nPgWl9mAf25uQyNQkpQ/b1BLgLgcVoV0QFzCXJjdxsmvL7J5gO4Leni5gen81\njD3xeNc0iurEOHCAmr4udDERkO39uPhHAkjNllOiucyAbPKT9Pt4eCSxH46K\nt9lgmRuyWCaHwRfxPFlPaBOrGWyo6U74hPLvPBcNR4nbHECmpt4dpFO4A4AS\n0ZPIR6NB2DnNyEPJjV3H0IFJPLCZNPZnSNkJrjE+EaDb6sIAMwL3boPLA2/1\n0wkATrOsptNL57RZ64PYX1pTuLB6dZdxJJcLpCxotu5mXDQTg5Rf36SofGZ8\n/OgvZrnqZoOXSY7CKhnsF5U+CkXtFadhP9WpDHIkuMNX9MT78QKTjxBxE1YS\n3Z+ja+kJw3qi56s9yzLxaIfdtoiF66atMvs484z2DAoqm6p4GD7uLCUBlRCG\nGvw8DH+bzwwUZQ8TSil8ty3lJoXDkxgIjE3BOasjcXk9lP9G4TQTSNGCNbli\nCp+IwMni8q+jqCdY8p+orr8IafVN/ZCuRdt8cizOjdM0QhUuZBavkLcxHEav\n3V2h\r\n=KHyS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID+5noZAY4sRW13Z07+FCK85SMpk21+dydsAgyhDkw12AiEA19NhSrmeeyxmjeTXtmjTbMtOzuhVwXMho/HchwDTEkY="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.0_1550271387215_0.5462194592414256"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.1":{"name":"typescript-lambda-api","version":"0.1.1","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"33f207eb583f969b936f1bf23bc28d2887afbf14","_id":"typescript-lambda-api@0.1.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-IQBBiFWg4YReFAPKXM1ZG0Gb1Mm7XrVj4hiBu0AdJeTaZ17/sJBfQCzLamsciavY49HmH5Wsu8hhPbig3/Hvmg==","shasum":"c41436076e62495abeaaec09268a4612281dd10a","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.1.tgz","fileCount":28,"unpackedSize":25023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ0x9CRA9TVsSAnZWagAAxuYP/Rb4dR2c1W/B5I7RWOEg\ngR/codB0SlOsCU/E3SBP8XE5hspZRZmDGM4uAVZJEMt7RQ262GITjdo4eMMI\nMWwlL08d3SmzNdtUqhtEdpkOl5IxQlCyXzQhOYQvS/REU91mpgGHrXAP4P/Y\naWKhccfekdHBcm4YdzmRlkM5E2/X6y5tZdg5MLR1flQw3ln/uem6t44q9uve\nWpZCy/4OokGekLkf8c7BdeWYEk00CXcLw3XYLeYr0phlKsuowyNBnQxe5XJ/\nfUQfMxS7u+6zkijzYuU5gMIXD9Pfz+QmXKBi5EC6H8VUBSPZOq/2riO7qHWK\nhYQ55IvqANikxr/M9cf7ljcl8v1fyZrZUIK/N2skYyAF87rATDy5dkjUCnVs\nFtBozCW248+wmm7zdGSz1FB4ZMe9kgD+ul/Fr2F1xSafWnTgl5YJuyLidfEj\nkDAogialQAaYTRKJ1EPy4feGr5yO5hcN0AauROddq3hKZhRc7kXOjUm9iHFj\n1fAvWQ9eLcn8txTcVnIY/fciTVPqKEEruDYmnZQ8LBZq6CYEBJ/xrMqevPHb\n2jY+98W13yLhrYDzSVNBwJEhmqvaShS1FVQLtQLtg8Q3HCOjq1P1gycC7sGD\njZ1zJt95OUcLXC8Wx+JDih8/+cEtMTV90YZBKGvof9GaW68aF5zulZsYMUd2\nIb99\r\n=DGF2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBST7dJCOK4qDy8yExDA/A9eOw+AatvId4jtKE+CuRpbAiEAxymb2LcSXFIfFATbjAG6TmSwk2MgX12g0vxv+6XC/dc="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.1_1550273660800_0.8333950334607971"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.2":{"name":"typescript-lambda-api","version":"0.1.2","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"9e9a3ff39551305f3cb1bf591b78f70d07706421","_id":"typescript-lambda-api@0.1.2","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-iYFXWcHeecAmaZyaK/u7UJlrZFwT0f/lRU127tiXi5XZZvypHr/eOqdIZA5PzzttQE0n539iucknIl4J4BPQ0A==","shasum":"3d3230de4fa7fa22ccc51c94412e0fb3b529928b","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.2.tgz","fileCount":28,"unpackedSize":24991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ+gJCRA9TVsSAnZWagAAYo8P/0JBFDr10KfqqXHzvPPZ\nIfKoOSg2YqZTiLzH3aFq3pb8FXcTZNj1QK7nJ1mdlT3Re9ZknWClDKV5CN7z\n4yDP6r3pyrDMs8gkn2/M8zcQ/1z5/21+hypUxWxK+VAsGQxe31O9qdMb2Emu\ne/zxOiDZUZOZFZ9wRrZCNR3DZbtJG1dhjn9Qu5PlThx3Loy02LepEC0QNpvk\nYLGAlvizvlKQngKmN0XxHdKCG6benBsKFP6W6jTuTS/6BgW4m9kxtXIXT73d\ncY4HA4Zr7kwFiEnY23eFhpt5/rHAi0YsHnqy4X/0CZUgMp8ztq95PxcmaA9H\n1pZnV7rFAhFv0NmXlJ9ndxH5O2cpPNj3s004ljT94Nbwj9kAhvAEbkVwjS8a\nUyt8AFgJ2L8AwPsD5dHvq4wspN+O2D31pR0Y2d4apFk1meraD2RDv+7Fsfq8\nj1AeCZXnMqEP05yZ7vNRDQSX7PThr5pA3i7UrJFF3YSY9p3bl/9VP4gFp2YK\nUpFGxwhZwwaFsf3Q2C/Bw+r16oJzrCg3t0Tn8KGMgQNwPe3Z0AZulJR5jFVH\nHSkD++myqaYKfJbeOI1cExi+ahQE4LQztw5BdXQjNOOUINFz41lvhjuA6bDe\nkfqhipglVzDPzmw2axIgmofzbdFmJmIJQlMLyZKEuvcO5sROVR0tDUIl+H5I\nZn8B\r\n=6Gqy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfcyEb3I+lw9n1b+BYzif7SSkMX5oO2bogmjyzXWJaNQIhAK483zSXr2lQ4GXW0s+Hm8TM5f1J9Y7iEvBN5BOA5fhR"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.2_1550313480477_0.38177543812171"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.3":{"name":"typescript-lambda-api","version":"0.1.3","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","aws-sdk":"^2.404.0","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"457686c4072f8bc11bda2b6e69432b3a108adc88","_id":"typescript-lambda-api@0.1.3","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-bcY2fPhiII6rX8X1rPX6QfcM0DNU2k05+r5Q1hLdFAhq0ZRufHOgZS4/zo7fBlB5qFsW8NgIWnuEkMiFQnSjeQ==","shasum":"9ef6ddacb64f8af00089207181d7ebff2887c4bd","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.3.tgz","fileCount":28,"unpackedSize":25018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ+1ECRA9TVsSAnZWagAAtXEP/2if1v6HZG5XpeULnJd4\nGFa4xlhtkfoIWkLEgMovYMcrRu61hA4fjeakGrxtiwLAkME9SBNG4etysvLx\nVziA/S1pIHdLQ/x1OwEJgEUJ0V9OphcRB0p7KG8Y5vZEQjqrUdzDlAuu9szE\nMqw/dpL35jv7vonazVPbIwo+DTnzJQe0uqCBuYfJqqHP1p4PsNnmqlHQhAPJ\nmiATUX4/+e+qZuZC9tL3TGod2GEYZEkTkCUiVhguHtos7bFDT+v3WqRB5msU\n5juU2EfQbS8BS7aI/xgGbP0hmXiNCcrrYX2syadVPgnd8xXga6Z5wb95OOK6\nNQMciuUQgZ9bJBEH3CZQ7B+b86F3uw1TE5d6UTdLhTH1N0anWCEVAfPU5IR1\n8X11rBs0NAoFeTa5kYRzi0FLwrmmtI3nI0LknOKAkOyXDy54hEcMNPS/j6lo\nN2rub5sZba4URZbh/Fn7q8n2k9mEnODpgiEYBsjkusXNwJVu/+TqOhBEaTHo\nSbbeH21qhZqaEP4o56FpUXzur2YhslV7TLbyzY3XfyhjYOHfypRg3XRkdACP\nrMsxBvFzJkTZF/eUYZe7o6lQ2b05iPdGOL93dNxDEb2dU4EYe8p+D84vwlen\nl4REU6NTBvPfuG4XhqRDghoaPoMFQBlA84qYdcF/p+GUT2pS41ENM8cR9XnQ\nJVFz\r\n=ybhB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDS2Fic53kBbFXG1tHJmhavig6pDOTYOUHeTBfB8xg4gAIhAKWTpasgshKcdlBse5TKBGhh5JGMwnZPnepp4iWPGA53"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.3_1550314820263_0.039012309672385115"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.4":{"name":"typescript-lambda-api","version":"0.1.4","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"ec0f035b72c7c984d1a0fde2d2693d07cf499e84","_id":"typescript-lambda-api@0.1.4","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-oA43jFYrVEd2ynlQ9qaSeoGSeYlyRVFez2LksQVgyrjaG1+BoJ7j6z/1rAjAYeyvW2J2fDvNywsttwAy9AMW4g==","shasum":"641998ef84ce2cf222485b5a96d4e80ee9cc7892","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.4.tgz","fileCount":28,"unpackedSize":25860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ/gMCRA9TVsSAnZWagAAVEAP+gOX3dGuqqxHaF83sRoA\ntDooapMQ4VyCw2URIJZ6dv6DtAn0iwBm1TWyorxAEkWLOMzz2yaZe04r4ePZ\nZGJvl35fdq2TrPv9aJeg+gfvE9vC7/Ak0hiTADmdQpkpKD+Whu653ajKNKSy\n0rPi56GR3mYT5293UCQXR39OrZxw8s9m8VXcz71KvkG2PsuAbwJMDk6w+bh/\nZ/okbgw/fkXvapa5z9Fp8O61bvkj54vWJTe5OunVKyGwzzoWdAitOL3zaLhC\n4AWD0++qNbX116KrkKk5fMSI+TSGNX4uyG+IwNg6lT5/lzPbc3bg6OFvgNLB\nWbC4W7jHw0JlaQ6rZtaVXUTYKB+Zg4PofQHmotJbxLHqiwOBFQVyXGog3lTe\nov8HgZTQ/mVSUZcVugn7HUqrCXotQjzXnwmi3wRJrOH/m7+1VHhyxTox6rK5\n0CV0DUBGc2RxF7MolnrUIDGKDl70zQB/yvxbZ6XaKYhduvky5+s8tdpslbQ8\nUYgJMMcOgFQ7OOH1G/cWKMo9CB+X/WLsCH2Ge2QrzNKuhzWgJQH1/vkmsYvd\n2N+/J2Ffn47qGV9sDt2GO4HGiiC0ZbzNzE4jUR3ZbKOKxD3ZNI00S1avy2C2\ncg/71U6e7bKLac51BUWqWAZfpcu6wNQQCRDmwCiJgqdop+awgzXAbAWxoirx\npPq8\r\n=agHL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsF+f9p1HKRbrvZyaaAzIZ/aTT7H3IUjWOmmx+21Yl+wIhAPwqHoxqUdj0xQgxs3YKsikIHDsK8ywbik0QIvlwbAwG"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.4_1550317579803_0.6106246901668602"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.5":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.1.5","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"d7b9c22908a23f08c294fb9f2037cac6ab8064de","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.1.5","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-fEvimXyXUXOoFkPOmHChyYqTC3VzMjmvEbKMhdkhZZKOz1sIdfpdA3hk+FViKpt3b7vAgjzZVT2SCFDoBbCVYQ==","shasum":"8fb1252999396353bb95aabaa7ba3f9fae8d985b","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.5.tgz","fileCount":29,"unpackedSize":27043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaAXmCRA9TVsSAnZWagAAphgP/jhjvp+FQSEHPCiOn9fO\nkT9KLWX8adbxu5de4/yt4lbAZafO6VUUKF6sGsYaaLBvFL5Q99511MrA7wqC\n2zXo9A8nPxu7DOkFqi7SyY0Ku63mcXgFzQzMY9RjBF1uyOa2k7nB1Hl3kYlF\n5tSmgZMgf+ODewiVQ5EY66CP9hbZCp8uEaL68u9QFim3Xxhye7LI77czuUti\nH+DFRejs4ZpCnGVHVWWDdsgxKNeQXLXTdAGq6ToHou4B0eHEpleHGoRk9PF4\n5YGBV3/00IBlhW08rRw4UdAZRNdUvnaXyUeOfmYtWgA6hGTqo9lYS8cDFcG5\n12Xi/R8osC/Wf5BJOMYkDwkHtYcvHRyYeXwePGlkdnoUSjcaQAx/9BJL6tMv\ntCkv71Rgb+OX2OpWlpNMYitn3WEMW+Wf9ewxFu345LWQaMcHYPBsdHnTPgWJ\nHR7P309M18DRJbTm/ry/HwPNU2Bcccv3QhZcFJrBlPu/wzEK4Qda6QSV9TRv\nLoh+WlanU7YECJDdTGG8UIt56w5GvvKZYNqabr0A9CnVlAUOl7FoJrGtMfiL\ng9FH06UEgBDYZPdyRgepjXNx7KCU9EzVFACqDs5YivZnHNh2zL5nk514cMm5\nh0aYZmINC78utGGR+0o/WYCDp/QK0t5UVSZ3txI+HsJkdw1pGJizzKCUOmzC\nkCme\r\n=U2Cx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDO/J/VMKxgA93qQnUFlqM/W6n+Kb8fPLapq9NK+yCn3QIgFXyuzWy27w3PYpduvabHhy3svu/revvpdDg0C7Pouoo="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.5_1550321125560_0.5492511813934626"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.1.6":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.1.6","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","tsserver":"tsserver","nodemon":"nodemon","clean":"rm -rf node_modules && rm -rf dist","build":"npm run clean && npm install && tsc","watch-ts":"tsc -- -w"},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"72680afce41d7351b7ffed6ede261a013890f2d8","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.1.6","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"dist":{"integrity":"sha512-eCuz7QcWGr6F0VHxr9A2pKCwr4KznOgFxLR88QSJ2A1XzUZye9y1NBsPG/6CxZw1bsKMVUxQqDfDwJjfy9MzSQ==","shasum":"469e659ea0a05a584fcbd0022abf3105f353bab3","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.1.6.tgz","fileCount":29,"unpackedSize":27051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaAcgCRA9TVsSAnZWagAAtSIQAKDMlQcWAIU2B51ID4rL\nx3ZiYavafsUpZOW1OxhM0e1dSofHvFbrqmRQsAsyRkziTQpZ2f++brso6Flv\nlgojKEaeDUKUZlSH3PXxfuGuceIWi2rmex8+bo2h7YG2AeHqBt5NO2/Wqozo\naho8GFe86h36oGyfLq7c+4tVvxSF1q3yV4KMjHtjtTBGOLPp1ZE2oFawNIwR\nUV2omVVrUy6mNI+uxQaTRVWtkNKuTCgjjmnnBVLZAnnn9X0vJyF1a0r8b4Op\nqVeCMkk52lnX4CPU4ugK4c0duVHg+u1enL8RwL7Y0DSqVpxasUHnTJ0/zF4E\ni566pnM0GV7FgBoZ0ansaFAyRzzs8MFmeX6njKC4iUrQtcAoD8+mVfj2mRz4\ny8aKevDafYQ3vN4NPLATvA1VkT2JN9K5173o5GaoT9kMv5yhyl8JQcnPLksC\nfO480HsWsLujRsrrUOcK/h/wjQCJp31E+4UCkEZh5V0W+7S7zOULk4gLO71X\nrAAWhZI4dOPijo+PBsdyuo/7psnl3RMjaEJNiQm+S2uUZgKgif4Yeon8W8dl\nJdks+8BpDOhZnb7OJQevqy7+X4x/PJFMamABxCBvLx1OPdH04BaNloaJVlRO\nOIzTPu/C/FJMY+QuF4pufIJ5Vl5mJW/0ktfcxeGyaASLnI8/OUXHPOZb8XHr\nLdx3\r\n=WfIo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHStBECxsyduD4yJXStZKByCYhZIggQ59O+Z2kfvvoeXAiAPFHPz7m5JKjUIZ7kQ/Zvbs9XaFx80njAw4L5OzkDEMw=="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.1.6_1550321439641_0.7806014107055859"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.2.0-rc":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.2.0-rc","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","clean-install":"rm -rf node_modules && npm install","build":"rm -rf dist && tsc","build-tests":"rm -rf tests/js && tsc -p ./tests","build-all":"npm run build && npm run build-tests","tests":"cat tests/banner.txt && alsatian --tap ./tests/js/**/*Tests.js","test":"npm run build-all && nyc --reporter=lcov --reporter=html npm run tests"},"nyc":{"exclude":["tests/**/*"]},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"951f28461eb77b1eb3b111d2da1e2ca4cad7ab9b","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.2.0-rc","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-k04mtzCS5n4VaEg+9mVwf5uvm3OnQ8+9DI6FcUDFt94+nELRIYgvpEjaTTPf+AMIYxXjT38ZULQ0lKcjmE0I1g==","shasum":"f6dc2fd686dddf5b8f323a75e4b1efc4472b8538","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.2.0-rc.tgz","fileCount":69,"unpackedSize":55445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcagGbCRA9TVsSAnZWagAA61oQAJfQ8Mz0tl2gSRBBF+GW\nEiSR3zSHiGV9RhD4vOToMQMqPigXwoGSUx+En9Qr7zXQXosAi3dU13YbGNmC\nzXSaKRzxbkRm9TSHInmQZaERgq/elQ/WwaiPCEY6wU2i4GgPcmV9vbYLx0sS\nent/aS4hbSgPX8q7MFGTN1T4ZPPrHuuK8uG2J8bNlUDOkFNuf5JYPt+rJx4N\njn8t1TRMAA/4Le+60g9zUHFAdCv2nAXkimWSpRb84wZn0KT52fbc+BCKkdYf\nlroJmHv7VcL9ycto2+2kEv31Dtb+4pAlnQm9lE76LePPnqG4WNX18bnsNMLv\nHOMUbQy2gpQWImybiJfnTcLuA9HFq7ufEPeCd3ZBD1yGCZt9JnackxY/I7G2\nqbOZaUqMcM2Nddqpj5owzWD9A4Q+MEaRAen3C8tO9isSXQyHYoxeLZVaQOYG\n08ThwyE7bqtVnbjVR/XZrd3SZ+/mIKaYM5h0PwDzTFZqALV8mGFBanlDbLz8\nqxGP3qFNgs8+o5WNVBxkQzDLPMh8fpzWC915hS47osbYnjh3BFVcOGtvwv1i\nRT9ZJfxDGtJplGfCl8agzNvJLEzyxNW9XXcyHDqnTiDvhOZJUDRmHqo0zHLo\nW5GjzxDYrx3V3LNa1ZfQDqoP7+wkYRrYN6u4xjlS9EAmnUmZTf9CYMp5Xhwc\n6EHY\r\n=9hUf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcsVpHU+FABlbVgXzQCfGcuAPj2mhBZ5aW6es7zInf3gIhAJf9NxslxIMJcWDmbqBtNBp/vXoLMvt8QbLIJtGGcoM2"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.2.0-rc_1550451098164_0.6216155860085208"},"_hasShrinkwrap":false},"0.2.0":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.2.0","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","clean-install":"rm -rf node_modules && npm install","build":"rm -rf dist && tsc","build-tests":"rm -rf tests/js && tsc -p ./tests","build-all":"npm run build && npm run build-tests","tests":"cat tests/banner.txt && alsatian --tap ./tests/js/**/*Tests.js","test":"npm run build-all && nyc --reporter=lcov --reporter=html npm run tests"},"nyc":{"exclude":["tests/**/*"]},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","@types/aws-sdk":"^2.7.0","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"c2449231f8a029825a278c5586ad632779138eb6","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.2.0","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-He0UZXD0EU8SYRfT1Nf4II2qMU+b9U0Tw1XdJpAWo2qqspmVKE2Oxo31SBhJpXBUiVf6WcjYNzhFDGzDW9szJw==","shasum":"cc070b5e9b4d68687c27d8fd0baa9eac9f56cdf3","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.2.0.tgz","fileCount":69,"unpackedSize":55442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcagMrCRA9TVsSAnZWagAAXtcP/0d+pAjZkwCJ26NSMijq\nNC4UHurninqJSgQik+cC+cHqQzEYNaNNBbW3Sxjun/fe/FZINqUjpNxj73Vx\nKe/YtOFCgw7/DwWSxx70XIMAwPFOrK8hs5s/9gOMRT3+QEdRjpC/eUcwhKJI\nLIe9dVqzfnuW7rcssh26/+T2962+vF7ONTtCQz5q5QhYGi+YaqVMUbhs0Ek9\nkAhwsYIUzTE0ophMBslYWU1k7q3R6I48Slv3NWGfu9gSx1dPFnQzo+d6RhVo\nYygxbtCbb4tP4MKFoCAAb/CKl+N6yCI2jUaVTX5mxo+TfblJHMOraNlKIbAZ\nZcwLH5pd7utTqXs10gWYVI91errRbM80vpcC+fvEE68V6voI+56AlO4h8pX7\nB7j0uCdeaSZzgCifyQDmw2j9WiGSfXxYFHUqTfc4hDxs5r43f7YbFhc5TEbS\n9qggzdDwmsOjCrLNbgK5b3ZeKoaw8FIeZSzuALqcMDljhamf6UwiWJct4txX\njRflYZ/my79ODBlyS4VzIk8tlb815xhfku84lX61fubFCmSjK1/8qZKdFjIt\nhsQAFSMQCzpvdktgslxgfva31rZAfxl67sEF4epCU5VUCaf+2v41k6HpzV8/\n1r+0qpra24a631ccklMnv+j5L+uEgljzjurbKaH3p2+YbzqIyvjMdOY2tzlZ\nsV87\r\n=AYgp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBRdlzDdQAv12C5nje89vinpLbs0nPG7ecwFavYQe54CAiEAzPQ6jHhquXTWgOi9tS3bObVIo9cb4c5qfNclkHGdQdo="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.2.0_1550451498918_0.42198763182756993"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.2.1":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.2.1","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","clean-install":"rm -rf node_modules && npm install","build":"rm -rf dist && tsc","build-tests":"rm -rf tests/js && tsc -p ./tests","build-all":"npm run build && npm run build-tests","tests":"cat tests/banner.txt && alsatian --tap ./tests/js/**/*Tests.js","test":"npm run build-all && nyc --reporter=lcov --reporter=html npm run tests"},"nyc":{"exclude":["tests/**/*"]},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"7218415a28026cd650ad554bd24402bc29a44a0c","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.2.1","_nodeVersion":"11.10.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-czRhaBhT4PslDp8DjEcaIWKSwi6Bs+VUk27e2pREXaYuKYxkcoi+kvrQjKEqHZ6DGeHVvobeahhlL64mXowpuw==","shasum":"140e7a0f1027accf48a8d0b444defa99847cf946","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.2.1.tgz","fileCount":69,"unpackedSize":55499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcawIXCRA9TVsSAnZWagAAF1MP/iyXthxkU0P2Vwxsjrl3\n/YS2MZFNaXmrKAGHvpgRTfsZUXAiuIowJa2nRbB23PVURSvyFinrW4nLywKV\n6utBI7T1egy40KxunHtqZLYeCpGv9w4YfYxNNgPpRvD/KuzhqIZc3DLFuFdD\nqE0BKBkaI9U072rWJn2g72UjjkdP59U95uoZKv25X5qMOaZ5BtEQCPk1jfTH\noTwLZV+ex4jbr7zoOM1PMrQpePXWpONQ69ECWa2IRpgTFGtpeI1+fsb1wgiF\nLYjlHkimCchldzhKQtfQOgLATdcsZ9WTS8dQBkK/dOhNuMO6z8YMWMnDIJ9k\nu+MNWkJN+ME0mM4AMXETyoZmS9n4Oa90sJvj/BmkG3yHkuxV0R4wqzmZdQ7H\n1K8nvun8VEM9FFjk0x3Lw4qDtNjViXPqZbwNar76lTM6n5JBl+G38rKbe87O\n2C4p200D8wfh9D2Lub9RBxhFHwm7jdFW7/j8Vx+iyUWXm1Faz5hw/26tRd6y\nDOGG3bA8l528Dwi7Vnk1HXEFpt5ITdedOm6Z4FcZqiemjMGKOeiQgZ2uR5Mu\ns6p1sLvk9SWjSgr8cNspMLXUB3zeVPQ30HIU5SSfi4J+DDx0EdBoaAt3e8HW\n5FzvLje/9iJuw0RchcrzCpG9o1Xl9AxG8dG5n791K9ZmmxCr7nVys1hwmzmM\nk7Xr\r\n=K/ms\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8HrYzLJZN7VMIjI/JH4qqIQnSyTnybHomRHujxi9IbAiBFxRnr0zbzkSuDOg6u/k+8ezkrYPclYJA3QgULWsmEbw=="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.2.1_1550516758427_0.2786464430216271"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.2.2":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.2.2","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","clean-install":"rm -rf node_modules && npm install","build":"rm -rf dist && tsc","build-tests":"rm -rf tests/js && tsc -p ./tests","build-all":"npm run build && npm run build-tests","tests":"cat tests/banner.txt && alsatian --tap ./tests/js/**/*Tests.js","test":"npm run build-all && nyc --reporter=lcov --reporter=html npm run tests"},"nyc":{"exclude":["tests/**/*"]},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"60114831eaebad3542592d005a371485de435208","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.2.2","_nodeVersion":"11.10.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-Iqe5R+aXldXSjZ15o6K8UDHioL1QV23Z/kuIT0PLRLO7RAJ+AGTrz2K9oR537MN4yJVt006RvYY6F56tvNvXUw==","shasum":"a45f0b30b6de94f1d0cbac186c2863e07bc3957c","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.2.2.tgz","fileCount":69,"unpackedSize":55548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaxO4CRA9TVsSAnZWagAAMkEP/3qln5spI0X3E3f325Z/\nxdwvqJbooiLCpSg4a27vAUfmx2Gpg9oV4rr+YiuXMDjRkDychMgkJ8B3vvex\n8ahq5FE5z6dnw8j69jDI+9OO7PlZm5Xr0BE4sThvzmzdZZuPctqr0esj/AO1\nPTYLaw/MXarLbW2yYuDSkHe8Ym8qZdPt1ryCyO9yFMbZmsTQcysLIVUMFVcP\nmmZtz52RpFaM0wpk8Lw8WHOq6wM8CLSqEKeZWzzLAgOTlKBbbkPVdWXHoMOT\nFdi/IcJt3QrBSYuOWxe11XhyKADYExN/7jifwm15ca1NxYZp6NrLeHnR2amY\nOZbAI8DN815r3/6F8Pe46jhTLPfLUhbEUMM1xNH5I8HQRe/oFODJNQohDXpq\nphlDZ8VaKjfa2Mk3D7hNVbOtsBM7WTJarFBh5ncLaNUi1rCqe3XA+AhrOI/V\nFH4OylBU3owlloVfTprz2xlTVc9/OJH3N842+QcKCAWXEcXBYTArdlqhAyaz\ngzK3pdpEBzUJDpIOeD3bGgO/p5wtAfpN5tBmhfZQEOoF+HWz9q+RkdPp4Swe\n0XP5P64vq/I2BDii+B5M5egxalUksgPD50m90JtpCW/C8AF2H5Ar6uKMvkG0\nqpdiH102ubXkFxVl3IACeLf8/W5epnIfyM25hAIskthOmg+NYO+CvI5DWW9R\n2uFr\r\n=A5J/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWq5D9UUyXq4y7HtxVhe8AGHGHOiXhzKakBQv6dviBYgIhAJeCQhfywcM/9Sgm5JPcGrwPO4MZva+b4McFpX3s4xSl"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.2.2_1550521271603_0.4525310560978282"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.2.3":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.2.3","repository":{"type":"git","url":"git+https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","clean-install":"rm -rf node_modules && npm install","build":"rm -rf dist && tsc","build-tests":"rm -rf tests/js && tsc -p ./tests","build-all":"npm run build && npm run build-tests","tests":"cat tests/banner.txt && alsatian --tap ./tests/js/**/*Tests.js","test":"npm run build-all && nyc --reporter=lcov --reporter=html npm run tests"},"nyc":{"exclude":["tests/**/*"]},"main":"index.js","typings":"index.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","tslint":"^5.12.1","typescript":"^3.3.3"},"gitHead":"8dd2ce1b83e56de08c3b15c1fcc511fda5a196c8","bugs":{"url":"https://github.com/djfdyuruiry/typescript-lambda-api/issues"},"homepage":"https://github.com/djfdyuruiry/typescript-lambda-api#readme","_id":"typescript-lambda-api@0.2.3","_nodeVersion":"11.10.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-/bMwi2zopxGvEH0GUfvi9FGs8fpOVwDbq3g7EocEdaTzMJwqPJxnkZDlbduRF86Uhh39/pxAJFMXCoscwlgj4g==","shasum":"33cfe768add64d2cbb8bdb3cacfdb719ffcaaf58","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.2.3.tgz","fileCount":69,"unpackedSize":56827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcayi8CRA9TVsSAnZWagAAv00P/i58eJ/BZTbrRZHPm8ew\nntFh+JeHpPkL4oMF3/Tjzu6ZxR/OGogrIky6VP2u8gEPdujGTt8+Pp6ugDkm\nFS4X5WiR4dBst6foJDtBd1nTWBvhbSot2JZfVoI8PWZrDGIZu/Zw3mkAuX8o\nkcSj9Vp2gvT2PQ4KFHju+BkxsR2QctOTPHdWdaidZlsaf0V1xaghax0yq1qv\n/ovtrcvHPcO7r10DUkzSwmUaahe6uFAWKqfHZ+c4SIz8THvq7VnHfUTVworK\n0akQqCccQYadWbY7/UKTlFIzuO2sAvmgUwN/0lEIDTRbxgWefhPq0D9KlYjO\nCDLIX4XWf2OgZ5rZHayNVEExGhpgMIT4Ogz8mf5fAvqgmmZ21RLTsu4ELKsK\nWUSIxxjBW7B8Xz9r18PwjdvhIzAIZFy9wuEmyLsEYt3eMYDUxqrE1YRQJGyu\nD1rIbJZA06XUaKQoIli2ZCXYuQiC+YH2Zd6Yy/6UVcJWwarlHgR3eulSR+l9\nGERbTaarcI4W6ONzl9R+7PPVyGlDEwxnPEBeyOIwXVlkMnLKLTaFy6trh22N\nWMt30Wwl5oi7damRnu27eEWqUrU48c4rAHCjcSn1Kxs7A+xcFFjgWWutdfIj\n1AIT0mmkSfPutPobWM38z9T/WCkt2CYQZLAzy7hLtxY95tt86L4M+YqvehtB\nnjYU\r\n=0CDq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdPmvwstUdCJP0W1pQggKjN4vkUeEJrf1V4BzCJH2A/QIhAOWyjlWuHJU6G3jyfJqd/VF2A/+CDmHo38j2bJ/74DgW"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.2.3_1550526651981_0.9592258710931614"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.3.0":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.3.0","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"tsc":"tsc","alsatian":"alsatian","install-with-audit":"yarn install && yarn audit","build":"rm -rf dist && tsc","build-tests":"rm -rf ./tests/js && tsc -p ./tests","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","tests":"cat ./tests/banner.txt && nyc --reporter=lcov --reporter=html alsatian --tap ./tests/js/**/*Tests.js 2>&1 | tee tests/results.tap","test":"rm -rf .nyc_output && rm -rf coverage && yarn run build-all && yarn run tests"},"nyc":{"lines":70,"exclude":["tests/**/*"]},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","nyc":"^13.3.0","typedoc":"^0.14.2","typescript":"^3.3.3"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.3.0","dist":{"shasum":"67e2f786011be6373d4af96eabf9b8adbde2c9cc","integrity":"sha512-iMem9w/hzcLbYiXvdMo1xkCP7cKDgIa5XTNaQcD6GegjtMBN1MGH0OK7Mx20CnLI6oOF0gy1dcTLBcNyxsoqsA==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.3.0.tgz","fileCount":111,"unpackedSize":124674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJccyhyCRA9TVsSAnZWagAA0G0P/2rqqKq6DYL2vyL/t7k8\nBF4zZQT0Z4ocG9k2yqrY/J0U7idtajFsp8nwa3q6Dm447pnT8nbYznf+q13K\nfpuhY1TrWCR3H7J3f67zOkJXWDYkRQWgvMQ6B67JoP+lqxe74HufyA9p8o8s\ng6c1tJeBnHOTbJSkrK4VX9i4JZ7xZyaRiva0MdhsgI7Coi+8OgrCr9QSym6+\nm0UXZpCE+9HdXbGf5Awk/errISaTW0no07M48F+myLOcWPG66vLlFxIwzqfj\nzTPiS4SqaNDWMjJZLvbafM6M12AkxApxOJZdKKFu3tWqWfQVmHvz6QuDQ/8i\nvJKYBdgrthuEw5moU4n4uXwW6fmdwCKBE4CVXTkZsQ8EdXx23WM+4vnR5e9X\n30WZc46OMVk6D7jaTFNxHCZnFngNzWmZLAg0MWQdpH4aeqUTWZzW1OUz4bvN\nWI0RjKf/W7e5aactDqfRC84o2Tg4kPtHFPlN3FLYencFZY8LCVKqix7UcB6F\nHuJldpfaapSf5C53oiTnV4Y8Vwnhd95NR24i9GbaZFCKFhewnJtxbl3hygs1\nvl//R7/aO1LGhTVsfNON+UoADunRUhruSxbjABElMMtHCp1XqSuPT2qLcyCo\nkmxBllDwvnCZjQXdGE6G2euFWvNv2Z60ZLs09TuaFqKhLQHlWKvIxhzxGbKe\nPe8M\r\n=4ERX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQwTr1vTV4sWK1Sd1bNC9wZq5OSzmnTV4me5lMDxA3eQIgE+dTh8PHPRwbFWs50YyKOVpROqiQXIbpTszR1WL0Rf4="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.3.0_1551050866140_0.15902231918342347"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.3.1":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.3.1","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","clean-install":"rm -rf node_modules && yarn install","install-with-audit":"yarn install && yarn audit","lint":"tslint 'src/**/*.ts'","test":"yarn run build-all && scripts/runTests.sh"},"nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","nyc":"^13.3.0","tap-junit":"^3.0.2","tslint":"^5.13.0","typedoc":"^0.14.2","typescript":"^3.3.3","xunit-viewer":"^5.1.8"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.3.1","dist":{"shasum":"78a903e3feb2ee730d2c4b160b65b9a16ead7e8f","integrity":"sha512-LK94pLvsR9LXmqhWV87ulienpyB/GHKdiTp/DsA9X75yEwbWCcBzRHTj6GeZLdxIYGTwQ0RXFSi+KH34KyXH+Q==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.3.1.tgz","fileCount":146,"unpackedSize":178044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcq8HECRA9TVsSAnZWagAArfYP/R7nFOwJX28pIN2p3b1Q\nAf3qA2+c7joO/wjBhoBsDaI7Sz7gV2T+ncaj9juseu9QYWy29pxFgQ+bJlED\n0HtjRpQqinzeD9aY4JJZpVK9Sk/YB9g9KA0yDxHYjqQIhBBrxdIscvF0PthN\nFuRa4ns1U+dHaFS40vs2mnzX9vz1VlXhFtytMKT09OZWbuuNJLGjdzpq58w9\neTl1ks28qsldkt8TVue7Of2ZHbQT4J0aS6sqvGftcf//U6S6CK+l25qW14rV\n+VxMQOrKluZcrEK8ZxO2s09Oreyr5/fX8B097ErrihiCipN4PvJIs5VpSEFU\nWEbdwAo7lP7RR7NYHnk6dlBvLQtTeioPPxLLnIZ8K12vQPD+/H9NA9FAstqO\nt5YZwrAZXp695Kb9I/A9XPgydgNVdgXBdKIwyRGWiMKcobTJExF6ZWwSWF5C\n4hrshgT/mStNOcq8AvHerKSMvfzpn30ZdeWjJ4J1Ey6PjIB7V30Fu7eM78Na\nG/jt3xxWhXUG90g6rwsxKJirc1NU96BJpJxuep0kkW2XbnLWCZ858aA0l+CX\npkZnC9LNovjQtxkC98qkQns5mby/Jno6eLxrvpKfmpYFFyN5nwsOpxe3/UUV\nCMhiRJy5usVRlTstNwwknqLLEmkK8II2rNrJzWlnAeitNR7N1Vs3tI20Zvou\nCcvs\r\n=2cmJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhwMH8HY0Afzy6yBPoT5E/UEPohbzBqZVzhYRCBKc8DgIgI9mntN/k4WPpKagANSPiJAnaBkqDyc2Fu3n3C8U3tg4="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.3.1_1554760131651_0.7726023352951179"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.3.2":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.3.2","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","clean-install":"rm -rf node_modules && yarn install","install-with-audit":"yarn install && yarn audit","lint":"tslint 'src/**/*.ts'","test":"yarn run build-all && scripts/runTests.sh"},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","nyc":"^13.3.0","tap-junit":"^3.0.2","tslint":"^5.13.0","typescript":"^3.3.3","xunit-viewer":"^5.1.8"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.3.2","dist":{"shasum":"0333d1a9c8a7eed20fecb7977008ef06030a7c38","integrity":"sha512-QV5lwA/2j9GqRNTOz3v/12LJeMzoi2LQmK2VmUzfYnwF7spyTLibowcle/pgRwFIdc2/Lo45qtiWibc3wIF6MQ==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.3.2.tgz","fileCount":146,"unpackedSize":178920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsiuDCRA9TVsSAnZWagAAK+IQAJE5FKVeVNi+ODdq9SpE\nfR6DjZSDXNeK5mfjY4ONjHVjTOVdyRRohXOvbDwR/qP83NkIyq1VZhPPPVTt\n9tTYZ39/ygbLMSluqYTXHWnvuwlqEGOndysrKsQiBmp+ci+0KdPJZYyViyro\nZvVFGDIhlhiayFJ9QCAJeui2znZOLzFb3DrWqSZzipZUBoID3vYRIrefnxC7\nr+mYo64EjcKShPyN0UJXt2KVYf5lhpJNUBsHdt+9mepVPKy2eBIS4SJpk2WC\nbQIShnEaJJIHy0eQUqSGt3muDqoMIc92XXQ4o5vuEehJLCeveU3cP8YBaTtX\n3UTJY2+sWEynyTQAcLvwMG1lUjyiJD5juHS5RvSxomYd17b1+4S/jxZd8nue\nVpPyf4HeS0T5DoC8GYen0c6Eh9FKYHlysjnEteioWXj4Fw56z+2RaAWjZMg7\njhNz/MphoKbGuUSekrWDU8TwG/WoaBOOOWBlZVzgMoAGPwcN7vQ0rM1pKTll\nEG2HiuBdGHafeIiw6NV9X1QDWTWzr6nh/oeUJR0J8G0hPgXc1A7PcupD7pGd\n5umteFomcRQiubtlyn+zrt67DQLH+9SK3AcE4dsle/Us0bQQ9E306heNWkwN\nMO+RCnZw43o9F5B4zLXIQpQco8QV+VQjJgAIZLxULsbfRbrlGPK+BqfYbVEE\n7m1c\r\n=rybY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSXk0hbUyRCGw/S7wUXmGPG+fdw4PTbDIPsQZT/bchYAIhAM8yLKjIN4KT48fW9Vf2L4zoZ+j/gLA8JULAIrt71mXM"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.3.2_1555180418683_0.8073598920799747"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.3.3":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.3.3","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","clean-install":"rm -rf node_modules && yarn install","install-with-audit":"yarn install && yarn audit","lint":"tslint 'src/**/*.ts'","test":"yarn run build-all && scripts/runTests.sh"},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","nyc":"^13.3.0","tap-junit":"^3.0.2","tslint":"^5.13.0","typescript":"^3.3.3","xunit-viewer":"^5.1.8"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.3.3","dist":{"shasum":"770fdec645400cf0f4b11afa0a53f8c6a76ae7b6","integrity":"sha512-VUYRhfKcKDbDQq8lLuVjBlbNcqZJ1MlLgNtjH3duCw0gfW0ch0R16shs90XA6DCEwDcZuL57ZYIt/ol/RBBhbw==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.3.3.tgz","fileCount":146,"unpackedSize":179051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcspYUCRA9TVsSAnZWagAAn60P+gPAZX0agKD0A4lEnYVz\n6USGkNS0/t/njpbMwrIx2B392jjN+9t5Zl/HEwXyzSjBcT0Wlru+W0kEvu2D\nUOLF7uK4/PFuHiYjTtdtjcKjUQ3/X0mkf4LyZuA9b9lbjKYhT47cvIGyskRy\nr71fPDAgs6Ns295XeXOjAuaR9K1tOVzI0xeh1XJfsk0k8B8yIfbYVe/JZ3SZ\nsKvMUogICI+Vw11mWDsYjbG/qKNJ/Lb9MuhqLQziuECL+5gZ2YKs2HthZxXq\nl/ZVzuJ975ZvIDOMuMWMhYvX+0zR5WzXKWPrpFQNDe8GvfvQb+nh/QqRV+s3\nGPmrId9TXz+6VKVilM19gjCAY2G+rlF2E2g7fU4P/RxXAE0ascazbbdORBsJ\nrJI64YvKB4TDo0p1JbD7VuMBkxoJ5t60OE081ovJblE1636fuKqvxlUYY+i+\nR5cTul64DZdGRQTo9pO6xU2fYBJkRqFEM6qwRk4GEkC0gDUaK6yB33Aoohuq\nuONsEPsDX7NIQzezB7FD034Nucj1Dstum7otijZYEg0m4g0mjUyeRcyWjX1P\nKDDWb0eR+mdhNh2f6ejpqBPZVKyLRn2ShsQGGiCabdsGA/2laPWbDh6hNW3F\n4iYrzIdp5Kk6rdgBM4w3Y49GH0gsm2zbH1fmNaf4klsepSdyMuwt+K4WngYA\nXrCJ\r\n=pOlL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8ksDn3vnFf5LqYOk8PhaNv80OOKzrwV0Rz8+K98/w8AIhANsLGPYetBqJKY4fXGrfCcLN4JIrMP1hbVUudDGkP4BZ"}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.3.3_1555207699145_0.8347428495252407"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.4.1":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.4.1","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc && yarn docs","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","docs":"rm -rf ./docs && typedoc --mode file --excludePrivate --out ./docs","clean-install":"rm -rf node_modules && yarn install-with-audit","install-with-audit":"yarn install --audit && yarn audit","lint":"tslint 'src/**/*.ts'","shell":"bash","test":"yarn run build-all && scripts/runTests.sh"},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13","sprintf-js":"^1.1.2"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","@types/sprintf-js":"^1.1.2","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","junit-bark":"^1.1.1","nyc":"^13.3.0","tap-spec":"^5.0.0","tslint":"^5.13.0","typedoc":"^0.14.2","marked":"^0.6.2","typescript":"^3.3.3"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.4.1","dist":{"shasum":"0c88953b2f3b3c6dbb536727c33d85f3c5918669","integrity":"sha512-921IsnhT4icZy7pzEiuqw1jh80xC0Se5siVbreAAGDRvgf4PvvUTO6rspq1jKBDG3oyFzdJLs0PSG2qLAqpGOw==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.4.1.tgz","fileCount":160,"unpackedSize":229472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvcSDCRA9TVsSAnZWagAA9jYP/16gSUBzYQh44F8Ia/c0\nd+rZdwtaVv64Fl4nb7U3cA1xgxrXjdZqdjqkTXtcy07xsUAvanD77uTDk+gf\nkRsYsWaYVRty3XJR4oR0HvyneJNvIgXEj84qb6Ju7gRwJfbT7Z+jh/5gflUA\nWN/dRihZCyfDEYUt24GgKMVk4msJr04uid7fgZUEH81MV1E1rvO3t4CPaOyd\n1OAzxRumojd0C9tRGLFTraEoAYAjiie5hwIafmZ+KnJVEa6YFT6O/p+AhCqK\n1sn0jNAQHDxBKiiZcKGxzxBNXC5QUePnkNjwUx3BLNhEwfmU08PM6i8TaCht\n4cqGhl63v2CubMUQ19cH8jLnuXxCLU9nzpq4YgM6IGhXR5W+vvSIDdd13q+0\nF79LFhePP+jqGhiToKlMISin+hgilK7HwFp/2inVGwvbCnNH9AYtCtJnm9qz\n08W7KD+N1sA5vildlvG0nbDvqLoEM1auMaQHiqOrh42vvslmFJlp8w4VokJR\n9gxdxkVboKCqgDxIr2vtOSEXSva0+7bPe48DKN67WI6OgoBeWfVL4DiP7rFs\nuHykO2NR2gH02uhLGC+NJWqcT3iAubSe1Ca8U/eoEU1IpdVk4DlTe7sHiXX6\nRwmI0M7ZKautbhn4yXIMBfg7yy2iOvFUJxxnAa2v6zbJBtyi08XSo48pqiGh\nzv6Z\r\n=iXdo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCg/ytpc+3rESFZbNp6+o5Osbr0vqSYqWqS1OIktxj4hQIgGMda4sOkkHzmStkLznNp5/3QMauy76bnASeBCawBb0o="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.4.1_1555940481819_0.9655928377333385"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.4.2":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.4.2","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc && yarn docs","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","docs":"rm -rf ./docs && typedoc --mode file --excludePrivate --out ./docs","clean-install":"rm -rf node_modules && yarn install-with-audit","install-with-audit":"yarn install --audit && yarn audit","lint":"tslint 'src/**/*.ts'","shell":"bash","test":"yarn run build-all && scripts/runTests.sh"},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13","sprintf-js":"^1.1.2"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","@types/sprintf-js":"^1.1.2","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","junit-bark":"^1.1.1","nyc":"^13.3.0","tap-spec":"^5.0.0","tslint":"^5.13.0","typedoc":"^0.14.2","marked":"^0.6.2","typescript":"^3.3.3"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.4.2","dist":{"shasum":"7b9284825e7466cb0b9a5788fff34c2831df38e9","integrity":"sha512-OjlHWmK+oXHbQ7hIqmRtLG/7VHDrtQybNb1jS8K4hlYus/dtTKMGlirfhwkcHEcRTld9tVCf4eDFu+9MuGJ6jg==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.4.2.tgz","fileCount":160,"unpackedSize":229633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvcWNCRA9TVsSAnZWagAAJB0P/RxD0UD2lgY3nXsnotg+\nAoEX2i8DY6qP2+ArHAywnFBrExovFUz8RWGffTyRpOEDp54A8zAoD9c5pIEK\nVjoE3Q9XZkRtlIf6hBVhM1m4/pSad5DYDrD4UZX0MGvt7DcH2s4goBktuWWH\n/xhBu9/PjZk5GpnZSUzeaYUMsJ1jZTe1xI28MeJS5eCMglpbzH3qOH1e1PVm\nHCqNJB+qdEKm9PZO8sELHeGyu9pvvx3w3f8/YrA8SBt2W2v6W60R67uBGrNe\nz8U1qZ6ukYHepXF/eS7iCYYHM44d5kfrNRTjZgDrWiBWP3PpFsgwKE8YQ2KU\nBPP9IiEL6NDKG+FEE55xT74OQZbpGvgjqYot60sF4JXdrAG0t46K9qlSKN8p\n8yiDLgxQ+TfRiKQOHoLvMkgHFngvofs3kE6wPnvNLBIwt2/NAqGJZfAY6ObN\n4H2sMAcBFrGnMHxVqQ/t9AbHj58ts20SX0Hirr9pdHs97RYpKUfekTUfneEG\nbdEybg1ODQKH7GN5L+/7OsD4YcZoJBpAE18c9n37qXWZLjlNJ9t/UBBpO2LD\n63ZuaQTG+fqLur2uTtXnDH35XESF5/jQVmRf1TpWmueFKa1v0bQBT/FOzooX\nHL2cOj6XrSl2sgdszE/Eg7JS56jhMBdLqmvjf7qp5Pdz0wrkUAKQ7xe5DAjm\n/OhL\r\n=9yOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKc1xWrkvH4DJ2BMbnOhvPa8ZWZ2rI11oT7dw/qrW7ZwIgd1OP+xuAK2r8GapeQSrySiKv02q4Dgbjh5UpB634vW8="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.4.2_1555940748689_0.7741030897366521"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"},"0.4.3":{"name":"typescript-lambda-api","description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","version":"0.4.3","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"},"scripts":{"build":"yarn run lint && rm -rf dist && tsc && yarn docs","build-all":"yarn run install-with-audit && yarn run build && yarn run build-tests","build-tests":"rm -rf ./tests/js && tsc -p ./tests","docs":"rm -rf ./docs && typedoc --mode file --excludePrivate --out ./docs","clean-install":"rm -rf node_modules && yarn install-with-audit","install-with-audit":"yarn install --audit && yarn audit","lint":"tslint 'src/**/*.ts'","shell":"bash","test":"yarn run build-all && scripts/runTests.sh"},"main":"dist/typescript-lambda-api.js","typings":"dist/typescript-lambda-api.d.ts","author":{"name":"Matthew Snoddy"},"license":"MIT","nyc":{"check-coverage":true,"per-file":true,"lines":70,"statements":70,"functions":70,"branches":70,"exclude":["tests/**/*"]},"dependencies":{"@types/aws-lambda":"^8.10.19","fast-json-patch":"^2.0.7","inversify":"^5.0.1","lambda-api":"^0.10.1","marky":"^1.2.1","openapi3-ts":"^1.2.0","reflect-metadata":"^0.1.13","sprintf-js":"^1.1.2"},"devDependencies":{"@types/js-yaml":"^3.12.0","@types/node":"^10.12.24","@types/sprintf-js":"^1.1.2","alsatian":"^2.3.0","aws-sdk":"^2.404.0","js-yaml":"^3.12.2","junit-bark":"^1.1.1","nyc":"^13.3.0","tap-spec":"^5.0.0","tslint":"^5.13.0","typedoc":"^0.14.2","marked":"^0.6.2","typescript":"^3.3.3"},"licenseText":"MIT License\n\nCopyright (c) 2019 Matthew Snoddy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"typescript-lambda-api@0.4.3","dist":{"shasum":"ebbc1a30f9c230043e6483651afc5fe9a94a247f","integrity":"sha512-q2RakF2j0DeS8j89hyJs7F84CpGJyIPLoJluKnv8f6IxH+MxzqGFrQNvIcPOiKGu0U1012iHbylufCG+X+aHKQ==","tarball":"https://registry.npmjs.org/typescript-lambda-api/-/typescript-lambda-api-0.4.3.tgz","fileCount":160,"unpackedSize":232395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvgwXCRA9TVsSAnZWagAAMykP/0W/e59BhZAowHzVNelH\nG3mU6UU70whNBMAuUV0k7QQJCxYHHWLKjuHLRv83o/cRlm3VVK7oo2CrqqoW\nOXokilWfkntEQ5V+DgcG+Xr3W7Oo5Z/+qUGG8a9tPFdC+tE8B/HZqBYW6BpP\n2WmHHPBLLQ0RvV3Dz0x0apqiKKsY5CAThHzL/fpUAZk5H8yFE6E0GzTr5/h/\n0uIxomFJ3+V4HHJvENGeE9x1y+cJL4P9qyb72ID5+g2LAxpVC131/mA8st3X\nwIVZtS3qQpiZMHweeLVhWUecEbk3rop4o85U2/3RIJBGOYYH7TDdHB4kusuY\n2/R+w+S31UWumLfm8FIXfYTRHR48RoDMeWnGS4DiinDOABle+f8WIrF471CO\nHOdhcjCqjzckDHyxGk4o+jPB5nDurMnKd6hcHz9E/MUtc7Pc25vPUH/apEzn\n1KC40srez8wBUNpqIzC27hQrTretKtu5xSmkQhIDuSnD6XwghoPj3zJMtsbA\nbdCL+7u+abe0McrNca1of4+qHP2e6kYpf2lsQunty9zlY8HKknkazZkMGdfj\n/zIie6JckzGvSNJ7cTr4qUxZEaC4psRVxvl1ND0TLIm56OaucaRUfk7opyMq\nNMt81ooRdEenDRW0ZBarhVxw2HZPBQ+P9dhYuYOYtGY1lALfxyl1FZ+vXU+t\nCOPf\r\n=bACD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCV+SKNA+ovz722MdkwIxzc7enVNIyoeCjVcuzHdBiBMAIgd9DR4b8lPcR2mU8xeEzNoX/OYuG+uNa1X39glytZPzM="}]},"maintainers":[{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"}],"_npmUser":{"name":"djfdyuruiry","email":"djfdyuruiry@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-lambda-api_0.4.3_1555958805879_0.7499736126618604"},"_hasShrinkwrap":false,"deprecated":"Renamed to ts-lambda-api"}},"time":{"created":"2019-02-14T21:25:44.770Z","0.0.1":"2019-02-14T21:25:44.900Z","modified":"2022-05-22T13:44:27.610Z","0.0.2":"2019-02-14T21:39:18.578Z","0.0.3":"2019-02-14T22:01:41.803Z","0.0.4":"2019-02-14T22:42:14.412Z","0.0.5":"2019-02-14T22:45:26.123Z","0.0.6":"2019-02-14T22:46:23.853Z","0.0.7":"2019-02-14T22:54:41.256Z","0.0.8":"2019-02-15T00:59:39.438Z","0.0.9":"2019-02-15T21:53:43.784Z","0.1.0":"2019-02-15T22:56:27.345Z","0.1.1":"2019-02-15T23:34:20.888Z","0.1.2":"2019-02-16T10:38:00.697Z","0.1.3":"2019-02-16T11:00:20.391Z","0.1.4":"2019-02-16T11:46:19.969Z","0.1.5":"2019-02-16T12:45:25.806Z","0.1.6":"2019-02-16T12:50:39.795Z","0.2.0-rc":"2019-02-18T00:51:38.333Z","0.2.0":"2019-02-18T00:58:19.046Z","0.2.1":"2019-02-18T19:05:58.638Z","0.2.2":"2019-02-18T20:21:11.752Z","0.2.3":"2019-02-18T21:50:52.113Z","0.3.0":"2019-02-24T23:27:46.385Z","0.3.1":"2019-04-08T21:48:51.777Z","0.3.2":"2019-04-13T18:33:38.856Z","0.3.3":"2019-04-14T02:08:19.383Z","0.4.1":"2019-04-22T13:41:21.958Z","0.4.2":"2019-04-22T13:45:48.889Z","0.4.3":"2019-04-22T18:46:46.104Z"},"maintainers":[{"email":"npm@npmjs.com","name":"npm"},{"email":"djfdyuruiry@gmail.com","name":"djfdyuruiry"}],"description":"Build REST API's using Typescript & AWS Lambda. Support for decorator based routing and dependecy injection using InversifyJS. This project is built on top of the wonderful lambda-api package.","author":{"name":"Matthew Snoddy"},"license":"MIT","readme":"# typescript-lambda-api\n\nBuild REST API's using Typescript & AWS Lambda.\n\n[NPM Package](https://www.npmjs.com/package/typescript-lambda-api)\n[GitHub Repo](https://github.com/djfdyuruiry/typescript-lambda-api/)\n\nRead the full `typedoc` documentation: https://djfdyuruiry.github.io/typescript-lambda-api/\n\nFramework Features:\n\n- Decorator based routing for API controllers and endpoint methods\n- Decorator based parameter binding for endpoint methods (from body, path & query parameters and headers)\n- Built in support for applying JSON patch operations\n- API controller dependency injection using [InversifyJS](https://github.com/inversify/InversifyJS)\n- Supports invoking your API from both `Amazon API Gateway` and `Amazon Load Balancer`\n\nThis project is built on top of the wonderful [lambda-api](https://github.com/jeremydaly/lambda-api) framework.\n\n----\n\n**Quickstart**\n\n- [Creating a new API](#create-api)\n- [Deploy to AWS Lambda](#aws-deploy)\n    - [Invoke AWS Lambda](#invoke-lambda)\n\n\n**Docs**\n\n- [Routing](#routing)\n    - [Controller Routes](#controller-routes)\n    - [Endpoint Routes](#endpoint-routes)\n    - [Path Parameters](#path-params)\n- [Request Parameter Binding](#request-binding)\n- [Responses](#responses)\n- [Authentication & Authorization](#auth-authorization)\n    - [Authentication and Principals](#auth-princ)\n    - [Basic Authentication](#basic-auth)\n    - [Access Principal Context](#endpoint-princip)\n    - [Unauthenticated Endpoints](#no-auth-endpoints)\n    - [Custom Authentication](#custom-auth)\n    - [Authorization](#authorization)\n- [Error Handling](#errors)\n    - [Error Interceptors](#error-interceptors)\n    - [Manual Error Interceptors](#manual-error-interceptors)\n    - [Catching Errors](#catching-errors)\n    - [Framework Error Handling](#framework-errors)\n- [JSON Patch Requests](#json-patch)\n- [Request / Response Context](#req-res-context)\n    - [Extending Controller Class](#extend-controller)\n    - [Using Decorators](#use-decorators)\n- [Dependency Injection](#di)\n- [Configuration](#config)\n    - [lambda-api](#lambda-api-config)\n    - [Reference](#config-reference)\n- [Logging](#logging)\n    - [Writing Logs](#logging-writing)\n    - [API](#logging-api)\n    - [lambda-api](#lambda-api-logging)\n- [OpenAPI (Swagger)](#open-api)\n    - [Decorators](#open-api-decorators)\n    - [YAML Support](#open-api-yaml)\n    - [Authentication](#open-api-auth)\n- [Testing](#testing)\n\n- [Useful Links](#useful-links)\n\n---\n\n## <a id=\"create-api\"></a>Creating a new API\n\n---\n\nThis is a short guide to creating your first API using `typescript-lambda-api`. It is somewhat opinionated about project structure, but most of this can be easily customised.\n\n**Note: Node.js v8 & Typescript v3 or newer are required to use this package.**\n\n- Create a directory for your project and run `npm init` to create your `package.json`\n\n- Install required packages:\n\n**Ensure the `@types/node` package you install matches your version of Node.js**\n\n```shell\nnpm install typescript-lambda-api\nnpm install -D typescript @types/node aws-sdk\n```\n\n- Open `package.json` and add a script to enable access to the Typescript compiler:\n\n```json\n{\n    \"scripts\": {\n        \"tsc\": \"tsc\"\n    }\n}\n```\n\n- Create a new file named `tsconfig.json`, add the following:\n\n```json\n{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"moduleResolution\": \"node\",\n        \"emitDecoratorMetadata\": true,\n        \"experimentalDecorators\": true,\n        \"strict\": false,\n        \"baseUrl\": \".\",\n        \"outDir\": \"dist\",\n        \"paths\": {\n            \"*\": [\n                \"node_modules/*\"\n            ]\n        },\n        \"target\": \"es2017\",\n        \"lib\": [\n            \"es2017\"\n        ]\n    },\n    \"include\": [\n        \"src/**/*\"\n    ]\n}\n```\n\n**Note: `emitDecoratorMetadata`, `experimentalDecorators` and `strict` flags are required to be set as shown above to compile your app**\n\n- Create a new directory named `src`\n\n- Create a new file named `src/api.ts`, add the following:\n\n```typescript\nimport * as path from \"path\"\n\nimport { AppConfig, ApiLambdaApp } from \"typescript-lambda-api\"\n\nconst appConfig = new AppConfig()\n\nappConfig.base = \"/api/v1\"\nappConfig.version = \"v1\"\n\nconst controllersPath = path.join(__dirname, \"controllers\")\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n\nexport async function handler(event, context) {\n    return await app.run(event, context)\n}\n```\n\n- Add a `src/controllers` directory\n\n- Create a new file in `controllers` named `HelloWorldController.ts`, add the following:\n\n```typescript\nimport { injectable } from \"inversify\"\nimport { apiController, Controller, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/hello-world\")\n@injectable() // all controller classes must be decorated with injectable\n// extending Controller is optional, it provides convience methods\nexport class HelloWorldController extends Controller {\n    // GET, POST, PUT, PATCH and DELETE are supported\n    @GET()\n    public get() {\n        return {\n            \"hello\": \"world\"\n        }\n    }\n\n    // sub routes can be specifed in method decorators\n    @GET(\"/sub-resource\")\n    public getSubResource() {\n        return {\n            \"hello\": \"world\",\n            \"sub\": \"resource\"\n        }\n    }\n}\n```\n\n- Compile the application by running:\n\n```\nnpm run tsc\n```\n\n---\n\n## <a id=\"aws-deploy\"></a>Deploy to AWS Lambda\n\n---\n\n***Note**: AWS supplies the `aws-sdk` package at runtime when running your Lambda applications, so there is no need to include this in your deployment package.*\n\n- Build your application\n\n- Remove dev dependencies from your `node_modules` directory:\n\n```\nrm -rf node_modules\nnpm install --only=prod\n```\n\n*This will **massively** reduce the size of your deployment package*\n\n- Run the following commands to package your app:\n\n```shell\nzip -r dist/lambda.zip node_modules\ncd dist\nzip -r lambda.zip ./\n```\n\n- Upload your lambda using the `dist/lambda.zip` file. Specify `app.handler` as the function handler. See: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html\n\n---\n\n### <a id=\"invoke-lambda\"></a>Invoke Lambda\n\n---\n\n- Create an AWS Load Balancer and point it to your new API Lambda. See: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html\n\n- You can now call your new ALB to see your API in action:\n\n```shell\nwget -qO - https://some.alb.dns.address/api/v1/hello-world/\n```\n- You should see:\n\n```json\n{\"hello\":\"world\"}\n```\n\n----\n\n## <a id=\"routing\"></a>Routing\n\n----\n\nRouting is configured using decorators on both controller classes and endpoint methods. You can also define a global base path (e.x. `/api/v1`) for your API by configuring the `base` property when passing your app configuration to the `ApiLambdaApp` class. (See the `Creating a new API` section)\n\n### <a id=\"controller-routes\"></a>Controller Routes\n\nYou can declare a root path for all methods in a controller using the `apiController` decorator.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, GET, POST } from \"typescript-lambda-api\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class HelloWorldController {\n    @GET()\n    public get() {\n        // handle get /hello-world requests\n    }\n\n    @POST()\n    public post() {\n        // handle post /hello-world requests\n    }\n}\n```\n\n### <a id=\"endpoint-routes\"></a>Endpoint Routes\n\nYou can declare a path for any given method in a controller when using the endpoint decorators. The `apiController` decorator is not required on the class to use this form of routing.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController {\n    @GET(\"/items\")\n    public getItems() {\n        // handle get /store/items requests\n    }\n}\n```\n\n---\n\n### <a id=\"path-params\"></a>Path Parameters\n\nYou can include parameters as part of your routes, when you need to capture parts of the URL.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, pathParam, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    public getItems(@pathParam(\"id\") id: string) {\n        // do something with id\n    }\n}\n```\n\n---\n\nYou can also combine controller and endpoint path parameters.\n\n---\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, pathParam, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store/:storeId\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    public getItem(@pathParam(\"storeId\") storeId: string, @pathParam(\"id\") id: string) {\n        // do something with storeId and id\n    }\n}\n```\n\n**Note all path parameters are passed in as strings, you will need to cast these if required**\n\n----\n\n## <a id=\"request-binding\"></a>Request Parameter Binding\n\n----\n\nDifferent parts of the HTTP request can be bound to endpoint method parameters using decorators.\n\n- `queryParam` - Query string parameter\n- `header` - HTTP header value\n- `fromBody` - Entity from request body, this will be an object if the request contains JSON, otherwise it will simply be a string\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, fromBody, header, queryParam, GET, POST } from \"typescript-lambda-api\"\n\nimport { Thing } from \"./Thing\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class HelloWorldController {\n    @GET()\n    public getThingById(@queryParam(\"id\") id: string) {\n        // do something with id\n    }\n\n    @GET(\"/some/other/route\")\n    public getContentType(@header(\"content-type\") contentType: string) {\n        // do something with contentType\n    }\n\n    @POST(\"/thing\")\n    public addThing(@fromBody thing: Thing) {\n        // do something with thing\n    }\n}\n```\n\n----\n\n## <a id=\"responses\"></a>Responses\n\n----\n\nThere are two ways to respond to requests:\n\n- Return a value from your endpoint method\n- Use the response context to send a response (see `Request / Response Context` section below - the context has convience methods for html, json etc.)\n\nBy default all return values are serialised to JSON in the response body and the `content-type` response header is set to `application/json`. To change this you can use the `produces` and `controllerProduces` decorators.\n\nOnly JSON content types are serialised automatically, all other types simply convert the return value to a string.\n\nTo set the response content type for all methods, use `controllerProduces` on a class.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, controllerProduces, pathParam, produces, GET } from \"typescript-lambda-api\"\n\nimport { Item } from \"./Item\"\n\n@apiController(\"/store/:storeId\")\n@controllerProduces(\"application/xml\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    public getItem(@pathParam(\"storeId\") storeId: string, @pathParam(\"id\") id: string) {\n        let item = this.lookupItem(storeId, id)\n\n        return this.serialiseToXml(item)\n    }\n\n    private lookupItem(storeId: string, id: string) {\n        // go get the item from somewhere, db for example\n    }\n\n    private serialiseToXml(item: Item) {\n        // use 3rd party library to serialise item\n    }\n}\n```\n\nFor an individual method, use `produces`. This will override `controllerProduces` for that method, if present on the controller class.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, produces, GET } from \"typescript-lambda-api\"\n\nimport { Item } from \"./Item\"\n\n@apiController(\"/motd\")\n@injectable()\nexport class MessageOfTheDayController {\n    @GET()\n    @produces(\"text/plain\")\n    public get(){\n        return \"Message of the Day!\"\n    }\n}\n```\n\n----\n\n## <a id=\"auth-authorization\"></a>Authentication & Authorization\n\n----\n\nThis framework supports authenticating requests and authorization for controllers and endpoints. It can be used to configure HTTP authentication, token based auth and role based access control (ACLs).\n\nImplementation is heavily inspired by the Dropwizard framework for Java.\n\n### <a id=\"auth-princ\"></a>Authentication and Principals\n\nAuthentication is preformed by filter classes that are executed before invoking an endpoint; all filter classes implement the `IAuthFilter` interface.\n\nFilters use information from the HTTP request to authenticate the request. If authentication is successful, a filter will return a principal. A principal is a simple class that contains information about the current user/entity that has been granted access to the endpoint.\n\nTo use authentication you must implement your own principal by extending the `Principal` class:\n\n```typescript\nimport { Principal } from \"typescript-lambda-api\"\n\nexport class StoreUser extends Principal {\n    // we will use this later, see the Authorization section\n    private roles: string[] = []\n\n    // you can define your user model properties in this class\n\n    public constructor(name: string) {\n        super(name)\n    }\n}\n```\n\n### <a id=\"basic-auth\"></a>Basic Authentication\n\nHTTP Basic authentication is supported out of the box by the `BasicAuthFilter` filter abstract class. You extend this class to implement your authentication logic:\n\n```typescript\nimport { BasicAuthFilter } from \"typescript-lambda-api\"\n\nimport { StoreUser } from \"./StoreUser\"\n\nexport class StoreAuthFilter extends BasicAuthFilter<StoreUser> {\n    public readonly name: string = StoreAuthFilter.name\n\n    public async authenticate(basicAuth: BasicAuth): Promise<StoreUser | undefined> {\n        let user = this.getUserFromDb(basicAuth.username)\n\n        if (user && this.getUserPassword(user) === basicAuth.password) {\n            // returning a principal signals that the request has been authorized\n            return user\n        }\n    }\n\n    private getUserFromDb(username: string): StoreUser {\n        // get the user details from a database, if it exists, otherwise we return null/undefined\n    }\n\n    private getUserPassword(user: StoreUser): string {\n        // get the user password from a database\n    }\n}\n```\n\nYou register your authentication filter when setting up your application instance:\n\n```typescript\n// build config and controllers path...\nconst app = new ApiLambdaApp(controllersPath, appConfig)\nconst authFilter = new StoreAuthFilter()\n\n// this will protect your endpoints using the auth filter to authenticate requests\napp.middlewareRegistry.addAuthFilter(authFilter)\n// export handler\n```\n\n### <a id=\"endpoint-princip\"></a>Access Principal Context\n\nOnce a user has been authenticated you can pass the principal instance into the target endpoint. You can do this by adding a `principal` parameter decorator to your endpoint method.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, pathParam, principal, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    public getItem(@principal user: StoreUser, @pathParam(\"id\") id: string) {\n        // do something with the user context\n    }\n}\n```\n\n### <a id=\"no-auth-endpoints\"></a>Unauthenticated Endpoints\n\nThere are several situations where you might want to disable authentication for a specific endpoint:\n\n- Healthcheck / Status endpoint\n- Login Endpoint\n- Public API endpoints for unauthenticated users (browsing products without logging in)\n\nTo do this you need to use the `noAuth` and `controllerNoAuth` decorators.\n\nFor an endpoint:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, fromBody, noAuth, principal, GET, POST } from \"typescript-lambda-api\"\n\nimport { LoginRequest } from \"./LoginRequest\"\nimport { StoreUser } from \"./StoreUser\"\n\n@apiController(\"/user\")\n@injectable()\nexport class UserController {\n    @POST(\"/login\")\n    @noAuth\n    public login(@fromBody loginRequest: LoginRequest) {\n        // attempt to log in...\n    }\n\n    @GET(\"/profile\")\n    public login(@principal user: StoreUser) {\n        // only authorised users can call this endpoint...\n    }\n}\n```\n\nFor all endpoints in a controller:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, controllerNoAuth, fromBody, POST } from \"typescript-lambda-api\"\n\nimport { SearchRequest } from \"./SearchRequest\"\n\n@apiController(\"/public\")\n@controllerNoAuth\n@injectable()\nexport class UserController {\n    @POST(\"/search/products\")\n    public searchProducts(@fromBody searchRequest: SearchRequest) {\n        // I can be called without authentication\n    }\n\n    // ...other declared endpoints are also be called without authentication...\n}\n```\n\n### <a id=\"custom-auth\"></a>Custom Authentication\n\nIf you wish to implement popular authentication mechnasims or make your own, you need to implement the `IAuthFilter` interface. It accepts two type parameters:\n\n- `T` - The model class for your authentication data\n- `U` - A principal class\n\nAuthentication data classes are free form, for example:\n\n```typescript\nexport class TokenAuth {\n    public token: string\n}\n```\n\nYour auth filter implementation must provide a method for extracting your authentication data, and a method that uses that data to authenticate the current request.\n\n```typescript\nimport { Request } from \"lambda-api\"\n\nimport { IAuthFilter, Principal } from \"typescript-lambda-api\"\n\nimport { StoreUser } from \"./StoreUser\"\nimport { TokenAuth } from \"./TokenAuth\"\n\nexport class TokenAuthFilter<T extends Principal> implements IAuthFilter<TokenAuth, StoreUser> {\n    // required to be defined for implementations, see:\n    //   https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml\n    public readonly authenticationSchemeName: string = \"Bearer\"\n    public readonly name: string = TokenAuthFilter.name\n\n    public async extractAuthData(request: Request): Promise<TokenAuth | undefined> {\n        // extract the data if the auth header is present\n        if (request.headers[\"Authorization\"]) {\n            return {\n                token: request.headers[\"Authorization\"]\n            }\n        }\n\n        // if you don't return any auth data, the request will be marked as unauthorized\n    }\n\n    public async authenticate(tokenAuth: TokenAuth): Promise<StoreUser | undefined> {\n        let user = this.getUserByTokenFromDb(tokenAuth.token)\n\n        if (user) {\n            return user\n        }\n    }\n\n    private getUserByTokenFromDb(token: string) {\n        // get the user for the token and return the user's details\n    }\n}\n```\n\nTip: You can make your class abstract and then make the `authenticate` method abstract to enable your custom auth filter to be re-usable. This way, you simply extend your custom fiter and implement the authentication logic for your application.\n\n### <a id=\"authorization\"></a>Authorization\n\nTo implement role based authorization you implement the `IAuthorizer` interface.\n\n```typescript\nimport { IAuthorizer } from \"typescript-lambda-api\"\n\nimport { StoreUser } from \"./StoreUser\"\n\nexport class StoreAuthorizer implements IAuthorizer<StoreUser> {\n    public readonly name: string = StoreAuthorizer.name\n\n    public async authorize(user: StoreUser, role: string): Promise<boolean> {\n        return user.roles.includes(role)\n    }\n}\n```\n\nWhen a user is successfully authorized by an auth filter, this returns a principal which is passed to the configured authorizer if a resource is marked as restricted. To restrict all endpoints in a controller, use the `controllerRolesAllowed` decorator:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, controllerRolesAllowed, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@controllerRolesAllowed(\"STORE_GUEST\", \"STORE_MANAGER\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    public getItem(@pathParam(\"id\") id: string) {\n        // this endpoint can only be accessed with principles that are authorized with the STORE_MANAGER role\n    }\n}\n```\n\nYou can restrict a single enpoint using the `rolesAllowed` decorator:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, rolesAllowed, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController {\n    @GET(\"/item/:id\")\n    @rolesAllowed(\"STORE_MANAGER\")\n    public getItem(@pathParam(\"id\") id: string) {\n        // this endpoint can only be accessed with principles that are authorized with the STORE_MANAGER role\n    }\n}\n```\n\nYou can combine both ther controller and endpoint decorators for roles. In this case, if endpoint roles are present, they overrides the controller roles.\n\nYou register your authentication filter when setting up your application instance:\n\n```typescript\n// build config and controllers path...\nconst app = new ApiLambdaApp(controllersPath, appConfig)\nconst authorizer = new StoreAuthorizer()\n\n// this will protect your endpoints using the authorizer to check access roles\napp.middlewareRegistry.addAuthorizer(authorizer)\n// export handler\n```\n----\n\n## <a id=\"errors\"></a>Error Handling\n\n----\n\nWhen an unexpected error is thrown in one of your endpoints, you can choose how to handle this. There are three general techniques:\n\n1. Use an error interceptor\n1. Catch the error in your endpoint logic\n1. Let the framework handle the error\n\n### <a id=\"error-interceptors\"></a>Error Interceptors\n\nError interceptors are classes that can be configured to be invoked when an error occurs when calling a given controller or endpoint. Interceptors extend the `ErrorInterceptor` class and provide an implementation for an `intercept` method.\n\nInterceptor instances are built using the InversifyJS app container, so you can add any dependencies as constructor parameters if you configure the container correctly.\n\n```typescript\nimport { injectable } from \"inversify\";\n\nimport { ApiError, ErrorInterceptor } from \"typescript-lambda-api\"\n\n@injectable()\nexport class StoreErrorInterceptor extends ErrorInterceptor {\n    public async intercept(apiError: ApiError) {\n        // endpointTarget and controllerTarget will set before this is called\n        // (they are set to the controller and endpoint that threw the error)\n        apiError.response.status(500)\n\n        return {\n            statusCode: 500,\n            errorMessage: \"Error getting items for store\"\n        }\n    }\n}\n```\n\nIn your controller you can then use the `controllerErrorInterceptor` decorator to specify the error interceptor to use:\n\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, controllerErrorInterceptor, GET } from \"typescript-lambda-api\"\n\nimport { StoreErrorInterceptor } from \"./StoreErrorInterceptor\"\n\n@apiController(\"/store\")\n@controllerErrorInterceptor(StoreErrorInterceptor)\n@injectable()\nexport class StoreController {\n    @GET(\"/items\")\n    public getItems() {\n        return this.getItemsFromDb()\n    }\n\n    private getItemsFromDb() {\n        // get all the items from the DB, may error\n    }\n}\n```\n\nYou can also use the `errorInterceptor` decorator on individual endpoints for more fine grained error control. Endpoint interceptors will override controller interceptors.\n\n### <a id=\"manual-error-interceptors\"></a>Manual Error Interceptors\n\nYou can manually register interceptors when setting up your application instance:\n\n```typescript\n// build config and controllers path...\nconst app = new ApiLambdaApp(controllersPath, appConfig)\nconst errorInterceptor = new StoreErrorInterceptor()\n\n// this will intercept errors thrown by any endpoint\napp.middlewareRegistry.addErrorInterceptor(errorInterceptor)\n// export handler\n```\n\nYou can intercept only the errors thrown by an endpoint by setting `endpointTarget`:\n\n```typescript\n// pattern for endpoints is {controller class name}::{endpoint method name}\nerrorInterceptor.endpointTarget = \"StoreController::getItems\"\n```\n\nYou can intercept only the errors thrown by a controller by setting `controllerTarget`:\n\n```typescript\n// controllers are identified by class name\nerrorInterceptor.controllerTarget = \"StoreController\"\n```\n\n**Note: using this type of interceptor is overridden if the target controller or endpoint has an interceptor configured**\n\n### <a id=\"catching-errors\"></a>Catching Errors\n\nYou can use a try/catch block and the `Response` class to handle errors:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, Controller, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController extends Controller {\n    @GET(\"/items\")\n    public getItems() {\n        try {\n            return this.getItemsFromDb()\n        } catch (ex) {\n            // log ex...maybe?\n\n            this.response.status(500).send({\n                statusCode: 500,\n                errorMessage: \"Error occurred getting items from backend\"\n            })\n        }\n    }\n\n    private getItemsFromDb() {\n        // get all the items from the DB\n    }\n}\n```\n\n*Note: this can also be done by injecting the `Response` class instance using the `response` parameter decorator, instead of extending `Controller`.*\n\n### <a id=\"framework-errors\"></a>Framework Error Handling\n\nIf you simply preform your logic in your endpoint method without catching any errors yourself, the framework will catch the error and return a HTTP 500 response with error details. Below is a JSON snippet showing an example.\n\n```json\n{\n    \"error\": \"...some error that the framework caught when calling an endpoint....\"\n}\n```\n\n----\n\n## <a id=\"json-patch\"></a>JSON Patch Requests\n\n----\n\nThis library supports [JSON Patch](http://jsonpatch.com/) format for updating entities without having to upload the entire entity. To use it in your endpoints, ensure your controller extends the `Controller` class, an example is below:\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, produces, JsonPatch, PATCH } from \"typescript-lambda-api\"\n\nimport { Item } from \"./Item\"\n\n@apiController(\"/store\")\n@injectable()\nexport class StoreController extends Controller {\n    @PATCH(\"/item/:id\")\n    public modifyItem(@queryParam(\"id\") id: string, @fromBody jsonPatch: JsonPatch) {\n        let item = this.lookupItem(id)\n\n        // apply the patch operation\n        let modifiedItem = this.applyJsonPatch<Item>(jsonPatch, item)\n\n        // do something with modifiedItem\n    }\n\n    private lookupItem(id: string) {\n        // go get the item from somewhere, db for example\n    }\n}\n```\n\n**Under the hood, the API uses the [fast-json-patch](https://www.npmjs.com/package/fast-json-patch) package**\n\n----\n\n## <a id=\"req-res-context\"></a>Request / Response Context\n\n----\n\nIf you want to read request bodies or write to the response, there are several supported approaches.\n\n### <a id=\"extend-controller\"></a>Extending Controller Class\n\nIf you extend the controller class, you get access to the request and response context.\n\n```typescript\nimport { injectable } from \"inversify\"\n\nimport { apiController, Controller, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class HelloWorldController extends Controller {\n    @GET()\n    public get() {\n        let queryStringParam = this.request.query[\"someField\"]\n\n        // ... do some logic ...\n\n        this.response.html(\"<h1>Hello World</h1>\");\n    }\n}\n```\n\n### <a id=\"use-decorators\"></a>Using Decorators\n\nYou can use parameter decorators to inject the request and response context.\n\n```typescript\nimport { injectable } from \"inversify\"\nimport { Request, Response } from \"lambda-api\"\n\nimport { apiController, request, response, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class HelloWorldController {\n    @GET()\n    public get(@request request: Request, @response response: Response) {\n        let queryStringParam = request.query[\"someField\"]\n\n        // ... do some logic ...\n\n        response.html(\"<h1>Hello World</h1>\");\n    }\n}\n```\n\n**The `Request` and `Response` classes are documented in the [lambda-api](https://github.com/jeremydaly/lambda-api) package.**\n\n----\n\n## <a id=\"di\"></a> Dependency Injection\n\n----\n\nConfiguring the IOC container to enable dependency injection into your controllers is easy. Once you build a `ApiLambdaApp` instance you can call the `configureApp` method like below:\n\n```typescript\n// build config and controllers path...\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n\napp.configureApp(container => {\n    // bind interface to implementation class, for example\n    container.bind(IMyService)\n        .to(MyServiceImplementation)\n})\n\n// export handler\n```\n\n**Note: Any classes that you are going to inject need to be decorated with `injectable`, any subclasses are also required to be decorated**\n\nIn your controllers you can then use the registered types as constructor parameters:\n\n```typescript\nimport { inject, injectable } from \"inversify\"\n\nimport { apiController, GET } from \"typescript-lambda-api\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class MyController {\n    public constructor(@inject(IMyService) private readonly service: IMyService) {\n    }\n\n    @GET()\n    public get() {\n        // use injected service to do cool stuff\n    }\n}\n```\n\nSee the [InversifyJS](https://github.com/inversify/InversifyJS) package documentation for full guidance how to use the `Container` class to manage dependencies.\n\n----\n\n## <a id=\"config\"></a>Configuration\n\n----\n\nWhen building an application instance you pass a `AppConfig` instance to the constructor. If you want to provide your own application config it is recommended to extend this class .\n\n```typescript\nimport { AppConfig } from \"typescript-lambda-api\"\n\nimport { DatabaseConfig } from \"./DatabaseConfig\"\n\nexport class MyCustomConfig extends AppConfig {\n    public databaseConfig: DatabaseConfig\n}\n```\n\nYou can then configure the IOC container to bind to your configuration instance.\n\n```typescript\n// build controllers path...\nconst appConfig: MyCustomConfig = buildConfig()\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n\napp.configureApp(container => {\n    container.bind(MyCustomConfig)\n        .toConstantValue(appConfig)\n}\n\n// export handler\n```\n\nAfter which, you can inject your config into your controllers or services.\n\n```typescript\nimport { inject, injectable } from \"inversify\"\n\nimport { apiController, GET } from \"typescript-lambda-api\"\n\nimport { MyCustomConfig } from \"./MyCustomConfig\"\n\n@apiController(\"/hello-world\")\n@injectable()\nexport class MyController {\n    public constructor(@inject(MyCustomConfig) private readonly config: MyCustomConfig) {\n    }\n\n    @GET()\n    public get() {\n        return this.getStuffFromDb()\n    }\n\n    private getStuffFromDb() {\n        // use this.config to configure a database connection\n    }\n}\n```\n\n**Note: The `AppConfig` class supports all the configuration fields documented in the [lambda-api](https://github.com/jeremydaly/lambda-api) package.**\n\n### <a id=\"config-reference\"></a>Reference\n\nFor a complete reference see the [AppConfig](https://djfdyuruiry.github.io/typescript-lambda-api/classes/appconfig.html) docs.\n\n### <a id=\"lambda-api-config\"></a>lambda-api\n\nConfiguring `lambda-api` directly can be done by calling the `configureApi` method like below:\n\n```typescript\nimport * as xmljs from \"xml-js\"\n\n// build config and controllers path...\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n\napp.configureApi(api: API => {\n    // add middleware handler, for example\n    api.use((req,res,next) => {\n        // parses any incoming XML data into an object\n        if (req.headers[\"content-type\"] === \"application/xml\") {\n            req.body = xmljs.xml2json(req.body, {compact: true})\n        }\n\n        next()\n    })\n})\n// export handler\n```\n\n**Note: any middleware handlers and manual routes will not apply auth filters, authorizers or error interceptors**\n\nSee the [lambda-api](https://github.com/jeremydaly/lambda-api) package documentation for guidance how to use the `API` class.\n\n## <a id=\"logging\"></a>Logging\n\nA logger interface is provided that can write messages to standard out. You can configure this logger using the `serverLogging` key in the `AppConfig` class. See the [Config Reference](#config-reference) for details on options available.\n\nBy default, the logger is set to `info` and outputs messages as simple strings.\n\nThe format of the messages written out is:\n\n```\n        ISO 8601 Datetime    level class                   message\n    vvvvvvvvvvvvvvvvvvvvvvvv vvvv vvvvvvvv   vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n    2019-04-21T16:38:09.680Z INFO Endpoint - Invoking endpoint: [GET] /open-api.yml\n```\n\nBelow is some example output, include a stack trace from an `Error` instance:\n\n```\n2019-04-21T22:20:29.622Z INFO ApiLambdaApp - Received event, initialising controllers and processing event\n2019-04-21T22:20:29.647Z INFO Server - Processing API request event for path: /test/\n2019-04-21T22:20:29.832Z INFO Endpoint - [GET] /test - Authenticating request\n2019-04-21T22:20:29.833Z ERROR Endpoint - [GET] /test - Error processing endpoint request\nError: authenticate failed\n    at TestAuthFilter.authenticate (/home/matthew/src/ts/typescript-lambda-api/tests/src/test-components/TestAuthFilter.ts:25:19)\n    at Endpoint.authenticateRequest (/home/matthew/src/ts/typescript-lambda-api/dist/api/Endpoint.js:15:2640)\n    at processTicksAndRejections (internal/process/task_queues.js:86:5)\n    at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:56:3)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:880:11)\n    at runMain (/home/matthew/.node-spawn-wrap-13541-13c0098ec456/node:68:10)\n    at Function.<anonymous> (/home/matthew/.node-spawn-wrap-13541-13c0098ec456/node:171:5)\n    at Object.<anonymous> (/home/matthew/src/ts/typescript-lambda-api/node_modules/nyc/bin/wrap.js:23:4)\n    at Module._compile (internal/modules/cjs/loader.js:816:30)\n    at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)\n```\n\nIf you set the `format` to `json` the log messages will look like this:\n\n```json\n {\n    \"level\": \"INFO\",\n    \"msg\": \"Endpoint - Invoking endpoint: [GET] /open-api.yml\",\n    \"time\": 1555865906882 // milliseconds since epoch\n}\n```\n\nThis format matches the keys used by the `lambda-api` framework in it's output.\n\n### <a id=\"logging-writing\"></a>Writing Logs\n\nTo write logs you will ned a logger instance. There are three ways to get one:\n\n- Extend the `Controller` class in your controller:\n\n```typescript\nimport { injectable } from \"inversify\"\nimport { Response, Request } from \"lambda-api\"\n\nimport { apiController, Controller, GET } from \"../../../dist/typescript-lambda-api\"\n\n@apiController(\"/\")\n@injectable()\nexport class TestController extends Controller {\n    @GET()\n    public get() {\n        this.logger.info(\"In GET method!\")\n\n        return \"OK\"\n    }\n}\n```\n\n- Use a `LogFactory` instance to build it:\n\n```typescript\nimport { inject, injectable } from \"inversify\"\nimport { AppConfig, LogFactory, LogLevel } from \"lambda-api\"\n\n@injectable()\nexport class SomeServiceYouMightMake {\n    // get your app config using dependency injection\n    public constructor(@inject(AppConfig) private readonly appConfig: AppConfig)\n\n    public doStuff() {\n        let factory = new LogFactory(appConfig)\n        let logger = factory.getLogger(SomeServiceYouMightMake)\n\n        logger.debug(\"Inside doStuff!\")\n    }\n}\n```\n\n- Use the `LogFactory` static methods to build it:\n\n```typescript\nimport { LogFactory, LogLevel } from \"lambda-api\"\n\nexport class SomeServiceYouMightMake {\n    public doStuff() {\n        // you can specify the level and format of the log\n        let logger = LogFactory.getCustomLogger(SomeServiceYouMightMake, LogLevel.debug, \"json\")\n\n        logger.debug(\"Inside doStuff!\")\n    }\n}\n```\n\n### <a id=\"logging-api\"></a> Logger API\n\nThe logging API supports formatting of messages using the [`sprintf-js`](https://www.npmjs.com/package/sprintf-js) npm module, simply pass in your arguments and put placeholders in your message string:\n\n```typescript\nlogger.warn(\"Hello there %s, how are you?\", \"Roy\")\nlogger.debug(\"Task status: %s. Task data: %j\", \"success\", {event: \"run batch\"})\n```\n\nUsing this will help to speed up your app if you do a lot of logging, because uneccessary work to convert values to strings and JSON for debug messages will not take place if a higher error level is set.\n\n----\n\nBelow is an example of the methods available on logger instances:\n\n```typescript\nimport { LogFactory, LogLevel } from \"lambda-api\"\n\nexport class SomeServiceYouMightMake {\n    public doStuff() {\n        let logger = LogFactory.getCustomLogger(SomeServiceYouMightMake)\n\n        // different levels\n        logger.trace(\"trace\")\n        logger.fatal(\"fatal\")\n        logger.error(\"error\")\n\n        // log exceptions with stack traces, also supports formatting of message\n        let exception = new Error(\"Bad stuff happened\")\n\n        logger.errorWithStack(\"An error occurred somewhere, error code: %d\", exception, 20000)\n\n        // check if a level is enabled\n        if (logger.debugEnabled()) {\n            logger.debug(\"Mode #%d\", 355)\n        }\n\n        if (logger.traceEnabled()) {\n            logger.trace(\"Sending data: %j\", {some: {payload: 2345}})\n        }\n\n        // check if the logging is currenly off (i.e. level is set to `off`)\n        if (logger.isOff()) {\n            // react to the cruel reality....\n        }\n\n        // pass level in as parameter\n        logger.log(LogLevel.info, \"Manual call to the %s method\", \"log\")\n\n        // check level is enabled using aparameter\n        if (logger.levelEnabled(LogLevel.info)) {\n            logger.info(\"I am enabled!\")\n        }\n    }\n}\n```\n\n### <a id=\"lambda-api-logging\"></a>lambda-api\n\nLogging is also provided by the [lambda-api](https://github.com/jeremydaly/lambda-api) package, use the `AppConfig` instance passed to `ApiLambdaApp` to configure logging using the `logger` key. See the [Config Reference](#config-reference) for details on options available.\n\n----\n\n## <a id=\"open-api\"></a>OpenAPI (Swagger)\n\n----\n\nThe OpenAPI Specification, FKA Swagger, is supported out of the box. If you are not familar with it, check out https://github.com/OAI/OpenAPI-Specification\n\n**This framework only supports OpenAPI v3**\n\nThe following features are supported:\n\n- Generating of an OpenAPI Specification, which includes:\n    - All endpoints with full path and HTTP method\n    - Custom names and descriptions for endpoints\n    - Group endpoints together by API\n    - Endpoint query, path and header parameters (set by parameter decorators)\n    - Response content type headers (set by `produces` or `controllerProduces` decorators)\n    - Request and Response bodies: class types, primitive values and files\n    - Response HTTP status codes\n    - HTTP Basic security scheme (when a basic auth filter is configured)\n    - Custom auth filter security schemes\n- Specification files can be generated in `JSON` or `YAML` format (see [YAML Support](#open-api-yaml))\n\nTo enable it, use the `openApi` property in the `AppConfig` class when building your app:\n\n```typescript\n// build controllers path...\nconst appConfig = new AppConfig()\n\nappConfig.base = \"/api/v1\"\nappConfig.version = \"v1\"\nappConfig.openApi.enabled = true\n\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n// export handler\n```\n\nYou can then request your specification using the paths:\n\n- `/api/v1/open-api.json` - JSON format\n- `/api/v1/open-api.yml` - YAML format\n\n### <a id=\"open-api-decorators\"></a>Decorators\n\nTo further document your API endpoints you can use OpenAPI decorators.\n\n- Customize the names of APIs and endpoints using `api`:\n\n    ```typescript\n    import { injectable } from \"inversify\"\n    import { api, apiController } from \"typescript-lambda-api\"\n\n    @apiController(\"/some\")\n    @api(\"Awesome API\", \"descripton of API for doing amazing things\") // the second parameter is optional\n    @injectable()\n    export class SomeController {\n        // ... endpoints ...\n    }\n    ```\n\n*The same `@api` name can be used on multiple controllers, meaning you can group by API area rather than controller*\n\n- Add descriptions to APIs and endpoints using `apiOperation`:\n\n    ```typescript\n    @GET()\n    @apiOperation({ name: \"get stuff\", description: \"go get some stuff\"}) // description is optional\n    public get() {\n        return \"OK\"\n    }\n    ```\n\n- Describe endpoint request and response content using `apiRequest` and `apiResponse`:\n\n    ```typescript\n    // using model classes\n    @POST()\n    @apiOperation({name: \"add stuff\", description: \"go add some stuff\"})\n    @apiRequest({class: Person})\n    @apiResponse(201, {class: Person}) // each response is associated with a HTTP status code\n    @apiResponse(400, {class: ApiError})\n    @apiResponse(500, {class: ApiError})\n    public post(@fromBody person: Person) {\n        return person\n    }\n\n    // using primitive types (\"boolean\", \"double\", \"int\", \"number\" or \"string\")\n    @POST(\"/plain\")\n    @apiOperation({ name: \"add some plain stuff\", description: \"go get some plain stuff\"})\n    @apiRequest({type: \"string\"})\n    @apiResponse(200, {type: \"string\"})\n    public postString(@fromBody stuff: string) {\n        return stuff\n    }\n\n    // upload/download files\n    @POST(\"/files\")\n    @apiOperation({ name: \"add file\", description: \"upload a file\"})\n    @apiRequest({contentType: \"application/octet-stream\", type: \"file\"}) // contentType can be used in any request or response definition, inherits controller or endpoint type by default\n    @apiResponse(201, {contentType: \"application/octet-stream\", type: \"file\"})\n    public postFile(@fromBody fileContents: string) {\n        return fileContents\n    }\n\n    // providing custom request/response body example\n    @POST(\"/custom-info\")\n    @apiOperation({\n        name: \"add custom stuff\",\n        description: \"go add some custom stuff\"\n    })\n    @apiRequest({\n        class: Person,\n        example: `{\"name\": \"some name\", \"age\": 22}`,\n        description: \"Details for a person\"\n    })\n    @apiResponse(201, {\n        class: Person,\n        example: `{\"name\": \"another name\", \"age\": 30}`,\n        description: \"Uploaded person information\"\n    })\n    public postCustomInfo(@fromBody person: Person) {\n        return person\n    }\n\n    // no response content, only a status code\n    @DELETE()\n    @apiOperation({name: \"delete stuff\", description: \"go delete some stuff\"})\n    @apiResponse(204)\n    public delete() {\n        this.response.status(204).send(\"\")\n    }\n    ```\n\n    The class `Person` is set as the request and response in several of the examples above. To help the framework provide meaningful request and response examples automatically, you must either:\n\n    1. Provide a public static `example` method in your class, which will be called if found when generating an API spec. (recommended)\n\n    ```typescript\n    export class Person {\n        public name: string\n        public age: number\n        public roles?: string[]\n\n        public static example() {\n            let person = new Person()\n\n            person.name = \"name\"\n            person.age = 18\n            person.roles = [\"role1\", \"role2\", \"roleN\"]\n\n            return person\n        }\n    }\n    ```\n\n    -OR-\n\n    2. Populate your instance in it's constructor with some non null/undefined values.\n\n    ```typescript\n    export class Person {\n        public name: string\n        public age: number\n        public roles?: string[]\n\n        public constructor() {\n            this.name = \"\"\n            this.age = 0\n            this.roles = []\n        }\n    }\n    ```\n\n    *This is required because object properties are not set until a value is assigned, which makes any sort of reflection impossible.*\n\n- Add security schemes to your specification (other than Basic auth) using `apiSecurity` on your authentication filter:\n\n    ```typescript\n    import { apiSecurity, IAuthFilter } from \"typescript-lambda-api\"\n\n    import { User } from \"./User\"\n\n    @apiSecurity(\"bearerAuth\", {\n        type: \"http\",\n        scheme: \"bearer\",\n        bearerFormat: \"JWT\"\n    })\n    export class CustomAuthFilter implements IAuthFilter<string, User> {\n        // ... implementation ...\n    }\n    ```\n\n    This decorator uses the `SecuritySchemeObject` class from the `openapi3-ts` library to describe the security scheme in place. See the source for more information on using this class: [SecuritySchemeObject source](https://github.com/metadevpro/openapi3-ts/blob/ab997f12a63fa215e3b0c08cc293429b97ce0a44/src/model/OpenApi.ts#L314)\n\n### <a id=\"open-api-yaml\"></a>YAML Support\n\nFor `YAML` specification support, you need to install the following packages in your project:\n\n```bash\nnpm install js-yaml\nnpm install -D @types/js-yaml\n```\n\n### <a id=\"open-api-auth\"></a>Authentication\n\nBy default the OpenAPI endpoints do not require authentication. If you wish to apply auth filters when a request is made for a specification, use the `useAuthentication` key in the `openApi` config:\n\n```typescript\n// build controllers path...\nconst appConfig = new AppConfig()\n\nappConfig.base = \"/api/v1\"\nappConfig.version = \"v1\"\nappConfig.openApi.enabled = true\nappConfig.openApi.useAuthentication = true\n\nconst app = new ApiLambdaApp(controllersPath, appConfig)\n// export handler\n```\n\n---\n\n## <a id=\"testing\"></a>Testing\n\n---\n\nFor local dev testing and integration with functional tests see the [typescript-lambda-api-local](https://www.npmjs.com/package/typescript-lambda-api-local) package which enables hosting your API using express as a local HTTP server.\n\nCheck out this project's dev dependencies to see what is required to test API code. The `tests` directory of this repo contains some acceptance tests which will show you how to build mock requests and invoke your application.\n\n---\n\n## <a id=\"useful-links\"></a>Useful links\n\n---\n\nhttps://blog.risingstack.com/building-a-node-js-app-with-typescript-tutorial/\n\nhttps://github.com/jeremydaly/lambda-api\n\nhttps://codeburst.io/typescript-node-starter-simplified-60c7b7d99e27\n\nhttps://www.typescriptlang.org/docs/handbook/decorators.html\n\nhttps://medium.com/@samueleresca/inversion-of-control-and-dependency-injection-in-typescript-3040d568aabe\n\nhttps://github.com/inversify/InversifyJS\n\nhttps://www.npmjs.com/package/marky\n\nhttps://www.meziantou.net/2018/01/11/aspect-oriented-programming-in-typescript\n","readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/djfdyuruiry/typescript-lambda-api.git"}}