{"_id":"@bernierllc/contentful-auth","_rev":"14-d03a9cfa5416034e9022d894e472ecf2","name":"@bernierllc/contentful-auth","dist-tags":{"latest":"1.3.1"},"versions":{"1.0.2":{"name":"@bernierllc/contentful-auth","version":"1.0.2","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e8b66f68424cba792151d8a779c07dfed71b1f20","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.2.tgz","fileCount":9,"integrity":"sha512-zMJ0nEv4cSiBEcLMV5pt03vt95wNmfMB/l/IqY3DrIU/ftsHHgqMvxCfM6LXRCblXMkt+wbtWjYX5OSSiB5NUg==","signatures":[{"sig":"MEUCIQDyt5lKxWneK+aNCqKDwOtmDSTbGGAR51m8SSeuti9MmQIgYO0PrjGjmQ16CmOciuL+6Jam09HvefFdwvj/2lAcCdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19706},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f104301e4b9303d1421bfd62420e6fb758539d1a","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.6.2","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"25.2.1","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"^1.0.1","@bernierllc/crypto-utils":"^1.0.2","@bernierllc/contentful-types":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.2_1764699356767_0.27573176104130703","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/contentful-auth","version":"1.0.3","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"126c0747b6caf9c87f09223aed04e1f2a2ea4aa0","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.3.tgz","fileCount":9,"integrity":"sha512-Zm2vHD7NaaugRuWuZb1bUuYIihfnO7xDbBkjwk2Mppo2TTv1w/SYTF2EUuY6StC32Ak80Igi2GXgg9pjcIAgPw==","signatures":[{"sig":"MEYCIQDLSFdLNU6JJS3jNz2ewxBgmndvJTsnu4s9DfteMxqpAQIhAMVSxm0Y+2itssVSh7vK9KbNaNCe360GcnUzZ22yFnIP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19744},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/949b7c4fd2b7db5b170d739db7b3a43b/bernierllc-contentful-auth-1.0.3.tgz","_integrity":"sha512-Zm2vHD7NaaugRuWuZb1bUuYIihfnO7xDbBkjwk2Mppo2TTv1w/SYTF2EUuY6StC32Ak80Igi2GXgg9pjcIAgPw==","_npmVersion":"11.7.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.0.3","@bernierllc/crypto-utils":"1.0.3","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.3_1766276703594_0.12855390921842358","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/contentful-auth","version":"1.0.4","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ff3a01e7f1f14806e994825abb8eb144f4b06cbd","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.4.tgz","fileCount":9,"integrity":"sha512-aSTGFrXP8fHtI8dTBb7Mpk3lYWKhxNSSr699YcVvb38FrZWr04FKbihW3vSRA0qE1PyfnJTeKvviVQra6I4HgQ==","signatures":[{"sig":"MEYCIQD4am+Cl3jTrOgcXhUiGdSV04T3Olgy3DVJphqUcI3tlgIhAOIYgBFvb/OfLajOeZApdp+nE+4Tmcv2VikDarHrO3Xw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19744},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/5c7049f3af1e827b2e719709bb3956bf/bernierllc-contentful-auth-1.0.4.tgz","_integrity":"sha512-aSTGFrXP8fHtI8dTBb7Mpk3lYWKhxNSSr699YcVvb38FrZWr04FKbihW3vSRA0qE1PyfnJTeKvviVQra6I4HgQ==","_npmVersion":"11.7.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.0.3","@bernierllc/crypto-utils":"1.0.4","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.4_1766283485198_0.8182428327276539","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/contentful-auth","version":"1.0.5","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"b64975e41c523cc5fac5b4d5ccae372ee2c61c3e","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.5.tgz","fileCount":9,"integrity":"sha512-Ktlj+UaIu+QisUPbab1WQmmSLMHdEkbipwAELU3tTQAs+tBhodIYCPQ33ZgJO/H14rq+wjUtwj2V90A+cgyPQQ==","signatures":[{"sig":"MEUCIQDTomJpAcHN+K7C+emIoGPfmFAgHnWVgPsUGQAr8tWFFQIgJToMb0tREbXgWfVES33+iEwnlH7n4xrrYMHl+kIyY08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19744},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/tmp/ef6feb6065537a719968304159608646/bernierllc-contentful-auth-1.0.5.tgz","_integrity":"sha512-Ktlj+UaIu+QisUPbab1WQmmSLMHdEkbipwAELU3tTQAs+tBhodIYCPQ33ZgJO/H14rq+wjUtwj2V90A+cgyPQQ==","_npmVersion":"11.7.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.0.4","@bernierllc/crypto-utils":"1.0.4","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.5_1766437732274_0.30547002483358643","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/contentful-auth","version":"1.0.6","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e6fbbd043b7ea2b2ad4cc0758d865b32ee1ba77d","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.6.tgz","fileCount":9,"integrity":"sha512-kC2vO4XBBgG7bT0FiErpTwAEbQlOkvj3LKQ5Q1ch+NkjI7mTg6Vqfsq4wT2OiEB9rU3ros3/6yVbTukw6yhgbw==","signatures":[{"sig":"MEQCIFxbZkYr4LLhrFmrk1SoHF3n5Y8769R25sRsV8FODyqXAiBfLQSxWUPg3JGde7q1iAKD51Dq15D+OjIQp3+gpDL5dA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19744},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.6.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/tmp/70c5fc4faa62aac7ec4b7f323919a8c6/bernierllc-contentful-auth-1.0.6.tgz","_integrity":"sha512-kC2vO4XBBgG7bT0FiErpTwAEbQlOkvj3LKQ5Q1ch+NkjI7mTg6Vqfsq4wT2OiEB9rU3ros3/6yVbTukw6yhgbw==","_npmVersion":"11.7.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.1.0","@bernierllc/crypto-utils":"1.0.4","@bernierllc/contentful-types":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.6_1766454385452_0.6256494523052023","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@bernierllc/contentful-auth","version":"1.0.8","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.8","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"210f1b33f855080155ca6dff930cd5d7ee8e8a1e","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.8.tgz","fileCount":9,"integrity":"sha512-t80zLp5c/4c6GCLzjf9Wc8NeWa25bNgg8qDXOYFCh+T+R1j7tzCFDTxr+i3N4/TLop5fN/HrdH0Ihc5go1Siqg==","signatures":[{"sig":"MEQCID8DHENzbnFEn2HHcFPMT3wmp5SobsXgVITUYGROS9lsAiA6jkRubGss2Fk8LcrZ40tVKBAoJDhixjHb+25CyZDHaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19802},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.19.6","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.0","@bernierllc/crypto-utils":"1.0.6","@bernierllc/contentful-types":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.8_1767642432525_0.08792803149384998","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bernierllc/contentful-auth","version":"1.0.9","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.9","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"dd727bd0dbebe896bebbdfbb951f6dfb99a5171b","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.9.tgz","fileCount":9,"integrity":"sha512-SASPRtI7zTIko0vKOoG69UCjwWcEU8BDrTyXZdOkruUPXaOSw/1qO4k6eqNDi8yz8elvcuX1Ad4L40SrB+rMbA==","signatures":[{"sig":"MEYCIQCDtVTl1oamUF9HLu5icGDR7J1Drd4mvQiqasojFmk/9wIhAOu/OUYqGzXekwduW1ndiJVlwWiELSGwM6dnst8U+aK+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19744},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.9.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/tmp/0b7fd05f92f2179a7eb5f58bf4fe9a5d/bernierllc-contentful-auth-1.0.9.tgz","_integrity":"sha512-SASPRtI7zTIko0vKOoG69UCjwWcEU8BDrTyXZdOkruUPXaOSw/1qO4k6eqNDi8yz8elvcuX1Ad4L40SrB+rMbA==","_npmVersion":"11.11.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.1","@bernierllc/crypto-utils":"1.0.7","@bernierllc/contentful-types":"1.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.9_1773078385825_0.29992083640627754","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bernierllc/contentful-auth","version":"1.0.10","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.10","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"4571121e6c28b828baab6d1fb396cdbb616b1aab","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.10.tgz","fileCount":9,"integrity":"sha512-nnYrcfVxG9sFnOkh1816yDlssnfmAW+Pye0ht+x140SGBUYzxRxA6FAbU0DU1fg8HYeRcvjqkOkdZO6SmrMbQQ==","signatures":[{"sig":"MEUCIQC+ZyyjzD03lJsUqvBomFFB6IK5OceBq0cMNar7MgbgvAIgDhDqqN0/5P6xDc7N/0KX/dBENjxpWO4k0EMrOfkMtq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19745},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.10.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.0.10.tgz","_integrity":"sha512-nnYrcfVxG9sFnOkh1816yDlssnfmAW+Pye0ht+x140SGBUYzxRxA6FAbU0DU1fg8HYeRcvjqkOkdZO6SmrMbQQ==","_npmVersion":"11.11.0","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.3.2","@bernierllc/crypto-utils":"1.0.8","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.10_1773163100261_0.03384288001107749","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bernierllc/contentful-auth","version":"1.0.11","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.11","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"8c63fc9475e56f7adb961911fb687bd866600a4f","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.11.tgz","fileCount":9,"integrity":"sha512-LTMh0qVgZh8c8zu25Dqcdqlx3oNtT2ShLkaO8vgOwvdl3hQMoScRLSyPayC4fEuDzWNM7KQ3RFF58cQq3Is7pA==","signatures":[{"sig":"MEYCIQDpYktBNhBD7gOp34IAGJiFYNjfP7t1X6y6k0jd6Ewa6wIhAMe9NHPrnp9/W1KgqFSV9zkQVfgiYWXaxre5Xirc5TSC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19745},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.11.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.0.11.tgz","_integrity":"sha512-LTMh0qVgZh8c8zu25Dqcdqlx3oNtT2ShLkaO8vgOwvdl3hQMoScRLSyPayC4fEuDzWNM7KQ3RFF58cQq3Is7pA==","_npmVersion":"11.14.1","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.0","@bernierllc/crypto-utils":"1.0.8","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.11_1779133388160_0.586061768885874","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@bernierllc/contentful-auth","version":"1.0.12","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.12","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"55c2e93144a441c0c0bf36a1730edff0853c32de","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.12.tgz","fileCount":9,"integrity":"sha512-iAYIgSZcwhup+YD5ZKkE6wmb77mjOwhEv5BPOkM5gFhRn/rkxSVIhaf80Tb1GdSDzusL1hv9Act1BkXK5Y51lw==","signatures":[{"sig":"MEYCIQC3/8WNy7cAqH5mtkf/lQl7LZMCC/s0sy+LPRzHYRlU/AIhAKNExDtK+uHA0Aep1wG7yDVhg0jZCsryAoBLv4Tl58M8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19745},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.12.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.0.12.tgz","_integrity":"sha512-iAYIgSZcwhup+YD5ZKkE6wmb77mjOwhEv5BPOkM5gFhRn/rkxSVIhaf80Tb1GdSDzusL1hv9Act1BkXK5Y51lw==","_npmVersion":"11.14.1","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.2","@bernierllc/crypto-utils":"1.0.8","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.12_1779157142394_0.2986600520217235","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@bernierllc/contentful-auth","version":"1.0.13","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.0.13","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"2d26d8c388b95ced7d60a4de272f30dc011bd913","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.0.13.tgz","fileCount":9,"integrity":"sha512-ln4yG1+L9yRIgGmGe8KVW9HS1yk2pphTDOUpk7D3NwEAd0KQWasn42vqTxDHDk41/Pr9TUbP3hhoX5iD3ROuQA==","signatures":[{"sig":"MEQCICDTpv/hJViqPUn91EGBUgbGFDmEHJS5JM/hWyQqM2JiAiBSvCGHbC7iLbYiwk4PlqBB0GwKe3bXYggTdB4XvYsseQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19745},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.0.13.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.0.13.tgz","_integrity":"sha512-ln4yG1+L9yRIgGmGe8KVW9HS1yk2pphTDOUpk7D3NwEAd0KQWasn42vqTxDHDk41/Pr9TUbP3hhoX5iD3ROuQA==","_npmVersion":"11.14.1","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.4.3","@bernierllc/crypto-utils":"1.2.0","@bernierllc/contentful-types":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.0.13_1779221243148_0.5987936808941587","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/contentful-auth","version":"1.2.0","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"6433064b6ef00a3d376e6bed3f2a0169c5161f5e","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.2.0.tgz","fileCount":11,"integrity":"sha512-VGrlEuLTouO1yghmuEm2UxmjHltNclIUipiKN1jOj0KOGJcidbPnZcXr1bAszmGOjzTUTyoJcAiZe5PKUc7//w==","signatures":[{"sig":"MEUCIEVDb+s8W3WBz200XS/GdoQGXelBRn3HWBfTd1riDDS7AiEAlwsBwl3AGYFWk7Ev97JaRSynxO0JWf+fk9kLfiw45bw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21517},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.2.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.2.0.tgz","_integrity":"sha512-VGrlEuLTouO1yghmuEm2UxmjHltNclIUipiKN1jOj0KOGJcidbPnZcXr1bAszmGOjzTUTyoJcAiZe5PKUc7//w==","_npmVersion":"11.14.1","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.6.0","@bernierllc/crypto-utils":"1.3.0","@bernierllc/contentful-types":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.2.0_1779241035207_0.8000520747634385","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/contentful-auth","version":"1.3.0","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/contentful-auth@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e388646238b01ae053d53a1983976d8d2320f0f5","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.3.0.tgz","fileCount":11,"integrity":"sha512-wk3MoWjQhPEvrVmFKUReAiVvPzE5244IFRvFP8pd+Htv78mo0wh2rhXM3nWhh4bosFXK5c+XZsM7Jvffnw05NA==","signatures":[{"sig":"MEUCIHByV7CDLgpmauNJCvv5w7OM98ZI6R+6/R7zDi6VeQx0AiEAlMhdcC+Bem0E5MGOVUj8ZhIfOorKRYBLbOQWcPb+46k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21517},"main":"dist/index.js","_from":"file:bernierllc-contentful-auth-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0","test":"jest --runInBand","build":"tsc","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.3.0.tgz","_integrity":"sha512-wk3MoWjQhPEvrVmFKUReAiVvPzE5244IFRvFP8pd+Htv78mo0wh2rhXM3nWhh4bosFXK5c+XZsM7Jvffnw05NA==","_npmVersion":"11.14.1","description":"OAuth 2.0 authentication and token management for Contentful","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.6.0","@bernierllc/logger":"1.7.0","@bernierllc/crypto-utils":"1.4.0","@bernierllc/contentful-types":"1.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.9.0","@typescript-eslint/eslint-plugin":"^7.9.0"},"_npmOperationalInternal":{"tmp":"tmp/contentful-auth_1.3.0_1779249775038_0.1266569088724503","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@bernierllc/contentful-auth","version":"1.3.1","description":"OAuth 2.0 authentication and token management for Contentful","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"axios":"^1.6.0","@bernierllc/crypto-utils":"1.4.0","@bernierllc/logger":"1.7.1","@bernierllc/contentful-types":"1.5.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.12.12","@typescript-eslint/eslint-plugin":"^7.9.0","@typescript-eslint/parser":"^7.9.0","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","jest":"^29.7.0","prettier":"^3.2.5","ts-jest":"^29.1.2","typescript":"^5.4.5"},"scripts":{"build":"tsc","test":"jest --runInBand","test:run":"jest --runInBand --collectCoverage","test:coverage":"jest --runInBand --collectCoverage","lint":"eslint \"src/**/*.ts\" \"__tests__/**/*.ts\" --max-warnings 0"},"_id":"@bernierllc/contentful-auth@1.3.1","_integrity":"sha512-YuTC4NpK6TF0KxAlgx0ZrvC2dJFUKHH871D7bmIn8PCqiLL5GU5Tmzy8x3iHFJRBCB4wKoi5IN36Ken9vcXFPg==","_resolved":"/home/runner/work/tools/tools/packages/core/contentful-auth/bernierllc-contentful-auth-1.3.1.tgz","_from":"file:bernierllc-contentful-auth-1.3.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-YuTC4NpK6TF0KxAlgx0ZrvC2dJFUKHH871D7bmIn8PCqiLL5GU5Tmzy8x3iHFJRBCB4wKoi5IN36Ken9vcXFPg==","shasum":"40082d03046ebdb7546585dc7ffc5eff62bbfba5","tarball":"https://registry.npmjs.org/@bernierllc/contentful-auth/-/contentful-auth-1.3.1.tgz","fileCount":11,"unpackedSize":21517,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDrBnZJn3BNJ6b/n9GoPPOSzvR9cxKB4pp4/lQamW1+AAiEA8BhIG8+GFcjtA4YxiWwd7jwEL3isBBn+fUYS6Manu0g="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:607a72dc-5824-453a-8fc1-b7386a5988ce"}},"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-auth_1.3.1_1784015542494_0.8017668351929508"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T18:15:56.634Z","modified":"2026-07-14T07:52:22.782Z","1.0.2":"2025-12-02T18:15:56.950Z","1.0.3":"2025-12-21T00:25:03.740Z","1.0.4":"2025-12-21T02:18:05.342Z","1.0.5":"2025-12-22T21:08:52.427Z","1.0.6":"2025-12-23T01:46:25.585Z","1.0.8":"2026-01-05T19:47:12.674Z","1.0.9":"2026-03-09T17:46:25.983Z","1.0.10":"2026-03-10T17:18:20.415Z","1.0.11":"2026-05-18T19:43:08.332Z","1.0.12":"2026-05-19T02:19:02.543Z","1.0.13":"2026-05-19T20:07:23.282Z","1.2.0":"2026-05-20T01:37:15.343Z","1.3.0":"2026-05-20T04:02:55.209Z","1.3.1":"2026-07-14T07:52:22.645Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","description":"OAuth 2.0 authentication and token management for Contentful","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/contentful-auth\n\nOAuth 2.0 authentication and token management for Contentful.\n\n## Features\n\n- OAuth 2.0 authorization URL generation\n- Authorization code exchange for access tokens\n- Automatic token refresh with refresh tokens\n- Token validation and expiration checking\n- Secure credential storage interfaces\n- Multi-organization and space-level token management\n\n## Installation\n\n```bash\nnpm install @bernierllc/contentful-auth\n```\n\n## Usage\n\n### Basic Authentication Flow\n\n```typescript\nimport { ContentfulAuth, TokenStorage } from '@bernierllc/contentful-auth';\n\n// Create auth instance\nconst auth = new ContentfulAuth({\n  clientId: 'your-client-id',\n  clientSecret: 'your-client-secret',\n  redirectUri: 'https://your-app.com/callback'\n});\n\n// Step 1: Generate authorization URL\nconst authUrl = auth.getAuthorizationUrl('state-value', 'content_management_manage');\n// Redirect user to authUrl\n\n// Step 2: Exchange authorization code for tokens\nconst tokens = await auth.exchangeCodeForTokens(code);\nconsole.log('Access token:', tokens.access_token);\nconsole.log('Refresh token:', tokens.refresh_token);\n```\n\n### Token Refresh\n\n```typescript\n// Manually refresh token\nconst newTokens = await auth.refreshAccessToken(refreshToken);\n\n// Or use automatic refresh with storage\nconst storage: TokenStorage = {\n  async store(key, tokens) {\n    // Store tokens in your database\n    await db.saveTokens(key, tokens);\n  },\n  async retrieve(key) {\n    // Retrieve tokens from your database\n    return await db.getTokens(key);\n  },\n  async delete(key) {\n    // Delete tokens from your database\n    await db.deleteTokens(key);\n  }\n};\n\nconst authWithStorage = new ContentfulAuth(config, storage);\n\n// Automatically refreshes if token is expired\nconst validToken = await authWithStorage.getValidToken('org-123');\n```\n\n### Token Validation\n\n```typescript\nconst isValid = await auth.validateToken(accessToken);\nif (!isValid) {\n  console.log('Token is invalid or expired');\n}\n```\n\n## API\n\n### `ContentfulAuth`\n\n#### Constructor\n\n```typescript\nconstructor(config: ContentfulAuthConfig, storage?: TokenStorage)\n```\n\n- `config.clientId` - OAuth client ID\n- `config.clientSecret` - OAuth client secret\n- `config.redirectUri` - OAuth redirect URI\n- `config.tokenUrl` - (Optional) Custom token URL\n- `config.authorizationUrl` - (Optional) Custom authorization URL\n- `config.logger` - (Optional) Custom logger instance\n- `storage` - (Optional) Token storage implementation\n\n#### Methods\n\n##### `getAuthorizationUrl(state?: string, scope?: string): string`\n\nGenerate OAuth authorization URL.\n\n##### `exchangeCodeForTokens(code: string): Promise<ContentfulOAuthTokens>`\n\nExchange authorization code for access and refresh tokens.\n\n##### `refreshAccessToken(refreshToken: string): Promise<ContentfulOAuthTokens>`\n\nRefresh access token using refresh token.\n\n##### `validateToken(accessToken: string): Promise<boolean>`\n\nValidate access token against Contentful API.\n\n##### `getValidToken(storageKey: string): Promise<string>`\n\nGet a valid access token, automatically refreshing if expired (requires storage).\n\n##### `storeTokens(key: string, tokens: ContentfulOAuthTokens): Promise<void>`\n\nStore tokens (requires storage).\n\n##### `revokeTokens(storageKey: string): Promise<void>`\n\nRevoke and delete tokens (requires storage).\n\n### `TokenStorage` Interface\n\n```typescript\ninterface TokenStorage {\n  store(key: string, tokens: ContentfulOAuthTokens): Promise<void>;\n  retrieve(key: string): Promise<ContentfulOAuthTokens | null>;\n  delete(key: string): Promise<void>;\n}\n```\n\nImplement this interface to provide persistent token storage.\n\n## Token Expiration\n\nTokens are automatically refreshed when:\n- Less than 5 minutes remaining before expiration\n- `getValidToken()` is called with valid refresh token\n\n## Error Handling\n\n```typescript\ntry {\n  const tokens = await auth.exchangeCodeForTokens(code);\n} catch (error) {\n  console.error('OAuth failed:', error.message);\n}\n```\n\nAll methods throw descriptive errors on failure.\n\n## Integration\n\n### Logger Integration\n\nThis package uses `@bernierllc/logger` for structured logging. The logger is optional and will use a no-op logger if not provided. To enable logging:\n\n```typescript\nimport { ContentfulAuth } from '@bernierllc/contentful-auth';\nimport { Logger } from '@bernierllc/logger';\n\nconst logger = new Logger({ level: 'info' });\nconst auth = new ContentfulAuth({\n  clientId: 'your-client-id',\n  clientSecret: 'your-client-secret',\n  redirectUri: 'https://your-app.com/callback',\n  logger\n});\n```\n\n### NeverHub Integration\n\nThis package supports optional NeverHub integration for event tracking and monitoring. NeverHub integration is detected automatically and provides graceful degradation if NeverHub is not available.\n\nWhen NeverHub is available, authentication events (token exchanges, refreshes, validation) are automatically tracked:\n\n```typescript\nimport { ContentfulAuth } from '@bernierllc/contentful-auth';\nimport { NeverHubAdapter } from '@bernierllc/neverhub-adapter';\n\n// NeverHub will be auto-detected if available\nconst auth = new ContentfulAuth(config);\n\n// Authentication events are automatically logged to NeverHub\nawait auth.exchangeCodeForTokens(code); // Event tracked in NeverHub\n```\n\nIf NeverHub is not available, the package operates normally without event tracking. This ensures the package works in all environments with graceful degradation.\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See LICENSE file for details.\n","readmeFilename":"README.md"}