{"_id":"@hygraph/utils","_rev":"26-d0c3f0dc2a7089c0cff23c23d1f08c8f","name":"@hygraph/utils","dist-tags":{"latest":"1.2.1"},"versions":{"1.2.1":{"name":"@hygraph/utils","version":"1.2.1","keywords":[],"author":{"name":"Jamie Barton"},"license":"MIT","_id":"@hygraph/utils@1.2.1","maintainers":[{"name":"jpedroschmitz","email":"jpedroschmitz@hotmail.com"},{"name":"mahaveergcms","email":"mahaveer@hygraph.com"},{"name":"danielhygraph","email":"daniel@hygraph.com"},{"name":"graphcms-owner","email":"services@hygraph.com"}],"dist":{"shasum":"31bf3a007ce388897f891c63b79e0de85978962b","tarball":"https://registry.npmjs.org/@hygraph/utils/-/utils-1.2.1.tgz","fileCount":8,"integrity":"sha512-Eu4xKWAAzAhWUcgxSzgL+6o5alCItry1Jo0LtsnQ3q3/EaGHeI3Z/kMuGvsFf8zrhyAljeSHC4otwRc5ibMinQ==","signatures":[{"sig":"MEQCIC31N/yU/9ts+8HszkeMOhz3dokv80QsyOtRR+fc21tuAiAuigoqLPGNpkdyoX199D6PgztEdc1+vSRvd2dKLPtdxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2AOhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpw/w//bSGERS69PqdYIrfoq36jTYxuiDE+S5gdwJX/Tk03RknqQNK9\r\nxfmMXly5iWmdDqamtBMDbiyx9SMcX00yW55avfXSOf1phdEVQdroUk/jUehq\r\nhiCPXLb7Kh3T5MDALq/yI40axOXDyC9Tz9uFaoFTgAyBgc6smWj89/EejDWx\r\n8gUBtYOLtyczpjy5ullz8A+MNkatU08xLm5vwRMmnN3mFzQMatosIA6egPtW\r\nMKY/SRF9fNIbRPfpdWclHWDjhjzZUT+Htj9aCc/mDT5zufIi6bt0tWQ8Sgoa\r\nA0MMeK1XXkkfcz9pf348jetTtbqL6NL7/dv0DnRnLQ39e/MP+4RrHwVHhRbV\r\n6Spc8cvDcHd6AOxkwbpF1lUqlrb5DE0GaC+2HD2I2JNMCMk+jtLVG77V+sV1\r\nIS03KnoWx/4HJfUgLasOBFR/S001sgrmkxYddISfLvcnSnzkVAYxSnT1TQp3\r\n3qy3B1SUpypiIbP8K9CtEdNCgEBhOKgUbqAVrPuPyslvv9V2E9wrr/+wrdzn\r\n83NgXkt0UtEkyaoZ6Fs0YTr1kKG+8BWmEQj7ngBIwxNILIzNYyO6lDiuuUiS\r\nw/D4+2DFxlEQFUBUcJwSCKMCYC9Gssxsm8GXdc8FrUUPyRuSF+gtUtDnpFsN\r\nC2Zxzlf5l3nCLAZ0EbriAERQ65kxELwKzq8=\r\n=vlnF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"d130b4a3a6ce490b8da9c2506729b056f1d3bf66","scripts":{"test":"jest"},"_npmUser":{"name":"graphcms-owner","email":"services@hygraph.com"},"_npmVersion":"8.19.3","description":"Collection of useful Hygraph utilities for building GraphQL powered apps.","directories":{},"_nodeVersion":"18.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.0"},"_npmOperationalInternal":{"tmp":"tmp/utils_1.2.1_1675101088796_0.4653560751577259","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-01-30T17:51:28.711Z","modified":"2026-05-29T14:29:20.231Z","1.2.1":"2023-01-30T17:51:28.976Z"},"author":{"name":"Jamie Barton"},"license":"MIT","keywords":[],"description":"Collection of useful Hygraph utilities for building GraphQL powered apps.","maintainers":[{"email":"daniel@hygraph.com","name":"danielhygraph"},{"email":"services@hygraph.com","name":"graphcms-owner"},{"email":"gabriel.zanzotti@gmail.com","name":"skolz"},{"email":"mirko@hygraph.com","name":"mirko-hygraph"},{"email":"ricardo.costa@hygraph.com","name":"ricardo.costa_hygraph"},{"email":"danijel.vincijanovic@hygraph.com","name":"danijel_vincijanovic"},{"email":"vane.trajkov@hygraph.com","name":"vane.hygraph"},{"email":"alexandre.borrego@hygraph.com","name":"alexandrehygraph"},{"email":"rishabh.sharma@hygraph.com","name":"rishitells-hygraph"},{"email":"vojtech.toman@hygraph.com","name":"hygtoman"},{"email":"jonas@hygraph.com","name":"jonas_hygraph"},{"email":"oladapo@hygraph.com","name":"omonayajo"},{"email":"dino@hygraph.com","name":"dino_hygraph"},{"email":"daniil.tykheev@hygraph.com","name":"dtykheev"},{"email":"fabian@hygraph.com","name":"fblz"}],"readme":"# Hygraph Utils\n\n## Install\n\n```bash\nnpm i @hygraph/utils\n```\n\n## Usage\n\n### `verifyWebhookSignature`\n\nYou'll need the request body and headers to pass to `verifyWebhookSignature`.\n\nIf `isValid` is truthy then you can safely execute your webhook handler code knowing the request is genuine, otherwise you should abort any further action.\n\n```js\nconst { verifyWebhookSignature } = require(\"@hygraph/utils\");\n\nconst secret = \"rCNwyiloY3oJYYkxgpBXaleIiUv5MYlx\";\n\nconst body = {}; // Typically req.body\nconst signature = \"...\"; // Typically req.headers['gcms-signature']\n\nconst isValid = verifyWebhookSignature({ body, signature, secret });\n```\n\n`verifyWebhookSignature` also accepts a `rawPayload` in the case that the body\nhas not yet been parsed.\n\n```js\nconst { verifyWebhookSignature } = require(\"@hygraph/utils\");\n\nconst secret = \"rCNwyiloY3oJYYkxgpBXaleIiUv5MYlx\";\n\nconst rawPayload = '{\"hello\":\"world\"}';\nconst signature = \"...\"; // Typically req.headers['gcms-signature']\n\nconst isValid = verifyWebhookSignature({ rawPayload, signature, secret });\n```\n\n[Learn more about Webhooks](https://hygraph.com/docs/api-reference/basics/webhooks).\n\n### `generateWebhookSignature`\n\nThis is useful for testing signed webhooks. You can generate a Hygraph webhook signature, and then use it to test your webhook.\n\n```js\nconst { generateWebhookSignature } = require(\"@hygraph/utils\");\n\nconst secret = \"rCNwyiloY3oJYYkxgpBXaleIiUv5MYlx\";\n\nconst body = {\n  hello: \"world\",\n};\n\nconst signature = generateWebhookSignature({ body, secret });\n```\n\n[Learn more about Webhooks](https://hygraph.com/docs/api-reference/basics/webhooks).\n","readmeFilename":"README.md"}