{"_id":"@giraphql/plugin-validation","_rev":"56-c4a100a69409b2272d318c3d79457f5d","name":"@giraphql/plugin-validation","dist-tags":{"latest":"2.16.0","preview":"0.0.0-preview-202172534216"},"versions":{"1.1.0-alpha.0":{"name":"@giraphql/plugin-validation","version":"1.1.0-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"@giraphql/core":"^0.20.3","graphql":">=15.1.0","zod":"^1.11.11"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"84a220922983a245ccc3b656555cc8474864ab62","_id":"@giraphql/plugin-validation@1.1.0-alpha.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-LvuFiCKatOgHEAGJM5RvW57Vp6/mbnpsRSiiZlahUkCXrVMYHET4PYjc5zCL17DzpO8dv/ep//c+b5vVtspPaA==","shasum":"722539538f778c8bddede8040c2c384c5a07f826","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-1.1.0-alpha.0.tgz","fileCount":25,"unpackedSize":275458,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc+XUCRA9TVsSAnZWagAA56kP/37hyaIyljJeR6DVDYv/\nzsnC38pKIvh8Z8q/psYxBmeyw2ROQwcKoRD1jlt9CYwS1sEy8KR8IVLYdKkt\nzEk8UMkIBbjofh0u0xu25tljoGEeoJjYpivD7ZT9d+DaMeeBZLHd8feQfCDJ\nrBPccyPnNbAAsZwtacjvEp+zh0Je9EvgIgHiKNlFteJKyq5Z/QRP09BZcbY3\nnUhAjxSzWQXhnf7bgBsY3fjpKacyX5n3jEU0LH51Kf9bb/6yl9JQoSvl9p0B\nan2XCuyCD++6r+pWuju2HhMaNvKfSc2I40m5rhTNweQE6NqkRpVCK/thqGz0\nOJC7MCmYeQm1IuIqkI+8yusiZMXqs89onexEiMiyJMGIDcFg437zR8zV8dP8\nMTkFWDaxnc73LTu8W0HEUSrz5He3dgin2x+jn1GenK6mkFGQq7RZMVgqLvUP\nTL0Prk44fXce1sFLqH/g7Ob5NeN3EkkM+ClRZs+oL7MQRM04KzmAeWm+Ivt0\nn4jVuO8WLunf0RMEDtb+vIUQrvCeDgBlrs184hVUbw3wfjfhOHz9c0oVGhA0\n5C7L6KLuAr5oO4qD/NPNRgai4GLd+4pzhFFKeRrIU1r9USh/cwvyykm6ZGi5\nN3weR5PMPCfyrX1DtNauHZQDvZNkC11HX1PuSXvRa9BZoKj7hzf6Er8SSugT\nZKLX\r\n=LJ1l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCEapDTa/HZJmeIdy/dStNZCn2uI9XoHbE9TPaGi6IyAiBFzwtlyRxsBu36EChAXDoCSdXbLeAMMHd6UnQNYpq2lA=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_1.1.0-alpha.0_1618208212074_0.01811537665794427"},"_hasShrinkwrap":false},"1.1.0":{"name":"@giraphql/plugin-validation","version":"1.1.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"@giraphql/core":"^0.20.3","graphql":">=15.1.0","zod":"^1.11.11"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"d6cc87d3aec1cd9cd486defd22bd2074e30487ef","_id":"@giraphql/plugin-validation@1.1.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-clD+AQrgL1nHwMTcCi6QwyhWBtXOTZnPBmGs4mbN4iRewmCxhUhrD1smJT+9aga4qxcMbTITwx8Wx8YS8zWm5w==","shasum":"82999b6d49648765602277efd8b0f4773158cd64","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-1.1.0.tgz","fileCount":26,"unpackedSize":289020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeOsFCRA9TVsSAnZWagAALtkP/jYOeXkUyh5Nl7lRLm4l\nznwJJDCS6ng1xcPeDvjkGNCWS4MSoUa4ucHYWBOTcRcazXYngkFK/a+3WBci\nNDldSngemzJTnkejjwFFSdPh1WVGNWh5z+3ApwYzqJCtKc7D/b3z3FiYBn10\nVB4AutwUcbqwSyzG/tRw8fAUUR+2FB5dzlFn2w69IyjAok/OirceX3Jj/NCd\n/wvXsKcqBgkMReCJ4bxFbXGodsox2RQ/y279D47ju8WybpnV9boEA/I2EyJs\n8JYUW2eZJI6ZgZ1ZTiIdKY9vkChDHzxlm7w9m6oNiwRjcbJvLq07vDgl4Wbq\nejF3+s+/uCw/8DLsSNXC5HdR5kGU7FL2ERvP0IgnUig72C0goZiHXvaLCyvI\nuT+FP50uehRgNXVK2EIVmQCBtRNTW28DqEvK4lVOrrSEiC80PiRglF7awQn6\neV0ok2t0Z3R0D3GW8RIN41Xo47SnMzNraOK+PM3gnoBvZtUAr8nS68aD7zGY\nVrp3s+44f40tiOW79axWT3tsz2JJduFkiTAyuKc+mi7UDb+nQitj8t//PYA3\nOADoEU4HVWLNXkOZig8U0qIVM4oX195IsO47nZwqY4ksNzZS9KTajUO/00RT\nblj9zYBkTcLfCJkBzx5ahH/qpqB8gcaGvbshitc7vh3p+8wDykEV9Eakk2FW\nzDgH\r\n=Dk6z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8BPM9IWYwJFXHF//64pC8c4zZSWAH0QBCTnqo2m0VGAiEArN1dlRD5XSflEA5YmMFCBBo09kDZ9GKOO51xoxltWXg="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_1.1.0_1618537221093_0.9783041865813031"},"_hasShrinkwrap":false},"1.2.0":{"name":"@giraphql/plugin-validation","version":"1.2.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"@giraphql/core":"^0.20.3","graphql":">=15.1.0","zod":"^1.11.11"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"c72c17477e1f700a389cbcedc5f19a453a150439","_id":"@giraphql/plugin-validation@1.2.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-t0DD0JxLErxdtDiX+Ks2C1O8eiZpFZiZpR9g04CQyyU5QY9t4AcY3AQoeidUbqqmuKJJwFaqxQNYYOzOADRytg==","shasum":"690860dd4b44a37fa10caeee92f21329c2361a1b","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-1.2.0.tgz","fileCount":31,"unpackedSize":296961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiJ/ICRA9TVsSAnZWagAAQi8P/RY6X+o9lZdssHUI6Xf2\nplaPC5bnPGmxu26r6hygOqVIRpxmjmH0bP6MvQdSpeYJDBAcywAzwvcuWxOi\nRzjlXS7fxUuIH9H4RGD9yQSvZJ5w6Cjy1JcH+H851F0E8H2vqBP1IpeVpFb6\nuM2gGUoyJ5k6c+qjWZ0AZCe5Mrdz3vM34tg+y8N3m3i4t48zLhVXL2436WUp\n/PbwWWQUtqJVFrdp0wZ+/23s55e6/PMyFeqY/nqmUrqtYo1DW7tokQIhmWpC\n8D9VR0Owk1IBBnXiv0g458PdGZTFdv7lt9lgxwS47SAgMwSvoYcdMP20bRiD\nbXCX6GWpkPDqDlrrJafaNkGcuFaGYK0jWu97Aq4VFNfia5jBv0+ltuMRRWGz\nbCZbHqbE8LeqZcZn32+6RIQILrhY9EWRN7m/8uDXGYI8TMdjR0x6DLsCbLMF\nxzLX/PV2YCREZhZplrp8udvAcndjDNZyNswtJXDzsSg7n1007VCQLOc/AcrL\ng04Hf7NignW5C57n3y8W0drM+OQw7JSfy+zhlCuwts59+atPx0MX/YnMegxO\nhgmc0cPyHzcZG8pXqsMTY4oOxS0VpSgwfX17+7nf03G+dr9WyVqpGvLUAOSM\neBz2QC7vm/p0S/pd/C4kNT7OLtkuXguYW4UVl7fTIU+sPFLuZJr8KCnwBsKi\ndGlt\r\n=OolS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDb3bfGiLYnuKZeSmGyNaF06DFNxptkFVhnVXOjfsyu+gIhANITmYwwNuThRZ/z8iHcj7vm1B/vnxjE7Kky/+eQ6izu"}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_1.2.0_1619566536431_0.83938332012927"},"_hasShrinkwrap":false},"1.3.0":{"name":"@giraphql/plugin-validation","version":"1.3.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"9d79257445c7a5852fa59bd957c639b5b1ba1075","_id":"@giraphql/plugin-validation@1.3.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-vL58lolL9/impbGmeRpW8b5fYdBEvhm1hmyDKm6/qeWW9A5XHjm5d0lXNEMsSmjNIH13ELhdYhrp2n3+WJpdRQ==","shasum":"0eb44abe11dd5b4f3b395d04e59e97008d908b77","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-1.3.0.tgz","fileCount":31,"unpackedSize":298180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjgLqCRA9TVsSAnZWagAA7HEP/j8Z7qlRM4FdtO0F5iCW\n3W6qmxWTYZ2/FNg1++tBlnC7RQznxwO0M/mGWMo0qyVR+YcvxYhLZ3NOGS2b\nEQGxutGnCMcTbcvz1RTtvap+5oVw8V6/MYw5xovYp6MnNHcYkCBtyURrXjQW\n7gvNsl1ALhUG1ajmaMK82pktr6fWyBkdpvzcg7lFILWHgMyNU8FSktrPLoul\nivmmlAKOSkV2k9xLVtw36ReYGN9/QhIAS07Nljw2FeUthHeizZOzgseFCYlg\n/HVTP2ezypQWgySLfnSLLiY4YNyYxn3hf/2HDTZN5Amhgzie3CYRH1RuxzHe\nee1+OjeVbpdgZiS0emjAvpvcR0/n8pnpkn/2xvnrhAEjYr+9hd9V7jFYdMaP\n1tSkRByeLcm8rICcDj3RLuoGdJ2ot/C8w9h7JTpJ2ujcVuf/Sv9iIURGcaf8\nznewTn30GWyPWzH1ouh5IhaHF604FnsssdaCVdT4m9FUw4x4+nQQ/W+TxKjZ\njvqokb15byU9AN2haqPM/MDj7xqVortaUIqgenlZiqDvdpDGgvfAu1IUcQvM\nJi3MOAdWVdkhvrM4EfqZfb1NFWbuoBIhjd5bNP1XKGhqD22x/blxe5us3YUF\n1s0CTfmbzZmh8FcDRMUy8cUpkPwTYgcvoS+59UBDHk7dVfBs7ojaZ8Vwptzp\ne6r7\r\n=DZn3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEKJyQ/7ueZuX/+MKjFvM27Xft2HFhJ8lDkOM9HCZAZvAiBNdtQR+InkKWstCpA+sxc7og3zuqEJBNfSmYCCSYbqRw=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_1.3.0_1619919593621_0.562085905803873"},"_hasShrinkwrap":false},"1.3.1":{"name":"@giraphql/plugin-validation","version":"1.3.1","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"52a33fae5357a62e59c8ed18dba4129ed8e59074","_id":"@giraphql/plugin-validation@1.3.1","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-WhgW5XpZTiImNWv+pXQ4L2nI/zURxhQhOiuwkOcH9VSC9I49d71MJjtAHrtPRYdvQ1TSzg3HXM+E8l23wfg0cg==","shasum":"5a5a139be52333d7f520b51f87d1de5f5b617f20","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-1.3.1.tgz","fileCount":31,"unpackedSize":298133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjhr+CRA9TVsSAnZWagAAN/cQAJ0MXccjCWNdYpuMLVCk\n+ZVanbae4qmnlDVnQd+y4QRCNkJC5HZKq6BsMecgYb5B5fChG7nJ52H324kL\nWXQzm43lhw5V5FgXLMxRly7Y9pgEgtkk5YgQ0WeKcZDgp3qu/5e2jXQauURn\nmiIkvYIcmeMa6Sv2JTg1XIsvGEN6mohEbWV/E9O19aQmE705SgzLBiaWX2Qn\n7VjSD6mR64j4Hp/DBoFZqSsL9uq3EKdLYztUTxBW9O4Fm4rcg3jbnfqVcIQc\ntjy1K980ucBE3a3a2BtXXggdoOD7qdqYkOXyMvLkeemAmaW0e2lV+oOoBa/K\nJMLdVPTmMpDQlY/G6B4IB43w0964ArowymIB5GT7QQvKyWEZFs1hm+9wZ56u\njcz76wb4dQiWlxpLIfx+7RRwyNiXbHMn2zRnxHEUwGXDdRIL19Bd/H03NFQk\n17SWaWFzxH1QoKsuN3uUznwAi+c/51yVBL1+e4TuT8lfPUemCtBNDIH7fe+o\nOReoArjjxKkSbD3vvCxCaErCVL8Y+2xy5WiK+epnHY2A+agVbpsVEnPPv/nT\nFoDsIugFvgf2vyGnqQ68XvQowHxJevIEcBqyaiAYcWDLQOnxS0MDJvL/zeQn\nGbUGnmhG3wFvXshT5HQCLuJe5WYc68cL1KAdNj55ATpwam00BOmKbjgY35oo\nWVCs\r\n=SxeI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1tcKKqAUVpA4ilkZMOo+GJCSzN9UnR3827PjiCBryqAIgA6vc8rCODJK/a5jz9G+4ny5aB2IUmNX6rVQWItaG1Fw="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_1.3.1_1619925758197_0.004857883966464138"},"_hasShrinkwrap":false},"2.0.0":{"name":"@giraphql/plugin-validation","version":"2.0.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"9af4ad3eddb13e94bd60a5efd8754fe678abf639","_id":"@giraphql/plugin-validation@2.0.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-kABeJ+XDgdxAEqfLzAB2XFb6So/RPL9yYciSfhbZ6aiVj4zkO6fJh4GD5oCwNz3U8gtkpXucyUMzTOQi9bBlnQ==","shasum":"c3b6eec0fd0545c5fec0cddd46a446b466dfc246","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.0.0.tgz","fileCount":31,"unpackedSize":302356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjidHCRA9TVsSAnZWagAAi0kP/05o9krUukIywEgoBheT\nE4liYA6lUas93hjhHcszwDsd2sJD2zSrJzjYUN6i69zMM1yJdskv4sKlpRZB\n756uYVEcWA20qzj4rWggdK8ZMu5M0yTIaR3wHg9/gFabPJR0nHoErEi6/MlR\nmmhq4igY+iVg4BqviowQLpdGwI/K4v/+38ctHgTe7NQSXH/bSlCkhkos3gus\nEdyPjuRoOXH4Bj6TUebD38Ohy94ULTkW/5N+TQer+4aLaFUUTdBENUU9llqe\n3DtbG7aRJ++1/LZaVDF8mnlF+f5c62WejZbCXAEcIcQ0U1L274/B+298TMSg\nsJZxSyxoD7LYpHTjXxMtbNbKy6RThJDWk7aBoG8d5bd9xCLX301t2h2Ss2Gl\nnfVTU4nuWrRaoFSnDDdVmGFWctj16hFzPBIn+qvaiAAAzC9rzvR2Py+Vtn+Y\nK1h3cM1xrMJQhjDZlHiwj6Q7yiUMOFmyCPOODmGDRouM2d3pRlXNLUMeQ8ec\nBF0Wxlaq8nb+K38zc8wNmW3+xqGzG0FF2R29vL3F8jwyIWApBFVUh1x4HPzK\nybXGPkj/dyGM3SL9+QkbA5hnO1GIMFYV3dCSdUouL5y6/8kyKCBPpycGM2S3\nPHpFYfiXY+Pv8gm6Nz1cBRo9vdC6nTN9SHaOIxW74zgUUU4CR8WFz4iRrDN2\nwgqK\r\n=wVT2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEcC6xfN5yeI3QtGTc+gcYAzNj69XPZfDvHFpUP8nLTQIhALyIC6AKakqgANDfQ8/iWaVowvuboeu3zwXgHiVkylKv"}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.0.0_1619928903488_0.133215509292824"},"_hasShrinkwrap":false},"2.1.0-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.1.0-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"c71c98c6a2e17142916ea05d52253e2c7c472062","_id":"@giraphql/plugin-validation@2.1.0-alpha.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-Q/sva12LS8kPvOwZlLMHGR2p8rZgBUGyrpz/iqiH85YVzPGUEIq9aQTlnrKqMKe0gfcGTxcGNoFVkuD7SewVSw==","shasum":"d902cbb14d5723f5f2f8c8da1009198aaea00094","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.1.0-alpha.0.tgz","fileCount":14,"unpackedSize":31877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkySLCRA9TVsSAnZWagAAj8cP/jQLhe05vW9NktZul0GL\n0/SpBRL+vRCqjr1GHKYiDHwRunmLGqEqBgvFZexEOylcoHow4tH+Un28QAt+\nrIrjiOKGUAo3su1XgyfIwh7YuH5BvUrpbx0EDwphcgAMXXtYzi/Icbfh8qjR\nCQIzJL582utvw+Sjm5VvUOfHTdO6L9PRqycp/Y+m6oEEkJpx9nQmFmTR7O/F\nA1PxnwaUFB42agdNSIVo1JH1jhMRpFceX2lpq8sEEzUrCT8L2fockxc194EK\n9r4Lx5+Jg1R7MbSJiUTSUIaXFOf7EJrln7wMODuZZIOlSMSyOJ487WPBKups\n6kV0Z3Lqyi79lWJN80pUqXb0KtbyNgqOtRcL88EeU11S1IeGC/Vdv51DX8pC\n0cJTq+3Tn1KsrJJbo9FAnBIiWI4rhxh4GAYYixZgwuTlh+6RuZNdL8PmtaYS\ngcjjS2gk5vbr2gXGjmeniidqJXgJ02nrLa9tjRjk83WmE0sBBBJdKknwG3tw\nLhJQc9q2fZhyFaTaSqQRxirYx8M/7Oq1pG2FwgSDY3uxNP9QHBBwcto2q5X6\ngh1EP0JKk/XjFquhFQ1scIvD8IchxNJ2C+GH4dwWPJVIpsFljeY+T5tOT6Lk\niC5OFEbrSASuzQyfaQmP1tpgGENJc0KfuFb86wYuim/m3sllD/BjURNqhlQj\nXQKF\r\n=ECxn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkYgiLIWphf3JwHDrnmcSCKuHU2p2Q3HAKWgiwVqopoAiAMCSYitcHA57QGf5Teyai1xGQtWNdhnY5VhkWyPD9JkA=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.1.0-alpha.0_1620255882649_0.6906455823866997"},"_hasShrinkwrap":false},"2.2.0-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.2.0-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"acde9b0298596958f6955618e0e0f5d0fb790162","_id":"@giraphql/plugin-validation@2.2.0-alpha.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-YhxqZQqHL9/r319Uxk9G5UCFTdJchF2pfVd0YG3I2YgMoKtIDZywG8My6kQB6qttC1yW51cjb65OFvn0m0p8WA==","shasum":"8debe17927de712809f830686ae8ed8444f61a60","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.2.0-alpha.0.tgz","fileCount":31,"unpackedSize":302862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglxonCRA9TVsSAnZWagAAcc0P+wVcX7bT2OCOGjxZrz18\nu2CyKh3LwoByU6lguy/Al6ooJDn8KaMv+N91Y8EQONKtbwbzU4rKN8LjFJCd\nazruX13AdZzH7amJIjP/SUX9ADdNTLupVadJNBfr20GRkN5DRu/6LM/DFbYk\nXJXKs41nT4++Wj4uWMEOxVUK3Oj1rlLltO0lWoeISf1CwQngubu25MxvxrAB\nKNWfz6Ee4qpIEms/2rFzjUOav57jM6aHjgA5Y9lnS0NvMcC9nDU0MOMaa8EM\n/QtOgkYxqdlIvQZZ/rineNXIlr9uPimIt7OmDMBUzZWXKT251ly9HqSQyDiO\nrVIYlQYweGKj5bgOATVJEmagLJj+0p09b4UH4QJdlg9nbpGz+TaI2p9FkAPk\nlJwSFAK70Aap7443+rle2uewVbPAAjWcrtK9/s33KpwqgpIgYvVtVnhFRm12\njpSwsCED0PByD+XlIUmyjpGg5+QrhWiK2OSFGNwqOFaGXG9xt4dVcTn4BRFD\nTaz72TBExCT79pxn+yxU3oSx/KrCTx3YGv1Yx9JsGWnmGT3hPwoAMncsySQa\npCW0hA/UvBB0cWSdQP046axIJS7h5rIg4DfUHSLggjPU758wE+RQRejsfYXt\nIR5dZx2MUkIkEN100eH6W3elwyCeaLTzFKQs9jQ/Tw2fLvUocB7Fad4LsBiJ\n7Yy3\r\n=/h30\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICu4iKkbuZhqILs+GjdRdvCjCm6q89tJ6Tk282P9Io7dAiANaUbqXuIzZ40u+5ewS1L+oJbA69x11MhSOnHUS0J2fw=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.2.0-alpha.0_1620515366765_0.3120856763029587"},"_hasShrinkwrap":false},"2.2.0":{"name":"@giraphql/plugin-validation","version":"2.2.0","description":"A GiraphQL plugin for adding argument validation","main":"lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"374e3a0f24845832d68a8ca1097d2928ab7a30c5","_id":"@giraphql/plugin-validation@2.2.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-tgsvcTqi8Zw9vYoJYRVUN3kUKw3Xhsbky+L6SX4uwyhz8kRBQKDrTpVYmSvCM2voEVN1G4cSP0TLOjQyLj1/VQ==","shasum":"60ea5f882ebfee7ca098353d735e3b9067642913","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.2.0.tgz","fileCount":31,"unpackedSize":311745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglyf+CRA9TVsSAnZWagAAZBMP/RAGMG955ZRw3pjrkarZ\nLbTM18V4+nyozJybsUoaiGV1cYB32g+ViVEXN89QNM17WuFgApZFvB7ttAE/\nfPMfaC2EBun6dWuDgmL3gRTMAJRuLypyIOOSm+OamUX83OobjaGLJGbHY3c6\nCfzULiXUGTF08CUW9MiGCZE+uMGy8GWIYDniITynYMpAy5BFBJAIcS6xbmw3\nvG+xtTxoKeU2RodfYZVLOPs9b6aPEOcSK+dVzh4GKxxAeqh1Iq4p7kMzcXU/\nViCS86kIpNhCWeoXc8CuZQXMRK3Jnfo1fHH/S+67oka/yzqDddWomlM2TBhU\nkuxZxh9PcEAayBLJDoUTluh2BGCTCE0T1NWtijVYt5mqMwKgYumHNpxGL8oO\nkrwZ/rbFEyqhcvC8PbgEHzh8kt/dpaaUo7I0XRg8WtY2WssgSQxbIcvBE5Lu\nHh8IuiuxZHxonRBMyC7tXtmwr+1GOAvd2F9I9HCbM0k0s78/08tHtFiM9jub\ndogwhs7yZUpJY5vev4890h/+pq8jokRQ2VCe9IhDNBYcZnJK6v049mrOMuNM\n3KlzaXA7bfcEFQyMKW+L6gzi+B9bExPK9vhlww9BCVRGjB2kNIU6AnEQO7Ps\n2hH0hKw7oFludLuFOEZmTm4Qi4T9YWAd4K22gzVsrbpnqr6WKcKFF3Adnqme\npht2\r\n=RBeG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDPI6GHdoT2eU/3FX9VH2clVcXsEASbHkx6J3c8idV1ewIfCzStP+iO+G9cBXHxRsWZSmQVb64PEf0aqLtk4kduLw=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.2.0_1620518910026_0.11315163364837844"},"_hasShrinkwrap":false},"2.3.0":{"name":"@giraphql/plugin-validation","version":"2.3.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"eee407d1ce2277f8aeabdab91972d9aaa31e70d6","_id":"@giraphql/plugin-validation@2.3.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-ezXH6aQ9jsEBFWnetX/HYsEbjHWMbhzuEnRWftRPSCtGi1ehRwidRB+fNFznIJVW3X/kCrqzSZxA2+RpoqB1TQ==","shasum":"aebe8f28fbe4514ce1738e922a4980534e3f4dee","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.3.0.tgz","fileCount":31,"unpackedSize":311988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmXUHCRA9TVsSAnZWagAALK0P/RyvfOAWwmwu9Dx/LDjW\nG/SMkpxQzkrRwxCLF+gLxznfNek45rPJQ2OfW+JR3ZhDvY/5bipksowUg7FB\noK8rNestNECCCOkOqN/7J8MZYL93apsrtA+oMKWt2Y9jjlsGiQF3MBa/q2lW\nXb6epHDuXiEv/jM0wtb04haCeLyuzcQZIFlCJ7/pkNTEovqIddJ25dqrO77S\noMq4jZN4YrgrsQme7s1biIJEXTzQ13a2rNpJA/6rFdzWqM/GBABbj+k8ura9\nOQ385bGquMgO4buR0aaBIZZqo2Q7h0dHyooX+7aIb0eddsz8HysLr+JFrJ7N\nfvjvmpiLLECw9JsG9sx2vuqCo7YjZq9j1IHflMNYbF80aArr6mepNZJE6JTX\nFToLiv6I3NB88bHhsy3wC1qNs+qmuv1PUErozdTq4/6U0MBKLeMXwZKKdSo9\nfyOJ4BvUNbHLUNB5D/UIKwO3iKVPveUhNUi1iv0z0EjYWwoRTgRSA0MxjAXJ\nuZ9WsX0Z3fRvPvAajgJc5rwvMGwaXQGzLJjuoQEO8lnv6mEuZIC1Al656brT\nzd9bMPoXo6UsLtxZJCP/lFCrYoJjMCvI0lc7S6VssWxyetJkqXyzvOf58Z+T\n0EEQZuudBfcXbd8vwUhyOXfBEBn3WvRFuPcLNoy8BCL9hIEY1kvyVdiqqpPP\nA4e7\r\n=xObz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzh4YQq3+SD9KBDruJ+S4G1E5wCEJEV+4Y8BG11tL7uQIgFPSgvz6QmEiDoZM2yW/J2YmWGI0vjyEbOTQ+rVjDY9s="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.3.0_1620669702598_0.798624690539437"},"_hasShrinkwrap":false},"2.3.1":{"name":"@giraphql/plugin-validation","version":"2.3.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"3ba24d9c3fc96c7ea54f3a967019b638519b4f8a","_id":"@giraphql/plugin-validation@2.3.1","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-itIjM0AiNeBWiWNsd5ZPtKea6MnEnHfSVez+V3jwVcbzvm0LSai7r9Z71w6GvyIou1eb/0fvqTjaaBkqKCaJyg==","shasum":"a7f8a9eba09cf0d3874b6201f1f4fdf6f0d52d94","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.3.1.tgz","fileCount":31,"unpackedSize":312208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmag4CRA9TVsSAnZWagAAqLAP/3nZQZD9k1VPQHbFUN8W\nBvORv2tBSUUhJQ4k8/tk8WpN4OR3MGOapNqd8la/M0nb4Wg7ODWK3nHZwnm0\nKDlIAvo6k0eZGiRSWUZ7IrS+mNEPjwWoQS8aB/aqmllA1IKji/KjEt6m+h4R\n4o6kHIKdG0RY3vm/86K1COfSFalRyB9FEbNIVm3vfNXSAWJckJc1P1bFn6JW\n4Zu8sD2O6edd0b/hGUnLvD+snpO3jHX/vKet0Y+PRx97S5AdfPldmCwSalBZ\nsN94qpXjJuJ80CppB/mL+R+VJcfLi4z8JraPgYNeNVHMAMIZIAUdsP4QAy8a\nOlhw7z1OAn5bCf4+5XUf7yOOaGbDI9r24oDR+fF+TxZWZ8ZfkuWbnUkUKf7V\nMycAt9nOmRKqJg+oJSDHFUDqRKbEtGzNgld1GMW4rCLcpMhKsHnyVdZNg0FD\nVqqcWP8AENuV3Mxl8c+jArdstLns4ZNk7c4FDnGFuw5888IQvq/Y/ySb37Q3\n1KUfe7tN6jCREqXyGif5reAn8H3Z/KHEjgjt2FKKjsus5GERcRqp1JbU/RUY\nHqRbfGmrM+tSHaur5Ld4nwJxAL+bR9rRtUUqfg8rzqbM2PbKbVtEa5banq66\nuh0jKLN60uvE+j4/bMYPu6WcPkpvY9DRis9jaZzVvT22szoRngwuxzFfYD7a\nXlsq\r\n=RY+A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS9Fc1L+IEbHPXoWvpw3d8uWjZSPAbR1zlKF0h2F8AhwIhAIL81aCSF/I1N9JNAQ5Qt5Pdo3Zs/2c2uXwq/11qrbQ+"}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.3.1_1620682808046_0.8767206535949335"},"_hasShrinkwrap":false},"2.3.2":{"name":"@giraphql/plugin-validation","version":"2.3.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"51dd6c62d6bf639e105709bb0ab3cbc0a3f149df","_id":"@giraphql/plugin-validation@2.3.2","_nodeVersion":"14.15.5","_npmVersion":"lerna/4.0.0/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-BwH7cCFRJ2u3mqObgxBHsyDp4l+VSL42/L3S0lks1jKpsYyYezAZ9YIOCbTWChe5s16dtQmPHTYswlCLiRdD2g==","shasum":"c7c6a4326e17a423137b2d654b0f54c2a46baf43","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.3.2.tgz","fileCount":47,"unpackedSize":350652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmannCRA9TVsSAnZWagAA/JwP/3TcD5R2gaKITvvJcqBl\n8KmeUsm6gLHKKAE9focj0KO4nIrQ0ev2vNRwZKM7HSQK4P3PGNyQALN64X8Z\nT2dySCiRjwY2GadtndliUTl+GdiEOq4FKYYlgAy6wcNJ07VP/v2zKXxJYqvs\n7aYSr/Esng7IsrWi7ExXdK3g3d5P4Yxh1IInR27TkK1xDaRVM9jH13oa29+s\nrNgRt1/sG/FRt557xlThDaFaWLzoqcmVQemi344mvvkBEe+BA/8k2LeZqcH0\nBGt7FIsc/O4ARsZFGPQGnU5kWnbPDHdJk8gz6OJUMEQNUQ/i7/tqi4WpLxnt\nYXi+pwIho1PGq6c9jONA6k8spDvJawofJXKUUH59HU7c3KaCBqumHOdHxupg\nTgnK/CQ4dS/Cl6JFbLqlWUAbtkB98IIWti933qV4MUk7HzFP8ZAsFoZrvF+7\nBur17RYbsjwlwoNY06V+jCJPgAot8OBezGeE9dTdrOSqhZz/732/qyub4hDF\nP8d8rBi55O818wbVyu3bxZxyaFlGZ3b3ltEQCq4YhUnyHf9XAplLPxWWk0sc\nqdEHU9ZmYujPnA+g4PpV+ggrZNwg56wFLoM31OY+SG1wiIIxeJpdVipQXbHv\nbk9TuNpV/cXoRYzvSjMDTcE4Si+DQSQ0Ynjbq0Aa+Cxc5+h4h53cMxl9d5Fl\nbv9c\r\n=YaAH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDaxO3UaYGzwl8XOGNzKSdGCoNoTp8bA8AT+kWIFzRoDAiEA+fisL1Tiy3ydnnUriBbJ4OI3fH7tas+sFmGrK48uJLk="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.3.2_1620683238636_0.030240834886782197"},"_hasShrinkwrap":false},"2.3.3":{"name":"@giraphql/plugin-validation","version":"2.3.3","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"2.4.0","apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"_id":"@giraphql/plugin-validation@2.3.3","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-4z1EwQ0kOb17cHBgiEarwffq9+daWx4gG55i77Lb0gW2UCdZN8tktxcrVnKe+FoN1kLbC7/ZtdZ4lw70VZp42g==","shasum":"3d98a87f793eef27982a50f3a7fdf1368abafb22","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.3.3.tgz","fileCount":47,"unpackedSize":350863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnF+TCRA9TVsSAnZWagAA6fYP/23EZhq06hKZU3o2cUar\nSQZIIFggbIxXv3hwbYPXNX9YXBaYeHpeCxCJ3ZraKTa1VxR7FiauU28k0ig8\nMyufgCQ+Wl1zrKWdD5aQ34N/hr5bmMCto7xuInMPdUYGrQ9fx0rhLsWHSbFc\nFOel4Ka95NPL0vA8hvaRikmq/y7hj0a31orlmrPmdIqy/JHsynbR+SDAX+k1\nk8VBKBICclMnUfjpOnSFL/GWx0b06NiijYs/7lVeLsboOttL0JC5NeNJM1fd\nRAWraze+6EkslYfpQU9hktiPEOL+VBrxuHeQPJ6UboM61aNa+VqXD+RUNc44\nKVAKEni9bn53WPBMvXCyDHed5xmyO0IU+bGKbqjhDJjzZJQ1HbxWvNL7rar8\ngq1cqLZPG3i2PRdGqtzCm5HZXOK/bUp8mRFulcJ6uYlphfdOhTqv1N1prGOe\nCYqLpKKxRQeJIg+s30J/I8nWdXWo3TXT9S+aiv1idfiJedQXUWkMJn7j38uK\noxXYyksc99P6P3utrhvI8sKIbtLEyf8QXP+NPaMu00FXXYYkEH3/SKuRM0Xv\naYTkRx1FRni9VSkRpLTIpJ8SwJX9f/PPf4+u59BWQ1ehi4B4guhVCh9hrxRk\nXxrQoWTIGeLFaohl1q/9eS3m2fPG6uM236Q/YnYDPglMpoLlJahg+/VFPVE7\nBJIV\r\n=6MU+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChvPj6cF3/8xB3hCMckRHbeaM2lloBx1eF2ZC6Eq+yKwIga5g1pBeHXgBe/8KH2jj67sX+c3cs3nRCX0cfAJaUL7o="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.3.3_1620860818466_0.7802240789937209"},"_hasShrinkwrap":false},"2.3.4":{"name":"@giraphql/plugin-validation","version":"2.3.4","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.22.2","graphql-tag":"^2.11.0","zod":"^1.11.13"},"gitHead":"e4d683db03b2e9430487a6ff332884e1e6d2fd2b","_id":"@giraphql/plugin-validation@2.3.4","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-mMKVTXpWzkrlleHVWIOSL1MOshDtdmwE/dIKrnUEsmnF1DyuwRnZkcplY45Qj4Nnj77npQMMQbo3Esl3ua8X4g==","shasum":"c4890d8309f97821a89e03edae6a4bb7d0a8bea2","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.3.4.tgz","fileCount":47,"unpackedSize":351255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnH7DCRA9TVsSAnZWagAAzcIP/24hsydg3ahwLEp6CJxg\nQPsCaMbzWpv+/5R3LJbfDK/wYWAcpIEzKEZOIQteIN1+mkOSPMu7yMH+YFJ7\nKhkQXrvOiM5MY9yaWoghtFuYNRNu0pProkONFJjAk6KIu/e2UsCXB68EtfQY\nsJ8/HkIa4z8zd53zn/uGXPXsXAe4nWKK3LsTOnp3vMSqBzizEwjiWq62rmVK\nAx0llx9XziULUqUI60BgW4BW7kCYanMPOETSLA2Yr4sUWJpirkcxhiuG2SOc\neNxMQMFcTc90bm7FdWI5OwqU2dk4JKodWTsDWN1BSlPdTideS2yd27LeMxyV\nC6Ec2XdCdZJAnAVecbpvgpYW69m5teEfLgQ1oe7bILZ/qOKCDT+PWcwpbzKk\ntSjyWlS0mdRcMgJoRsc8y4O379qtydK2tAMz3+qVw/I/AjGw/Uzx+yhBw1wB\nCL+2iPaSX+faAFGppWg+mhIEBnRN5FUWVj+BqQsqyHcbnnXzyoewVc/0v/H7\najNslRpzge3Ue9agAk1C/i4Nvpr6Vi1lEZEkazRhgKMGR2d+obyBBsrwp1+H\nqIkJO+gHD9nTMvpXXCf7FLIE23JFk8p6ew1ZX490oyOxhsCDVMkCmsL5DE3c\nDsuxgmfFKukcQl0YK6zVX/nsKmlbt4bIcbg8/pwbmD97zCh+2tx1AhdHBEO+\nKtQ3\r\n=UBkC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEblFQbVBWQw43wjijawao1qBegnKEfpoIbTAB20aPknAiANWGQGUkL+3bN4Pdye5o/Bddcjl8b00hkWBLQqKrcHEA=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.3.4_1620868802989_0.5399029486756"},"_hasShrinkwrap":false},"2.4.0":{"name":"@giraphql/plugin-validation","version":"2.4.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.25.0","graphql-tag":"^2.11.0","zod":"^3.1.0"},"gitHead":"3a064a83c75af2fac8d499356fda26dfe6a9fd20","_id":"@giraphql/plugin-validation@2.4.0","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-7dxbqY6HuCkOswpAgCm3FnC59aB5DvYVnQjPXIkTI8Pnjp0bNvsWSCvBkJIlfA9jebRZ1LCSURr42xPrPmioHg==","shasum":"da3751b8ef1df70e2d88423692262562bab8bb53","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.4.0.tgz","fileCount":47,"unpackedSize":334050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgww9CCRA9TVsSAnZWagAA50QP/0L7yxCSu24c1+3X3RZ2\nGp2ojG6lXOintfRnEZE2wwi+Fv3Vh7M5Nl9eQ5zp0v9MkN+n14HzplzlKNUC\n1zIqmtbF9RV8ovOL6pvE28SdIqtk5WIo6FWlnwjYkDpdRyrkw8L7YAktcUhL\n7DAOt+yBzkYGfEMhFsQ/wgSZ1RWQeyyE3QcIZu92uAqdHDUr8eR1V/PFrrYs\nGUVORvsTrqzMKVjeoVAPEaj3mGfVhFXMVOIghzUKA49aM5W6U11bnWWrKPgU\nKd2czouNSTVdWO5WfgibXPukIhvVSfSE8D0gETzaebGRwtrhSHZqWWsR5rXK\nJWdf0QdycbJ9MudGQfzQxw75+ya0HNShdsW3LC+aurcWHpbwz4AcyZdKDaU9\nz3H3GqQ7+XL6wIIqDRkmy6xwEYZQdOoRqe2sezU+lHXYk2OFrT6VDeT1MB44\nvrrworpWDIRhG5WQq8pyh4wknUYLX38YjmIClLjBTDYmGCjcfJOmfHxvysZX\n3FU/dF1VmsTw9kj5A0XhGTC1HgAeIKFUBDqWHrLHhuINhudyHG0CHqOSzPLb\nuebbr+jP4KIql5kZ52JVF/wJtU4kSfEokD2Hin5l4SLPLTIYp26yCTcq9Imh\nFIccOcGgIdCd4Kufxo9jb0rR4oaBxRWBdYXgvvAEmhM19zC5J6Zq9HDcjqF/\n+Fwq\r\n=7Yhi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAn0V2QAcZv8M4RhlajsfT58DSWDTQULorfF/k0QGfNaAiBlstHiymDFky0QcpkuaGaCBx0pk/j7f1fWmMPH6ngojA=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.4.0_1623396161914_0.19647898627009108"},"_hasShrinkwrap":false},"2.5.0-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.5.0-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.2.0"},"gitHead":"b93f5e4f5541062c8edde4b82852af5e54f91e16","_id":"@giraphql/plugin-validation@2.5.0-alpha.0","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-zafNJuy2izAiWHypm4AqbgIr+8vDCB0kVqIWIuOWhcG70G1ah9J0AhIgZNGI8dhiCXYQS2PueZXD/Ot+JoxHgg==","shasum":"b1d3a752842bd3a62b202f17cb8338449b740070","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.5.0-alpha.0.tgz","fileCount":47,"unpackedSize":334671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2SIhCRA9TVsSAnZWagAAqVYP/j4mDKAvEs+Ujh/XdK+d\neBkO8jXNVwlf7HsXtR8Ie90AzLws5Pyqn7h+GiIO3d3SwsTr7JC6v6iunN47\nzMi6uQeElDY7MvZtL8mUCL7AR6DpaT5JL4mmFPBrS5kPU3iTqbTXDy1zMLLf\nfoq++VGOOpYpBS2bXLQUoKabM3U+7TRMaAiox4t448eMpM1pIY8nkYQxWdn/\nXS8spRKpOcLeIKRJ5lUlC+WFyG+geXPeNJmWSBh11IeP4NdsAYPPxjnDWHY+\n+GEXCHTSwo7COdLG4PkLtQfjIyu3Oyc5lAGJcz4u17wVNXC0H4d4tgkXbxIV\nLfTq0czAJk1dSc0kkkEiJw9LGJwfUVbR0uIIfQZdO9MwOf/+yzj/1lytAe9j\na4DsCfSpiEoYJZBsp8Ktn/RpkolpRZ2tVbqnVbhnWHigKPOBNgSSiBH3lxyz\nWaVJdKGwBtVAyP9spVjf4SeClOTQmWRBb5K0nQ3MkRI6sN647o/E20gW90B/\neecDu6YefS5wla16jz3uEpVmmb1+BsDE94BmTghP9maj8xzfNuIFnv6qVeOf\nvGP1D07y6oT/AQjkDimR38pNTXvNmix9jh8CWaBjCfFaRTpW6IMKBSLYLw79\nrlFtdpb5aeQaXMZJ25lA8Ez2rrz7kG2v2YAeaXNCLfAHNn/Vu4zPP1kBY4ua\nhOgm\r\n=kXT1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuVqCOO71Iv0VHfxEFtTcg/wcgq3AYjMMsM8mnu77eMAIhAMVi9XezeoTq5ecf9709N2jXFLm2CF0Rxrka0Uk1toX/"}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.5.0-alpha.0_1624842784888_0.7689961217337828"},"_hasShrinkwrap":false},"2.5.0":{"name":"@giraphql/plugin-validation","version":"2.5.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.2.0"},"gitHead":"2b03d2b65225d9c6662e41aa859729343ea24c78","_id":"@giraphql/plugin-validation@2.5.0","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-RlRmWRkY0+EPEquhrZUogUejmwiQNRPOkYTjvdP9hJyoSRZ1PvUs+gFYw2eFSYU+IFcpVlf4pu1V9OFOmY0l/w==","shasum":"283f85e616781081d1435a8188c8670221cc5eba","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.5.0.tgz","fileCount":47,"unpackedSize":334760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2hTXCRA9TVsSAnZWagAA3F0QAJeJS280l41nUeTDxGdR\n1TEHskBDHNZsL8cnP/RwqnXHGLo8txnN8s7F91N482s9ySwMsY+J0jsiN4L3\ngX+gJZXr+rcuQHuxoRgcvuMd82w+x1VtIqxQStwzyNhNI1h2k4dj/YcmIfOv\nBFT+uwt5UkKdURHe8aG3AxFv1lgWcwfGylCXy+IlLV1hnIVgndZDPXLgQ7Fm\n+ZEb9+XmWJIAfsbuYSiG8C1WD7mg9y8mX183MWS7sriqgtN9ks5Xv1OxQhwR\n4iSHRx2M0+AXFXl9L7CZ0lq9iSTLw+ejXjFWivD5EZuK2BnflY1Btxc1RD61\nu+9szEk2ba3Y7YhY064iDnVRpPUnuAqf5Ig805bmX0/U7lnKWXrlELJrkING\nc4mFUbX4XHVjivR5JSCP8b/CSg6edIFjzVi26zfBZLcEnb8jv0ulJzTFzMwm\nMkGtDINF6weEtpgS2q2AZGaJCvhE2kBR1sgyCWZ7u6jrTydc7qeUVj1kFpw+\nHLnZ6WfFZR3A5PV2h9cJ8Ltg6yX22osqyYOC1nd1dW6ynyh/CXGOTBjJGKXD\nJRAy/mxV/ipEcpxBrb+MwxN10wubkUMFbLF5y8O2/VwSae+qdZROLCg3JU7v\nT24KsDnGypNSa/NtDZgLZM6hgdReUGQfdEvH6Bs+I4SWMdX9J8xOkppF3UB0\nsWpe\r\n=SYd+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC9jkKZ+rpl8JR7AemG8+5jkF22yGRRzF/WrdxZm+6VQIgOXRWCI4No6l5bFbXnnf0ZhidOM1jw2SlNtYOL1CgsAM="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.5.0_1624904919410_0.2723250331811946"},"_hasShrinkwrap":false},"2.6.0":{"name":"@giraphql/plugin-validation","version":"2.6.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.2.0"},"gitHead":"554f86052efb59980420ba8e120bfa7d4eb433a0","_id":"@giraphql/plugin-validation@2.6.0","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-JdaY5WfJJ8NLmpT8B6I8geHXXWnSNGAN66ZdlYbKz291P7daDmB2uNKWOtC9vT7jlDXneBEOPxFTBZJPvP92MA==","shasum":"e50ac2be08c6ca7697a61bf124e33a913b4ea3c9","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.0.tgz","fileCount":47,"unpackedSize":335569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3M6FCRA9TVsSAnZWagAAsWoP/05L4MGnjrMw0MZdghse\n4WzHJbLqRaWUCI+Zza/eKvDqA3J6S9gPL7xcUmHlOY8I7u82l9MLUclpBFh2\nTB3jUAaK5w1VPTrLNN3HSUujWB9Sarg2uPMpL+44txPWe2CYQASOcYoU7otU\nXRzKSK9WjgIuAvJMExb3mUTVhy6dRXojNEIxZD/lwrjbt832kFFAAf1atfds\nmSrfJoWD4Vin7kSjIH9AQC9f2f2d7jxpd3DKpw0ZRspZE5Hg/mxl+JQpBUwg\ntLbz7xAeQEKQf17kZ67KUstNsun2rRHKwBScVgfvIbnCXLFUoz+ooA391Kxn\n4qCwGfp0kiBp3dGF9ajaH6WImASUaInBnXtJLjAENncpZC5bk9ToPfkA9abb\ngIRiqbCx5T1acrxPc+4Li7DgnWkQ6lVtg5VQXxujRZ5QmFUqN4oI6Wo/XOkV\nOQAh+cSLfC/snMsQ4g+nmO+XhEJPEdjAdPeaMRtJXaKxk8BGKhJYtp4rcKGA\nR1OrkD+UogtV6uaHoyiDvsa2jN9+ujm2glgv45f91I9Xa+IPP1T32d8ko+89\negj792mdYLVfztTUbgPJwN72A9Iygp13KNGLy6Hw6ZQ54I/LbHGZhDL2kLof\n7EeESaasIZDRvtlVU6mroO8XhlRXjAL84lC+E+X6r1gmlvS9mOA8Uqe2rUev\nF9DT\r\n=9feX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgBSUzzAjkOH5JG5JbaQPuNme5hvhiDMCJz7qF90xorwIgEEd7l71Ecu4aLi9nCveI4eBXtmp4tmiStGYozRlf/9U="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.0_1625083525159_0.28639908459838304"},"_hasShrinkwrap":false},"2.6.1-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.6.1-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.10.0-alpha.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"f04bb0d741042985bd6fb8a5659b7c72b297979c","_id":"@giraphql/plugin-validation@2.6.1-alpha.0","_nodeVersion":"15.14.0","_npmVersion":"lerna/4.0.0/node@v15.14.0+x64 (darwin)","dist":{"integrity":"sha512-kRdcLiYq2JblhiVpww/0GC0pPp+Lw2XYI7O1MqynUvJI4HtscYgue0m0wovrxjlv9Lk6TtFCBwgM9JJnujzAtQ==","shasum":"2b9df71f72cc68268c43052e2ab746580f5186d4","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.1-alpha.0.tgz","fileCount":47,"unpackedSize":171134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4SvPCRA9TVsSAnZWagAANjYQAINn+CC0ZERgb/RBc+b1\ndnsApzDh1c04oTI8wmCLXV24rPnL6ht46i180i+mOBN+cbqSa+sOhmTp9R8J\nJOLPYVIlZVj5bEMhXOj9PmVTeqJ8Cg+guymCB1fu86BIuldPJ23NQIb6rmNe\nZWA5fxvMUOibKBb86xGwn4sl3dbWvrsRxnrzCnUIIkZ6Ag06weaWEf7n+cpB\nQHb+sM3GyHB92mIDDtYWGc106vqOTgl4A88NysmrHCXVHkmDtDSBTelynOYo\n6by3kM2veNnPId1PPE4oszd13KFSljc/uaZ/gzJP2LWQ3GO5SRCD6kDkyMfD\noGbsu7F1rYAlN3AG9oV1R0bzlZH+x9QhiHmN6XaZlQcq85mH3JuM/DAcmHQw\nlVcCjyX9apMcRHJ21kCS2A27b8enDTtDkuqxxmNKx5BLGEel7Idz9788Fh3J\nLvq+cw5cMd7zlS4iYd9hnwBjx1/j2i5w+XChcmlMkUV4xXvWiAqq8cJguqT9\nSfoOMjuqt4svt77GMFY4BbmIuj6dPlZArruhQXVLHZtZYuTSTMzgS9D+BMtq\nNBpmDvJBCqRSipJN7wB+YnQ3PiHrQ9NbT2eh537wHQJJwTE1vR1hpNI07YoM\n8pklQG0thquC0J5GplKKJmuYB3HnEcjMsrnTvWmXiOC9lsxKzoUezn+SClg6\nGhtV\r\n=8rlL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQDwM3GEiJoWz6HpGJmwlquvIMb3sdUPSI7nmUsUCkgQIgaLMgeGCfPjVFaDFApuOvMrwanA084Wk4pc9n5slhXpA="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.1-alpha.0_1625369551231_0.6789811778290797"},"_hasShrinkwrap":false},"2.6.1":{"name":"@giraphql/plugin-validation","version":"2.6.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.10.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","_id":"@giraphql/plugin-validation@2.6.1","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-TguWT8NfaTgp3JHfHcE+91CUZbWjMT6GOPKma4V6/vlRGzTit3t9zW8PRctB8PNLOoe9raeHLMU1RfYPd+nwkw==","shasum":"f65a3e0d546b118a709eb33c2109da4713c60d96","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.1.tgz","fileCount":47,"unpackedSize":171215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4TfFCRA9TVsSAnZWagAAKbsP/1HlqcdNzsvLk0Yxn1rb\nZp8o+VXT/QH7lKInIoI04Y6hEzvBOnf1ca8DoUxymkgY8/5OWGvD6LbxWcx+\npYhjZ1kkE8fsWR9a/v69c2Chd4kMKO5A4Xwn24X9fXNZyYRgPysb4BIOfzoa\nP3heTlbqUUR/EDnrQJjsiLRqMagSr3zlaTt6sl/vptdDNRwcTBI47MzejPOY\ncoGXLczsceGbdgltf4xfABDL0M69/Qhqcxa9/FokTXmSl/C0oLsl7+3gtBNn\n9CjoJpLIl69kYb5yl8/VUYPS18vuJJOCQcES3LH2lIUr/2DeBoa5JrWsoZmz\nsuJeuPXrlW4GlvQKuwzCeJEWahoMAE71TsKcy07pFNe/TSj7ckbyiykxVBY5\nmw0K/StwGieVlzIHXDZf3/MfxlEjgHf1J1h/22jw7bdiAjV6ojrPjsZVLFCP\nbJCNRlkye0abtOtGksiH6breTR/H5bX3ZvdvutddgpPRvrFWlxrMMbEeOZr2\nruEYCClOX9QcdFvV9/zrlWC3wX7hBo86isPKQ/Eges+3gufWBGKQfpzxlvqk\nk8m3qZknk+4JLZuYOobyfDWF1R8bUjnsB/6WBEzSoR5x0lyB/b/OwK2vAWt2\nQg70KQEKb59fsqGgGH8iyM5tYaqWNm27FIDLC8UVpOpV9HOPsZMCsfvRnnsm\nap/6\r\n=myex\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvpqqLQSnJqYh/m9UNYvX1sCztsjBIuK2XbQpBjDLOIAiEAhFEZe3CAh5ojAXI/ehZMpbH+rUD4In9txQIz3B7Q6v8="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.1_1625372612968_0.9952762967006763"},"_hasShrinkwrap":false},"2.6.2":{"name":"@giraphql/plugin-validation","version":"2.6.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.10.1","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"15509521ab5b20ba1a0cdaf5ae17e21c307f288a","_id":"@giraphql/plugin-validation@2.6.2","_nodeVersion":"12.22.3","_npmVersion":"lerna/4.0.0/node@v12.22.3+x64 (darwin)","dist":{"integrity":"sha512-DrZNgXCAoSWknV354iHTNiKP2Nw4kazwNg6QcDARRdERBErjm83dNmfarBxeX0o9D1cJw2ShWxlT/MXqA0cCDg==","shasum":"ed1fe06d3ab47f79de3718180144e33010a53a86","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.2.tgz","fileCount":47,"unpackedSize":171312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6Rd7CRA9TVsSAnZWagAAu3EP/RNBAOXiUAkktjZn8nf/\nSmEd+qDF9unAEQpQP+yXweTb8aM6T8ikHKQd9dOBRAUwSJglMnrcyqGNHCfg\nw4U+NPjZTusRc9CXx1dsvCm2gAmQbUBtHn6LB+fvWVLpygrZU4DqUkQCgVJ7\n8VmQ3FqCcRgkk8mixTlX0hcGcSG5ri1n1JzePkRkqtWJtVUf4SYACSsDIKje\nXBTz/mH1p575gHnLq0+xYrpC6ylsx4cQDnOrVgM1MUd9PMwVkcgK/0XlUEnz\nBxoSeHtGn15bbwTNeNuaf6/EmuGM/aoLeXOeJTf+yZFdm7myh1pK5TY3b6st\n+JuuWzaC9pyh02+4PUdhOsGvH7tD/LtskBPsTMhAqpfsTVrISCaTR91DIPuY\natZDtePRDhSdZy4ECv/6ie7MTBVa39bH+h4xQYmtX6O1YJyeL8Liiqnv+cSj\nFs2NKjiuSzVTH7qvJrXIygs05WHLgyPTuJgm4/lh4zOeqriFTNG6S48Txl6O\n1JXFwqdidVK4RMlONwdOsrNXQQFmdq1jnP+auPx8es9sQfbVXYkqPj2gYn/Q\nQ2x8+M9PUp8vrqX2t5ige27Ig4+KUaH4d3eoQW16Fzkr/yh+hxVK9poFkPIi\naLxtJyLNcR/4wUejWG8at7A//szsdr/22Lk4Ql1dOKZzRUtKpAwfem4res8r\nFP8Z\r\n=V4GC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGI1HFA9VnTf6ZQIOLFv5gpsX3MHoYlprGzKprOgmtCKAiEAjIe7EIk99CrYFQZKKIm7jq+WiqO3KLlNVzvo81Diii8="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.2_1625888634971_0.02199876196593631"},"_hasShrinkwrap":false},"2.6.3-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.6.3-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.10.2-alpha.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"b42fce4efd2c4567c08615ab58f3dcd4a756f745","_id":"@giraphql/plugin-validation@2.6.3-alpha.0","_nodeVersion":"14.17.3","_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","dist":{"integrity":"sha512-wM+bO0IxHPEZZDpyh0v01IrRzTuC72JhPuQBT623EG6dnFXPjNzXDTcfCVu/1Tz9TZHgsP6XEZPUBqOt7pUk3Q==","shasum":"ced9a4e734a22d3b9676fe5d51b64594721e8d9e","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.3-alpha.0.tgz","fileCount":47,"unpackedSize":171433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8lOcCRA9TVsSAnZWagAA4IIQAIE3oHwtVIiZA/zOmQXM\neACgpAzMOX/lEeWS41ARYyFBuFvrDWyLvreDStPff9eHgIAdlF+L65X+y42J\nmWZGeOOHGgxc+BQZ0SycXzPJ4k7rLE54y0TsHOo+Vd08k9JjheMLVuuBk2Bh\nY25SgbgDi1usZaU5R1d2xU4/ImSzKiAF0eG9ylJVIUZzPuGQBqeAPDHwqY46\n36bAXqYLk9A9eqbnmJek0f618Nug1zxup/CfmrLF5JjdRAgRuv5KClZ4DHz6\nIIdnYib9S5cErQrTVE4e5SlHNpliN/jOF0qLvm/Xsdbnie8RZbhB5SKL0TOY\nooiUzjLFH9Qxb0htOd7qdFnzFP1Crq3pb4uurdJlmt0EfqEnioDKxLWTbb7f\nFgFxSo01agmJ253Hg6V1Ma/U9ofZy9Nll6+hLXnAjVtJSyoxhCg7Lm9BsoF5\njdX2X4Ux0GOGHtwtrWbFX07Qb6zh8ds+ngxTyMxia2qWIB5Sfrz/gml16hme\n50wD83Sg2tPU5eZ41pjKLrEAT6IukFGuJHc+0RrSf12c7gUPW9gRR9N+Nt/+\n1hIAEFvYJt3bnNdfFeGWZPurmLR09ae/zpSKNqxGTj/diCJ2BC/68+dzTt9a\nX8Sd714JJB9e3F4m445YrAQni8iGpILeVNwNSdK4FZDlBiOqsgtC8j76bU+c\nmBuR\r\n=tGBE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTcjhEuD/qxHNZ45GieDx3C+FxA4ruXGx0fpO9XHHRRAiEAw/r/PeTG/cnd6t2ApAwtGcRF8zxdOy1eTnmHi0z7oe0="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.3-alpha.0_1626493852263_0.5089874996630284"},"_hasShrinkwrap":false},"2.6.3":{"name":"@giraphql/plugin-validation","version":"2.6.3","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.10.2","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"fbab24dd5a3d379ac992bce22773f40196c1fdb5","_id":"@giraphql/plugin-validation@2.6.3","_nodeVersion":"14.17.3","_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","dist":{"integrity":"sha512-rREKQcb/hflCRXAnj5QTiVWiGmlI1I+WAue7J3v1qjRC3K6sFVj8ZqLrGMaDIzQKLGo5yMZ64zidiu9aih5WOQ==","shasum":"05d75e10fedea38bc7159ff547b8ac9ca5b73245","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.6.3.tgz","fileCount":47,"unpackedSize":171514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+w12CRA9TVsSAnZWagAAtRwQAIAaMVRcELoEv3Ip+Q3t\nV/MEv9S4aGOT05qPZleYXcOntVrhN1ibv5n/8KKtF8jkUTfxSGCGZWrf0QRj\nTgq0xofknp0cUZoRAotrjVxD2a8RgH7jr0slL/90qTI6e9d0dOdrMBObN98D\nIiAHbW+v1Ee4/MvBHLaQOFS3cECNlXuVKMUl/ILPs5FB8R8PzM9IMAZu5f9M\nUAcyuyrMNz0Jc3cVjaYY81Q605en58Hq52/bmeS7tqfudgvODZ+iajTKCGdP\nQtAeBpwQyDKZrYZndXxB+2xsJi7ZvQK9dlls1ScSJS+mnhp9Q7lL6fZuPTUB\nFuyADwWNM0E+iwOlsV12AyMS20Y60QjNzib7lloT+isAbDBRS0Q0efmUTv5f\nDt1kWyPD4DqTaOCt9HnNbnvDFAVYarCJthQM46MEGo4FDul8n4lUksOMGHoh\nH1oCJP6P39Q4kHrZvOvNKaTtytdWFKkkIb8+YOO0NUrbSt+f4+W7XgvtaErh\na1fJx0tCcDTyjkk5UvlrjnvHkr7ukvsZZGVM1ndHk0U2aw79ds2Lj0meCuL4\nEHLvNokUFWI5OyOjJ2PXfRoeeDv0598f8npDlLGNIbFec47iRBS9ttovPKrB\nXEV4Hj5ZnG1jrVkO8/NwX5ZR36fE80zmdtxTz0PacOyTnEegvIdYx+YD9ogI\ni1T5\r\n=2WB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+2d8wvC6zOlxfbS8F7RbTMeXEQpHI/RinaJI2ajExhAiA2KAVODBYI4EUUdq4Gs0lKCntZCFlVZaJ1tQFAJ+W0lQ=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.6.3_1627065718702_0.3749665158034321"},"_hasShrinkwrap":false},"2.7.0":{"name":"@giraphql/plugin-validation","version":"2.7.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.11.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"220b996dbac73ebc4de820931bbe8dff60c7cad9","_id":"@giraphql/plugin-validation@2.7.0","_nodeVersion":"14.17.3","_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","dist":{"integrity":"sha512-FPFWVe/AdlHlVY6g+g/ugBuahH0giNAP/XODJCSd1zV/GvvhVrwIjJs5+XYW3+/rFJ+udRfFfoKSb1hGGwLZhQ==","shasum":"9a2f3b9dddbf898c2abf02d7bd33f7cf35980e7d","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.7.0.tgz","fileCount":42,"unpackedSize":159468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBIs7CRA9TVsSAnZWagAA0isP/2iTrJ6f9m/okqGRvKWz\nVMBZb7CIJDkzWkzjE7PKd/FCjFEBGSm9zdXLkdH7lfY7H7WaqxnfrTePWVMT\no4RDgTpv39wbJtriz4kk9dmAw6thxwBtaSpNdpIQdUgwXagtP00lDrg1VqVB\n+7MtnSUzgV0rfpC/WoiOIa2BIzOBb1fBTQu1XpmyklLOE6lBsQTgjPSGQej8\nepRkAf91TTnWqVUpwzRMCazWBgxMvGhFyg1jyVcxe95TNAj3aEQxL/Tyh+OX\n5IpAgQV6W0VzGLLcvo8rkjF/eHym3THQH+uk8BhDPq/kV40KRkKsR2xZIud0\ntPV1z3MhXQlYYV6PchUpbvs2Wd6crY4jVEK+wJkjXY7lY5LvTyueqpkwA2GG\nRJfJJzycHwL/3LBQYzVdTuDj/aBQI0TlK45rVYK0sSNUqr0giogbcgbjx9Em\nvjmDmFKfuRfK3P2VYok/L5rjZOGVDwt5I7yNgvA1sTvs8V09KK0MeoxCDigf\nxqnjCvOnNMUatc7xlK7oX8IJd43npUKvg8ehioieNdnCeJh2pM11C+n/LGTz\nOmD0UGWNtt6XbND0hqfr2Nge5YiBmxSHL33dCsHmBn3VBmAeiwaiLbjba2F1\nmINMnv6wNdREO0niad+8/bT6l5jR2yQbySft2ICxpDVMIqY7FNujrNeVZe7i\nOgUv\r\n=2VPq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKWntwu5cIVENhJDApVOB7GIVY7K/PkBLifXChm+aEIAiEAkAWOqL9gdwlBWd5rV1+LMNB9TvSZqcEJ/LkNzXzUCKk="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.7.0_1627687739242_0.3445877747316122"},"_hasShrinkwrap":false},"2.7.1-alpha.0":{"name":"@giraphql/plugin-validation","version":"2.7.1-alpha.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.12.0-alpha.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"9f586f4146acf7841706aba3ce84826d6e4f7cdf","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@2.7.1-alpha.0","_nodeVersion":"14.17.3","_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","dist":{"integrity":"sha512-L8JnknlzpAHP+9oiCxyzjV9WviJMHn+NY01wjrCAugXOClBQpWz3T0D5WQCBR2Utn6rY9iqKBy8xE+0MTMGvNQ==","shasum":"f74e507a6a474c7f8708cdca689c26303257869f","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.7.1-alpha.0.tgz","fileCount":42,"unpackedSize":159593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhB317CRA9TVsSAnZWagAAdaYP/0DOjAAeRPZFXVXV6ru4\np+LMNx9Jb6mni0/Egiw+/x0ue0eVgnuXEJJ7qijKkCbas3eNacBDuFN23ReA\nQ/V8gg77yahLQWvE7yT1hb5YGQjqehBGhw7fhDj4E3TDc4YFcEXO5+cxJFLk\n1xjowTpxUhXYQrZ86H3ERRVzlbFw7mi634SnkaDxqNEpl8NRyLBg84+O7FkA\ntSus+lFpRqAUfZ1t7rj7PKCq9FuMlyD76UzEGw+6/jEKRW2UKQHZ2S4/Sg0V\ni04BOa7t3+GxJ6eyE8tIK/BEkH3FyRRyMzytiwafnM5mHWJVONeraxu9mjkV\nrxP0+8HwMKjRCxrXLUynQErgTassYP391vPUAP++QZB/qzeJrhM9V27/FnfH\nLzHvV/XKA5vQEJxGov77/uNQ7RXcXeRIDTnWF/sP1koDTg4QY1gfu+eCFRLT\n1zqpR4dDlLY5jR7M5/f0YZv6xWxVzy2Nx1TRttCWrvhcopR5ooWijqITkddX\nRJ/fkdnlYjja/SJlP8KQo5vGo7suaaUC+Vq/s0urkorIQNoJtuOhtPP6pRc8\nehAGt794t8O6lg/xfWWwG/HMk9RzfaBQvzFPoYknrUz/pfEKtaxCaY3Ea4rF\nAhcNM8As3brdupQAWPH2jbHb0WPrlAo6xtVQWhvAR8vZ+4fExur09nO1nnbV\n9gHd\r\n=v0Vg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl651qckl40isBeSlufMUV/tYm6GXuUIoSiSAQOg4qxAIgfFEqGQVdlhg4az1qicUItILbPp64rPL+uVoSkD9hgMQ="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.7.1-alpha.0_1627880827184_0.3326881600552527"},"_hasShrinkwrap":false},"2.7.1":{"name":"@giraphql/plugin-validation","version":"2.7.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.12.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.3.1"},"gitHead":"c28e5daa0ddb0e240b97113013790586e858f49f","_id":"@giraphql/plugin-validation@2.7.1","_nodeVersion":"14.17.3","_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","dist":{"integrity":"sha512-9cNOMeI8jgFL3krQvcQPpyZRajXpnVvRrcJOEgxhwYldEwyB3mvRum2LQQWr30bNIBaE1QXLMFQOrxvBWqFNtA==","shasum":"8b35020c5d167ebf3bf27193283d372956a5e7fa","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.7.1.tgz","fileCount":42,"unpackedSize":159828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCMA5CRA9TVsSAnZWagAAlR0P/0CU4isi49YnANwESERK\nXNvICyfVQM93B6w5jlE5jgNbsx4la8dDaZDrZTRajRjaljaFHK/BbbWy5L2i\ncpLjDHAdbDriIR8CD98upGYG2cYhUmh1eECM6ihh4vUGP/7DAKhAJrK6n/yn\n1mUjLpU7X68uEDL4vDUYcn8Kof3EMnDLN0f130ZbaadgZrbKcvFLuzyuy1wR\nN9GDDkkDxN26jlCbG9SrD2/0kcy22q+ueKlHr8QfJheWrbGiwh3P4wphogCW\nlxmI6rYA0LTTQ7vLVdDfuFxOZscbTqUGI6a4eifuueMfTsP9AhyJtECjfqj5\nS8A4HJdQHSSDCIMCUa82TDLIkjwIjAn+MZKIer7jXRa0iYT3/POwjvcyd1kD\ntqrhPNQjcJNyjGwJv49gDhVVW+948V/VONr5vod4P52Y0yNchWsNOL33qiBX\nSvOFQQWsBAUFNzmqcwO4Cv04TF3EPMqLdeSMbt4j9pboNvDOlITIK4X/Egok\nPde1F5oI+1UXcWfd9AjOSHk1yjCQNb5JwRqhRqEfvN+eMb5wxjPhcu2RQGtc\nIpoS9VtE7q8O137GXFe5w8PAgxJSCmttbJGsm8qbT8PtVvOLMqq6Ylrvrip8\nw9QGP8sPCdL4EvcIN2LV8f7OIItytVZHCblV8DE/1zjjR/hcUYl8VKnTc8sN\ngXNe\r\n=PNCp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFOXUbx4S7oekz1l7t24YVxwMS3kvZ50ubqtgwafd+3BAiBJEQfoy9shkFQdhCp/ZHHXjp/g7zjlfIB7h1uNUqF7sg=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.7.1_1627963449503_0.07058188473922433"},"_hasShrinkwrap":false},"2.8.0":{"name":"@giraphql/plugin-validation","version":"2.8.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.13.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.8.0.tgz","_id":"@giraphql/plugin-validation@2.8.0","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-B9lg3l7UIAIMgLc27y1gEMDwEweAKfL4PZzoOYWoIwiovcL3AY5z+WzrNFEm4H53YxgbyVY530v5fZTAcpZ1Jw==","shasum":"8eebdf07fdca95355c645cebc79bb96d9c12188c","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.8.0.tgz","fileCount":9,"unpackedSize":33912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC5AdCRA9TVsSAnZWagAA3z4P/1XsYkKygmlg42SPKQxk\n0wBtXXoxeeDvfklfikLNxgoMMmaeB/tML1tusbdSrA6tKZlw6UZjJt86aWJt\nznL73FXdQOSOu5vZ+/Uu7S1mbknVXi6KNnDCeHsZSXnWVE8rO5h7f0W1Qfs6\nJVWswTuZLAt5HGLD00a9HcErBYjGMpG2owKd8md8vpBgKYetymoMA7UN0Yz9\n5Qb6TRIs1OFE4tdAIfBzr/e1BDvFAJhhSwEL3AtulAcXLS6GeUI0FgEd9Aa/\n1U8L3Hb8MhrDI7boWSD9rUWzGBYvHB5zm9gVzVFH70YPOIiMgQoMq6gbMyMl\nn9P7B4bIDmHVZmE1KPtYcnnsRl7ocDdnKvwke5iwwDmoLK8FYhzqP9U0uy9S\nBOQgy5QJ/A7Swg5XsbYmDxJ1g4dw2Am1Rp3tWt9CVnV6UPM3AjEQ2wbZWRBa\nuztBdrCAhZAXbXIpVai9P8NsJqWQbAHjOHuHvaTncJvjJ+wn38S3lcdXNHhx\nrhIN2N8c7CDnm1DbK+YIV2T2YgXOoRUqRbteFCwT8nrR3nlt8Wq4mBFYYaSb\nAjuWCS3o0ji04D9a0kHmT4douf/p113XoFVkvejcGxT8x1Oc3nUp3KkiYW1D\nnHROkwprKGVco/RZFQTH9aPjeQdDzWJ3fidnprKSoI2VUK5wZz+Y2J/HDQag\nZQOa\r\n=ZJ89\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDz+j62qPDaZoiAvfgYF5MtKiDmAOZnZOcas49j9U0tegIgDI5FeCaWUardaKTB9F2UWteW6+JjqAgPPiP+66++8RU="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.8.0_1628147741232_0.4912271920436879"},"_hasShrinkwrap":false},"2.8.1":{"name":"@giraphql/plugin-validation","version":"2.8.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.13.1","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.8.1.tgz","_id":"@giraphql/plugin-validation@2.8.1","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-Q4rbYzBRmnFoJQ2Al1J5A+D8xLKuWr0kE/wDZmTfcMV/ID8aBAg7rcjcyyuQd3DNCkGDG+BJqM5W1vjLreHlCg==","shasum":"c9417f21b00cef37405d933acae2c47025f3e500","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.8.1.tgz","fileCount":42,"unpackedSize":171805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC5G/CRA9TVsSAnZWagAAXMQP/ilHaNiXYdxVJ2+DgjRQ\nFSRWVvwAa6gFNp8xEDSGjP6UZ/ojPveMi3UsRudJJTus65sDs9fo/0ZvenYI\nDKaH1yn8Pfcvg30HmwNH8nYRNb6hU7IHPQ6k6rGXqAnZjwuJw3uon5J+VbgF\nRMwMry1Gnf5VWySxlD+tl85rhhYbmtyIoK26fB9Zjd0tJJ2EdxPQW9COEf3q\nTbzBOW6wDoanAdLHsfwQvssLCDWXzBhCRu2B9gjlZCS9kbp8wV1oNq/0bteS\nApuHZRq0egoCVMwc+lxu3uxbNuIH9NlZL43nalyefo2n4ABh3NZgciIeqTv6\nRS7nJlYa7VQxiwVrJicUQB1VfFbC8BIidVyPomBdf/Y25luwr1RlB+ekchmG\nfxw7e0ng8nCQ76AYDkI5dLJLqSbiZ/k3XOgYhdyHDco107MuHOvo35f0Ebdt\nDidohrjMLeZfRcAweMK7AhEyuG0Zg1ob5x3HH9RJ8AB/CLE+sQW+qp0R3Gcl\nRL/U0o7BMzDBDmfJaYzbD5MQruJ/vaiMxhfayRhX7oEP1Qk7TT1OdLtTBIYF\n0V8KI9E/TvGY8/qAYJbuI8KpzKOafBiC6UBRz4xqR8os7O95X7YUD2LZkCid\nb/cqNBYbQCDodZzNdSOG/cWyXN8+xXEC1adtBdC8XEAaKNGboizUJfmCcumt\nf7AL\r\n=DTBZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRJsR6Pm+F1V2jVkIJC0XWNLSDgOtK0pp7+zTMDjvcpwIgQkfp2bs0XjVNbpnB0ZxiOXXeE9TWUHKdwE/DpjaL9xQ="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.8.1_1628148159062_0.8683419302357716"},"_hasShrinkwrap":false},"0.0.0-preview-202177065":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202177065","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202177065","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202177065.tgz","_id":"@giraphql/plugin-validation@0.0.0-preview-202177065","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-ZaSrolleDgE9sudimmg2aHIAmI04rX3fx0eeoycgxZ4CFwW5pHksegm8bEA+PV5gUSagN9hcMYq5x8EBlf499w==","shasum":"ce67b3fe8b38b7eed3056bd4658cd76fe05888b6","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202177065.tgz","fileCount":42,"unpackedSize":172228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDc6sCRA9TVsSAnZWagAAF4IP/jSedfNwzu2955j2L3TX\nx1eQjlXef19+s8LgJBdmgjykb2gKpvT2eu+r0BEV3yC8YKfgP7wXGSdD3AJD\niktLCqK/pvqgLxpWDvdiy7/mb+OfU2D7mOaS9ekrqyanuGVK8Q409EFF+FBP\njNJqNH0Hirs39zTzhSW27DgU3ozrqKmU+xcfTPzn4NmK7QnEkCxSmaC126IX\nhYwM+q5IAVW2p5EYAmlu0w/b28IKoAC6S4ppx+opg48XPKseYWYmBHzTjB01\ncYvgMEe2L9BUJTeM8COZ3VSbjPtVO24RhXssUwhJRMGHnSFy3I/YFzLKEBnC\n1ng7NUYlRcsVqjs8tIhgd2HpXntp+HTtwt2R3YvNIEj3Ih40wMfwOUUCKf5J\nshk9uflVdnI23Z4/7hXudqXtkdK4KNqZ75VXqB3pJinPBXJ1hdHv0ktsi5Wv\nUIsW4h97KAoXOz5fKQ2nCvWQ7uSWoN+aSQCWKW49HHPnDTg9fjhUi6jCe1c5\n2rQa1qy2C9UrQooc4nFNhj4q4p7gyWje4SR8wrkE9WSA5cNBxFrHhG1RU8sw\nq62nUptXs7vuhxHDZg5Vd0y3p6rNFD/VGC100UKwrFFTkCjJofECcrjuIw9F\nw9TOzfTqd3jWCEFWQytwYFdGF74soi6J/04pZUHgCAtXjg7HVFtCM8WSzajL\nZ9I5\r\n=ymSl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfEo5jeIcYJwO+zGnVkpReRfoYYxm3n2s66KdXunsdVAIgW/M9bE3Qpm/bC9lon40q+nUqt/bbP1alHN+Qg9uaxYs="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202177065_1628294828063_0.905690729844201"},"_hasShrinkwrap":false},"0.0.0-preview-20217701452":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-20217701452","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-20217701452","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-20217701452.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-20217701452","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-G7jODGujYWzFMTcBXoaYUNdY6GXKPDTFwq5MpMMHNWI8brzY4WCP2jLrifR3tSmRyS0mFImYeY+mOPzYzg8R7A==","shasum":"2d34d3969436df9df4797ccf4e8fa11e687272ec","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-20217701452.tgz","fileCount":42,"unpackedSize":172234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDdCQCRA9TVsSAnZWagAATtAP/09+UduVm7KAvML9OiSW\njTTFhY6ckRlLWI5IJ2+0gOJHs8KkM1pS5hSyO2FMxqlDJZJSGYGcLdHBjQky\nef08dYOZ2D+wR3wnGwN6VgYtyVHZ7XVo7MGm3h7YR1IJS1/O74lnZan6Dyl3\np2bC2jTaGs24nWXRumC0cR8DFDoxDZz5CDXtcdPfOmRfqw//TE92ehvX6/G8\nOB96A8zklXMXU1P8j8H5ODZYMnsWRYxRn0CV3oj5GxtgGF7MNSL6J8jDzDRZ\ni0m0e0WlO3R2xQPPwCHgakjpkmIUo/uaE4ciayj+EcOTjircTvb8kVhr//T0\nwaF2Hv0ynm9nFvLL85tri+sYddItzwXhNKJpAhkohCL3d2IhVzllV1LoBdFL\nKW6AkigRWH5b585Ly5+bTdjpRUwVBB4+5hP+Iw2LfJgNVnJkn3fiYnm8549w\nFiJoMfuQFDknL7934BvlW05Fe4lvA5w6jJQ7D9XWPh8qz0hglQW8N3UWNPRa\n0DV+CIlpQXnBQyVgfd1jg4QCYi3QcIuJyG5nWvz0KNc8fP6bMUM09KVSn1EC\nrznXqVMprVM2oNPVqmIS8OZxJPGRchXqTqivHM8IyiYZZDheUXsz3IItVDeP\nKoefHHEt+ytwW/bBwOvXY/JMs0a02FvClkvHVysBVu3tK48K2Dgtbk/0AXrD\n71m/\r\n=ePM7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHzJdtQXcFXtGMo20YEck14Arsi/NzJGUyeHfOjpGquAiEAjDt0EEBPaCnDDWMeurfIoxXOwFQLYKtZDj5lxl/yk+M="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-20217701452_1628295311870_0.032545639791961456"},"_hasShrinkwrap":false},"2.8.2":{"name":"@giraphql/plugin-validation","version":"2.8.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.13.2","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.8.2.tgz","_id":"@giraphql/plugin-validation@2.8.2","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-sMELQvgHgCPaUJtPO+QjfY4TLcCfPyeD5zdczDyXjQH7RgvRnneHEXh7Z2pCZDzRWr0ZJAdXRakNzgshm6u7Dw==","shasum":"f9c9cae1962d4edc1ae2f1b66f9c97a0a3a18dd8","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.8.2.tgz","fileCount":42,"unpackedSize":171869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDdCoCRA9TVsSAnZWagAAvKgP/R8RincmRQIez4TfnN0p\n7W27M4qY4YO0SB6tQJgxQ9lZhsyi+n8+FSW2ZP8XvERkbbkcIfYpzZMUCmzF\n+l7qB1kQqqCvLK+M5+UFUDwhElnEw00kb3iF5TR6bHMaPU13MnAD1yBDThLG\nQTKEDnzIlPqV/eUjUuc0iV4k0Agv4Uh3hf3MowEDK8LpB8pe0pa957ObcTQi\naakAGZfwnDPMHiVyI3pIHAp7OilqEM69QkQSezMskFWIXL1cl9cdkuThY9r4\nBGKIf9q1jn+eV2tqG9MqTqxh5/cnf0gE1sMg7BlRCi1UbZbkROv1HPxYDcgs\ndoPWljQK2SEFmwwqQVYFge2J2yR1LR9dxNYNpi6jlkXnVcSf7o28Jjb6TIoR\n8eIDTSynyLDPN2lE0B5L+u0aUkUrnmjVRIN9vcLnfrzmJHChY0LPXEhWsnvH\n5bzSMPxxhOB4wc+RB+Im2LIswrEWNL3eT9T/JEZHgf8Hlo/YYd2VY8nNBNLm\n6cFBCylGlBgA0iqRS3Aj6uj2XJu5yPanNgYXeyjbqWd2DU17WW3OusGuFRwC\nzCWdY/OCw0c4gyMyhG3bULSAMS8PaWuQPzQr1U9arywslFHR/x8OaiwP0GUC\nd/JjO7i2fjRs+zPRztuOQq8D/g/GsW1et3Mw41624X2zikt+9tGqebxpsC8h\nj13I\r\n=Y/7S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5GqQpPHGbUuB6RJFcUgC2F4ZMVxR2teV9fbH+iwd7ywIgFbhhL8gHABn6ZKtTdrTZ/2+0C0cTpKjJ41yL0u5BeQ8="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.8.2_1628295336403_0.7090124163769245"},"_hasShrinkwrap":false},"0.0.0-preview-20217752147":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-20217752147","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-20217752147","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-20217752147.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-20217752147","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-E+ju9HZNglFYK8TgF/96Dr4Cs1TEGEpGH3bhn9PSMENzlpIknqypXwttYKCvHg/69zLIYFk87RRPH2GJUoGPYw==","shasum":"137a7b6fe75daa382b3f8a3b3d8e2d24df9d50d1","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-20217752147.tgz","fileCount":28,"unpackedSize":133727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDhh/CRA9TVsSAnZWagAAQGQP/2uHVdACwPQ3TgQiFHct\nF5Rgcu9lbmYoG9XPfh8t1CDFr3LBGkBJqyfUJDw5WX68j5rCZ+bDZq/dRW+u\nRVSgT/KVcJM9Viz2YlPEEZ4FwqyS/jYGUHCDlNZniCpe6Wz3VeiajeWuV74G\n1U76rUAe4MAKSW6w+v3z9GRnR6OG8TZ0nsAuekhgmuLX45/BkHLLYn2mrHtS\nOEZ5DYTFEwRUBLI0zEjb5cKqeyyZF8lwNrnTdJx24NY1YCvChSFF4Xmny1Eg\ndy13NBQ9BE+csMfFPPLDGVytFIZ5MaBcjEo1HsbO5x/r1XUDutwLhDOB/qtA\n2GKVeYAJxTCQ74VWqVTksbviBKe0qeRW25oQKXzOSQE/ru4/Eb4qHbpb+2wE\nfg95xXc/GlcK9F734Po48gprDpickLulSHQIJ9CFqeX1nq9xUngXKlXCARN+\nckc8b8204kQvLJW9LNYvME+SuUq7mKrhUtK3DEJnWqIJXcwdhHeczCTK5+0E\nkx8pc79OlJLTRebNz3aUE0rdzgycuiH4CDUMuSwmWd7TscbAhh4UEATfYSxG\nKR2HV8RD1KZUFAYKpWoPcIbhSN17o7WS+B+Pnx4ru7LqrTsYQBVNmbbZ5ljS\nM6AUtu3biD+oj6z/o0XO+VPlVUQz0GKRJjQ9IhtrHLdLE7gXMb764l4dSDHX\nx/+c\r\n=W5IJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYuGa0mOD6Ex4hsPwkV0PYaqACD5OuMOr5VegMl2gpsAiEApCaiz5ehBDdRiAltWz0fXsOHgDbYBOI3/n6W2v/JaTY="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-20217752147_1628313727110_0.9200826258404282"},"_hasShrinkwrap":false},"0.0.0-preview-20217753333":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-20217753333","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-20217753333","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-20217753333.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-20217753333","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-WSQVQrWcJ6Ud/sdD9G0IPQCxolbHwJafGr00GoKPXVvi9IS8IpsGNrsN2NBdOcDCfkj53p2UT4ZhcpFT9LjSfg==","shasum":"d9554b9170d9670c3deac48a1999476b7e2c007b","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-20217753333.tgz","fileCount":43,"unpackedSize":172257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDhtCCRA9TVsSAnZWagAAfSQP/0z6BBnGR9z8G26zpgHH\nvGjVQPwQpngbymCzoxHbi3QWXJa5o/d87vydrtHBi1W5x2bofr7AXcGhkKRV\n9yDO+xsG/Im7K4mQF6BPg0C2eo2o3ERkysu744gvOnkymCUsIiNxVB9GgS+C\nIDNIUTJZ4xXzjdATT5GqSgVCtYFLU2w/V6cNiCvwF2tNshIMzsjqKBqh73bE\nUCp6rDUsI0cckJ9Ccmv29ePIBK9lA+U1JKQO/W7h1kQIkdIQd7NIRT3ofr2U\nfOhIyuy91axlJQEWtmhuFgUBdU7cf9m7Z2c48XfYjDoq4mwDIdlQs9AyL71L\nD7BnBJpEf0vCVRESQCbspwqIIcazkkBoduxfklrUmCI7BsZ80W5aC/0V2F4q\nwPpr53HH0n0oqE1I18gIHLDFuFvfylR8Q+CQaTDjfV4vcHjHK3D+UBw7gN5q\nsSEu9ZhxEyOjw5rWQzzGq1kLz+CkaEaRTl1KoT8PzeLQMHn0Mndzd0jEKadN\nKwnnHC/SDzSfbnxnw6HF0qfHi/hVH7vlyWOPxEgcemw+n7dALQS407Ib/+sn\n9IP0+T2i3z5haTrEr6CK4Iqes6E8sJEKVlkUQthxhBMr7k6ZLVmxiAg9RH8r\nYeI64nllCLiECZFBDhPhD+6rHQXXZdGMile0T5jgwrdGNwzJ4BTpZrJslIkj\n7fMa\r\n=ebZP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlLe3//ZArYmae/Si6m5mQDycySNaFW+rRb66wJhAFWAiEAk4gu8jzrS/draHrFI2da5ZoOeZlrfpyBZxrSEkP5Qmc="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-20217753333_1628314434251_0.2621814579894777"},"_hasShrinkwrap":false},"0.0.0-preview-202178182932":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202178182932","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202178182932","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202178182932.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202178182932","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-HqXS+ePFor/1EzIzJmhCqO+Anjz6XQISApTwWVHnd53y6n4wtRg9AzFjY68D011Y/OEpdo+ujA0rfMo/xeP6Qg==","shasum":"fee625914387e8fe233d3b5af7465350e3687b7d","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202178182932.tgz","fileCount":43,"unpackedSize":172324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhECKhCRA9TVsSAnZWagAASdQQAILVtTbyI6Kl8DQy0WXY\nDJZVrbFtcMqtEc3ovfk3Ka97L3Qys7iLQ5GDZlPoiwfbdaFvvz0Rfs/FVAYR\ncXBDT5hRuX7Mhf7uLvFyX0QuE9QeWNjhTVTUiqHV+/KZZfRPAZf3ugyQMjlJ\nkwF6IXOFJjFN3X9QhHL/wyoR8PwSit7q4IgDVz3DWkj1iV5CNL/pi7Kb89S/\nt8eZLVrzqk+x4t8pGbYX4eEYhWHwyA32hPkUV/8/Z5Qojtn1HFljqvF3Ca99\nXUdclKS9xYtKVtWtcOy5H9ns3oDphKk/phD8AfZ01KVO63PZTWTTrWYcj+gI\nn2cD5YZE+b8a90YK3yXUTHYJhdpSpLp4OsAZyR5pbC2EV0tC5icjasQgFAmF\nxatkDOXL9EuPo1pckgNdW3L6HAvuuNmRZMIilmqa3psqC00s4KfDY2wAPwAb\nclDTvNQayYKeLq6EaD5U1rdjZYhQtSv3avZqVASoCQBdwMFWffu4Y+i9ZR5p\nbuLyzceAFC4owezqDLEVGEx3s9w1RRwQBieX+3vvyLvfodHa8pgbPIyWD/ey\n5PuCUWTFDuWDfLGdZP0Sr/nut6wySlR3BAi9cGaYquaM0VaI8Aek/VC/BERY\nL1g4881hHxqX/ofOmYVYQcUkJT1b2hKjrvW3asNhI1d3P/lMZemtpHi98lKW\nVNfT\r\n=u8dp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFeS2M5m/HbXksGjnmGyQd/xpBiaAO0iC81SsbSZaN0pAiAIwVSaXHBXkUL0Ly0u8V/+2rLzIs36GrI7huqjSyQoMw=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202178182932_1628447393569_0.4894834679412474"},"_hasShrinkwrap":false},"0.0.0-preview-202178184810":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202178184810","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202178184810","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202178184810.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202178184810","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-j0o2tW+PhU7/Hj+3vXdxCsH0A7f5LVZ6vR6TymQyAQAV3IXRig51tdj+2FZSaxeR+U/y9O0y+g1K38TVdBqeyQ==","shasum":"9fa83f86add41233b7bbde42bd54a503203c233a","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202178184810.tgz","fileCount":43,"unpackedSize":172324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhECb9CRA9TVsSAnZWagAAxEQP/RWmiqk3hMuAL+kdnHJi\nPJcaxtfbzFzWzaffMChw9wadbaPBnuxNbSzWU2DurPTlSMR05WH/PKS20Z+A\n6Ql3KDDobECswHKdLFK+44aiaElLcgh9cTIzJHas8WAGp6S7P4MIQWrs/H34\nXk4izAOSNryJ+5Jt2f0J057CHNbunAO9ZGZ4rvLxyLg9ABLUQidLEJ0qm7Oq\n6dz6Ym4ojJSKo0npHX55xwbdZ6vnr314qqHrdMnlYTd2EjQLkkk7dtF2C0hK\n0fmbBp27Xa+Ayfm5qVIBd0+EsqigwaTeGXJYYeqFLLvj+8bTLcoKRyKULvas\nkKLijYW20J5u6jIoVIRsx0WVzDcdeYMk1nlnMVUaRVGGT1d3ptIRrTK14KLW\nqo4Dll1yKK8w3XeZT2y16mizR55FX+cJJOfYR08/Ht5JUGcW/nMEOlFx6jJu\nG8P+CgE1nmbq6FjThkhLLPdknSbU/frT7uhZXn/2R/I0og5jSihxXV1Zwza+\nhAA2SgbuK6NLDyk5fNnkMKZVUtne/zjdACKvhscCpFxn8eSVImhVLyMc0sLi\nLfqLnyZF3RCLmhpwnTAGjm5B3Bqlj2pZWXvWo8A3xZcl4eHLnNZ2v/nbc9eR\nj1FJd/U8RV8SB+KL6a0ai7Mhoz4vYR4WAA22ryknMke+s/+cktwLMnd5Nemo\n9mkK\r\n=4lXZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkIymYOCEnxV6zlZIgt+MP6Lq/pJnCYsIZCzKp3Q0EsAiBOFB7yPDeAUTc9muXyt+Uf7xs9+2m8W9KcXV0uPw5eyg=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202178184810_1628448509751_0.24873921948183453"},"_hasShrinkwrap":false},"0.0.0-preview-202178194614":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202178194614","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202178194614","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202178194614.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202178194614","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-zCfGWKo95tkY8LRmgUCNIveaz1Gsu1r0QBtBbHdgvXWCvYLjj0s137RSIHBx21KBhA0lNxvVPxJovTsgvbOhvQ==","shasum":"9d8cb696ce5daea332efd330746434ae584acf03","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202178194614.tgz","fileCount":43,"unpackedSize":172324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEDSaCRA9TVsSAnZWagAAD3gQAI2X1OF5Sy6zCCB4SGKe\ndZUjQ/2J0dK6t93/yB84V5mpFrtnif/aQ9LpblOXFWtuC9VtZG7JQ3isUEbs\nHhMGsNu2XadHe8uy169HOx73qc5Rb5YoCc+14g7EkY6e4m7Rs/FY+PV1Hpm3\nDbd+pkND7z7qJBt9Pgl7dWlJxHxmCEJO8TF1sIsOzUzf+W6GjDQWSZCrYDhW\n0rrVtmZ33M5a3dq6kH7fimq8Q4PV9bG6NQZZ1g5NCuyXbjwrfMpYlDceonVg\ny+skjqMVK/Q5yqk4IIp6V7/abu1hdtHHkTKJCkvHZWtKSitgcZr/b+6TH1TG\nQjhm66C2wGF482dqSsNsTb3XHtkmwffSGGLdP2K30U3Rau4NxJHhkswYJYHa\nVwl+oCbhXCc+HKZLSgDZEVYLwIFkhJ0Kp0rhZ71/p+dozxTBvAUJbEqlSd2G\n3oE3VaKYUsOKLJ3DK5hvv8txI2v+0DD6OtUJ1JWs9sjDQylMhfSQJV5rPZjI\nBE+ZLyCFbJiBMZRp6HrK92CXLwvahgachm6CeHILJJzYsVRb8uBstC0+g0q6\nY1L0bMLB8dlnsXhK5M75P66kbYpk4I+hj/ez3YV3+LYROZ3aisuP6VavVQXr\nZtZL9ESF21MpcnjQl8Ld4JaqgL7w0oBdqLpVFvRADdAxFzHvF+ERWCLG3Bmm\nvdbW\r\n=QX2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDooIo0pDNemX92RM680SLreoH1q+eW2/00zSzzXh+hoAiBK6922pOWBJYR8iA5j5CpHHtm+e2BxAd/Jt2zx+zKNxw=="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202178194614_1628451994109_0.5201459804655737"},"_hasShrinkwrap":false},"2.9.0":{"name":"@giraphql/plugin-validation","version":"2.9.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.14.0","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.9.0.tgz","_id":"@giraphql/plugin-validation@2.9.0","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-YsdmyIpY+7NhnUXqvHN5ZKtzv/WSKxlrXknCgttJ8yWeKN+SkE//jQ8qLkTKjTZ9jdB+55D7nMm9yj3froSQFQ==","shasum":"d140e34bfe19f1a0725dce1e6edad7abecc3d5bd","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.9.0.tgz","fileCount":43,"unpackedSize":172264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEDcmCRA9TVsSAnZWagAAqSYP/1RPZC7OiE11/SoZIiv3\nhVfc84s+Qx1DY4c2P8pTrPbFsJgeFqoW2aQ6TeN4JE2WOJZxEZFbFlM3Wl4U\nWuB+B+q8AEX9ybUGyinBno4zaVTryoC31bDLd3WGFBhpj7vq9BDPqK3ifJvw\nqTomU5DXQSVqQ6xre/CyqpTDM1vfNud7vvpoGJQ3+jngYg2AWmdbv3K3HtNc\nRk2oriaM6194UHTLmhZwgCZhvBZPD2IYHp0wTb1QdzhKiGoi3czVD22OeGP/\nH6c+zM1Rr6hstXmma0qtI8Isaj3XCCeQiGrc8ylF8nzOD8tFRMPR9kumWV5D\nkFjq4iJjVtfMLAXGWLVFo/AJY53WrAEhfd8Q8ez780DA+2+sb5OxP6z5dEfQ\nxtwz2bLfFuJ5kx2C/FWHl305cDXMqc/nUVLtHs5jd6TfW0KcmeGkgbC3wXXY\nu15CPaRf/mrmGr28iff1SlVVz42h7UGzqbvORlWfdLWsy8OF+UE11CiI3shY\ndPYHVtfHL4Nc2aU9lgdKqMxa5Y38jfWBNzQOgGt0UaBZG86nBs+e0FNcsFlj\n1jlBSZoogpbSWFfInzDvsTbVYpRR/Z3319p+lS1GjQaaqRIZsJbqme49TKU0\nZrmAYeM98OPfkuZ9l6ZFgt8j7pF1VSIS8j7ZfoYSen+pd9jFnJqdCB4qVxcG\nTAfn\r\n=M4XF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAw9cmWOPrT/ZWEY0x9yFeA9IlgSbcdUPDCn5Y4QHR49AiEA3QKlkxk7FNqAjxI8zATi/qXjhgy5IuFAOV2AbAB+CtM="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.9.0_1628452645984_0.2765715046623902"},"_hasShrinkwrap":false},"0.0.0-preview-202179204139":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202179204139","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202179204139","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.7.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202179204139.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\nzod version 3 is still in beta, but is compatible. Zod version 2 was deprecated, so installing zod@1\nor zod@3 is recommended.\n\n```bash\nyarn add zod@1 @giraphql/plugin-validation\n# or\nyarn add zod@3 @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202179204139","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-LgJ6JJyrMZYclM/s4Mh21PiWtjxw5G69Iei5cY2bmRUm6LujorkPUBh34sjRB9oEWVcHpRrZaqylHJPLVwqQjw==","shasum":"0740642521be6790184d2fefd63b16f3fe89a2c0","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202179204139.tgz","fileCount":43,"unpackedSize":172324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEZMbCRA9TVsSAnZWagAAsk8P/j/Qfh4wTC6JrPjHwWrC\ngr0cDoiVTLsnGfvTT4c1t4dQIlqF1FIDImlZ+f2SEkR26hbuybl3k36aXIhH\nRvLwi0Vr4p9/SOC9SOOjqcct2OIlEva3haZJVqgbttdipxshyqAk7zahDgTD\nvlvDLLcF7+lS958J7OKFHeO2eyCsW3v/unjR86eEU2c32lQs43LVag/OTBQ7\nq5QnxXwDAuZn7LWYjf0X/l5/HOsehiVFfUsc73t6gEG7O81cAeb4oqN8ZU8T\nxeXW1WYgYXFZG9NAiI8W7kAINE/8Mp+e8hIwn6yiMuewI35+mBp6aw7mhh9Y\neLdGo5CXOQ13UDY7vPi+xrl08p2gDoGSI8csht8FgPMlRt5y04V92wrIzE+j\nSdQtwNMBSzIn+laLK4KMX1BjdZPsafAsB1dKRclscwJnMMEP+b1HjciaJBxq\naP0xTcY0rvrl1JfRVyvt6dszUr2hAcgiQW6O0JsROIvDwHHAXCHvAOzd/pNl\nGaR3KOHezecAsoH6apqsiU1NdDIBe1O36Y9alj+G+BCA5+p6IjGkmlSCDQo2\nOGdJxBIHVQ4tgTCMISP87OJOV7+d7SlZoJo6HLc5e2zAk/jBJa4acaTlvesG\nyaRbB79rJMvW3pIvDi/ZIkAlCmO1DloxAPXP0cMlh7iWSiVYecIroJeVzIBa\n1qzg\r\n=+y0X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCD9Joz4APaEj2g9hjly0usPttQSaJRLYGbgsKRO5bT9wIgSpADOgufCMhZpmHCoPAWYBkad0ci0i4EpQsOpym1qh4="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202179204139_1628541722937_0.9638274430200309"},"_hasShrinkwrap":false},"0.0.0-preview-2021724203738":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-2021724203738","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-2021724203738","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-2021724203738.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\n```bash\nyarn add zod @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-2021724203738","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-BLRJu4Xd4WL3Z28Y959uRlraaxgT09Mpx1Hfi52CvKMu32iYgJ3fjgO3hc697umWzCsV16VImV1BXkZl3I8wKA==","shasum":"79f6a2aa659a2146a67def507668b1c351b3f1c6","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-2021724203738.tgz","fileCount":43,"unpackedSize":172750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJViiCRA9TVsSAnZWagAA1UIP/RuyrEkVJHPb6qz8edcS\nrtJpoGMql5Ib1Yn9m8BwXZoUZhf8AknCfOOn+LNWqVEX4X+2ulmxNbl5edhZ\nSGEJgxd77U7sEiW3wuS5B+ZDr0nMPhAENKP1sE6FiE+2eygeaUuqrJGYFZ1w\n33cl6VClZga59su9grX8+eEfwDjQtAOnfAPXNylEF5JXueRKj++uetBSjEdk\n7hXR/hBuL2Y/c4n3wjTUyGrFBdKW0WqAfF430J5DNv4LFuA3clNfh1NMnfjO\nZPJV954mz1JujVvs36alz6Vo1megx20immEr2YRONZ/q7lcf8/sw1ya5UN91\n5G2ohaJZ56Hcm0UhIaAnFjuSAp6pVgg/H0vqkI9eyHi846CeNxHzbe+tXgLn\nI1/0N3EfwZLGl5WeT6OaiZTS3pJMCcCYfPS2vuPwYmQB5eXlYJjsiRdZCLR2\ndxdo4J0CwrCBB5REUwe3qmcoqIx4D7uCpCy/l1YtCS+z32sAc7dCUqkmOXic\nMIN0DDCwkGsaERtfL10tfyJCNDtiLYmEoQFXa8HSPE/46ZQnJr5WnfA+VwQe\nt+6Tl0FT5JqmcbJYE/pfLYF4kMS1pGsAue105qvNF2RX6zfIXiJprzE5Hpki\nZ4+fWnnQjT/6O4sm4SmOEjbD//tOf+zL8wNsRaupa+uyH689S8I3kRd7iWx6\niKlL\r\n=8/kd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2NyXbjfn7Ke6jsvjHFFi1a0AZelQccsY/sXPoOZhy+QIgJjNzy7lcj7NHWrK81nbTQ/g1SBz/8k6topieYEUyEaI="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-2021724203738_1629837474364_0.5355836497590638"},"_hasShrinkwrap":false},"0.0.0-preview-202172532716":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202172532716","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202172532716","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202172532716.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\n```bash\nyarn add zod @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202172532716","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-KN+TArnkVrf5uidicnzHET6/+Q0EWi9ng7QV/YZi5dWQ0lmbjeh/5U+TVYa7Do4tUILSov0kAFHIzLenWhNADg==","shasum":"a24fab0f7d4302c31db661afe83bb583e7bb2acc","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202172532716.tgz","fileCount":43,"unpackedSize":172747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJbilCRA9TVsSAnZWagAA3ecP/jGVkAXaJ3qSgDbm4Qk2\n6fMiRXLfNAxFeEFXDRWH5wH5GuC1hwdDkmxWgL6C46NMvH1PBwX7LJmsVhuz\n3kj2UtxEo9ZDWBHzsslJCZinfFhkdwAWu/ffwUktwrLlL8dmEI/U7qskSG96\nNgCbjXDKVv/X2cjkgNnKTA2tMC5V9aGRaa6GtWf2CaEcKmUQBsdEl6N0lNTg\nWGbzCyYQHBFphN0U2f3cxWQRbWrspnrII+jrKIvlCHsDEZsmOYJEmvcZZsxm\nQReukdIY6tgbC8NxOpiw0KaBwkaaBxpMm2EnOWGzkMC1O50nbyDr1Ku+f36B\na5umV+AKrZocM+yD0Q2gnrdSQDAp55/KZ7WdoM6RU3uISi13xauk1ssPfhY/\nnL8kl1/iQa9X+TEDpYVDrCxy0gp8Ccj3DbmwfIkJoEZTCElcVg/FIS1ExibI\neYSc/0vPlST68GX90y0Xy8Q1JyT752pEiLfDkJW2z/y2kg8Jl2jSVuTNIYQp\n5XpATqYp6uYUKUITctc06i5DwOzQPS/1ulHT79iGHRJ5oPOsPDQHU4qxzJzd\nH4EBhwqg7+00ytZsQ6NYE0TlPoi1k7ceYyWQmJvzm+WQmOEoNltMaeihusbN\nnTbJO0AcYYjGM39lAIdZ3SHOnD2EdHf5g4ASFKmN6EN97H6k+yL2qdlSGAmw\nyIfo\r\n=HViJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+CA17mC6fK+YOQYMF+GhLsvBQSFS4k3sMDmbYr5rMkAiEApI29vyKrWZkfzxLCk2ht1jd53tRjm6YXsyfg1awYILA="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202172532716_1629862053416_0.10963414722852849"},"_hasShrinkwrap":false},"0.0.0-preview-202172534216":{"name":"@giraphql/plugin-validation","version":"0.0.0-preview-202172534216","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^0.0.0-preview-202172534216","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-0.0.0-preview-202172534216.tgz","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\n```bash\nyarn add zod @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```ts\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```ts\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```ts\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```ts\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```ts\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```ts\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md","_id":"@giraphql/plugin-validation@0.0.0-preview-202172534216","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-9iQod4qjgFVN+ugQMmDt0aX1dYz7jxGPOCILwKhLTUB0ZgZYQnOPBboRM8bILCMvMEJtjM7lV6RXvk9Qn5dpBg==","shasum":"2babb401a8d20f63e820ee8dd62184a1dca731c5","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-0.0.0-preview-202172534216.tgz","fileCount":43,"unpackedSize":172747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJbwmCRA9TVsSAnZWagAAENcP/R0u5Vxkf1lgsjHova7G\nNNOEOWvBvReyh2bERmYtCg6OCWYL/MOmawgMYvArwhJxJUOejtp2d6QPA2qr\nmOKJad+vusvgxfhLJShMsEzQ+befc0csn9DkDZc9Ajc8rGauXLHbdo8h4sZ1\nwl03malY+hqqXGsO8P9Vw37TX93ecA+rJ5rkLLAYDMc1yoRKGzCERkVPA86O\nGqazzs3L40GH2ai7SpcQ3BT9XUtIRX16VzvVEDInSghpiLvn6euyzzXobxUs\nv1tBonrmZGHat+im/HRgCZlMJ+Y92+5aIb5aCBMVItY94GekgK2+mqhfCi/D\ne23ltBoMqRRktQSHcNlNJHEB6obZXZOEaTga+nBc7ZhRb98EyclvjiTEPOFh\ns+eoSnvKlaiGJIfTRRsr8KKJdiun+A738060zcZdxEaoJQoj51+zfCh+Xs3N\nYMOCe6q/lOUDYu14UjY3YzfcWD0lNmVtUipCy1s0Rvfr8+r86JuOouqdp3rm\nas1O63ASRF/bYl7kEG1J4ZdghppRWtBOdw1Byyiu2jeXrlH2K9zMbF+XWIcU\ncpC4QwJ3/o0815Cn7AN3YASdRYpYQdJTdVGSEtg264mkJxx/KsMR2ljdewpi\nsevl7+TzD2+EY9RTZO5TpsvPP7fi9ROk6yGxODJ5sQv+F6SJfvSY7p7Le+Sh\npt12\r\n=GgN7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkMdxOQ7ybGYRApIzuT8+drGAQUmNEpMJdLmpYPLzhsAiEAlZ7apViGJBjxKaZ4QctnB7W78Wp+NSeoKycX1Ts/uLY="}]},"_npmUser":{"name":"hayes","email":"michael@hayes.io"},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_0.0.0-preview-202172534216_1629862950409_0.21185866133773468"},"_hasShrinkwrap":false},"2.9.1":{"name":"@giraphql/plugin-validation","version":"2.9.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.14.1","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.9.1.tgz","_id":"@giraphql/plugin-validation@2.9.1","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-cVdumxf+3C6j9Ors+u8n8ijfbmaln+73Av0QCoACIRqE2fwIjFDm5cTHLVJdRYE85w5agjF86nqGNJiiPqrJvA==","shasum":"11db733bdb38081e3f4e27602b94ed0219e2db84","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.9.1.tgz","fileCount":43,"unpackedSize":172685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJdVzCRA9TVsSAnZWagAAkgoP/1tYjzq7Ifsk2VkRDJZZ\nMoN9lxewfB81XBVe6zrrOBNXWFE/C0YLW4yXYCMJh2h9gaQ2O5iMNlI91BKN\neqM23yvrAGn6/blkuiUa4oUOCW9w5z94SUljmfKX0591bQj5SGQyulym1xVj\nru5hlXA3N/HSaLiTDX8J1cDspLLjrDtE4OhuRTCqzJvUhBDnru+ec4mtrJ72\n97SsuEuMPvRpFlEPw+CxYl+a78hjNT/YPn7Gv/Szw3+9ksP6hVk8Yduff9ar\n+q29ikm0Hd2QEkURTZ7NcB+e6tLvnLqh9yE9X5+zgllika8mL5BQ4YrtDdSv\nKkThNY3kcSEugUguUvUwGOi52IG7OxQNG40ZYT6286zEgzNjhFlI0XiZAe6R\nm4cjIzlCc+Ckx4t0+FvIbrNgzv0/4Piylbc8xDQj012ASPGZEgkwuq2MbKdv\nnnZJC6qgWcEIB88O489YnzmVQ0ouWnihtFttPPknPCH1iLmATD63XIQRiOME\ni95c+Mskf6K5hZvEIt95RwRnD3rorNwmbLa8pQqxZVNwQ+n2QXofrXP3tqBk\nOQD44YsmUem4DHoUCqrEseufRdSI7t4hjK9PAYoPp+HF10ktu7GLhPvzEZps\nCjS0xo3MXGPAI2//OkHWO/k3OxLqzNKhEvCEy+XG97QrIBtbGWPRHRFnlRuW\nlT5M\r\n=+0MQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBa6hE1MA6hQeyUNRktU+Ele94ZYEVgzONGykWxlXFAnAiBy4+UKRER1coFewQBNcGzrxeIJpc2Kivxo3YJl/JkYSw=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.9.1_1629869427497_0.9300484918395455"},"_hasShrinkwrap":false},"2.9.2":{"name":"@giraphql/plugin-validation","version":"2.9.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.14.2","apollo-server":"^2.25.2","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.9.2.tgz","_id":"@giraphql/plugin-validation@2.9.2","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-7P+6SHCwbcUd4SZPnPURCHi945+k9VJdhlwGZb6DzuYQaokPSZI6nFF/JMM/eqbKH/lLmfPNsedAy1VhsgYyig==","shasum":"6fd82312c4fcf4ade84fdf011634300aace5c2b3","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.9.2.tgz","fileCount":43,"unpackedSize":172722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKWbcCRA9TVsSAnZWagAAKgQP/0WLmNHOT+vjkpcOCfpw\nwVMmrUMIG7oWLGpYqL7E5jYlWHUkDJoFZqwIMTolRqQlf366gQRJbGapLPOi\n6JR+qb+PJszyfnZz2+FOE7ptliQEt3mjXc3wotPt2Rkgz+5mGeznVROAWz1H\nLH4VGaO91pjuB8hjwxCVHUHH6+Af+Mtfib0qkaQz92HKnUIPSMsonyZTBDkx\nuFLrk5qL2Q93LIlmlMkBn61xu73VmyXKj8f7kCWSVIaoNYSPY/2EEl9B+cmH\nFPAnFjUztvfdNff9xNPr4CbinWTau1dnGP5TslDZTTBVKmpVi7JK/fJBo7xy\nePnaRDcp9s5X4g7P/YNHBFvVj1FjrxHU65OtOqwHz35pKFJG5jI10r7cNg4b\nl1ibFMxMyQRJpbaXHiJuWViMa84UacqJwl+oGApG/uA3WaWnKsOAKfosESqc\nBFIOHpw9RUjAlk2sQQH1zrfyCa+DQEJDaK2kDMMr6rAY78E/TTUnPk6Tsq31\nAOSRod5BLU0k8IqGyj9y37yO3DVTggv+LmHRIDYdNGNtRtbEgvy+1FY8k0mI\nJyVTnmhAckJ73TVEzDAijZqiUNRr5eZrkjd/trUcHyYoiIwrXkp36Hu0V/xP\nxW0qoKB3UqzIpuP1N8LXnqHt/0IKLMDpCL+4qi6p6YVVJxP9NNghqkRjiY35\njkWG\r\n=cFti\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAm8n7+qCmtNtJT8+Fph/5GMqgUm//e89bR69uKgLNIxAiAZXyZ1Ns+tdFOMV3GoBUrlIgZ+qJhla4SePulvWLlFQg=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.9.2_1630103260061_0.41789410169868324"},"_hasShrinkwrap":false},"2.10.0":{"name":"@giraphql/plugin-validation","version":"2.10.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.15.0","@giraphql/test-utils":"^0.1.0","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.10.0.tgz","_id":"@giraphql/plugin-validation@2.10.0","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-+ugBirwY3SWEVL29OjPVszQX1xqeVpUdikVHb86Aq1RbmVBPOO4yjwom2+rCguyivWOhhJgiAr7HDUfL++ytpQ==","shasum":"654d4d58d4ff47bd4054c2f277ac1fe535be685f","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.10.0.tgz","fileCount":43,"unpackedSize":168686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKzlVCRA9TVsSAnZWagAAmXoP/RAKNPJwM4coUdm0vTkm\n7w950LFwvDa+2S1JvSLM/+HvElYtXaSGy23je/VfBf0diOTFVmfT4ih3lTii\nuK7L2Z21st0SmUtgi3mDRVks3yJp4R5MbkrGShp26GR0EHLhlPHjBG1XZGjV\nvvaHGHots+kHi5AE0x0QXarlj0T6nmBXrrh7n7WeDouPj9UZJHC2wtsABRa2\nW/58Yr6fX5xk/jNAjcxhIsaLCWfWyhQOdrwCUeKcsZekcKuf2u+7N/ovp076\njrzgMLm8OcT4h2oN+qCrREiJKP3TT1AghYAj9RaOZQUIsKqk/DPsvrMSiO+i\nAbJPt8A1JarKAe5TlKmNVvZw3geODVAvcAYuOKczo+8eDpbivqlnwmCXYQOO\nC7aoXzAU6AGz+oWtGK3Nn5X6VG/nRPutRQsERIoq7CMnqPMBcvpRw+hVUud9\n95k5zdUsJOF49NZ9qcVCYlknP2Zn9+Rvec/k0MGTzjUPm/hQlG074Df5mSS9\nbXEw5l3f1Eem/rG74D30ztEUAZQjph3QNB6ei6EugMhZBc/u4A9vZtwsccvy\n5iACcJzaYGfeh4zyoPPK+PEb9IHi5vSe/noFRTu3kbxWOOjOn96ulCMWHJWb\nIQPjHJt25Qi1zkzouqBHRN/yAnvnSjHf4QKq93jA//xjs+f5tB6EB4xtOYzU\nfHyQ\r\n=BkLL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfGEL9NTdlyhSeWa/CFw3VQC5vTQ5tpoL7VGEhXW9gHAiEA+zTb8XvCfcAYbaO2s0LtZnGHs1WBipDMuZSe2fnXa2E="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.10.0_1630222677733_0.16235211092251234"},"_hasShrinkwrap":false},"2.10.1":{"name":"@giraphql/plugin-validation","version":"2.10.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.15.1","@giraphql/test-utils":"^0.1.1","graphql-tag":"^2.12.5","zod":"^3.8.1"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.10.1.tgz","_id":"@giraphql/plugin-validation@2.10.1","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-S8wKmYAsICEF+7gFjoVIGJvXemk3Dl7fRmrBHmyN2Ao9sf/xgYx5RsLrN3+UOSRjl+Du4KjqIOJQWqW/Cd/fLg==","shasum":"d48e39d381127cb675eb6f9ee34cd8d01dee6ebe","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.10.1.tgz","fileCount":43,"unpackedSize":168785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLRiiCRA9TVsSAnZWagAATw0P/2iiGQlaCzHIbW7LiuwR\nNvxOuPIEWP1Q0t1CieM3i4ieV1vAcQnp2O857vcDW5HRCHLIDq1HkbdOFy3c\nXb9QigMPvUu8++jwellcuL7gAyUooIptQOAYIPB6n+bl+75c06foPiGysRpk\nDqnmHLiRJHGGkelMbpv8rlfETHuT/rYy59eL74nxEGMdl4PCBu10uzndAvTT\n87O4+8PvxEAj28MmFA5wiCD/LEpLWYLxsQUXc6donL6XP+yaFF5KCyLcFL40\nwR+Mq6vWqTCKo77QomqRDe/WTetpwTZRx/AaF2F41IKNPBnLY6RNx8whrMk0\n1K7dmKd4x3r5gqoh0p58SfI3sYqWyfcfVervlcAZydxRpv6CvS/V4jTvzNCx\nP2B9afKMmQGdwL9QTtobRa3/MJZwWZWDiIPv58MXq6FuiVa7rJTel7ObcEgn\nXxVBszk3tFxpjQmKJyLDUB1ihT/lX08AINgpM6ONLTaK4iTqtrY7tOD2R6Ym\nUQhXg7d8dv2R381vA95Y5QJyqhj3oIySkHIjUJy8z6jiQVvzeLnvXavbbZ2M\n8xyUTD6sXJ2IFYjuiBcuelZB+Oi0ZlPOZm2e7HkFvcLmPKoHfy3nv97t+4cT\nNy8YB92wlOdUgJm9UpEuQ6X2L5TBE3BJFungcs2Cnge8vU73X8OdH7MFQSot\nxzrK\r\n=9vbY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJAgGurXZs35YcROZ9w2NdUa6+ZQf9XHcqf5nKKI67IwIhAPjd7cTm7PqHC0lnjgJapU0fioZywbobh0DQrfX5Q/Oq"}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.10.1_1630345378527_0.9989487509832857"},"_hasShrinkwrap":false},"2.10.2":{"name":"@giraphql/plugin-validation","version":"2.10.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.15.2","@giraphql/test-utils":"^0.1.2","graphql-tag":"^2.12.5","zod":"^3.8.2"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.10.2.tgz","_id":"@giraphql/plugin-validation@2.10.2","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-TJOCwdlZTSl6gNDVoTOoZzxFrkHTNh5azcsgrdpWPjHbMEuN785UIExVjJigR2AMDGHc0VYt5u1Jo4M69v8cow==","shasum":"00a07a477cb4eca6b979254e4f12f4a099bd60ef","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.10.2.tgz","fileCount":43,"unpackedSize":168276,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAnohQbsI01GCBQa5s9LkGfMncKkxK9WvnHZDu68iItSAiEAo3RRi2EU8zmCbZ+C0uVd7EngPe+kl2B5DsD/LR48I58="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.10.2_1632278622426_0.6164113492135312"},"_hasShrinkwrap":false},"2.10.3":{"name":"@giraphql/plugin-validation","version":"2.10.3","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.15.3","@giraphql/test-utils":"^0.1.3","graphql-tag":"^2.12.5","zod":"^3.8.2"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.10.3.tgz","_id":"@giraphql/plugin-validation@2.10.3","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-YP8D/EaNYNjYQ7VSqB9o3rw1K62jOrzivC13ma9XV1888nKxK89JmGzH4imCkQ8ltYZpMJjT0cR3g7m9K9HPzA==","shasum":"050ed5421f37bc5ad2a84bc07a97f384b8b143bb","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.10.3.tgz","fileCount":43,"unpackedSize":168244,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA09O91yk1DnizYztuYnRgSDi2QT719eKfHg8wdSk2FwAiEAwT35Md3W66y+D5luUW2eT4QPpXHiXFUTlzzCFuWmYsg="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.10.3_1632446682722_0.3100315643625189"},"_hasShrinkwrap":false},"2.11.0":{"name":"@giraphql/plugin-validation","version":"2.11.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.15.3","@giraphql/test-utils":"^0.1.3","graphql-tag":"^2.12.5","zod":"^3.8.2"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.11.0.tgz","_id":"@giraphql/plugin-validation@2.11.0","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-C/LtMtTSclxhg70DzLltChX6lz+zugSw/ym5v5jZgkuK2Q9A8xlKYjGHa/ApNPrQY57jQL/J0MutPnZbkRsj1g==","shasum":"c97afeda6d819c3b87184a1ca6a236fc11d2f836","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.11.0.tgz","fileCount":43,"unpackedSize":169888,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/S2BafPjzl3d4dTZ1Gh3Uu8K1U1VdhuwFdiEs6G4KvAiEA+50yzNTAAajIS67k3wZNx5bcB/iQaamadxZfPBzmvHY="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.11.0_1632449295813_0.7724502468624852"},"_hasShrinkwrap":false},"2.12.0":{"name":"@giraphql/plugin-validation","version":"2.12.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.16.0","@giraphql/test-utils":"^0.2.0","graphql-tag":"^2.12.5","zod":"^3.8.2"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.12.0.tgz","_id":"@giraphql/plugin-validation@2.12.0","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-6Oh97wxYV4ndfhjNGJFVrsGIv+F2vcgfWK+j0apEqPmcLq8vY0/UzYpjXZNfObFY5UiKzo/E9w7jAhf4S7tnSA==","shasum":"e6d9e127444d8c06804f2d82daaa980d30b5b6dc","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.12.0.tgz","fileCount":43,"unpackedSize":171986,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDuiaPPOQapI8psXbjYFPcUa4PKgPktRV1/EstONx7AAIgPi0Uw5NTQE7zr/fyV8ivWghpcEujYUmInrlpDLESHYE="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.12.0_1632971283194_0.37835471172369384"},"_hasShrinkwrap":false},"2.13.0":{"name":"@giraphql/plugin-validation","version":"2.13.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.17.0","@giraphql/test-utils":"^0.3.0","graphql-tag":"^2.12.5","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.13.0.tgz","_id":"@giraphql/plugin-validation@2.13.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-bEuTGAoEXi8ftmGVbVtB06Sr6OYz8PD2X/iMAI695ySysNKk41N3ms8lAKyV6qgdMYcs+eCarJe5jBtqc4bI2g==","shasum":"bcb909d7535d7856b507213d56b565a76c7511e7","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.13.0.tgz","fileCount":43,"unpackedSize":172202,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4fqMRln5K4A7CYAWDhr3sfW6qjt6yNEQ5wbSDTEwU+AiASosiieq6ejKnWeXhlCWROhxgMA0A3CS7SWjd5V6Ut0A=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.13.0_1635985517568_0.7037795151362716"},"_hasShrinkwrap":false},"2.14.0":{"name":"@giraphql/plugin-validation","version":"2.14.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.18.0","@giraphql/test-utils":"^0.4.0","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.14.0.tgz","_id":"@giraphql/plugin-validation@2.14.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-YG9zSbOoBXuBZHeNH0kARLDRikVmAd3dO/P1ABkZZqqdgq+xIIc2oxHit/dL9gMKU9wmvno6LViAIuAvRH2UUg==","shasum":"c294f3d4e135596d144aa157730c5afe9b3b650e","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.14.0.tgz","fileCount":43,"unpackedSize":172616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlEjMCRA9TVsSAnZWagAAwPkQAIDqrvbKo2jYMQ/x3Qh1\nR79AbpVo9l1B2Znh6+OFkrP9tH5/poL/DdhcMmwdyGRyGBU1EsNpDVh+qsaB\ne6fZpgdPVEfSQ+UcZYa/NcjR/Rm7QsD9D5JvrlLmGrYz0kvNEFMNfWgklg1O\nSUABZqvDior/BZHXA2K9kevQY5zwutjeDREuWep8jWFdhTVC3jcjXHArULgM\nwcaeUo1XRSb04gLG+KuTreXP6FtaKwdLM3yjgDtKqZF8o/bvbd78gZz1OSuB\nCpFcro4DakLFVwcUXp+acCd3MZtehQ8/pj3G1jfArxe4CODctl3kxAKUNKbf\naS0QftUYRM+kB7n2ytrmBVou+1YBpdm7gQEZtHJ1BABZ6B+UiJ9E+JYqMMlU\n5PSl2INUPUnbsDF8+82iojGkRClLWaIKntf9DJEo7qHQiDs9JLoxN3MT/cwZ\nWX2iXOoNgK/D49LbcLnD8U3DRh+vkrPPcQsnd0mETBQCLmGvrZDHFfMKJR+j\n1N4fsDMRtNLinHxDZrSp1+GkdUBSIvez5ocoCoKSo5yZZkP8CNCg2jCaJ/zi\nSv6OVzLr1Q/riioD/QgAnoLhOhzlJIiWxwCLuOrFSJorJwm1vcL1h7BhLGM4\nlgL1p9Vpo9forIudqaNl2++YMuVjpsGcIUQ9NHe1cWfAgqLcogOhYnA7CT8T\n5HJm\r\n=nreQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICFCTU3pCG77Z6xB7GCC3z9fkExT3mTgFWhlCZmxxdRcAiAz34bMc0l8KSwLWXQwo6f4BfXkklROHJqPjdvR/MuXmQ=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.14.0_1637107916451_0.018096463750881808"},"_hasShrinkwrap":false},"2.14.1":{"name":"@giraphql/plugin-validation","version":"2.14.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","types":"./lib/index.d.ts","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.18.1","@giraphql/test-utils":"^0.4.1","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.14.1.tgz","_id":"@giraphql/plugin-validation@2.14.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-nTwe2t0sxNs6+h3FYLcIMfDKpD7lSe1fKhZJY89HWrCuGyAMI9KznSfbFRPE5e3c2E5ZxOMDm9b673Rcb2BHCg==","shasum":"7171dbd121bcea98aea24d4d9577a40749855652","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.14.1.tgz","fileCount":43,"unpackedSize":172721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlHFwCRA9TVsSAnZWagAAhqMP/R75nQ1kzKqYeiKhAPXw\nDYO9x4aDcUZx4tug7J31HN+3fyqCYTS9Tie+KiXcUjYUd6w4S8KKAKRk/lqg\nv09mlo1hPP02958GD2YlrddB99qgtva29bD4gKAKb1a9S6gFg4nXiOLLoYUO\nSL/W4csOhjPLeTzIppBxkaqhnl2FXpK03T/OJ3QaYgxEPE4RscJvEz9OQj5b\nNUrIjk7d8465Fe49GXLfIdpKSuNX+1MV3pTsr0bMvLeYrt9Hr+Su9ZSYOKGF\npIaw1M+ZSd75YTjJMEN3QSDQ+vj9luAaiaLiNn6BvIIq/zITFNoYq/tIuVME\nUZdnJCQkvVJPyoB4oFCehNBBMlMd/pTeYP5RF9IAIyq0pgtO6cCR+ELzDIxR\nZh0A9UMwuoo/PAaPTKaW+wCIFF/EtMEzXJehzRZAYyMT+yFVBbJlw15LzUHX\nNgq0g/BeRd8QrWpds3/sQHh8IcNssWrtuAizvX2qoR0fDasZCy1RobNxd6ZO\nxJRYAINQiPpOXnRu1S18SICu390Joy/Ls1WTGuhlR1X+/u70n1XA9XWhSi/E\ncMzjGm/2WYyoQDB7E2Ceee3+HRBBSVj6viUTELAqD/SP2Cti8OP90T11y2W9\nUFdRmZ4HeeNJiMleOApv868HGNmG6P9Lsz1/jEyA4rZ0Y/cY1d2qbgmvOfeE\nrRvA\r\n=5q2D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIZYu7/hVXkRapuFkRlVCYeEwDsosPo7A2C1aoKqFIjAiEA4dHL2zwmXezzJcqWqL9kCsFSCKfMKMtXnxEeHCDAM/M="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.14.1_1637118320719_0.654693618549506"},"_hasShrinkwrap":false},"2.15.0":{"name":"@giraphql/plugin-validation","version":"2.15.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","types":"./lib/index.d.ts","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.18.1","@giraphql/test-utils":"^0.4.1","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.15.0.tgz","_id":"@giraphql/plugin-validation@2.15.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-1LJUQB5ulx6cJWwXgaU9Gw1LKy4Wjc/ZGTGVFS1qI9o7sQ3EbJPVjcOjZvfe8NGjmQlvK3OVSX/1RPfRC34wyw==","shasum":"151d1ed5f72267d71e1636130897000773d1a2c7","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.15.0.tgz","fileCount":43,"unpackedSize":173041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlI7jCRA9TVsSAnZWagAAXf0P+gI/slkxXmK3ARu1WaEV\nYEAQgbIVhFIgha2ZjuUPraB3Kdkztbz4TMOqxAJDfyFFtzFBJjRj82p/Dr3v\nclrRZqe5fn44wWSeooEMEHQQ7icyDss4Oj1MCjL084c5Yrng8YgBHZgnyH9u\npvpCFwT6hWLOIc3DJ6wdH6sTUC0sHyEkSWKf/PYv0AhbdWzU7rTNdUPO+C3S\nVNN0cqYYNMwMvJX7r31TPMyyHpYm4TWNV8uyCvMT85vd2iQIYVlIaKYFMJtp\nxfa2umju5DW0FIF/qhylkp7UWxu/65cvvKMI6zdFaLszMC6JvsiY2XL9Ec9q\nx7AGenXX232GMnl5TqjXNmDEDw4HH9TKZhsDPVN15p2VuipS3InTMx0zET0F\nu8flvfcy4v4KdWgYIlVAqvEhEdHkIuJee30v08qPasNLrL766U4PuDiudtTq\n2deo3hPWEwcaKnIe23MnavA1LR9pm680+CdE1GLGJihOBWWZ942yfZu4hMi1\nrL81vRp/e2udf4A1YJdJdAzBW/h1uvG4P5sinSb84fiZ6eB0LPzOCVvM8LwO\nAUzC5gWJLmxH7OQL/jPWC78NFW3PTUu9o2/1JTdFjR56E04ZOzV+0GjMnDQU\n4bhshWQvP1jKrMHTBqduuH/OozpK+hBGztlvXFVUKIgGfVs1EKCYHvjfXxMs\nIBta\r\n=C+OX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0QVjFExmM9uaFAG1HzHVNFeZHBdYckvZ09GA9s+/Z6AiBYDnE29vEDGAqbg5qz2l9LvGu2g0lEByl4M+9LdP9lYQ=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.15.0_1637125859492_0.9275338968430524"},"_hasShrinkwrap":false},"2.15.1":{"name":"@giraphql/plugin-validation","version":"2.15.1","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","types":"./lib/index.d.ts","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.19.1","@giraphql/test-utils":"^0.5.1","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.15.1.tgz","_id":"@giraphql/plugin-validation@2.15.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-FR+qEtw+RuISSC7mKcpvkYSe1K40u2tOfuu5+pGFU25zJSgVXsJQzhiUWjbh1z0OGhrCOoYnHa/LGoUoxh3HSw==","shasum":"bd87675ca4a9505ec3c0fcbda9355f87581f83eb","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.15.1.tgz","fileCount":43,"unpackedSize":173336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpb4zCRA9TVsSAnZWagAADtkP/RxucgcSEPI8YXQuXZTF\nbiHVg36g+1dgqOoJI0GShjZ7bMe4cK4L+DibY2rw2Ji9cQOGAC7oZ+hb5ej1\n2o2cW/Gxu3joSAXhJxhPR6Me3HLvQsSbFTzpKKThCDrSqLc2BM58dcPKqqSp\nC9Ax/5jmzxZ/33fuAdGCyp10J1WgyOoOpDbbscOOhWRuXV7mU9jNxd6gAHGV\na05+CXh60C5LWO5Msm/Gu4yUhZSVIMq6TGoIcv8SQ5nC6Y2daVsGgyco5jvp\nAdzeF6lEY6zB3lTllDBuc5yNMbFDLogdaObseSkqSh3xmGDcpI/xiZJHCwtT\nmlmIlnri7UaKVHamSNA2mumzoi7N54VfIrpY6uOpod8fzjMV9MOCTujY4hk8\nOk89SIKRkv3sZ9ReaEfkcFNCVPEweL4kBjZG48KFUbpByOpGW4AHyp6KS3YO\ncN9fKC1ewVsRMrJCsO0h0ZM51dlLFvrmFAmJJoXqkFfuyds5J+IjT4FoSU49\nXs68W9L4vxByKX+iYx2eJb9Z/egX+N500XIr1Pora+KaVaVbZGf2i9WIM6MD\nw7vkrAffVbYkArs92bYxXlW9MFUp+APv3sjPGYCV9/oyJGxGIUxaJkuYBqRS\ndNpcQyG4EVOyJmclgPkl5rTwGy3C0gB/bRYjgbS+OM1Qm11Ed04fg/CNu5i3\nlVhG\r\n=f2Q+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXEfiMWUxKqHkNHK7kO9WEnOMmIs9XfQPgSLEDliamegIgE61lujkagJ3s81mLjYg3zDUUfaG7L6cu/N9Dx8ZgLAg="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.15.1_1638252083213_0.6429158785164757"},"_hasShrinkwrap":false},"2.15.2":{"name":"@giraphql/plugin-validation","version":"2.15.2","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","types":"./lib/index.d.ts","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.19.1","@giraphql/test-utils":"^0.5.1","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.15.2.tgz","_id":"@giraphql/plugin-validation@2.15.2","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-w6/FkQI3N79Z3HT5wHl8S9h3WM87Koe71WJjqUJsP6GHm1jJ6ye94Mgx4bOqw0leib05wZNKIUFqJMCoM2yPuw==","shasum":"08e16123ea5285bf7a9f4d407b44b3c0ff790012","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.15.2.tgz","fileCount":43,"unpackedSize":173525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht+ySCRA9TVsSAnZWagAAV8sP/3qBvApNtP3AgvC/UKRC\nDLedM9zap9+3ENHQgjiDdisrBvoe49ayn+J0hbn79GQRfDm/FcV7uVj678Sv\nTf8hbVOaYpwcRRS436tdGSAu6JMOr3ZkBNOXDjwZ3fQzs/wSHlGW4km0BPRC\nzP0g7eISyPGYcXxrn+ncmqXV/yUE6fuBXzPeH1pQ9gQ/GSEI3pZvUWT0G4p9\nZMwNEWguJCOlV0mGWmJJPRXv+vqgRrbsIunpcukm39bpAH8yz7Fd9urX7K9b\nafeiPDCoQm592rB28YymhYaGJB7to4lK1QWxr2Q2CRlfMum6p6BlRaY5tIhE\nL1JWS2jj/y77jvqrSO557UyQUoJQEZFnbUFxZqMGM8eh/onJic0oj5f7CvHO\nkcXhsEj0pm5coh1s5qpdyyRAXknO2xLzSkRwygPFKV4pHbh0DIMmry8wDC2H\ng/fLExdRf8Q42k1QwP2fzCOIve5rHhWA6/GjSE89o020huWU5vIhgoAbf/pJ\nvLqbvFR7L4cWDaTLbUkYjjOREBmZhhN3jt6Lj2Jm3lcGJI5cLR+pG5wxktn3\n2tOzKHAnXO3rNQaVQtsG9S5eAlzrahc4nyg7DHcTl8OqhCTjEdG39QjSJPor\niHVaMA/8E2R+N3imqbuGAbaJS3PLjsFSRTzX+BfkGCuOs8ryXp1jblFP+sbn\nacWr\r\n=eHoM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwG7gH9H2rhc2ptYnebLwfKxubIZW8odAdqhLjyMHvNAiAeuaDP8IqR36PkkK5T1Y3vTBLvMXuxxXWceXMwh3WmYQ=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.15.2_1639443602333_0.4895271647985211"},"_hasShrinkwrap":false},"2.16.0":{"name":"@giraphql/plugin-validation","version":"2.16.0","description":"A GiraphQL plugin for adding argument validation","main":"./lib/index.js","types":"./lib/index.d.ts","module":"./esm/index.js","exports":{"import":"./esm/index.js","require":"./lib/index.js"},"author":{"name":"Michael Hayes"},"license":"ISC","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"publishConfig":{"access":"public"},"peerDependencies":{"graphql":">=15.1.0","zod":"*"},"devDependencies":{"@giraphql/core":"^2.22.0","@giraphql/test-utils":"^0.6.0","graphql-tag":"^2.12.6","zod":"^3.11.6"},"gitHead":"9dfe52f1975f41a111e01bf96a20033a914e2acc","scripts":{"type":"tsc --noEmit && tsc --project tests/tsconfig.json","build":"pnpm build:cjs && pnpm build:esm","build:cjs":"tsc --module commonjs --outDir lib","build:esm":"tsc --module es2020 --outDir esm && pnpm esm:extensions","esm:extensions":"ts-node --compiler-options \"{\\\"module\\\":\\\"commonjs\\\"}\" ../../.config/esm-transformer.ts","test":"pnpm jest"},"_resolved":"","_integrity":"","_from":"file:giraphql-plugin-validation-2.16.0.tgz","_id":"@giraphql/plugin-validation@2.16.0","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","_npmUser":{"name":"hayes","email":"michael@hayes.io"},"dist":{"integrity":"sha512-jmfcqWtBnM+rnY+o0kT4InfEQPZyGG4wY5N3dhhtb83UNPfthIEivvomRQQyry1l57MpYnKD28iaNdqbJt230g==","shasum":"fa0806d1dcf1762325a7ce7e8531754b2ed0ea16","tarball":"https://registry.npmjs.org/@giraphql/plugin-validation/-/plugin-validation-2.16.0.tgz","fileCount":46,"unpackedSize":177314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuX7UCRA9TVsSAnZWagAAmAwP/R2XN1S0PdP0EPPfcg0y\nlp2CZASq2fyEfUjL5wycnV9TotQN8jGQOrmB4JKgT6koafdCX1BjaFUl1n5u\nuLErSWuBX8YFch8p3n7+VkGvbA2JlYT9R3V3nYIxf5VoRFzbfMdguaANx14z\n61eQKjrnX6FnjY9ws+lDQxooUil0C2DtQu7WD5wTG6hu0Nnaai2bZy62OCtF\nGU5xD6obXIiE2p6MmwOwR+5/E0upUEX3Q5Gkxz6Myksx1iIXyj2HTotQwjey\ncpyO6ZxOovM6cg5XUldiq4vWF+5XDRmnMg37ZdeMriKqrVsZD5vwsy4aaYRU\nSmSQytKSO40MEvcvP2ISYHCfmZwCf9nwF9TFwqI9A3Rl2TCOF26MoTVVSDy7\nmDabuopg0J964y4NcN+6YBuuJdmD7Vb5EDQ/pVzkuhVL+ncWODDGykX6Ordl\nnlyf+benPmXBigm25GMofkDiISR+RTVyvHsqRWZNislM7o2oD3/izv88rK60\nZoXypRBYRfLCtKNnFC+b0JDX7g4L/V0rOTQJs1LNeWax81/RqFT37K9vxlLb\nye+QbNI6Mk8BuKs/kRlVUwzCvBPaKpIJLDo3m04HTgMleBgmq0kNA+3v8qZp\nVrSVEE3KIAQ5kIttIkXHhMwxcXiXagoeYr+8uvl2nWcXkGa4XvRlt+OYFN9h\n2LuS\r\n=8nd7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGRp5GOOJ7A34RYwRWDJ7qF6HnVmm3A9XVjYMed7+sqaAiAxoyex3ncfte/RIZHqEd7JF/Q4X3gpGmhp8kSk8MUHBw=="}]},"directories":{},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/plugin-validation_2.16.0_1639546580446_0.53135359161613"},"_hasShrinkwrap":false}},"time":{"created":"2021-04-12T06:16:51.840Z","1.1.0-alpha.0":"2021-04-12T06:16:52.217Z","modified":"2022-04-05T14:20:14.065Z","1.1.0":"2021-04-16T01:40:21.281Z","1.2.0":"2021-04-27T23:35:36.640Z","1.3.0":"2021-05-02T01:39:53.814Z","1.3.1":"2021-05-02T03:22:38.318Z","2.0.0":"2021-05-02T04:15:03.726Z","2.1.0-alpha.0":"2021-05-05T23:04:42.822Z","2.2.0-alpha.0":"2021-05-08T23:09:26.950Z","2.2.0":"2021-05-09T00:08:30.136Z","2.3.0":"2021-05-10T18:01:42.796Z","2.3.1":"2021-05-10T21:40:08.170Z","2.3.2":"2021-05-10T21:47:18.872Z","2.3.3":"2021-05-12T23:06:58.710Z","2.3.4":"2021-05-13T01:20:03.391Z","2.4.0":"2021-06-11T07:22:42.055Z","2.5.0-alpha.0":"2021-06-28T01:13:05.019Z","2.5.0":"2021-06-28T18:28:39.526Z","2.6.0":"2021-06-30T20:05:25.328Z","2.6.1-alpha.0":"2021-07-04T03:32:31.397Z","2.6.1":"2021-07-04T04:23:33.148Z","2.6.2":"2021-07-10T03:43:55.121Z","2.6.3-alpha.0":"2021-07-17T03:50:52.459Z","2.6.3":"2021-07-23T18:41:58.863Z","2.7.0":"2021-07-30T23:28:59.397Z","2.7.1-alpha.0":"2021-08-02T05:07:07.277Z","2.7.1":"2021-08-03T04:04:09.702Z","2.8.0":"2021-08-05T07:15:41.429Z","2.8.1":"2021-08-05T07:22:39.271Z","0.0.0-preview-202177065":"2021-08-07T00:07:08.198Z","0.0.0-preview-20217701452":"2021-08-07T00:15:12.101Z","2.8.2":"2021-08-07T00:15:36.563Z","0.0.0-preview-20217752147":"2021-08-07T05:22:07.262Z","0.0.0-preview-20217753333":"2021-08-07T05:33:54.417Z","0.0.0-preview-202178182932":"2021-08-08T18:29:53.685Z","0.0.0-preview-202178184810":"2021-08-08T18:48:29.920Z","0.0.0-preview-202178194614":"2021-08-08T19:46:34.258Z","2.9.0":"2021-08-08T19:57:26.103Z","0.0.0-preview-202179204139":"2021-08-09T20:42:03.101Z","0.0.0-preview-2021724203738":"2021-08-24T20:37:54.535Z","0.0.0-preview-202172532716":"2021-08-25T03:27:33.591Z","0.0.0-preview-202172534216":"2021-08-25T03:42:30.566Z","2.9.1":"2021-08-25T05:30:27.624Z","2.9.2":"2021-08-27T22:27:40.281Z","2.10.0":"2021-08-29T07:37:57.868Z","2.10.1":"2021-08-30T17:42:58.651Z","2.10.2":"2021-09-22T02:43:42.610Z","2.10.3":"2021-09-24T01:24:42.950Z","2.11.0":"2021-09-24T02:08:15.963Z","2.12.0":"2021-09-30T03:08:03.391Z","2.13.0":"2021-11-04T00:25:17.744Z","2.14.0":"2021-11-17T00:11:56.653Z","2.14.1":"2021-11-17T03:05:20.861Z","2.15.0":"2021-11-17T05:10:59.856Z","2.15.1":"2021-11-30T06:01:23.690Z","2.15.2":"2021-12-14T01:00:02.650Z","2.16.0":"2021-12-15T05:36:20.639Z"},"maintainers":[{"name":"hayes","email":"michael@hayes.io"}],"description":"A GiraphQL plugin for adding argument validation","keywords":["giraphql","graphql","schema","typescript","zod","validation","validate"],"author":{"name":"Michael Hayes"},"license":"ISC","readme":"# Validation Plugin for GiraphQL\n\nA plugin for adding validation for field arguments based on\n[zod](https://github.com/colinhacks/zod). This plugin does not expose zod directly, but most of the\noptions map closely to the validations available in zod.\n\n## Usage\n\n### Install\n\nTo use the validation plugin you will need to install both `zod` package and the validation plugin:\n\n```bash\nyarn add zod @giraphql/plugin-validation\n```\n\n### Setup\n\n```typescript\nimport ValidationPlugin from '@giraphql/plugin-validation';\nconst builder = new SchemaBuilder({\n  plugins: [ValidationPlugin],\n});\n\nbuilder.queryType({\n  fields: (t) => ({\n    simple: t.boolean({\n      nullable: true,\n      args: {\n        // Validate individual args\n        email: t.arg.string({\n          validate: {\n            email: true,\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      // Validate all args together\n      validate: (args) => !!args.phone || !!args.email,\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Examples\n\n#### With custom message\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    withMessage: t.boolean({\n      nullable: true,\n      args: {\n        email: t.arg.string({\n          validate: {\n            email: [true, { message: 'invalid email address' }],\n          },\n        }),\n        phone: t.arg.string(),\n      },\n      validate: [\n        (args) => !!args.phone || !!args.email,\n        { message: 'Must provide either phone number or email address' },\n      ],\n      resolve: () => true,\n    }),\n});\n```\n\n### Validating List\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        list: t.arg.stringList({\n          validate: {\n            items: {\n              email: true,\n            },\n            maxLength: 3,\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n### Using your own zod schemas\n\nIf you just want to use a zod schema defined somewhere else, rather than using the validation\noptions you can use the `schema` option:\n\n```typescript\nbuilder.queryType({\n  fields: (t) => ({\n    list: t.boolean({\n      nullable: true,\n      args: {\n        max5: t.arg.int({\n          validate: {\n            schema: zod.number().int().max(5),\n          },\n        }),\n      },\n      resolve: () => true,\n    }),\n  }),\n});\n```\n\n## API\n\n### On Object fields\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`.\n\n### On InputObjects\n\n- `validate`: `Refinement<T>` | `Refinement<T>[]`\n\n### On arguments and fields on InputObjects\n\n- `validate`: `Refinement` | `ValidationOptions`\n\n### `Refinement`\n\nA `Refinement` is a function that will be passed to the `zod` `refine` method. It receives the args\nobject, input object, or value of the specific field the refinement is defined on. It should return\na `boolean` or `Promise<boolean>`.\n\n`Refinement`s can either be just a function: `(val) => isValid(val)`, or an array with the function,\nand an options object like: `[(val) => isValid(val), { message: 'field should be valid' }]`.\n\nThe options object may have a `message` property, and if the type being validated is an object, it\ncan also include a `path` property with an array of strings indicating the path of the field in the\nobject being validated. See the zod docs on `refine` for more details.\n\n### `ValidationOptions`\n\nThe validation options available depend on the type being validated. Each property of\n`ValidationOptions` can either be a value specific to the constraint, or an array with the value,\nand the options passed to the underlying zod method. This options object can be used to set a custom\nerror message:\n\n```typescript\n{\n  validate: {\n    max: [10, { message: 'should not be more than 10' }],\n    int: true,\n  }\n}\n```\n\n#### Number\n\n- `type`?: `'number'`\n- `refine`?: `Refinement<number> | Refinement<number>[]`\n- `min`?: `Constraint<number>`\n- `max`?: `Constraint<number>`\n- `positive`?: `Constraint<boolean>`\n- `nonnegative`?: `Constraint<boolean>`\n- `negative`?: `Constraint<boolean>`\n- `nonpositive`?: `Constraint<boolean>`\n- `int`?: `Constraint<boolean>`\n- `schema`?: `ZodSchema<number>`\n\n#### BigInt\n\n- `type`?: `'bigint'`\n- `refine`?: `Refinement<bigint> | Refinement<bigint>[]`\n- `schema`?: `ZodSchema<bigint>`\n\n#### Boolean\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<boolean>`\n\n#### Date\n\n- `type`?: `'boolean'`\n- `refine`?: `Refinement<boolean> | Refinement<boolean>[]`\n- `schema`?: `ZodSchema<Date>`\n\n#### String\n\n- `type`?: `'string'`;\n- `refine`?: `Refinement<string> | Refinement<string>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `url`?: `Constraint<boolean>`\n- `uuid`?: `Constraint<boolean>`\n- `email`?: `Constraint<boolean>`\n- `regex`?: `Constraint<RegExp>`\n- `schema`?: `ZodSchema<string>`\n\n#### Object\n\n- `type`?: `'object'`;\n- `refine`?: `Refinement<T> | Refinement<T>[]`\n- `schema`?: `ZodSchema<Ts>`\n\n#### Array\n\n- `type`?: `'array'`;\n- `refine`?: `Refinement<T[]> | Refinement<T[]>[]`\n- `minLength`?: `Constraint<number>`\n- `maxLength`?: `Constraint<number>`\n- `length`?: `Constraint<number>`\n- `items`?: `ValidationOptions<T> | Refinement<T>`\n- `schema`?: `ZodSchema<T[]>`\n\n### How it works\n\nEach arg on an object field, and each field on an input type with validation will build its own zod\nvalidator. These validators will be a union of all potential types that can apply the validations\ndefined for that field. For example, if you define an optional field with a `maxLength` validator,\nit will create a zod schema that looks something like:\n\n```typescript\nzod.union([zod.null(), zod.undefined(), zod.array().maxLength(5), zod.string().maxLength(5)]);\n```\n\nIf you set and `email` validation instead the schema might look like:\n\n```typescript\nzod.union([zod.null(), zod.undefined(), zod.string().email()]);\n```\n\nAt runtime, we don't know anything about the types being used by your schema, we can't infer the\nexpected js type from the type definition, so the best we can do is limit the valid types based on\nwhat validations they support. The `type` validation allows explicitly validating the `type` of a\nfield to be one of the base types supported by zod:\n\n```typescript\n// field\n{\nvalidate: {\n  type: 'string',\n  maxLength: 5\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.string().maxLength(5)]);\n```\n\nThere are a few exceptions the above:\n\n1: args and input fields that are `InputObject`s always use `zod.object()` rather than creating a\nunion of potential types.\n\n1. args and input fields that are list types always use `zod.array()`.\n\n1. If you only include a `refine` validation (or just pass a function directly to validate) we will\n   just use `zod`s unknown validator instead:\n\n```typescript\n// field\n{\n  validate: (val) => isValid(val),\n}\n// generated\nzod.union([zod.null(), zod.undefined(), zod.unknown().refine((val) => isValid(val))]);\n```\n\nIf the validation options include a `schema` that schema will be used as an intersection wit the\ngenerated validator:\n\n```typescript\n// field\n{\n  validate: {\n    int: true,\n    schema: zod.number().max(10),\n}\n// generated\nzod.union([zod.null(), zod.undefined(),  zod.intersection(zod.number().max(10), zod.number().int())]);\n```\n\n### Sharing schemas with client code\n\nThe easiest way to share validators is the use the to define schemas for your fields in an external\nfile using the normal zod APIs, and then attaching those to your fields using the `schema` option.\n\n```typescript\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation = zod.number().max(5);\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: {\n            schema: numberValidation,\n          }\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nnumberValidator.parse(3) // pass\nnumberValidator.parse('3') // fail\n```\n\nYou can also use the `createZodSchema` helper from the plugin directly to create zod Schemas from an\noptions object:\n\n```typescript\n// shared\nimport { ValidationOptions } from '@giraphql/plugin-validation';\n\nconst numberValidation: ValidationOptions<number> = {\n  max: 5,\n};\n\n// server\nbuilder.queryType({\n  fields: (t) => ({\n    example: t.boolean({\n      args: {\n        num: t.arg.int({\n          validate: numberValidation,\n        }),\n      },\n      resolve: () => true,\n    }),\n  });\n});\n\n// client\nimport { createZodSchema } from '@giraphql/plugin-validation';\n\nconst validator = createZodSchema(numberValidator);\n\nvalidator.parse(3) // pass\nvalidator.parse('3') // fail\n```\n","readmeFilename":"README.md"}