{"_id":"hi-secure","_rev":"29-0291b2c89a856baecd438481f74bc31f","name":"hi-secure","dist-tags":{"latest":"1.0.36"},"versions":{"1.0.0":{"name":"hi-secure","version":"1.0.0","_id":"hi-secure@1.0.0","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"}],"dist":{"shasum":"e66e35cf651114fc1762384cd76fe210317233a1","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.0.tgz","fileCount":210,"integrity":"sha512-GseaXAIEsAMn3HDpa6zwvP/B/Y1oD8YbjtlYBIpaZjGgwkD4uXDi2e2UKNAySnXEMobFNCS4z3gzakP/4kovHA==","signatures":[{"sig":"MEUCIQDvN6lWSlydSVQ7U9F/koAZs7A90AT+ev0BFEOapDRWGgIgMCO3Iqh2JgTF44UxUMDkv0Vl/3kIonBgF+bZbZ+hTVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":672838},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c0ca3f4525f12503e38619a14d35711a4c928769","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.0_1765373173681_0.21610913678825439","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"hi-secure","version":"1.0.2","_id":"hi-secure@1.0.2","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"9a20618ee2f1adff595aeb21dc8f2bb660868261","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.2.tgz","fileCount":211,"integrity":"sha512-Wlc5IVA3KlS/BIoU8XdnzzXkixIq/hDE/k+uFSO5qBvbgi75z/0dxK10hyVJGxd9x31zdY7cSnEj54mGk/yhag==","signatures":[{"sig":"MEQCIFKqAtiDCwp8Ed2ki+agDIaUrIjR16grcHMPEBff+O4eAiA0zpEyg3ZlEaZGS3DQxRbzFlxLGrt91azrjdv5OPqUwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":677747},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1cebff2adf8421723ac86137b9805f927f5965af","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.2_1765390023708_0.7074071546114502","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"hi-secure","version":"1.0.3","_id":"hi-secure@1.0.3","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"6abd2f6d78ee835cc3d29907056b4bbcd9101d39","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.3.tgz","fileCount":215,"integrity":"sha512-c2QWUmKQw8CMAQJHwRPSJ1MnhKcaW7oGjUf5QGR35isXW53viwaKI46+nASTI7s0ykfhR6UuhT0/PyNiX7nmrw==","signatures":[{"sig":"MEQCIA1wRm4klclOwGncjh9B7Qslczi7MyP42jf64RQI+FsDAiBHhe2bb3eXhK2NMx2NzYPoVGRPZIm27Ie/dqo8GFx75w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688438},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1779666360848ff37184013102fde38724f85904","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.3_1765458938927_0.1862990694623483","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"hi-secure","version":"1.0.4","_id":"hi-secure@1.0.4","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"973c1347d0cf3c9fd5a37303f4f1d77e2f0fe89c","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.4.tgz","fileCount":215,"integrity":"sha512-Bse5PKCmNjgF50GVfumtYRMDNz20UtKkm8M1GUmXiy0+v4VQTbi4Sf9lVntaRIWL/q+aPh0vxsjHSXwufZ5xPQ==","signatures":[{"sig":"MEUCIChqzNFojviCL0EOb3LFvLcyWJmo92fdqJEb+k9ShZANAiEAyuvXsFIhL+HSm+7tobM1eNiBMGaAI/IgIu+WHYR23DU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688360},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"40b2c112b83874adff082a920c16b70ec8033243","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.4_1765461021422_0.5188659248391021","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"hi-secure","version":"1.0.5","_id":"hi-secure@1.0.5","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"1d61143e47778502dadc941bd446fbed7d29ae83","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.5.tgz","fileCount":215,"integrity":"sha512-nbTA/zDkd+blyWRyQWKgI20S1Y2T82JwMfB5ibP6TeA+r+uW8xs4CT0Z2Bt74BXs5yZFek+Z6Bq8pCmsongIgg==","signatures":[{"sig":"MEUCIQDyMXmu3S3VGwmk8QHsaIbHTxorwtQ7auqsMxHAjK72BAIgTnkQRlzCH6DroF3IjyNaH/Cl6Cq/YOCcEVKhRr4NS70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688354},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f8064608780661d05e8e1d74e623457761f542be","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.5_1765461680560_0.9290940920375053","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"hi-secure","version":"1.0.6","_id":"hi-secure@1.0.6","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"77a65da8cb778716d8e8d1bbd38a52fe2257787d","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.6.tgz","fileCount":215,"integrity":"sha512-bW5yGCQBX44dJ125EC+7+4axoCJmDF2LD1Ip9zwA8MVbkGVfvEuyhZ4d+/SZZSyGZob81LeGcojRkSnP0/wKag==","signatures":[{"sig":"MEQCIC1jM5JGupCB/1HFmxZLxrIY9TGQl+HoY0pieiSZbyYzAiAokru900sWntvgFVJ+9kKjk458JZKxdoQDFv4i0z2oqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651979},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"181c583fea8f1cd080489c5ee7e70e73d2cb0d6c","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.6_1765462694928_0.528908434089328","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"hi-secure","version":"1.0.7","_id":"hi-secure@1.0.7","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"4b1017ccb70df889da33f76a07768adf72a9934a","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.7.tgz","fileCount":215,"integrity":"sha512-TzPuIQMnwlMT3eyPgHSgTk1ExDIH870SJDGgUW5A4zW0p5hWTPF/VxMsZ7+CTbaGIThfHVitU9N4f+GN2THgBw==","signatures":[{"sig":"MEUCICT6sEFIlaG/S4OEh+X8N9E/FbCRRmj78O9750RhecR1AiEAjexmVJ4Bsv1f5A3RtPDy7nCjb9DlXowDhSJ7bn1bS9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617478},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4a1a29bf4e58da0639835674d1ed545ce2bfd0ed","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.7_1765463131434_0.8426097024612833","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"hi-secure","version":"1.0.10","_id":"hi-secure@1.0.10","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"0c4ac3a060c635453d750dae95790110a9b36b98","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.10.tgz","fileCount":213,"integrity":"sha512-9Y+ckU41p8hUHtr1hf6x4UIFVDJeyXNQYYR+whlq7t6e1NrWHt0xml1EXhYLx4Gu0BnydbJa+znhzrtjYptRTw==","signatures":[{"sig":"MEQCIGUuhqC0uOGccy5LvofDIhC5kTmlxCLgCoeJaP9TkP2JAiA4FHM3MRhW4yl9eSnulaVnzBdeQU4IchK1kw4IbTo8Og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376826},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"771a1ee4a07d53dfa3554a83d0132b3b787792a9","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.10_1765467128420_0.6112452463663292","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"hi-secure","version":"1.0.11","_id":"hi-secure@1.0.11","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"5879c90131f6b307521dd70f5dd59e21c510202e","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.11.tgz","fileCount":213,"integrity":"sha512-VD1c1P1luAJtPz62SsR3zRaEK9aVXqumAemX2wiVkwM+udvsX1meVDr7HgLAgjuoDX261uueBa7dytBIXfSM8w==","signatures":[{"sig":"MEUCIB38vXfgaCHc+/YokyaqYnBy/Lzfe0BpNpoJdvnfiWymAiEAxr3WsEBNwxEXptpvWq32GPCS60qMaSIjQmXskKeH680=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376826},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e679e87e904720c2ab127288bc7ddc43ea59b62f","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js applications</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.11_1765489784943_0.1856377040701045","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"hi-secure","version":"1.0.12","_id":"hi-secure@1.0.12","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"627acb079ca65a4bd02033f42cfd59bcb16d0264","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.12.tgz","fileCount":213,"integrity":"sha512-zeiR6fGnRq6wf3djuOk5EUSlxOHF1TDknKs4KYUa1g0b20JTFtUATYbMlIfu3/t40yPF1191/8bkHmoWEuMHPw==","signatures":[{"sig":"MEYCIQClvFPTtoIo7AwhcyIhb1Wyb7dWkqNS2TEckKhYoYx0SAIhAPqHP9lFTjaQiDyxQor637ZVyAbsXRyNxOtwuAc1pDXo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387834},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7856ea96c62074dda242346f449df093b8b5c223","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.12_1765497276780_0.6586428689927626","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"hi-secure","version":"1.0.13","_id":"hi-secure@1.0.13","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"a687500b696d671692228c9ee63daefc998150e4","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.13.tgz","fileCount":213,"integrity":"sha512-rHy1R7aw8bOjbAFkQugydY0Uqfog9z98J+ZJn9nk71D51u03oqUeYLzQkMkMQNSdJXHogIT6nnXb/JmsxMMkmA==","signatures":[{"sig":"MEQCICUUJWa02WAbvuCxSKKSw+I5Io8EHg3EtvI/5y0XvWbPAiALas5LQ/KdCmDHePDbzRnZycIAGWs5kXhdRrUbIeIBqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377331},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ec683f1390cc1f54b6f8d9461b89ae7034b925d7","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.13_1765781660994_0.3228241686366362","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"hi-secure","version":"1.0.14","_id":"hi-secure@1.0.14","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"154b532bb2a3ca451b15d96134e9e25206ad7c29","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.14.tgz","fileCount":213,"integrity":"sha512-/JuFBwxv1/Z0LR1Zui5RcB7QiDBIe51DL6KcRoec6lv24mzX7679eXyFpmBZX73EtcKviUlfGnD9HW1vP+HPkw==","signatures":[{"sig":"MEQCID7re0K95khHorrO2CqmiZD1ZIKLIz8ND7tWCQH7TjESAiB6FltHV+tz+YRcjkC0VVmZUCaclsR6SDO18DQfsi0l9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377242},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7088e00c2185c20ba7ed0ec679e491d3b52cd15f","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"<h1 align=\"center\">🔒 HiSecure</h1>\r <p align=\"center\"><strong>One-line security for Express.js</strong></p>","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.14_1766000560812_0.10991012605800887","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"hi-secure","version":"1.0.15","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"_id":"hi-secure@1.0.15","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"homepage":"https://github.com/100NikhilBro/hi-secure#readme","bugs":{"url":"https://github.com/100NikhilBro/hi-secure/issues"},"dist":{"shasum":"2e47dd6dea96dc987b0cb9410da14b4bb1eb5ae9","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.15.tgz","fileCount":213,"integrity":"sha512-OZr4jQEZu6ApZ2LRTpJ9D6buwxMPSg8V4fGbMAbPHL00r6DvXjcN2dcZOjpVd0rAhNxc4Z9+A4TCH18byeL7jQ==","signatures":[{"sig":"MEUCIGGmOz+6krD9j6ub4Ydu7NB84przHttQXi0DdHl1xTa0AiEA2C/RnuTh9zZ5yh58LGoctckrXYbZaVyoTG5XewJ7Rrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":377859},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c311cc81c3da08ea8dda410df2324b11bed6bcbb","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"repository":{"url":"git+https://github.com/100NikhilBro/hi-secure.git","type":"git"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.15_1766005287803_0.7355847334309218","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"hi-secure","version":"1.0.16","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.16","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"a5c98a402858e127e86b1d6b1acdf2509b50c5ec","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.16.tgz","fileCount":213,"integrity":"sha512-DMIsvs6xdCc6igEH33CnuRF/h6AQGwqkH6SthOMbLvXrclnBIMdznQfqjtjMq6NkQaFXMoKZWwlfBlOs6KJeAQ==","signatures":[{"sig":"MEYCIQCRtjAbEZ7XnYOg6HSd/0ZuBslYQP0LCua9czFHRW4GeAIhAP5ixOizkKsRfqixtDHdZN6+rtYbK6vHDaQpMRRwe3I8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":588422},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cd3198634ed5baf14bcc7a2f289c0a7dfeda3a03","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.16_1766946459045_0.6074045964933361","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"hi-secure","version":"1.0.17","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.17","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"f64bbcb469802f038a6c036edfb31982552bf360","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.17.tgz","fileCount":213,"integrity":"sha512-m7iC6TAaTmdADEzrJFBbIbdQwGXeXMcredcbEOpMMfmuw2S3o0PDmF4HnCOiP21HjK/Kv80yXUsgvPeqtOXQnA==","signatures":[{"sig":"MEUCIELAZfexv0D8HueL9yd5pN6OcmCMEqo/iqS2IY1GwbfSAiEA1KX5bjyVR1w+BQGboKk/PsXFWb1u+9pFAJFne9tv3oA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399883},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"24c613597fcbc64caa6349909508f64d66016590","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.17_1766948070129_0.34803551847870406","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"hi-secure","version":"1.0.18","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.18","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"c4b66f6d617e7fa4be882420c7a9e8a73a0ca216","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.18.tgz","fileCount":213,"integrity":"sha512-gRjYc4+7W/IhLSBl8PKSlLxc5rgWxC1/mYq47o4UGCd804kI4KBogCzkW/5qax1DSAo1+huYXV7ncPZL6CkHVg==","signatures":[{"sig":"MEYCIQCFHa1zH2NpBgw/ZKhTxDD0Y7eV/LeevOlVYvBUUHi/TQIhAIk0ibRqhQ7/BwNgSzJo9azRjq1hm67fOcN0rWt+Exry","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399883},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9224ee3fe4c46e7394a9f5e3e48904424690b6f3","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.18_1766948577323_0.7509722840928801","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"hi-secure","version":"1.0.19","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.19","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"3755f16860aa334578dffe803d2c9b3b40e7f3b6","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.19.tgz","fileCount":213,"integrity":"sha512-odpjkhebG21PGwd3QhqFDIxbXCcqkZQLDzt31qtLkCp3rkWUMp5yP/ZpgSUOOuMkRmIdSC6LQMGpJExFUtohag==","signatures":[{"sig":"MEUCICIAMDerCAsaaPqykh3URbLLuIK9COMJEA4TpSlc8JOgAiEA4n+RqoZquHYjf/eLAb5rK6QpGARYE4z+nkRW6krAQ2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400381},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cbf589eff404f49acaadaef49e5407992a2e8946","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.19_1766948711416_0.8341581949028545","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"hi-secure","version":"1.0.22","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.22","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"f2d758d7116b71ecbe8ddb572d98eabfd899db05","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.22.tgz","fileCount":213,"integrity":"sha512-ePa8EEJB7fF8MwRVKDBguc9qTxz0cdfqKb0KTV6ftideEKMlb6sSXrVnRGSU261H3hZIr2QtLCD6utR63sSyyA==","signatures":[{"sig":"MEYCIQDprO/CTJKrhzsKjSWM0Ei0tNI5CyBn+5VNnQwwMYduYQIhANOP1TGYlD3iuD/Omk4fQV7uTLzoUy0WUCo+M63ew84k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400381},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ef4526f62309441b1a6c3a4d96663e41b1231523","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.22_1766949002710_0.6581475175631377","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"hi-secure","version":"1.0.24","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.24","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"9d475d908ee5f720483850df49b9a2bc3031a3ea","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.24.tgz","fileCount":213,"integrity":"sha512-YmhGoHhDP4uOJ7+NsRIlEcO5toqL+IClU/Q3KF17etorcPzY9FQqrqDk3yoPOPyECdWxWk7PCXd2qjv6/A8NeQ==","signatures":[{"sig":"MEQCIFZJiuqHX0F7E3kltCYUyWLkHqRGXJPBQmr/olsX5jW4AiBtHqICVzoyQWC0nB8A9+wnqU4W2ugYHWiPCj22qQbT7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400381},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"88dc299d44bf5f87948bd7c07a7198416af53bd6","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.24_1766949109394_0.8179456731628612","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"hi-secure","version":"1.0.25","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.25","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"cf82890d46224e34f6ad1b83f23c3684721f746c","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.25.tgz","fileCount":213,"integrity":"sha512-GzWTwQxJgM66gUlRkPo8Ay9B5zxDPRJfZ14GscDtHN66kvlyjswaQ9q+CguXqq8Pfk1EKGxrog0fivDBThC5qA==","signatures":[{"sig":"MEYCIQCeDnKIWlRpXCX5mKYUcjh/5orNL6JV5vs97tZlLvAA3gIhAKEGddMjSDYyGfi6iTU+0XM8EO+6/c3dsrwru140stxL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399397},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"66923f17822b03fb7e691da04e4c025f6cee0947","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.25_1767132672804_0.052573944433319086","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"hi-secure","version":"1.0.26","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.26","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"f54c9ea6dbe1d25cdf8c9aff624d77afc3a7b22b","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.26.tgz","fileCount":213,"integrity":"sha512-/9E+e/7FUSxJEnTflZOWOfjccTJwrDyUklyfGsKmpat1lA008QFfRXYbGeLthhTzs5m1I8y5VH9B4RmdUKYp8Q==","signatures":[{"sig":"MEQCIC45w19/7bKeMROzWm67moR7VGqh+aJxGNmCPStuvBKPAiBUCl00wk9jkXBu1tHj0MAtWzVDg7n8p+fwVaXZUTWlJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401329},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"51346a1f0f861de22992121b45bc565f4a1c1d42","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"10.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"20.15.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.26_1767745889321_0.28480920143683597","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"hi-secure","version":"1.0.27","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.27","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"9a5236b5e03ad9fd7aaa32e20eaaa2d1cf76b084","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.27.tgz","fileCount":213,"integrity":"sha512-cjv7mmvDJ0qJiAvagU45BoSe67es7uASKKrKoHia9PT4KtA7iM42R3SCDCHXgY+RvYiRa++kgAQhzTmHiTbwrA==","signatures":[{"sig":"MEQCIAcKNJA7kLwcbskqFOopQkC44P5IqxXVUXWCQRxUmejvAiA7iW7L3l/EmdZg9NV3wBALSPJw8eY4Dmm85wYtYGfjbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417878},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f337c5f93823c63e7ea199e90d493e5040022663","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.27_1769334323189_0.35863958268719","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"hi-secure","version":"1.0.29","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.29","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"34ed456d509438d19631bc4f05970cc9d6fc1e92","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.29.tgz","fileCount":213,"integrity":"sha512-nJtoIcDl/UGQi+A5PXp0m+6UFLq0QnoKzpGA5kPX5VfiWSpViBfQUdLryv7Xd0W3bYAdPAMD30+zxaI3Ar6NZw==","signatures":[{"sig":"MEYCIQDFsL8c7i+inFQh5cXLSh0FWUP/VbVLW/q3MJx3mYFWBAIhAKaWM5dwuj9sfmwzj06a2NqRdUYt/nVjjavWAVa4zfHj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418296},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e60921ff91b23ea4acbe0a1a580e8a26310257a7","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.29_1769335774935_0.357124526163759","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"hi-secure","version":"1.0.32","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.32","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"9ce7e25e5ea37e925df4583c2449b7f4840f1b27","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.32.tgz","fileCount":213,"integrity":"sha512-44xvZsuHr8vmEBJyolySqsErPSHaNFvPMFM14awbRLTqpZmWVeL2XFZoHtXM/+vvHNUPvA4PRQQu8q4VbCF1+Q==","signatures":[{"sig":"MEQCIDxb05sCvkkPdSvaV2wIs062tXpKAjenh7VTzdKVc3YDAiAdsgJbGQv7zGIs5+SREjVYrXuKVPku2qDHGLKmymA2Zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421730},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6f04657ce416c222f74e04532e72bbd6f252629e","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.32_1769336878929_0.10463670262122249","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"hi-secure","version":"1.0.33","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.33","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"bc4627cbfd8fd4038282a0251578180cbc28f60d","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.33.tgz","fileCount":213,"integrity":"sha512-Jfn7vtzL/YK9brr829L/jOB9hIfwdhn34O2JbYkDRTs+ReCL45yTa7vUEvnVvi2BxSt6UEBEiOCJdJOYul3XCQ==","signatures":[{"sig":"MEYCIQCgLvJEAYS5BRvbuy8TLZSlKubEOC3tVEcpWXYK261jGAIhAIV4/IYALz8VK7mtT6NI2xgjN0PGTgEcCNSjmULtVmJy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435415},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c2c13314adbf7ea2461281411796e833b5c9ef96","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.33_1769339672328_0.6812509721036417","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"hi-secure","version":"1.0.34","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.34","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"a75ac46926f736709d6ab2c229deceba831a36ea","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.34.tgz","fileCount":213,"integrity":"sha512-UsWDp30WnitLH3VrEKnVMtn2dt2ChWkcGQFmNMHcBe3T6fbCC1JzfFsZq+G1fyLAGr/NDnHLFMc2Y+8GzKKPhg==","signatures":[{"sig":"MEUCIAg2t2jDoacCSQdkxaHvFDmDLDg/BVeOy6X9ciDolTFOAiEAhIdYuhynnXHHr5J2NhKkghPRVzx2DyT1oigObdTVLnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436394},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ef7fbcfb0daf985cbb665722f94c6f79673b7887","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.34_1769340222266_0.6431007043937194","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"hi-secure","version":"1.0.35","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"license":"MIT","_id":"hi-secure@1.0.35","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"dist":{"shasum":"a971f0c0fdbf2ba1e552a552cbfe0e60ba2fd608","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.35.tgz","fileCount":213,"integrity":"sha512-kOMoHx/HSD3afLLt6vL8k7kuFEfZUyReWnkEkFUAZLsY+Q3JMhAKSAp7ka0aqYgFEf6yh+VBdsbNRr3M74Y2PA==","signatures":[{"sig":"MEYCIQCOjUpxEzjclQNVE5xgo0ArETpYIXVS0UfMo6eO15GVJgIhAJoF34P6v78BpcsbKg16QgilRdNNIIPK/JXPaQovUA0t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391397},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"da034588967af805fa224654fea96e9b0dd86cd9","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"_npmVersion":"11.7.0","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","directories":{},"_nodeVersion":"25.4.0","dependencies":{"qs":"^6.14.0","hpp":"^0.2.3","xss":"^1.0.15","zod":"^4.1.13","cors":"^2.8.5","uuid":"^13.0.0","argon2":"^0.44.0","helmet":"^8.1.0","morgan":"^1.10.1","nanoid":"^5.1.6","winston":"^3.18.3","bcryptjs":"^3.0.3","compression":"^1.8.1","jsonwebtoken":"^9.0.3","sanitize-html":"^2.17.0","express-validator":"^7.3.1","express-rate-limit":"^8.2.1","google-auth-library":"^10.5.0","rate-limiter-flexible":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","express":"^5.2.1","@types/hpp":"^0.2.7","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^24.10.1","@types/uuid":"^10.0.0","@types/morgan":"^1.9.10","@types/express":"^5.0.6","@types/winston":"^3.18.0","@types/compression":"^1.8.1","@types/jsonwebtoken":"^9.0.10","@types/sanitize-html":"^2.16.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hi-secure_1.0.35_1769340926068_0.8629048542487221","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"hi-secure","version":"1.0.36","description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"scripts":{"build":"tsc","dev":"tsx watch src/index.ts","start":"node dist/index.js"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"dependencies":{"argon2":"^0.44.0","bcryptjs":"^3.0.3","compression":"^1.8.1","cors":"^2.8.5","express-rate-limit":"^8.2.1","express-validator":"^7.3.1","google-auth-library":"^10.5.0","helmet":"^8.1.0","hpp":"^0.2.3","jsonwebtoken":"^9.0.3","morgan":"^1.10.1","nanoid":"^5.1.6","qs":"^6.14.0","rate-limiter-flexible":"^9.0.0","sanitize-html":"^2.17.0","uuid":"^13.0.0","winston":"^3.18.3","xss":"^1.0.15","zod":"^4.1.13"},"devDependencies":{"@types/compression":"^1.8.1","@types/cors":"^2.8.19","@types/express":"^5.0.6","@types/hpp":"^0.2.7","@types/jsonwebtoken":"^9.0.10","@types/morgan":"^1.9.10","@types/node":"^24.10.1","@types/sanitize-html":"^2.16.0","@types/uuid":"^10.0.0","@types/winston":"^3.18.0","express":"^5.2.1","tsx":"^4.19.3","typescript":"^5.9.3"},"gitHead":"b6d19bb5c404cdcdaa231215bcc87489695f1b2d","_id":"hi-secure@1.0.36","_nodeVersion":"25.4.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-wxnOJNOOEczGFpecz/6a+2dnn/U5lzLwlCVT8HQRKRNqfq2TMKTXUPc5LUemXgFYbmmZJtYku7KNBm9ps2M9kw==","shasum":"fe7362948bc78ad62ee8f0d7ad9f6ca9f0547aeb","tarball":"https://registry.npmjs.org/hi-secure/-/hi-secure-1.0.36.tgz","fileCount":213,"unpackedSize":389308,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC8avvLyXEKJWCyAhyrUAkgxXj0HgwGaXmH553xO0oveAiAFkekCMo2qw7VYN3t4iNQbmu1r1JN0+xsCGXRhRDaORg=="}]},"_npmUser":{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},"directories":{},"maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hi-secure_1.0.36_1769481566300_0.4802463565655357"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-10T13:26:13.680Z","modified":"2026-01-27T02:39:26.554Z","1.0.0":"2025-12-10T13:26:13.840Z","1.0.2":"2025-12-10T18:07:03.873Z","1.0.3":"2025-12-11T13:15:39.077Z","1.0.4":"2025-12-11T13:50:21.598Z","1.0.5":"2025-12-11T14:01:20.697Z","1.0.6":"2025-12-11T14:18:15.073Z","1.0.7":"2025-12-11T14:25:31.586Z","1.0.10":"2025-12-11T15:32:08.587Z","1.0.11":"2025-12-11T21:49:45.094Z","1.0.12":"2025-12-11T23:54:36.970Z","1.0.13":"2025-12-15T06:54:21.129Z","1.0.14":"2025-12-17T19:42:40.986Z","1.0.15":"2025-12-17T21:01:27.966Z","1.0.16":"2025-12-28T18:27:39.267Z","1.0.17":"2025-12-28T18:54:30.352Z","1.0.18":"2025-12-28T19:02:57.482Z","1.0.19":"2025-12-28T19:05:11.579Z","1.0.22":"2025-12-28T19:10:02.888Z","1.0.24":"2025-12-28T19:11:49.544Z","1.0.25":"2025-12-30T22:11:12.971Z","1.0.26":"2026-01-07T00:31:29.528Z","1.0.27":"2026-01-25T09:45:23.355Z","1.0.29":"2026-01-25T10:09:35.104Z","1.0.32":"2026-01-25T10:27:59.094Z","1.0.33":"2026-01-25T11:14:32.516Z","1.0.34":"2026-01-25T11:23:42.432Z","1.0.35":"2026-01-25T11:35:26.259Z","1.0.36":"2026-01-27T02:39:26.460Z"},"license":"MIT","keywords":["express","security","middleware","authentication","jwt","google-auth","rate-limit","cors","validation","sanitization","rbac","api-security","nodejs","backend"],"description":"Unified security layer for Express.js: authentication, validation, sanitization, rate limiting and CORS","maintainers":[{"name":"nikhil_bro100","email":"100pranjalgupta@gmail.com"},{"name":"raghav_sharma","email":"raghav.sharma09900@gmail.com"}],"readme":"<h1 align=\"center\">🔒 HiSecure</h1>\r\n<p align=\"center\"><strong>One-line security for Express.js</strong></p>\r\n\r\n<p align=\"center\">\r\nHiSecure unifies authentication, validation, sanitization, rate-limiting, headers and parsing<br/>\r\ninto a single, consistent security layer for Express applications.\r\n</p>\r\n\r\n<hr/>\r\n\r\n<h2>Overview</h2>\r\n\r\n<p>\r\nModern Express applications require multiple security libraries to handle authentication,\r\npassword hashing, validation, sanitization, rate limiting, headers, compression and parsing.\r\nManaging these separately leads to duplicated logic, configuration drift and subtle bugs.\r\n</p>\r\n\r\n<p>\r\n<strong>HiSecure solves this by acting as a single orchestration layer.</strong>\r\n</p>\r\n\r\n<ul>\r\n  <li>Password hashing (Argon2 with bcrypt fallback)</li>\r\n  <li>JWT authentication and route protection</li>\r\n  <li>Google login (ID token verification)</li>\r\n  <li>Request validation and sanitization</li>\r\n  <li>Rate limiting and abuse prevention</li>\r\n  <li>CORS, security headers and compression</li>\r\n  <li>JSON, URL and query parsing</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h2>Feature Matrix</h2>\r\n\r\n<table width=\"100%\">\r\n  <tr>\r\n    <th align=\"left\">Capability</th>\r\n    <th align=\"left\">Status</th>\r\n    <th align=\"left\">Notes</th>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>JWT Authentication</td>\r\n    <td>Stable</td>\r\n    <td>Issuer, audience, expiry and subject supported</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Password Hashing</td>\r\n    <td>Stable</td>\r\n    <td>Argon2 primary with bcrypt fallback</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Google Login</td>\r\n    <td>Stable</td>\r\n    <td>ID token verification adapter included</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Route Protection (RBAC)</td>\r\n    <td>Stable</td>\r\n    <td>Role-based access via JWT payload</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Validation</td>\r\n    <td>Stable</td>\r\n    <td>Zod and express-validator supported</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Sanitization</td>\r\n    <td>Stable</td>\r\n    <td>HTML injection and XSS protection</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Rate Limiting</td>\r\n    <td>Stable</td>\r\n    <td>Presets and per-route configuration</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>CORS & Headers</td>\r\n    <td>Stable</td>\r\n    <td>Helmet, HPP and CORS integrated</td>\r\n  </tr>\r\n\r\n  <tr>\r\n    <td>Compression</td>\r\n    <td>Stable</td>\r\n    <td>gzip via a single flag</td>\r\n  </tr>\r\n\r\n  <tr>\r\n  <td>Logging</td>\r\n  <td>Improved</td>\r\n  <td>\r\n    Structured, lifecycle-aware logs with adapter, manager and fallback visibility.\r\n    Designed for production debugging without leaking sensitive data.\r\n  </td>\r\n</tr>\r\n\r\n\r\n</table>\r\n\r\n<hr/>\r\n\r\n\r\n<hr/>\r\n\r\n<h2>What’s New in latest version</h2>\r\n\r\n<ul>\r\n  <li>Improved structured logging across core lifecycle</li>\r\n  <li>Clear visibility into adapter initialization and fallbacks</li>\r\n  <li>Layer-based logs (core, managers, adapters) for easier debugging</li>\r\n  <li>No public API changes (safe patch release)</li>\r\n</ul>\r\n\r\n\r\n<h2>Developer Experience</h2>\r\n\r\n<ul>\r\n  <li>Single global middleware for security</li>\r\n  <li>No manual wiring of multiple packages</li>\r\n <li>Consistent error handling and lifecycle-aware logging</li>\r\n  <li>Safe defaults with escape hatches</li>\r\n  <li>Beginner-friendly, production-ready</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h2>Quick Start</h2>\r\n\r\n<pre><code>npm install hi-secure</code></pre>\r\n\r\n<pre><code>import express from \"express\";\r\nimport { HiSecure } from \"hi-secure\";\r\n\r\nconst app = express();\r\n\r\napp.use(HiSecure.middleware(\"api\"));\r\n\r\napp.listen(3000);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h2>Core Helpers</h2>\r\n\r\n<h3>Password Hashing</h3>\r\n\r\n<pre><code>const hash = await HiSecure.hash(password);\r\nconst isValid = await HiSecure.verify(password, hash);\r\n</code></pre>\r\n\r\n\r\n\r\n\r\n<h3>Input Validation</h3>\r\n\r\n<pre><code>router.post(\r\n  \"/register\",\r\n  HiSecure.validate([...]),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<h3>Rate Limiting</h3>\r\n\r\n<pre><code>HiSecure.rateLimit({ max: 5, windowMs: 15 * 60 * 1000 });\r\n</code></pre>\r\n\r\n\r\n\r\n<hr/>\r\n\r\n<h2>Global CORS Configuration</h2>\r\n\r\n<p>\r\nGlobal CORS defines the baseline access rules for your entire application.\r\nThese rules apply to all routes unless explicitly overridden at the route level.\r\n</p>\r\n\r\n<p>\r\nThis is ideal for standard APIs where most endpoints share the same access policy.\r\n</p>\r\n\r\n<hr/>\r\n\r\n<h3>Basic Global CORS</h3>\r\n\r\n<p>\r\nEnable CORS globally using default configuration.\r\n</p>\r\n\r\n<pre><code>app.use(\r\n  HiSecure.middleware({\r\n    cors: true\r\n  })\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Custom Global CORS</h3>\r\n\r\n<p>\r\nDefine explicit CORS rules for all routes.\r\n</p>\r\n\r\n<pre><code>app.use(\r\n  HiSecure.middleware({\r\n    cors: {\r\n      origin: [\"https://app.example.com\"],\r\n      methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\r\n      allowedHeaders: [\"Content-Type\", \"Authorization\"],\r\n      credentials: true\r\n    }\r\n  })\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Multiple Client Applications</h3>\r\n\r\n<p>\r\nAllow multiple frontends (web, admin, mobile) to access the same API.\r\n</p>\r\n\r\n<pre><code>app.use(\r\n  HiSecure.middleware({\r\n    cors: {\r\n      origin: [\r\n        \"https://web.example.com\",\r\n        \"https://admin.example.com\",\r\n        \"https://mobile.example.com\"\r\n      ],\r\n      credentials: true\r\n    }\r\n  })\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Public API (Open Read Access)</h3>\r\n\r\n<p>\r\nUse open CORS rules for public or read-only APIs.\r\n</p>\r\n\r\n<pre><code>app.use(\r\n  HiSecure.middleware({\r\n    cors: {\r\n      origin: \"*\",\r\n      methods: [\"GET\"]\r\n    }\r\n  })\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h2> Route-Level Security (Advanced & Real-World Usage)</h2>\r\n\r\n<p>\r\nHiSecure supports fine-grained security control at the route level.\r\nEach capability can be configured independently without affecting global middleware.\r\n</p>\r\n\r\n<p>\r\nThis allows you to apply strict security where needed (auth, payments, admin)\r\nand relaxed rules for public or internal endpoints.\r\n</p>\r\n\r\n<hr/>\r\n\r\n<h3>Custom CORS (Deep Control)</h3>\r\n\r\n<p>\r\nRoute-level CORS is useful when different consumers access different endpoints\r\n(e.g. web app, admin panel, third-party services).\r\n</p>\r\n\r\n<p><strong>Example: Webhook endpoint (single trusted origin)</strong></p>\r\n\r\n<pre><code>router.post(\r\n  \"/webhook\",\r\n  HiSecure.cors({\r\n    origin: [\"https://trusted-client.com\"],\r\n    methods: [\"POST\"],\r\n    allowedHeaders: [\"Content-Type\", \"Authorization\"],\r\n    credentials: true\r\n  }),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<p><strong>Example: Admin dashboard with restricted origins</strong></p>\r\n\r\n<pre><code>router.get(\r\n  \"/admin/stats\",\r\n  HiSecure.cors({\r\n    origin: [\r\n      \"https://admin.example.com\",\r\n      \"https://internal.example.com\"\r\n    ],\r\n    credentials: true\r\n  }),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<p><strong>Example: Public API with open read access</strong></p>\r\n\r\n<pre><code>router.get(\r\n  \"/public/feed\",\r\n  HiSecure.cors({ origin: \"*\" }),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Validation (Schema vs Rules — When to Use What)</h3>\r\n\r\n<p>\r\nHiSecure automatically detects validation strategy based on input type.\r\nChoose the style based on complexity and ownership.\r\n</p>\r\n\r\n<ul>\r\n  <li><strong>express-validator</strong> — quick, form-like validation</li>\r\n  <li><strong>Zod</strong> — complex schemas, reuse, shared contracts</li>\r\n</ul>\r\n\r\n<h4>express-validator (Rule-Based, Inline)</h4>\r\n\r\n<pre><code>import { HiSecure , body } from \"hi-secure\";\r\n\r\nrouter.post(\r\n  \"/register\",\r\n  HiSecure.validate([\r\n    body(\"email\")\r\n      .notEmpty()\r\n      .isEmail(),\r\n\r\n    body(\"password\")\r\n      .isLength({ min: 6 }),\r\n\r\n    body(\"role\")\r\n      .optional()\r\n      .isIn([\"user\", \"admin\"])\r\n  ]),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<h4>Zod (Schema-Based, Reusable)</h4>\r\n\r\n<pre><code>import { HiSecure , z } from \"hi-secure\";\r\n\r\nconst registerSchema = z.object({\r\n  email: z.string().email(),\r\n  password: z.string().min(6),\r\n  role: z.enum([\"user\", \"admin\"]).optional()\r\n});\r\n\r\nrouter.post(\r\n  \"/register\",\r\n  HiSecure.validate(registerSchema),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<p>\r\nBoth approaches produce a unified error response format.\r\n</p>\r\n\r\n<hr/>\r\n\r\n<h3>Sanitization (Trust Boundaries)</h3>\r\n\r\n<p>\r\nSanitization should reflect trust boundaries.\r\nNot all routes require the same level of strictness.\r\n</p>\r\n\r\n<p><strong>User-generated content (allow formatting)</strong></p>\r\n\r\n<pre><code>router.post(\r\n  \"/comment\",\r\n  HiSecure.sanitize({\r\n    allowedTags: [\"b\", \"i\", \"strong\", \"em\", \"a\"],\r\n    allowedAttributes: {\r\n      a: [\"href\"]\r\n    }\r\n  }),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<p><strong>Strict input (no HTML allowed)</strong></p>\r\n\r\n<pre><code>router.post(\r\n  \"/feedback\",\r\n  HiSecure.sanitize({\r\n    allowedTags: [],\r\n    allowedAttributes: {}\r\n  }),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<p><strong>Trusted internal pipeline (disable sanitization)</strong></p>\r\n\r\n<pre><code>router.post(\r\n  \"/internal/import\",\r\n  HiSecure.sanitize(false),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Full Route-Level Security Composition</h3>\r\n\r\n<p>\r\nA real-world admin route combining multiple security layers.\r\nExecution order is deterministic and isolated to the route.\r\n</p>\r\n\r\n<pre><code>router.post(\r\n  \"/admin/create-user\",\r\n  HiSecure.auth({ roles: [\"admin\"] }),\r\n  HiSecure.rateLimit({ max: 3, windowMs: 10 * 60 * 1000 }),\r\n  HiSecure.cors({\r\n    origin: [\"https://admin.example.com\"]\r\n  }),\r\n  HiSecure.sanitize(),\r\n  HiSecure.validate([\r\n    body(\"email\").isEmail(),\r\n    body(\"password\").isLength({ min: 8 })\r\n  ]),\r\n  controller\r\n);\r\n</code></pre>\r\n\r\n\r\n\r\n<h2>JWT Mode</h2>\r\n\r\n<p>\r\nJWT support is optional. Enable it only if you want authentication features.\r\n</p>\r\n\r\n<pre><code>\r\n  \r\nHiSecure.init({\r\n  auth: {\r\n    enabled: true,\r\n    jwtSecret:\r\n    process.env.JWT_SECRET , //  \"at least 32 - if not it shows warning in logs\"\r\n    jwtExpiresIn: \"1d\",\r\n  },\r\n});\r\n  \r\n  \r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n\r\n<h2>Final Authentication Setup</h2>\r\n\r\n<p>\r\nThis section demonstrates a complete, production-ready authentication setup using HiSecure.\r\nIt covers signup, JWT login, Google login, role-based access control, and proper initialization.\r\n</p>\r\n\r\n<h3>Features Covered</h3>\r\n<ul>\r\n  <li>Signup using email and password</li>\r\n  <li>Login using email and password (JWT-based)</li>\r\n  <li>Login with Google (ID token verification) - Added Soon in Docs </li>\r\n  <li>Role-based protected routes</li>\r\n  <li>Optional authentication support</li>\r\n  <li>Correct HiSecure bootstrap with reset rules</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h3>Application Bootstrap (app.ts / app.js)</h3>\r\n\r\n<pre><code>\r\n  \r\nimport express from \"express\";\r\nimport { HiSecure } from \"hi-secure\";\r\nimport dotenv from \"dotenv\";\r\n\r\ndotenv.config();\r\n\r\nHiSecure.init({\r\n  auth: {\r\n    enabled: true,\r\n    jwtSecret:\r\n    process.env.JWT_SECRET ,\r\n    jwtExpiresIn: \"1d\",\r\n  },\r\n});\r\n\r\nconst app = express();\r\n\r\napp.use(HiSecure.middleware(\"api\"));\r\n\r\n\r\n// When u use the Frontend [Because - Cors is the browser's security]\r\n// HiSecure.cors({\r\n//     origin:\"*\" , // We can add our custome end points as well \r\n//     credentials:true\r\n// })\r\n\r\n\r\nimport authRoutes from \"./routes/auth.route\";\r\nimport issueRoutes from \"./routes/issue.route\";\r\nimport notificationRoutes from \"./routes/notification.route\";\r\nimport communityRoutes from \"./routes/community.route\";\r\n\r\napp.use(\"/api/auth\", authRoutes);\r\napp.use(\"/api/issues\", issueRoutes);\r\napp.use(\"/api/notifications\", notificationRoutes);\r\napp.use(\"/api/community\", communityRoutes);\r\n\r\napp.get(\"/\", (_req, res) => {\r\n  res.json({ success: true, message: \"Backend running\" });\r\n});\r\n\r\nexport default app;\r\n  \r\n</code></pre>\r\n\r\n\r\n\r\n\r\n<h3>Application Bootstrap (server.ts / server.js)</h3>\r\n\r\n<pre><code>\r\n\r\nimport app from \"./app\";\r\nimport dotenv from \"dotenv\";\r\nimport { connectDB } from \"./config/db\";\r\n\r\ndotenv.config();\r\n\r\nconnectDB();\r\n\r\nconst PORT = process.env.PORT;\r\n\r\napp.listen(PORT, () => {\r\n  console.log(`Server running on port ${PORT}`);\r\n});\r\n\r\n</code></pre>\r\n\r\n\r\n\r\n\r\n<hr/>\r\n\r\n\r\n<h3>Authentication Routes</h3>\r\n\r\n<pre><code>import { Router } from \"express\";\r\nimport {\r\n  signup,\r\n  loginWithJwt,\r\n  loginWithGoogle\r\n} from \"../controllers/auth.controller.js\";\r\nimport { HiSecure } from \"hi-secure\";\r\n\r\nconst router = Router();\r\n\r\nrouter.post(\"/signup\", signup);\r\nrouter.post(\"/login\", loginWithJwt);\r\nrouter.post(\"/google\", loginWithGoogle);\r\n\r\nrouter.get(\r\n  \"/me\",\r\n  HiSecure.auth(),\r\n  (req, res) => res.json({ user: req.user })\r\n);\r\n\r\nexport default router;\r\n\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h3>Authentication Controllers</h3>\r\n\r\n\r\n<h4>Signup (Email and Password)</h4>\r\n\r\n<pre><code>\r\n\r\n\r\nexport const register = async (req: Request, res: Response) => {\r\n  try {\r\n    const { name, email, password, role, hostel, block, room } = req.body;\r\n\r\n    const existingUser = await User.findOne({ email });\r\n    if (existingUser) {\r\n      return res.status(400).json({\r\n        success: false,\r\n        message: 'User already exists'\r\n      });\r\n    }\r\n\r\n    const hashedPassword = await HiSecure.hash(password);\r\n\r\n    const user = await User.create({\r\n      name,\r\n      email,\r\n      password: hashedPassword,\r\n      role: role || 'student',\r\n      hostel,\r\n      block,\r\n      room\r\n    });\r\n\r\n    return res.status(201).json({\r\n      success: true,\r\n      message: 'User registered successfully',\r\n      user: {\r\n        id: user._id,\r\n        name: user.name,\r\n        email: user.email,\r\n        role: user.role\r\n      }\r\n    });\r\n  } catch (error: any) {\r\n    return res.status(500).json({\r\n      success: false,\r\n      message: 'Registration failed',\r\n      error: error.message\r\n    });\r\n  }\r\n};\r\n\r\n  \r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n<h4>Login (Email and Password)</h4>\r\n\r\n<pre><code>\r\n\r\n\r\n  export const login = async (req: Request, res: Response) => {\r\n  try {\r\n    const { email, password } = req.body;\r\n\r\n    const user = await User.findOne({ email });\r\n    if (!user) {\r\n      return res.status(401).json({\r\n        success: false,\r\n        message: 'Invalid credentials'\r\n      });\r\n    }\r\n\r\n    const isPasswordValid = await HiSecure.verify(password, user.password);\r\n    if (!isPasswordValid) {\r\n      return res.status(401).json({\r\n        success: false,\r\n        message: 'Invalid credentials'\r\n      });\r\n    }\r\n\r\n    const token = HiSecure.jwt.sign({\r\n      userId: user._id.toString(),\r\n      email: user.email,\r\n      role: user.role\r\n    });\r\n\r\n    return res.status(200).json({\r\n      success: true,\r\n      message: 'Login successful',\r\n      token,\r\n      user: {\r\n        id: user._id,\r\n        name: user.name,\r\n        email: user.email,\r\n        role: user.role\r\n      }\r\n    });\r\n  } catch (error: any) {\r\n    return res.status(500).json({\r\n      success: false,\r\n      message: 'Login failed',\r\n      error: error.message\r\n    });\r\n  }\r\n};\r\n\r\n</code></pre>\r\n\r\n<hr/>\r\n\r\n\r\n\r\n<h3>Role-Based Protected Routes</h3>\r\n\r\n<pre><code>\r\n  \r\nconst router = Router();\r\n\r\nrouter.post(\r\n  \"/\",\r\n  HiSecure.auth({ roles: [\"student\", \"admin\"] }),\r\n  HiSecure.validate([\r\n    body(\"title\").notEmpty(),\r\n    body(\"description\").notEmpty(),\r\n    body(\"category\").notEmpty()\r\n  ]),\r\n  createIssue\r\n);\r\n\r\nrouter.get(\r\n  \"/my\",\r\n  HiSecure.auth({ required: true }),\r\n  getMyIssues\r\n);\r\n\r\nrouter.post(\r\n  \"/assign\",\r\n  HiSecure.auth({ roles: [\"admin\"] }),\r\n  assignIssue\r\n);\r\n\r\nrouter.put(\r\n  \"/status\",\r\n  HiSecure.auth({ roles: [\"staff\", \"admin\"] }),\r\n  updateIssueStatus\r\n);\r\n\r\nrouter.put(\r\n  \"/close\",\r\n  HiSecure.auth({ required: true }),\r\n  closeIssue\r\n);\r\n\r\nexport default router;\r\n\r\n  \r\n</code></pre>\r\n\r\n\r\n<h2>Summary</h2>\r\n\r\n<p>\r\nHiSecure provides a complete, opinionated security layer for Express.\r\nIt focuses on correctness, safety and developer productivity.\r\n</p>\r\n\r\n<p align=\"center\">\r\n<strong>One dependency. One middleware. Complete security.</strong>\r\n</p>\r\n\r\n<hr/>\r\n\r\n<h2 align=\"center\">Additional Documentation</h2>\r\n\r\n<p align=\"center\">\r\nAdvanced patterns, RBAC strategies, adapter extensions and deployment guides\r\nwill be added over time.\r\n</p>\r\n","readmeFilename":"readme.md"}