{"_id":"@appjumpstart/mercury-schema","_rev":"3-0ae84bb2c3d28a14337520bbe51f24b4","name":"@appjumpstart/mercury-schema","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@appjumpstart/mercury-schema","version":"1.0.0","description":"An Express/Connect-compatible middleware for validation and serialization using ajv and fast-json-stringify","main":"index.js","scripts":{"test":"jest"},"keywords":["express","connect","mercury","validation","serialization","ajv","fast-json-stringify"],"author":{"name":"Ian Walter","email":"public@iankwalter.com","url":"https://iankwalter.com"},"license":"ISC","dependencies":{"@ianwalter/base-error":"^1.1.0","fast-json-stringify":"^1.4.0"},"devDependencies":{"jest":"^22.4.3","light-my-request":"^2.0.2"},"jest":{"testEnvironment":"node"},"gitHead":"6bd276be2d2d002d9132c28897caf8ef8097f73e","_id":"@appjumpstart/mercury-schema@1.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.0.0","_npmUser":{"name":"ianwalter","email":"public@iankwalter.com"},"dist":{"integrity":"sha512-hwHh/PJbbeduO3rSntnUZKDNeUmtvp3qm6v9yhgbrMGL9zhkEXmXySVebX3ClcjKM2oFJpPHk1pw+u425QbIBg==","shasum":"bbc48ab6be7fd8e17a89bc1a924d54c916bbcbc2","tarball":"https://registry.npmjs.org/@appjumpstart/mercury-schema/-/mercury-schema-1.0.0.tgz","fileCount":8,"unpackedSize":10916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCf/ZCRA9TVsSAnZWagAAEkkP/jkce10gkVlFbqpzMTrl\nE6+zQ+J9zO/FyC/TZ1GEJ8JWs74uw68gJbPIsHujCA4NGNy6bo8ic61Nq6PA\n6zlu1/K2fIFbu2217NF36nbQLOBkDggTRElAjeBjLWBOyS/f1pUEm9nLZBo0\nzJKWnUWPCxj3Ms5GngmQ5FSJHXO7LOB3LQo3pAMlEFPQOCxHFogD2sT2vuri\noF2h91NZOrcz/cuaez2mls+/AhpUCsgESOhoEUbZ5iDPOUjg/Mam7+YO14hv\nFPegGJYlJOiM8g1KgOFZUtaiXhmhdVYCA+Zi6bpxoQ0U2EYjnVADdp03/YEW\n5Fjn82OjGdlISt2Qq/BJ8zXtojXOR1zCzsNj2duWw7+GpPUUNV7TSBu0SpK+\nHbsoKq9poflFtIOqw1lOnn/t8MdxaezUmK5eh9eBm3H66emJIsm1OlaRpoV9\nDODVUosO5fwj8TBMdUzlnCofXL38MRG5vi7R6We2ZEOWp1y4YlDPBewu1VFa\ngzqtd//lDwJ8aopHjDXmfKyReP5MvZXUHcnI0E7fx/Gp0PbRNE7zk0qXJokl\nR4Zyy6I4MyPeQ5YVdRpksOY7TSg5eTgg/8zxO65mSj7goeFP/WxUc6Rk8ICz\n7L5eIdXPHDeAYrxvXV/W45+f4mQTX/XuPfGdFJ8b8v1/TCeuoVY/hxajjdwz\nk/By\r\n=6izr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxeMOfrUXmqN1TRdm7zhtAV0rgfHMdoJhA0JrZuaBjpAIgVrMmFKdXihbd75iJABSX1aFVUgJb2LNNCcUxl2vinI8="}]},"maintainers":[{"name":"ianwalter","email":"public@iankwalter.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mercury-schema_1.0.0_1527381976864_0.03809350108723053"},"_hasShrinkwrap":false},"1.1.0":{"name":"@appjumpstart/mercury-schema","version":"1.1.0","description":"An Express/Connect-compatible middleware for validation and serialization using ajv and fast-json-stringify","main":"index.js","scripts":{"test":"jest"},"keywords":["express","connect","mercury","validation","serialization","ajv","fast-json-stringify"],"author":{"name":"Ian Walter","email":"public@iankwalter.com","url":"https://iankwalter.com"},"license":"ISC","dependencies":{"@ianwalter/base-error":"^1.1.0","fast-json-stringify":"^1.4.0"},"devDependencies":{"jest":"^22.4.3","light-my-request":"^2.0.2"},"jest":{"testEnvironment":"node"},"gitHead":"198e5d7f49b1cb8823c33ab1babd3a4cbe4f65c1","_id":"@appjumpstart/mercury-schema@1.1.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"ianwalter","email":"public@iankwalter.com"},"dist":{"integrity":"sha512-2UDQ4uREK4SrrHb6x0c6LdF9eJxvT7cube4y6HbWqgJcsiMvc8l/vw/mDfLVE2yWwm48b+a9ghO0YWFLzgIu+g==","shasum":"94d8b07de1d7b545470c41112dcc3167bda21bf4","tarball":"https://registry.npmjs.org/@appjumpstart/mercury-schema/-/mercury-schema-1.1.0.tgz","fileCount":8,"unpackedSize":12050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIQ1zCRA9TVsSAnZWagAApCQP/2zidg/0aT8Tzo7d+bS7\nq2modVKPyexk17C8GV/MRNhanIMn27Z4HLkvTNGLWGcjTkmcWuFw9Q3jIJQP\nvWrVph5GhCSZSkw2MpPsEByebef9yb3Npc9VPgIDfYSbQTAnHGwF0j2dypCv\nW5HnNWLQCzijH4ghruLT/k61CjgWU871Du6/G1joAnGG/F1+LHUqjm+NW7Hw\nsVXQprhzS15AReyM6qhL4XBedzsy0YiLG6m0VSeez4Ja6Mhv/Io+tnScmUhH\n3lsRRWEnSyZsFg3kSu9uH5eqlxHBXMow2EJfk0O/G7lZf4g313fFWB4jXUj3\nc57KCZjSj+Pq/SGtpyKyXrXTvFsfoKH6jCAu4KXAmcrDqd2WbZ545TenCl65\nI3Ca1V7AkUbkigGuKkb8Wx95XsyAj6PysK+SV16Qq8FH968HUzdLluW5GxpZ\nU4bXtsPYEtXNEVYMjRubBa6qetOkpjf7Ar1XHup5gqyi9WSxWR0HGNZZYhQK\npP9le8xCtdhF3i7FwZ3tU600wlK8f58SawovVmg44P2lvs0y/obTw1DvP5KW\n4M43yldU1SDrdyC+DPh9HhglNqP143whccIh6ebx/IxC0A45Il5sQ7bHVb1g\nWXnmThEqjMVHxaJMqaRhVOQvpZO+pnq7B651Vi39UpXuz+g33MHk/947U6qk\nNHe/\r\n=Dgaz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGO/IU/nviGXLQl7FrH734euX+8YDovLL8MCH7EuQh4GAiEA6vbbH5LfcCKTHom8D4tcq1fHj6Nzy4iOg6BXcGOMIlQ="}]},"maintainers":[{"name":"ianwalter","email":"public@iankwalter.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mercury-schema_1.1.0_1528892786024_0.6196557692221196"},"_hasShrinkwrap":false},"1.1.1":{"name":"@appjumpstart/mercury-schema","version":"1.1.1","description":"An Express/Connect-compatible middleware for validation and serialization using ajv and fast-json-stringify","main":"index.js","scripts":{"test":"jest"},"keywords":["express","connect","mercury","validation","serialization","ajv","fast-json-stringify"],"author":{"name":"Ian Walter","email":"public@iankwalter.com","url":"https://iankwalter.com"},"license":"ISC","repository":{"type":"git","url":"git+ssh://git@github.com/appjumpstart/mercury-schema.git"},"dependencies":{"@ianwalter/base-error":"^1.1.0","fast-json-stringify":"^1.4.0"},"devDependencies":{"jest":"^22.4.3","light-my-request":"^2.0.2","np":"^3.0.4"},"jest":{"testEnvironment":"node"},"gitHead":"abb4863c03ffe705b31e902b91147a4b95032e39","bugs":{"url":"https://github.com/appjumpstart/mercury-schema/issues"},"homepage":"https://github.com/appjumpstart/mercury-schema#readme","_id":"@appjumpstart/mercury-schema@1.1.1","_npmVersion":"6.2.0","_nodeVersion":"10.7.0","_npmUser":{"name":"ianwalter","email":"public@iankwalter.com"},"dist":{"integrity":"sha512-iNO54Kt4ubzzb2qxWcGARzARc/UCTw0QIJnV+urIVIfKOIZfz1vpvE93ieLf/TvkdyGN78u+5lwJSHnKMnSW5g==","shasum":"40e285fac1ad5e0183c54d02a621959b40ea8c8f","tarball":"https://registry.npmjs.org/@appjumpstart/mercury-schema/-/mercury-schema-1.1.1.tgz","fileCount":8,"unpackedSize":12182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUPg0CRA9TVsSAnZWagAAFNsP/isuPjYPKdi9JRM7TwTy\nqgPabwOzfEUXoHBum5oMeYkk3lMyNZia/kE7NVW98+XKBFQZuAvwaxh2NzF3\nz8IZN3xwBJhVO2bOZxs9COhGfbQGW98phASpYF6EDIpl5bTOTJahMnEhXGO0\nKV/5gDs7olXhdD/ieZy2Dy8hZ5o6lPUYS6y6znWnI5zltd4Eqfh5O3PMtnXU\nBBGPq9z5qywBFOCjoLnUDWX5QH5MqcYZ9csy7mOw5ynIHVjqWy5+KkcINTlq\ndo8h6kAID03tnC3fGTG/adSwkrJZAZCcHLqsAg45Ou/U+AugMTlbXgpbFENB\nPAZP6ETqkEdazwR9RMQD5/qxpEs7B+/poY+xbrwvfUXxwj089qxfiodFDq2I\nkBR8CkAixHVttqtmLeWYOkGK21oZDfMPpTqnKMJYkrqWeS5GfaV5g0PVAC31\nJ30qUyyZzM9VLSQbvec1hVD0SNLbAycc2uMH1WG6GhqBw36bcutHYD9hWH8b\nqw94k/5696tvc0hmdeL+/P7Ix4EA3vfyDtC3U3MN2nxFCd/03nXNlSnoralC\nTGryakWkBRiOJKza7lH6mthRhL+nEtwXfhstDS/am+3YHCVZT2BzuOzCD6Wh\nxJLQG4O/rbJ25ePK/lrjr6c7IuUe/3rQ/9sHPCxHDMA9OChIRmbx5CThXXFy\nPf5S\r\n=FtGf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2IffBHUeeSjfrb328XuYTd8j/iPqaDt4jEH62xTFCGgIgfo3qkOzT6cQSYjNBJP3Ix8Yr349lRHd6PpOzD9+yR4E="}]},"maintainers":[{"name":"ianwalter","email":"public@iankwalter.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mercury-schema_1.1.1_1532033076122_0.042120433032860616"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-27T00:46:16.745Z","1.0.0":"2018-05-27T00:46:16.927Z","modified":"2022-04-04T14:50:25.499Z","1.1.0":"2018-06-13T12:26:26.076Z","1.1.1":"2018-07-19T20:44:36.176Z"},"maintainers":[{"name":"ianwalter","email":"public@iankwalter.com"}],"description":"An Express/Connect-compatible middleware for validation and serialization using ajv and fast-json-stringify","keywords":["express","connect","mercury","validation","serialization","ajv","fast-json-stringify"],"author":{"name":"Ian Walter","email":"public@iankwalter.com","url":"https://iankwalter.com"},"license":"ISC","readme":"# mercury-schema\n> An Express/Connect-compatible middleware for validation and serialization\n> using ajv and fast-json-stringify\n\n[![npm page][npm-image]][npm-url]\n[![Join the community on Spectrum][spectrum-image]][spectrum-url]\n\n## About\n\n`mercury-schema` is middleware you stick in front of your route handler to\nprovide 🔥 fast schema validation of the request body and/or automatic\nserialization of the handler's response data.\n\n## Installation\n\n```\nnpm install @appjumpstart/mercury-schema --save\n```\n\n## Usage\n\n**NOTE:** The example below assumes you're also using the\n[mercury-send](https://github.com/appjumpstart/mercury-send) middleware to\nstringify the response automatically when calling `res.send`.\n\nAdd `mercury-schema` as a route-level middleware before your route handler and\npass it a schema:\n\n```js\nconst { mercurySchema } = require('@appjumpstart/mercury-schema')\n\n// ...\n\napp.post('/contact', [\n  mercurySchema({\n    request: {\n      type: 'object',\n      properties: {\n        name: { type: 'string' },\n        email: { type: 'string', minLength: 5 },\n        message: { type: 'string' }\n      },\n      required: ['email', 'message']\n    },\n    response: {\n      type: 'object',\n      properties: {\n        message: { type: 'string' }\n      }\n    }\n  }),\n  function contactHandler (req, res, next) {\n    try {\n      if (req.valid) {\n        sendContactEmail(req.body)\n        res.send({ message: 'Your message has been sent' })\n        // Or if, for example, using express without using mercury-send:\n        // const body = res.stringify({ message: 'Your message has been sent' })\n        // res.type('json').end(body)\n      } else {\n        res.status(400).send(req.validation)\n      }\n    } catch (err) {\n      next(err)\n    }\n  }\n])\n```\n\n## Acknowledgement\n\n`mercury-schema` is completely modeled around the excellent validation and\nserialization feature within the [Fastify](https://fastify.io) framework.\n\n&nbsp;\n\n<a href=\"https://github.com/appjumpstart\">\n  <img\n    alt=\"AppJumpstart\"\n    src=\"https://appjumpstart.nyc3.digitaloceanspaces.com/assets/appjumpstart-transparent.png\"\n    height=\"50\">\n</a>\n\n[npm-image]: https://img.shields.io/npm/v/@appjumpstart/mercury-schema.svg\n[npm-url]: https://www.npmjs.com/package/@appjumpstart/mercury-schema\n[spectrum-image]: https://withspectrum.github.io/badge/badge.svg\n[spectrum-url]: https://spectrum.chat/appjumpstart/general\n","readmeFilename":"README.md","homepage":"https://github.com/appjumpstart/mercury-schema#readme","repository":{"type":"git","url":"git+ssh://git@github.com/appjumpstart/mercury-schema.git"},"bugs":{"url":"https://github.com/appjumpstart/mercury-schema/issues"}}