{"_id":"@bernierllc/contentful-cda-client","_rev":"12-a3900b3317f38e2cbd07fe5f80448af9","name":"@bernierllc/contentful-cda-client","dist-tags":{"latest":"1.5.1"},"versions":{"1.0.2":{"name":"@bernierllc/contentful-cda-client","version":"1.0.2","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"afb523c64801ec6982aa9985c491f74f1fc913ad","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.0.2.tgz","fileCount":7,"integrity":"sha512-S+eGyi34GG1WZjhO5u4rGDw1bek2cFn/oqSH4GNszqKeOXuFSPo9MmaOATJcCwRn+8Qg89VCgGKRVrwJ6fwyXw==","signatures":[{"sig":"MEUCIBgQO6iaJMjBb/YTvfzxQl4EmPFZFS+0pR6wjS5FjHzDAiEAx/ucxYAfG9p53t/U1lpUDna6e11yE4g2ob+Ux4dvYWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33089},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/b7f8b6edbaa672b38fa34e311a902d86/bernierllc-contentful-cda-client-1.0.2.tgz","_integrity":"sha512-S+eGyi34GG1WZjhO5u4rGDw1bek2cFn/oqSH4GNszqKeOXuFSPo9MmaOATJcCwRn+8Qg89VCgGKRVrwJ6fwyXw==","_npmVersion":"11.6.2","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"25.2.1","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"^1.0.1","@bernierllc/contentful-types":"^1.0.4","@bernierllc/contentful-client-core":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.0.2_1764702039545_0.38439174546110455","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/contentful-cda-client","version":"1.0.3","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"705619691b1da4351ccff4a51ba2410a39f7b783","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.0.3.tgz","fileCount":7,"integrity":"sha512-nseppvu6Dh74MQjtSZfyM2NyzDpe6+3IGXbKH8lJttKPoaZRvCN576QIIu42PHn5JTERDSrEXYPC3VM70ziZig==","signatures":[{"sig":"MEQCIDqPWAeVUHnsVrhENzhjuWurAc9+QCQ7yEEmf1PSkoylAiBIlP2Q6hroki9zQOeepHfoj5x2fedM8lPAdn94ktHryQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/tmp/62dbce4bd0d61f5e6191024e49ed4f75/bernierllc-contentful-cda-client-1.0.3.tgz","_integrity":"sha512-nseppvu6Dh74MQjtSZfyM2NyzDpe6+3IGXbKH8lJttKPoaZRvCN576QIIu42PHn5JTERDSrEXYPC3VM70ziZig==","_npmVersion":"11.7.0","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.19.6","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.0.4","@bernierllc/contentful-types":"1.0.4","@bernierllc/contentful-client-core":"1.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.0.3_1766437773054_0.11678412690087847","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/contentful-cda-client","version":"1.0.4","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"fcb998595bc3cef0c4fc527fc8d34d286513a14e","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.0.4.tgz","fileCount":7,"integrity":"sha512-R1OZ61Q4Zg3xcOdao27J+Rt91U6vF9YsIQXs8cxw2SVS4ZADU3xRwCs0i++zLYJts+JF7ihI+5TADjel5kgBtA==","signatures":[{"sig":"MEYCIQDJdnLDFviDH7Al8WTMtkeLYazUJ/BGA+0YVtyGQK+7+wIhAJ2JAfFRlkPTpLqOS3nKhaXC3WfCDCptRDxHyMDJkmpu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/tmp/c5b71dcd5b4908754f67e9bf574732f6/bernierllc-contentful-cda-client-1.0.4.tgz","_integrity":"sha512-R1OZ61Q4Zg3xcOdao27J+Rt91U6vF9YsIQXs8cxw2SVS4ZADU3xRwCs0i++zLYJts+JF7ihI+5TADjel5kgBtA==","_npmVersion":"11.7.0","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.19.6","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.1.0","@bernierllc/contentful-types":"1.0.4","@bernierllc/contentful-client-core":"1.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.0.4_1766454425781_0.9736203770636314","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/contentful-cda-client","version":"1.2.0","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"bcbf20318ceb94d5626611aed9d4ed4e8b023b02","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.2.0.tgz","fileCount":7,"integrity":"sha512-8rXNq9a2gove+GuRo7nmEQJpnKmBFdIXLhpbz0h4ZRaQOAyTxMWE154wUSXCiH20x718JDaJ9OgR8FLT/nTj0w==","signatures":[{"sig":"MEUCIQC4iFxBoKsDPdBWKEivPwniY2frOZmIfls15lBuBlumegIgZjaLcgsPaSpk6WLiq5OmKPQmQ9d9u0PTF/US74XPyxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33291},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.19.6","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.3.0","@bernierllc/contentful-types":"1.2.0","@bernierllc/contentful-client-core":"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","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.2.0_1767642468602_0.3598487790429008","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/contentful-cda-client","version":"1.2.2","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"feded32ac0fa18f9b0d6fd27e59dfc6bff3c9f90","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.2.2.tgz","fileCount":7,"integrity":"sha512-GidoRs8c2NQ4G9En+33xERRNt8u0W3lV3QPaE0p4yt1Q8XQRpmRVgVFYybHhMsQG06Q26lQ1luRgrWQ0/v76aA==","signatures":[{"sig":"MEUCIQC1JCEJoK605LVXRfFZ/KD1SB1C2a4Q9yFGSSpaA90kcwIgdeiRAUeSdBzM0FPJ1d1h6K1JmrrinXwhcfICMcr99vY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.2.2.tgz","_integrity":"sha512-GidoRs8c2NQ4G9En+33xERRNt8u0W3lV3QPaE0p4yt1Q8XQRpmRVgVFYybHhMsQG06Q26lQ1luRgrWQ0/v76aA==","_npmVersion":"11.11.0","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.0","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.3.2","@bernierllc/contentful-types":"1.2.2","@bernierllc/contentful-client-core":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.2.2_1773163104275_0.41765725657340336","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/contentful-cda-client","version":"1.2.3","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"6b6ff9f65c1156fe3a032914cdec0a539a14886b","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.2.3.tgz","fileCount":7,"integrity":"sha512-eYIzpJuo8bsbwZCspPDUIB612+JC6XLe+Wyby7RVcM2qh214Gw2JgbVZIjPTQGWWx2lIn91lFpzdMUafHRkIaQ==","signatures":[{"sig":"MEUCIGIUscY/UU+FA+fb1wX7IgnP+yFHiVMxOi975ZyJ5RMZAiEAidbCqxbca30lhTLLVBM6riPgF318P0BQ7pbGY1gtP5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.2.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.2.3.tgz","_integrity":"sha512-eYIzpJuo8bsbwZCspPDUIB612+JC6XLe+Wyby7RVcM2qh214Gw2JgbVZIjPTQGWWx2lIn91lFpzdMUafHRkIaQ==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.4.0","@bernierllc/contentful-types":"1.2.2","@bernierllc/contentful-client-core":"1.2.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.2.3_1779133392550_0.7478104651657971","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/contentful-cda-client","version":"1.2.4","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"9d42dbe3b1c9a1210b343bcb6dfb65c6ae77d0a4","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.2.4.tgz","fileCount":7,"integrity":"sha512-raDcqaKyJ1Zs+BftCUgJXNebQqnSOAzHU5vxwJ3hINlI0lLjmMEm66ACTdAbPWSyWs8R2qJ8H2ghIo9COPOCYg==","signatures":[{"sig":"MEUCIApJo7B4XAddwSZ0gDidGjD/80Tg3UFE6NxKQ9riH/ANAiEAxizgHn06a4orW8WKz4oPsaLzHuBd2ZLsBEUeswzi3+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.2.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.2.4.tgz","_integrity":"sha512-raDcqaKyJ1Zs+BftCUgJXNebQqnSOAzHU5vxwJ3hINlI0lLjmMEm66ACTdAbPWSyWs8R2qJ8H2ghIo9COPOCYg==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.4.2","@bernierllc/contentful-types":"1.2.2","@bernierllc/contentful-client-core":"1.2.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.2.4_1779157146344_0.1007059438211435","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/contentful-cda-client","version":"1.2.5","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"46fde1b9bf86e71c4d35991727cf1902d731856c","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.2.5.tgz","fileCount":7,"integrity":"sha512-q4h/kk5BwiP71+OVvzf03silPxLE6Xmg9VdUEngbCCrhhODnTpXscJ3e6qxPg3TT7xuas9NK56wM4PPXGBd7mQ==","signatures":[{"sig":"MEUCIQCDdNOpQnVc+wBu/5ZGdWP+F+vpM2KIMwgGvVI8Nd/U3QIgBGBI9px7X64nSnJ1GsUbbGj6kilAFFf0EQJ0gl0ij3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33182},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.2.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.2.5.tgz","_integrity":"sha512-q4h/kk5BwiP71+OVvzf03silPxLE6Xmg9VdUEngbCCrhhODnTpXscJ3e6qxPg3TT7xuas9NK56wM4PPXGBd7mQ==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.4.3","@bernierllc/contentful-types":"1.2.2","@bernierllc/contentful-client-core":"1.2.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","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.2.5_1779221247322_0.49746732980325503","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/contentful-cda-client","version":"1.4.0","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"bc37cbf3dcb6b7e1645d4fd506841e9cb4c0bfb1","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.4.0.tgz","fileCount":9,"integrity":"sha512-GOIzU3NPtk/71MQ2ZthG/gUQccUN0AE7YsIu8SP/5WuRrp5MYAwnFM0eFNQ9pyyiOgZwew/JLN24ebwyBpcmLQ==","signatures":[{"sig":"MEYCIQCOvrlhZuSXZQschITkT1v7JYlraqYnzW6kzk+eApR4awIhAK9UXBH1ybTW614e36nuV/1sO6jUwa9sYGZPPKKRobED","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35034},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.4.0.tgz","_integrity":"sha512-GOIzU3NPtk/71MQ2ZthG/gUQccUN0AE7YsIu8SP/5WuRrp5MYAwnFM0eFNQ9pyyiOgZwew/JLN24ebwyBpcmLQ==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.6.0","@bernierllc/contentful-types":"1.4.0","@bernierllc/contentful-client-core":"1.4.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","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.4.0_1779241039157_0.3232765806536011","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@bernierllc/contentful-cda-client","version":"1.4.1","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.4.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"abfc8e7896af0a841e6031f07aa857aa5067f460","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.4.1.tgz","fileCount":9,"integrity":"sha512-ftZmfXc0JKqA2TCh6jzUORyRWg3PNJMqBm5mbrqP69vvTa9qwIUMdDZH4SUARBvnABosmiXCsgxH/JpCeBD38Q==","signatures":[{"sig":"MEUCIDoYyurXs93xllU6Dfrx8M49xL0UsCN7iDycYnAvIa5WAiEA1e51T0+wIMJQX4IdqIye750eXMyqcf7+1aXr7ekeDyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35034},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.4.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.4.1.tgz","_integrity":"sha512-ftZmfXc0JKqA2TCh6jzUORyRWg3PNJMqBm5mbrqP69vvTa9qwIUMdDZH4SUARBvnABosmiXCsgxH/JpCeBD38Q==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.6.0","@bernierllc/contentful-types":"1.4.0","@bernierllc/contentful-client-core":"1.4.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","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.4.1_1779243167931_0.2389931959810474","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/contentful-cda-client","version":"1.5.0","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-cda-client@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ed86b6d544facc9e6c50da3c2fa0008d088a6781","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.5.0.tgz","fileCount":9,"integrity":"sha512-sYEi9SnekyOLaMTrZArdu72sCkcuV6YYfILaZqa2PD4eWf5cV8FRMJMq8h8/2Ev07fLM8ANoGc/xFCmM2cEWZw==","signatures":[{"sig":"MEQCIARnYuIZjNSVTHY2wNpJPCOhyqL1hDM6lS0VuQas5r+7AiAEc9SL8qXTtoYI57R/HPWZOOiLiSb+/Zp4WBbb1qR4+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35034},"main":"dist/index.js","_from":"file:bernierllc-contentful-cda-client-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","test:run":"jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.5.0.tgz","_integrity":"sha512-sYEi9SnekyOLaMTrZArdu72sCkcuV6YYfILaZqa2PD4eWf5cV8FRMJMq8h8/2Ev07fLM8ANoGc/xFCmM2cEWZw==","_npmVersion":"11.14.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","directories":{},"_nodeVersion":"20.20.2","dependencies":{"contentful":"^10.0.0","@bernierllc/logger":"1.7.0","@bernierllc/contentful-types":"1.5.0","@bernierllc/contentful-client-core":"1.5.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","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-cda-client_1.5.0_1779249779368_0.8344233929471567","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@bernierllc/contentful-cda-client","version":"1.5.1","description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","main":"dist/index.js","types":"dist/index.d.ts","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","dependencies":{"contentful":"^10.0.0","@bernierllc/contentful-types":"1.5.0","@bernierllc/logger":"1.7.1","@bernierllc/contentful-client-core":"1.5.1"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest","test:run":"jest --runInBand","test:coverage":"jest --coverage","test:watch":"jest --watch","lint":"eslint src --ext .ts"},"_id":"@bernierllc/contentful-cda-client@1.5.1","_integrity":"sha512-QiUSXC3uswEqx1SURWeDwCDmxWhPDXfDRwkp/oqvzoQsoT+XLWQ18g9a9KqBvfvOmwFqJDdcPkoDtuMnwwhLBw==","_resolved":"/home/runner/work/tools/tools/packages/core/contentful-cda-client/bernierllc-contentful-cda-client-1.5.1.tgz","_from":"file:bernierllc-contentful-cda-client-1.5.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-QiUSXC3uswEqx1SURWeDwCDmxWhPDXfDRwkp/oqvzoQsoT+XLWQ18g9a9KqBvfvOmwFqJDdcPkoDtuMnwwhLBw==","shasum":"a8e5334f8d769f6e71fccb80f9ce8a717b091c7f","tarball":"https://registry.npmjs.org/@bernierllc/contentful-cda-client/-/contentful-cda-client-1.5.1.tgz","fileCount":9,"unpackedSize":35034,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAwWcJvZ6HR55TLCFrvrmxpAiBLMUiJrSZz/uKkIO5zzAiARdpxiy8MSjAYMQY4U4YeVYfjcMau739Nnnmg1Wr0cSg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d5a92ba-2640-483c-b703-b49e08721487"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contentful-cda-client_1.5.1_1784015546838_0.37586057965117314"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T19:00:39.436Z","modified":"2026-07-14T07:52:27.094Z","1.0.2":"2025-12-02T19:00:39.741Z","1.0.3":"2025-12-22T21:09:33.202Z","1.0.4":"2025-12-23T01:47:05.927Z","1.2.0":"2026-01-05T19:47:48.755Z","1.2.2":"2026-03-10T17:18:24.429Z","1.2.3":"2026-05-18T19:43:12.696Z","1.2.4":"2026-05-19T02:19:06.499Z","1.2.5":"2026-05-19T20:07:27.483Z","1.4.0":"2026-05-20T01:37:19.322Z","1.4.1":"2026-05-20T02:12:48.093Z","1.5.0":"2026-05-20T04:02:59.518Z","1.5.1":"2026-07-14T07:52:26.980Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["contentful","cda","delivery-api","sync","content-delivery","cdn","core"],"description":"Content Delivery API (CDA) client wrapper with Sync API support for published content retrieval","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/contentful-cda-client\n\n> Content Delivery API (CDA) client wrapper for published content retrieval and sync operations.\n\n[![npm version](https://img.shields.io/npm/v/@bernierllc/contentful-cda-client.svg)](https://www.npmjs.com/package/@bernierllc/contentful-cda-client)\n[![License](https://img.shields.io/badge/license-Proprietary-blue.svg)](./LICENSE)\n\n## Overview\n\nWrapper around the official `contentful` npm package for Content Delivery API access. Provides published content retrieval, Sync API for incremental updates, and CDN-backed queries with high rate limits.\n\n### Features\n\n- ✅ **Published Content Access** - Fetch entries and assets from CDN\n- ✅ **Sync API Support** - Initial sync + delta sync for incremental updates\n- ✅ **Locale-Aware** - Fetch content in specific languages\n- ✅ **Include Depth** - Control reference resolution depth\n- ✅ **High Rate Limits** - CDN-backed queries (55 requests/sec)\n- ✅ **Type-Safe** - Full TypeScript support with strict typing\n- ✅ **Logger Integration** - Built-in structured logging\n\n### What This Package Does NOT Do (MECE)\n\n- ❌ Draft/unpublished content (use `@bernierllc/contentful-cma-client`)\n- ❌ Content modification (use `@bernierllc/contentful-cma-client`)\n- ❌ GraphQL queries (use `@bernierllc/contentful-graphql-client`)\n\n## Installation\n\n```bash\nnpm install @bernierllc/contentful-cda-client\n```\n\n## Quick Start\n\n```typescript\nimport { ContentfulCDAClient } from '@bernierllc/contentful-cda-client';\n\n// Initialize client\nconst client = new ContentfulCDAClient({\n  space: 'your-space-id',\n  accessToken: 'your-cda-token', // CDA token (not CMA token!)\n  environment: 'master'\n});\n\n// Fetch single entry\nconst entry = await client.getEntry('entryId');\n\n// Fetch entries with query\nconst posts = await client.getEntries({\n  content_type: 'blogPost',\n  limit: 10,\n  order: '-sys.createdAt'\n});\n\n// Initial sync\nconst syncResult = await client.initialSync();\nconsole.log(`Synced ${syncResult.entries.length} entries`);\n\n// Delta sync (incremental updates)\nconst deltaResult = await client.deltaSync(syncResult.nextSyncToken);\nconsole.log(`Updated ${deltaResult.entries.length} entries`);\n```\n\n## API Reference\n\n### Constructor\n\n#### `new ContentfulCDAClient(config)`\n\nCreates a new CDA client instance.\n\n```typescript\ninterface ContentfulCDAConfig {\n  space: string;              // Required: Contentful space ID\n  accessToken: string;        // Required: CDA access token\n  environment?: string;       // Optional: Environment (default: 'master')\n  host?: string;              // Optional: API host (default: 'cdn.contentful.com')\n  retryOnError?: boolean;     // Optional: Retry on error (default: true)\n  timeout?: number;           // Optional: Request timeout (default: 30000ms)\n}\n```\n\n**Example:**\n\n```typescript\nconst client = new ContentfulCDAClient({\n  space: 'abc123xyz',\n  accessToken: 'your-cda-token',\n  environment: 'master',\n  timeout: 60000\n});\n```\n\n### Entry Methods\n\n#### `getEntry<T>(entryId, locale?)`\n\nRetrieves a single published entry by ID.\n\n```typescript\ninterface BlogPost {\n  title: string;\n  body: string;\n  author: ContentfulLink<'Entry'>;\n}\n\nconst post = await client.getEntry<BlogPost>('5KsDBWseXY6QegucYAoacS');\nconsole.log(post.fields.title);\n\n// Fetch in specific locale\nconst spanishPost = await client.getEntry<BlogPost>('5KsDBWseXY6QegucYAoacS', 'es-ES');\n```\n\n#### `getEntries<T>(query?)`\n\nRetrieves multiple published entries based on query parameters.\n\n```typescript\n// Fetch all blog posts\nconst posts = await client.getEntries({\n  content_type: 'blogPost'\n});\n\n// Fetch with pagination\nconst entries = await client.getEntries({\n  content_type: 'article',\n  limit: 10,\n  skip: 20,\n  order: '-sys.createdAt',\n  include: 2 // Include depth for references\n});\n\n// Fetch in specific locale\nconst frenchArticles = await client.getEntries({\n  content_type: 'article',\n  locale: 'fr-FR'\n});\n\n// Filter by field values\nconst featuredPosts = await client.getEntries({\n  content_type: 'blogPost',\n  'fields.featured': true,\n  limit: 5\n});\n```\n\n**Query Parameters:**\n\n- `content_type`: Filter by content type ID\n- `limit`: Number of items to return (default: 100, max: 1000)\n- `skip`: Number of items to skip (for pagination)\n- `order`: Sort order (e.g., `sys.createdAt`, `-sys.updatedAt`)\n- `include`: Include depth for linked entries/assets (0-10)\n- `locale`: Fetch content in specific locale\n- `fields.[fieldName]`: Filter by field values\n- `select`: Select specific fields to return\n\n### Asset Methods\n\n#### `getAsset(assetId, locale?)`\n\nRetrieves a single published asset by ID.\n\n```typescript\nconst asset = await client.getAsset('1MvhB4KOyyCMIo0KeeqUaa');\nconsole.log(asset.fields.file['en-US'].url); // Image URL\nconsole.log(asset.fields.file['en-US'].details.size); // File size\n```\n\n#### `getAssets(query?)`\n\nRetrieves multiple published assets based on query parameters.\n\n```typescript\n// Fetch all images\nconst images = await client.getAssets({\n  mimetype_group: 'image',\n  limit: 20\n});\n\n// Fetch with pagination and sorting\nconst assets = await client.getAssets({\n  limit: 50,\n  skip: 0,\n  order: '-sys.createdAt'\n});\n```\n\n### Sync API Methods\n\n#### `initialSync(options?)`\n\nPerforms an initial sync to retrieve all published content. Returns a sync token for subsequent delta syncs.\n\n```typescript\n// Sync all content\nconst syncResult = await client.initialSync();\nconsole.log(`Synced ${syncResult.entries.length} entries`);\nconsole.log(`Synced ${syncResult.assets.length} assets`);\n\n// Store the sync token\nconst syncToken = syncResult.nextSyncToken;\n\n// Sync only entries (not assets)\nconst entrySync = await client.initialSync({ type: 'Entry' });\n\n// Sync specific content type\nconst blogSync = await client.initialSync({\n  type: 'Entry',\n  content_type: 'blogPost'\n});\n\n// Sync in specific locale\nconst frenchSync = await client.initialSync({ locale: 'fr-FR' });\n```\n\n**Options:**\n\n```typescript\ninterface ContentfulSyncOptions {\n  type?: 'all' | 'Asset' | 'Entry' | 'Deletion' | 'DeletedAsset' | 'DeletedEntry';\n  content_type?: string; // Filter by content type\n  locale?: string;       // Filter by locale\n  limit?: number;        // Items per page\n}\n```\n\n#### `deltaSync(nextSyncToken)`\n\nPerforms a delta sync using a sync token from a previous sync. Returns only changes since the last sync.\n\n```typescript\n// Perform delta sync\nconst deltaResult = await client.deltaSync(storedSyncToken);\n\n// Process new/updated content\ndeltaResult.entries.forEach(entry => {\n  console.log(`Updated entry: ${entry.sys.id}`);\n});\n\ndeltaResult.assets.forEach(asset => {\n  console.log(`Updated asset: ${asset.sys.id}`);\n});\n\n// Process deletions\ndeltaResult.deletedEntries.forEach(deleted => {\n  console.log(`Deleted entry: ${deleted.sys.id}`);\n});\n\ndeltaResult.deletedAssets.forEach(deleted => {\n  console.log(`Deleted asset: ${deleted.sys.id}`);\n});\n\n// Store new token for next sync\nstoredSyncToken = deltaResult.nextSyncToken;\n```\n\n**Sync Collection Response:**\n\n```typescript\ninterface SyncCollection {\n  entries: Entry[];           // New/updated entries\n  assets: Asset[];            // New/updated assets\n  deletedEntries: Entry[];    // Deleted entries\n  deletedAssets: Asset[];     // Deleted assets\n  nextSyncToken: string;      // Token for next delta sync\n  nextPageUrl?: string;       // URL for pagination (if needed)\n}\n```\n\n### Utility Methods\n\n#### `getConfig()`\n\nReturns the current client configuration (without exposing the access token).\n\n```typescript\nconst config = client.getConfig();\nconsole.log(config.space);       // 'your-space-id'\nconsole.log(config.environment); // 'master'\n// config.accessToken is NOT included for security\n```\n\n#### `getRawClient()`\n\nReturns the underlying Contentful SDK client for advanced operations.\n\n```typescript\nconst rawClient = client.getRawClient();\n// Use for operations not covered by the wrapper\n```\n\n## Usage Examples\n\n### Building a Content Cache\n\n```typescript\nimport { ContentfulCDAClient } from '@bernierllc/contentful-cda-client';\n\nclass ContentCache {\n  private client: ContentfulCDAClient;\n  private syncToken: string | null = null;\n  private cache: Map<string, any> = new Map();\n\n  constructor(config: ContentfulCDAConfig) {\n    this.client = new ContentfulCDAClient(config);\n  }\n\n  async initialize(): Promise<void> {\n    console.log('Initializing content cache...');\n    const syncResult = await this.client.initialSync();\n\n    // Store all entries in cache\n    syncResult.entries.forEach(entry => {\n      this.cache.set(entry.sys.id, entry);\n    });\n\n    // Store sync token for updates\n    this.syncToken = syncResult.nextSyncToken;\n    console.log(`Cache initialized with ${syncResult.entries.length} entries`);\n  }\n\n  async update(): Promise<void> {\n    if (!this.syncToken) {\n      throw new Error('Cache not initialized');\n    }\n\n    console.log('Updating cache...');\n    const deltaResult = await this.client.deltaSync(this.syncToken);\n\n    // Update cache with changes\n    deltaResult.entries.forEach(entry => {\n      this.cache.set(entry.sys.id, entry);\n    });\n\n    // Remove deleted entries\n    deltaResult.deletedEntries.forEach(deleted => {\n      this.cache.delete(deleted.sys.id);\n    });\n\n    // Update sync token\n    this.syncToken = deltaResult.nextSyncToken;\n    console.log(`Cache updated: +${deltaResult.entries.length} entries, -${deltaResult.deletedEntries.length} deleted`);\n  }\n\n  get(id: string): any | undefined {\n    return this.cache.get(id);\n  }\n}\n\n// Usage\nconst cache = new ContentCache({\n  space: 'your-space-id',\n  accessToken: 'your-cda-token'\n});\n\nawait cache.initialize();\n\n// Update cache every 5 minutes\nsetInterval(() => cache.update(), 5 * 60 * 1000);\n```\n\n### Fetching Localized Content\n\n```typescript\nasync function getLocalizedContent(contentType: string, locale: string) {\n  const client = new ContentfulCDAClient({\n    space: 'your-space-id',\n    accessToken: 'your-cda-token'\n  });\n\n  const entries = await client.getEntries({\n    content_type: contentType,\n    locale: locale\n  });\n\n  return entries;\n}\n\n// Fetch blog posts in Spanish\nconst spanishPosts = await getLocalizedContent('blogPost', 'es-ES');\n\n// Fetch products in German\nconst germanProducts = await getLocalizedContent('product', 'de-DE');\n```\n\n### Paginated Content Fetching\n\n```typescript\nasync function fetchAllEntries(contentType: string) {\n  const client = new ContentfulCDAClient({\n    space: 'your-space-id',\n    accessToken: 'your-cda-token'\n  });\n\n  let allEntries: any[] = [];\n  let skip = 0;\n  const limit = 100;\n  let hasMore = true;\n\n  while (hasMore) {\n    const entries = await client.getEntries({\n      content_type: contentType,\n      limit: limit,\n      skip: skip\n    });\n\n    allEntries = allEntries.concat(entries);\n    skip += limit;\n    hasMore = entries.length === limit;\n  }\n\n  return allEntries;\n}\n\n// Fetch all blog posts (handles pagination automatically)\nconst allPosts = await fetchAllEntries('blogPost');\nconsole.log(`Fetched ${allPosts.length} total posts`);\n```\n\n## Rate Limits\n\nThe Content Delivery API is served via CDN with high rate limits:\n\n- **CDA**: 55 requests/second (CDN-backed)\n- **Preview API**: 14 requests/second\n\nFor most use cases, CDA rate limits are generous. If you need higher throughput:\n\n1. Use the Sync API for bulk operations\n2. Implement client-side caching\n3. Use `include` parameter to fetch linked content in single request\n\n## Error Handling\n\n```typescript\ntry {\n  const entry = await client.getEntry('invalid-id');\n} catch (error) {\n  if (error.sys?.id === 'NotFound') {\n    console.error('Entry not found');\n  } else if (error.sys?.id === 'RateLimitExceeded') {\n    console.error('Rate limit exceeded, retry after:', error.sys.retryAfter);\n  } else {\n    console.error('Unknown error:', error);\n  }\n}\n```\n\n## Testing\n\nThe package includes comprehensive test coverage (90%+):\n\n```bash\nnpm test              # Run tests\nnpm run test:coverage # Run with coverage report\nnpm run test:watch    # Watch mode\n```\n\n## Dependencies\n\n- `@bernierllc/contentful-types` - Shared Contentful type definitions\n- `@bernierllc/contentful-client-core` - Shared HTTP client utilities\n- `@bernierllc/logger` - Structured logging\n- `contentful` - Official Contentful SDK\n\n## Related Packages\n\n### Core Layer\n- `@bernierllc/contentful-types` - Shared type definitions\n- `@bernierllc/contentful-client-core` - HTTP client core\n- `@bernierllc/contentful-cma-client` - Management API client (draft content, modifications)\n- `@bernierllc/contentful-graphql-client` - GraphQL API client\n\n### Service Layer\n- `@bernierllc/contentful-sync-service` - Automated sync orchestration\n- `@bernierllc/contentful-cache-service` - Content caching service\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See [LICENSE](./LICENSE) for details.\n\n## Support\n\nFor issues and questions, contact Bernier LLC support or file an issue in the repository.\n","readmeFilename":"README.md"}