{"_id":"@bernierllc/contentful-client-core","_rev":"13-6005e09a78a50cc6c20d3e00f79dd2e0","name":"@bernierllc/contentful-client-core","dist-tags":{"latest":"1.5.1"},"versions":{"1.0.1":{"name":"@bernierllc/contentful-client-core","version":"1.0.1","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3114bc5cf3fe94e2a9790005f891abb349cacebc","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.0.1.tgz","fileCount":7,"integrity":"sha512-uMxaEQANOo9lEBxyUO2qdqEjuRQOeLlqlybrlY6QUDrZOblwVCmZQZ64H1ravYf1/Urc7UKEPO45TsdQmWXgRw==","signatures":[{"sig":"MEUCIQDwLxRV9kSwAmvInmifbcNTiTOI4XsjQjhJ4GygJTjmZAIgO6aTclQ8XfELUNcYHNQ4ocE3/gezHHMMJmCrVmR4xjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21393},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-1.0.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":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/f16f64bf59cfeb6f3351e55f90a9914b/bernierllc-contentful-client-core-1.0.1.tgz","_integrity":"sha512-uMxaEQANOo9lEBxyUO2qdqEjuRQOeLlqlybrlY6QUDrZOblwVCmZQZ64H1ravYf1/Urc7UKEPO45TsdQmWXgRw==","_npmVersion":"11.6.2","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"25.2.1","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"^1.0.1","@bernierllc/retry-state":"^0.1.3","@bernierllc/retry-policy":"^0.1.6","@bernierllc/retry-metrics":"^0.1.3","@bernierllc/contentful-types":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.0.1_1764698227637_0.31667119015711354","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/contentful-client-core","version":"1.0.2","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ca930992e728d51d0c12aef868f3494a01db31a8","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.0.2.tgz","fileCount":7,"integrity":"sha512-0592AYy8yCzAMYEWhY5+dY+84Jo2XExY9WaRlRG/afOya1EC3OgZ4J/Z/d1PeDRDBU32ePztQLMPMV+T55T3Ag==","signatures":[{"sig":"MEQCIHkHV68zYfT6KnT1xesu1hqMeJyuNDSp71PmN8qUGtvsAiAqIW70+4FdKdpkoREmMf9VnPW6Sq/Qnx0blGwAVKn4Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/tmp/50229f79ab1822e50dc8c8e0429455f8/bernierllc-contentful-client-core-1.0.2.tgz","_integrity":"sha512-0592AYy8yCzAMYEWhY5+dY+84Jo2XExY9WaRlRG/afOya1EC3OgZ4J/Z/d1PeDRDBU32ePztQLMPMV+T55T3Ag==","_npmVersion":"11.7.0","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.0.4","@bernierllc/retry-state":"0.1.3","@bernierllc/retry-policy":"0.1.6","@bernierllc/retry-metrics":"0.1.3","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.0.2_1766437793014_0.9313248912960626","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/contentful-client-core","version":"1.0.3","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"871f486adaa235a60e5795b3e808d0d91f56a505","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.0.3.tgz","fileCount":7,"integrity":"sha512-GUZtpT2MBI/PLb9xH9ZTuIvfWsM0+iDATnwKhYeFtgcfVX+YZXZlSKTl8Hdw7wcjdIJyy/0+mJrvyvrAsCiCRA==","signatures":[{"sig":"MEUCIBjSGI56wHEVaygRrd5u2mBzy2YnzQlrbijF12kq2jUjAiEA8Fz3S1S4Xn72t2zUlcyWPLIbAdQxk5O44RCpddGi+9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/tmp/58fc155446790fdd8677956691e439ac/bernierllc-contentful-client-core-1.0.3.tgz","_integrity":"sha512-GUZtpT2MBI/PLb9xH9ZTuIvfWsM0+iDATnwKhYeFtgcfVX+YZXZlSKTl8Hdw7wcjdIJyy/0+mJrvyvrAsCiCRA==","_npmVersion":"11.7.0","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.1.0","@bernierllc/retry-state":"0.1.3","@bernierllc/retry-policy":"0.1.6","@bernierllc/retry-metrics":"0.1.3","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.0.3_1766608055375_0.39855134531091063","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/contentful-client-core","version":"1.2.0","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"02402452c027d0e52603a2205a291cc54289d9ec","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.0.tgz","fileCount":7,"integrity":"sha512-4UT6ovrX95o2syQSThGJ91NNXHItMbYb0ZjnleLOW8Qkf5LzEyQDj3I+OSfW0HriKovrltCQ97SOU0fwNHgCAQ==","signatures":[{"sig":"MEUCIQCu8sh4280Sao1vYOobzEorl2Z8RzRkk4N2RoEfa/ucqgIgCpDdCZMeJtZhdDU9CficbwFk4GZIy8eh33ihFxXpxAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21593},"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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.0","@bernierllc/retry-state":"0.2.0","@bernierllc/retry-policy":"0.3.0","@bernierllc/retry-metrics":"0.2.0","@bernierllc/contentful-types":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.0_1767642433657_0.9575068261891562","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/contentful-client-core","version":"1.2.1","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"42ebf5e564fd97191d1eac0034f01aa6b1a984c5","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.1.tgz","fileCount":7,"integrity":"sha512-hkjJyHwZctDavEhJzPaEZGO+OiTHG2fEaCE6C/sHcT0RqKlVtaEksIf/s3f1kj54hoegpPAHSzGg+GaJ3LAGqw==","signatures":[{"sig":"MEUCIQCpFQtkD4iOb4AugB9T/ZsoDCdrQA45LOdqS+Sxl+qVPAIgPKkFYcGt2lrDWTlmqj9eCmpZcyGQgOubqZOYqhfn6ig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-1.2.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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/tmp/50446135b2e96459cfbe664fb3be3813/bernierllc-contentful-client-core-1.2.1.tgz","_integrity":"sha512-hkjJyHwZctDavEhJzPaEZGO+OiTHG2fEaCE6C/sHcT0RqKlVtaEksIf/s3f1kj54hoegpPAHSzGg+GaJ3LAGqw==","_npmVersion":"11.11.0","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.1","@bernierllc/retry-state":"0.2.1","@bernierllc/retry-policy":"0.3.1","@bernierllc/retry-metrics":"0.2.1","@bernierllc/contentful-types":"1.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.1_1773078414718_0.3362397315668748","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/contentful-client-core","version":"1.2.2","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3157e5db364bd1d920c07efd45a3f4565613cdbd","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.2.tgz","fileCount":7,"integrity":"sha512-9ILcKsCcALr6AWsaN7T+vAfZsQauo+r3xU41p/nLEwz+iIfzb++xlorLo1lWKZaCsSe8J+f7NQHPs4wufIql4A==","signatures":[{"sig":"MEUCIQCkaOA29dGA0nDaoMXW/M5PPxbbkHQtNgPvQ8cRu6gxuwIgXMZI11+fAt64DzQmaKRIPTwykPkjje3VhpnDjw2J3wA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.2.2.tgz","_integrity":"sha512-9ILcKsCcALr6AWsaN7T+vAfZsQauo+r3xU41p/nLEwz+iIfzb++xlorLo1lWKZaCsSe8J+f7NQHPs4wufIql4A==","_npmVersion":"11.11.0","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.2","@bernierllc/retry-state":"0.2.2","@bernierllc/retry-policy":"0.3.2","@bernierllc/retry-metrics":"0.2.2","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.2_1773163108210_0.712856422572482","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/contentful-client-core","version":"1.2.3","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"340d99d3c5c48ad68dae522d862421ba3f9eebda","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.3.tgz","fileCount":7,"integrity":"sha512-0a0hmRh16GIvTZoTVcPw5dE+cem0YTQTBhZt2v4hyyVaOgmhCP9Q+O/BwKSLJk7SCerXKEnWuqf+p7lEyLCfJg==","signatures":[{"sig":"MEQCIA9iPrO9C3xpcX89VFkdloG5zOl1qpMdbAoZwRkbKe+1AiBPhMvAkLqZ7Lyv8Elz9CnmrtVstyv0u6ltm4bzy5zfsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.2.3.tgz","_integrity":"sha512-0a0hmRh16GIvTZoTVcPw5dE+cem0YTQTBhZt2v4hyyVaOgmhCP9Q+O/BwKSLJk7SCerXKEnWuqf+p7lEyLCfJg==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.0","@bernierllc/retry-state":"0.2.2","@bernierllc/retry-policy":"0.4.0","@bernierllc/retry-metrics":"0.2.2","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.3_1779133396821_0.1895035705475001","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/contentful-client-core","version":"1.2.4","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"84f6f3957d7a5ac05a204f66cf6f5e68da6440e4","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.4.tgz","fileCount":7,"integrity":"sha512-zMROlFUYO8iUJc7p4raJKG5jgun+qubfFXrB7D4/W2O1SyrIfFewHNSVGPK4odys0Os84iu+lhuc3l5ebeDbfA==","signatures":[{"sig":"MEQCIDJZ7P5EoXoFeLiOsTDCOfqWQlFTYruA96KJg8p0wudnAiB3H8ONbdFokHmA5UIPv5Pz6wKKVazmsmsPM/8JCkNg+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.2.4.tgz","_integrity":"sha512-zMROlFUYO8iUJc7p4raJKG5jgun+qubfFXrB7D4/W2O1SyrIfFewHNSVGPK4odys0Os84iu+lhuc3l5ebeDbfA==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.2","@bernierllc/retry-state":"0.2.2","@bernierllc/retry-policy":"0.5.1","@bernierllc/retry-metrics":"0.2.2","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.4_1779157150454_0.4995221338895175","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/contentful-client-core","version":"1.2.5","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ecc220390382694e2f899eb45b29b34867359e2a","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.2.5.tgz","fileCount":7,"integrity":"sha512-H6iBw4ycYfgjl2ZRun91d79QiGZpEPL3OCe7twT2MEvgpLJYmHaycl4HG+Jicf8+roAIDQhg0gdSMt7w6gK0Qw==","signatures":[{"sig":"MEUCIDGrTisaEAEmUsV4a5NahwEg7IudRl4s/Tx+WaUhO0UUAiEA7tbcnEP6TWPqesKaZldibLLHEsUTjRooqgbNO8gAaSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21484},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.2.5.tgz","_integrity":"sha512-H6iBw4ycYfgjl2ZRun91d79QiGZpEPL3OCe7twT2MEvgpLJYmHaycl4HG+Jicf8+roAIDQhg0gdSMt7w6gK0Qw==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.3","@bernierllc/retry-state":"0.2.2","@bernierllc/retry-policy":"0.5.1","@bernierllc/retry-metrics":"0.2.2","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.2.5_1779221251536_0.2942365946505747","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/contentful-client-core","version":"1.4.0","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d0f1cc660ebb43e0fb01ae47df628ea7ea2152bf","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.4.0.tgz","fileCount":9,"integrity":"sha512-wVEbDioJSMc9ChKwjw2q57z+UhoTVrUKR2PsWwDYVa2ecwK4o4z1uMo+eP1OQUPRHSwsRZKI23T2/BnZvQ0PmA==","signatures":[{"sig":"MEUCIFBkhlWMzdFq3Iix5yxSRRGn4QwzVX5Xj8JGjalrUke2AiEAn8gH5OVh47pVM9PYnxjTKAw2W5aQuRR5tD5ZFPyLBes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23394},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.4.0.tgz","_integrity":"sha512-wVEbDioJSMc9ChKwjw2q57z+UhoTVrUKR2PsWwDYVa2ecwK4o4z1uMo+eP1OQUPRHSwsRZKI23T2/BnZvQ0PmA==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.6.0","@bernierllc/retry-state":"0.3.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/retry-metrics":"0.3.0","@bernierllc/contentful-types":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.4.0_1779241042953_0.6989063839836693","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@bernierllc/contentful-client-core","version":"1.4.1","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.4.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"99b56b1dbc56994986d2ecabc8f16b200904aa2f","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.4.1.tgz","fileCount":9,"integrity":"sha512-NlXFAz7xe5Gb8LnalCbZenudJX3um03j0YDI0xJK9W6CLKLqAz1bmQTGZ2VLD5npT6nq1VfBwA7Iszk6dYFDvQ==","signatures":[{"sig":"MEQCIHc7qeDMtFt5+aRWqi+NVb7QMaiUlMOrj1UXinqpZlk8AiAXIMmlYzN5pn3lXAMb6zKLpXDwJ2BlOO+PuSqZkV45hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23394},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.4.1.tgz","_integrity":"sha512-NlXFAz7xe5Gb8LnalCbZenudJX3um03j0YDI0xJK9W6CLKLqAz1bmQTGZ2VLD5npT6nq1VfBwA7Iszk6dYFDvQ==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.6.0","@bernierllc/retry-state":"0.4.0","@bernierllc/retry-policy":"0.6.0","@bernierllc/retry-metrics":"0.4.0","@bernierllc/contentful-types":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.4.1_1779243172118_0.3297995008225556","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/contentful-client-core","version":"1.5.0","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-client-core@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ffa0509fc125b959ad0b531e72819ca64da031df","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.5.0.tgz","fileCount":9,"integrity":"sha512-ieYgfwvpLjseSNPNRQocCTuaN3z2IMWPEWVNL3zjguSqtJi/KG9+ryjkUPr2Pfj49AenzwxJzhPCq/4S/aAetQ==","signatures":[{"sig":"MEQCIFr3kz/VcJMrrFta29ULzUuNL3otDfh/ndlG+gQh4ufBAiAVDY0mRLFjX3yH3itW1MsYwAOpaslhhSI53E5l5JR97A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23394},"main":"dist/index.js","_from":"file:bernierllc-contentful-client-core-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:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.5.0.tgz","_integrity":"sha512-ieYgfwvpLjseSNPNRQocCTuaN3z2IMWPEWVNL3zjguSqtJi/KG9+ryjkUPr2Pfj49AenzwxJzhPCq/4S/aAetQ==","_npmVersion":"11.14.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.7.0","@bernierllc/retry-state":"0.5.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/retry-metrics":"0.5.0","@bernierllc/contentful-types":"1.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.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-client-core_1.5.0_1779249783469_0.3927287991417274","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@bernierllc/contentful-client-core","version":"1.5.1","description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","main":"dist/index.js","types":"dist/index.d.ts","keywords":["contentful","http-client","retry","rate-limiting","core"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.7.1","@bernierllc/retry-metrics":"0.5.0","@bernierllc/retry-policy":"0.7.0","@bernierllc/retry-state":"0.5.0","@bernierllc/contentful-types":"1.5.0"},"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","nock":"^13.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-client-core@1.5.1","_integrity":"sha512-aid/31rlfElNrPNNBj8ArI3N/+eD/PlDJM3HHYxbNFA/7uDMvGoRe1aOjhlcuwQeucgyQKHGIExqR0n+XFkOeA==","_resolved":"/home/runner/work/tools/tools/packages/core/contentful-client-core/bernierllc-contentful-client-core-1.5.1.tgz","_from":"file:bernierllc-contentful-client-core-1.5.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-aid/31rlfElNrPNNBj8ArI3N/+eD/PlDJM3HHYxbNFA/7uDMvGoRe1aOjhlcuwQeucgyQKHGIExqR0n+XFkOeA==","shasum":"74276dc258d885aa8a6e21ebdf2bb1faf4d6658f","tarball":"https://registry.npmjs.org/@bernierllc/contentful-client-core/-/contentful-client-core-1.5.1.tgz","fileCount":9,"unpackedSize":23394,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDULPmBBUjir1d7w4hG2OR5L5vyqFkqbPIFFTQec8JTLAiEAuI690dkBDgwZqOe5F0nDlz3yYo9VhB+7CUQxM2BTsgM="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1b8d9c99-38c2-4ee0-a29e-99824dfd9976"}},"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-client-core_1.5.1_1784015550762_0.34334770802148995"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T17:57:07.508Z","modified":"2026-07-14T07:52:31.023Z","1.0.1":"2025-12-02T17:57:07.799Z","1.0.2":"2025-12-22T21:09:53.157Z","1.0.3":"2025-12-24T20:27:35.510Z","1.2.0":"2026-01-05T19:47:13.825Z","1.2.1":"2026-03-09T17:46:54.863Z","1.2.2":"2026-03-10T17:18:28.360Z","1.2.3":"2026-05-18T19:43:16.977Z","1.2.4":"2026-05-19T02:19:10.591Z","1.2.5":"2026-05-19T20:07:31.693Z","1.4.0":"2026-05-20T01:37:23.111Z","1.4.1":"2026-05-20T02:12:52.279Z","1.5.0":"2026-05-20T04:03:03.609Z","1.5.1":"2026-07-14T07:52:30.895Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["contentful","http-client","retry","rate-limiting","core"],"description":"Shared HTTP client for Contentful APIs with retry logic and rate limiting","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/contentful-client-core\n\nShared HTTP client for Contentful APIs with retry logic and rate limiting.\n\n## Features\n\n- 🔄 **Automatic Retry** - Exponential backoff for 429 and 5xx errors\n- ⚡ **Rate Limiting** - Token bucket algorithm (7 req/sec default, configurable)\n- 🔒 **Authentication** - Bearer token injection for all requests\n- 🛡️ **Error Sanitization** - Normalized error responses with sensitive data removed\n- 📊 **Logging & Metrics** - Request/response logging with `@bernierllc/logger`\n- ⏱️ **Timeout Handling** - Configurable request timeouts (30s default)\n- 🎯 **Multi-API Support** - CMA, CDA, and GraphQL base URLs\n\n## Installation\n\n```bash\nnpm install @bernierllc/contentful-client-core\n```\n\n## Usage\n\n### Basic Client\n\n```typescript\nimport { ContentfulClientCore } from '@bernierllc/contentful-client-core';\n\nconst client = new ContentfulClientCore({\n  accessToken: 'your-contentful-token',\n  spaceId: 'your-space-id',\n  apiType: 'cma', // or 'cda', 'graphql'\n  environmentId: 'master' // optional, defaults to 'master'\n});\n\n// GET request\nconst entries = await client.get('/entries');\n\n// POST request\nconst newEntry = await client.post('/entries', {\n  fields: {\n    title: { 'en-US': 'My Entry' }\n  }\n});\n\n// PUT request\nconst updated = await client.put('/entries/entry-id', data);\n\n// PATCH request\nconst patched = await client.patch('/entries/entry-id', partialData);\n\n// DELETE request\nawait client.delete('/entries/entry-id');\n```\n\n### Configuration\n\n```typescript\nconst client = new ContentfulClientCore({\n  accessToken: 'your-token',\n  spaceId: 'your-space',\n  apiType: 'cma',\n\n  // Optional configurations\n  environmentId: 'staging',\n  host: 'https://custom.contentful.com', // Override base URL\n  timeout: 30000, // Request timeout in ms (default: 30000)\n  maxRetries: 3, // Max retry attempts (default: 3)\n  retryOnError: true, // Enable retry logic (default: true)\n\n  // Rate limiting\n  rateLimit: {\n    requestsPerSecond: 7, // Default: 7\n    burstSize: 10 // Token bucket burst size (default: 10)\n  },\n\n  // Custom logger\n  logger: customLogger\n});\n```\n\n### API Types\n\nThe client supports three Contentful API types:\n\n**Content Management API (CMA)**\n```typescript\nconst cmaClient = new ContentfulClientCore({\n  accessToken: 'cma-token',\n  spaceId: 'space-id',\n  apiType: 'cma'\n});\n// Base URL: https://api.contentful.com/spaces/{spaceId}/environments/{environmentId}\n```\n\n**Content Delivery API (CDA)**\n```typescript\nconst cdaClient = new ContentfulClientCore({\n  accessToken: 'cda-token',\n  spaceId: 'space-id',\n  apiType: 'cda'\n});\n// Base URL: https://cdn.contentful.com/spaces/{spaceId}/environments/{environmentId}\n```\n\n**GraphQL API**\n```typescript\nconst graphqlClient = new ContentfulClientCore({\n  accessToken: 'graphql-token',\n  spaceId: 'space-id',\n  apiType: 'graphql'\n});\n// Base URL: https://graphql.contentful.com/content/v1/spaces/{spaceId}/environments/{environmentId}\n```\n\n### Retry Logic\n\nThe client automatically retries on:\n- **429 Too Many Requests** - Respects `Retry-After` and `X-Contentful-RateLimit-Reset` headers\n- **5xx Server Errors** - Exponential backoff with jitter\n\n**Does NOT retry on:**\n- 4xx client errors (except 429)\n- Network errors\n\n```typescript\n// Customize retry behavior\nconst client = new ContentfulClientCore({\n  accessToken: 'token',\n  spaceId: 'space-id',\n  apiType: 'cma',\n  maxRetries: 5, // Increase max retries\n  retryOnError: false // Disable retries\n});\n```\n\n### Rate Limiting\n\nUses token bucket algorithm to enforce rate limits:\n\n```typescript\nconst client = new ContentfulClientCore({\n  accessToken: 'token',\n  spaceId: 'space-id',\n  apiType: 'cma',\n  rateLimit: {\n    requestsPerSecond: 10, // Allow 10 requests per second\n    burstSize: 20 // Allow bursts up to 20 requests\n  }\n});\n```\n\n**Contentful Default**: 7 requests/second with burst size of 10.\n\n### Error Handling\n\nErrors are sanitized and normalized:\n\n```typescript\ntry {\n  await client.get('/entries/invalid-id');\n} catch (error) {\n  console.error(error.message); // Error message\n  console.error(error.status); // HTTP status code\n  console.error(error.statusText); // HTTP status text\n  console.error(error.errorId); // Contentful error ID\n  console.error(error.details); // Additional error details\n  console.error(error.requestId); // Contentful request ID\n  console.error(error.retryable); // Whether error is retryable\n}\n```\n\n### Custom Request\n\nFor advanced use cases, use the `request` method:\n\n```typescript\nconst result = await client.request({\n  method: 'GET',\n  url: '/entries',\n  params: { limit: 10, skip: 0 },\n  headers: { 'X-Custom-Header': 'value' }\n});\n```\n\n## Architecture\n\n### Rate Limiter\n\nThe `RateLimiter` class implements a token bucket algorithm:\n\n```typescript\nimport { RateLimiter } from '@bernierllc/contentful-client-core';\n\nconst limiter = new RateLimiter({\n  requestsPerSecond: 7,\n  burstSize: 10\n});\n\nawait limiter.acquire(); // Consumes one token\n```\n\n## Dependencies\n\n- `@bernierllc/contentful-types` - Type definitions\n- `@bernierllc/retry-policy` - Retry algorithms\n- `@bernierllc/retry-state` - Retry state management\n- `@bernierllc/retry-metrics` - Retry metrics\n- `@bernierllc/logger` - Logging\n- `axios` - HTTP client\n\n## Integration\n\nThis is a **core package** that provides foundational HTTP client functionality. It integrates gracefully with:\n\n- `@bernierllc/logger` - Automatic request/response logging\n- `@bernierllc/retry-policy` - Exponential backoff retry logic\n- `@bernierllc/neverhub-adapter` - **Optional** (NeverHub integration not required for core packages)\n\n### With CMA Client\n\n```typescript\nimport { ContentfulClientCore } from '@bernierllc/contentful-client-core';\n\nconst coreClient = new ContentfulClientCore({\n  accessToken: 'cma-token',\n  spaceId: 'space-id',\n  apiType: 'cma'\n});\n\n// Use in CMA wrapper\nconst entries = await coreClient.get('/entries');\n```\n\n### With CDA Client\n\n```typescript\nconst cdaClient = new ContentfulClientCore({\n  accessToken: 'cda-token',\n  spaceId: 'space-id',\n  apiType: 'cda'\n});\n\nconst entries = await cdaClient.get('/entries');\n```\n\n## Security\n\nThis package implements several security best practices:\n\n- **Token Sanitization** - Access tokens are redacted from logs and error messages\n- **Error Sanitization** - Sensitive data removed from error responses\n- **No Hardcoded Secrets** - All credentials passed via configuration\n- **Dependency Auditing** - Regular security audits of dependencies\n- **Strict TypeScript** - Type safety prevents common security issues\n\n**Environment Variables**: This package does not use environment variables directly. Credentials must be passed explicitly via constructor options.\n\n## Testing\n\n```bash\nnpm test\nnpm run test:coverage\n```\n\n### Mock Example\n\n```typescript\nimport nock from 'nock';\nimport { ContentfulClientCore } from '@bernierllc/contentful-client-core';\n\ndescribe('My Test', () => {\n  it('should fetch entries', async () => {\n    const client = new ContentfulClientCore({\n      accessToken: 'test-token',\n      spaceId: 'test-space',\n      apiType: 'cma',\n      rateLimit: { requestsPerSecond: 100 } // High limit for tests\n    });\n\n    nock('https://api.contentful.com')\n      .get('/spaces/test-space/environments/master/entries')\n      .reply(200, { items: [] });\n\n    const result = await client.get('/entries');\n    expect(result).toEqual({ items: [] });\n  });\n});\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See LICENSE for details.\n","readmeFilename":"README.md"}