{"_id":"@sanity/webhook","_rev":"149-edf4773a90714427ebb17187a799e81c","name":"@sanity/webhook","dist-tags":{"bc":"4.0.2-bc","latest":"4.0.4"},"versions":{"1.0.0":{"name":"@sanity/webhook","version":"1.0.0","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@1.0.0","maintainers":[{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"hdoro","email":"opensource@hdoro.dev"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"taranenger","email":"taran@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"06b002884a7d222340a71d643fb6579da88b14eb","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-1.0.0.tgz","fileCount":30,"integrity":"sha512-40/9NFNs8Yn3BUho1h2g2DMvqTFMD9+nuFddwfkj/92HjBF3QiUoWtSe7GDidEr2KDtfjZAn2X7Hk7Qyf2GSSA==","signatures":[{"sig":"MEUCIQCA+qb9UjZCHi3bFcvKiOdOHzhGNX95CJa17tksGnjcMgIgenVbSXNcFny2/y8ZeleAsy7ZCOBLtc4AXwzXnMDkxaA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39739},"jest":{"globals":{"ts-jest":{"diagnostics":false}}},"main":"lib/index.js","types":"./lib/index.d.ts","engines":{"node":">=12.0.0"},"gitHead":"6a76d2a1345f2850d522d0bf8ece57322b2b7152","scripts":{"test":"jest","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"7.24.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"14.15.4","dependencies":{"tslib":"^2.3.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","eslint":"^7.26.0","express":"^4.17.1","ts-jest":"^26.5.6","prettier":"^2.3.0","supertest":"^6.1.6","typescript":"^4.4.3","@babel/core":"^7.14.2","@types/jest":"^27.0.2","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","@babel/preset-env":"^7.14.2","eslint-config-sanity":"^5.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@babel/preset-typescript":"^7.13.0","@typescript-eslint/parser":"^4.23.0","@typescript-eslint/eslint-plugin":"^4.23.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_1.0.0_1633539351299_0.061771531731995344","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@sanity/webhook","version":"1.0.1","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@1.0.1","maintainers":[{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"hdoro","email":"opensource@hdoro.dev"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"taranenger","email":"taran@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"00c5bbf244ca208bb8afacceec96e2ebaddef78c","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-1.0.1.tgz","fileCount":18,"integrity":"sha512-yaCSfvNHh36yyCA5mnipVMgCw1Lw7bd+EIip27RI6b8sy3Tllrigl0gnxM59qtohDnflsAsKSjxf6bw6JSZ5mA==","signatures":[{"sig":"MEUCICtVRuhZd0NV1Q3Hgcc+Oj2XQEf7fWa30Az/HkedQqGkAiEAlRyMT3pj+fLlXRwakIpDqQgrNI1jGCAFJJkAe1I6UYM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19385},"jest":{"globals":{"ts-jest":{"diagnostics":false}}},"main":"lib/index.js","types":"./lib/index.d.ts","engines":{"node":">=12.0.0"},"gitHead":"743905e74c13f8b56eb2d987d4fed78c5a89ea62","scripts":{"test":"jest","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"7.24.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"14.15.4","dependencies":{"tslib":"^2.3.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","eslint":"^7.26.0","express":"^4.17.1","ts-jest":"^26.5.6","prettier":"^2.3.0","supertest":"^6.1.6","typescript":"^4.4.3","@babel/core":"^7.14.2","@types/jest":"^27.0.2","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","@babel/preset-env":"^7.14.2","eslint-config-sanity":"^5.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@babel/preset-typescript":"^7.13.0","@typescript-eslint/parser":"^4.23.0","@typescript-eslint/eslint-plugin":"^4.23.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_1.0.1_1633539514570_0.6725310883284263","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@sanity/webhook","version":"1.0.2","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@1.0.2","maintainers":[{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"hdoro","email":"opensource@hdoro.dev"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"taranenger","email":"taran@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"4e8dc5e6475b7c1af7f9b33a17101244e6d203ea","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-1.0.2.tgz","fileCount":18,"integrity":"sha512-WV31Y8XNKOULoYTgKe3BF5ErVDD8XlS81EcRjj0kNOKuPrVfHDzxwymop4HNTGt6vxrVnTTAfR/XoWL3jFeC5g==","signatures":[{"sig":"MEYCIQDbxy6jK110oHILzdqw64ORWoQNQymXaiMft+agu+/o/AIhALr68jpRkqnfjLabEf1bn4xtOrpjcSClANOf81BV+3vg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19392},"jest":{"globals":{"ts-jest":{"diagnostics":false}}},"main":"lib/index.js","types":"./lib/index.d.ts","engines":{"node":">=12.0.0"},"gitHead":"d0aa16be7fe93f3e508efc64891b9b9d27419067","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"7.24.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"14.15.4","dependencies":{"tslib":"^2.3.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.0","eslint":"^7.32.0","express":"^4.17.1","ts-jest":"^27.0.0","prettier":"^2.4.1","supertest":"^6.1.6","typescript":"^4.4.3","@babel/core":"^7.15.5","@types/jest":"^27.0.2","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","@babel/preset-env":"^7.15.6","eslint-config-sanity":"^5.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@babel/preset-typescript":"^7.15.0","@typescript-eslint/parser":"^4.33.0","@typescript-eslint/eslint-plugin":"^4.33.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_1.0.2_1633600977217_0.737689261254832","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@sanity/webhook","version":"1.1.0","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@1.1.0","maintainers":[{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"c86c6ceb7c53b098252c7b9cfaac5a6e2c45248d","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-1.1.0.tgz","fileCount":19,"integrity":"sha512-gd+9+KbQhuwYo9jltboW6qyboSyu5AOpVH/B7b4cmL8Y8NSJIS23yfE7P8Yw8i66siVe4kkyOPQ2JBjhCfimTw==","signatures":[{"sig":"MEQCIBK1btjTYB2oSArs+pDxKq9yHFjCPuPjv6Odnr3S3OcuAiBqJPhqDQvxFft+QPkYkvat2TYS7NzBo7cTROhq6BzOCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivAwvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrBABAAirkoY6CzYgbQSKgFNniJib83pmsWR2aFowww4Y7P5bYUFtlC\r\n5Owi3TY7rbVkbr4VpExqVq3IIn3GP+hR6RZB+60mZmgsivoZeEpY2vuzNCNe\r\nPLB4Oh75WzqoKoAJD4S76BGG2rGmIIsHl1soJQgyN6YRp4NKPoyQfM4ZATvv\r\nkWQJsgy5bKQOMOkwOlBTZAxPeKwr5FP2vvG8SmwPDg1K3Gzs1yeCs/v3zB3k\r\n+LWkwzbU0EoYFzuTSo7wUReCvy1RWNkAj43sE0UBmfdoM2zzf7jW07tn2xbW\r\nKMC4IiQbvlQc9pZwdwEORXgy7VUYZcT7sf03/rCYT/XmQ4plmmX8lzJm0a40\r\noDNMr4cvr9FVRaxGZOQO/UmiUr9LEzCNVbg6dToDepdsxXrkx5Lrjveq6eoN\r\nQ3CvQoDnqWTAIsYgDPfZjCQq2plRETFQEhKKT1zZo/WSE17aTzqndf07M6UZ\r\n2D839msIv0Br9C66PZSk9lh9ELLr+DWHBWCi9QHOFv8fXBgPcIgi+rnNLnir\r\nmQc1oCNqXNcY7iE1RuTT3bdmp9WuNdOSizeyW/XDgWjFilJw1zcqQYX+K2IY\r\nflzxnF80yBJLOLit/c2pKamZ3uUyDefuUkUdKzCTkNoWXEwEIJ8st1J8fEJP\r\nf9Yj2+FxYHZ6XJhquzeWuEcO7ELvf3cegdo=\r\n=1Tz1\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"diagnostics":false}}},"main":"lib/index.js","types":"./lib/index.d.ts","engines":{"node":">=12.0.0"},"gitHead":"2c692a1e3c11e3756b73665ba285fca6f6a8dfa2","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"8.12.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"16.14.0","dependencies":{"tslib":"^2.3.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.0","eslint":"^7.32.0","express":"^4.17.1","ts-jest":"^27.0.0","prettier":"^2.4.1","supertest":"^6.1.6","typescript":"^4.4.3","@babel/core":"^7.15.5","@types/jest":"^27.0.2","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","@babel/preset-env":"^7.15.6","eslint-config-sanity":"^5.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@babel/preset-typescript":"^7.15.0","@typescript-eslint/parser":"^4.33.0","@typescript-eslint/eslint-plugin":"^4.33.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_1.1.0_1656491055343_0.41232734298817286","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@sanity/webhook","version":"2.0.0","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@2.0.0","maintainers":[{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"22e5916fd6ea616625b4105a68f2858408de8eee","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-2.0.0.tgz","fileCount":19,"integrity":"sha512-KusHeWVy6yW3hcgVHbGx6qVv//bUj3CD9Nr0EOw086+mo/ESrUV21HjOCrNQ+AYqXvJ9H5qhqmMiuc8H5dXUGA==","signatures":[{"sig":"MEUCIHdCDwWd5LzuI/Ah/kfzMhmIxVYA6jMT4NnaWEov1kZ+AiEA8Ri8kLbpqWf9t4LOLlqKyD0JRilw8xCq+fTqO+jqmR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivBLcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMVg//SD6ffiBbsbkG7C8nJIIiGYJ89bfLnnCEqyaJYRJ4tqfAmcR+\r\ntYQFzqAlLc4RO1W0fuV97o1G6NvUnnkM2NsUGDbq0OwUmODQ0KKKxG5bRLjM\r\n0lVXqwegOFKskdgEdN17L+D/t2V/4dsOvrsvaZmJ28Qxtl3RIxhZNTa0Jlto\r\ns3kRe80cG7OQpEy0Ab21YeGxbB0NUqcBKaDmIqsysZVr9Q7poMREjTAgXktC\r\nCyZnAFOGKz6UN/SrQWaMkn3hAV6JJKyVdwi3IPCDtQVSXqbfOQ6gatv93bUf\r\nUnqnmoz+nkpCMLYYahBHRq9H29cjGY97q0V6TXup1ulJTJ1TZRUGV1uSWf2B\r\nAH/P0eeMiJckcsmvraTo1X+eK7jhfzP0rp5cq4cb3sOn3vJMjSf3P/Jb9+qQ\r\nZNFxrlJsPbm5qRdtBHkiGVsn0eRCz5c1Sa4/OIushS7iN8KO6whTRo8BgPpO\r\nJ1Qh0hTkF54vY/44e9QRwcmPYy6FvgUuuezyXDe+8t69H846r6Xa2jAOcjpx\r\n6+ccq7LzNd0QE77Scy3uQUdfrdYY2jx8i3LrFWEHmeNXurRGjZVn/BqhLpod\r\nrb+rfQxD8FB8N0W9rMgvkWLVG+MtrK6gTxHTaJkc2WhLTQ32Goo2pUv1PJhP\r\nkc/s30/lsJuny0Mb/H+vBuAuL00QfPxN5Os=\r\n=EJ2H\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"diagnostics":false}}},"main":"lib/index.js","types":"./lib/index.d.ts","engines":{"node":">=12.0.0"},"gitHead":"2c79d9706541bc684219601e0ec433045b65752a","scripts":{"test":"jest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"8.12.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"16.14.0","dependencies":{"tslib":"^2.3.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.0","eslint":"^7.32.0","express":"^4.17.1","ts-jest":"^27.0.0","prettier":"^2.4.1","supertest":"^6.1.6","typescript":"^4.4.3","@babel/core":"^7.15.5","@types/jest":"^27.0.2","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","@babel/preset-env":"^7.15.6","eslint-config-sanity":"^5.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@babel/preset-typescript":"^7.15.0","@typescript-eslint/parser":"^4.33.0","@typescript-eslint/eslint-plugin":"^4.33.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_2.0.0_1656492764232_0.47147482595903445","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@sanity/webhook","version":"3.0.0","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@3.0.0","maintainers":[{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"054127e0087df10579b7944c0c3d4a5a93a3156f","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-3.0.0.tgz","fileCount":9,"integrity":"sha512-F3mYXbDYOrZ4SB/Hnczi4bctNapVI8y3otRGe6W8LhAS9usxCrQMYGmR1PoHwn++Q6qw6V5cRHAu+edA/vUYLA==","signatures":[{"sig":"MEUCIHSNc3DlrSjquV/yTeBMlj9ZygFwleqhw0h4VQwpuj9KAiEAoju/2xdl58hTYehXJjFWvHhJSDBESeayIcXvBGlpC+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60122},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=12.0.0"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d4a46863105a60cc8ca7785944f76d0140cc89af","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"9.8.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"18.17.0","browserslist":["last 1 version","maintained node versions"],"dependencies":{"tslib":"^2.6.1","base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.47.0","rimraf":"^5.0.1","vitest":"^0.34.2","express":"^4.17.1","prettier":"^3.0.2","supertest":"^6.3.3","ls-engines":"^0.9.0","typescript":"^5.1.6","body-parser":"^1.19.0","@types/express":"^4.17.13","@types/supertest":"^2.0.11","semantic-release":"^21.0.7","@sanity/pkg-utils":"^2.4.6","eslint-config-sanity":"^6.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.4.0","prettier-plugin-packagejson":"^2.4.5","@sanity/semantic-release-preset":"^4.1.3","@typescript-eslint/eslint-plugin":"^6.4.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_3.0.0_1692364884272_0.8114408839025125","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"@sanity/webhook","version":"3.0.1","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@3.0.1","maintainers":[{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"ed70a185940ec5775770cfb43503ecaee328e49e","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-3.0.1.tgz","fileCount":9,"integrity":"sha512-2eTDg/+TR8lSX2OH6wH7M8UUwZUsD/i8Raw9mFH9myt2mkPY3ns77cU6K1QL2ZhwIIDJT5tttTELURF7RjlzVg==","signatures":[{"sig":"MEQCICJAnsbIa0wx7NAZN5uCWBy0ySgerHqklN6bhKcRr/uGAiB8fx3ONWMVLeogFoaHpSfyATF8Fn+zHPl33Mlzu3Cv7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42560},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=12.0.0"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"41105749a20b0b05f6e6ca1a98f74ddeb0b5f07a","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"9.8.1","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"18.17.0","browserslist":["last 1 chrome version","maintained node versions"],"dependencies":{"base64url":"^3.0.1"},"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.47.0","rimraf":"^5.0.1","vitest":"^0.34.2","express":"^4.18.2","prettier":"^3.0.2","supertest":"^6.3.3","ls-engines":"^0.9.0","typescript":"^5.1.6","body-parser":"^1.20.2","@types/express":"^4.17.17","@types/supertest":"^2.0.12","semantic-release":"^21.0.7","@sanity/pkg-utils":"^2.4.6","eslint-config-sanity":"^6.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.4.0","prettier-plugin-packagejson":"^2.4.5","@sanity/semantic-release-preset":"^4.1.3","@typescript-eslint/eslint-plugin":"^6.4.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_3.0.1_1692409204698_0.13437739039994945","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@sanity/webhook","version":"4.0.0","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.0","maintainers":[{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"0f4e66d0c2c0b84a5bb0a9b12e6ac57adc974502","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.0.tgz","fileCount":9,"integrity":"sha512-IRjtj17tHSmxHWZvgRnLZbWj8J8G4jqOWOYC25eV4EcfVn1yZCs0x+km6+PSiJgOphSX6Nm1+X6UJOT+GnWIFw==","signatures":[{"sig":"MEUCIQC0Pi23IkzpucbyU8t2U52UmTgXMhE7zUYHL8mDQm5tIgIgNhvBTzXZya82QVC/uOSnqo/nNAxW3XjXt3b8v66sh/g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59660},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=18.0.0"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9e5644c008bd59cb1012a5644a3c6ff07de91a4d","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.2.4","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.9.0","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.54.0","rimraf":"^5.0.5","vitest":"^0.34.6","express":"^4.18.2","prettier":"^3.1.0","supertest":"^6.3.3","ls-engines":"^0.9.1","typescript":"^5.3.2","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^2.0.16","semantic-release":"^22.0.8","@sanity/pkg-utils":"^3.2.4","eslint-config-sanity":"^7.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.12.0","prettier-plugin-packagejson":"^2.4.6","@sanity/semantic-release-preset":"^4.1.6","@typescript-eslint/eslint-plugin":"^6.12.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.0_1701075632692_0.23251762634404805","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@sanity/webhook","version":"4.0.1","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.1","maintainers":[{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"6e9e1845f276992fec8f728fc44b42ff8a0a9f47","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.1.tgz","fileCount":9,"integrity":"sha512-hswDXWD6Ru2qz0oMlEOathKspEyoc/jNFgAGvQVWQ4sbQDjVveMkLimQO+4FNWwi1AMYdcEmj+XmCzrPKIuvWA==","signatures":[{"sig":"MEUCIQDzaqgvyANwW2uJJQQRHDHhCfCgbA+HT8ny0/kWM5a3IgIgSbU7c9F9pMqEY0XLKpYLaTnRr5HH3D+o4xBfvejNWvA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59039},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=20.0.0"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7796681c8e6c40ab86f02d7cd49b44b2acf592db","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.4.0","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.11.0","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rimraf":"^5.0.5","vitest":"^1.2.1","express":"^4.18.2","prettier":"^3.2.4","supertest":"^6.3.4","ls-engines":"^0.9.1","typescript":"^5.3.3","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^6.0.2","semantic-release":"^22.0.12","@sanity/pkg-utils":"^4.1.0","eslint-config-sanity":"^7.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^6.19.1","prettier-plugin-packagejson":"^2.4.9","@sanity/semantic-release-preset":"^4.1.6","@typescript-eslint/eslint-plugin":"^6.19.1"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.1_1706209664954_0.786800332104979","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@sanity/webhook","version":"4.0.2","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.2","maintainers":[{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"f298c245923873ea08482279c855033dac45ee43","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.2.tgz","fileCount":9,"integrity":"sha512-lJEr6mPl//k1oT1Y4UXE206N8ca5bWx2qJTbJn2c1K/3ef4LBexu2syoOtA09qqPPQ1Eu7gOcuUFjNllEK7fkg==","signatures":[{"sig":"MEQCIAbJhtuZN7Z0vWUXVnl5zE9+fKVT3MMfqZgIyt3b/mTpAiB84bsAoX2faRogrMpoPndCJurQRn4wYSDMG+LGYCIKsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@4.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56400},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=20.0.0"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b88fccbc83204cc3db520402e3d24355dcaa5e98","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.4.0","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error","operator-linebreak":"off"},"parser":"@typescript-eslint/parser","extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","sanity","prettier"],"plugins":["@typescript-eslint","prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^1.3.1","express":"^4.18.2","prettier":"^3.2.5","supertest":"^6.3.4","ls-engines":"^0.9.1","typescript":"^5.3.3","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^6.0.2","semantic-release":"^23.0.2","@sanity/pkg-utils":"^4.3.0","eslint-config-sanity":"^7.0.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","prettier-plugin-packagejson":"^2.4.12","@sanity/semantic-release-preset":"^4.1.7","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.2_1708969053458_0.5169696903351735","host":"s3://npm-registry-packages"}},"4.0.2-bc":{"name":"@sanity/webhook","version":"4.0.2-bc","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.2-bc","maintainers":[{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"225dbbde71390e1d3661eb1f2cd011035a4214c3","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.2-bc.tgz","fileCount":9,"integrity":"sha512-I/Qq+ppPMkdZ2lQ3iHJ1HylBkEy+imn5qCOWEJefdVIyWdYPpNmTAH09exU6K6M1HRMM7Au4oOdijx3kruZEWA==","signatures":[{"sig":"MEUCIQCGzQwnmlIUOTel9mGp1ofhCkktrODX9/C3hfsyNu9g9QIgMrAMfZtWS1jdI/AvzZFp24ETekhYOiMEp4asy+7yTZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56173},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","readme":"# @sanity/webhook\n\nToolkit for dealing with [GROQ-powered webhooks](https://www.sanity.io/docs/webhooks) delivered by [Sanity.io](https://www.sanity.io/).\n\n## Installing\n\n```sh\n$ npm install @sanity/webhook\n```\n\n## Usage\n\n```js\n// ESM / TypeScript\nimport {isValidSignature} from '@sanity/webhook'\n\n// CommonJS\nconst {isValidSignature} = require('@sanity/webhook')\n```\n\n### Usage with Express.js (or similar)\n\n```ts\nimport express from 'express'\nimport bodyParser from 'body-parser'\nimport {requireSignedRequest} from '@sanity/webhook'\n\nexpress()\n  .use(bodyParser.text({type: 'application/json'}))\n  .post(\n    '/hook',\n    requireSignedRequest({secret: process.env.MY_WEBHOOK_SECRET, parseBody: true}),\n    function myRequestHandler(req, res) {\n      // Note that `req.body` is now a parsed version, set `parseBody` to `false`\n      // if you want the raw text version of the request body\n    },\n  )\n  .listen(1337)\n```\n\n### Usage with Next.js\n\n```ts\n// pages/api/hook.js\nimport {isValidSignature, SIGNATURE_HEADER_NAME} from '@sanity/webhook'\n\nconst secret = process.env.MY_WEBHOOK_SECRET\n\nexport default async function handler(req, res) {\n  const signature = req.headers[SIGNATURE_HEADER_NAME]\n  const body = await readBody(req) // Read the body into a string\n  if (!(await isValidSignature(body, signature, secret))) {\n    res.status(401).json({success: false, message: 'Invalid signature'})\n    return\n  }\n\n  const jsonBody = JSON.parse(body)\n  doSomeMagicWithPayload(jsonBody)\n  res.json({success: true})\n}\n\n// Next.js will by default parse the body, which can lead to invalid signatures\nexport const config = {\n  api: {\n    bodyParser: false,\n  },\n}\n\nasync function readBody(readable) {\n  const chunks = []\n  for await (const chunk of readable) {\n    chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n  }\n  return Buffer.concat(chunks).toString('utf8')\n}\n```\n\n## Documentation\n\nNote that the functions `requireSignedRequest`, `assertValidRequest` and `isValidRequest` all require that the request object should have a text `body` property.\nE.g. if you're using Express.js or Connect, make sure you have a [Text body-parser](https://github.com/expressjs/body-parser#bodyparsertextoptions) middleware registered for the route (with `{type: 'application/json'}`).\n\n### Functions\n\n- [requireSignedRequest](README.md#requiresignedrequest)\n- [assertValidSignature](README.md#assertvalidsignature)\n- [isValidSignature](README.md#isvalidsignature)\n- [assertValidRequest](README.md#assertvalidrequest)\n- [isValidRequest](README.md#isvalidrequest)\n\n### requireSignedRequest\n\n**requireSignedRequest**(`options`: _SignatureMiddlewareOptions_): _RequestHandler_\n\nReturns an Express.js/Connect-compatible middleware which validates incoming requests to ensure they are correctly signed.\nThis middleware will also parse the request body into JSON: The next handler will have `req.body` parsed into a plain JavaScript object.\n\n**Options**:\n\n- `secret` (_string_, **required**) - the secret to use for validating the request.\n- `parseBody` (_boolean_, optional, default: _true_) - whether or not to parse the body as JSON and set `request.body` to the parsed value.\n- `respondOnError` (_boolean_, optional, default: _true_) - whether or not the request should automatically respond to the request with an error, or (if `false`) pass the error on to the next registered error middleware.\n\n### assertValidSignature\n\n**assertValidSignature**(`stringifiedPayload`: _string_, `signature`: _string_, `secret`: _string_): _Promise<void>_\n\nAsserts that the given payload and signature matches and is valid, given the specified secret. If it is not valid, the function will throw an error with a descriptive `message` property.\n\n### isValidSignature\n\n**isValidSignature**(`stringifiedPayload`: _string_, `signature`: _string_, `secret`: _string_): _Promise<boolean>_\n\nReturns whether or not the given payload and signature matches and is valid, given the specified secret. On invalid, missing or mishaped signatures, this function will return `false` instead of throwing.\n\n### assertValidRequest\n\n**assertValidRequest**(`request`: _ConnectLikeRequest_, `secret`: _string_): _Promise<void>_\n\nAsserts that the given request has a request body which matches the received signature, and that the signature is valid given the specified secret. If it is not valid, the function will throw an error with a descriptive `message` property.\n\n### isValidRequest\n\n**isValidRequest**(`request`: _ConnectLikeRequest_, `secret`: _string_): _Promise<boolean>_\n\nReturns whether or not the given request has a request body which matches the received signature, and that the signature is valid given the specified secret.\n\n## Migration\n\n### From version 3.x to 4.x\n\nIn versions 3.x and below, this library would syncronously assert/return boolean values. From v4.0.0 and up, we now return promises instead. This allows using the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API), available in a broader range of environments.\n\nv4 also requires Node.js 18 or higher.\n\n### From parsed to unparsed body\n\nIn versions 1.0.2 and below, this library would accept a parsed request body as the input for `requireSignedRequest()`, `assertValidRequest()` and `isValidRequest()`.\n\nThese methods would internally call `JSON.stringify()` on the body in these cases, then compare it to the signature. This works in _most_ cases, but because of slightly different JSON-encoding behavior between environments, it could sometimes lead to a mismatch in signatures.\n\nTo prevent these situations from occuring, we now _highly_ recommend that you aquire the raw request body when using these methods.\n\nSee the usage examples further up for how to do this:\n\n- [Express.js or similar](#usage-with-expressjs-or-similar)\n- [Next.js](#usage-with-nextjs)\n\nDifferences in behavior:\n\n- In version 2.0.0 and above, an error will be thrown if the request body is not a string or a buffer.\n- In version 1.1.0, a warning will be printed to the console if the request body is not a string or buffer.\n\n## License\n\nMIT-licensed. See LICENSE.\n","source":"./src/index.ts","engines":{"node":">=18.17"},"exports":{".":{"node":{"import":"./dist/index.cjs.mjs","module":"./dist/index.mjs"},"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e0c211ed6cd80465a70829e335c9e219f37839ba","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"stipsan","email":"stipsan@gmail.com"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.2.3","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error"},"extends":["sanity/typescript","prettier"],"plugins":["prettier"]},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^1.3.1","express":"^4.18.2","prettier":"^3.2.5","supertest":"^6.3.4","ls-engines":"^0.9.1","typescript":"^5.3.3","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^6.0.2","semantic-release":"^23.0.2","@sanity/pkg-utils":"^4.3.0","eslint-config-sanity":"^7.1.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","prettier-plugin-packagejson":"^2.4.12","@sanity/semantic-release-preset":"^4.1.7","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.2-bc_1709039379153_0.0025551844127094103","host":"s3://npm-registry-packages"}},"4.0.3":{"name":"@sanity/webhook","version":"4.0.3","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.3","maintainers":[{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"8a10ced75daf56221ad1626082ff5162ad9d2eeb","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.3.tgz","fileCount":8,"integrity":"sha512-YN09zQYyDFj/4aZ5wYHztqaFPB0sm7K3oc6kJXpbdsLk+sXaTe0V2K/uLa6EgAsxyTG7+3jsT3y5ey2p5YkWkw==","signatures":[{"sig":"MEQCIBu5lQXRT3+WwcmSUEeOxI9HgUFgB555pilnJO5+Q6z8AiAUMoCepvC0CvPcHYLr8wpW6mPzStHWQF2DGdAwDfBeBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@4.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55389},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","source":"./src/index.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"11303285cb3173716a9f2660be1ace58ebc1cc2b","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict && pkg --strict","clean":"rimraf dist","prebuild":"npm run clean","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.5.0","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error"},"extends":["sanity/typescript","prettier"],"plugins":["prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^1.4.0","express":"^4.18.3","prettier":"^3.2.5","supertest":"^6.3.4","ls-engines":"^0.9.1","typescript":"^5.4.2","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^6.0.2","semantic-release":"^23.0.5","@sanity/pkg-utils":"^5.0.3","eslint-config-sanity":"^7.1.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.3.0","prettier-plugin-packagejson":"^2.4.12","@sanity/semantic-release-preset":"^4.1.7","@typescript-eslint/eslint-plugin":"^7.3.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.3_1710791896589_0.21306593886786862","host":"s3://npm-registry-packages"}},"4.0.4":{"name":"@sanity/webhook","version":"4.0.4","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/webhook@4.0.4","maintainers":[{"name":"jtpetty","email":"tommy@sanity.io"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/webhook-toolkit#readme","bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"dist":{"shasum":"279d8a0f98286524026af486839762430e66d439","tarball":"https://registry.npmjs.org/@sanity/webhook/-/webhook-4.0.4.tgz","fileCount":9,"integrity":"sha512-c8LmzR5Wx93zJ10ohhp0XlmPrTNSFyvPcLbNY/sN45Wj5VOngz4FbBMbX9j64sSQLt+676U6OhiVfjs1yw3YCw==","signatures":[{"sig":"MEYCIQC7NDuO15EaebHt9zcbOAaNCsV9RKcgVLDi4ZgJRe9UwAIhAMUTfaj5LpWnD9iKtbXeGPcdcahEdQhGZWqLPGed74DM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fwebhook@4.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":61342},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"import":"./dist/index.mjs","source":"./src/index.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"649f5adcd8e9d45f73172b05870863b299ba9bc9","release":{"extends":"@sanity/semantic-release-preset","branches":["main"]},"scripts":{"test":"vitest","build":"pkg build --strict --check --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"_npmVersion":"10.5.0","description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","directories":{},"sideEffects":false,"_nodeVersion":"20.12.1","browserslist":["last 1 chrome version","maintained node versions"],"eslintConfig":{"env":{"node":true,"browser":false},"root":true,"rules":{"prettier/prettier":"error"},"extends":["sanity/typescript","prettier"],"plugins":["prettier"]},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^1.4.0","express":"^4.19.2","prettier":"^3.2.5","supertest":"^6.3.4","ls-engines":"^0.9.1","typescript":"^5.4.5","body-parser":"^1.20.2","@types/express":"^4.17.21","@types/supertest":"^6.0.2","semantic-release":"^23.0.8","@sanity/pkg-utils":"^6.4.1","eslint-config-sanity":"^7.1.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.6.0","prettier-plugin-packagejson":"^2.4.14","@sanity/semantic-release-preset":"^4.1.7","@typescript-eslint/eslint-plugin":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/webhook_4.0.4_1712823652446_0.2944316913462648","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-10-06T16:55:51.247Z","modified":"2026-04-08T15:19:59.721Z","1.0.0":"2021-10-06T16:55:51.487Z","1.0.1":"2021-10-06T16:58:34.719Z","1.0.2":"2021-10-07T10:02:57.429Z","1.1.0":"2022-06-29T08:24:15.496Z","2.0.0":"2022-06-29T08:52:44.430Z","3.0.0":"2023-08-18T13:21:24.460Z","3.0.1":"2023-08-19T01:40:04.948Z","4.0.0":"2023-11-27T09:00:32.935Z","4.0.1":"2024-01-25T19:07:45.111Z","4.0.2":"2024-02-26T17:37:33.684Z","4.0.2-bc":"2024-02-27T13:09:39.307Z","4.0.3":"2024-03-18T19:58:16.746Z","4.0.4":"2024-04-11T08:20:52.649Z"},"bugs":{"url":"https://github.com/sanity-io/webhook-toolkit/issues"},"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","homepage":"https://github.com/sanity-io/webhook-toolkit#readme","keywords":["webhook","webhooks","sanity-io","sanity","verify","validate"],"repository":{"url":"git+ssh://git@github.com/sanity-io/webhook-toolkit.git","type":"git"},"description":"Toolkit for dealing with GROQ-powered webhooks delivered by Sanity.io","maintainers":[{"email":"svc.npm@sanity.io","name":"sanity-svc.npm"},{"email":"developers@sanity.io","name":"sanity-io"}],"readme":"# @sanity/webhook\n\nToolkit for dealing with [GROQ-powered webhooks](https://www.sanity.io/docs/webhooks) delivered by [Sanity.io](https://www.sanity.io/).\n\n## Installing\n\n```sh\n$ npm install @sanity/webhook\n```\n\n## Usage\n\n```js\n// ESM / TypeScript\nimport {isValidSignature} from '@sanity/webhook'\n\n// CommonJS\nconst {isValidSignature} = require('@sanity/webhook')\n```\n\n### Usage with Express.js (or similar)\n\n```ts\nimport express from 'express'\nimport bodyParser from 'body-parser'\nimport {requireSignedRequest} from '@sanity/webhook'\n\nexpress()\n  .use(bodyParser.text({type: 'application/json'}))\n  .post(\n    '/hook',\n    requireSignedRequest({secret: process.env.MY_WEBHOOK_SECRET, parseBody: true}),\n    function myRequestHandler(req, res) {\n      // Note that `req.body` is now a parsed version, set `parseBody` to `false`\n      // if you want the raw text version of the request body\n    },\n  )\n  .listen(1337)\n```\n\n### Usage with Next.js\n\n```ts\n// pages/api/hook.js\nimport {isValidSignature, SIGNATURE_HEADER_NAME} from '@sanity/webhook'\n\nconst secret = process.env.MY_WEBHOOK_SECRET\n\nexport default async function handler(req, res) {\n  const signature = req.headers[SIGNATURE_HEADER_NAME]\n  const body = await readBody(req) // Read the body into a string\n  if (!(await isValidSignature(body, signature, secret))) {\n    res.status(401).json({success: false, message: 'Invalid signature'})\n    return\n  }\n\n  const jsonBody = JSON.parse(body)\n  doSomeMagicWithPayload(jsonBody)\n  res.json({success: true})\n}\n\n// Next.js will by default parse the body, which can lead to invalid signatures\nexport const config = {\n  api: {\n    bodyParser: false,\n  },\n}\n\nasync function readBody(readable) {\n  const chunks = []\n  for await (const chunk of readable) {\n    chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n  }\n  return Buffer.concat(chunks).toString('utf8')\n}\n```\n\n## Documentation\n\nNote that the functions `requireSignedRequest`, `assertValidRequest` and `isValidRequest` all require that the request object should have a text `body` property.\nE.g. if you're using Express.js or Connect, make sure you have a [Text body-parser](https://github.com/expressjs/body-parser#bodyparsertextoptions) middleware registered for the route (with `{type: 'application/json'}`).\n\n### Functions\n\n- [requireSignedRequest](README.md#requiresignedrequest)\n- [assertValidSignature](README.md#assertvalidsignature)\n- [isValidSignature](README.md#isvalidsignature)\n- [assertValidRequest](README.md#assertvalidrequest)\n- [isValidRequest](README.md#isvalidrequest)\n\n### requireSignedRequest\n\n**requireSignedRequest**(`options`: _SignatureMiddlewareOptions_): _RequestHandler_\n\nReturns an Express.js/Connect-compatible middleware which validates incoming requests to ensure they are correctly signed.\nThis middleware will also parse the request body into JSON: The next handler will have `req.body` parsed into a plain JavaScript object.\n\n**Options**:\n\n- `secret` (_string_, **required**) - the secret to use for validating the request.\n- `parseBody` (_boolean_, optional, default: _true_) - whether or not to parse the body as JSON and set `request.body` to the parsed value.\n- `respondOnError` (_boolean_, optional, default: _true_) - whether or not the request should automatically respond to the request with an error, or (if `false`) pass the error on to the next registered error middleware.\n\n### assertValidSignature\n\n**assertValidSignature**(`stringifiedPayload`: _string_, `signature`: _string_, `secret`: _string_): _Promise<void>_\n\nAsserts that the given payload and signature matches and is valid, given the specified secret. If it is not valid, the function will throw an error with a descriptive `message` property.\n\n### isValidSignature\n\n**isValidSignature**(`stringifiedPayload`: _string_, `signature`: _string_, `secret`: _string_): _Promise<boolean>_\n\nReturns whether or not the given payload and signature matches and is valid, given the specified secret. On invalid, missing or mishaped signatures, this function will return `false` instead of throwing.\n\n### assertValidRequest\n\n**assertValidRequest**(`request`: _ConnectLikeRequest_, `secret`: _string_): _Promise<void>_\n\nAsserts that the given request has a request body which matches the received signature, and that the signature is valid given the specified secret. If it is not valid, the function will throw an error with a descriptive `message` property.\n\n### isValidRequest\n\n**isValidRequest**(`request`: _ConnectLikeRequest_, `secret`: _string_): _Promise<boolean>_\n\nReturns whether or not the given request has a request body which matches the received signature, and that the signature is valid given the specified secret.\n\n## Migration\n\n### From version 3.x to 4.x\n\nIn versions 3.x and below, this library would syncronously assert/return boolean values. From v4.0.0 and up, we now return promises instead. This allows using the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API), available in a broader range of environments.\n\nv4 also requires Node.js 18 or higher.\n\n### From parsed to unparsed body\n\nIn versions 1.0.2 and below, this library would accept a parsed request body as the input for `requireSignedRequest()`, `assertValidRequest()` and `isValidRequest()`.\n\nThese methods would internally call `JSON.stringify()` on the body in these cases, then compare it to the signature. This works in _most_ cases, but because of slightly different JSON-encoding behavior between environments, it could sometimes lead to a mismatch in signatures.\n\nTo prevent these situations from occuring, we now _highly_ recommend that you aquire the raw request body when using these methods.\n\nSee the usage examples further up for how to do this:\n\n- [Express.js or similar](#usage-with-expressjs-or-similar)\n- [Next.js](#usage-with-nextjs)\n\nDifferences in behavior:\n\n- In version 2.0.0 and above, an error will be thrown if the request body is not a string or a buffer.\n- In version 1.1.0, a warning will be printed to the console if the request body is not a string or buffer.\n\n## License\n\nMIT-licensed. See LICENSE.\n","readmeFilename":"README.md"}