{"_id":"@bernierllc/contentful-webhook-service","_rev":"15-f38b82d9024b51b35c31768665a53770","name":"@bernierllc/contentful-webhook-service","dist-tags":{"latest":"1.4.3"},"versions":{"1.0.2":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.2","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d1a4204ae7debce81e829806cfb3a4375b516ccd","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.2.tgz","fileCount":25,"integrity":"sha512-J3r0OqHOjWMQfvLEvwrsOxge9tqsafq/8yavRJDAxHwqLWi0+nVZTxmTXtYfskAti6n00kMsdTEYPYuBwn4Nsw==","signatures":[{"sig":"MEUCIQCVDo5b5ViPKcF7go8RhOsxLNLIXo9h7CHMWkseTgcohQIgMKeMlETSfizK9+k4HRLsb7svWbrmBL4QKFX8ZCUMrWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176473},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/95b61a196e394a2fe8c75b9cb7fd573c/bernierllc-contentful-webhook-service-1.0.2.tgz","_integrity":"sha512-J3r0OqHOjWMQfvLEvwrsOxge9tqsafq/8yavRJDAxHwqLWi0+nVZTxmTXtYfskAti6n00kMsdTEYPYuBwn4Nsw==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.6.2","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"25.2.1","dependencies":{"express":"^4.18.0","@bernierllc/logger":"^1.0.1","@bernierllc/event-emitter":"^1.0.1","@bernierllc/message-queue":"^1.0.2","@bernierllc/contentful-types":"^1.0.0","@bernierllc/neverhub-adapter":"^0.1.1","@bernierllc/contentful-webhook-handler":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.2_1764704628985_0.35505112941857253","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.3","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d1968bd373ab8615214b2abc342e4597b81061b6","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.3.tgz","fileCount":14,"integrity":"sha512-poAYp53/OeBC40a+y9p59wxup9iuRNquobhDkWFQbks1Ip8zV1stjJQqQw6NwHEZ2YbuPam2Ykcggy8sc0W0sg==","signatures":[{"sig":"MEYCIQCXKGPeEe/mIN/JSLdhgyDOQB+dm27vKRE9NF5T0SNNugIhANsFrdYvh3EC/ZOy6vH+5DU3Z8Q8SczzDvQfZeEumQqI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59798},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/tmp/72ba67bec9a29d70e8b08171f28dc24c/bernierllc-contentful-webhook-service-1.0.3.tgz","_integrity":"sha512-poAYp53/OeBC40a+y9p59wxup9iuRNquobhDkWFQbks1Ip8zV1stjJQqQw6NwHEZ2YbuPam2Ykcggy8sc0W0sg==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.7.0","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.19.6","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.0.4","@bernierllc/event-emitter":"1.0.2","@bernierllc/message-queue":"1.0.2","@bernierllc/contentful-types":"1.0.4","@bernierllc/neverhub-adapter":"0.1.2","@bernierllc/contentful-webhook-handler":"1.0.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.3_1766437838835_0.1263770176373853","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.4","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"79f4488eeea0278427ffc7de85762702ca8191eb","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.4.tgz","fileCount":14,"integrity":"sha512-2f44nzgInDACw1XKd7yippMdidFV0H4BcMmCiEAsgfs4XJM/xtkOSO3hc59oMqwgEHx3pCuCEaPxnbrA8AQBJw==","signatures":[{"sig":"MEUCIAgd2FoUbXG1QF8nVAja30rcac4cBJ0O5CNLk43FRnkDAiEA0IJTh7Jn+eQ0Ea/+etaDnMI3av9hpD0pJH9l0zCoXOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60065},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/tmp/d6767b8e1e8367f5041d405c0a4705a4/bernierllc-contentful-webhook-service-1.0.4.tgz","_integrity":"sha512-2f44nzgInDACw1XKd7yippMdidFV0H4BcMmCiEAsgfs4XJM/xtkOSO3hc59oMqwgEHx3pCuCEaPxnbrA8AQBJw==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.7.0","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.19.6","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.1.0","@bernierllc/event-emitter":"1.0.3","@bernierllc/message-queue":"1.0.2","@bernierllc/contentful-types":"1.0.4","@bernierllc/neverhub-adapter":"0.1.2","@bernierllc/contentful-webhook-handler":"1.0.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.4_1766454454184_0.4055300182215722","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.6","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"886b6ef70a8519ab1f7a036dbd7e14c336a5aeb3","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.6.tgz","fileCount":14,"integrity":"sha512-Ln+bEl2iRTfCMh3n92oMnt8BzyCXGLcD9ZlDryr3XTCbhJoLtul/RbcfN6NBkKZOELD5og3ZFqDNmDCEG2cN6A==","signatures":[{"sig":"MEQCIGUF1lz5TIKTK+7K25f6YbKDhUnJuLPaRHlO0SPfu1DmAiB3RyYAxIUV0dssRX2SDg2A23XM48U8CTKF8Ojc7zTNsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61179},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.19.6","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.3.0","@bernierllc/event-emitter":"1.0.5","@bernierllc/message-queue":"1.1.0","@bernierllc/contentful-types":"1.2.0","@bernierllc/neverhub-adapter":"0.1.4","@bernierllc/contentful-webhook-handler":"1.0.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.6_1767642475581_0.5539739604921965","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.8","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.8","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ad33ef4bc9b9efb413c297023046ee56db84bd58","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.8.tgz","fileCount":14,"integrity":"sha512-+yU4Pwo+EfzoWoMt//NMGLAnQz1OPvoOtIFmy3XF6ZSexoRPfPktsTp4CwEBUry4JzsZo6HqWyHDSSwkvk1FoQ==","signatures":[{"sig":"MEUCICHAtcZSoff1kn20mNRNMdoZn2ecU+IANF1IS4Yv0t51AiEA+qIKslr+9YNOQy+FPhENfNJCQyALSxZdwUtV02pANDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61614},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.8.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.0.8.tgz","_integrity":"sha512-+yU4Pwo+EfzoWoMt//NMGLAnQz1OPvoOtIFmy3XF6ZSexoRPfPktsTp4CwEBUry4JzsZo6HqWyHDSSwkvk1FoQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.11.0","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.0","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.3.2","@bernierllc/event-emitter":"1.0.7","@bernierllc/message-queue":"1.1.2","@bernierllc/contentful-types":"1.2.2","@bernierllc/neverhub-adapter":"0.1.6","@bernierllc/contentful-webhook-handler":"1.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.8_1773163533901_0.44514522049429317","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.9","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.9","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"5c3e44300584887e82de76607d3d89dbaea525bb","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.9.tgz","fileCount":14,"integrity":"sha512-y4VdHnGomUhPcMmzttWJysc2FoHJ6P5EEjYi942sl2XXr19bwmhZ96U3RF1ghARjhemqFPs7THPCbDZZW/0LfQ==","signatures":[{"sig":"MEUCIBSwTsZmCDiOJMlB06jXArndEOjVO26ffyx2O1TU+dwFAiEA4ndep9UJgLZE4ssuCpOapQdEabuBFp26YHHtqRTyhVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61860},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.9.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.0.9.tgz","_integrity":"sha512-y4VdHnGomUhPcMmzttWJysc2FoHJ6P5EEjYi942sl2XXr19bwmhZ96U3RF1ghARjhemqFPs7THPCbDZZW/0LfQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.4.0","@bernierllc/event-emitter":"1.0.8","@bernierllc/message-queue":"1.1.3","@bernierllc/contentful-types":"1.2.2","@bernierllc/neverhub-adapter":"0.1.6","@bernierllc/contentful-webhook-handler":"1.0.11"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.9_1779133742109_0.0951834007864456","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.10","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.10","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"eb1b36a7b7c1b5a46d5f184168e7bb6fd46eff95","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.10.tgz","fileCount":14,"integrity":"sha512-lt3F/EAW5LkCB4rRaq8XVDmQrxxcg/C0278nLqQ4fReyivKwpvqJn3fQWUK5/KjgoebWx+Aqu5l1azxPineLEQ==","signatures":[{"sig":"MEUCIQC9Bz9qhAVbG7z5uexkWV6UEe0GxptyU3Vu3E6Dd8qc7QIgckwzG0A+974s4wZ1YrCvb1ZsMFXT+j1GRhBVihE5UCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62109},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.10.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.0.10.tgz","_integrity":"sha512-lt3F/EAW5LkCB4rRaq8XVDmQrxxcg/C0278nLqQ4fReyivKwpvqJn3fQWUK5/KjgoebWx+Aqu5l1azxPineLEQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.4.2","@bernierllc/event-emitter":"1.0.9","@bernierllc/message-queue":"1.1.4","@bernierllc/contentful-types":"1.2.2","@bernierllc/neverhub-adapter":"0.1.6","@bernierllc/contentful-webhook-handler":"1.0.12"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.10_1779157428623_0.2740226623488333","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bernierllc/contentful-webhook-service","version":"1.0.11","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.0.11","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"b2f4a4b10bc48693ae3e4b0fb365041af4cbebe7","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.0.11.tgz","fileCount":14,"integrity":"sha512-SgPgkWbw3vMKxIcunf4M+SnqaY6G24X0NDsW2UqKkOm/9PCvkLXWaLvCln9l0wkEDbqr90gZe+DQIhUpvrzJLQ==","signatures":[{"sig":"MEUCIHW+HSlcRrcfsLywLqXIUybFJSrF9A0ZnCOjrCHnE0OoAiEAvbT76BFJwchUPjkTGpxL66a8p9SjtjkGQSjPxV6wNzc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62358},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.0.11.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.0.11.tgz","_integrity":"sha512-SgPgkWbw3vMKxIcunf4M+SnqaY6G24X0NDsW2UqKkOm/9PCvkLXWaLvCln9l0wkEDbqr90gZe+DQIhUpvrzJLQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.4.3","@bernierllc/event-emitter":"1.2.0","@bernierllc/message-queue":"1.1.4","@bernierllc/contentful-types":"1.2.2","@bernierllc/neverhub-adapter":"0.2.0","@bernierllc/contentful-webhook-handler":"1.0.13"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.0.11_1779221583460_0.026059809316662408","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/contentful-webhook-service","version":"1.1.0","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"02bccefd59e178a3e957c91c80f6cc4fcbd6cdbd","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.1.0.tgz","fileCount":14,"integrity":"sha512-AU1KZQ9suO8a9bRST1cTWlhj9D2MSl/dyjA+Nsu5anMpEoKLxLFY0J63GBLScTofBKP0X+UjB+Etrio56cqo4Q==","signatures":[{"sig":"MEUCICsqE4Y6NRHtPiP8hwOB1H8sdEPdaZ/Cr4mJqyTeeZ9nAiEA+rEpn99Knb0CqxgkhLE+tgPnSaGnAX9nUbiIlZTxtmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62554},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.1.0.tgz","_integrity":"sha512-AU1KZQ9suO8a9bRST1cTWlhj9D2MSl/dyjA+Nsu5anMpEoKLxLFY0J63GBLScTofBKP0X+UjB+Etrio56cqo4Q==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.6.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/message-queue":"1.2.0","@bernierllc/contentful-types":"1.4.0","@bernierllc/neverhub-adapter":"0.3.0","@bernierllc/contentful-webhook-handler":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.1.0_1779241633160_0.3382334046676849","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/contentful-webhook-service","version":"1.3.0","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"cfb83d7f0de65ef480276889b8f12146f7eb727b","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.3.0.tgz","fileCount":9,"integrity":"sha512-gRRl/80wVzfjYs5Sc2i6FditdhNJCMEpFO9ZwbEVI0uHG0M64E3gKWHy1hH3zNeaGhrtkvbrOXEIJDGXDRSPgA==","signatures":[{"sig":"MEUCIQDwNvoMIhcMQ45B8hFqg7l+lL4lWNBeEkZI2eSdi3+DfwIgbYVTKW+nyU+TkrFnvhT5LCipE3YQkpKjChHlQ3oZPlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29870},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.3.0.tgz","_integrity":"sha512-gRRl/80wVzfjYs5Sc2i6FditdhNJCMEpFO9ZwbEVI0uHG0M64E3gKWHy1hH3zNeaGhrtkvbrOXEIJDGXDRSPgA==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.6.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/message-queue":"1.2.0","@bernierllc/contentful-types":"1.4.0","@bernierllc/neverhub-adapter":"0.3.0","@bernierllc/contentful-webhook-handler":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.3.0_1779245971353_0.5719812823582395","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@bernierllc/contentful-webhook-service","version":"1.3.1","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"125deb814169681771c0c148fab0cbedac0f61fd","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.3.1.tgz","fileCount":9,"integrity":"sha512-Qpf6LcQaHfhzij/M/dKwzB0VM2Tupnsqsa+H69wf4jUaGUiYRryAeEXeLFyD/ME4gg6jnYzWoADuGaEpj90GHA==","signatures":[{"sig":"MEUCIFs7afg4mLaGMK75otxfFwMec7BPL/qAxqnwO3JvP6I9AiEA2Qyrya4YKlxJltnqLp9CISMA+gxauSKZBJHJ2MZz95s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29870},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.3.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.3.1.tgz","_integrity":"sha512-Qpf6LcQaHfhzij/M/dKwzB0VM2Tupnsqsa+H69wf4jUaGUiYRryAeEXeLFyD/ME4gg6jnYzWoADuGaEpj90GHA==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.6.0","@bernierllc/event-emitter":"1.3.0","@bernierllc/message-queue":"1.4.0","@bernierllc/contentful-types":"1.4.0","@bernierllc/neverhub-adapter":"0.3.0","@bernierllc/contentful-webhook-handler":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.3.1_1779247220987_0.6160183870040876","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/contentful-webhook-service","version":"1.4.0","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"1600f8b94cb9fb26da81440306c8f9518b48765d","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.4.0.tgz","fileCount":9,"integrity":"sha512-1Uch0a2csQzENOi4jcdqDzCDgG8KDKD2dCBFrlAx7Euq068U5I0st2r92otZ7JfUKNxG7oyZbSyqxgExAKEtOA==","signatures":[{"sig":"MEUCIATfDKx8G9a4HWPeVWMloQA9fwc1SKG8LfMLXSwgW7Q5AiEAxdTw9mRuNrgjcWuTs74//SENKrPV4Hi/iCEbon1mqVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29870},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.4.0.tgz","_integrity":"sha512-1Uch0a2csQzENOi4jcdqDzCDgG8KDKD2dCBFrlAx7Euq068U5I0st2r92otZ7JfUKNxG7oyZbSyqxgExAKEtOA==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"11.14.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"20.20.2","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.7.0","@bernierllc/event-emitter":"1.4.0","@bernierllc/message-queue":"1.5.0","@bernierllc/contentful-types":"1.5.0","@bernierllc/neverhub-adapter":"0.4.0","@bernierllc/contentful-webhook-handler":"1.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.4.0_1779250377721_0.9135646146204983","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@bernierllc/contentful-webhook-service","version":"1.4.1","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.4.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"91d35703e284c535fdcf5d90d3ce6745b31c6451","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.4.1.tgz","fileCount":9,"integrity":"sha512-SX24zlPwgM8NE6RmgI0friOxEZa98YGWaww4zhWW4J77zk0Z6NHhFSpyXWsYPANX2SVkXj+Ljdi/9/K2Ia+drA==","signatures":[{"sig":"MEUCIQDDTBYSmmuAyioTHyvWhfuHYADH0FOglsnXDPE1AJv6JAIgKRBFnQUAwKXbv8NzeeZ1uU6GBPMnW08yyGSlaHsjAWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29870},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.4.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.4.1.tgz","_integrity":"sha512-SX24zlPwgM8NE6RmgI0friOxEZa98YGWaww4zhWW4J77zk0Z6NHhFSpyXWsYPANX2SVkXj+Ljdi/9/K2Ia+drA==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"12.0.1","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"24.18.0","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.7.1","@bernierllc/event-emitter":"1.4.1","@bernierllc/message-queue":"1.5.0","@bernierllc/contentful-types":"1.5.0","@bernierllc/neverhub-adapter":"0.4.1","@bernierllc/contentful-webhook-handler":"1.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.4.1_1784015850490_0.7473560710900857","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@bernierllc/contentful-webhook-service","version":"1.4.2","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-webhook-service@1.4.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"8d7301663cbd15b71d31840d32fc3ed1eafc2013","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.4.2.tgz","fileCount":9,"integrity":"sha512-RNiCafzuqRCxHFHlZqmZ/rx+CaZfI4iz2bAffimmWRyds83PTlbZ5aWVSohfkzHqAg6VSVbOZlnq9acYcjCuQw==","signatures":[{"sig":"MEQCIGCSfZlLaJ/SlgYSeaCI2uYDG6N99RnE0PWjcUJOGsbaAiA5jZXhctE9EzmMr4Kznggx6twrCrUrHOGDk/OFON/hMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEuVnBLgFfNJzJkX58i7ahOmUxom4AUN7UVXJ06dHN1yAiEAziaFmrALwOEBHZVX30tuVRXsYchB/KRgYTLf91FuFFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29870},"main":"dist/index.js","_from":"file:bernierllc-contentful-webhook-service-1.4.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7abf848b-83a9-457c-9b72-8aa053db953c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.4.2.tgz","_integrity":"sha512-RNiCafzuqRCxHFHlZqmZ/rx+CaZfI4iz2bAffimmWRyds83PTlbZ5aWVSohfkzHqAg6VSVbOZlnq9acYcjCuQw==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"12.2.0","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"_nodeVersion":"24.21.0","dependencies":{"express":"^4.18.0","@bernierllc/logger":"1.7.1","@bernierllc/event-emitter":"1.4.1","@bernierllc/message-queue":"1.5.1","@bernierllc/contentful-types":"1.5.0","@bernierllc/neverhub-adapter":"0.4.1","@bernierllc/contentful-webhook-handler":"1.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-webhook-service_1.4.2_1790882564960_0.5072023506219216","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"_id":"@bernierllc/contentful-webhook-service@1.4.3","dist":{"shasum":"60a12038da7e54eaaf486314545aa4b50cb03659","tarball":"https://registry.npmjs.org/@bernierllc/contentful-webhook-service/-/contentful-webhook-service-1.4.3.tgz","fileCount":9,"integrity":"sha512-FCjPE8Us5DqssOSkEZnJd4wzJ+yiNhGRZTrGfCAHzeU5pbP+O14lVvclZreLPgzTcu6WXfK2oXjt7zaMoljv9A==","signatures":[{"sig":"MEYCIQCSqG3nPCUe2nOy316Fos9ih0+U27fJnhKfT609dG2gqAIhANKP98+guZT9RNPcgFT0XGUg1U5XmPUgbz1cU+BcQQZA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC2YPqW4/MHkO8lQUDa0CHWBa9C9EwgmC9CuEv5yzKonAIhAKaVwMjFKWFyDIIwHN9XjBe/a3L/v69YVY8CI4fEGzAT"}],"unpackedSize":29876},"main":"dist/index.js","name":"@bernierllc/contentful-webhook-service","_from":"file:bernierllc-contentful-webhook-service-1.4.3.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:coverage":"jest --coverage --watchAll=false"},"version":"1.4.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7abf848b-83a9-457c-9b72-8aa053db953c"}},"keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"_resolved":"/home/runner/work/tools/tools/packages/service/contentful-webhook-service/bernierllc-contentful-webhook-service-1.4.3.tgz","_integrity":"sha512-FCjPE8Us5DqssOSkEZnJd4wzJ+yiNhGRZTrGfCAHzeU5pbP+O14lVvclZreLPgzTcu6WXfK2oXjt7zaMoljv9A==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","neveradmin":"not-applicable"}},"_npmVersion":"12.2.0","description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"express":"^4.18.0","@bernierllc/logger":"^1.7.1","@bernierllc/event-emitter":"^1.4.1","@bernierllc/message-queue":"^1.5.2","@bernierllc/contentful-types":"^1.5.0","@bernierllc/neverhub-adapter":"^0.4.1","@bernierllc/contentful-webhook-handler":"^1.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","supertest":"^6.3.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@types/express":"^4.17.0","@types/supertest":"^2.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contentful-webhook-service_1.4.3_1790884227253_0.5678519180594015"}}},"time":{"created":"2025-12-02T19:43:48.852Z","modified":"2026-10-01T19:50:27.588Z","1.0.2":"2025-12-02T19:43:49.214Z","1.0.3":"2025-12-22T21:10:39.073Z","1.0.4":"2025-12-23T01:47:34.318Z","1.0.6":"2026-01-05T19:47:55.723Z","1.0.8":"2026-03-10T17:25:34.044Z","1.0.9":"2026-05-18T19:49:02.286Z","1.0.10":"2026-05-19T02:23:48.782Z","1.0.11":"2026-05-19T20:13:03.689Z","1.1.0":"2026-05-20T01:47:13.306Z","1.3.0":"2026-05-20T02:59:31.514Z","1.3.1":"2026-05-20T03:20:21.124Z","1.4.0":"2026-05-20T04:12:57.889Z","1.4.1":"2026-07-14T07:57:30.617Z","1.4.2":"2026-10-01T19:22:45.057Z","1.4.3":"2026-10-01T19:50:27.332Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["contentful","webhook","queueing","routing","event-bus","retry","dead-letter-queue","service"],"description":"Contentful webhook receiving, queueing, and event routing service with signature validation and retry logic","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/contentful-webhook-service\n\nContentful webhook receiving, queueing, and event routing service with signature validation and retry logic.\n\n## Features\n\n- ✅ HTTP webhook endpoint (`/webhooks/contentful`)\n- ✅ HMAC-SHA256 signature validation\n- ✅ Event queueing for reliable delivery\n- ✅ Event routing to subscribers via event bus\n- ✅ Automatic retry logic for failed processing\n- ✅ Dead letter queue for permanently failed events\n- ✅ Health check and stats endpoints\n- ✅ NeverHub integration (optional)\n- ✅ TypeScript with strict type safety\n\n## Installation\n\n```bash\nnpm install @bernierllc/contentful-webhook-service\n```\n\n## Quick Start\n\n```typescript\nimport { ContentfulWebhookService } from '@bernierllc/contentful-webhook-service';\n\n// Initialize service\nconst service = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!,\n  port: 3000,\n  retryAttempts: 3,\n  deadLetterQueueEnabled: true\n});\n\n// Subscribe to webhook events\nservice.on('contentful.Entry.publish', async (payload) => {\n  console.log('Entry published:', payload.sys.id);\n  // Process published entry\n});\n\nservice.on('contentful.Entry.unpublish', async (payload) => {\n  console.log('Entry unpublished:', payload.sys.id);\n  // Handle unpublished entry\n});\n\nservice.on('contentful.Asset.publish', async (payload) => {\n  console.log('Asset published:', payload.sys.id);\n  // Process published asset\n});\n\n// Start service\nawait service.start();\nconsole.log('Webhook service running on port 3000');\n```\n\n## API Reference\n\n### ContentfulWebhookService\n\nMain service class for handling Contentful webhooks.\n\n#### Constructor\n\n```typescript\nnew ContentfulWebhookService(config: ContentfulWebhookServiceConfig)\n```\n\n**Config Options:**\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `webhookSecret` | `string` | ✅ | - | Contentful webhook secret for signature validation |\n| `port` | `number` | ❌ | `3000` | Port to listen on |\n| `queueConfig` | `Partial<QueueConfig>` | ❌ | `{}` | Custom queue configuration |\n| `logger` | `Logger` | ❌ | Auto-created | Custom logger instance |\n| `enableNeverHub` | `boolean` | ❌ | `true` | Enable NeverHub integration |\n| `retryAttempts` | `number` | ❌ | `3` | Max retry attempts for failed processing |\n| `deadLetterQueueEnabled` | `boolean` | ❌ | `true` | Enable dead letter queue |\n\n#### Methods\n\n##### `start(port?: number): Promise<void>`\n\nStart the webhook service.\n\n```typescript\nawait service.start(3000);\n```\n\n##### `stop(): Promise<void>`\n\nStop the webhook service gracefully.\n\n```typescript\nawait service.stop();\n```\n\n##### `on(event: string, handler: (data: any) => Promise<void>): void`\n\nSubscribe to webhook events.\n\n```typescript\nservice.on('contentful.Entry.publish', async (payload) => {\n  // Handle published entry\n});\n```\n\n**Event Patterns:**\n- `contentful.Entry.publish` - Entry published\n- `contentful.Entry.unpublish` - Entry unpublished\n- `contentful.Entry.save` - Entry saved (draft)\n- `contentful.Entry.delete` - Entry deleted\n- `contentful.Asset.publish` - Asset published\n- `contentful.Asset.unpublish` - Asset unpublished\n- `contentful.*` - All webhook events (wildcard)\n\n##### `once(event: string, handler: (data: any) => Promise<void>): void`\n\nSubscribe to webhook events (one-time only).\n\n```typescript\nservice.once('contentful.Entry.publish', async (payload) => {\n  // Handle first published entry\n});\n```\n\n##### `processQueue(): Promise<void>`\n\nManually process queued webhooks (normally handled automatically).\n\n```typescript\nawait service.processQueue();\n```\n\n##### `getStats(): ServiceStats`\n\nGet current service statistics.\n\n```typescript\nconst stats = service.getStats();\nconsole.log(`Received: ${stats.totalReceived}`);\nconsole.log(`Processed: ${stats.totalProcessed}`);\nconsole.log(`Failed: ${stats.totalFailed}`);\n```\n\n## HTTP Endpoints\n\n### POST /webhooks/contentful\n\nReceive webhooks from Contentful.\n\n**Required Headers:**\n- `x-contentful-signature`: HMAC-SHA256 signature\n- `x-contentful-topic`: Webhook topic (e.g., `Entry.publish`)\n\n**Request Body:**\n```json\n{\n  \"sys\": {\n    \"type\": \"Entry\",\n    \"id\": \"entry-123\",\n    \"space\": { \"sys\": { \"id\": \"space-123\" } },\n    \"contentType\": { \"sys\": { \"id\": \"blogPost\" } }\n  },\n  \"fields\": {\n    \"title\": { \"en-US\": \"My Blog Post\" }\n  }\n}\n```\n\n**Response:**\n```json\n{\n  \"success\": true,\n  \"id\": \"webhook-1234567890-abc123\"\n}\n```\n\n### GET /health\n\nHealth check endpoint.\n\n**Response:**\n```json\n{\n  \"status\": \"ok\",\n  \"stats\": {\n    \"totalReceived\": 150,\n    \"totalProcessed\": 145,\n    \"totalFailed\": 2,\n    \"queueSize\": 3,\n    \"deadLetterQueueSize\": 2\n  },\n  \"timestamp\": \"2025-01-01T00:00:00.000Z\"\n}\n```\n\n### GET /stats\n\nGet current service statistics.\n\n**Response:**\n```json\n{\n  \"totalReceived\": 150,\n  \"totalProcessed\": 145,\n  \"totalFailed\": 2,\n  \"queueSize\": 3,\n  \"deadLetterQueueSize\": 2\n}\n```\n\n## Usage Examples\n\n### Basic Usage\n\n```typescript\nimport { ContentfulWebhookService } from '@bernierllc/contentful-webhook-service';\n\nconst service = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!\n});\n\nservice.on('contentful.Entry.publish', async (payload) => {\n  console.log('Entry published:', payload);\n});\n\nawait service.start(3000);\n```\n\n### With Custom Queue Config\n\n```typescript\nconst service = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!,\n  queueConfig: {\n    maxSize: 5000,\n    maxRetries: 5\n  }\n});\n```\n\n### With Custom Logger\n\n```typescript\nimport { createLogger } from '@bernierllc/logger';\n\nconst logger = createLogger({ level: 'debug' });\n\nconst service = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!,\n  logger\n});\n```\n\n### Wildcard Event Handling\n\n```typescript\n// Handle all webhook events\nservice.on('contentful.*', async (data) => {\n  console.log('Webhook received:', data.topic, data.payload.sys.id);\n  // Log to monitoring system, etc.\n});\n```\n\n### Retry and Dead Letter Queue\n\n```typescript\nconst service = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!,\n  retryAttempts: 5,\n  deadLetterQueueEnabled: true\n});\n\n// Failed webhooks are automatically retried up to 5 times\n// Permanently failed webhooks go to dead letter queue\n```\n\n### Integration with Sync Service\n\n```typescript\nimport { ContentfulWebhookService } from '@bernierllc/contentful-webhook-service';\nimport { ContentfulSyncService } from '@bernierllc/contentful-sync-service';\n\nconst webhookService = new ContentfulWebhookService({\n  webhookSecret: process.env.CONTENTFUL_WEBHOOK_SECRET!\n});\n\nconst syncService = new ContentfulSyncService({\n  spaceId: process.env.CONTENTFUL_SPACE_ID!,\n  accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!\n});\n\n// Sync on webhook events\nwebhookService.on('contentful.Entry.publish', async (payload) => {\n  await syncService.syncEntry(payload.sys.id);\n});\n\nawait webhookService.start();\n```\n\n## Architecture\n\n```\n┌─────────────────┐\n│   Contentful    │\n└────────┬────────┘\n         │ Webhook (HMAC signed)\n         ▼\n┌─────────────────────────┐\n│  Webhook Endpoint       │\n│  - Signature validation │\n│  - Payload parsing      │\n└────────┬────────────────┘\n         │\n         ├─────────────────────┐\n         │                     │\n         ▼                     ▼\n┌──────────────┐      ┌─────────────┐\n│ Message Queue│      │  Event Bus  │\n│  - Reliable  │      │  - Routing  │\n│  - Ordered   │      │  - Pub/sub  │\n└──────┬───────┘      └──────┬──────┘\n       │                     │\n       │ Retry               │ Emit\n       │                     │\n       ▼                     ▼\n┌──────────────┐      ┌─────────────┐\n│ Dead Letter  │      │ Subscribers │\n│    Queue     │      │  (handlers) │\n└──────────────┘      └─────────────┘\n```\n\n## Error Handling\n\nThe service handles errors gracefully:\n\n1. **Invalid Signature**: Returns 401 Unauthorized\n2. **Missing Headers**: Returns 401 Unauthorized\n3. **Queue Full**: Returns 500 Internal Server Error\n4. **Handler Errors**: Logged but don't block webhook acceptance\n5. **Retry Failures**: Moved to dead letter queue after max retries\n\n## MECE Compliance\n\n**Includes:**\n- ✅ HTTP webhook endpoint\n- ✅ Signature validation\n- ✅ Event queueing\n- ✅ Event routing\n- ✅ Retry logic\n- ✅ Dead letter queue\n\n**Excludes:**\n- ❌ Webhook processing logic (delegate to subscribers)\n- ❌ Content storage (use `@bernierllc/contentful-sync-service`)\n- ❌ Cache invalidation (use `@bernierllc/contentful-cache-service`)\n\n## Dependencies\n\n- `@bernierllc/contentful-types` - Contentful type definitions\n- `@bernierllc/contentful-webhook-handler` - Signature validation\n- `@bernierllc/message-queue` - Reliable message queueing\n- `@bernierllc/event-emitter` - Event bus\n- `@bernierllc/logger` - Structured logging\n- `@bernierllc/neverhub-adapter` - NeverHub integration\n- `express` - HTTP server\n\n## Testing\n\n```bash\nnpm test                  # Run tests in watch mode\nnpm run test:run          # Run tests once\nnpm run test:coverage     # Run tests with coverage report\n```\n\n### Test Coverage\n\nTarget: **85%+ coverage** (service package standard)\n\nAll critical paths are tested:\n- Webhook receiving and validation\n- Event queueing and routing\n- Retry logic\n- Dead letter queue\n- Stats tracking\n- Service lifecycle\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See LICENSE for details.\n\n## Related Packages\n\n- [@bernierllc/contentful-webhook-handler](../core/contentful-webhook-handler) - Webhook validation\n- [@bernierllc/contentful-sync-service](./contentful-sync-service) - Content synchronization\n- [@bernierllc/contentful-cache-service](./contentful-cache-service) - Cache management\n- [@bernierllc/message-queue](../service/message-queue) - Message queueing\n- [@bernierllc/event-emitter](../core/event-emitter) - Event bus\n\n## Support\n\nFor issues and feature requests, please create an issue on GitHub.\n","readmeFilename":"README.md"}