{"_id":"express-joi-validations","_rev":"5-ecbacb25dd405f134fe9c0b22474e4c6","name":"express-joi-validations","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"express-joi-validations","version":"0.0.1","description":"Validate Express request (headers, params, query, body) using Joi","license":"MIT","keywords":["express","joi","validations"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"build":"tsup"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","typescript":"^5.4.5"},"_id":"express-joi-validations@0.0.1","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-tK706wFmv0vG5NM+E3T8/mDsB7uVwphlixG4gAM2GSUDfHw0Q36nNf3YzRRqcOnf5r49lCz4F9Igy865taMPtA==","shasum":"590aef68d306591ec98b0a46714712982273623a","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.0.1.tgz","fileCount":8,"unpackedSize":13170,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH5+NHaKT9rXM3LLIsev0qg3QfUDzwyrUmFsThWhmxTwIhAK4Pvm32Fdvy4QdF6rAqDksxNO03g+Wu6NfkJbA/LG5H"}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.0.1_1714725969591_0.6241230951676591"},"_hasShrinkwrap":false},"0.0.2":{"name":"express-joi-validations","version":"0.0.2","description":"Validate Express request (headers, params, query, body) using Joi","license":"MIT","keywords":["express","joi","validations"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"build":"tsup"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","typescript":"^5.4.5"},"_id":"express-joi-validations@0.0.2","gitHead":"66a923d5ae84667d7e7671658f98b88c2ccd392e","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-qHhxxDKdmDKrMui2Ppm8MYTglAZAwJV8Ig/rn3D3XturMWld9nWVRb3fNadroNMUNsYkHLZXWqV0mo2yI2S8ig==","shasum":"8257eee3465d82dba8a3283cd44ee0eb24c9d23c","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.0.2.tgz","fileCount":9,"unpackedSize":16627,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBpODxKlGepp5XZsAzKnHqNNm11A+VSYWZrtvythxQvzAiEAqb8pG56BMO741BJCK/Y7l5LMjZ2sTRAR4lAya1ezBO0="}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.0.2_1714735370874_0.3540519714230941"},"_hasShrinkwrap":false},"0.0.3":{"name":"express-joi-validations","version":"0.0.3","description":"Validate Express request (headers, params, query, body) using Joi","license":"MIT","keywords":["express","joi","validations"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"build":"tsup"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","typescript":"^5.4.5"},"_id":"express-joi-validations@0.0.3","gitHead":"66a923d5ae84667d7e7671658f98b88c2ccd392e","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-kYjBiNEnQmnCDB2cSXd38vs3IDZf3WU9xtuJiFJ3tC1NPL/ccbA/S1kYTJrOtIdMsBVzDDkBi41A0DI0GA37sg==","shasum":"924035b29f9b34a745a9517e3bc246028620343e","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.0.3.tgz","fileCount":9,"unpackedSize":22864,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCL09P5G6z8kM367g1XrDR1wKy7O1a4FGJWZNZwNTIdcQIhAJDa/cnDrYIjt4UQo4LFtQmjfBukNu+L9wtefYSCHeY+"}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.0.3_1714737001529_0.7744603827725278"},"_hasShrinkwrap":false},"0.0.5":{"name":"express-joi-validations","version":"0.0.5","description":"Express middleware to validate request (headers, params, query, body) using Joi","license":"MIT","keywords":["express-middleware","validation-middleware","joi-validation","request-validation","input-validation","data-validations","schema-validation","input-sanitization","custom-middleware","express","middleware","joi"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"publish":"npm i && tsup && npm publish"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","typescript":"^5.4.5"},"_id":"express-joi-validations@0.0.5","gitHead":"f746779ba1cf13a3d2db71141e41574b7781f0c2","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-y4ODWzzOun6qRa6/SNP1f0y9Uy8e7PDBXa+DeXWw3a+14FruWgbTJ4XkIaVTbC+DxJKYdA1YBJva1Tlxh3jsUw==","shasum":"9442c60bae101b9ffc0c3a03a347535961224072","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.0.5.tgz","fileCount":9,"unpackedSize":23144,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtP2Wjjnfj7WCYBSyZqNg+usqcyj7AyzeMOXH7zReUugIgWyDo8tqsghTN9Pr2Q6O/4tO7vBZpuFc35PRID9VrTMU="}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.0.5_1714739296779_0.5558582765968845"},"_hasShrinkwrap":false},"0.0.6":{"name":"express-joi-validations","version":"0.0.6","description":"Express middleware to validate request (headers, params, query, body) using Joi","license":"MIT","keywords":["express-middleware","validation-middleware","joi-validation","request-validation","input-validation","data-validations","schema-validation","input-sanitization","custom-middleware","express","middleware","joi"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"deploy":"npm i && tsup && npm publish"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","typescript":"^5.4.5"},"_id":"express-joi-validations@0.0.6","gitHead":"fb3ecb2b0e096971dd349f962da470164789fd57","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-Y1wErp82JKf/7prfBtnlAs3gL4Q+Z4VqQS6RVFSYXVGGBwNNXR1LFvLtOgk+dzCEm4sJ5U/NB8Dq2E7noD3PMg==","shasum":"f82324a17351decee2679be133aaf348bf79d4dd","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.0.6.tgz","fileCount":9,"unpackedSize":23143,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFT0ubZTS1GiZA1PhpHdEX1lRazTJUXtf1f4YrSo+ITsAiBAmZuzul8C4abWgVStqWT6BmxKk6sDRAx0AcZtVTGnvQ=="}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.0.6_1714739422374_0.3961442320852342"},"_hasShrinkwrap":false},"0.1.0":{"name":"express-joi-validations","version":"0.1.0","description":"Express middleware to validate request (headers, params, query, body) using Joi","license":"MIT","keywords":["express-middleware","validation-middleware","joi-validation","request-validation","input-validation","data-validations","schema-validation","input-sanitization","custom-middleware","express","middleware","joi"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","scripts":{"build":"npm i && tsup","deploy":"npm i && tsup && npm publish"},"dependencies":{"express":"^4.19.2","joi":"^17.13.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.12.8","eslint":"^9.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","tsx":"^4.9.0","type-fest":"^4.18.1","typescript":"^5.4.5"},"_id":"express-joi-validations@0.1.0","gitHead":"fb3ecb2b0e096971dd349f962da470164789fd57","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-dpKDU5vfatihgQ9hP8IqbeKlQzRnKGt6Q6EwnoU0WtLywdyHyEF+2v+KhQESAAjFh3EOeCA8QpFM2mp2/e1zSw==","shasum":"86d0eca963bd3f318ef3d76fb00e7a53876e4345","tarball":"https://registry.npmjs.org/express-joi-validations/-/express-joi-validations-0.1.0.tgz","fileCount":9,"unpackedSize":24383,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCS8c46Y7+JZt6XK5fQ9uzwSgsE3LpTxmHfVizWILw95wIgZYzEtWPN/KVbck3cLXHBCNtOt0Wfu7b4EtYJP8oOCQ0="}]},"_npmUser":{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"},"directories":{},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/express-joi-validations_0.1.0_1714993437252_0.7142701379402872"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-03T08:46:09.591Z","0.0.1":"2024-05-03T08:46:09.746Z","modified":"2024-05-06T11:03:57.567Z","0.0.2":"2024-05-03T11:22:51.050Z","0.0.3":"2024-05-03T11:50:01.708Z","0.0.5":"2024-05-03T12:28:16.960Z","0.0.6":"2024-05-03T12:30:22.565Z","0.1.0":"2024-05-06T11:03:57.398Z"},"maintainers":[{"name":"mattiamalonni","email":"mattia.malonni@gmail.com"}],"description":"Express middleware to validate request (headers, params, query, body) using Joi","homepage":"https://github.com/mattiamalonni/express-joi-validations#readme","keywords":["express-middleware","validation-middleware","joi-validation","request-validation","input-validation","data-validations","schema-validation","input-sanitization","custom-middleware","express","middleware","joi"],"repository":{"type":"git","url":"git+https://github.com/mattiamalonni/express-joi-validations.git"},"author":{"name":"Mattia Malonni","email":"mattia.malonni@gmail.com"},"bugs":{"url":"https://github.com/mattiamalonni/express-joi-validations/issues"},"license":"MIT","readme":"# express-joi-validations\n\nExpress middleware to validate request (headers, params, query, body) using Joi\n\n## Installation\n\n```bash\nnpm i express-joi-validations\n```\n\n## Usage\n\n### Out of the box\n\n```typescript\nimport validate from 'express-joi-validations';\n\nrouter.put('/posts/:id', validate({ headers: userToken, params: postId, body: postBody }), (request, response) => {\n  // Validation errors will be in request.validationErrors\n  // Validation values will be in request.validationValues\n});\n```\n\n### With custom settings\n\n```javascript\nimport express from 'express';\nimport { expressJoiValidations } from 'express-joi-validations';\n\nconst app = express();\napp.use(expressJoiValidations({ validationConfigs }));\n```\n\n#### Configuration\n\n- **throwErrors** (default: false): Define if errors should be thrown (suggested usage with [express-async-errors](https://github.com/davidbanham/express-async-errors))\n\n- **overwriteRequest** (default: false): Define if original request should be overwritten with validated data.\n\n### Helper methods\n\n#### validateBody\n\n```javascript\nimport { Joi, validateBody } from 'express-joi-validations';\n\n// POST /posts\n// body: { title: \"Lorem ipsum\", content: \"Lorem ipsum dolor sit amet\" }\n\nconst postBody = Joi.object({\n  title: Joi.string().required().trim(),\n  content: Joi.string().required().trim().min(10),\n});\n\nrouter.post('/posts', validateBody(postBody), postsController.create);\n```\n\n#### validateParams\n\n```javascript\nimport { Joi, validateParams } from 'express-joi-validations';\n\n// GET /posts/507f1f77bcf86cd799439011\n\nconst postId = Joi.object({\n  id: Joi.string().hex().length(24),\n});\n\nrouter.get('/posts/:id', validateParams(postId), postsController.detail);\n```\n\n#### validateQuery\n\n```javascript\nimport { Joi, validateQuery } from 'express-joi-validations';\n\n// GET /posts?page=2\n\nconst postQuery = Joi.object({\n  page: Joi.optional().number().integer().min(1).default(1),\n});\n\nrouter.get('/posts', validateQuery(postQuery), postsController.list);\n```\n\n#### validateHeaders\n\n```javascript\nimport { Joi, validateHeaders } from 'express-joi-validations';\n// DELETE /posts/507f1f77bcf86cd799439011\n// headers: { Authorization: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\" }\n\nconst userToken = Joi.object({\n  authorization: Joi.string().regex(/^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_.+/=]*$/),\n});\n\nrouter.delete('/posts/:id', validateHeaders(userToken), postsController.remove);\n```\n\n##### Chain\n\n```javascript\nimport { validateHeaders, validateParams, validateBody } from 'express-joi-validations';\n\nrouter.put('/posts/:id', validateHeaders(userToken), validateParams(postId), validateBody(postBody), postsController.update);\n```\n\n##### Joi options\n\nTo every function, is possible to add a second parameter to specify custom [Joi Options](https://github.com/hapijs/joi/blob/master/lib/index.d.ts#L95):\n\n```javascript\nrouter.post('/posts', validateBody(postBody, { allowUnknown: true }), postsController.create);\n```\n","readmeFilename":"README.md"}