{"_id":"@beautinique/backend-request","_rev":"6-0cc75b21a78cf2b842b2a609ba418667","name":"@beautinique/backend-request","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@beautinique/backend-request","version":"1.0.0","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","_id":"@beautinique/backend-request@1.0.0","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"dist":{"shasum":"00a7c12bec9704a2fcbdcc10c6e602b39b3772ad","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.0.tgz","fileCount":8,"integrity":"sha512-5ikRtuLH5b57aaz9pO1aGI6Vv0VSPojoAGlyEYsOYdxMH/gf4gZU+fEgBMIWyrdIJYIRFSIVdRMxXFbPoAcR3Q==","signatures":[{"sig":"MEYCIQDP5xswYBmzMITucVSDqjXHRCgqPMpgXKqsmAM2ErzstQIhAJ2kRjwLkvq/Q2JteX4o8DWF496ZCXJuxqE9HeyI9KDh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29671},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"ea8b290ddcd91e41f6cfee2fa7ac9e79f3a10af7","scripts":{"dev":"tsup --watch","lint":"eslint .","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"repository":{"url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","type":"git","directory":"packages/backend/request"},"_npmVersion":"11.10.1","description":"Backend Request middleware for Beautinique project.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"@beautinique/backend-classes":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/multer":"^2.2.0","@types/express":"^5.0.6"},"peerDependencies":{"express":"^5.2.1"},"_npmOperationalInternal":{"tmp":"tmp/backend-request_1.0.0_1783672909439_0.26393378974345283","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@beautinique/backend-request","version":"1.0.1","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","_id":"@beautinique/backend-request@1.0.1","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"dist":{"shasum":"9ca58c6f8cf73fb15cb59a59a4257409ac961c02","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.1.tgz","fileCount":22,"integrity":"sha512-UM44cL2ERNO7A0/X9ZYL/+MaXkgjIoJ2sQuxsEzt2NqwoLlHfpKn9cPKHrxG3+gz1fV+HJz1sJcOvXEEewOz9g==","signatures":[{"sig":"MEUCIBT/T1e3L5QrO8yoDnoTyT43UEzpyFovrG9T6jQSC6yiAiEA40Pi02fwn1WD9l+i9XCEh2wGMi3SpfGrgEcEB10hIkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32883},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"309063216b8eafe33d6f8bb794e6ee6b96aedb9d","scripts":{"dev":"tsup --watch","lint":"eslint .","build":"tsup","postbuild":"node ../../../scripts/build-types/index.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"repository":{"url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","type":"git","directory":"packages/backend/request"},"_npmVersion":"11.8.0","description":"Backend Request middleware for Beautinique project.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"@beautinique/backend-classes":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/multer":"^2.2.0","@types/express":"^5.0.6"},"peerDependencies":{"express":"^5.2.1"},"_npmOperationalInternal":{"tmp":"tmp/backend-request_1.0.1_1784656550291_0.7202424368063136","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@beautinique/backend-request","version":"1.0.2","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","_id":"@beautinique/backend-request@1.0.2","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"dist":{"shasum":"0ff0fc43eb8f84db8fb224e15b72aacc6cb05a3c","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.2.tgz","fileCount":22,"integrity":"sha512-g91CoEMxmBsjWFStaCaqBKg3+H8Z9A+lRjvIgYvb6y/dAZwDRhWqBbaurPg2QdpBAxlUqTSqc4WFoKXVtv0dzw==","signatures":[{"sig":"MEUCIQCYFza43jhofzvpgD0jOszyq2361NC1c9sUdNl7Lf1YuAIgZiEJy+Ui5TquAaj/ymqW3WLyiqGV9cHDxb2jeTF04mk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32883},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"e30737149d6d3916e61a909d2a30954882a1ce7e","scripts":{"dev":"tsup --watch","lint":"eslint .","build":"tsup","postbuild":"node ../../../scripts/build-types/index.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"repository":{"url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","type":"git","directory":"packages/backend/request"},"_npmVersion":"11.8.0","description":"Backend Request middleware for Beautinique project.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"@beautinique/backend-classes":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/multer":"^2.2.0","@types/express":"^5.0.6"},"peerDependencies":{"express":"^5.2.1"},"_npmOperationalInternal":{"tmp":"tmp/backend-request_1.0.2_1785442849545_0.6945480024488853","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@beautinique/backend-request","version":"1.0.3","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","_id":"@beautinique/backend-request@1.0.3","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"dist":{"shasum":"2ba002729edb08ec5685f277c915992b1cf8f3ad","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.3.tgz","fileCount":22,"integrity":"sha512-nv3rhVdYP2WDZjS1LGYohbAwQCaZ2m5YHDTEOQnoor7SMJf1s2X4VO30JNtQ774bAm7//Ew8n7Z164vyWuP2YA==","signatures":[{"sig":"MEQCIGloVdOg1mdqyCJRMFQrjJESq5sbc+wkoRQystS/gGMuAiAiLSw786BX3zphMeqoLbXK+QbuVWioQpY+n6gJ59fp5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32954},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"b026a3b9693c94e58dcd163010dbf39b6b79e7ea","scripts":{"dev":"tsup --watch","lint":"eslint .","build":"tsup","postbuild":"node ../../../scripts/build-types/index.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"repository":{"url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","type":"git","directory":"packages/backend/request"},"_npmVersion":"11.8.0","description":"Backend Request middleware for Beautinique project.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"@beautinique/backend-classes":"^1.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/multer":"^2.2.0","@types/express":"^5.0.6"},"peerDependencies":{"express":"^5.2.1"},"_npmOperationalInternal":{"tmp":"tmp/backend-request_1.0.3_1787039391726_0.4352348454205419","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@beautinique/backend-request","version":"1.0.4","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","_id":"@beautinique/backend-request@1.0.4","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"dist":{"shasum":"a94a44c0a0ee76a9c66c53c056b78bd39ad004ce","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.4.tgz","fileCount":22,"integrity":"sha512-VIpHEPPSLWFzhXpM0D/5D/YbyvgScfieK/b7vweIspvymiFFc84oymvpu9VD4++fVmoEFloOaNOaPIEMZU+0zw==","signatures":[{"sig":"MEUCIAKXe4dQEzS3IMO4Yf0VTVfMDmDtR09qIcCI78Oba9XXAiEAk46N8pKmyi7Vx/wr9CBQzNsYjCjJgp8M0VGG66RapCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32954},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"2807c53a8d389b6f0a36770b416bcc2026e40ca2","scripts":{"dev":"tsup --watch","lint":"eslint .","build":"tsup","postbuild":"node ../../../scripts/build-types/index.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"repository":{"url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","type":"git","directory":"packages/backend/request"},"_npmVersion":"11.10.1","description":"Backend Request middleware for Beautinique project.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"@beautinique/backend-classes":"^1.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/multer":"^2.2.0","@types/express":"^5.0.6"},"peerDependencies":{"express":"^5.2.1"},"_npmOperationalInternal":{"tmp":"tmp/backend-request_1.0.4_1787219471474_0.14518183234944382","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@beautinique/backend-request","version":"1.0.5","description":"Backend Request middleware for Beautinique project.","keywords":["backend","request","middleware","express","beautinique"],"author":{"name":"Nageshwar Pawar"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","directory":"packages/backend/request"},"bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup","postbuild":"node ../../../scripts/build-types/index.mjs","dev":"tsup --watch","lint":"eslint .","typecheck":"tsc --noEmit"},"publishConfig":{"access":"public"},"engines":{"node":">=24"},"devDependencies":{"@types/express":"^5.0.6","@types/multer":"^2.2.0","typescript":"^6.0.3"},"dependencies":{"@beautinique/backend-classes":"^1.0.7"},"peerDependencies":{"express":"^5.2.1"},"gitHead":"3a5103fb9030969e849b1e69b02bbe7d1cab5fbe","_id":"@beautinique/backend-request@1.0.5","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-TKSPyyomvVYlOz7B84D6UmH4btm7BGnqpN4naFHQMc14PPX2TL85e30SQXbRcVvOddx/ZvL9DHcJ9A2KZdvx9A==","shasum":"b8d0f1f6526bb6ec73a14512c39f88cfd4d788c6","tarball":"https://registry.npmjs.org/@beautinique/backend-request/-/backend-request-1.0.5.tgz","fileCount":22,"unpackedSize":32954,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFUkq9XPSp9zTbaC2aLTeQqxeqAvoIEnH3P4LNHqf6NrAiAp66TvlEzehm3ZaRYtCDEcDkInhqtZkc3GjVR609NBmA=="}]},"_npmUser":{"name":"beautinique","email":"beautinique.bq@gmail.com"},"directories":{},"maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/backend-request_1.0.5_1787576773820_0.5677941549676404"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T08:41:49.241Z","modified":"2026-08-24T13:06:14.165Z","1.0.0":"2026-07-10T08:41:49.568Z","1.0.1":"2026-07-21T17:55:50.429Z","1.0.2":"2026-07-30T20:20:49.710Z","1.0.3":"2026-08-18T07:49:51.830Z","1.0.4":"2026-08-20T09:51:11.616Z","1.0.5":"2026-08-24T13:06:13.983Z"},"bugs":{"url":"https://github.com/Nageshwar1997/BQ-Packages/issues"},"author":{"name":"Nageshwar Pawar"},"license":"MIT","homepage":"https://github.com/Nageshwar1997/BQ-Packages/tree/main/packages/backend/request#readme","keywords":["backend","request","middleware","express","beautinique"],"repository":{"type":"git","url":"git+https://github.com/Nageshwar1997/BQ-Packages.git","directory":"packages/backend/request"},"description":"Backend Request middleware for Beautinique project.","maintainers":[{"name":"beautinique","email":"beautinique.bq@gmail.com"}],"readme":"# @beautinique/backend-request\r\n\r\nReusable Express request-guard middleware for Beautinique backend services - reject malformed requests and restrict service-to-service access before they ever reach a route handler.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @beautinique/backend-request\r\n```\r\n\r\n`express` is a peer dependency - install whichever version your service already uses.\r\n\r\n## `checkEmptyRequest`\r\n\r\nRejects requests that are missing required parts (body, file(s), params, query) with a `ValidationError`, before the route handler runs.\r\n\r\n```ts\r\nimport { checkEmptyRequest } from '@beautinique/backend-request';\r\n\r\napp.post('/products', checkEmptyRequest({ body: true }), createProduct);\r\napp.post('/products/:id/image', checkEmptyRequest({ file: true }), uploadImage);\r\n```\r\n\r\nEvery flag is opt-in (all default to not required), so `checkEmptyRequest({})` allows any request through unchanged. When multiple flags are combined, checks run in this order and the first violation wins:\r\n\r\n| Option        | Requires                                                      |\r\n| ------------- | --------------------------------------------------------------- |\r\n| `filesOrBody` | `req.body` or `req.files` (plural) non-empty                   |\r\n| `fileOrBody`  | `req.body` or `req.file` (single) non-empty                    |\r\n| `body`        | `req.body` non-empty                                            |\r\n| `files`       | `req.files` (plural) non-empty                                  |\r\n| `file`        | `req.file` (single) non-empty                                   |\r\n| `params`      | `req.params` non-empty                                          |\r\n| `query`       | `req.query` non-empty                                           |\r\n\r\n## `serviceAccess`\r\n\r\nRestricts access to trusted internal callers via a shared secret header - e.g. an internal gateway calling a downstream microservice directly. Rejects with `AuthorizationError` when the header is missing or doesn't match.\r\n\r\n```ts\r\nimport { serviceAccess } from '@beautinique/backend-request';\r\n\r\napp.use(serviceAccess({ secret: process.env.SERVICE_SECRET! }));\r\n```\r\n\r\n| Option       | Default              | Description                                                   |\r\n| ------------ | --------------------- | ----------------------------------------------------------------- |\r\n| `secret`     | _(required)_           | Validated once at setup time - throws `InternalServerError` if missing/blank. |\r\n| `headerName` | `X-Service-Secret`    | The header the caller must send the secret in.                |\r\n\r\nThe secret comparison hashes both sides and uses `timingSafeEqual`, so a mismatch can't be inferred from response timing, and secrets of different lengths never throw.\r\n\r\n## Repository\r\n\r\nhttps://github.com/Nageshwar1997/BQ-Packages\r\n\r\n## Homepage\r\n\r\nhttps://github.com/Nageshwar1997/BQ-Packages\r\n\r\n## Issues\r\n\r\nhttps://github.com/Nageshwar1997/BQ-Packages/issues\r\n\r\n## Author\r\n\r\nNageshwar Pawar\r\n\r\n## License\r\n\r\nThis package is licensed under the MIT License. See the root `LICENSE` file for details.\r\n","readmeFilename":"README.md"}