{"_id":"express-slow-down","_rev":"22-92ee2c73c010bb0fb0761df9d4a92b84","name":"express-slow-down","dist-tags":{"latest":"3.1.1"},"versions":{"1.0.1":{"name":"express-slow-down","version":"1.0.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.0.1","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"72725ba9f066b635be8f0d44dd9ccbbe924697c3","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.0.1.tgz","fileCount":4,"integrity":"sha512-ZRogbHDm9pceKN+1t8TDkfZ6tz1dWoLczfovWDLSbFFRxnkHfVlwFok9/LRlffHH46A543nKtmYy2HTW2lJVXg==","signatures":[{"sig":"MEQCIFFAl7nYOgez1NOVA2dFKCONJoTg+ofouTJkuYsxrbtLAiBzzvJjL+sGbIplBmzRUV/kzmYhbTlf/3ceupE4o91Tfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfBS/CRA9TVsSAnZWagAAIsIP/A6XY7FsEyHZgK/jtWiI\nqYT1X9VQzLANU8BrmDOC72zfxAigZxjN1gQNQUcc/hEBwckD2ZKbubdoLNod\nX3tTSsH3ndQFNFGmwR8i1N4z7TwQZ3yyd63ODA6yXJ21tssr+U4pNcids/Vl\nefiZ22xqghrv4aO1eMbF0bERpfVokQXTKJEs1o/7U5TN8ZpI7eZgJFnyCfvZ\nJJdWHOBH+VmH82Hq8Uk3a980Q2Nu+Z5esliEbnqp3+6XcNl7//11rK1qcXT4\na4DWdyWsuDx62IhwJku8dWCIi4Qg1blULzniq80Ne3cQEoqSXI1cQjXFpiJ4\noumj+dXHVATTt03+ZRCE0X7AOOl4H3YBf3j2ovK0KpvF03HXxWovUmDeTxYH\n9wmi3wDUJqagtc4Ih3QIiA0frmtpuODK94NQVauKVedI5rTrznvu/y5xQ7ir\nJYThjNkStQ3KmjJX76rszb6tW6FymBnAlpWbj4a7/SVWWX/k9XQa+jgV6RTi\n8kdkrzIoMfNEQRoThUhW6i/CT3/QWjPxNs0bIVg1s+rSIz76u2nTsGcLWPVg\nOf84N0JYsOLcLUFB78aM2F0UWVWRc74xqatlIVSHBgtqyT+JTuSt1+EDYUTG\n6InZiVMnlKm7OT5I/HbVhX5Ny0vW/GiZ+Uf0niKRE0Yldw3nadYMdGJNU73C\nMYH8\r\n=cs6l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","files":["lib/"],"gitHead":"9c31fbf029026199a6aa5328e7438107ebe00c7f","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"6.2.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"8.11.3","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^5.2.0","express":"^4.16.3","prettier":"1.14.0","supertest":"^3.1.0","pretty-quick":"^1.6.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.0.1_1534858431073_0.9736796904247569","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"express-slow-down","version":"1.1.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.1.1","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"8e0091aa954a56d6163bbdb47d195fec7834e181","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.1.1.tgz","fileCount":4,"integrity":"sha512-sf3A4UEyGkE9zL+oefmtnGpY07fqP/FYBARcJfX8SnLxMFsMP96zHmi/JUR3sj8hZM0yel2Piif8mDIGwmqcSQ==","signatures":[{"sig":"MEUCIQDUmxnWL1sJ83TyrfmOdKnp9x8+N8pJRIAMD0WsFPoXhgIgAVYUcw3O8O3Z1dOrM82fMKUpOveIDX6NjhOPvX0TG4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7E56CRA9TVsSAnZWagAAtewP/2mZD5ZLovg5SKLBuUou\nGLXywnCwxVELZ+7COhAHeOgfpsIJz62ITLk6QhQP6nksmcQwkkYGSNijH/g2\nSzAJ25fKXW5mQ1KCZDxUwYQ0sRjHtsV/blVk4r6ysz6i5uZWkAAo/HHvCF+N\nfSRRuQfP/yU9CNgbFnOqgZU9i0a4eW/JxEjWwEor3p+Wl+ZrEIpiA3RhMYrO\n2LDAZzuK0KXW9Ksbgw3+aB+jS/vyY8Cr9M8PYNJctgxSz/Kn8yxFh4j3b0Pc\ni4P080FunOr/6eP9OTTw3m0KilX12q/cdEJ13R8uidVJ4QHcq/p5OUwka6w1\n3VC8GJdBG2WLk4PqmpytiFIFKliMpXuEn4Dc8IM6Pspu5fTZ0xo06GOpaz/L\neu49IZzV4IhS5K7cxJ1s6FkfPFZCz8QLgOLlcEBmDG8ElDcGDFObqOAgfQhw\neopZN4aAF5GBLYBTULvbiQ3Ro0uBv/y3roQ5kqtrklDbkmuhVAm+NM3gilG1\nHY38l8FerUrPI7BeysK91iPviWD09rvOO5H+RSV8Il4Ljf1xN2CJBq3owyV8\nKb3QBij0gbxCyJj5AeWw+dzAhsq5j42cxNavHMs2tA5egynkEmFEHyODfmXt\nVSEFtRpMyKDF1tBD6D5kKRqYKoQHHFiccjjmehgMggSs5YZlddMzeokAvJ+m\n/YEE\r\n=Ppwt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"6a4a302c9f43038de5c6a93355df1fe4f5204a5f","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"6.4.1","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"11.1.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^5.2.0","express":"^4.16.3","prettier":"1.14.0","supertest":"^3.1.0","pretty-quick":"^1.6.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.1.1_1542213242180_0.15410200811046382","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"express-slow-down","version":"1.2.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.2.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"13fbc0fa5d18d15da9c5a816218011fdce3f723d","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.2.0.tgz","fileCount":4,"integrity":"sha512-YrsNyDhUJKlqNZ6qxMm97xZs8QX7iHVw/LHYs09CYk8JmL8al9bf5ChgufQx72nJE7H43/XnEHSHEPFqkR+lAw==","signatures":[{"sig":"MEYCIQCspwPQ41Mqlc9MmIfp6aAu2AuvMYQxeMez05TDMSMLtQIhAPu8nv3YsJgzCL3g2/F0Im5UjP0HYJCueNNgTt74SoSk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM81eCRA9TVsSAnZWagAAmJ0P/R/W0G+OI+sRSTVz4Y/d\nGgwno0H4DKD889jhH3DN+eUgRybw+ebS67Is9+vBjQlUulZUHIDSTZ6qioiC\nZwjK5scL7Fztk9BRUXlOy+82qoUMrt9QRLpQ7bsINIUwr66mfeKMPqJr7o56\nSXj3ln8HSFGiAkxsG5WZLBsItMt1Ak/O6XvNAALa8pJ66jrYEgo/ODz2Uswx\n1wgQerb6TxUjYZG8zBIclMABKforNHQG6+17io5VVCTWzC/m1z7nDU+CAh7h\nfDgSEbE56cSfV9TBeFPQAAs+jqkrjawFBypBYwLp6PZI84xXXkg9iNP2ab1c\n60EgHWMnyDzGt9CZXfmFz+RNiNANsxnQ2ONTEo8qPAKwwrFBqZ04Y5I3hdAm\n4eLqXau6ctHOHWQ1aOdlA44H2ETc0poGPgc+y9VQjl5wt69F+FofCkp5jO5u\nk/9w2NWT4PO8gBU7xh8ihu/7Z5w545GZoX28Ypmuvtwb8iZ70aIFoqDDSbJX\nN9sK7n15oGMLSr+a/gFiiUbUDx+3rfbF3OHGu0ANz6fMcPbXNgpY7NuxykBW\nZiqgSAwZtUWtIDZ7iZFIA/H8/KG7/7Jo8mDT1XwAEuaUwe8XpafyHpdSheQ8\nrQGlF9KVa3oQjiBrl2074qUiKZsqog8mKFOrcqq1TFpm9Ald4/KV8pcstH4s\nNIJ1\r\n=k1Bg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"1ad09d8d67b6b6dc5ad4e678691aedc1d0492bd3","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"6.5.0-next.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"11.6.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^1.3.1","mocha":"^5.2.0","eslint":"^5.12.0","express":"^4.16.4","prettier":"^1.15.3","supertest":"^3.3.0","pretty-quick":"^1.8.0","eslint-config-prettier":"^3.3.0","eslint-plugin-prettier":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.2.0_1546898781583_0.5222558658964838","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"express-slow-down","version":"1.3.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.3.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"f81afc749811b55af484750f67c7f00550efff50","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.3.0.tgz","fileCount":4,"integrity":"sha512-s9ZfWRDTG/cdORMlAgWFVnTzeJSkiHDGPZqbhYgLsevkitI0/QS5EEqnFW20DUhOmprBz1nvBeHnFhmWvrUxXg==","signatures":[{"sig":"MEYCIQDrX0bRwGef61XHDd0RdrfhjSW7gOhNgdv4O42oZfCplQIhANSbSJh6L5wcGfGT/AUMmOwhT11qNCGsa7pQ2+Fq14Gr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTolGCRA9TVsSAnZWagAAb2YP/1JkIMZrrnjRSXJ21MQ4\n9hjEbKWUuVJYzAbnJzDS6ByMMBmvt07bcd6XUuQflHclxaw46FoOLEzw3VnW\ny3PHZmJeyfSv11JVWlYOzHixtoQTSqPGkgZAd+7PAR1ujTKrE65FSeU602EC\nT+OkrTogqU3QltXFdUc4Evz+qrsnSmROcxtqssm1zSqFtfkbFv+ky2KgQTWT\nZFMWz7a2/veJY9hWuF0ReyQGSaW0kPBQ0NIAafP7vtOrQDabxFjGUv4Jg/T0\n76FT6acFpdqZSVGoAfufzutU9g7HNGJZx/sDvjMTO3G76NMYc4bTDyYw/9dr\npWM1inrE77TR6TgiEFwkkd1x6j4yxnVzzW28LnIC8L/3aKCocCFskhNepxLn\nYHMU8MQSG3u37HUDdYQRtcJmsdPI/tSeE5bFH1GEuEiucRGieCrR29CBlQkR\nv7tlTlTQq/MwQQkXpiFvZgI/Ba3I7HXs+SIz5T6tUOAEOYn3Va/QPZkyeFZk\nTeWOfDe+h9MvbsxNpM1SgK7WZKYtG17fGPp3vPRLJ4T6l+O4Nm52zY1mi8HE\nmcdUNN320kKhgIn7vo/dtksnKJa7hqGflh4OlYuF0rlodJDoZGfPkXkbcdsb\nuFVYexdovG2XNw+9Bqpi6yzOrY72HQt5aTOYsG2LJJS7/7DQ82sx63I4L/mR\n3HPN\r\n=coQC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"94ce55d098e329c80838bff70a48bec88db9f4bc","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"6.5.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"11.8.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^1.3.1","mocha":"^5.2.0","eslint":"^5.12.0","express":"^4.16.4","prettier":"^1.15.3","supertest":"^3.3.0","pretty-quick":"^1.8.0","eslint-config-prettier":"^3.3.0","eslint-plugin-prettier":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.3.0_1548650821916_0.28910216726725","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"express-slow-down","version":"1.3.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.3.1","maintainers":[{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"nfriedly","email":"nathan@nfriedly.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"0458bb8670ea1cbedaa00bae4293024ee4e9445e","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.3.1.tgz","fileCount":4,"integrity":"sha512-mkxVJt3z2e0/LIVp144xpaPw8Ku2f6XS9ftjgwMsUtp+4a84hk6NI6/KTEPkq1kjCsJuXeG6SA/izCWxaErBdg==","signatures":[{"sig":"MEUCIDtU9RLevLSi9i/l7V6dt94y/zX00NC0in9rj1tiqge2AiEAqxsUT3sCQOKxTxNSU0QZhfpMtHP8j8gz7HLStmtL4jU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUJ8TCRA9TVsSAnZWagAAaPgP/36jtq1vxqmXZx2T52GY\nacVWCBFdutJf7NG28FQaVPit/WTuG676ZiEn/G/5/L2QJmkd4clZFY2VCDR2\naaug+MSUqh/EU2WSQwHSVQ8Ld1NZeLLeyjf3B4L5/WLTq3wYnpDkWu/upeHd\nENiZbiWn3D1g5/nEDz78BkW1ZiMyHZpfXTXGirY1KiNTUY1MhlWZ7fXNW0eS\nspWJwweAjnjrdofx8q5rs/UYXu4OY7eYQ3iepz6iHn3k4ZDgTLoDM9lZiCI7\n+fFgHanphIIgsN3bw1COg8zhG2ImdhuJXRFKbu5DjLaQ6LxZcyM8c0QNgQLE\nbUH8x9PSEsWnqfnYis/b4MHnbs2EhSdfR4nvnFYrfRsLImGxYwMMHQLtHCZF\ne4L+aEeD0l6tHoP3j3EqYfFMtv1HrYXp/6BvPqptthilnHPTAjTI8Izt3Dt+\nSjLdeTcTI/QcnPZa8fcZChp3b1kRv/cIbMp4BhDBXE8GnP0G4Wy1f1gaDyoI\ntBrRobHQgP5g2plGoTDLpmZ8StDQMS7Rb9dxPuTrCPxf60n/stiqBVDJawcC\nIRwBKPn388ziSeNimm/2IF/B6IyAFb/Q1NcfOZibvLz0AkAxuAMXRSKm3w/w\npJN6ocI4/lOh/DmMAghUF31aPJ8Ah5+y5BDKhWziTohDgfui8MJk6jWidFMu\nmBP6\r\n=hE5B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"73dde43039457d705e76a35cd92fafda78ff1281","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"6.5.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"11.8.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^1.3.1","mocha":"^5.2.0","eslint":"^5.12.0","express":"^4.16.4","prettier":"^1.15.3","supertest":"^3.3.0","pretty-quick":"^1.8.0","eslint-config-prettier":"^3.3.0","eslint-plugin-prettier":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.3.1_1548787474755_0.9878883057025318","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"express-slow-down","version":"1.4.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.4.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"89e0aef6c3bb3602b70f06e0824889bd2362cc21","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.4.0.tgz","fileCount":4,"integrity":"sha512-Tw5aa0plPj2STiuc2SyMw2VSjMvBgLGQHHoPhkIL4iPQcFZDueWBaiLxFZ3SrwrJhiu3b3sHNcsP6lXeWnbwAw==","signatures":[{"sig":"MEUCIQCz2ps+ZvjGqhnlA3mnfcvgr/YZzBa//Pq627yvaowcQAIgNUnX2jR5kjPpNI8f1Go8csfw0GpF+PlmEYqqI+Qfask=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0rBCCRA9TVsSAnZWagAA7rMP/ReLf3l49DSu27IEG85z\n/858yWohbF0wRlnKYagldqtq85V1FKqFnwChfKNkdpCfDRHlz6gNfkRSwNsH\n/rA+Wkg6NVuSMzEI+H90ZhSbFQFvz9wHplPg1OfIJqe7DEJHLOAyfO0wIUnI\nz7abanQu95H3fTTQ2t+8vVzSlCzQBT0p4rc/re609XqoBm7jcCon0xGnUgTi\nZCf/a+zPsyPEu9bGM+MI1fMz+CZLxGBnlMLgTlYRDmyFggaaF2tS3BaVnI4t\nOe1DHk6r4OVkgu+adUBQlHVRpu7v51Is9HOzQm0v3UXtLNxYw/YVikrxnM06\nE0XHg1XkWAP0/RVv991zxYGTG/dsNnp+tspiq0k/KCANOcCzUgR8/F73+zpw\n2f4CYFVsoh6/6CNHyP2kp0Pm//Jfr9FvuyQ6Gjgp6RmFGZdXijLHNtsnzhOo\nJQ4iWd5+gW4IHkW+PGNxy8dcRjnnByVF8LA9taWi71eoQbxsl7URTwjp8veK\n+t4Bh37INA/ZrZ4l+A7vJW5CFHn/5qPY3XIokCKay+LXEu1Fzn6hFOlSCryF\ncN8nQKF8zxKirCVdqAMAIDNOuEwbFuB4lObtzwv4H50Dwyl5romdgqXI0SVC\nlmhl0a6KUqBeDQPWL9KNUItSqzvNU4FkLAwYzGFzKwEXSRD19MF3D0vTnChe\nZiJ/\r\n=DZpp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"8b06740b113e10020cbee91db81fbcf3f9754d28","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"7.0.15","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"15.4.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^4.3.5","mocha":"^8.2.1","eslint":"^7.15.0","express":"^4.17.1","prettier":"^2.2.1","supertest":"^6.0.1","pretty-quick":"^3.1.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.4.0_1607643202046_0.4986910736777297","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"express-slow-down","version":"1.4.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.4.1","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"2c1ad614ca7ab171d0891e72b063eff91c9ca03c","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.4.1.tgz","fileCount":4,"integrity":"sha512-3eIJb2yWriXOSxHfUMfsmy1W+iwg6xrWVpIixCgEUk6qp+qxRkahZORAuedq5oVIYovPIDN9OW5esi2WfQvUwA==","signatures":[{"sig":"MEUCIGkSz1Ufy8kTqnLtxjNh5hUMCovRBplsAy6nG9Aai+OsAiEA/wm79DaATaD1i65NiYBvBci/U+OtCKno5gFY37QFQJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGSYqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTJxAAmkJFVOUNsfjnYQ47O31A2NTNrsE4htovslf13Hy5EQNIxBao\r\nqRywjvDY3ckx4zC6jb4urLFTuzmfFHQbm2tD28+/fsjunlr6n0ydadETuJI5\r\nqEcqVCLNK6BlYhkAvB7WcyzVPMzdmc2qF0J1TdMuznM0KZkmwrd1sdwO4kEr\r\nW1lyi+dhbhfId3q5h5563JRaNhkg7A+U+5hi+S5hY9atnJSrHfSQtGbwYfEO\r\nudZKUSGqFLYMAwBwJEJ2MCissMnzXx3x1QqGkrkhdqSNOlf/iDj8gLG9BeVG\r\nNL/a8e/CYh7RkgJ5JNjAiZdlEtzaVRJFzbuHDL4gs3KRc2S1QPPtAOCakfrM\r\nRqt/xtE6FlBZeUF3N0+68H4OMrrdb/Ogn4DMaoEl+fLT6SJvKp7hcupCOtna\r\nNgH1AtZibz1llixWtVA0k5YQEuhY2gWop7k3kt5tqt/CY/ge2Can7Wvc9jKC\r\nELMzqzBg1OwiSmKWTp8l/XvEWXvPPgQ+SOBomgpFhd51XEKuuMyiV7iPMzWH\r\njeC7yW/9Kl5juXfeRdty/BGp0ZtPTBZjepaJjEi14ghQp/6N/AJnnWD0+AkN\r\n6z6dJ79r3sP1kEPvylQDBhJtz1wJCB64OiCADNPHYdmsnBWRpv7S6zoDL4CD\r\nrlCJ+jIl0c+zhxGqekbb6KvxCt3gTTsHEYI=\r\n=e1ke\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"459f2d532246c263356137dde6b840f522b6bf1d","scripts":{"test":"eslint . && mocha","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"8.13.2","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"18.6.0","dependencies":{"defaults":"^1.0.3","on-finished":"^2.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^4.3.5","mocha":"^10.0.0","eslint":"^7.15.0","express":"^4.17.1","prettier":"^2.2.1","supertest":"^6.0.1","pretty-quick":"^3.1.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.4.1_1662592554654_0.029267671215658764","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"express-slow-down","version":"1.4.2","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.4.2","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"516c6fd1a0a3a4ca17ed99fa924b3a0276fab25d","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.4.2.tgz","fileCount":4,"integrity":"sha512-f7N+wA+g1l1yQGvIbp5QgPKgRGQKnjmjSxTwU4UTttdq7SHt4szqa4a6rVnPOer5gFsY3ytKqR2HrEbEsQKB/g==","signatures":[{"sig":"MEUCIQDy6y2DhQ4oLyNtyoKzAWsqE6C9wkYdyNWptDrmu5TRLAIgL3fFJG9PNoBGw+I69jTnyncE2bZidXIXLiXVlzPxvDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLDbiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmopcw//VCogpxJK9LR0GgVAZjDgdrBg/Bssh5t+ERyjNAk2vEibIURN\r\nospaWSS/ohjSyGmoBmc0CBKkkBhqNp+Snxr5WTWoiOLnyjtGTSfOzsrcA/SC\r\nP2cPfBDlaYxPpYFCisgCWwy2BSoqBLowChzBGLkNXqzoSuG+tLVkPHD6/24S\r\nN9mPd09iPt4CXzzwxlqpeYY1UhVtJJV5Eu+xJoU9MsAqxoZUFGtDDITuugnu\r\nGL217IWWGwl3T7olKarfVEeawFrlEeKJKzb99vdBfAuuMOBEKdA9EJcoBYtw\r\nu4FBo/YVxPS4X14q8H4XHIsPMW2/WCye2FnDtQrcObt2DLqC0Y+wdyE61NEm\r\nZlH8Phb352TclySeeiZhlD2MFRpAG54xeqm59DtStKK1feJk0/97Ckrep0EA\r\nggznvNfjXcuVRasvTBJFS37nYx+aAAEtwKZpIt55s22VtSm0eDAaWVbzPI4z\r\nCYe0cd8diB2nhasw5+wmZyiadqJs2srpSHeR8lJ1yvA6y5gU0TBWBMkMxd2k\r\nTW5oPeJhGyACL4+4rSaL10GiiDJ27v9pZ/FRtDc/mG1EPANMq3PIO5TEcPgZ\r\n8qQVukxoqwmLP8F5I0jdhHwshFKUAGjY2peDpAzJe3QOIu3fn3mCeZGk6W/3\r\n+himQgICYV27OmYI1boxkjy+gtj3koE+cRE=\r\n=d8fl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"9bac5ff2e7aa82291f3d4677bf37e2556af3f87e","scripts":{"test":"eslint . && jest","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"8.19.1","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"18.9.0","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.3","husky":"^4.3.5","eslint":"^7.15.0","express":"^4.17.1","prettier":"^2.2.1","supertest":"^6.2.4","body-parser":"^1.20.0","pretty-quick":"^3.1.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.4.2_1663842018514_0.8278258076373886","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"express-slow-down","version":"1.5.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.5.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"7222ffb72e7f085f9eed19f60071d239e3d6657e","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.5.0.tgz","fileCount":4,"integrity":"sha512-GCoa2a+mf7CE7C00TIoPMbcgQSXxEVolSAbP97uHyzVy87ssp0/IDtJ/GBxjv+gnfM2R1l2QcEfYixFJK75n7w==","signatures":[{"sig":"MEQCIEq1L5uDkphW1tSKwfPmTTqb7HWlBhswqO9aUOx8F3J5AiBHLviWqOl41JS67vAya9FLHg2gAzvzBDPLOZw4Xzt1Og==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLhaIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoenQ//V4gD13xvaBTVApDFErvEEUrmLkzaDDl79akKMd8fEtGnLY6g\r\nVTOawXgB3oObfzShAkFQlO7TvcOwevUUSH9EcGrQ530tSLby7o/7Vd5r2GiZ\r\nvAfKKxLKEazrxbxW8q5rIsEf30XSz9e151icjue6tfkMbwlRhDVlp6OeE9sp\r\nv2r0okAIEILa9jbenJUdtybqtOlDRkvt0vwxpYLjKlpGki+fZ/QfQ2bWy7JL\r\ngy3+vtYC/7niX/CwOkCqQG2MhaGz1Z47N3bcwbCN/OS52i+JLV4GszgmEuej\r\nE0Cte4kRzwya16jzixrPWrpqTFaEStnzhUcIlivzbDzUGO4FrRlL1f1Rbre0\r\nIdnFOVpOGdwc7kZJznXV7VwS6OaZX6qZigaKpAv8bpAQ3IC7oXp77qO/hQ7U\r\nOhuP2EPm1NHOJaggZKSgg6l44FwkYansm/z34geRFzGjLE9zVxKb5/OHa0bL\r\nnn7doC1wEls8px9V6k2KJTPomhzkkm0bvtiZO2l4n/NTeW0uy+KEQ5F0QC5U\r\n5BXl0m+I2WopwxEwkPZbwAPvh/geSF+aTH4rmBRXBoat8lYpbCp6SvxxBZ2B\r\n1QF7dhzaVYxkOeCG0/TPBxqK2d+tyJ448Tt1X8KR8LN17pwkhIgcG9egGPgY\r\n31bn8PMh+Sncx+6zOJoqCEFNqjV8T8zL8/c=\r\n=BmE/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"a9e65096b027874de5d01975115cb23809e42964","scripts":{"test":"eslint . && jest","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"8.19.1","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"18.9.1","dependencies":{"defaults":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.3","husky":"^4.3.5","eslint":"^7.15.0","express":"^4.17.1","prettier":"^2.2.1","supertest":"^6.2.4","body-parser":"^1.20.0","pretty-quick":"^3.1.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.5.0_1663964807908_0.8017192063164089","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"express-slow-down","version":"1.6.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@1.6.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"}],"homepage":"https://github.com/nfriedly/express-slow-down","bugs":{"url":"https://github.com/nfriedly/express-slow-down/issues"},"dist":{"shasum":"6af1cd98471c4928e43e97d02770fdfe03b894a1","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.6.0.tgz","fileCount":4,"integrity":"sha512-M2+Gl6vtvHW5CiRwy82epoiMHWWDVsLws+YnhO2C0lY6eAbRSvRdCA1G1VxSY68y+Urfb74npTO0kdHgC6OPHg==","signatures":[{"sig":"MEUCIAj/ZASHWbN4xzfMlkdxjI1rpWWbX9o7c2AARpbX3rZdAiEA7/zkPcQzgRDSCyhjHmnq8NV2NRV5rnh3n93ZmVaMhkg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFSqCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrF4A/8DBS6juLqt/dhYma7Ye0xIN0+cJpiDJAUIWTwN7I2G/hkFY1P\r\nEhIJ/p0SdeQoHkQcZ1CWlWANUrYmdyNc811li0lZe9rXLxDX1AtRyZCYwIXf\r\nHw8tiwXdzKoS/T8xYwdpTK5KAVLltN+eeSlI+GId8eZz3RWx9jTJpUsadAnH\r\nxrBJ8TxHnJYn4/ITsQ12h5m9+1pLuIgGk8X0PZoIakPh9taSZU8utC/dH+vb\r\n9xgMxmavi5e66q+biXYs8DJdk4tYzX6WcMsYkv45po0smu7AjPiHxT9v5xWI\r\nN+EbQaUm2l05ptFEFONBGmEKjYMYuU/oLBt+8PWd7JAfbAcWWac9VGpCAH/9\r\nwGR6HU3Iuzq3qkFiDc8ICPGUHffBdXP8tpjAa0G/Cqyd2ZmZdOop68hfVsN1\r\nEMA2ZHlfJYAnxyZz0WHSxqYB8wu0r3g/KczSpG2AsTsTuo7AwFx18FsFMfaX\r\n03F3bUeqKrqKrNKyFIR5T+E+d8S9bwln2q3t2L9sCFUdFpuEbFGQhhmpyuvo\r\ntvKgu863KlGGB26xCQHpMAOQkAVx8DvO/kUg76WtSB6Fgg7VglHeXHBkdJV8\r\nMr2rbqDXBcWvJgyT5v7L2ngYwzoloidoTaFaLruq7hpTkp8pFm8teEXSbLxy\r\nPZmS6AnUQjfgijao2YLzuUZhPHdkDq4RwWs=\r\n=C7xX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/express-slow-down.js","gitHead":"c70c381722ae03695ebdde4e112e3f6780fb4070","scripts":{"test":"eslint . && jest","precommit":"pretty-quick --staged"},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"repository":{"url":"git+https://github.com/nfriedly/express-slow-down.git","type":"git"},"_npmVersion":"8.19.3","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"_nodeVersion":"18.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.3","husky":"^4.3.5","eslint":"^7.15.0","express":"^4.17.1","prettier":"^2.2.1","supertest":"^6.2.4","body-parser":"^1.20.0","pretty-quick":"^3.1.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_1.6.0_1679108738558_0.14243264663183886","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"express-slow-down","version":"2.0.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@2.0.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"fff3db7e7dda56335aca69201d2bb6aa185aadfd","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-2.0.0.tgz","fileCount":10,"integrity":"sha512-D/NdLp4yz6eOY0RyWzz0s+aiJirf0f/GGOGsa/BvRJ+rv2iMxpmjjnD6b1hziGtOuOOH2vpFWklKKLLeXwsjlQ==","signatures":[{"sig":"MEQCID51ADSUSdyVlWszz5if19c8fG4Aj9eMixO6HxTkjuNjAiBn4kFHSR08d0CBzyYumj5rbJZxdw5ahG6xbMXgjC6P1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79863},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"41ff3ef8a7c6535fabcea546c3641cce905bcfd5","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.1.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"20.9.0","dependencies":{"express-rate-limit":"7"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.19.3","express":"4.18.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.2","lint-staged":"14.0.1","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":">= 4"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_2.0.0_1698400820447_0.9877296007006522","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"express-slow-down","version":"2.0.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@2.0.1","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"60c4515467314675d89c54ec608e2d586aa30f87","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-2.0.1.tgz","fileCount":10,"integrity":"sha512-zRogSZhNXJYKDBekhgFfFXGrOngH7Fub7Mx2g8OQ4RUBwSJP/3TVEKMgSGR/WlneT0mJ6NBUnidHhIELGVPe3w==","signatures":[{"sig":"MEUCIQD8ZUT50aRBphmU9ctsl5ppV6Oxlf/p2syKLMXO97hUrQIgcWVqvZhaL2Z+5CHG7nih3V1OiPIjyBioJm/JEhI/75s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80209},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"be448028e55e867a76dd4c36b733903a4d571cbf","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.1.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"20.9.0","dependencies":{"express-rate-limit":"7"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.19.3","express":"4.18.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.2","lint-staged":"14.0.1","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":">= 4"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_2.0.1_1700152960676_0.5921979268347579","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"express-slow-down","version":"2.0.2","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@2.0.2","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"4a549d3ab0ec4f205507767b2f745ab161e8b281","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-2.0.2.tgz","fileCount":10,"integrity":"sha512-Ql2gg6bBFVzwGUFLOPRcy8JkAMEinLZcdUpClIzsAizWh7AFvq93NHx7naugl73e/UoChncKuw5hQURBeSYtVg==","signatures":[{"sig":"MEQCIH4HrYgNixl56nclQo0I8di3q/rb8bJeEWQ1eAVQ3Co+AiB1kcLjJW04DWKZQOtzfehA7qtLcSVUDgnhuV7UIy0s7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80220},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"13b5bc97f644aa06b67eb18f3b2ce67daf84b9ee","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.5.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"20.12.2","dependencies":{"express-rate-limit":"7"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.19.3","express":"4.19.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.2","lint-staged":"14.0.1","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_2.0.2_1714904068291_0.3453227066925142","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"express-slow-down","version":"2.0.3","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@2.0.3","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"7b953a15c95105386d78370f8d172d88bb225dd6","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-2.0.3.tgz","fileCount":10,"integrity":"sha512-vATCiFd8uQHtTeK5/Q0nLUukhZh+RV5zkcHxLQr0X5dEFVEYqzVXEe48nW23Z49fwtR+ApD9zn9sZRisTCR99w==","signatures":[{"sig":"MEUCIQCdk/7rsO9NYeGxSZL5VFS9aKU30mygk1n/fL+fCEBkuQIgAXuHxYXRSKml3n6OxZdcrKMlhWdTTOZnKTddp1ulxJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80395},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"dd0363d2e59f903a7535ecc2e582f5518715af0f","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.5.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"20.12.2","dependencies":{"express-rate-limit":"7"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.19.3","express":"4.19.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.2","lint-staged":"14.0.1","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_2.0.3_1715198538037_0.056124630048663526","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"express-slow-down","version":"2.1.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@2.1.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"79182d6c2136db62ac3ee79ae9c44f9ad53b6042","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-2.1.0.tgz","fileCount":10,"integrity":"sha512-tQ/ItTDbGfo+fLS+jxu19vgYOgZk7wyOakuAsnzl8f7HmxG3ynWAoo136+oqB+rqHCk3QyM6VoXL03qA5a4gVQ==","signatures":[{"sig":"MEUCIGD6fZmvQOIQW1EMVUW2UOrlrdDz8oUjZOkvpIv4svnnAiEA6MNt2tHCuFwMrxtQ7jJVTzc0mDrgUzKdH1FK67geE3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37475},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a2ef14323efd3763f724419e6d86b2982b354c71","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.9.2","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"22.15.0","dependencies":{"express-rate-limit":"7"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.19.3","express":"4.21.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.3","lint-staged":"14.0.1","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_2.1.0_1747239335806_0.011582662211375272","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"express-slow-down","version":"3.0.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@3.0.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"f2ffd738dbc9e352c788979bbec17af3b8477aea","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-3.0.0.tgz","fileCount":10,"integrity":"sha512-G/EQSH3IV2zukLwQnsCKEveswk8L31vDqiPS6eNkXYeSRhjHB3YSuKNoVSGjOVSqPGW1p6Oeq+b8l1PyWeVEmw==","signatures":[{"sig":"MEUCIQCoqsVEGs8A2q6E0mjLt5wFdt4BFxxhRd4GDce22q3s9wIgPlgGvR9IPrRNFzC6+AnRx5RmhdiRyvHGFWDSJMeFrMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37708},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"0b73eee04890e214c8acc68b12c4ff9c25a3d21e","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"10.9.2","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"22.17.1","dependencies":{"express-rate-limit":"8"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.25.0","express":"4.21.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.3","lint-staged":"16.1.2","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_3.0.0_1754308792886_0.13303638340068047","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"express-slow-down","version":"3.0.1","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@3.0.1","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"8d027066e64956e44ae4afbcf2049e3b3988abf2","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-3.0.1.tgz","fileCount":10,"integrity":"sha512-Syl+K1o/z8zSTsMWbDpJEOF5WzSj923ktkv/WbNq6E3tmNwPoEcKIhqRxMLWq3a/4OudRciylEqEZvzMBdzn8w==","signatures":[{"sig":"MEUCIQDhVt4UT9tJWHLkMsLgW5lcJjDWbIyepn2AkTjV59XdPgIgYVOQSAte/9UaQPO4Jgo2/WS6Bcf1tONgv8XKs5G28Pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":38183},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"6f812165b0941c90a245954cbe35372486ef5bb6","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"nfriedly","email":"nathan@nfriedly.com"},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"11.6.1","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"24.11.0","dependencies":{"express-rate-limit":"8"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.25.0","express":"4.21.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.3","lint-staged":"16.1.2","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_3.0.1_1762271881292_0.17023660775097293","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"express-slow-down","version":"3.1.0","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"author":{"url":"http://nfriedly.com/","name":"Nathan Friedly"},"license":"MIT","_id":"express-slow-down@3.1.0","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"homepage":"https://github.com/express-rate-limit/express-slow-down","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"xo":{"rules":{"unicorn/prefer-string-replace-all":0,"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"]},"prettier":true,"overrides":[{"files":"test/**/*.ts","rules":{"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0}}]},"dist":{"shasum":"13868d00825f4df670a5c1136c35491962fa0761","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-3.1.0.tgz","fileCount":10,"integrity":"sha512-0gZ1HHow8H83z1/+81DdWB60RSGHI0mJB0ZM1m5P6/BexORFcA8P1TgU0NKEwOiRmxyCIoktZYqmA+1UCc83+A==","signatures":[{"sig":"MEUCIQDRfuFnZI+rznP6zQrKUTo/5R705dYem0q+M/D9O9aD1QIgVkwpbf3VkQIrE7pj5+y4vSlWZ7JbMXymABCoEfYQJuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37621},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">= 16"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"796b40108a8d3f73de3fc43b5300334ec900f2c1","scripts":{"lint":"run-s lint:*","test":"run-s lint test:*","clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","format":"run-s format:*","compile":"run-s clean build:*","prepare":"run-s compile && husky install config/husky","test:int":"jest test/integration/","test:lib":"jest test/library/","build:cjs":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=esm --outfile=dist/index.mjs source/index.ts","lint:code":"xo","lint:rest":"prettier --check .","pre-commit":"lint-staged","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","format:code":"xo --fix","format:rest":"prettier --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b69f5e0-f13d-4cdf-a4b5-6695a6a52d70"}},"prettier":"@express-rate-limit/prettier","repository":{"url":"git+https://github.com/express-rate-limit/express-slow-down.git","type":"git"},"_npmVersion":"11.9.0","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","directories":{},"lint-staged":{"**/*.{json,yaml,md}":"prettier --write","{source,test}/**/*.ts":"xo --fix"},"_nodeVersion":"24.14.0","dependencies":{"express-rate-limit":"8"},"_hasShrinkwrap":false,"devDependencies":{"xo":"0.56.0","jest":"29.7.0","husky":"8.0.3","del-cli":"5.1.0","esbuild":"0.25.0","express":"4.21.2","ts-jest":"29.1.1","prettier":"3.0.3","supertest":"6.3.3","typescript":"5.2.2","@types/jest":"29.5.5","body-parser":"1.20.3","lint-staged":"16.1.2","npm-run-all":"4.1.5","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","jest-expect-message":"1.1.3","dts-bundle-generator":"8.0.1","@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"_npmOperationalInternal":{"tmp":"tmp/express-slow-down_3.1.0_1773257878390_0.46176880695894007","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"express-slow-down","version":"3.1.1","description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","homepage":"https://github.com/express-rate-limit/express-slow-down","author":{"name":"Nathan Friedly","url":"http://nfriedly.com/"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/express-rate-limit/express-slow-down.git"},"keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"type":"module","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"main":"dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","engines":{"node":">= 16"},"scripts":{"clean":"del-cli dist/ coverage/ *.log *.tmp *.bak *.tgz","build:cjs":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=cjs --outfile=dist/index.cjs --footer:js=\"module.exports = slowDown; module.exports.default = slowDown; module.exports.slowDown = slowDown; \" source/index.ts","build:esm":"esbuild --platform=node --bundle --target=es2022 --packages=external --format=esm --outfile=dist/index.mjs source/index.ts","build:types":"dts-bundle-generator --out-file=dist/index.d.ts source/index.ts && cp dist/index.d.ts dist/index.d.cts && cp dist/index.d.ts dist/index.d.mts","compile":"run-s clean build:*","lint:code":"xo","lint:rest":"prettier --check .","lint":"run-s lint:*","format:code":"xo --fix","format:rest":"prettier --write .","format":"run-s format:*","test:lib":"jest test/library/","test:int":"jest test/integration/","test":"run-s lint test:*","pre-commit":"lint-staged","prepare":"run-s compile && husky install config/husky"},"peerDependencies":{"express":"4 || 5 || ^5.0.0-beta.1"},"dependencies":{"express-rate-limit":"8"},"devDependencies":{"@express-rate-limit/prettier":"1.1.1","@express-rate-limit/tsconfig":"1.0.2","@jest/globals":"29.7.0","@types/express":"4.17.18","@types/supertest":"2.0.12","body-parser":"1.20.6","del-cli":"5.1.0","dts-bundle-generator":"8.0.1","esbuild":"0.28.1","express":"4.22.2","husky":"8.0.3","jest":"29.7.0","jest-expect-message":"1.1.3","lint-staged":"16.1.2","npm-run-all":"4.1.5","prettier":"3.0.3","supertest":"6.3.3","ts-jest":"29.4.12","typescript":"5.2.2","xo":"0.56.0"},"xo":{"prettier":true,"rules":{"@typescript-eslint/prefer-nullish-coalescing":["error",{"ignoreConditionalTests":true}],"@typescript-eslint/no-confusing-void-expression":0,"@typescript-eslint/consistent-indexed-object-style":["error","index-signature"],"unicorn/prefer-string-replace-all":0},"overrides":[{"files":"test/**/*.ts","rules":{"@typescript-eslint/no-unsafe-argument":0,"@typescript-eslint/no-unsafe-assignment":0,"@typescript-eslint/no-unsafe-call":0,"@typescript-eslint/no-unsafe-return":0,"@typescript-eslint/no-empty-function":0,"import/no-named-as-default":0,"unicorn/prefer-event-target":0,"unicorn/prevent-abbreviations":0}}]},"prettier":"@express-rate-limit/prettier","lint-staged":{"{source,test}/**/*.ts":"xo --fix","**/*.{json,yaml,md}":"prettier --write"},"gitHead":"02fb9b05ede5fc5d4ccc12ab5ed78ada74443065","_id":"express-slow-down@3.1.1","bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-u0qGu2aIt+ZKj/vPhJ510YorAou5r/NTeinDRg+R9SAEOGlLgADnif6tOV2F3bVrM75t2VfeCdOwGLwILGDJvQ==","shasum":"e3c25eea4e61c7760e133977d970fa6e94055d57","tarball":"https://registry.npmjs.org/express-slow-down/-/express-slow-down-3.1.1.tgz","fileCount":10,"unpackedSize":38718,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/express-slow-down@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBkg7gh3Y0g4oKySlodq3/Pcw314wElvq20P32srTsa/AiAQ3K8X8AwvHzXAnuU7vsBOr5JJMpSr4hYrl0tTivDZ1Q=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b69f5e0-f13d-4cdf-a4b5-6695a6a52d70"}},"directories":{},"maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/express-slow-down_3.1.1_1787776989694_0.9542951652202607"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-21T13:33:51.072Z","modified":"2026-08-26T20:43:10.138Z","1.0.1":"2018-08-21T13:33:51.183Z","1.1.1":"2018-11-14T16:34:02.333Z","1.2.0":"2019-01-07T22:06:21.723Z","1.3.0":"2019-01-28T04:47:02.000Z","1.3.1":"2019-01-29T18:44:34.878Z","1.4.0":"2020-12-10T23:33:22.217Z","1.4.1":"2022-09-07T23:15:54.821Z","1.4.2":"2022-09-22T10:20:18.658Z","1.5.0":"2022-09-23T20:26:48.046Z","1.6.0":"2023-03-18T03:05:38.700Z","2.0.0":"2023-10-27T10:00:20.607Z","2.0.1":"2023-11-16T16:42:40.857Z","2.0.2":"2024-05-05T10:14:28.517Z","2.0.3":"2024-05-08T20:02:18.202Z","2.1.0":"2025-05-14T16:15:36.092Z","3.0.0":"2025-08-04T11:59:53.124Z","3.0.1":"2025-11-04T15:58:01.517Z","3.1.0":"2026-03-11T19:37:58.540Z","3.1.1":"2026-08-26T20:43:09.832Z"},"bugs":{"url":"https://github.com/express-rate-limit/express-slow-down/issues"},"author":{"name":"Nathan Friedly","url":"http://nfriedly.com/"},"license":"MIT","homepage":"https://github.com/express-rate-limit/express-slow-down","keywords":["express-rate-limit","express","rate","limit","ratelimit","rate-limit","middleware","ip","auth","authorization","security","brute","force","bruteforce","brute-force","attack"],"repository":{"type":"git","url":"git+https://github.com/express-rate-limit/express-slow-down.git"},"description":"Basic IP rate-limiting middleware for Express that slows down responses rather than blocking the user.","maintainers":[{"name":"nfriedly","email":"nathan@nfriedly.com"},{"name":"hbarcelos","email":"rick.hjpbarcelos@gmail.com"},{"name":"gamemaker1","email":"gamemaker0042@gmail.com"}],"readme":"# <div align=\"center\"> Express Slow Down </div>\n\n<div align=\"center\">\n\n[![tests](https://github.com/express-rate-limit/express-slow-down/actions/workflows/ci.yaml/badge.svg)](https://github.com/express-rate-limit/express-slow-down/actions/workflows/ci.yaml)\n[![npm version](https://img.shields.io/npm/v/express-slow-down.svg)](https://npmjs.org/package/express-slow-down 'View this project on NPM')\n[![npm downloads](https://img.shields.io/npm/dm/express-slow-down)](https://www.npmjs.com/package/express-slow-down)\n\nBasic rate-limiting middleware for Express that slows down responses rather than\nblocking them outright. Use to slow repeated requests to public APIs and/or\nendpoints such as password reset.\n\nPlays nice with (and built on top of)\n[Express Rate Limit](https://npmjs.org/package/express-rate-limit)\n\n</div>\n\n### Stores\n\nThe default memory store does not share state with any other processes or\nservers. It's sufficient for basic abuse prevention, but an external store will\nprovide more consistency.\n\nexpress-slow-down uses\n[express-rate-limit's stores](https://express-rate-limit.mintlify.app/reference/stores)\n\n> **Note**: when using express-slow-down and express-rate-limit with an external\n> store, you'll need to create two instances of the store and provide different\n> prefixes so that they don't double-count requests.\n\n## Installation\n\nFrom the npm registry:\n\n```sh\n# Using npm\n> npm install express-slow-down\n# Using yarn or pnpm\n> yarn/pnpm add express-slow-down\n```\n\nFrom Github Releases:\n\n```sh\n# Using npm\n> npm install https://github.com/express-rate-limit/express-slow-down/releases/download/v{version}/express-slow-down.tgz\n# Using yarn or pnpm\n> yarn/pnpm add https://github.com/express-rate-limit/express-slow-down/releases/download/v{version}/express-slow-down.tgz\n```\n\nReplace `{version}` with the version of the package that you want to your, e.g.:\n`2.0.0`.\n\n## Usage\n\n### Importing\n\nThis library is provided in ESM as well as CJS forms, and works with both\nJavascript and Typescript projects.\n\n**This package requires you to use Node 16 or above.**\n\nImport it in a CommonJS project (`type: commonjs` or no `type` field in\n`package.json`) as follows:\n\n```ts\nconst { slowDown } = require('express-slow-down')\n```\n\nImport it in a ESM project (`type: module` in `package.json`) as follows:\n\n```ts\nimport { slowDown } from 'express-slow-down'\n```\n\n### Examples\n\nTo use it in an API-only server where the speed-limiter should be applied to all\nrequests:\n\n```ts\nimport { slowDown } from 'express-slow-down'\n\nconst limiter = slowDown({\n\twindowMs: 15 * 60 * 1000, // 15 minutes\n\tdelayAfter: 5, // Allow 5 requests per 15 minutes.\n\tdelayMs: (hits) => hits * 100, // Add 100 ms of delay to every request after the 5th one.\n\n\t/**\n\t * So:\n\t *\n\t * - requests 1-5 are not delayed.\n\t * - request 6 is delayed by 600ms\n\t * - request 7 is delayed by 700ms\n\t * - request 8 is delayed by 800ms\n\t *\n\t * and so on. After 15 minutes, the delay is reset to 0.\n\t */\n})\n\n// Apply the delay middleware to all requests.\napp.use(limiter)\n```\n\nTo use it in a 'regular' web server (e.g. anything that uses\n`express.static()`), where the rate-limiter should only apply to certain\nrequests:\n\n```ts\nimport { slowDown } from 'express-slow-down'\n\nconst apiLimiter = slowDown({\n\twindowMs: 15 * 60 * 1000, // 15 minutes\n\tdelayAfter: 1, // Allow only one request to go at full-speed.\n\tdelayMs: (hits) => hits * hits * 1000, // 2nd request has a 4 second delay, 3rd is 9 seconds, 4th is 16, etc.\n})\n\n// Apply the delay middleware to API calls only.\napp.use('/api', apiLimiter)\n```\n\nTo use a custom store:\n\n```ts\nimport { slowDown } from 'express-slow-down'\nimport { MemcachedStore } from 'rate-limit-memcached'\n\nconst speedLimiter = slowDown({\n\twindowMs: 15 * 60 * 1000, // 15 minutes\n\tdelayAfter: 1, // Allow only one request to go at full-speed.\n\tdelayMs: (hits) => hits * hits * 1000, // Add exponential delay after 1 request.\n\tstore: new MemcachedStore({\n\t\t/* ... */\n\t}), // Use the external store\n})\n\n// Apply the rate limiting middleware to all requests.\napp.use(speedLimiter)\n```\n\n> **Note:** most stores will require additional configuration, such as custom\n> prefixes, when using multiple instances. The default built-in memory store is\n> an exception to this rule.\n\n## Configuration\n\n### [`windowMs`](https://express-rate-limit.mintlify.app/reference/configuration#windowms)\n\n> `number`\n\nTime frame for which requests are checked/remembered.\n\nNote that some stores have to be passed the value manually, while others infer\nit from the options passed to this middleware.\n\nDefaults to `60000` ms (= 1 minute).\n\n### `delayAfter`\n\n> `number` | `function`\n\nThe max number of requests allowed during `windowMs` before the middleware\nstarts delaying responses. Can be the limit itself as a number or a (sync/async)\nfunction that accepts the Express `req` and `res` objects and then returns a\nnumber.\n\nDefaults to `1`.\n\nAn example of using a function:\n\n```ts\nconst isPremium = async (user) => {\n\t// ...\n}\n\nconst limiter = slowDown({\n\t// ...\n\tdelayAfter: async (req, res) => {\n\t\tif (await isPremium(req.user)) return 10\n\t\telse return 1\n\t},\n})\n```\n\n### `delayMs`\n\n> `number | function`\n\nThe delay to apply to each request once the limit is reached. Can be the delay\nitself (in milliseconds) as a number or a (sync/async) function that accepts a\nnumber (number of requests in the current window), the Express `req` and `res`\nobjects and then returns a number.\n\nBy default, it increases the delay by 1 second for every request over the limit:\n\n```ts\nconst limiter = slowDown({\n\t// ...\n\tdelayMs: (used) => (used - delayAfter) * 1000,\n})\n```\n\n### `maxDelayMs`\n\n> `number | function`\n\nThe absolute maximum value for `delayMs`. After many consecutive attempts, the\ndelay will always be this value. This option should be used especially when your\napplication is running behind a load balancer or reverse proxy that has a\nrequest timeout. Can be the number itself (in milliseconds) or a (sync/async)\nfunction that accepts the Express `req` and `res` objects and then returns a\nnumber.\n\nDefaults to `2147483647` (2^31 - 1 ms, which is ~24 days).\n\n**Note**: Providing a value higher than `2,147,483,647` will throw an error due\nto\n[Node.js `setTimeout` limits](https://nodejs.org/api/timers.html#settimeoutcallback-delay-args:~:text=specified%2E-,When%20delay%20is%20larger%20than%202147483647%20or%20less%20than%201%20or%20NaN%2C%20the%20delay%20will%20be%20set%20to%201%2E%20Non%2Dinteger%20delays%20are%20truncated%20to%20an%20integer).\n\nFor example, for the following configuration:\n\n```ts\nconst limiter = slowDown({\n\t// ...\n\tdelayAfter: 1,\n\tdelayMs: (hits) => hits * 1000,\n\tmaxDelayMs: 4000,\n})\n```\n\nThe first request will have no delay. The second will have a 2 second delay, the\n3rd will have a 3 second delay, but the fourth, fifth, sixth, seventh and so on\nrequests will all have a 4 second delay.\n\n### Options from [`express-rate-limit`](https://github.com/express-rate-limit/express-rate-limit)\n\nBecause\n[`express-rate-limit`](https://github.com/express-rate-limit/express-rate-limit)\nis used internally, additional options that it supports may be passed in. Some\nof them are listed below; see `express-rate-limit`'s\n[documentation](https://express-rate-limit.mintlify.app/reference/configuration)\nfor the complete list.\n\n> **Note**: The `limit` (`max`) option is not supported (use `delayAfter`\n> instead), nor is the `handler` option.\n\n- [`standardHeaders`](https://express-rate-limit.mintlify.app/reference/configuration#standardheaders)\n- [`legacyHeaders`](https://express-rate-limit.mintlify.app/reference/configuration#legacyheaders)\n- [`requestPropertyName`](https://express-rate-limit.mintlify.app/reference/configuration#requestpropertyname)\n- [`skipFailedRequests`](https://express-rate-limit.mintlify.app/reference/configuration#skipfailedrequests)\n- [`skipSuccessfulRequests`](https://express-rate-limit.mintlify.app/reference/configuration#skipsuccessfulrequests)\n- [`keyGenerator`](https://express-rate-limit.mintlify.app/reference/configuration#keygenerator)\n- [`ipv6Subnet`](https://express-rate-limit.mintlify.app/reference/configuration#ipv6subnet)\n- [`skip`](https://express-rate-limit.mintlify.app/reference/configuration#skip)\n- [`requestWasSuccessful`](https://express-rate-limit.mintlify.app/reference/configuration#requestwassuccessful)\n- [`validate`](https://express-rate-limit.mintlify.app/reference/configuration#validate)\n- [`store`](https://express-rate-limit.mintlify.app/reference/configuration#store)\n\n## Request API\n\nA `req.slowDown` property is added to all requests with the `limit`, `used`, and\n`remaining` number of requests and, if the store provides it, a `resetTime` Date\nobject. It also has the `delay` property, which is the amount of delay imposed\non current request (milliseconds). These may be used in your application code to\ntake additional actions or inform the user of their status.\n\nNote that `used` includes the current request, so it should always be > 0.\n\nThe property name can be configured with the configuration option\n`requestPropertyName`.\n\n## Issues and Contributing\n\nIf you encounter a bug or want to see something added/changed, please go ahead\nand\n[open an issue](https://github.com/express-rate-limit/express-slow-down/issues/new)!\nIf you need help with something, feel free to\n[start a discussion](https://github.com/express-rate-limit/express-slow-down/discussions/new)!\n\nIf you wish to contribute to the library, thanks! First, please read\n[the contributing guide](contributing.md). Then you can pick up any issue and\nfix/implement it!\n\n## License\n\nMIT © [Nathan Friedly](http://nfriedly.com/),\n[Vedant K](https://github.com/gamemaker1)\n","readmeFilename":"readme.md"}