{"_id":"responseinterceptor","_rev":"42-c45f2927e61767ea1b87808fc4306973","name":"responseinterceptor","dist-tags":{"latest":"3.0.0"},"versions":{"0.0.1":{"name":"responseinterceptor","version":"0.0.1","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.1","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"e02a8353ebc87dc28281e23ef60b09acf46f6fa9","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.1.tgz","integrity":"sha512-4uZs4avPgoGz3PGVdeOkhUlPdiFSGEA+vBaCsudiLpBekajvp9xOBL8UmkgSyNd09+o0mMZvrhTogOanlhscKg==","signatures":[{"sig":"MEUCIEF1v9nOINQq3eBxJfJea9uEYdPOUofNPGHQoNavRe6ZAiEAstj6TwU7T6Eyky4HWMT1PzkCUUyiLo7z1dtqSuPr6Is=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"e02a8353ebc87dc28281e23ef60b09acf46f6fa9","gitHead":"33391118b5a86b37429ce5b7803816545a010430","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.1.tgz_1478874918050_0.6549410317093134","host":"packages-18-east.internal.npmjs.com"}},"0.0.2":{"name":"responseinterceptor","version":"0.0.2","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.2","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"0fdda070c5d98f7f71579e6423b3da80cd2df5c5","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.2.tgz","integrity":"sha512-Bt9QJja6YV/jLhzgffgc5Fgl9QwDD07Hn6FSLpPJAphgrmUigauntH3G1MlS3PxkxUiJpPYS/Fmm+ZL+pN5d/w==","signatures":[{"sig":"MEYCIQCusHHf9iFibo6U3TEqT0jthqb+3CtNdCxsMdjOBO5mDwIhAIaMnQeoayAUfynFrf7aYefthu7QzTx287gZEeDZ9jRm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"0fdda070c5d98f7f71579e6423b3da80cd2df5c5","gitHead":"491248ba09acddc517712791836c84a5bcb229e6","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.2.tgz_1478875034450_0.020649620797485113","host":"packages-12-west.internal.npmjs.com"}},"0.0.3":{"name":"responseinterceptor","version":"0.0.3","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.3","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"4077ff375a54046f7337c8b2a59a3dea308ed5d0","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.3.tgz","integrity":"sha512-gR1yUsXEfBo3UMVylRENaPoEmfq8uxftvpReudrSK0X7G0sjISuYDXTZb7FvTF3Vlrzft+H4mBFIupRMQF3+Ng==","signatures":[{"sig":"MEUCIQCqN5+l3GlZop0+XkdweWA9U4vIP3xxmnqM9KbV0g1PvAIgJUBPFccskXPCL/5zXuPK+ab3/rnoQKaK+qRQVD8kfIM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"4077ff375a54046f7337c8b2a59a3dea308ed5d0","gitHead":"fc77dd8bdf932c4350db58ed6ea2f59c6e1690e5","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.3.tgz_1478875110924_0.5982012106105685","host":"packages-18-east.internal.npmjs.com"}},"0.0.4":{"name":"responseinterceptor","version":"0.0.4","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.4","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"b4091be08ebf3d637a529790cec6e42846ed99be","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.4.tgz","integrity":"sha512-aUIDFZPaFToUQZtTvKboEkSdLEjnYrMIHrxDWmKqTgfUctUnoHoYIZJR+Brf+Fdn+JmOmhspdCRKYV9LUswIqA==","signatures":[{"sig":"MEUCIQDqnkqaLSaGuLYatoi0MzlVsoLQ8K9OnNdRn13El+fBkQIgDm3NrDRfIPtZ0Qhsv+2vCjLSAWbZ/FjkH8tVd/nkpbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"b4091be08ebf3d637a529790cec6e42846ed99be","gitHead":"1d28ba8368ddf088cf83bf8143508e97b500fcdf","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.4.tgz_1478875222864_0.18228016002103686","host":"packages-12-west.internal.npmjs.com"}},"0.0.5":{"name":"responseinterceptor","version":"0.0.5","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.5","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"2b88c2e7712dc2e15cd31c4fba11e2e3046095db","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.5.tgz","integrity":"sha512-chi38x/cvpduvn3Es92et1QZV+cUbVZMlnLfmuQPiR+EGeMAbICO4oFtRFnhqg6LUhuXskMYN3obzdjTuuOR8g==","signatures":[{"sig":"MEYCIQD6jpQ6u1YYluIuVKK75o/8DZKy2wGCqijvnZix9zTygAIhAJC6PCxtjmKCwhioeAq8yBXYU/mpHyyYz/KYZxmBtP8x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"2b88c2e7712dc2e15cd31c4fba11e2e3046095db","gitHead":"b03fb0297972a8461e3895c3c43ce41948adc18d","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.5.tgz_1478875775450_0.623700447846204","host":"packages-12-west.internal.npmjs.com"}},"0.0.6":{"name":"responseinterceptor","version":"0.0.6","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.6","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"7fad394454ecae43cf62d1b37e93f4e058f5c098","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.6.tgz","integrity":"sha512-M0TLCiQTHH1kKP29ecQKzrg19CIWyjKKD9V40R4M+HPYkfLoaVMuOEc152p8MhtglZ4qX0ZPOaUMEYtMxmHC3w==","signatures":[{"sig":"MEYCIQCzbF0WA+iwfBglackFeYx61HOPRXagw5hp5QPFbOgZdQIhAJuu6sd4A32cK8fWvw0AS30Dt4h2km45HDkXh14p7Wca","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"7fad394454ecae43cf62d1b37e93f4e058f5c098","gitHead":"d77b29b315ee7d658911e4f3a8877bcb52c4a6d0","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.6.tgz_1478876186142_0.24316906766034663","host":"packages-12-west.internal.npmjs.com"}},"0.0.7":{"name":"responseinterceptor","version":"0.0.7","keywords":["config","configuration","property","properties","argument","parser"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.7","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"84b7cbd282a4e892b253ee4f76e2644c78361d38","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.7.tgz","integrity":"sha512-nswKg6Y/FHCBZpEmzTfAlx+CX+6jmURjzkrG1JP7xMNwYU5iqLOJE2+vvaRGRkP0I428fgtDLuNF3OAiL71QDA==","signatures":[{"sig":"MEUCIDgYEL8738pgPEfG+c4YCe0yibig/CHqeqkqs4oS9w1VAiEA6XVxN2Lx5voyygcrcPNLDjjCKYWgNZ5OJHwtBst1r9k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"84b7cbd282a4e892b253ee4f76e2644c78361d38","gitHead":"cf9d7c0c17a65439b68936662df371f712c8fb66","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.7.tgz_1478876547295_0.4398856384214014","host":"packages-18-east.internal.npmjs.com"}},"0.0.8":{"name":"responseinterceptor","version":"0.0.8","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.8","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"00457921868e91364ad1f89a4be02c0d126ca17a","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.8.tgz","integrity":"sha512-8B5OroNKAg36FirO5dhEc8Uz5pMtl+Nv2zHUeN0cbbI8nk1KIfFvuFy94itgbKTngYziXIRW+mftEJTfVZwLtA==","signatures":[{"sig":"MEYCIQCEy3buEHL2glKnQRAFqmdETwfe0JTF++4VuClWenyoPwIhAIIwNJZRBu/8UhztiY8u8axRevmrXju8pE0slQeg3JSp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"00457921868e91364ad1f89a4be02c0d126ca17a","gitHead":"52f0d5b1c0c5507ecd51e2cc1d04dc54ea2f8973","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","minimist":"^1.2.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.8.tgz_1478876784756_0.6399343288503587","host":"packages-18-east.internal.npmjs.com"}},"0.0.9":{"name":"responseinterceptor","version":"0.0.9","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.9","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"f49add13d1590aa155c434a46e068ce36a57c87d","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.9.tgz","integrity":"sha512-NFh2sAvx84MY51UWgUNrELAy5Pg9mzGp3wT2CHPaI4ImDKQFAQXVwZFaMgRWJqGmPovrzSWLZKtdY4G7svHoog==","signatures":[{"sig":"MEUCIQDN5sswCmreaq7wDdyF+BA5Dowk2+83TUcke2pOIMiH2gIgBOreRP9u/cQvn/BflaOJ8JjklQtJMjdypl1YFyfAhcY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"f49add13d1590aa155c434a46e068ce36a57c87d","gitHead":"9d2632aefb3f5d663e10ef6a1233e6996fbb7680","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.9.tgz_1478877134270_0.18515515024773777","host":"packages-18-east.internal.npmjs.com"}},"0.0.10":{"name":"responseinterceptor","version":"0.0.10","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.10","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"54a4a7d5ae71a4d1cb655ef5a2aeb95dc4fcc778","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.10.tgz","integrity":"sha512-FHF2d8vSCxLampV3qYSzEO2/0JcrP0BXG+8A4NMyYwkqkBtCkRVA0zVbmQxaFvi0q8j7YoZmzsJTkN1iIpFDMA==","signatures":[{"sig":"MEUCIDAgAYpipnXxrws9JfD36i5RTIHqaBsuhVccILVK5ZcGAiEA9OUOcCT7LHjtPNik20KKR6kVB/cFhFdm8GekQ83U0sM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"54a4a7d5ae71a4d1cb655ef5a2aeb95dc4fcc778","gitHead":"09ea0f14044e55c5751370b3bfedc34104f7d1ee","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.10.tgz_1479221240244_0.3036097972653806","host":"packages-12-west.internal.npmjs.com"}},"0.0.11":{"name":"responseinterceptor","version":"0.0.11","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@0.0.11","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"360bc2d25e24e90fc7c66283388d653376573fb2","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-0.0.11.tgz","integrity":"sha512-DVSzQbJcpIgc7O++BQDOIubQ1hFpIn3ijwptWi02UCxEK6V+3U7Bh9fxdlYLfXf2Jpk6nJKw/dlEcndOFsUVqQ==","signatures":[{"sig":"MEUCIQDaA4UOr/aEm9A7phuWTRtxZySzIoeWlnvWjHL5LXd53wIgZ4CN5LFFxSBPe41THNIj7zMEr5lVsytvw8qJEhyjuK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"360bc2d25e24e90fc7c66283388d653376573fb2","gitHead":"a16bf015ae43f06b0f28c7875fa4f45046ad6d2a","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-0.0.11.tgz_1479228690077_0.7876542727462947","host":"packages-18-east.internal.npmjs.com"}},"1.0.0":{"name":"responseinterceptor","version":"1.0.0","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.0","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"d564b8c4f4c8549096c2a58ce3d705c47df5f4fe","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.0.tgz","integrity":"sha512-bE4xBaIxucYAMb6NnG8cuxeFisJuQW1tXgdvXcIuwqzx/tV/E8AtL3ZdX75Y8GGByNhiQ7gz+FlTNsTq+l9r2A==","signatures":[{"sig":"MEQCIG71lPTrun3PMOBK/ZmEZ2lH9VbIGDq1/CJSV03AcDn+AiBBerJ79TM1ZBAs1kaLG39V/dX+y319cW5ToM6RWXmENw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d564b8c4f4c8549096c2a58ce3d705c47df5f4fe","gitHead":"f3b25cb8b877666799181fd86d42cddd7d2d39a4","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.0.tgz_1479317788790_0.4095758234616369","host":"packages-12-west.internal.npmjs.com"}},"1.0.1":{"name":"responseinterceptor","version":"1.0.1","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.1","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"d9bb6740cb61c8ba3d0ae09235e2c1f440e3ec01","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.1.tgz","integrity":"sha512-VWnRIYVQSwcZBtPfOGxR2qyhLyuvAWStNFtQXL+VpffojGhqd1W9y2MnaDbshD0YzqEz7E2PcyDAwTVewmXbYw==","signatures":[{"sig":"MEUCIQDccW+a1/NvbIN1B8XE6+8h2ETd1HSPgQthHqo0dlalswIgJpR6ZGEh1KvtzIxbMTCTF/+C1u4Ke+JJWNSfeuDGCGI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d9bb6740cb61c8ba3d0ae09235e2c1f440e3ec01","gitHead":"9fba613d565e175bd05cb4746a9481c29b6a860e","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.1.tgz_1479459068577_0.5215883289929479","host":"packages-12-west.internal.npmjs.com"}},"1.0.2":{"name":"responseinterceptor","version":"1.0.2","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.2","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"7ff55a1227d01254336296bdbdea53d2099a9aed","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.2.tgz","integrity":"sha512-ee7cdKVXOuSsVJeYcpCNrGhsoQvQqPr3Hcrx6pQ0GetN8KgWFI/IAD17mDHXOiGaOn7nL0PsGnah/G3oigPYuw==","signatures":[{"sig":"MEUCIDWRlTmrmi6tSvQSjmIx4H2B1j7x8CKDrQ9MG31dNUUPAiEA5DecewM0Wr91bYWn9jlPcgq6DuGRtWyyaKI9vbYgMs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"7ff55a1227d01254336296bdbdea53d2099a9aed","gitHead":"c04e95da0c00da7813a9e0dc59c45125ea69569b","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.2.tgz_1479459483551_0.9859689422883093","host":"packages-12-west.internal.npmjs.com"}},"1.0.3":{"name":"responseinterceptor","version":"1.0.3","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.3","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"a8e1dceb1217934e3ff7b330e56a1e75fe2ad3f2","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.3.tgz","integrity":"sha512-tVB3OrtJM59n92TUgYhbYD77n0DIlhl4sViM8AlEZuGHVQ/PfnXk4vO4ZIDRn3xOOmWuUUZjxRrIYzrYzNTebg==","signatures":[{"sig":"MEQCIArmTplPT50VdNJCdcwCEaXmYeXCj0huwZA/jHatlj4lAiBxiQFzJKp/gtqdNU78K6S3S8nVfvlIm2zS7/w5l3rwuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"a8e1dceb1217934e3ff7b330e56a1e75fe2ad3f2","gitHead":"def513b3b62a7b444c5c868d3816e62e0e20b45a","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.3.tgz_1479461404350_0.2785349066834897","host":"packages-12-west.internal.npmjs.com"}},"1.0.4":{"name":"responseinterceptor","version":"1.0.4","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.4","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"f85941df4f4585b06ba66f584a8aa876e25f530d","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.4.tgz","integrity":"sha512-FrLzXYQw0Nftuo05i79teEgfPi7QX12Szc0tgRfbNREmUGiY3axb4Two+0uxf7o9cP8NzJJF2hpLUNX2ooGCqA==","signatures":[{"sig":"MEUCIQDf8czlzsRqEhnJocUvxLZdlqLmtuzyzPkj+w52VggHDgIgQQECjUskSNcZQLrRlMYljYf3HJzsKT4hY/MeN3JVFSs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"f85941df4f4585b06ba66f584a8aa876e25f530d","gitHead":"7c2b99e4b83319ce7328f4f5fb19b1ecff311df7","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.4.tgz_1479461454681_0.7796329979319125","host":"packages-12-west.internal.npmjs.com"}},"1.0.5":{"name":"responseinterceptor","version":"1.0.5","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.5","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"6162ad73b4ce2c53a4699e07c037745592079c99","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.5.tgz","integrity":"sha512-P3ei6E40VbrCNwtgYPVBPHbsAFPmntbemjtwrF3troPE/IS/2urmmiMKO9y9I0v21WLP3EW83HJ/gwXeP23MLg==","signatures":[{"sig":"MEYCIQCbgV7KauhtGI4p6t87AxVHgCG8k9WoMYWjPyhaTPbKKQIhANvr0Il7aqK+cmJRxCQRWE/sCBfL1tR4z2iIXVRZ5XN6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"6162ad73b4ce2c53a4699e07c037745592079c99","gitHead":"1d47444852be0678c5087a756faae5cfc1307932","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.5.tgz_1479461557669_0.1784925765823573","host":"packages-12-west.internal.npmjs.com"}},"1.0.6":{"name":"responseinterceptor","version":"1.0.6","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.6","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"3febc78fc84d6c2eb2b3aad2248a8bba3ee94556","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.6.tgz","integrity":"sha512-uKaE0s0wiz1PETgOS6oeJZAIi869DuDm7/3Y+t1agt3bmoThOJAXuwgSSMWeagWzyVO5Ml93ehdO00DtqakSAA==","signatures":[{"sig":"MEYCIQD3Uc+aNcOBC/FhZAEemrDk2LI+yl5n2Jaurw8LNKCaXgIhAMKF6LUImYBiDG9KDbAZ+HvshhBfuR3Ji6ucUjwt7Uyz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"3febc78fc84d6c2eb2b3aad2248a8bba3ee94556","gitHead":"8aef2edceb5f02488d5b544ae3d67dca4f521c19","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.6.tgz_1479461622275_0.06046120170503855","host":"packages-12-west.internal.npmjs.com"}},"1.0.7":{"name":"responseinterceptor","version":"1.0.7","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.7","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"e060d41d694231fe6849f1fb9b167d2090c9dbed","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.7.tgz","integrity":"sha512-zDbHXLU7Ol6H5LWknDUqtbC3xT4FyNDtoLsCKl7vGxpperY3ar0UM6q0Xm4jM4tX4pd6t14IWgRYkxyESD8/zw==","signatures":[{"sig":"MEUCICHk+k6shxathNMEhT8Sq0I7sX3R3riGoLhm8kSEiA0lAiEAmbkABjOcP0zdVE/PLjeWp34reH5xF8V7Xu1ZCzAv/KA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"e060d41d694231fe6849f1fb9b167d2090c9dbed","gitHead":"9089dcbfbb64d36fe7c1bce7acc35ad69a462eab","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.7.tgz_1479461689575_0.47431111987680197","host":"packages-12-west.internal.npmjs.com"}},"1.0.8":{"name":"responseinterceptor","version":"1.0.8","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.8","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"1ec3bcd0c78798871274f805344860bd65691a8a","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.8.tgz","integrity":"sha512-l+onNdO/it3XZKu/tabUZWRBE3HQ8eWxwuK1O4on7nbgl1cZH5IhzJH2G3WmWpNf2hNqA/wpf6avaLjd1PYFcA==","signatures":[{"sig":"MEUCIQC7sHqnX3LuTSt1s7Xmn4fg0n+68JEJ3VeZe2hz2MgR+QIgPkP8skWx6wtpCqjoAe4saThaVgxRJqVHVDynHdd4qkg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"1ec3bcd0c78798871274f805344860bd65691a8a","gitHead":"968920a9c4772fca468016653d990d909bd2d506","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.8.tgz_1479462246497_0.152942726155743","host":"packages-12-west.internal.npmjs.com"}},"1.0.9":{"name":"responseinterceptor","version":"1.0.9","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.9","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"ceae3a31b9d9f2e55313ea5f0c68d661adadebe6","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.9.tgz","integrity":"sha512-37ZxyvGhie7N4JzHzVS63eLp7/MpjZTi3i5ubT0bqbRkAIuVhupZ+YeGe9GE318hdIF9Gf6ixyUT2l3C3Qw8GQ==","signatures":[{"sig":"MEUCIFSW7RwV7vUsjxYH6Ht4kmpx5z0tpHpMql0YIMcGYFm2AiEAzlosmdu97mcc+MzpqFkAmYgdn8uBg2UmjiH0SYNzk4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"ceae3a31b9d9f2e55313ea5f0c68d661adadebe6","gitHead":"c9b022e7e0b0eaf930de0a39a008197410b4c2d3","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.9.tgz_1479462420476_0.8021763970609754","host":"packages-12-west.internal.npmjs.com"}},"1.0.10":{"name":"responseinterceptor","version":"1.0.10","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.10","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"3c7275b577773d23ee53390b06967b34532a8778","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.10.tgz","integrity":"sha512-uqKKCquf9/jEpyPCTmQQc6uk6fh6MEw/qgLpgw8YmwZuqPPuPYZWaK+xjA2yC6ii/ZD3CcxWl2lUuEvus/VR4Q==","signatures":[{"sig":"MEUCIEjUtrOOueosZogZ20OpyFAihH/TI67RYGOxAZb9ue6JAiEArAxQMu0LriliEwDVkgR+rYbMTq/RH3UB68xPFKsF4rQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"3c7275b577773d23ee53390b06967b34532a8778","gitHead":"c0cb9abb8081d65589b5a549f6208846461403a3","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.10.tgz_1479462852386_0.04824513685889542","host":"packages-12-west.internal.npmjs.com"}},"1.0.12":{"name":"responseinterceptor","version":"1.0.12","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.12","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"34414d85b5aa0317ca505bb5013e3cc12e71ba56","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.12.tgz","integrity":"sha512-11NfdhzyBwxr3V5qP96r/cNpg8qJb6iBZ18DpaMkLzVZy4tw3dygWicp3AvGl/vOIkuMiiKLYL02VQiiikqgaw==","signatures":[{"sig":"MEYCIQC9tZkabmzAnsyMCIBwpseNucdNZy30UQBC7n4vAnvKOwIhAK8lnnMdZUqTyMupeD36ezLLn0NX87XWLAqRZpFXDBKI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"34414d85b5aa0317ca505bb5013e3cc12e71ba56","gitHead":"303935cac69a54c2cf241a1a2c0b9236beb91443","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.12.tgz_1479463106384_0.7038124669343233","host":"packages-12-west.internal.npmjs.com"}},"1.0.15":{"name":"responseinterceptor","version":"1.0.15","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.0.15","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"ef580720729bcdc72b2221cc9cad8788b8f46b1d","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.0.15.tgz","integrity":"sha512-On6tY0yQEJb5bOEeEpEyAVuiGmMh7iA6l08wU4U0wFiNpRpA3fcatUglQY7WR0LBESkXFQzS/8AijwH6Z3gbCA==","signatures":[{"sig":"MEYCIQDUdNOYPhg2j5W8mitpHehLsYyIcgV36ABkhSKghujSXAIhAIF8MIZyiuDCwdRBJUBk1crri9KuiqIW1z0Z6tUi6eVk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"ef580720729bcdc72b2221cc9cad8788b8f46b1d","gitHead":"1b02d36c0f497b8e8a1512741df227dd7d845362","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.0.15.tgz_1479463223010_0.05755365756340325","host":"packages-18-east.internal.npmjs.com"}},"1.1.0":{"name":"responseinterceptor","version":"1.1.0","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.0","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"127cd6af65c25f6d55c371c9d2223f5584571e48","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.0.tgz","integrity":"sha512-EXTaLsabnW/PFzFez6KXuGSGpTPH+HGLwX9usZbygaU8vb3rQzSCZA1UBQ3hlK0B3HFVzEv/sMx+FIb6S+BGcg==","signatures":[{"sig":"MEQCIBwhlam8PFf6CKvNrKiQ7VVvAOqEqqC2oypoTJcpApYBAiBi3MGjMguv2lMW84wxrhA0y/j6tpjOyJlstUmrgoUW6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"127cd6af65c25f6d55c371c9d2223f5584571e48","gitHead":"4265c50b27c41c77e31efc991779ea634435d5c3","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.1.0.tgz_1479463586384_0.2324179015122354","host":"packages-12-west.internal.npmjs.com"}},"1.1.1":{"name":"responseinterceptor","version":"1.1.1","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.1","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"d9e544fe00c5468144233c2703d646953d33d31e","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.1.tgz","integrity":"sha512-bgH9Cfi/rki5NuRUvjdCzDYcbOG9M+wm24Si+4o+s5qLvf/2wBuWa0OJGvR7ZM5B+nBkzBQWWBTNG0x2xawbyw==","signatures":[{"sig":"MEQCIBQXBgcJiFO8NIJalHcRYBAZyawODfW8IIdJk9Hd5mImAiAQ6Z5ekSQkdYqlxzMME/OAiFJh6ygzoglCl/LYlqlHjQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d9e544fe00c5468144233c2703d646953d33d31e","gitHead":"77fe472c16e7b1131691f37470ab9c7a206c147d","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.1.1.tgz_1480413654678_0.10811500251293182","host":"packages-12-west.internal.npmjs.com"}},"1.1.2":{"name":"responseinterceptor","version":"1.1.2","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.2","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"27586c13a213585f19da0a7e5f331659d3eafced","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.2.tgz","integrity":"sha512-JVbobsj+Y5DOCpzMq87Kf40LamhTvbTVlJYt1x4XPvCisZDAlgjClkicAUFw6dRZ7OMFJ9hBO7YpXErg3pt7CQ==","signatures":[{"sig":"MEUCIEDNzIrW+gtXUBEEgT6OaJKUqVE+s+XPklrBv18VcEhPAiEAtCSylF9YR5MhgK6TsoVapvWKFJVaGkNFesggNEucg/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"27586c13a213585f19da0a7e5f331659d3eafced","gitHead":"3b953f5b344ac173e9be58bd9d386019fe984549","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.3","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.6.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~1.3.0","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor-1.1.2.tgz_1480429988259_0.4437410938553512","host":"packages-18-east.internal.npmjs.com"}},"1.1.3":{"name":"responseinterceptor","version":"1.1.3","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.3","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"85a392aecb2c9f06c71fd10293721e9728b8e29a","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.3.tgz","fileCount":8,"integrity":"sha512-3ogsA6k5Rfg9hIfsWaQt8RI9DTe/lEd65Is9DuBYKwli7jMvpupLeHypJfCuXq5U2LjCG++YJ61rV0eKqbKWrw==","signatures":[{"sig":"MEUCIQCigVTej5C0ek+cc5/LWpZ5pyIWb3RvHb1hnlGY6DUzfwIgXShQuL45CocDXg4JjhbjX10CBiKwMtnaOD6d04s1OQE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmkVBCRA9TVsSAnZWagAAYOIP+gPz0u0pgX2yoN1YFPJ6\nKW6M8Xk6/zWsx2AwKXy6XRkifftcEJdxbDHHLQRcIE4u3AbPs+7U13km8pDC\nFqeYO5vc9dyIPC3Itu//N3W/pOS5snyrX5ALg1t0xHJ6d+ALvTnL8OMcg5Oy\nQZnTeKMOnxhFYr/Q8Ri/2v9NMuIvZuEzBRZs0KGuTPPeuYeEztaDOEkSUNkU\n9m1laMFGb4XdERHgdmyR4W3oHxsZvbIktPHevY7yHvEsmprYwtq0W8h2oTx3\n8epF5BkZAG34Sq9ShNTFcmB47Sm4nfLdhlE/aMCy7BjJvDI0oKxX0PcOQCLw\nW5hzQG3zMXSlh1yapshk69HCGHDMDlyzhRf8n1nZPMsFo3R1elW2DTqSFpJ0\nWLdVKy4zTdlLuv01+fcvJilS6GLJeUYRODhnCEGNE09hsy2OSmXFcIoXf5BS\nNBt7TeI7BGakbDAOmih3CGjTXHBQ3CRui4mXZcKJGmLrcEePOFe/D+Xvnsc5\nNnYpPuuwqes4rk9k+aPyC8+IwFEaCL0sWj1jUQCHoJYbnLVvwWfmcxcexDb0\nTIPF5BMgkkIir8sj1q0Dnk8PcWlu6Ull3mcm46M5dwwVh/yi5vKTzLolzrR8\nLTry9Ge/XcZelucEq33wJ31wFLU9QASKpbeT0Iq8hWfSROUFYNeOaKtqJwjX\nwDGT\r\n=D5bE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","_from":".","_shasum":"85a392aecb2c9f06c71fd10293721e9728b8e29a","gitHead":"8b5dce6ef1bea76afef2ecf335b3da968b672ecd","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.10","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.10.2","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"~>1.9.1","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_1.1.3_1553614144575_0.7697936005319808","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"responseinterceptor","version":"1.1.4","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.4","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"4e4ced378cda94ed9698eec37d3fd42ea5b65e59","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.4.tgz","fileCount":8,"integrity":"sha512-jMPgLiBPX6F/bHgNfbwRuJWvF/P+411B2kKTFQc4QqJY27CI5ohxBC/mdv7FFcAOq2KRlrPpFG6S0ozAY/5lkg==","signatures":[{"sig":"MEYCIQCKEHO0qQwduJy6Dd9mvzLV9jwYwprGkno2RSWNjghxCQIhAI6G9hkSKu1o2by0LpLNkJ5zQULMv/Hf22LzqTILGySO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66843,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmlbnCRA9TVsSAnZWagAAAy0P/2/gMxSLzP04ntSka0+3\n0LvqunXNUQUhR8qKXH3usFfcGaqo+kQ+it1gHVoPqtJV/q7CCX27/5/T/N7M\nZcPWqZz4ywZe9kCC3lgg+UkWWrKkmimr9TCEp63cZEkAal5VRgT5opLinvw2\naxlXJJ+5B7mR7S1EpSVWyCpsDVaEmAylekDqG8o1ddm9sZEPbsXlXk00FGwR\nI1hYB1dHEdLA7lrBb7ckuDp3880EFuh668Xb1sTbUDL+A7qYah8VYURl1t30\nge8iQPuJMvQxLsJrPOUP8GN+iOtq+f/SpAvGnPtlXR2Nrm4VqyeeFMR6Kaz6\nYxp8gdJhs6jzPkZPY+xt9F19oZZJNkNCTV2TLrlDDzjCCyMc931Ohpv8TzOY\nOIFTZeCUbxwofRbe7huRgrY0RUNkOgCD4dOFDBcuW+i3m6dkBDk7/QLbF0C3\nWzOj8nOuxVvW9qoZa3qoFtdx/6Y49Nak7OIh9gVKibgQANxmEnXl+oR2tcnL\nsztzlIEeHmIx2IK84wOBvxwbNc9b+zN2Q+ilKWvE0ShQlQmQMdEmSGweZFBh\nfgivslHv+kJyuC1+x5UGfKydbGg3Kd0Z8Nn92UK6zEPe4lLxtpuEdrcdd2bQ\nQDTKo7QvPkDXIdw8af6AFZfCJQlIchRM3aBNwNGlvquLMtMq2Ot+lHd0wh1Y\nx1iR\r\n=CcHP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","_from":".","_shasum":"4e4ced378cda94ed9698eec37d3fd42ea5b65e59","gitHead":"316b192b8c89b86d531dc2beaba20f9998fe589a","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"3.10.10","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"6.10.2","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"^1.9.1","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_1.1.4_1553618662071_0.7712397601657881","host":"s3://npm-registry-packages"}},"1.1.7":{"name":"responseinterceptor","version":"1.1.7","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.7","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"40911cfda65f78a46f88dd10c4635fc4866ef93f","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.7.tgz","fileCount":7,"integrity":"sha512-XXL7g+U9gXyLQivYyP3EMHCLnKbhE1gTU8/fsO2uLQIbQlaJ/RWYHMkB5EL4xMtDxb+aBpYiLHPTWJUy83OX6w==","signatures":[{"sig":"MEYCIQCuR2nNqKxLFAUpAKvvMcwxCWfWDekAAPjnKfDPD9HSWgIhANraBg4SqETyaZh871IZqFD7Q8KS0AI0p75Hbyg4deG4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26163},"main":"index.js","gitHead":"c996c3af01a1dda8b99d71959b94614958a0de85","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"9.8.1","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"16.13.1","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"^1.9.1","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_1.1.7_1709545590639_0.8893201398871615","host":"s3://npm-registry-packages"}},"1.1.8":{"name":"responseinterceptor","version":"1.1.8","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@1.1.8","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"d22b1f95dd960d6df5c229ced476eb6e6444cd29","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-1.1.8.tgz","fileCount":7,"integrity":"sha512-EgXBLp3FNyw9bHC0awS1NXCIugsqRFqEsWAN5RlYTms3dzoHp8ZwMlndgV3qlj/nI6SAmJ3uxZFyAKdA3OC5VA==","signatures":[{"sig":"MEYCIQDgqqWKKsfUOe8wdFHVVWXI8Erl1b38UD7A8JR/SABz4QIhAL/wVolZf2NkYEYWPsHMIpNwlMG/CNvH+arigGa0K9mV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26163},"main":"index.js","gitHead":"9ebc2625b3bad26c59751e0f4292b456001165c7","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"9.8.1","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"16.13.1","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"^1.9.1","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_1.1.8_1709545598202_0.6996868393934446","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"responseinterceptor","version":"2.0.0","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.0","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"3d8df3551796544c496c714c7c918e4ad5593c36","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.0.tgz","fileCount":7,"integrity":"sha512-KbPKlugeryPzIbeiW4x72EJ2PhREGfwrsWp1GF8yS8wtZjYfoqC5OGVHtmPh46LQJarH9WxZv3sGq8l/BLE1sw==","signatures":[{"sig":"MEUCICSblgDAhK7my23tLHnQ4DtdBq52k8scdpVuX0XFqifdAiEA1vZZ4trId7ALnqUtX6a+gVODYIzp6XfyToVOeV8AAuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41654},"main":"index.js","gitHead":"ae2e5a9f533968642b050e3dbd06dda9ac9dd7c7","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"~2.0.0","morgan":"^1.9.1","express":"~4.9.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.0_1762529574201_0.06544903153264503","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"responseinterceptor","version":"2.0.1","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.1","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"640a286c87ffcfdb18d1b4770e61ce0eebb5a585","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.1.tgz","fileCount":7,"integrity":"sha512-EjFdhc7iucpBLrLxrcrH7vtj7e8nH+yTxFV08YcIwpPzvhI+5osVRYJNjdOCWtOENeA7SrLlVO+TjZkT74Ou+Q==","signatures":[{"sig":"MEUCIHmOQF5A6/ii9rrdNqaWU+8KBE9lGrVerz4RQMO6YMz4AiEAtHMB3XdvxOwcGCX/W97Bi9POo1K/CyjmDAfAlusNRGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41629},"main":"index.js","gitHead":"930209670ef6f1ce08d43bae5bc8a6c0662585b7","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"^4.4.3","morgan":"^1.9.1","express":"^5.1.0","underscore":"^1.8.3","serve-favicon":"~2.1.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.1_1762529727744_0.904142018317613","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"responseinterceptor","version":"2.0.2","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.2","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"146978bf1300e15d05f304accce8fe4d92f0ab79","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.2.tgz","fileCount":7,"integrity":"sha512-2Dijg2NAURMpx8IKLPW4n4Acp88vn+iWYKjwF4hS0djuIR8c95OHcqEtwsdqXTolHJDqWaxwm/Z61znG6EfOPg==","signatures":[{"sig":"MEQCIE6+7nFke8OXMl4vpYQztAoA1WLjF5rf4zmEGPpGkIYJAiA4qLFp5QY1bI4t60h8JdDBFs4GHmXW7Oui0KoSqZu+6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41629},"main":"index.js","gitHead":"fc4d3447c650bef4f138bc71d262b25363829caa","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"^4.4.3","morgan":"^1.9.1","express":"^5.1.0","underscore":"^1.8.3","serve-favicon":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.2_1762759695192_0.3735181075291769","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"responseinterceptor","version":"2.0.4","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.4","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"be9531d8e523af9bc6152712ac18f0d1381927af","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.4.tgz","fileCount":7,"integrity":"sha512-xKmO7yIKYR0VubqpAa4Yk5hvIIPrAPAoxIgC3kpwugnY7NQV7EuciRuXBTHOwwui1vVK+H5YGwH4ZZexa0Fzxg==","signatures":[{"sig":"MEQCIAvELnfThtXJLzxxN+5xe57Gaktf3NpX+lmkQ+1XH7ESAiBa2gxvg/+Kvr82XbIspD6qK2EewzDBeDZlvfLja2xNGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41626},"main":"index.js","gitHead":"8e5ab501164f7c0c9360cbe6108feb8dc576cd50","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"^4.4.3","morgan":"^1.9.1","express":"^5.1.0","underscore":"^1.8.3","serve-favicon":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.4_1762954927979_0.7406955981896184","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"responseinterceptor","version":"2.0.5","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.5","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"6f7bdceb9fc218df80fb78b5d0e15b16da483892","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.5.tgz","fileCount":8,"integrity":"sha512-FIrVVBWrYgpTtSjCcKPfDFdIJFac7Hzpt0g38YWyHmp0bk/PbYQIg+QImQ104+9xzDW33Q+nqUrmwuHsEY8x9A==","signatures":[{"sig":"MEUCIQCxSySXKTzzS0SUKrpXqRW31PHvaItCQWT7ktqOaysHKwIgTBXPaH/lld5KJIHU/1nlEDyQNFTtkrrwKRNnjpCzeuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46672},"main":"index.js","gitHead":"11964359c21b8b79d86096a3da5e63a94a994332","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"^4.4.3","morgan":"^1.9.1","express":"^5.1.0","underscore":"^1.8.3","serve-favicon":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.5_1763046165611_0.41381722709829205","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"responseinterceptor","version":"2.0.6","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","_id":"responseinterceptor@2.0.6","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"homepage":"https://github.com/aromanino/responseinterceptor#readme","bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"dist":{"shasum":"8622c6806b9f940266567497b4e1efcaf3717e30","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-2.0.6.tgz","fileCount":9,"integrity":"sha512-mfOkC+LzYOjdU7XrvNRNSKpoGk0VsnRXdV308xp0DHzffhg4icQe2h1QKa4zvM2s428UYno1PzlJnynez/V0mQ==","signatures":[{"sig":"MEYCIQDd/RZyeYRgVUBmryNLjaDF85yv7uybZTloTeRywoL5YQIhAPCDQHxu/f/MsXNmRXiLIxOfnyr0XUdDChW5hGygecqL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100570},"main":"index.js","gitHead":"6a41d3523d59ad184b2175802407e84cd6aa0e22","scripts":{"test":"npm test"},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"repository":{"url":"git+https://github.com/aromanino/responseinterceptor.git","type":"git"},"_npmVersion":"11.6.2","description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","directories":{},"_nodeVersion":"22.12.0","dependencies":{"etag":"^1.7.0","async":"^2.1.2","debug":"^4.4.3","morgan":"^1.9.1","express":"^5.1.0","underscore":"^1.8.3","serve-favicon":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/responseinterceptor_2.0.6_1763120951963_0.8327526339004967","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"responseinterceptor","version":"3.0.0","dependencies":{"async":"^2.1.2","debug":"^4.4.3","etag":"^1.7.0","express":"^5.1.0","morgan":"^1.9.1","propertiesmanager":"^3.0.4","serve-favicon":"^2.5.1","underscore":"^1.8.3"},"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","supertest":"^6.3.3"},"description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","main":"index.js","scripts":{"test":"mocha test/**/*.test.js --timeout 5000"},"keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response","middleware","error handling","status code","custom logger","async","content-type","buffer","monitoring","configuration","propertiesmanager","environment"],"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aromanino/responseinterceptor.git"},"bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"homepage":"https://github.com/aromanino/responseinterceptor#readme","gitHead":"8b84ecd9c2e8b8f676c88f791094bd05300c9fea","_id":"responseinterceptor@3.0.0","_nodeVersion":"22.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Ey3UnvWqbDSHhFI31i2HPhtsg88GdTBpV25VtydlQd0/cKEfM4dYsI880g8MWjw9llztQJqT7WZ0HV8PyBswtw==","shasum":"90ba6b305cae422a46b898748d751378cb60f5d6","tarball":"https://registry.npmjs.org/responseinterceptor/-/responseinterceptor-3.0.0.tgz","fileCount":26,"unpackedSize":226548,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIADqTsDeHuvlVtRzxnNj7XNuwSBGYAuyn+nyDRz8zh51AiBIGWbOhNUDa8TDxpwwY0bccO0NKMAzILlz6QhTSKcNpw=="}]},"_npmUser":{"name":"aromanino","email":"a.romanino@gmail.com"},"directories":{},"maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/responseinterceptor_3.0.0_1763395728340_0.37101245182089704"},"_hasShrinkwrap":false}},"time":{"created":"2016-11-11T14:35:18.661Z","modified":"2025-11-17T16:08:48.737Z","0.0.1":"2016-11-11T14:35:18.661Z","0.0.2":"2016-11-11T14:37:16.710Z","0.0.3":"2016-11-11T14:38:31.549Z","0.0.4":"2016-11-11T14:40:24.910Z","0.0.5":"2016-11-11T14:49:37.486Z","0.0.6":"2016-11-11T14:56:28.437Z","0.0.7":"2016-11-11T15:02:27.946Z","0.0.8":"2016-11-11T15:06:25.382Z","0.0.9":"2016-11-11T15:12:15.077Z","0.0.10":"2016-11-15T14:47:22.274Z","0.0.11":"2016-11-15T16:51:30.765Z","1.0.0":"2016-11-16T17:36:30.951Z","1.0.1":"2016-11-18T08:51:10.714Z","1.0.2":"2016-11-18T08:58:05.748Z","1.0.3":"2016-11-18T09:30:06.365Z","1.0.4":"2016-11-18T09:30:56.827Z","1.0.5":"2016-11-18T09:32:39.755Z","1.0.6":"2016-11-18T09:33:44.337Z","1.0.7":"2016-11-18T09:34:51.739Z","1.0.8":"2016-11-18T09:44:08.820Z","1.0.9":"2016-11-18T09:47:02.726Z","1.0.10":"2016-11-18T09:54:14.361Z","1.0.12":"2016-11-18T09:58:28.412Z","1.0.15":"2016-11-18T10:00:23.770Z","1.1.0":"2016-11-18T10:06:28.640Z","1.1.1":"2016-11-29T10:00:58.678Z","1.1.2":"2016-11-29T14:33:08.949Z","1.1.3":"2019-03-26T15:29:04.844Z","1.1.4":"2019-03-26T16:44:22.371Z","1.1.7":"2024-03-04T09:46:30.793Z","1.1.8":"2024-03-04T09:46:38.359Z","2.0.0":"2025-11-07T15:32:54.408Z","2.0.1":"2025-11-07T15:35:27.926Z","2.0.2":"2025-11-10T07:28:15.381Z","2.0.4":"2025-11-12T13:42:08.206Z","2.0.5":"2025-11-13T15:02:45.802Z","2.0.6":"2025-11-14T11:49:12.153Z","3.0.0":"2025-11-17T16:08:48.547Z"},"bugs":{"url":"https://github.com/aromanino/responseinterceptor/issues"},"author":{"name":"Alessandro Romanino","email":"a.romanino@gmail.com"},"license":"MIT","homepage":"https://github.com/aromanino/responseinterceptor#readme","keywords":["response","express","res.send","res.write","res.end","res.render","intercept","override","override response","middleware","error handling","status code","custom logger","async","content-type","buffer","monitoring","configuration","propertiesmanager","environment"],"repository":{"type":"git","url":"git+https://github.com/aromanino/responseinterceptor.git"},"description":"This package allows intercept an express response ( res.send , res.end , res.write ) and update or upgrade response with your other logic","maintainers":[{"name":"aromanino","email":"a.romanino@gmail.com"}],"readme":"# responseinterceptor\n\nThis package is **Middleware** for Express responses. It allows you to intercept an Express response (`res.send`, `res.end`, `res.write`, `res.render`, etc.) and update or upgrade the response with your custom logic.\n\n[![NPM](https://nodei.co/npm/responseinterceptor.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/responseinterceptor/)\n\n[![NPM](https://nodei.co/npm-dl/responseinterceptor.png?months=6&height=3)](https://nodei.co/npm/responseinterceptor/)\n\n## Features\n\n- ✅ Intercept and modify Express responses globally or selectively\n- ✅ Support for all response methods (`res.send()`, `res.json()`, `res.render()`, etc.)\n- ✅ Conditional interception based on content type\n- ✅ Status code-based interception with custom handlers\n- ✅ Automatic redirection based on status codes\n- ✅ On-the-fly interception for dynamic scenarios\n- ✅ **Automatic Content-Type detection (JSON, HTML, plain text)**\n- ✅ **Optional explicit Content-Type parameter for custom types**\n- ✅ **Buffer support for binary content**\n- ✅ **Enhanced error handling with try-catch protection**\n- ✅ **Parameter validation for improved reliability**\n- ✅ **Production-ready logging (disabled in production by default)**\n- ✅ **Configurable logging with custom loggers (Winston, Bunyan, Pino)**\n- ✅ **Async/await support in all callbacks**\n- ✅ **Custom error handlers for monitoring integration**\n- ✅ **PropertiesManager integration for environment-based configuration**\n- ✅ Minimal dependencies (`etag` for ETag support, `propertiesmanager` optional)\n- ✅ TypeScript support\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Using responseinterceptor](#using-responseinterceptor) \n  - [Intercept all routes](#intercept-all-routes)\n  - [Intercept a group of routes](#intercept-a-group-of-routes)\n    - [Intercept a group of routes defined in the same file](#intercept-a-group-of-routes-defined-in-the-same-file)\n    - [Intercept a group of routes using express routing](#intercept-a-group-of-routes-using-express-routing)         \n  - [Intercept single routes](#intercept-single-routes)    \n    - [Intercept a single route with middleware](#intercept-a-single-route-with-responseinterceptor-middleware)  \n    - [Intercept a single route on-the-fly](#intercept-a-single-route-using-responseinterceptor-not-as-a-middleware)   \n  - [Intercept by status code](#intercepts-http-responses-based-on-specific-status-codes-before-they-are-sent-to-the-client)\n  - [Intercept and redirect (callback)](#intercepts-http-responses-based-on-specific-status-codes-before-they-are-sent-to-the-client-and-redirect-to-url-by-callback)\n  - [Intercept and redirect (static)](#intercepts-http-responses-based-on-specific-status-codes-before-they-are-sent-to-the-client-and-redirect-to-url-by-static-string)\n- [Reference](#reference)  \n  - [configure](#configureoptions)\n  - [getConfig](#getconfig)\n  - [intercept](#interceptfn)  \n  - [interceptOnFly](#interceptonflyreqresfn)\n  - [interceptByStatusCode](#interceptbystatuscodestatuscodes-callback)\n  - [interceptByStatusCodeRedirectTo](#interceptbystatuscoderedirecttostatuscodes-callback)   \n- [Advanced Features](#advanced-features)\n  - [Automatic Content-Type Detection](#automatic-content-type-detection)\n  - [Explicit Content-Type Override](#explicit-content-type-override)\n  - [Buffer Support](#buffer-support)\n  - [Error Handling](#error-handling)\n  - [Production Logging](#production-logging)\n  - [PropertiesManager Integration](#integration-with-propertiesmanager)\n- [FAQ](#faq)\n- [Examples](#examples)\n  - [Intercept JSON responses](#intercept-response-and-add-information-to-response-if-content-type-is-applicationjson)\n  - [Intercept HTML responses](#intercept-response-and-add-information-to-response-if-content-type-is-texthtml)\n- [TypeScript Support](#typescript-support)\n- [License](#license)\n- [Authors](#authors)\n\n## Installation\n\nTo use **responseinterceptor** install it in your project by typing:\n\n```shell\n$ npm install responseinterceptor\n```\n\n## Using responseinterceptor\n\n### Include responseinterceptor\n\nJust require it like a simple package:\n\n```javascript\nconst responseinterceptor = require('responseinterceptor');\n```\n\n### Intercept all routes\n\nTo intercept all routes, use it in `app.js` before all `app.use()` route functions:\n\n```javascript\nconst express = require('express');\nconst responseinterceptor = require('responseinterceptor');\nconst routeTwo = require(\"./routes/routeTwo\");\nconst app = express();\n \napp.use(responseinterceptor.intercept(function(body, bodyContentType, request, callback){\n    // Your custom logic after intercepting the response\n    // Example: Add timestamp to response body\n    let newResponse = body;\n    if(bodyContentType === \"application/json\")  // Check if response is JSON\n         newResponse.otherInformation = Date.now(); // Add current timestamp\n    callback(newResponse); // Return modified response\n}));  \n\n// All routes defined below this middleware will be intercepted\napp.use(\"exampleRoute_one\", function(req, res, next){\n    // your logic\n}); \napp.use(\"exampleRoute_Two\", routeTwo);  \n\n// Other routes...  \n```\n\n\n### Intercept a group of routes\n\nYou can decide which routes to intercept using or not using Express router. Read below for more details. \n\n#### Intercept a group of routes defined in the same file\n\nTo intercept only a group of routes, use responseinterceptor middleware after the routes that should not be intercepted and before all routes to intercept. For example, intercept all routes matching `\"/intercept/onlythis\"`:\n\n```javascript\nconst express = require('express');    \nconst responseinterceptor = require('responseinterceptor');\nconst app = express();\n    \n// ############ Group of routes to not intercept ############\napp.get(\"/\", function(req, res, next){\n    // your logic\n});    \napp.post(\"/\", function(req, res, next){\n    // your logic\n});\napp.get(\"/intercept\", function(req, res, next){\n    // your logic\n});\n// Additional routes that will NOT be intercepted...\n    \n// ############ Group of routes to intercept ############\n// Place responseinterceptor middleware before all routes you want to intercept\napp.use(responseinterceptor.intercept(function(body, bodyContentType, request, callback){\n  // Your custom logic after intercepting the response\n  // Example: Add timestamp to response body\n  let newResponse = body;\n      \n  if(bodyContentType === \"application/json\")  // Check if response is JSON\n         newResponse.otherInformation = Date.now(); // Add current timestamp\n  callback(newResponse); // Return modified response\n}));  \napp.get(\"/intercept/onlythis\", function(req, res, next){\n    // your logic\n    res.send({data: \"....\"}); // This response WILL be intercepted\n});\napp.post(\"/intercept/onlythis\", function(req, res, next){\n    // your logic\n    res.send({data: \"....\"}); // This response WILL be intercepted\n}); \n// Additional routes that WILL be intercepted...\n```\n\n#### Intercept a group of routes using express routing\n\nTo intercept only a group of routes using Express routing, use responseinterceptor middleware in a separate Express routing file. For example, intercept all routes under `\"/intercept\"`.\n\nDefine a router for `\"/intercept\"`, for example in file `routeInt.js`:\n\n```javascript\nconst express = require('express');\nconst router = express.Router();\nconst responseinterceptor = require('responseinterceptor');\n\n// Place responseinterceptor middleware before all routes you want to intercept\nrouter.use(responseinterceptor.intercept(function(body, bodyContentType, request, callback){   \n    // Your custom logic after intercepting the response\n    // Example: Add timestamp to response body\n    let newResponse = body;\n    if(bodyContentType === \"application/json\")  // Check if response is JSON\n         newResponse.otherInformation = Date.now(); // Add current timestamp\n    callback(newResponse); // Return modified response\n}));   \n// define routes to intercept\nrouter.get(\"/\", function(req, res, next){\n    // your logic\n    res.send({data: \"....\"}); // This response WILL be intercepted\n});\nrouter.post(\"/alsothis\", function(req, res, next){\n    // your logic\n    res.send({data: \"....\"}); // This response WILL be intercepted\n}); \n// Additional routes to intercept...\n\nmodule.exports = router;\n```\n\nIn `app.js` use the `\"/intercept\"` route:\n\n```javascript    \nconst express = require('express');\nconst routeInt = require('./routes/routeInt');\nconst app = express();\n\napp.use('/intercept', routeInt);   \n```\n\n\n### Intercept single routes\n\nTo intercept a single route response, use responseinterceptor not as a global level middleware but at the single endpoint definition level, as middleware or in the endpoint logic.\n\nYou might think that using responseinterceptor at the endpoint level makes no sense because you could include the interceptor logic directly before sending the response. However, this is not always true. There are real use cases where you need to do it:\n\n*   If you need to save all response logs including all information embedded in the response from the `write`/`end` function (for example, fields like `etag`, `content-length`, etc. are calculated in `write`/`end` after `res.send()` is called).\n*   If you need to intercept the response content after page rendering from a template engine like Jade/Pug to modify or log some contents (intercept response content after `res.render()`).\n\n#### Intercept a single route with responseinterceptor middleware\n\nTo intercept a single route, use responseinterceptor middleware in the endpoint route definition. For example, intercept all `\"/intercept/\"` routes in POST method but not in GET method:\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');\n    \n// Route without interception\napp.get(\"/\", function(req, res, next){\n    \n});\n// Route with interception applied via middleware\napp.post(\"/\", middlewareInterceptor, function(req, res, next){\n   // Your Logic   \n   res.send({data: \"....\"}); // This response WILL be intercepted\n});\nconst middlewareInterceptor = responseinterceptor.intercept(function(body, bodyContentType, request, callback){   \n    // Your custom logic after intercepting the response\n    // Example: Add timestamp to response body\n    let newResponse = body;\n    if(bodyContentType === \"application/json\")  // Check if response is JSON\n         newResponse.otherInformation = Date.now(); // Add current timestamp\n    callback(newResponse); // Return modified response\n});\n// This route is NOT intercepted because the middleware is applied at route level,\n// not globally. Only routes explicitly using middlewareInterceptor will be intercepted.\napp.get(\"/notInterceptable\", function(req, res, next){\n    // Your Logic   \n    res.send({data: \"....\"}); // This response will NOT be intercepted\n });\n \n// Another route with interception\napp.post(\"/interceptable\", middlewareInterceptor, function(req, res, next){\n // Your Logic   \n res.send({data: \"....\"}); // This response WILL be intercepted\n});\n```\n\n#### Intercept a single route using responseinterceptor not as a middleware\n\nTo intercept a single route using responseinterceptor not as middleware but only if a particular condition in the endpoint logic is satisfied, you should use the `interceptOnFly` function. For example, intercept a route `\"/intercept\"` in GET method only if the request has a field `\"intercept\"` set to `true`:\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');\n    \n// Route without interception\napp.get(\"/\", function(req, res, next){\n    \n});\n// Conditionally intercept based on request parameter\napp.get(\"/intercept\", function(req, res, next){\n   // Your Logic   \n   if(req.query.intercept == true){\n        responseinterceptor.interceptOnFly(req, res, function(body, bodyContentType, request, callback){   \n            // Your custom logic after intercepting the response\n            // newResponse = ...\n            callback(newResponse); // Return modified response\n        });\n   }\n   \n   // Additional logic...\n      \n   // This response will be intercepted ONLY if req.query.intercept is true\n   res.send({data: \"....\"});                                        \n});\n```\n\n### Intercept by HTTP status code\n\nThis middleware overrides `res.end()` to detect when the response status matches one of the specified status codes. If a match occurs, it executes a user-defined callback instead of sending the original response.\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');\n\n// Intercept all 403 Forbidden responses\napp.use(responseinterceptor.interceptByStatusCode(403, (req, respond) => {\n    app.render('access-denied', {}, (err, html) => {\n        if (!err) {\n            // Template rendered successfully - send custom HTML page\n            respond(200, html);\n        } else {\n            // Fallback if template fails - send simple HTML message\n            respond(200, '<h1>Access Denied</h1><p>You are not authorized to view this page.</p>');\n        }\n    });\n}));\n\n// Intercept 404 with JSON response (auto-detected)\napp.use(responseinterceptor.interceptByStatusCode(404, (req, respond) => {\n    respond(404, { error: 'Not Found', path: req.path });\n}));\n\n// Intercept 500 with explicit XML content-type\napp.use(responseinterceptor.interceptByStatusCode(500, (req, respond) => {\n    respond(500, '<error>Internal Server Error</error>', 'application/xml; charset=utf-8');\n}));\n\n// Example route that triggers the interception\napp.get('/private', (req, res) => {\n    res.status(403).send('Forbidden');\n});\n```\n\n### Intercept and redirect by HTTP status code (callback)\n\nThis middleware overrides `res.end()` to detect when the response status matches one of the specified status codes. If a match occurs, it executes a user-defined callback to redirect to a URL.\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');\n\n// Intercept all 403 Forbidden responses and redirect dynamically\napp.use(responseinterceptor.interceptByStatusCodeRedirectTo(403, (req, respond) => {\n    respond('/index');\n}));\n\n// Example route that triggers interception and redirects to /index\napp.get('/private', (req, res) => {\n    res.status(403).send('Forbidden');\n});\n```\n\n### Intercept and redirect by HTTP status code (static URL)\n\nThis middleware overrides `res.end()` to detect when the response status matches one of the specified status codes. If a match occurs, it redirects to a static URL.\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');\n\n// Intercept all 403 Forbidden responses and redirect to static URL\napp.use(responseinterceptor.interceptByStatusCodeRedirectTo(403, '/index'));\n\n// Example route that triggers interception and redirects to /index\napp.get('/private', (req, res) => {\n    res.status(403).send('Forbidden');\n});\n```\n\n## Reference\n\n### `configure(options)`\n\nConfigure global options for `responseinterceptor`. This allows customization of logging and error handling behavior.\n\n**Parameters:**\n\n*   `options` - Configuration object\n    *   `options.logging` - Logging configuration\n        *   `options.logging.enabled` - Boolean to enable/disable logging (default: `false` in production, `true` otherwise)\n        *   `options.logging.logger` - Custom logger function (default: `console.log`)\n    *   `options.errorHandling` - Error handling configuration\n        *   `options.errorHandling.rethrow` - Boolean to rethrow errors (default: `false`)\n        *   `options.errorHandling.onError` - Custom error handler function `(err, req, res) => {}`\n\n**Returns:** Current configuration object\n\n**Example:**\n\n```javascript\nconst { configure } = require('responseinterceptor');\n\n// Configure with Winston logger\nconst winston = require('winston');\nconst logger = winston.createLogger({ /* ... */ });\n\nconfigure({\n    logging: {\n        enabled: true,\n        logger: (...args) => logger.info(args.join(' '))\n    },\n    errorHandling: {\n        rethrow: false,\n        onError: (err, req, res) => {\n            logger.error('Interceptor error:', {\n                error: err.message,\n                path: req.path,\n                method: req.method\n            });\n            // Send to monitoring service\n            // Sentry.captureException(err);\n        }\n    }\n});\n\n// Dynamic logging control\napp.get('/admin/logging/toggle', (req, res) => {\n    const config = configure({\n        logging: { enabled: !currentlyEnabled }\n    });\n    res.json({ logging: config.logging.enabled });\n});\n```\n\n**Integration with PropertiesManager:**\n\nPropertiesManager automatically loads `config/default.json` with environment-based configuration:\n\n```javascript\n// config/default.json structure:\n{\n  \"production\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": false },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  },\n  \"test\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": false },\n      \"errorHandling\": { \"rethrow\": true }\n    }\n  },\n  \"dev\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": true },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  }\n}\n```\n\nUsage:\n\n```javascript\nconst propertiesmanager = require('propertiesmanager').conf;\nconst { configure, getConfig } = require('responseinterceptor');\n\n// PropertiesManager automatically selects environment based on NODE_ENV\n// and loads config from config/default.json\n\n// Access configuration (already loaded automatically)\nconsole.log('Logging enabled:', propertiesmanager.responseinterceptor?.logging?.enabled);\n\n// Configuration is automatically applied at startup\n// You can override at runtime with configure()\nconfigure({\n    logging: {\n        enabled: propertiesmanager.responseinterceptor?.logging?.enabled ?? true\n    },\n    errorHandling: {\n        rethrow: propertiesmanager.responseinterceptor?.errorHandling?.rethrow ?? false\n    }\n});\n\n// Get current configuration\nconst config = getConfig();\nconsole.log('Current config:', config);\n```\n\nRun with different environments:\n\n```bash\n# Development (default)\nnode app.js\n\n# Production\nNODE_ENV=production node app.js\n\n# Test\nNODE_ENV=test node app.js\n```\n\n### `getConfig()`\n\nGet the current configuration settings.\n\n**Returns:** Object with current configuration\n\n**Example:**\n\n```javascript\nconst { getConfig } = require('responseinterceptor');\n\nconst config = getConfig();\nconsole.log('Logging enabled:', config.logging.enabled);\nconsole.log('Error rethrow:', config.errorHandling.rethrow);\n```\n\n### `intercept(fn)`\n\nThe `intercept(fn)` function is a middleware that intercepts an Express response, so you can use it in the routes you want to intercept. This function returns an Express middleware used to intercept responses. It accepts a function `fn` as a parameter.\n\nThe function `fn` is defined as `fn(content, contentType, request, callback)` and is executed when the response is intercepted.\n\n**Parameters:**\n\n*   `content` - Contains the content of the intercepted response\n*   `contentType` - A string describing the content type (e.g., `\"application/json\"`, `\"text/html\"`, `\"text/css\"`)\n*   `request` - An object containing the original Express `req` request\n*   `callback` - The callback function to call when your logic completes, with the new response content as a parameter: `callback(newContent)`. The `newContent` can be a String, Object, HTML, text, etc.\n            \n**Example:**\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');  \n\n// Intercept all routes defined below\napp.use(responseinterceptor.intercept(function(content, contentType, request, callback){\n   // Your custom logic here\n   // newResponse = \".... new Content ....\";\n    callback(newResponse); // Return modified response\n}));\n```\n\n### `interceptOnFly(req, res, fn)`\n\nThis function doesn't return an Express middleware and must be used internally in the endpoint logic to intercept responses conditionally. For example, if you need to intercept the response only when a particular condition in the endpoint logic is satisfied.\n\n**Parameters:**\n\n*   `req` - The original Express `req` request object\n*   `res` - The original Express `res` response object to intercept\n*   `fn` - The interceptor function defined as `fn(content, contentType, request, callback)`:\n    *   `content` - Contains the content of the intercepted response\n    *   `contentType` - A string describing the content type\n    *   `request` - The original Express `req` request object\n    *   `callback` - The callback function: `callback(newContent)`\n      \n**Example:**\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst responseinterceptor = require('responseinterceptor');  \n\napp.get(\"/resource\", function(req, res, next){\n    // Your logic to determine if interception is needed\n    const intercept = your_Logic ? true : false;\n    if(intercept){\n        responseinterceptor.interceptOnFly(req, res, function(content, contentType, request, callback){\n               // Your custom logic here\n               // newResponse = \".... new Content ....\";\n                callback(newResponse); // Return modified response\n            })\n    }\n    \n    res.send(\"Your Interceptable Content\");\n});\n```\n\n### `interceptByStatusCode(statusCodes, callback)`\n\nIntercepts Express.js responses based on specific HTTP status codes, for example, to render a custom HTML page or JSON message instead of the default error output.\n\n**Description:** \n\n`interceptByStatusCode(statusCodes, callback)` temporarily overrides `res.end()` to detect when a response is about to be sent with a specific status code (e.g., 403, 404, 500). When a match occurs, it calls your callback, allowing you to customize the response before it's sent. A built-in anti-loop flag ensures the middleware doesn't re-trigger itself when the callback sends the new response.\n\n**Signature:**\n\n```javascript\ninterceptByStatusCode(statusCodes, callback)\n```\n\n**Parameters:**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `statusCodes` | `number \\| number[]` | A single status code or an array of status codes to intercept |\n| `callback` | `(req, respond) => void` | Function executed when one of the specified status codes is detected |\n\n**Callback Parameters:**\n\n- `req` - The Express request object\n- `respond(newStatusCode, content, contentType?)` - A helper function to send a new response\n  - `newStatusCode` - **Required** HTTP status code (e.g., 200, 403, 404)\n  - `content` - **Required** HTML, string, object, or Buffer to send in the response\n  - `contentType` - **Optional** explicit Content-Type header (e.g., `'application/json; charset=utf-8'`, `'text/html; charset=utf-8'`)\n    - If omitted, Content-Type is automatically detected:\n      - **Objects** → `application/json`\n      - **JSON strings** (starting with `{` or `[`) → `application/json`\n      - **HTML strings** (containing `<!DOCTYPE`, `<html>`, `<body>`, `<head>`) → `text/html`\n      - **Buffers** → `application/octet-stream`\n      - **Other strings** → `text/plain`\n\n**Example:**\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst { interceptByStatusCode } = require('responseinterceptor');\n\n// Example 1: Auto-detect Content-Type (HTML)\napp.use(interceptByStatusCode(403, (req, respond) => {\n    respond(200, '<h1>Access Denied</h1><p>You are not authorized to view this page.</p>');\n}));\n\n// Example 2: Auto-detect Content-Type (JSON)\napp.use(interceptByStatusCode(404, (req, respond) => {\n    respond(404, { error: 'Not Found', path: req.path, timestamp: Date.now() });\n}));\n\n// Example 3: Explicit Content-Type for custom formats\napp.use(interceptByStatusCode(500, (req, respond) => {\n    const xmlError = '<error><code>500</code><message>Internal Server Error</message></error>';\n    respond(500, xmlError, 'application/xml; charset=utf-8');\n}));\n\n// Example route that triggers the interception\napp.get('/private', (req, res) => {\n    res.status(403).send('Forbidden');\n});\n```\n\n\n\n### `interceptByStatusCodeRedirectTo(statusCodes, callback)`\n\n`interceptByStatusCodeRedirectTo` is an Express.js middleware that **intercepts outgoing HTTP responses** with specific status codes (e.g., `403`, `404`, `500`) and automatically **redirects** the request to another route. It can be used to handle unauthorized, forbidden, or missing resources gracefully — for example, sending users to a custom \"Access Denied\" or \"Not Found\" page.\n\nThe middleware supports **two usage modes**:\n\n- **Callback mode:** Dynamic redirect logic based on the request\n- **Static route mode:** Automatic redirect to a predefined route\n\n---\n\n#### Function Signature\n\n```js\ninterceptByStatusCodeRedirectTo(statusCodes, callback)\n```\n\n---\n\n#### Parameters\n\n| Name | Type | Description |\n|------|------|-------------|\n| `statusCodes` | `number \\| number[]` | A single status code (e.g., `403`) or an array of codes (e.g., `[403, 404]`) to intercept |\n| `callback` | `function \\| string` | Determines how redirection occurs. <br>• If a **function**, it will be called as `callback(req, redirect)` where `redirect` is a helper to trigger a redirect<br>• If a **string**, it represents a static route path to redirect to directly |\n\n---\n\n#### Usage Examples\n\n##### 1️⃣ Dynamic Redirect Logic (callback mode)\n\nRedirect users differently depending on the request or session:\n\n```js\nconst express = require('express');\nconst { interceptByStatusCodeRedirectTo } = require('responseinterceptor');\nconst app = express();\n\napp.use(\n  interceptByStatusCodeRedirectTo(403, (req, redirect) => {\n    if (req.user) {\n      redirect('/no-access');\n    } else {\n      redirect('/login');\n    }\n  })\n);\n```\n\nIf a `403` response is about to be sent:\n- Logged-in users are redirected to `/no-access`\n- Unauthenticated users are redirected to `/login`\n\n---\n\n##### 2️⃣ Static Redirect (string mode)\n\nRedirect all matching status codes to a fixed route:\n\n```js\nconst express = require('express');\nconst { interceptByStatusCodeRedirectTo } = require('responseinterceptor');\nconst app = express();\n\napp.use(\n  interceptByStatusCodeRedirectTo([403, 404], '/error-page')\n);\n```\n\nAny `403` or `404` response automatically redirects to `/error-page`.\n\n---\n\n#### How It Works\n\n- The middleware **overrides** `res.end()` temporarily to intercept the response before it is finalized\n- When the outgoing `statusCode` matches one of the provided values:\n    - The `callback` (or redirect path) is executed\n    - The response is redirected using `res.redirect(newRoute)`\n- A safety flag (`res.__interceptHandled`) prevents **recursive loops**, ensuring that redirects do not trigger interception again\n- Non-matching responses continue normally using the original `res.end()`\n\n---\n\n#### Notes\n\n- Works transparently with any Express route or controller\n- Compatible with async request handlers and standard middleware chaining\n- Automatically cleans up internal flags after the response finishes\n\n---\n\n#### Example Use Cases\n\n- Redirect users to a login page when a `403 Forbidden` occurs\n- Redirect to a friendly error page on `404 Not Found`\n- Implement centralized handling for maintenance mode (`503 Service Unavailable`)\n\n---\n\n#### Return Value\n\nReturns an Express middleware function `(req, res, next)`.\n\n\n\n---\n\n## Advanced Features\n\n### Automatic Content-Type Detection\n\nStarting from version 2.0.6, `interceptByStatusCode` includes automatic Content-Type detection. When you don't specify a `contentType` parameter, the middleware intelligently detects the appropriate Content-Type based on the response content:\n\n```javascript\nconst { interceptByStatusCode } = require('responseinterceptor');\n\napp.use(interceptByStatusCode(404, (req, respond) => {\n    // Automatic detection: application/json\n    respond(404, { error: 'Not Found', code: 404 });\n    \n    // Automatic detection: text/html\n    respond(404, '<h1>Page Not Found</h1><p>The requested resource does not exist.</p>');\n    \n    // Automatic detection: application/json (JSON string)\n    respond(404, '{\"error\": \"Not Found\"}');\n    \n    // Automatic detection: text/plain\n    respond(404, 'Simple error message');\n}));\n```\n\n**Detection Rules:**\n\n| Content Type | Detection Logic |\n|-------------|-----------------|\n| `application/json` | JavaScript objects or strings starting with `{` or `[` and ending with `}` or `]` |\n| `text/html` | Strings containing `<!DOCTYPE`, `<html>`, `<body>`, or `<head>` tags |\n| `application/octet-stream` | Buffer objects |\n| `text/plain` | All other string content (fallback) |\n\n### Explicit Content-Type Override\n\nFor complete control over the Content-Type header, use the optional third parameter:\n\n```javascript\napp.use(interceptByStatusCode(404, (req, respond) => {\n    // Explicit XML content type\n    respond(404, '<error><code>404</code><message>Not Found</message></error>', \n            'application/xml; charset=utf-8');\n    \n    // Explicit custom content type\n    respond(404, customBinaryData, 'application/pdf');\n    \n    // Explicit charset\n    respond(404, htmlContent, 'text/html; charset=iso-8859-1');\n}));\n```\n\n### Buffer Support\n\nThe middleware now supports Buffer objects for binary content:\n\n```javascript\napp.use(interceptByStatusCode(500, (req, respond) => {\n    const imageBuffer = fs.readFileSync('./error-image.png');\n    respond(500, imageBuffer, 'image/png');\n}));\n```\n\n### Error Handling\n\nAll interceptor functions now include comprehensive error handling:\n\n- **Callback errors** are caught and logged (in development mode only)\n- **Invalid parameters** throw TypeScript-style `TypeError` exceptions\n- **Failed interceptors** fall back to original response to prevent crashes\n\n```javascript\n// Parameter validation example\ntry {\n    app.use(interceptByStatusCode(null, callback));  // Throws TypeError\n} catch (err) {\n    console.error(err.message);  // \"statusCodes must be a number or an array of numbers\"\n}\n\n// Callback error handling\napp.use(interceptByStatusCode(404, (req, respond) => {\n    throw new Error('Oops!');  // Error is caught, original response continues\n}));\n```\n\n### Production Logging\n\nConsole logging is automatically disabled in production environments. To enable logging in production, remove the `NODE_ENV=production` check:\n\n```javascript\n// Development: logs are visible\n// Production: logs are suppressed\n\n// To force logging in production, set NODE_ENV differently:\n// NODE_ENV=development node app.js\n```\n\n### Integration with PropertiesManager\n\nThe `responseinterceptor` integrates seamlessly with [propertiesmanager](https://www.npmjs.com/package/propertiesmanager) for centralized, environment-based configuration management.\n\n**Setup:**\n\n1. Install propertiesmanager:\n```bash\nnpm install propertiesmanager\n```\n\n2. Create `config/default.json` with environment-based configuration:\n```json\n{\n  \"production\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": false },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  },\n  \"test\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": false },\n      \"errorHandling\": { \"rethrow\": true }\n    }\n  },\n  \"dev\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": true },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  }\n}\n```\n\n3. Use in your application:\n```javascript\nconst propertiesmanager = require('propertiesmanager').conf;\nconst { configure } = require('responseinterceptor');\n\n// PropertiesManager automatically loads config based on NODE_ENV\n// Configuration is applied at startup automatically\n\n// Optional: Override at runtime\nconfigure({\n    logging: {\n        enabled: propertiesmanager.responseinterceptor?.logging?.enabled ?? true\n    },\n    errorHandling: {\n        rethrow: propertiesmanager.responseinterceptor?.errorHandling?.rethrow ?? false\n    }\n});\n```\n\n**Environment Selection:**\n```bash\n# Development (default)\nnode app.js\n\n# Production\nNODE_ENV=production node app.js\n\n# Test\nNODE_ENV=test node app.js\n```\n\n**Benefits:**\n- ✅ Centralized configuration management\n- ✅ Environment-specific settings (production, test, dev)\n- ✅ Automatic environment detection via NODE_ENV\n- ✅ No code changes needed between environments\n- ✅ Runtime configuration updates with `configure()`\n\nSee `examples/06-propertiesmanager-config.js` for a complete working example.\n\n### Combining Multiple Interceptors\n\nYou can chain multiple `interceptByStatusCode` middleware for different status codes:\n\n```javascript\n// Handle 404 errors\napp.use(interceptByStatusCode(404, (req, respond) => {\n    respond(404, { error: 'Page Not Found', path: req.path });\n}));\n\n// Handle 500 errors\napp.use(interceptByStatusCode(500, (req, respond) => {\n    respond(500, { error: 'Internal Server Error', timestamp: Date.now() });\n}));\n\n// Handle multiple codes with one handler\napp.use(interceptByStatusCode([401, 403], (req, respond) => {\n    respond(403, '<h1>Access Denied</h1>');\n}));\n```\n\n---\n\n## Examples\n\n### Intercept response and add information to response if Content-Type is \"application/json\"\n\nIntercept a group of routes and add a timestamp field to the response when the body Content-Type is `\"application/json\"`:\n\n```javascript\nconst express = require('express');\nconst router = express.Router();\nconst responseinterceptor = require('responseinterceptor');\n    \n// ############ Routes without interception ############\nrouter.get(\"/\", function(req, res, next){\n    res.status(200).send({\"content\": \"myContent\"});\n});             \n// Additional routes without interception...\n        \n// ############ Routes with interception ############\nrouter.use(responseinterceptor.intercept(function(body, bodyContentType, request, callback){\n    let newResponse = body;\n    if(bodyContentType === \"application/json\")  // Check if response is JSON\n             newResponse.timestamp = Date.now(); // Add current timestamp\n    callback(newResponse); // Return modified response with timestamp\n}));    \nrouter.get(\"/withTimestamp\", function(req, res, next){\n    // This response WILL be intercepted and timestamp will be added\n    res.status(200).send({\"content\": \"myContent\"});\n});\n// Additional routes to intercept...\n```\n\nIn `app.js` use the `\"/intercept\"` route:\n\n```javascript    \nconst express = require('express');\nconst routeInt = require('./routes/routeInt');\nconst app = express();\n\napp.use('/intercept', routeInt);   \n```\n\nCall the service with curl to see the results:\n\n```shell\n$ curl -i -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X GET http://hostname/intercept\nX-Powered-By: Express\nContent-Type: application/json; charset=utf-8\nContent-Length: 23\nETag: \"35-6BXjKyRXlm+rSEU9a23z/g\"\nDate: Fri, 11 Nov 2016 13:16:44 GMT\nConnection: keep-alive\n\n{\"content\":\"myContent\"} // Response without timestamp field\n$\n$ curl -i -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X GET http://hostname/intercept/withTimestamp\nX-Powered-By: Express\nContent-Type: application/json; charset=utf-8\nContent-Length: 51\nETag: \"35-6BXjKyRXlm+rSEU9a23z/g\"\nDate: Fri, 11 Nov 2016 13:16:44 GMT\nConnection: keep-alive\n\n{\"content\":\"myContent\",\"timestamp\":\"1478870174325\"} // Response with timestamp field\n```\n\n\n### Intercept response and add information to response if Content-Type is \"text/html\"\n\nIntercept a group of routes and replace all HTML `<ul>` tags with `<ol>` tags:\n\n```javascript\nconst express = require('express');\nconst router = express.Router();\nconst responseinterceptor = require('responseinterceptor');\nconst htmlContent = '<html>\\\n                    <head> </head>\\\n                    <body contenteditable=\"false\">\\\n                        <h2>An unordered HTML list</h2>\\\n                        <ul>\\\n                            <li>Coffee</li>\\\n                            <li>Tea</li>\\\n                            <li>Milk</li>\\\n                        </ul>\\\n                    </body>\\\n                </html>';\n    \n// ############ Routes without interception ############\nrouter.get(\"/\", function(req, res, next){\n    res.status(200).send(htmlContent);\n});            \n// Additional routes without interception...\n        \n// ############ Routes with interception ############    \nrouter.use(responseinterceptor.intercept(function(body, bodyContentType, request, callback){          \n    let newResponse = body;\n    if(bodyContentType === \"text/html\")  // Check if response is HTML\n             newResponse = body.replace(\"<ul>\", \"<ol>\").replace(\"</ul>\", \"</ol>\"); // Replace ul tags with ol tags\n    callback(newResponse); // Return modified HTML\n}));\nrouter.get(\"/withOLTag\", function(req, res, next){\n    // This response WILL be intercepted and <ul> tags will be replaced with <ol>\n    res.status(200).send(htmlContent);\n});\n// Additional routes to intercept...\n```\n\nIn `app.js` use the `\"/intercept\"` route:\n\n```javascript    \nconst express = require('express');\nconst routeInt = require('./routes/routeInt');\nconst app = express();\n\napp.use('/intercept', routeInt);\n```\n\nCall the service with curl to see the results:\n\n```shell\n$ curl -i -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X GET http://hostname/intercept\nX-Powered-By: Express\nContent-Type: application/json; charset=utf-8\nContent-Length: 316\nETag: \"35-6BXjKyRXlm+rSEU9a23z/g\"\nDate: Fri, 11 Nov 2016 13:16:44 GMT\nConnection: keep-alive\n\n// Response with original <ul> tag\n<html>\n    <head> </head>\n        <body contenteditable=\"false\">                    \n            <h2>An unordered HTML list</h2>                    \n                <ul>\n                    <li>Coffee</li>\n                    <li>Tea</li>\n                    <li>Milk</li>\n                </ul>\n        </body>\n</html>\n$\n$ curl -i -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X GET http://hostname/intercept/withOLTag\nX-Powered-By: Express\nContent-Type: application/json; charset=utf-8\nContent-Length: 316\nETag: \"35-6BXjKyRXlm+rSEU9a23z/g\"\nDate: Fri, 11 Nov 2016 13:16:44 GMT\nConnection: keep-alive\n\n// Response with modified <ol> tag\n<html>\n    <head> </head>\n        <body contenteditable=\"false\">                    \n            <h2>An unordered HTML list</h2>                    \n                <ol>\n                    <li>Coffee</li>\n                    <li>Tea</li>\n                    <li>Milk</li>\n                </ol>\n        </body>\n</html>\n```\n\n## TypeScript Support\n\nThe package includes TypeScript definitions. Here's an example of using responseinterceptor with TypeScript:\n\n```typescript\nimport express, { Request, Response, NextFunction } from 'express';\nimport * as responseinterceptor from 'responseinterceptor';\n\nconst app = express();\n\n// Type-safe interceptor\napp.use(responseinterceptor.intercept((\n    body: any,\n    bodyContentType: string,\n    request: Request,\n    callback: (newContent: any) => void\n) => {\n    let newResponse = body;\n    \n    if (bodyContentType === \"application/json\") {\n        newResponse.timestamp = Date.now();\n        newResponse.server = \"MyAPI\";\n    }\n    \n    callback(newResponse);\n}));\n\n// Status code interception with TypeScript\napp.use(responseinterceptor.interceptByStatusCode(\n    [403, 404],\n    (req: Request, respond: (status: number, content: any, contentType?: string) => void) => {\n        // Auto-detect Content-Type (JSON)\n        respond(404, {\n            error: true,\n            message: \"Resource not found or access denied\"\n        });\n    }\n));\n\n// With explicit Content-Type\napp.use(responseinterceptor.interceptByStatusCode(\n    500,\n    (req: Request, respond: (status: number, content: any, contentType?: string) => void) => {\n        respond(500, '<error>Internal Server Error</error>', 'application/xml; charset=utf-8');\n    }\n));\n\napp.listen(3000, () => {\n    console.log('Server running on port 3000');\n});\n```\n\n---\n\n## FAQ\n\n### How do I disable logging in production?\n\nLogging is automatically disabled when `process.env.NODE_ENV === 'production'`. If you need to customize this behavior, you can set the environment variable:\n\n```bash\nexport NODE_ENV=production\n```\n\n### Can I use async/await in callbacks?\n\nYes! All callbacks support async functions:\n\n```javascript\napp.use(interceptByStatusCode([404], async (req, res, newStatusCode, content) => {\n  const customContent = await fetchCustomErrorPage();\n  res.respond(newStatusCode, customContent);\n}));\n```\n\n### How do I handle binary data (images, PDFs, etc.)?\n\nUse Buffer with explicit Content-Type:\n\n```javascript\napp.use(intercept((body, req, res) => {\n  if (req.path === '/logo') {\n    const imageBuffer = fs.readFileSync('./logo.png');\n    return res.respond(200, imageBuffer, 'image/png');\n  }\n  return body;\n}));\n```\n\n### What happens if my callback throws an error?\n\nErrors are caught automatically and the original response is sent to prevent connection issues:\n\n```javascript\napp.use(intercept((body, req, res) => {\n  try {\n    // Your logic\n    return transformedBody;\n  } catch (error) {\n    console.error('Intercept error:', error);\n    return body; // Fallback to original\n  }\n}));\n```\n\n### What happens if I pass `undefined` or `null` as content?\n\nThe middleware automatically converts `undefined` and `null` to empty strings to prevent crashes:\n\n```javascript\napp.use(interceptByStatusCode([404], (req, respond) => {\n  // These are automatically handled:\n  respond(404, undefined);  // Converted to ''\n  respond(404, null);       // Converted to ''\n  \n  // Warning is logged in development:\n  // [responseinterceptor] Warning: undefined content provided for GET /path (status 404)\n}));\n```\n\n**Best practice**: Always provide explicit content to avoid warnings.\n\n### Can I intercept multiple status codes?\n\nYes, pass an array:\n\n```javascript\napp.use(interceptByStatusCode([400, 401, 403, 404, 500], (req, res, statusCode, content) => {\n  res.respond(statusCode, customErrorPage(statusCode));\n}));\n```\n\n### How do I check Content-Type before modifying?\n\nUse `req.get('content-type')` or check the body:\n\n```javascript\napp.use(intercept((body, req, res) => {\n  const contentType = res.get('Content-Type');\n  \n  if (contentType && contentType.includes('application/json')) {\n    return { ...body, modified: true };\n  }\n  \n  return body;\n}));\n```\n\n### What's the performance impact?\n\nMinimal! Benchmarks show:\n- Global intercept: ~0.5ms overhead per request\n- Status code intercept: ~0.2ms overhead only when triggered\n- Content-Type detection: <0.001ms per operation\n\nSee `test/performance.test.js` for detailed benchmarks.\n\n### How do I migrate from v1.x to v2.x?\n\nThe API is backward compatible. Key changes:\n- Content-Type is now auto-detected (no breaking changes)\n- Optional `contentType` parameter for explicit types\n- Enhanced error handling (transparent, no changes needed)\n\n### Can I use this with TypeScript?\n\nYes! Type definitions are included:\n\n```typescript\nimport { intercept, interceptByStatusCode } from 'responseinterceptor';\n\napp.use(intercept((body: any, req: Request, res: Response) => {\n  // Your typed logic\n  return body;\n}));\n```\n\n### How do I use PropertiesManager for configuration?\n\nInstall `propertiesmanager` and create `config/default.json`:\n\n```bash\nnpm install propertiesmanager\n```\n\n```json\n{\n  \"production\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": false },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  },\n  \"dev\": {\n    \"responseinterceptor\": {\n      \"logging\": { \"enabled\": true },\n      \"errorHandling\": { \"rethrow\": false }\n    }\n  }\n}\n```\n\nPropertiesManager automatically loads configuration based on `NODE_ENV`. See [Integration with PropertiesManager](#integration-with-propertiesmanager) for details.\n\n### How do I contribute or report security issues?\n\n- Contributing: See [CONTRIBUTING.md](CONTRIBUTING.md)\n- Security: See [SECURITY.md](SECURITY.md)\n\n---\n\n## License\n\n**MIT License**\n\nCopyright (c) 2016 aromanino\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n---\n\n## Authors\n\n**Author:**  \nCRS4 Microservice Core Team ([cmc.smartenv@crs4.it](mailto:cmc.smartenv@crs4.it))\n\n**Contributors:**  \n- Alessandro Romanino ([a.romanino@gmail.com](mailto:a.romanino@gmail.com))\n- Guido Porruvecchio ([guido.porruvecchio@gmail.com](mailto:guido.porruvecchio@gmail.com))\n","readmeFilename":"README.md"}