{"_id":"shallot","_rev":"25-6185ac00e99b54670ba722c262e27ef6","name":"shallot","dist-tags":{"latest":"1.2.4","master":"1.1.5"},"versions":{"0.1.0":{"name":"shallot","version":"0.1.0","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"bin":{"shallot":"./lib/bin/shallot.js"},"_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"shallot@0.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"6a9c3c1ace855e952b386fbab69108d94092c593","tarball":"https://registry.npmjs.org/shallot/-/shallot-0.1.0.tgz","integrity":"sha512-DVvjv6SOftIBMUjD2XsOSZtfstQ/KZtqMOxA6v+ptp3Ud/CEdDRT+ojaqL10bMHn1ynaCIQ3fDu6Ox835oDwfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEs3C06qFZjWCtYNJbCsytHjo6+EZc+7QoPLoHLcbhLrAiEAkpOFeXDJf+iHExRoAywRfx+g57cjJa8UKZYsL2sDcc4="}]},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}],"directories":{}},"0.2.0":{"name":"shallot","description":"HTTP DSL in CoffeeScript","version":"0.2.0","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"dependencies":{"copperhead":"0.1.x","connect":"2.1.x"},"_npmUser":{"name":"niclashoyer","email":"niclas@verbugt.de"},"_id":"shallot@0.2.0","devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e7fc79ea195382bc68836a3f497ab114e7b3b91f","tarball":"https://registry.npmjs.org/shallot/-/shallot-0.2.0.tgz","integrity":"sha512-C+kGccU1Xwvholbrdj8YUJN1YHqjKhxmVbAlvC8y2EPtUc++vMiIzHGybXjjJxFU7udY9tE/my5QpeJJ8MNkjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpG/hjFz4y3shabu3ZJEJsp9BE6LruRmEf25NICMAmgAiBfCq+lmM/HuYuFHoTM82emAsyJsBs8hHuqiqEm8un61w=="}]},"readme":"","maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}],"directories":{}},"0.2.1-1":{"name":"shallot","description":"HTTP DSL in CoffeeScript","version":"0.2.1-1","author":{"name":"Niclas Hoyer","email":"https://github.com/niclashoyer"},"files":["lib/"],"main":"lib/Shallot.js","repository":{"type":"git","url":"git://github.com/niclashoyer/shallot.git"},"dependencies":{"copperhead":"0.1.x","connect":"2.1.x"},"readme":"# Shallot\nShallot is a HTTP DSL based on coffeescript. It is very similar to\n[zappa](https://github.com/mauricemach/zappa)\nbut tries to be more lightweight.\n\n## Installation\n\n```plaintext\nnpm install shallot\n```\n\n## Usage\n\nProbably the shortest example possible\n\n```coffeescript\nrequire('shallot') -> @get -> 'Hello World!'\n```\n\n### No seriously\nShallot does not depend on express. It rather is up to you which kind\nof middlewares you want to use and what kind of rendering engine you require.\nIt uses\n[copperhead](https://github.com/niclashoyer/copperhead)\nas router.\n\n```coffeescript\nconnect = require 'connect'\n\nrequire('shallot') ->\n\n\t@use connect.static 'public'\n\n\t@get ->\n\t\t'Hello World!'\n\n\t@get '/:name', ->\n\t\t\"Hello #{@name}!\"\n```\n\n## More\nMore features may be added in the future. The main goal is to achieve the most\npowerful HTTP server functionality with minimal lines of code.\n\n","_id":"shallot@0.2.1-1","dist":{"shasum":"0bc26c732e5fc04d40ee436e535d7aa247f3c0d3","tarball":"https://registry.npmjs.org/shallot/-/shallot-0.2.1-1.tgz","integrity":"sha512-f/6zvj9scJ4qFSOmqbmgyZ6PKQ2Y+OxBtzAnJFUpDpwCPgnKF0VT0Odt6tmcewZ04Hyhfsug2tM0Y+eojGtP+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBkitzJCVZY/25hNcddOa6Lm6uKREZbQl+kMhtMPlHGMAiEA5YW9g7RgXRxh7a1sVPuZLWcWjv9cJWr54llclDQtpO4="}]},"maintainers":[{"name":"niclashoyer","email":"niclas@verbugt.de"}],"directories":{}},"1.0.0":{"name":"shallot","version":"1.0.0","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.0","dist":{"shasum":"66acf94e13f42cee8bd31ceb0e3f09bc33382b87","integrity":"sha512-nv1iqdRqKH0RqQyeeRbJi/GCwicFaeluWsg8Kg/+NKdeNrViXv8LHt77FLUS6VDhWcf7BE9tVrDBjWeeBk4gYQ==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.0.tgz","fileCount":6,"unpackedSize":2433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfobBmCRA9TVsSAnZWagAAO3wQAJy6uEe3NDgg6nJsYp43\nvcdBEfVb5aMFp7eQHDYuzEiG/BZKVIchEO5+C+RpEA/BqfI4CwBYwdbe1nah\nnESY+HWL/I1G5jt8HxFmLkcXnUlwx9erWv4WpTxYVgF95T0Roei9+i9sbIC9\n3W0XYt4dLsgLZzNZV9og7hg00O3KANXQPYvICuJXG+K5noZbEFNI3NOIFaEY\nGBaWH5TjA0fBWPV80VUVXcEBtTTKkOJqzrtqF48gF1DVZgJxIfCD/xKHfCvF\nFSBnpbNSMFxwp7NL8xM0tQ9gBX44gAjd28NmhptfmnikeAdltjkj64KJFAMM\nkmdhoFcGxlugPpE+JkY8xCTWdTnruacqNZk7IQ4LOiifLccKL0tu2RCkDR7Q\nmd6zFVAuNvNninNZyrIWBHYdK16RQD43R9cGNnU7w0gmEURK12jloZjY0naF\nrZOljJsQKN3nwg9uwpVxYnJl1Y+vxMrDYkqczUyqgWTLrGtSOzSAU9ySxf8U\neYNiE4icwCBHyu8fFxUNab/hKLHet6BJOz26Zs337QnEKUkwMjlswIcGXOhb\nZ8eET84YIbnKPFPf9ApDKuVh9gA8QRGn67sptoc3qfxTqm615/JOF7RudjL/\ne83P+h9faHI+mWVwIXOfhuK53rU/vDrls+jZeu04jNHYhdwZkSYEhcLy3y9A\n2Wn6\r\n=gNnt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmoLvVlz+JQWBT18ycW1giwLjnw8dFRCa0evDCn0vZxAiEAlKEaIX6lkc5VwRqSBbrvOwkq9hHC/n1Dh73DICmSMmQ="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.0_1604431974323_0.21354248751659477"},"_hasShrinkwrap":false},"1.0.1":{"name":"shallot","version":"1.0.1","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.1","dist":{"shasum":"fcf7e6cf5c144df382847ea63116c337322ceb9c","integrity":"sha512-hn/rExClSENydAWGgT0z7obdgOAeKcPDpEm/0uQ463EKGbnQi7AZj+RmfzkAOFI6GIKB1EG0YOLzbTgI50CLiQ==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.1.tgz","fileCount":6,"unpackedSize":5357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqG0JCRA9TVsSAnZWagAAIGAP/0Tq8laDra+M8foWCrFj\nxfsxQdp0Q9C2PsQ8mciZrk1oFMQnancxD+JxXJcCL3Pj8gZHlK42XmFPXqof\nJbWpzXOHNeCX8wFhN8SSYKZxCeqdLgSaUHkg3MDD9utHiGbKdaznjqGDcO7f\nvEx7Lgx05bf/t1izjfMbP+J315o8F+LEs6Dz99sx3BHGL9gDtyF+BXTyxD4l\nSOQkYyqA80HqwFdy+A36lyRUu68VZX3Y/iHW8+g/+i4maQ11VF7ofNsVsdvm\n8rWVnnbbVXYBg92nBgmRm27riDIp5Nb2JuV+2OyY/rRF9zLd3jK+sZEu1LM7\nOuVJwlT191aAGnt4DIHniSYhKfMbG+LCnI7zfcFKUZ37qG91xOoMQ0/MiR1o\npLKOWbIzk9lw3PylKc4HG53z6Cry8+whTlKPj98pgPowyVjugOsGz1EoXxqy\nvnODEGpabrM1mDeuP6tcBF+VLFinR66/5vIsZ00xIX5YmneEdmH2GXEolsCi\n/13hujueYKbR1cylDMeaaEgaam7TkF48Xy4SrJe3L1wb/nyvdanMaWccBUZK\n07m0OWTM9bOU7UV8zHM6r3T96poxDtykB6mzO8BYRFgp/lXhogDHvJc8W0vl\nGAzOT1B+BUZlPSsqlwCPjJEJ7QpGCD3iddvgs+bxzFP7r+wv1aT+lm17qqgQ\nc+Fj\r\n=Jo1T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5XuEX9lcMi1x/OScCdHF2UfG1RK1OVczMQ0/+oc3e7gIhAJK8PoG6Z+hsgfSbrNO5SfVfKL/ihlS6QOMVwDQUpC8q"}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.1_1604873481166_0.8809498835820944"},"_hasShrinkwrap":false},"1.0.2":{"name":"shallot","version":"1.0.2","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.2","dist":{"shasum":"b05ae8ed6a47d3ae04629ee259dd286a508f4aab","integrity":"sha512-cf2NgwrHr8/syG37dd1apvKA1xPL1KHwpDWUmnPxXCpiFv3qqFn74LC2YbVQLXlvmL19nYqzHan1g3IFElvgqw==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.2.tgz","fileCount":21,"unpackedSize":15618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr1rYCRA9TVsSAnZWagAA5zoQAKPdZ8JbJm0s1VEDNjsM\npKJAdyv9UGwsEyvMh3BC5vADj26h9skRk9RXaCdMeZBj/ksucVI6argCjTL+\n6DuzAzUVhGxQioXBWHSPORa58vCP5sG9rb7hV1wfz/xHIcfQRyAcyaRQiHTS\niEhkrd5r1tavD/VRyMDsR8aTe4G42Nm31jxUiH9Nyjw2TS96aE92+L6eap1v\nzPuWeXG/fbMDzlt7g/lIrIO2/UEz0WsmTTstfTvC77k9F9pu2N/lWWvPEcRd\nRhbX/QHrW+586+fMWiKiG4iFM9DJdQxyssLP8rY7vGTBOEUcCdsNH+Y3r5De\nAZJQxij/yRJ2nDP7PFAJcOy3Qvt2pl+0+bqbrMYWHnU2RzKySsoexZRZYx55\nPkQnKRCtfN98oYoMeIYVzxmNknbZO+7qdG9sa5f9KoXvmn1xGlSgwEPCIvjN\nL5cRrdGJ0XOzLtADRbFTw7uO2LFIoulYOAnfWKRyFSnEdL2ZAH7cs1xsqeLj\nGZVCpPP04uq9gNtQ1km8X7mzbScZ+3oSLRutgBO6BJhLLqnfl6ZaPEXoQbRs\nacHAJIS6EhSXAIzdT/614ATR8JXJ/Li0BV8+tm3b+dhJdrEGCSZyZo5sIpsW\nbUpEpulbC2qGb1qcVGUYO7PnGTtOkN5eygZ01P3bnq0dpp140aNrkiW0gRvp\nPg9/\r\n=Wwb4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9ThD+F6iLeUpfvXugkLGlJdawmeWWdtRDgRQoPSpdjAiEA7FeNQtsVjjgSdpDFlZNsey7x3LOzmov1NvXVuQxvOf0="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.2_1605327575643_0.3289853085406955"},"_hasShrinkwrap":false},"1.0.3":{"name":"shallot","version":"1.0.3","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.3","dist":{"shasum":"e7360f08447ab2b30627e660745e36b49d7c3b30","integrity":"sha512-JmOInvrlgR0UiAY4p1PXjK2Yi/1GF0Ny4ZLBrx1tzyjUbIKNtIqp1BzQI5Vg0wANShb8Cg5Hkb6JFOqiM6m9Fg==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.3.tgz","fileCount":47,"unpackedSize":104149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr1vbCRA9TVsSAnZWagAAZigP/2i0AfzGlssEJ6KcNt/l\nYmuixiRMisdissuPMTf80MlsKQxYStBZEN81Qb+rebhMGfjEmHhxREiLoEZu\nTswFbuAHFqfpTBhACzqN2TOpys5mVbTdlHW9EAW5i1G8UM7EGRFrpbaqJdfC\nLT/54hgCVP8V2MjTJfxQX9cRN79lceqG+Vc6OrVfU0LaUUXtYvphss0nJLn5\nQYJvqsv4EM24EeKkNjlP+8XRNiCNns59vMqmzmT/7CMtZXVjrguEDFIDaniS\nwaG7Hxoa92s5na2cTTNHpXH9jHhe7DbQczMd6ohZyj0N4wjAm4Q1MURs/rRX\nquG+6D1JA0Lq/uda8oSP8Q0csXLEx60JGOyOiW4BLldhuVaI4t8YM0yxia0R\nkUwAPzhiDtsaudzIN0VWnwK/Su98lRkvKvDc9Eyto8hwIH12IwT8Qz6EbAUt\nvVhkzI/EHpTma3dJuLm68tcSisWoInVCsx+rog90FoF14Su7mMGfj9/HRtFx\nwrOgLxsXutH7ndP8BB8cDJj1liJeLE40RNCJOmTMpd9kZ06HfEPiAxIHDI13\nliqqrNt8kpSvFPtoVCFfxxqMXmKUNpEVLJ2R0EvBxcunbtBc+3R8ZGBXJcPd\nL4QAkrCYHilod02Ueqm55DW3JS3Ngl5//vVU3CLYCpWvuH4h+zeaPNgSSlAX\nAbNM\r\n=c5ks\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICb769NR+i9LtZyTmFvbEjqL/FLlkXhhbkqHHd9lv1f+AiB2JsPxoL3QaJoguMby3XZX6YwQpBGA2b2IuC+J9CS/7Q=="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.3_1605327834762_0.9724426707498715"},"_hasShrinkwrap":false},"1.0.4":{"name":"shallot","version":"1.0.4","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.4","dist":{"shasum":"a5c9701c554415f68e616a8ab07e1c85fb30e58f","integrity":"sha512-oYD5qQ7GPo8TzC7jcIq8ryBHF27DgUrtqGAujSGw0MsNyFBi+Ty00bIJYI3wong6pw9z326W4eVJ8n6OSc9shA==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.4.tgz","fileCount":47,"unpackedSize":104208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsYPsCRA9TVsSAnZWagAAeKQQAJLSBYn63FDiOvg4eQa2\nkll3YjPkSGxYlFQjnkCAQlwvOlkHPy2oXFdSn7YffUVwTTOCBwbOCXhzjYmJ\n515E8zDWaLW5SujlWeFnk3DqSrLs8NhtLzRx7b5YMB02mJ4Pe88wDh12UBWf\nTzXzDElveBF9bMQut/bTlsJBNN2LaRl+RuucMcLqwRcqCWckDU7tyuxDwLfg\n/9OzoAx2EaD9dG4uVhr7ewyYyHs0aWSzfev9THOEGvT/Yg5vrmkfoynYkhwG\nwWYngBc9f4MxFFYlhNGP9RTsGdqsiXreyMjc90s+YSvwIJMtp+2rj91+CqmL\nDaI5ph08v8j7eZVWXEGAeBbBqeeTkbpERm6OycBPqrtaeVj6Dp+CpDtMmw6v\n8EFoKvGNkT6zjKe0l+MXPL85Cvx5CmFh+h998ekqpwQhm+ync83o/EYvC/zh\n7t/ULYs8o1mdcFl9rl0v36DIwKChp0iWjCX9r0ia/chv55E06Ul9KxoBOauu\nzDfNKpiPNuOjUtikudNPG3OqGZ9mhtkyWzj/U8EqUhKnB+69ZsvPOjMRRwtP\naEI0QEQDAu8r/yr63/a1F5B2W8z5qpvU47bXchuMZ8ukTqZOv06DHbU6YSZa\nSTOoU9TwgtZ1kurem0wvZYcj6ktvHYveu7dUOMWXy2zPEngf95GNRH7u0rp8\nGswN\r\n=qdCz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqtl3EVmZyPV7xFVlXoNPfjXBOtXMTJOa1I5wa7w3mUAiEAi4v29TdSYXroN55MxYPTmyBKhBR/q4zfVge/iaVRozw="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.4_1605469163751_0.9823375085949322"},"_hasShrinkwrap":false},"1.0.5":{"name":"shallot","version":"1.0.5","description":"A robust middleware framework for Serverless REST APIs","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/aws-lambda":"^8.10.64","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.5","dist":{"shasum":"35c2c1a632f1e8bc286a9c127a94098ef8f17345","integrity":"sha512-cZ5jrtRtpHHGa1qW4aqxWC6F4abuuqT11qMw97NS6qmN4QoSlrv0AA/3vuTwtsuY8CHm1VUlLYXHu6XrvbTutA==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.5.tgz","fileCount":47,"unpackedSize":104204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsYQmCRA9TVsSAnZWagAAz0cP/0NvptH3KjbX1k3u2yrV\nJd7HA04eCZ8Gv1WroQ28pYuRqgIqNulnAg+06f37PyidZK8DnfT9P099nG7M\nJ0Uh8oSKAumKim2oEYNGZ7WdveCjnQH/RvRxj3pTLc+4i7dgREE4UP0PCz5P\nA0oG+8FMEheiO4/ufd6Tby4KFnUdysx3KEFLM5sach7+p2eSK1Y6zOceQXqh\nmO7Igo84GmGfDvPE3W0jq8N/Zekp2r4aTkerv53eiy+ccSv5G4pcwdnkdMRE\nj0EyTo243Q1EfrlTAuhg2TwZ4a1+IzwdMWkP5QN5eOP0Y6alNXCMV3KhdWnJ\nlwQPBJSJ5Kk/g43JuNiF72CnSZlOatOqoM397v+9iejGb2zuGCBgR3Tr+o5/\ntUowZT9gcz39g3tM3ePi/jgefSpGmTV9HqFCbIuc5nYHb0n49mWr/xKhk24u\nIZ7tP4RNS8ar531XUW0ek08KignSTcMe0ivMQkr9sx323udH2By3foUCpk2w\nnlZ2D1UK/Oe5DZ35b1580YyyHsljx0EASe3tr8QNFv8tqXTMq6fOWIG5XaFW\nMnL2/kANCHXmQFfki4JMw2IZPvLkdVERIZzIwkAdHq+OpHF9oJa3mXB8UbIz\nxTlMeEI5G/GgL4s/VqIa+fWT6WEzrZHfs5D4WQWH2HgzBIho315De+vKyQD0\nW34q\r\n=ZDwF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOXPO+Az+b+KGZZZX5MJx9+vD7bwB7hbYVP1Miac//UwIhAPNULFYGPrvdO1cpJEUaoki9LIzC+k1gw238Ptq3TM+D"}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.5_1605469221843_0.3495447740629334"},"_hasShrinkwrap":false},"1.0.6":{"name":"shallot","version":"1.0.6","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","deploy":"yarn build && yarn publish"},"devDependencies":{"@types/ajv":"^1.0.0","@types/aws-lambda":"^8.10.64","@types/content-type":"^1.1.3","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"dependencies":{"ajv":"^6.12.6","content-type":"^1.0.4","http-errors":"^1.8.0"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.0.6","dist":{"shasum":"5d8bf6f04e212a322dd506d836e068e0527636a2","integrity":"sha512-ZHYBjb6T3xF+ho7Hd3Gk15XL/5AAYkHsYgljGsh5AGzr0Oftj+jdhVbgS17ftzHoqHLe1sP4kWKZwT846UcKcg==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.0.6.tgz","fileCount":82,"unpackedSize":264411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfscx+CRA9TVsSAnZWagAAZIYQAITiAY8bioCGBtz6pVsZ\ntfr7kRxW7PFvWfNnOFBSmqhhVcudDGKQBokcYrU7Hl5ALt7tLuErT67iw7dA\nLeGpBwnbcufw4pOVIQ+4oto0RfF47raSCq5HjP4gSSQq/oIisLraWoIFgjhx\n6kSRa6OclIPysg4xcMGM0/UgEERM8htgvIeZmcB0XUV/v6esxeCRRKFKsXvt\nrWW6TBeLVAGOal75TKyYtUVbOC1F3+Cjnoxq02mznCUhAFmIRqpSWhcsI4e0\nwDDAwG7QcFRLm90ruWYaqSFPjjHcelbNZp6fhbHZGvE/09eLnmamE2dCUihc\nzvpAerQUmcxLzNeuf5rGS2T6nAOuEUK2S451bQeMOZ4EVzYvZJMihnEaATLi\nwhI6Y7x9/AvfmbEDdTJEHZU/iL7FrpH0WN8qneHHuR8UPeId2WolvCritaSb\n12KjsrlifxUznJalDpOs6Q4GT2ofKJYDrVQ/zpwuo8E4prYVaLNECASc37to\nmxKa9wYR12PkGmLgV0iZNNOt2dycIhyWvmY/3mOFX8ERIaG/PLEvhYqV/m8T\nSLJDK8Ip8ZUmeqF353efJOux00m2GHdHRJ7ce1tFPj66F3kZQGTxXXilW5Ff\n/owPcwskPDKVumSDQ1Ds183+LUqvCgRVWvOw1EX3PiocCpDPksq+ZPDok9F3\nE1+3\r\n=ako9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV4nKxTo+ixvS0xGcgjndwHdSlAgW+Dz3mrqO24GTHSgIhANB/bZI5rzWI0gCGjWq6r6rnJQoqd2kXNm8J2c23uHGN"}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.0.6_1605487740529_0.4116560580622297"},"_hasShrinkwrap":false},"1.1.5":{"name":"shallot","version":"1.1.5","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.2","@types/ajv":"^1.0.0","@types/aws-lambda":"^8.10.64","@types/content-type":"^1.1.3","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"dependencies":{"ajv":"^6.12.6","content-type":"^1.0.4","http-errors":"^1.8.0"},"readmeFilename":"README.md","readme":"# 🚨 Work in Progress 🚨\n\n# Shallot\n\n![Shallot Package Release](https://github.com/ShallotJS/shallot/workflows/Shallot%20Package%20Release/badge.svg)\n\nA middleware framework for serverless functions written in TypeScript or JavaScript.\n\nInspired by [Express.js](http://expressjs.com/) and [Middy.js](https://middy.js.org/)\n\n### Benefits over middy\n\n- First class support for TypeScript\n- Simpler codebase\n- Mildly faster execution\n\n### Drawbacks from middy\n\n- Only supports promise based handlers/middleware with async/await\n  \\*\\*This is an intentional decision to allow for the simplified codebase and faster execution\n\n## Installation\n\nAdd shallot to your project\n\n```\nnpm install --save shallot\n```\n\nTypeScript support is out of the box so you do not need an additional types module.\n\n## Usage\n\nREST API Wrapper Example:\n\n```javascript\nimport { ShallotAWS } from 'shallot';\n\nimport {\n  HTTPJSONBodyParser,\n  HTTPCors,\n  HTTPErrorHandler,\n  DoNotWaitForEmptyEventLoop,\n  Validator,\n} from 'shallot/dist/aws';\n\nconst _handler = async (event, context) => {\n  // Your handler code here\n};\n\nexport const handler = ShallotAWS(handler)\n  .use(HTTPJSONBodyParser())\n  .use(Validator({ inputSchema: myInputSchema, outputSchema: myOutputSchema }))\n  .use(HTTPCors())\n  .use(DoNotWaitForEmptyEventLoop())\n  .use(HTTPErrorHandler());\n```\n\n## How it Works\n\n![Middleware onion](https://middy.js.org/img/middy-middleware-engine.png)\n\\*\\*Artwork credit: [Middy.js](https://middy.js.org/)\n\nMiddlewares are applied as layers that can execute before and after. This loosely\ncan be analogized to an onion (and Serverless starts with an S) hence the name Shallot.\n\nThe middlewares can modify the request context, response, or handle exceptions thrown during runtime\nto take care of common tasks. Canonical use cases include establishing database connections, parsing\nrequest bodies from json, and authenticating users.\n\n## Official Middlewares\n\n### http-json-body-parser\n\nShallot middleware that parses and replaces the JSON body of HTTP request bodies.\nRequires the Content-Type header to be properly set.\n\n```javascript\nimport { HTTPJSONBodyParser } from 'shallot/dist/aws';\n```\n\n### http-cors\n\nShallot middleware that handles the setting of response CORS headers according\nto the MSDN spec. https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS\n\n```javascript\nimport { HTTPCors } from 'shallot/dist/aws';\n```\n\n### http-error-handler\n\nShallot middleware that catches \"HTTP Errors\" thrown by the\nhttp-errors npm module and returns the corresponding status\ncode in the response.\n\n```javascript\nimport { HTTPErrorHandler } from 'shallot/dist/aws';\n```\n\n### do-not-wait-for-empty-event-loop\n\nShallot middleware that disables the AWS Lambda\nevent loop.\n\n```javascript\nimport { DoNotWaitForEmptyEventLoop } from 'shallot/dist/aws';\n```\n\n### validator\n\nShallot middleware that disables the AWS Lambda\nevent loop.\n\n```javascript\nimport { Validator } from 'shallot/dist/aws';\n```\n\n## Wrappers\n\nYou can export the type definition wrappers for convenience for the following\n\n- Lambda Authorizers\n- REST APIs\n- WebSocket APIs\n\n## Creating a Custom Middleware\n\nA middleware is an object that defines any of a `before`, `after`, `onError`, or `finally` block.\n\n- before: executes before the handler\n- after: executes after the handler\n- onError: executes in case of exception\n- finally: executes after either the `after` or `onError` stage\n\n\\*\\*If an error is thrown at any point, execution of all other middlewares/the handler is terminated\nand the onError middlewares + finally middlewares execute instead.\n\n```javascript\nconst middleware = {\n  before: async (request) => {\n    console.log(request);\n  },\n};\n\nShallotAWS(handler).use(middleware);\n```\n\nYou may also want to pass config options to the middleware which you can do by exporting your\nmiddleware as a function instead of an object.\n\n```javascript\nconst middlewareWithOptions = (config) => ({\n  before: async (request) => {\n    if (config.shouldLog) {\n      console.log(request);\n    }\n  },\n});\n\nconst config = {\n  shouldLog: true,\n};\n\nShallotAWS(handler).use(middlewareWithOptions(config));\n```\n\n### The request object\n\nThe request object passed to each middleware at runtime has the following properties.\n\n```javascript\n{\n  event, // The lambda event object\n  context, // The lambda runtime context object\n  response, // The user-defined response\n  error, // Error object set before calling onError middlewares\n}\n```\n\n## Experimental Azure Functions Support\n\nAccepting PR's from people more experienced with Azure if the current implementation\ndoes not cover all Azure Functions use cases.\n\n```javascript\nimport { ShallotAzure } from 'shallot';\n\nconst _handler = async (context, ...args) => {\n  // Your handler code here\n};\n\nexport const handler = ShallotAzure(handler).use(MyAzureFunctionMiddleware());\n```\n","licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.1.5","dist":{"shasum":"61d81e479a9e35edca02958011d64bd820e5e5bf","integrity":"sha512-1kNwQ1mwA+k4YVktyV6IiMC+A6Lji8Hyz7GS/gghJ0DoezNJMya6MdnWaj5lCE8pL4zG4LVtfBR2yu234N86GA==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.1.5.tgz","fileCount":81,"unpackedSize":99009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfw9ZICRA9TVsSAnZWagAAXukQAJytmgAsyve3DDmMyKUU\nevKzBOCQgBFGcGNwmkaa7TokX1tKjNHZR/K//rPdWsr8OgpEes/QwTZNbrhE\nJaVuikndnVoyMgaFT0z/FKya8LMqVdPPYbXvYDQgE4JrlBblvS4TFXih6JjC\nXuPgHfo49W6EDyPl/Us+4NXAe8eSP2PLDBeedXdPdIJJANQobFhxqi30PcK7\nafdASUnoHbqqqOmHN4w8A7MDkqH8HIXjG4iH1lusOyRN8/Stohd+SmwevInT\nlr4O23sVjZEFgb91eM79psMIEeY5cSsF71DVEVYjHK3hyhD5JPXdajEBWLbC\nqmoGwu+Mc3SiGJJ9Z2V61hb2AaLXQ+TbFXMmgpYIq/Qb+l0oQ8MDBNISZARv\nI99AvhSIqzRGk4ualnQflBSlpbx7XTIup2pxwd0ThwnjosQ5NJb3x7ecdozh\nKzQjPqizLe8x0OSWvOMBwrLwxLBGVTolVP06x5n9wXMcLH7qNmTNb0uQtZwh\nld0F3ZLTm1rketlikN5Tzf8NVJcocO+zkI+hrywYzGBDA3E9sVJwiOGveSTU\nqCA/xEFUmy0s4Dav4vSex8eHubKtt3/2RyKKf4zQC6A48+09BmJen804eXBE\nhRdsEq9LKP6VjPT4xLysqgk7V+1mpHsMmO57TpTaaWHbbh85vNukMQhPbF0u\nfRHg\r\n=9uyh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGae8NuJ6jmmcSjaP7hluRM/UDwdXGEkq0LcP5XOtjGbAiBxh1wNgsIngTGccLxVfoVJ25RV1cvvmSIbfzWjYQni8A=="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.1.5_1606669895868_0.2872224632041802"},"_hasShrinkwrap":false},"1.1.6":{"name":"shallot","version":"1.1.6","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && tsc","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.2","@types/ajv":"^1.0.0","@types/aws-lambda":"^8.10.64","@types/content-type":"^1.1.3","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-node":"^9.0.0","typescript":"^4.0.3","yarn":"^1.22.10"},"dependencies":{"ajv":"^6.12.6","content-type":"^1.0.4","http-errors":"^1.8.0"},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.1.6","dist":{"shasum":"c8ace0c630e8c6d53c3abd83fec62ae941efeffb","integrity":"sha512-h853jYYVxFn17H+Dxv8mHuz74L8aEdx/eANYmnCE1QfaBRNj1moI6nKtY5mKZpuybtqZYkXSiOL1+KVaAJeGCA==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.1.6.tgz","fileCount":81,"unpackedSize":99038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfw9gvCRA9TVsSAnZWagAAjMcP/Rm+3jYHTT/B4SofSfqY\nqUhtg2A3VIQ3nASpUpG7l34R/51PIFL51nGd1tOk98qOkBgYK/6OXCBZWeGv\nRL6mJwRIAGw8AXcz/Gh1eWHt2+fvIGjTpWPEdEs7s/WGHT8JItJRV7f1xSVF\n5+eDa9SOcr7gQ7hwCruZCgVhJoNjFCzYgnFiQoBKMX8dbBGPEA/cI6WlTb1N\n4mqEjiqreWWRT5F84f/+EnFdFoOGvAMtle3VMOl6hPBkEK4YnyKOXRDTDwrF\nvmsYUo+F2xyrzKKywiyWX0bOVLCDbomVV4yIYFSzm77MMMqzryG3wTQ4FXlB\nT9m2D9ng3xtIByaqE9Mau1aeAGAKgDPpuI3gIZcyu+Beo43/ncjRietD2LXO\nvCDfVH5eEDO6TGiZAW28mS1ZUd8o+vmXMGUjBv5aEXFlk+dfsPAV9rRBT0U2\nSyQgpooGbyGpgsK9TjlA6TgckPubwvYCZoEd8ZVDqHQUjKowgPBlTlo8/e08\n9wwg1kr1qtkyvl1W27c7/7Ato4xMPTPSFVDb9FJtHwBhkCIY/5hj/W3Vuq8u\nOMuQngG2nFMT0RKuU1g0vwe72D+6e//0rfPI6/H0UeXPc8UHW25eNlHbL3h7\nNT2F4UNixZFHUlwKprmpJwADnJBwBz6LNszYrXVq9hERvWx1Yn3eTceMW+WJ\nuesT\r\n=Mjp4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCU3u0qxjLtOZ/DyVFakkqgrOohCw60HTTyYfRiRfIiNgIhAM2ANPEQ1aJV0x8+0ayleFvRs1DMAvzzXnLKY7v51i5k"}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.1.6_1606670382892_0.7780456742285407"},"_hasShrinkwrap":false},"1.2.0":{"name":"shallot","version":"1.2.0","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && webpack","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.2","@types/aws-lambda":"^8.10.64","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@types/webpack":"^4.41.25","@types/webpack-node-externals":"^2.5.0","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-loader":"^8.0.11","ts-node":"^9.0.0","typescript":"^4.0.3","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-node-externals":"^2.5.2","yarn":"^1.22.10"},"dependencies":{},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.2.0","dist":{"shasum":"3f4568edfe2677a1ea21c71047881d07833f7c20","integrity":"sha512-Kds6y5GzhyhwaizFN1EzI0Yc+rv9DJvMVpZ6U2i4PVWLQrhmS87to3fvnEveSeVYKMTIGEfWDdo2mAkxgevhJg==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.2.0.tgz","fileCount":20,"unpackedSize":30826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyeFJCRA9TVsSAnZWagAA4V0P/0mg/RTDiD8YLxXCDh63\nqZIPR8PLiwEVRYCHvaYqIGs7ktEi0ubF3EmT4rMrDZze/Dk3tkxBsEe5Mxcr\nKLj8iYadxxj4lin/ABwltNv1qjEVC5niphpanfjFH6RzCBZv6e0R7iC88MnP\nu/oU6B2/LOLstmrZ7hUO2beNIUoEjZORPstckiox6IsjGOw7p+FX6Ywj+zCJ\np6CgigNgvdBrwH62ck+80XjrEXLjn/SUSi2/EQUKoPs1GQZFQCPQt5Pbfm9F\nDUpnAgNePBMkKW56m0oXIuyPGwWu7ackfDtMFwokedGV75XqLsBj+EjcgI9p\n1J6AmIw4UbsEvCHkuD8iFALA8xLw1tm0LEammC1FPxh9rda4hGfcL4zsFbNj\nabn4g1VWzXJFsPiZ9BrzSVY19tOPmU39+LkLtOcC2tV/bPpRRBvAwu9Yge+q\njVCda+w43ywxGhJfYI94FathOGaE5KrWBCs4InNhKHcaP37BaLRq4T5dIlw+\nJypBCrIJYX4SyVf5SUFpP9S5jCnDGaydJ9PMAEPE7WONB+6DbVv1joM1LQqQ\n7Bkxl8pWGVJr9qWcYxVLTC0oFq4iljkl1BpPMtczQ+T5YGxlFWc48mP63Wms\nVU6wQNhE0EjFx2a1ujWbygTHKc7Lvg202oAg0inNJgdkpjN6bHkL4Gx5MD4O\niFyk\r\n=pCYy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICACH8lZcK704E4Pmurb2oFlXlpBgILq6w3qo0noTOzaAiEA1aYjuIkKCprsFKmwG2c+EcUq/ClYCaamDRtIGuWMWAM="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.2.0_1607065929111_0.860274124785132"},"_hasShrinkwrap":false},"1.2.1":{"name":"shallot","version":"1.2.1","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && webpack","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.2","@types/aws-lambda":"^8.10.64","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@types/webpack":"^4.41.25","@types/webpack-node-externals":"^2.5.0","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-loader":"^8.0.11","ts-node":"^9.0.0","typescript":"^4.0.3","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-node-externals":"^2.5.2","yarn":"^1.22.10"},"dependencies":{},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.2.1","dist":{"shasum":"63c060b9a3622ec71d631ad89a38b6449e382e36","integrity":"sha512-A62YeB9Fu7sbntRw1Q82rD3qERv+jniZnzze3AVN7tpTHDkP6ys+AmjU8GqT7jFx8ag6YOqgRrGijq0hqW/lSA==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.2.1.tgz","fileCount":24,"unpackedSize":49608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfynY7CRA9TVsSAnZWagAAKsUP/25sNBiCKbX8ywfxS71s\nJTfH2pn1YbdSs67KdgYFFVjw+/P6TfivvHbWxPSpYkMXSv9l2SSo9n6yQcuv\nXxuv7bd/mS0aPhgd+KtnpXogBsuyO1m9bzz8cjDUmzA5yKiW54F2RxLUzYOL\ndit+Ap7UiIuNv0DUyFOpHIFMyD4Enfb8p3aC8Ga18X/up+PrcNSo6fk2wRsN\naZpaxKjf7r2gozRJ2eD4iNLsjK2WuGILaJb22Z1SsAHd734cUOTjEDbF5ihG\nOWBBqSBMFc3vf/ncXkcSIbNfyhlanrAJIQXxYim56BYJW/XTMlp8ITVK1UVl\nfKSYNudoHLtUUIQo2hZt8qtQlT6F9+FqAYcNfJpshXSsxR6H3rPTbQchq8/w\nD1Ogj+ne6avM9ytbMyqLS1WewrnuQC26aJ++2DPgV7OeCtN/76aZoNzNK4hd\n8FFiyQJWsQYCqm/GnS7ylXP85bWrz6ScJUfni/2kJC3CAf+uSOV8oVgySLO/\nqfOc6dhqkh8T0M0DsVBDTYliYqAzDMCmiJdRdElSe09fmMZUUD6XUdzKvm1K\nxJJWPPCfG9SD48F1SfCo7StxCjyqKCWVu4zZ/lA3gGGL+ymTS8JyC2zNxdm2\nZ72nxFOJlEmTK6d52yNnPos6tWq9k3ndjA2yMZdUjn114tdesueMDiaM5daP\n7mMW\r\n=trtZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKfL6hN43TcqED8mNHgNcFpWKA6BHP1ECVCXl1eV2GXAiB7ZGe+6NyBlGHX0MPH0FvuVm5v9dMkrRzHS1sfo6Aapg=="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.2.1_1607104059385_0.285995618960039"},"_hasShrinkwrap":false},"1.2.2":{"name":"shallot","version":"1.2.2","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && webpack","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.2","@types/aws-lambda":"^8.10.64","@types/http-errors":"^1.8.0","@types/jest":"^26.0.15","@types/node":"^14.14.2","@types/webpack":"^4.41.25","@types/webpack-node-externals":"^2.5.0","@typescript-eslint/eslint-plugin":"^4.5.0","@typescript-eslint/parser":"^4.5.0","eslint":"^7.12.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.6.1","lint-staged":"^10.4.2","prettier":"^2.1.2","ts-jest":"^26.4.3","ts-loader":"^8.0.11","ts-node":"^9.0.0","typescript":"^4.0.3","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-node-externals":"^2.5.2","yarn":"^1.22.10"},"dependencies":{},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.2.2","dist":{"shasum":"317996b42d6df9db70206b2818b0cf63b09928f6","integrity":"sha512-SwhVGTgsVBBszzNbuP6dajxfKGnqcpjWwqYOvuWdttibXFEwhSwAaRnqn9eI2DUfHvjh6Z45ybUzOjTi4sslRw==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.2.2.tgz","fileCount":24,"unpackedSize":49452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3XjvCRA9TVsSAnZWagAABGAP/3GWYiioB95q5krY4F/w\nq2lLuWcFe8HWpuNmoNq214b5sU8jXSw4M0h54dvALfeqWb47vyNRhRxIO7xi\nnEbPb1cqWs9gAUf6pi7oqzEraToEtfXKLzkesUYbrpra6RWcG3+GEbY2Q6yB\njP2HCDsCLQT8wKKMyQ86dW3IIocHqo4JX6LaQxwsBsLtx7nxlS4Gg2im25+g\nd5OZjiQfR601Ov6ONS4eov2p5Wic+69zC/le7CkjSazyWHgRh++L+YeEzUgh\nQNVONva7qXw3OEgzk6HlrZg2M8+N89FVKeF9ZmUkQ0qG2aH++eehGenuJBS3\nY5uPL38jAYOSNNNaqiA12Z44Xqz9vGNlPdpIh2U0GEmVgOR9BpsnyoLATr2x\nRIxghT0GRzzD9/zrZEVT4ugZGTGBsXhqHstEzTe4gpqQktTw7Rp8FckDhLKn\nqv40DJ/idIZBnVa4yjLBTG8QHV/RoWkYUj50b5PRBL6Nnjf00qPtQKu3fldQ\nXmIKbfTY2pTimaNB9/4fqc9P4mIZpg1IryC/XE0Jp4UoJhjbgrgqV5bhvmTE\njLfXhnB14DC7I55XLe+XSKu+gEIabdnaUDBIy59JxGUEsWRWJpBtcOf6PN8D\nyNNgEinpAuvgqXDSlfd+IlYwRkPr8chqWqf3DRtFz5qKm6uRKYbUm4KD8al2\n05zU\r\n=x8T9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLyPlwQbxPQIow20CU6DV7Z95KcI1ZG0E6sYTrPCXl2QIgS4aF/pFX4eP2S2lt5bBcyCHLeUhnab6uOChofjCuGFI="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.2.2_1608349935331_0.47700472361303636"},"_hasShrinkwrap":false},"1.2.4":{"name":"shallot","version":"1.2.4","description":"A robust middleware framework for Serverless REST APIs","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"],"main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"license":"MIT","private":false,"scripts":{"build":"rm -rf dist && webpack","test":"jest","postversion":"git push && git push --tags"},"devDependencies":{"@azure/functions":"^1.2.3","@types/aws-lambda":"^8.10.76","@types/http-errors":"^1.8.0","@types/jest":"^26.0.23","@types/node":"^15.0.1","@types/webpack":"^5.28.0","@types/webpack-node-externals":"^2.5.0","@typescript-eslint/eslint-plugin":"^4.22.0","@typescript-eslint/parser":"^4.22.0","eslint":"^7.25.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","husky":"^6.0.0","jest":"^26.6.3","lint-staged":"^10.5.4","prettier":"^2.2.1","ts-jest":"^26.5.5","ts-loader":"^9.1.1","ts-node":"^9.1.1","typescript":"^4.2.4","webpack":"^5.36.1","webpack-cli":"^4.6.0","webpack-node-externals":"^3.0.0","yarn":"^1.22.10","yarn-upgrade-all":"^0.5.4"},"dependencies":{},"licenseText":"Copyright 2020 Bailey Tincher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"shallot@1.2.4","dist":{"shasum":"06fa89c1cdef3fca3a37f452643c93587561c7d6","integrity":"sha512-opUv7RnI2LgbDcWodFC5ya/0cItUPCgLrGjdpXdLdS0Fy9FhBX6akW4jGlSBQxtdof6IsjN8l0ZhCn6Yw8+TRg==","tarball":"https://registry.npmjs.org/shallot/-/shallot-1.2.4.tgz","fileCount":15,"unpackedSize":37990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgivDlCRA9TVsSAnZWagAADXsP/2x3unG4hFpPbSFd8Ffa\negxSklAc0L4n9qrCmViD7NSn7baJUiDHYwLckGjX+cwKCQWcfo399RAP18V7\nr/GW8nT4smN1TWMZ4+izkjk76zrWwVcoOEJF/x/3+H7YEkb8ZkrhWWE/dQCd\npBkyjW9kQPy3dJcmQaeNlbZDd6cMfgye1BXvUKtQ9asdM4XSQxoX68gbolwE\nozjbvt8q3iQqIDfegTkxj09v4988t0fVJX32hCOEsZDQV8RiH0iGXfB/dy95\n0QgQVtzr9JG5p6MeBLsgqAHs6CS4dvjg6QC8boi9j1/AaVUzRZ1Y05oD8rYw\nMqzrF4ftsqNfBn+0S5HfclHmIN3adM3Uq9GnQAvTk2x2ZAi7M1mZPmPu2U6h\nxcpDgrDib+DLjHV/2mrXYopOABCTsFZcj9siYpZtwvK/xDtkZ6xy0e34uBcf\np3DcbUSgjKY84l69/F8bWlA5eidXuvtcu/tADOBJ9oMmul1vhuJlglcKQNAb\n1N14+X2h3711w5usJiJnvAC0XyiQ+fxiLuS4k1Ks8MdAz3NlQ6OiEEb4V+u+\n3fkcXQQXbpesaYCTUk/WaQvaxSv0HdB/16dkGZ/wqIMFSdxp5CsLpeDg32dp\nuzx09mPjtRXdFb0Jn2MY5f30TgzisyibwYW8v5V23uVRm4uTU7sfr/i+EO7z\nWVwW\r\n=1xxX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRrmugoO4giqzWeekhEAZBvfh9Er8znYFE4SNvJZqWtAiBvyWDNU50sQ09yxmlrNnueiMIPuQYIuB/ilY99hTCxsA=="}]},"_npmUser":{"name":"baileytincher","email":"bailey.tincher@btin.io"},"directories":{},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/shallot_1.2.4_1619718372597_0.3250040527645077"},"_hasShrinkwrap":false}},"maintainers":[{"name":"baileytincher","email":"bailey.tincher@btin.io"}],"time":{"modified":"2022-06-26T18:34:54.900Z","created":"2011-09-25T10:20:26.364Z","0.1.0":"2011-09-25T10:20:27.971Z","0.2.0":"2012-04-09T09:59:36.772Z","0.2.1-1":"2012-08-17T19:35:15.867Z","1.0.0":"2020-11-03T19:32:54.421Z","1.0.1":"2020-11-08T22:11:21.321Z","1.0.2":"2020-11-14T04:19:35.820Z","1.0.3":"2020-11-14T04:23:54.955Z","1.0.4":"2020-11-15T19:39:23.881Z","1.0.5":"2020-11-15T19:40:21.971Z","1.0.6":"2020-11-16T00:49:01.084Z","1.1.5":"2020-11-29T17:11:36.034Z","1.1.6":"2020-11-29T17:19:43.009Z","1.2.0":"2020-12-04T07:12:09.254Z","1.2.1":"2020-12-04T17:47:39.499Z","1.2.2":"2020-12-19T03:52:15.476Z","1.2.4":"2021-04-29T17:46:12.728Z"},"author":{"name":"Bailey Tincher","email":"bailey.tincher@btin.io"},"repository":{"type":"git","url":"https://github.com/ShallotJS/shallot.git"},"description":"A robust middleware framework for Serverless REST APIs","license":"MIT","readme":"# Shallot\n\n[![npm version](https://badge.fury.io/js/shallot.svg)](https://badge.fury.io/js/shallot)\n![Shallot Package Release](https://github.com/ShallotJS/shallot/workflows/Shallot%20Package%20Release/badge.svg)\n[![Known Vulnerabilities](https://snyk.io/test/github/ShallotJS/shallot/badge.svg?targetFile=package.json)](https://snyk.io/test/github/ShallotJS/shallot?targetFile=package.json)\n[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ShallotJS/shallot.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ShallotJS/shallot/context:javascript)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n\nA middleware framework for serverless functions written in TypeScript or JavaScript.\n\nInspired by [Express.js](http://expressjs.com/) and [Middy.js](https://middy.js.org/)\n\n### Benefits over middy\n\n- First class support for TypeScript\n- Simpler codebase\n- Mildly faster execution\n\n### Drawbacks from middy\n\n- Only supports promise based handlers/middleware with async/await\n\n  \\*\\*This is an intentional decision to allow for the simplified codebase and faster execution\n\n- Less robust third party middleware options\n\n## Installation\n\nAdd shallot to your project\n\n```\nnpm install --save shallot\n```\n\nTypeScript support is out of the box so you do not need an additional types module.\n\n## Usage\n\nREST API Wrapper Example:\n\n```javascript\nimport { ShallotAWS } from 'shallot';\n\nimport { HTTPJSONBodyParser } from '@shallot/http-json-body-parser';\nimport { HTTPCors } from '@shallot/http-cors';\nimport { HTTPErrorHandler } from '@shallot/http-error-handler';\n\nconst _handler = async (event, context) => {\n  // Your handler code here\n};\n\nexport const handler = ShallotAWS.ShallotAWS(handler)\n  .use(HTTPJSONBodyParser())\n  .use(HTTPCors())\n  .use(HTTPErrorHandler());\n```\n\n## How it Works\n\n![Middleware onion](https://middy.js.org/img/middy-middleware-engine.png)\n\n\\*\\*Artwork credit: [Middy.js](https://middy.js.org/)\n\nMiddlewares are applied as layers that can execute before and after. This loosely\ncan be analogized to an onion (and Serverless starts with an S) hence the name Shallot.\n\nThe middlewares can modify the request context, response, or handle exceptions thrown during runtime\nto take care of common tasks. Canonical use cases include establishing database connections, parsing\nrequest bodies from json, and authenticating users.\n\n## Official Middlewares\n\n### http-json-body-parser\n\nShallot middleware that parses and replaces the JSON body of HTTP request bodies.\nRequires the Content-Type header to be properly set.\n\n```javascript\nimport { HTTPJSONBodyParser } from '@shallot/http-json-body-parser';\n```\n\n### http-cors\n\nShallot middleware that handles the setting of response CORS headers according\nto the MSDN spec. https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS\n\n```javascript\nimport { HTTPCors } from '@shallot/http-cors';\n```\n\n### http-error-handler\n\nShallot middleware that catches \"HTTP Errors\" thrown by the\nhttp-errors npm module and returns the corresponding status\ncode in the response.\n\n```javascript\nimport { HTTPErrorHandler } from '@shallot/http-error-handler';\n```\n\n## Creating a Custom Middleware\n\nA middleware is an object that defines any of a `before`, `after`, `onError`, or `finally` block.\n\n- before: executes before the handler\n- after: executes after the handler\n- onError: executes in case of exception\n- finally: executes after either the `after` or `onError` stage\n\n\\*\\*If an error is thrown at any point, execution of all other middlewares/the handler is terminated\nand the onError middlewares + finally middlewares execute instead.\n\n```javascript\nconst middleware = {\n  before: async (request) => {\n    console.log(request);\n  },\n};\n\nShallotAWS(handler).use(middleware);\n```\n\nYou may also want to pass config options to the middleware which you can do by exporting your\nmiddleware as a function instead of an object.\n\n```javascript\nconst middlewareWithOptions = (config) => ({\n  before: async (request) => {\n    if (config.shouldLog) {\n      console.log(request);\n    }\n  },\n});\n\nconst config = {\n  shouldLog: true,\n};\n\nShallotAWS(handler).use(middlewareWithOptions(config));\n```\n\n### The request object\n\nThe request object passed to each middleware at runtime has the following properties.\n\n```javascript\n{\n  event, // The lambda event object\n  context, // The lambda runtime context object\n  response, // The user-defined response\n  error, // Error object set before calling onError middlewares\n  __handledError, // If true, allows skipping of remaining onError middlewares\n}\n```\n\n## Experimental Azure Functions Support\n\nAccepting PR's from people more experienced with Azure if the current implementation\ndoes not cover all Azure Functions use cases.\n\n```javascript\nimport { ShallotAzure } from 'shallot';\n\nconst _handler = async (context, ...args) => {\n  // Your handler code here\n};\n\nexport const handler = ShallotAzure(handler).use(MyAzureFunctionMiddleware());\n```\n","readmeFilename":"README.md","keywords":["middleware","aws","serverless","aws-lambda","lambda","typescript","middy"]}