{"_id":"fastify-slow-down","_rev":"36-0cf39b9a990baa917bd382c41f4bb256","name":"fastify-slow-down","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"fastify-slow-down","version":"1.0.0","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.0.0","maintainers":[{"name":"simoneb","email":"simone.busoli@gmail.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"dist":{"shasum":"6a4fbb189e68e3939f9b45476ee27fa021522bf8","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.0.0.tgz","fileCount":6,"integrity":"sha512-3WJ2DjEC/W3orBN/S2VcYG4B0l+iEs6XtHYrrZ+qE6eFmYEVyyhTbEBYeCfqXxNtMMMCZ00eplhYsKHOrkkMAA==","signatures":[{"sig":"MEQCIGxos8P6T6z8nXPeaPClYjCpm7XykONFLGqiHvKAduXqAiA2UbAXPpDzBAHQhnE2O6NHvlWBl2aeDt4ZRUlM7p64VQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKcaSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrW9hAAhCCSfCkhxKvCRejqKD9d2V/WYgA5SrjQRV7AZJxwjI8Eziax\r\nXMBw3LGs8GPnHSADQPK6Rs4U3yOzBUmdIAO2N5WIoVXdiewtFLsKCTf5euiw\r\nCYkuWZA+Ts1w4XuhGXpV/j908KIKz4fOckLLtar0sRIel5u9xxR87vx+bLF3\r\n6a50X+NVYJjkcDNjWSaUq3FxVZeITLpAjFvW/v4abvHYYZbylqnTxav7KKG3\r\nLhKpo3wll1Uin2h/h564VQ4hx3mJSNYcGMmYrIsjq/h5LO2vtvsaI0BVX27X\r\nHwJq2L0kTXFTcIJHtc1yfR1g2kTe1z/IZMzIveoFvCd2K/RsxrCf3PDwOJwp\r\n/HamLdAHju/enYouqIJXLN00tozDK19i4g15lX0BdNrCkNoLc8A3Y7GXHby6\r\nhYcjDQcMvrW+UoaPm/kVz3bvrCrId4TqRpI0CjMW3zGG2Ucey2SFm4FbBENF\r\nDEO13bbZrvHa+JKBVj5oFuA9foBT07JTVSLS1gocgd/Nw8mVSgJAUrV1hC5O\r\n6Ioxuzpwi6coqKEZjFwL6xthVIeKRNVa6sANF19Oj1p36u8d7SeJemOrjCG1\r\nNY3bHwt6kjm9cuZAX+Jcf4J5KbpWF0GDenj8ig+e73faGtho4VaEB0YeaNH6\r\ncUSrlbAqNzywql8+lzOlIpzLlnLoXJ38PaA=\r\n=3k5e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","gitHead":"10ce51f1df60644c326ad27a9d700befd941e4bb","scripts":{"lint":"eslint .","test":"c8 --100 tap -J --no-coverage test/*.test.js","prepare":"husky install"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"8.15.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"16.17.0","dependencies":{"ms":"^2.1.3","defaults":"^1.0.3","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","husky":"^8.0.1","eslint":"^8.23.1","fastify":"^4.5.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@sinonjs/fake-timers":"^9.1.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.0.0_1663682194046_0.9916478266904907","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"fastify-slow-down","version":"1.1.0","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.1.0","maintainers":[{"name":"micheleriva","email":"master@micheleriva.it"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"jimmymintzer","email":"jimmymintzer@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"irelandm","email":"mark.ireland@nearform.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"6175411b11334508a453d3d68477dc9cc3b6c51c","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.1.0.tgz","fileCount":7,"integrity":"sha512-uACVmh43V1N1Z9ownvHsfWk5MLiIh3YN7fQIQtuX5OZ7zM0GK/jr8nxwHY6cMgbKGidn3j/roRMzNzNzsmji+g==","signatures":[{"sig":"MEUCIQCvg0Pe1KhzwOke8pCbyF7vQkKTZOJ1G98+7OCGpiynuAIgPH4AWlu41nvmftz8Hcq4hhfKO/v32xvXg9aHGdhdSi4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLtnqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6YRAAoLZHZv4dP4P5abe3zQ+mqZYAsZ4B+CyXiCjWenYmhZ1yk/qm\r\nCyU7TSlMeTq85Bxxido7CqKLpu7geIwwiHUGjYyMRGM/fHaM6QDFggE0LUvt\r\nKq4UE2lNtSUj1GWXtJ/ZY9saXKIGhw50AGObtHiG8jXemxdAJ7Z++olk0fYK\r\ng0buZEz2nFzY39pUdDZNEw+RG4JRVKBXHCMi7YlUsF7A9xUUkYo+lWzsEule\r\nXRfcX6yyFqMxHOsdfvCi+an5wrB/Y2CbW5kKNRSIJx2DOAkZ2byuioLupThn\r\nrF+Dftjr6shGCK00+n/SDAthW0t9Jj430bifh8WHP1Sk7e/wO2mxM0BJavBK\r\n3Lq+KmM4ReSWrzFZhnBqYRAaC7cC8tt5G5SkFtzuyJeb4IL8p2C8nA3/mQAk\r\nRrqxdk2Lx6cWBcSrzFiKPDR0eRkzw3qYNlRFF5GxtAAP+m4N+kvq8u0FkMHu\r\nKemqrDjlK/8A2ptPa/F/cBcrsxKpgDv1y3cbwlJ6V4GC0ISIv9I81KF5yvRf\r\nskksJRXx6n/wxasWFVjxiCbH3w8YFrjkbdum3NdcPZNv9gPkOoCY/Q7GlKzj\r\n8/q548H1JyGRkMUlZ+tFwpo4b33CBWEaEUrzMojxxCLAa90n4GeGXYexkH34\r\nWkEG6NqcYOkh537uKr/SCel+njEEJia10MI=\r\n=iH4x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"3b02e6e82b34b095638047785dfe9e7f784f4e8e","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","prepare":"husky install","test:unit":"c8 --100 tap -J --no-coverage test/*.test.js","test:types":"tsd"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"8.15.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"16.17.0","dependencies":{"ms":"^2.1.3","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","tsd":"^0.24.1","husky":"^8.0.1","eslint":"^8.23.1","fastify":"^4.5.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@sinonjs/fake-timers":"^9.1.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.1.0_1664014826253_0.1210793017608176","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"fastify-slow-down","version":"1.1.1","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.1.1","maintainers":[{"name":"micheleriva","email":"master@micheleriva.it"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"jimmymintzer","email":"jimmymintzer@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"irelandm","email":"mark.ireland@nearform.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"ed9fb5b3ffac34a533db43a502e1ec9f200e1521","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.1.1.tgz","fileCount":7,"integrity":"sha512-Jq3MNdXWolvEDIH94fkyN4LlerlsZ6uZ1Mr70XMBAOHfqf9CQWoICdaQQLr18bYgSsNU5wvlXYse1kFGSoIy2w==","signatures":[{"sig":"MEUCIBYDOEhsEwTrc21HFmsGkbXzFFmKjyEPAfraCrGRTCg1AiEAuV7B5pFC4DoVBIINvN7LcmFe4dzWUc9NcyLdQdch48g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNGD5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5lw//UKydpllNVIzDWi1Ff6SPIg+LG5qhV0Xfiq+JT3XOMb8QZqRA\r\n+xKcx8C29ef2RdhUuC+eVcYxBFwZyh+Gq/lrhMAhkMjxV0tMx/h5fylIH4Ep\r\n/uXoyplr9iRbHeV34hcI0hdIziq6gxqPpnfQ4D+AleFsM5JJZl30QoEN+bjb\r\neLpHEYeoFJX32bt3lkHSJ67jZ6j/Wckra6zXCnLtzpBsoT9KkhMkmcNzPsaT\r\nQUe52LVOclChND02cKsSFizXYhGtYVXeq1gSxndlCqKakV3/obKaiCrDblRD\r\nN3tZR9zpVoBSXMonT2GkxXOo5ZmVPQngktQPeT57OY08SzVs0uVS1DeU7bN7\r\nOiiQJ4jNwi+4i1G75z0hE7pgdZaAP4F/VZTqt6ekk5MdHDrMEXPRn12ZX0HB\r\nNS3TRu3NN2EQ+Thyg7zcOM7Ex35Ns9FAFPT25uxSVnn1cwV1Bh9GdPp5AvM2\r\nT9AKqF6nDXtdfD2MErEnPggZxSd6CtqpvaptxV08iDe7ZC4gCRsnTJJGQiXs\r\nQb1an2z/eNzkkcYgi8KHnVFX9TE/XEQtjK21pBCCWzSuilkPd3eZ1KTV2rvT\r\n0y85ETeDgD5RHrDmIRgEniMCAsvjJxBJwyayg1IWqaihVWIW4nTmmmG5mNMr\r\nZ/+9+89iwjrU1S3qWg0vnUiq9HYgzr5ODT0=\r\n=7O1u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"987051b5f65e65f6beccb1f2af6c014f2d45c3bb","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","prepare":"husky install","test:unit":"c8 --100 tap --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"8.15.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"16.17.0","dependencies":{"ms":"^2.1.3","tiny-lru":"^9.0.2","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","tsd":"^0.24.1","husky":"^8.0.1","eslint":"^8.23.1","fastify":"^4.5.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@sinonjs/fake-timers":"^9.1.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.1.1_1664377081219_0.9675491391896991","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"fastify-slow-down","version":"1.2.0","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.2.0","maintainers":[{"name":"micheleriva","email":"master@micheleriva.it"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"jimmymintzer","email":"jimmymintzer@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"irelandm","email":"mark.ireland@nearform.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"5fbe4d5fce366245a1b3edcee3cea1357bb0792d","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.2.0.tgz","fileCount":8,"integrity":"sha512-EZxudWvmqL48yTgJhc1CruCPlCXBncfrhy+7bKYtMlqzj5HmZr1ywFAB0EKqtWr+px/3lRU/ZpYg1pt91ZoInQ==","signatures":[{"sig":"MEYCIQDDKgtq+hHdhSpsqY8UOu/yAKwSRjSZ8Sq7hnulPiObTQIhANYuJZ6H+fZej1KEZQMi1oNhuArfXAPVfh0LF1DqPP8i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNwt9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoy5hAAnlZrg2kWMjpvwlZRpEtiTck3sYjbLcYRszIa9KHrcbW1K3YE\r\nG08Uda6zfrrXTGneq7ZtUfkTnTXni9jDHhQ8wsiFvb9hJhN/ovIe+VGssfDi\r\nvADbELUdiRAWw9sIjL/doVmR+YmoINbVw6eqajP9YTbFvP7kQBq3kV3Ys7wK\r\nsTrHulWF3voh1MScvcLrrSObCcRXNm+i1COq8qvW97TKsaNY5NqA3iJTjnTW\r\n3NrjTsYS582KKe0oSe20eavTuagQVM+MI5H19cxgvrNclpIrN/asWM+stAmM\r\ni5dn2Zyri53iZajHZxh+j2/7wqs7BlYLxOYlqF+CulK60/0f7NPvhMKrriv+\r\nrTxXSVmvi1dtuv+LyXi7xmXVtGLuNda7SNt4HMGa+xfzBhaiGT5KYnVgCogv\r\n/FpxRd/oU+hf3Fa5ZKCJBFBoKbl3RX5NzhjG0WwyYbzqbFcq/eKbHCfWEymV\r\nQqGqCkjiHPpkd+GLpueDLGtOLq+ZdcXXJXmTtPimiQ9KTu3cbwkfBumqDsyP\r\nH8HnwSgCgp22fZ62dxZdZnlHLHkX2pNZRz0BBh82StTQHLPlM+/coDo0nH5+\r\nSG5bWJ+ANERlStk/4NBU7XyrZU6NLWHOtVfDBtr1qcFZGBgHg9Bila31FvBQ\r\n3G2eWgfDPhEJFCHMhPTOvaTyUzBMJZu9Nao=\r\n=zJNs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"5fe6128420b5dc6c16459a01702131c5d3d09aff","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","redis":"docker run -p 6379:6379 --name rate-limit-redis -d --rm redis","prepare":"husky install","test:unit":"c8 --100 tap --jobs=2 --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js","redis:example":"node example/basic-redis.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"8.15.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"16.17.0","dependencies":{"ms":"^2.1.3","tiny-lru":"^9.0.2","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","tsd":"^0.24.1","husky":"^8.0.1","sinon":"^14.0.0","eslint":"^8.23.1","fastify":"^4.5.3","ioredis":"^5.2.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@sinonjs/fake-timers":"^9.1.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.2.0_1664551804908_0.5392142354924407","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"fastify-slow-down","version":"1.2.1","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.2.1","maintainers":[{"name":"micheleriva","email":"master@micheleriva.it"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"jimmymintzer","email":"jimmymintzer@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"irelandm","email":"mark.ireland@nearform.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"1ceb528155693b4569a29324b11aab0766d81eb6","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.2.1.tgz","fileCount":8,"integrity":"sha512-mdDIUGHO6gYOkjtlwB9QLslButbUEojLfxEtDZ01zFbku5H03o5dTzhTlY1+xzhYDw96DwJrmIp6SEt+Z684vA==","signatures":[{"sig":"MEQCIHo/zjIiEyA3LuVx2uRlcjLncRJyF4gBN3aeNSZAWevDAiAmNm12ggzdIZ8xu6atnJOUyzNc4J/1YN4fSsOwAM7+IQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjQUgYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3/g/9GcLAAx/B2Ogp8SQ+wKb7aYrbz5Bmgwm/yvCdDZRloi2XL+ue\r\nkOZ7+zpbkmolyrQWOZSMBwzfk5KCEUWdJ40A0QmJjgxgSzLK+N+NrRq8thMD\r\nfm/kOuR2pe/Cdnt5rB7rJvq+dKlrOGdvkkuE7SaV4e0ikl6sSXJKCd7jlgYi\r\nRqBSblox/o8vZ5YfBn9OKGBLxaXpv0/kXtse01PnsAKEhXOPk4vbjhTVkoAQ\r\nX0nAomcnE3OYyFFRbOOkUlOrppUB+XGIpewCtPUYIsZ/TM3NzQM2wIfB1aUJ\r\n4Fr/qyLHmKvA0o9E6SGcQuEzASKV0ET7ffcdwTefTksylXdjf/tlj+LeiSQu\r\nFkeEtLc0CHfEOijNQZXOHDOhBLC2XNxZ71UkmT5gJFH6TlN3S0j+/2SQjORF\r\nHg5I9PqYb47ZVSiDo0AycNPDGa8lNYTFfYQGs4QfYECq167AxMsMQrCirttx\r\n1QNz3KpnDjJsFVrQqeYhzQ//NnbWz7o8KLNtMnFAk4csoM50M1hAQe8AsjaE\r\nr0kmLctkm+j1cOu2IeqcQ5NNMOl+D20CYVyKm//BlpZJFs6u9316bGxVgUjj\r\nmQ4J+X6Zp6BMY/Z1X+SEwz7wIZbosOCE6+VGsqYgUSSlmDyffBzIaxR00hZU\r\n5MvMUtLWe+ls3WXX3z8mOFxOjMo2L503NQU=\r\n=ioaO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"749b8499136de84f31eb6fc230a4271aeeaee222","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","redis":"docker run -p 6379:6379 --name rate-limit-redis -d --rm redis","prepare":"husky install","test:unit":"c8 --100 tap --jobs=2 --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js","redis:example":"node example/basic-redis.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"8.15.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"16.17.1","dependencies":{"ms":"^2.1.3","undici":"^5.10.0","tiny-lru":"^9.0.2","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","tsd":"^0.24.1","husky":"^8.0.1","sinon":"^14.0.0","eslint":"^8.23.1","fastify":"^4.5.3","ioredis":"^5.2.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@fastify/rate-limit":"^7.4.0","@sinonjs/fake-timers":"^9.1.2","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.2.1_1665222680512_0.5723886677477392","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"fastify-slow-down","version":"1.2.2","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@1.2.2","maintainers":[{"name":"codyzu","email":"cody.zuschlag@gmail.com"},{"name":"davidefiorello","email":"davide@codeflyer.com"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"irelandm","email":"mark.ireland@nearform.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"60ff443a700752a5680df936232422fa421bb35b","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-1.2.2.tgz","fileCount":8,"integrity":"sha512-JPv/uvY5Te1q+BLYYxaL+fOZX72Do4l/2s0YV9WhgUdMcdObGnDmk5IKWzu8vmnfDsT3rv1UeLmzl+s+/pRs9w==","signatures":[{"sig":"MEUCIQCrTpz7pY4efluS2CFKJNh31S+rmFxNET/96Xrl3JLqbgIgAv7lKHm5AjrKUU+rpUyUcukGPXGtfCSSeLunyKEc6/w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastify-slow-down@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":22185},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"ac6e70dedb4f2cbc01a0e3176b16b858942d2ab4","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","redis":"docker run -p 6379:6379 --name rate-limit-redis -d --rm redis","prepare":"husky install","test:unit":"c8 --100 tap --jobs=2 --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js","redis:example":"node example/basic-redis.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"9.5.1","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"18.16.0","dependencies":{"ms":"^2.1.3","undici":"^5.10.0","tiny-lru":"^11.0.0","on-finished":"^2.4.1","fastify-plugin":"^4.2.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.12.0","tap":"^16.0.0","tsd":"^0.28.0","husky":"^8.0.1","sinon":"^15.0.0","eslint":"^8.23.1","fastify":"^4.5.3","ioredis":"^5.2.3","prettier":"^2.7.1","lint-staged":"^13.0.3","@commitlint/cli":"^17.1.2","@fastify/rate-limit":"^8.0.0","@sinonjs/fake-timers":"^10.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_1.2.2_1683819188206_0.14226902360996396","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"fastify-slow-down","version":"2.0.0","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@2.0.0","maintainers":[{"name":"lucalanziani","email":"luca@lanziani.com"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"bb8dc5ee7c674d286235edeb63620192eac91958","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-2.0.0.tgz","fileCount":8,"integrity":"sha512-MDpTQDfom4nyUVCR4ayRSRF+soEfnsKZwgX7pT0fpAwEOCuBwDizfebD7dwGoxC0nC1l9K9GNPAgT+jb7t5E9A==","signatures":[{"sig":"MEYCIQDh6U4mGLAyw/T7s7Fqz39oTbDpBdubNSkaq358VW3vSAIhAOXM45TcOWnqfI4ZM36HcZmdSKvrcCKFnMQLMUkjlA9U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastify-slow-down@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22175},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"b3fdfb85640f39a795ada6c2f782a362ecc71539","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","redis":"docker run -p 6379:6379 --name rate-limit-redis -d --rm redis","prepare":"husky","test:unit":"c8 --100 tap --jobs=2 --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js","redis:example":"node example/basic-redis.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"10.7.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"18.20.4","dependencies":{"ms":"^2.1.3","undici":"^6.2.1","tiny-lru":"^11.0.0","on-finished":"^2.4.1","fastify-plugin":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.0.0","tap":"^16.0.0","tsd":"^0.31.0","husky":"^9.0.11","sinon":"^19.0.2","eslint":"^8.23.1","fastify":"^5.0.0","ioredis":"^5.2.3","prettier":"^3.0.3","lint-staged":"^15.0.2","@commitlint/cli":"^19.0.3","@fastify/rate-limit":"^9.0.0","@sinonjs/fake-timers":"^11.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"5.2.1","@commitlint/config-conventional":"^19.0.3"},"peerDependencies":{"fastify":"4.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_2.0.0_1730641377228_0.13890587589287895","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"fastify-slow-down","version":"2.0.1","keywords":["fastify","slow down"],"author":"","license":"ISC","_id":"fastify-slow-down@2.0.1","maintainers":[{"name":"lucalanziani","email":"luca@lanziani.com"},{"name":"donal.moynihan","email":"donal.moynihan@nearform.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"eamonn.frisby","email":"eamonn.frisby@nearform.com"}],"homepage":"https://github.com/nearform/fastify-slow-down#readme","bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"tsd":{"directory":"test/types"},"dist":{"shasum":"f32890266b902d3a91477c8351f0393bbd4cc621","tarball":"https://registry.npmjs.org/fastify-slow-down/-/fastify-slow-down-2.0.1.tgz","fileCount":8,"integrity":"sha512-A/IIiaZF6vO4nCJ0xTHqqTnEqjeH285/XJSFeDXVoJllngI/Ui5bJP8HAmVZ7CeYfDjGdMZAXq0W6iCZbWvKKQ==","signatures":[{"sig":"MEUCIQC65AH2XNwiO6izaIc9/q/jw6bsoqsarORTAdBs3wbbfgIgGJMTNSD/NlZ8vCWsUsi9r4Z69d6HvVkUsu1lhdHXclE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastify-slow-down@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22175},"main":"index.js","type":"module","types":"index.d.ts","gitHead":"c241e0cd66229984c1e3fd2f79fa02a816da34e4","scripts":{"lint":"eslint .","test":"npm run test:unit && npm run test:types","redis":"docker run -p 6379:6379 --name rate-limit-redis -d --rm redis","prepare":"husky","test:unit":"c8 --100 tap --jobs=2 --no-coverage test/*.test.js","test:types":"tsd","run:example":"node example/basic.js","redis:example":"node example/basic-redis.js"},"_npmUser":{"name":"simoneb","email":"simone.busoli@gmail.com"},"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"_npmVersion":"10.7.0","description":"A slow down plugin for fastify","directories":{},"lint-staged":{"*.{js,jsx}":"eslint --cache --fix"},"_nodeVersion":"18.20.4","dependencies":{"ms":"^2.1.3","undici":"^6.2.1","tiny-lru":"^11.0.0","on-finished":"^2.4.1","fastify-plugin":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.0.0","tap":"^16.0.0","tsd":"^0.31.0","husky":"^9.0.11","sinon":"^19.0.2","eslint":"^8.23.1","fastify":"^5.0.0","ioredis":"^5.2.3","prettier":"^3.0.3","lint-staged":"^15.0.2","@commitlint/cli":"^19.0.3","@fastify/rate-limit":"^9.0.0","@sinonjs/fake-timers":"^11.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"5.2.1","@commitlint/config-conventional":"^19.0.3"},"peerDependencies":{"fastify":"5.x"},"_npmOperationalInternal":{"tmp":"tmp/fastify-slow-down_2.0.1_1730655520297_0.004352602466705546","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-09-20T13:56:34.045Z","modified":"2026-06-25T17:04:26.377Z","1.0.0":"2022-09-20T13:56:34.230Z","1.1.0":"2022-09-24T10:20:26.383Z","1.1.1":"2022-09-28T14:58:01.419Z","1.2.0":"2022-09-30T15:30:05.065Z","1.2.1":"2022-10-08T09:51:20.656Z","1.2.2":"2023-05-11T15:33:08.409Z","2.0.0":"2024-11-03T13:42:57.441Z","2.0.1":"2024-11-03T17:38:40.487Z"},"bugs":{"url":"https://github.com/nearform/fastify-slow-down/issues"},"license":"ISC","homepage":"https://github.com/nearform/fastify-slow-down#readme","keywords":["fastify","slow down"],"repository":{"url":"git+https://github.com/nearform/fastify-slow-down.git","type":"git"},"description":"A slow down plugin for fastify","maintainers":[{"email":"simone.busoli@gmail.com","name":"simoneb"},{"email":"eamonn.frisby@nearform.com","name":"eamonn.frisby"},{"email":"donal.moynihan@nearform.com","name":"donal.moynihan"},{"email":"contato@gbdev.me","name":"gbdev13"},{"email":"steve.goode@nearform.com","name":"sociablesteve"},{"email":"ryan@loose-bits.com","name":"ryan.roemer"},{"email":"elizibin@gmail.com","name":"elizibin"}],"readme":"![CI](https://github.com/nearform/bench-template/actions/workflows/ci.yml/badge.svg?event=push)\n\nA slow down plugin for fastify\n\n## Installation\n\n```bash\nnpm i fastify-slow-down\n```\n\n## Usage\n\nRegister SlowDown as a Fastify plugin.\nThis plugin will add an `onRequest` hook to slow down replies if a client (based on their IP address by default) has made too many multiple requests in the given `timeWindow` and\nit will add `slowDown` request decorator, which is an object with the following properties:\n\n| Name      | Type                | Description                                                              |\n| --------- | ------------------- | ------------------------------------------------------------------------ |\n| limit     | number              | the maximum limit until the server starts to delay the response          |\n| current   | number              | the index of the current request                                         |\n| remaining | number              | how many requests are left until the server starts to delay the response |\n| delay     | number \\| undefined | value of the delay (in milliseconds) applied to this request             |\n\n```js\nimport Fastify from 'fastify'\nimport slowDownPlugin from 'fastify-slow-down'\n\nconst fastify = Fastify()\n\n// register the plugin\nfastify.register(slowDownPlugin)\n\n// create a route\nfastify.get('/', async () => 'Hello from fastify-slow-down!')\n\n// start server\nawait fastify.listen({ port: 3000 })\n```\n\nThe response will have some additional headers:\n\n| Header                  | Description                                                                                      |\n| ----------------------- | ------------------------------------------------------------------------------------------------ |\n| `x-slow-down-limit`     | how many requests in total the client can make until the server starts to slow down the response |\n| `x-slow-down-remaining` | how many requests remain to the client in the `timeWindow`                                       |\n| `x-slow-down-delay`     | how much delay (in milliseconds) has been applied to this request                                |\n\n## Configuration\n\n| Name                   | Type                                                 | Default Value   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| ---------------------- | ---------------------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| delay                  | string \\| number                                     | 1 second        | Base unit of time delay applied to requests. It can be expressed in milliseconds or as string in [`ms`](https://github.com/zeit/ms) format. Set to `0` to disable delaying.                                                                                                                                                                                                                                                                                                                                                   |\n| delayAfter             | number                                               | 5               | number of requests received during `timeWindow` before starting to delay responses. Set to `0` to disable delaying.                                                                                                                                                                                                                                                                                                                                                                                                           |\n| maxDelay               | string, number                                       | Infinity        | the maximum value of delay that a request has after many consecutive attempts. It is an important option for the server when it is running behind a load balancer or reverse proxy, and has a request timeout. Set to `0` to disable delaying.                                                                                                                                                                                                                                                                                |\n| timeWindow             | string \\|, number                                    | 30 seconds      | The duration of the time window during which request counts are kept in memory. It can be expressed in milliseconds or as a string in [`ms`](https://github.com/zeit/ms) format. Set to `0` to disable delaying.                                                                                                                                                                                                                                                                                                              |\n| inMemoryCacheSize      | number                                               | 5000            | The maximum number of items that will be stored in the in-memory cache _(this plugin internally uses a lru cache to handle the clients, you can change the size of the cache with this option)_                                                                                                                                                                                                                                                                                                                               |\n| redis                  | `Redis` client instance from the _`ioredis`_ package | undefined       | by default this plugin uses an in-memory store, but if your application works on more than one server it is useless, since the data is stored locally. You can pass a Redis client here and magically the issue is solved. To achieve the maximum speed, this plugin requires the use of _`ioredis`_. Note: the default parameters of a redis connection are not the fastest to provide a slow-down. We suggest to customize the `connectTimeout` and `maxRetriesPerRequest` as in the [example](./example/basic-redis.js). |\n| headers                | boolean                                              | true            | flag to add custom headers `x-slow-down-limit`, `x-slow-down-remaining`, `x-slow-down-delay` for all server responses.                                                                                                                                                                                                                                                                                                                                                                                                        |\n| keyGenerator           | function                                             | (req) => req.ip | Function used to generate keys to uniquely identify requests coming from the same user                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| onLimitReached         | function                                             | undefined       | Function that gets called the first time the limit is reached within `timeWindow`.                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| skipFailedRequests     | boolean                                              | false           | When `true`, failed requests (status >= 400) won't be counted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| skipSuccessfulRequests | boolean                                              | false           | When `true`, successful requests (status < 400) won't be counted.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n| skip                   | function                                             | undefined       | Function used to skip requests. Returning `true` from the function will skip limiting for that request.                                                                                                                                                                                                                                                                                                                                                                                                                       |\n\n## Example with configuration\n\nRegistering the plugin with these options:\n\n```js\nfastify.register(slowDownPlugin, {\n  delay: '10 seconds',\n  delayAfter: 10,\n  timeWindow: '10 minutes',\n  maxDelay: '100 seconds'\n})\n```\n\nA delay specified via the `delay` option will be applied to requests coming from the same IP address (by default) when more than `delayAfter` requests are received within the time specified in the `timeWindow` option.\n\nIn 10 minutes the result of hitting the API will be:\n\n- 1st request - no delay\n- 2nd request - no delay\n- 3rd request - no delay\n- `...`\n- 10th request - no delay\n- 11th request - 10 seconds delay\n- 12th request - 20 seconds delay\n- 13th request - 30 seconds delay\n- `...`\n- 20th request - 100 seconds delay\n- 21st request - 100 seconds delay\\*\n\nAfter 10 minutes without hitting the API the results will be:\n\n- 21th request - no delay\n- 21th request - no delay\n- `...`\n- 30th request - no delay\n- 31th request - 10 seconds delay\n\n\\*Delay remains the same because the value of `maxDelay` option is `100 seconds`\n\n\n## Integration with [fastify-rate-limit](https://github.com/fastify/fastify-rate-limit)\n\nThe plugin slows down the response without stopping it at a certain limit. This can put the server in a difficult situation because the client can make many requests without waiting for a response. To limit the number of requests, it should be used together with the `fastify-rate-limit` plugin.\n\nSee in [this example](./example/rate-limit.js\n) which is the implementation using `fastify-slow-down` and `fastify-rate-limit` plugins.\n\nIf the `delayAfter` value of the `fastify-slow-down` package is set to be less than the `max` value of the `fastify-rate-limit` package, then you will see the responses being delayed once the `delayAfter` value has been exceeded, by the number of `ms` as specified in the `delay` value.\n\nHowever, once the `max` value from the `fastify-rate-limit` package has been exceeded, then as expected you will still have rate limit errors returned but they will also be delayed according to the `delay` value from the `fastify-slow-down` package assuming that the `delayAfter` value has also been exceeded.\n","readmeFilename":"README.md"}