{"_id":"dynamodb-refresh-token-provider","_rev":"30-78dd54593f5cab59467c867b595d0f9d","name":"dynamodb-refresh-token-provider","dist-tags":{"latest":"0.5.5"},"versions":{"0.1.2":{"name":"dynamodb-refresh-token-provider","version":"0.1.2","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.1.2","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"fa6d0c9075fa1d95f3e23a08db784d616175f86d","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.1.2.tgz","fileCount":15,"integrity":"sha512-aEc5ILdh1C4KtxCnCA0pwmyhYYVftGvlQFLtrJeRD1uloFQk9Y1ryPd5vw6M+0lHZzNblM0EKI3Bc39Vv9hxog==","signatures":[{"sig":"MEUCIEsnq37fCNERm+EU6XxNZLj4Ie3L2vb8iAnzr784LSv+AiEA3LBdcSSB4RSDge53P6yruBk5G6DOMjozci5HLuTjH/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74935},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.1.2.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"npx projen bump","test":"npx projen test","build":"npx projen build","eject":"npx projen eject","watch":"npx projen watch","eslint":"npx projen eslint","projen":"npx projen","unbump":"npx projen unbump","clobber":"npx projen clobber","compile":"npx projen compile","default":"npx projen default","package":"npx projen package","release":"npx projen release","upgrade":"npx projen upgrade","test:watch":"npx projen test:watch","pre-compile":"npx projen pre-compile","post-compile":"npx projen post-compile","post-upgrade":"npx projen post-upgrade"},"_npmUser":{"name":"yicr","email":"yuichiro.higa@gmail.com"},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.1.2.tgz","_integrity":"sha512-aEc5ILdh1C4KtxCnCA0pwmyhYYVftGvlQFLtrJeRD1uloFQk9Y1ryPd5vw6M+0lHZzNblM0EKI3Bc39Vv9hxog==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.36","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.1.2_1775566959389_0.9974172698709591","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"dynamodb-refresh-token-provider","version":"0.1.3","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.1.3","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"617033f4f2305565e2ce40180795a109f728a844","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.1.3.tgz","fileCount":15,"integrity":"sha512-4LtstlnH+OXmedCzwpM9G3ReGdrPI6rpibYJIQjIlLCDudyyMK/xhv9M5tgxqBBfIKRgiRJwDsNWQ3QLsSocuQ==","signatures":[{"sig":"MEUCIQDNsRwXYo21X5+eX1XBLaWPR+XZgjAvNaB91O2JiOAF0AIgIsQRhwl1XPwBFuYJAuHArnurG9Q6F8DBpedGT3lCREk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74935},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.1.3.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"npx projen bump","test":"npx projen test","build":"npx projen build","eject":"npx projen eject","watch":"npx projen watch","eslint":"npx projen eslint","projen":"npx projen","unbump":"npx projen unbump","clobber":"npx projen clobber","compile":"npx projen compile","default":"npx projen default","package":"npx projen package","release":"npx projen release","upgrade":"npx projen upgrade","test:watch":"npx projen test:watch","pre-compile":"npx projen pre-compile","post-compile":"npx projen post-compile","post-upgrade":"npx projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.1.3.tgz","_integrity":"sha512-4LtstlnH+OXmedCzwpM9G3ReGdrPI6rpibYJIQjIlLCDudyyMK/xhv9M5tgxqBBfIKRgiRJwDsNWQ3QLsSocuQ==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.36","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.1.3_1775567188270_0.3452644683588626","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"dynamodb-refresh-token-provider","version":"0.2.0","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.0","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"25ed693a20beadda7b7a1edfe0c3beed38a766d0","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.0.tgz","fileCount":15,"integrity":"sha512-wjAl42mnUDIdCWQB9My/PSQQdxz0542/rzUL35vq6ydwshiIPwq/4UnwHKzfTn0rXk54z32/ki7IVIRl21ts/w==","signatures":[{"sig":"MEUCIGkwoxcixcsJzd22V7oBiGsUWLdqr9cNmEt+fA+AYL1RAiEAp7q9aBS3nXXDB5Z/yP833plvS+mfWi3QXaMuGeLFCFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.0.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.0.tgz","_integrity":"sha512-wjAl42mnUDIdCWQB9My/PSQQdxz0542/rzUL35vq6ydwshiIPwq/4UnwHKzfTn0rXk54z32/ki7IVIRl21ts/w==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.42","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.0_1775707856769_0.6476895392494246","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"dynamodb-refresh-token-provider","version":"0.2.1","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.1","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"5e8901ae8507268e4fb5dbbf8484a5eb1967167d","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.1.tgz","fileCount":15,"integrity":"sha512-LWUb9tqXbKj3QYpn/yl6j99N4J4XPYhBwgkaXkHUnh22g2AmucaO39WjtnK9ZfJTfoWThd1n0uQa6znb2PlKNA==","signatures":[{"sig":"MEUCIQC4aHolWeJncuB3VQzAO5PjmOGcjKl75rds5a1Zg2sHyQIgcn7yQZo/LyOmWT+H95UuuIRtVRKwOr9RaRS6yf0j+0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.1.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.1.tgz","_integrity":"sha512-LWUb9tqXbKj3QYpn/yl6j99N4J4XPYhBwgkaXkHUnh22g2AmucaO39WjtnK9ZfJTfoWThd1n0uQa6znb2PlKNA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.47","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.1_1776142886853_0.5160683141296247","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"dynamodb-refresh-token-provider","version":"0.2.2","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.2","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"61d8d01af5d5aa37d9212a6ff29a18224f28e38f","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.2.tgz","fileCount":15,"integrity":"sha512-940BNpyQwENPaZygnhu/2Hy1v/r6QDfFIHX1s/CBtEct9f6pOSe4SlrsQ922Pi7vc4nyJysay2BUt5o4wHzqEA==","signatures":[{"sig":"MEQCIE1iA0oVSOtxehiR/GJ57BpWXrFrJQZVW4JiTClD5/l3AiBKO1V49vwAiBZzKj5lA9WfOOr+QfCKJ1cDugm40xygwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.2.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.2.tgz","_integrity":"sha512-940BNpyQwENPaZygnhu/2Hy1v/r6QDfFIHX1s/CBtEct9f6pOSe4SlrsQ922Pi7vc4nyJysay2BUt5o4wHzqEA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.48","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.2_1776145134533_0.8781827944718483","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"dynamodb-refresh-token-provider","version":"0.2.3","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.3","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"6a2979d7c84e837608d9e527e6fcf937f1dcc7eb","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.3.tgz","fileCount":15,"integrity":"sha512-6DYQ8X7Y0unXvikouBHf7T2LTx35qcD+1CjHh2SgQHK882kLip57JloTntq5//TRlUYC09tsX1mE4NQlk8XMAA==","signatures":[{"sig":"MEUCIQCOZjLV3HeG32n9HuerJVDJUmrmiLpN2gMT8KsGrOmOnwIgLenIS7pW9NI1wu+KySVjZBdT3MX80c+TTdVmEn/RnjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.3.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.3.tgz","_integrity":"sha512-6DYQ8X7Y0unXvikouBHf7T2LTx35qcD+1CjHh2SgQHK882kLip57JloTntq5//TRlUYC09tsX1mE4NQlk8XMAA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.3.0","eslint":"^9","projen":"^0.99.52","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^16","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.3_1778307078507_0.5300418334766441","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"dynamodb-refresh-token-provider","version":"0.2.4","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.4","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"ab73cddad70429c7f5403dcd9597e021a7992ef5","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.4.tgz","fileCount":15,"integrity":"sha512-qYvB1TzZzCsanogE2Ct20E9w3rr221eVGA3LEE7vCmPhPYu0D4OlZz5g6CDz6wa/k42IY9/L7e8Z58qq2i45HA==","signatures":[{"sig":"MEYCIQCloq8lzaafIYfjDBr3snvcwIRZH/4vEi49DmiD1zymfwIhAIFckTeNkcx7/c9Sy6yxeQnNix8VTQb3QRwX52U4RE/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.4.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.4.tgz","_integrity":"sha512-qYvB1TzZzCsanogE2Ct20E9w3rr221eVGA3LEE7vCmPhPYu0D4OlZz5g6CDz6wa/k42IY9/L7e8Z58qq2i45HA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.11.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.58","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.4_1778472465179_0.9760389014397199","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"dynamodb-refresh-token-provider","version":"0.2.5","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.5","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"a9084f8af29867f41e2315a54e6eeb0d5b77c2ec","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.5.tgz","fileCount":15,"integrity":"sha512-Cej0hpKqIyqzgdO1gBOHncainygx5+HhOQrCIhccNZ1+uqQUb2gg8aF2RXBwTzW6MbVhaLEXeHdHc6zadSJp4Q==","signatures":[{"sig":"MEUCIAJwKoF0cy37HA0LdNQwjUTf9fMj1zplCDHar24yxDsUAiEA/bPmpKrsjKRBvkM6okdCFUwTlrBvTbgio0tpmtphH/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.5.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.5.tgz","_integrity":"sha512-Cej0hpKqIyqzgdO1gBOHncainygx5+HhOQrCIhccNZ1+uqQUb2gg8aF2RXBwTzW6MbVhaLEXeHdHc6zadSJp4Q==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.12.1","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.61","ts-jest":"^29.4.9","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.5_1779077776691_0.6535298350618308","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"dynamodb-refresh-token-provider","version":"0.2.6","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.6","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"1c90707eab1bad9e22aa512dc94566e5ef896c1b","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.6.tgz","fileCount":15,"integrity":"sha512-tmGtdZQEW7E51mcELaW7BKD/8qX7RK/wja6d0SImYccXS4+IzGZA7wM+bltv5Z16rnsBSeGlrapnnPDmdlcNMA==","signatures":[{"sig":"MEUCIQDk8uPQVp/FvkBlmzEYhn/094TcQN9+K4BtPo7IZea6HAIge1GTX4ZtEh1nug9VjHcpgJ3IwEwsgj7U9nTi3I6PaL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74937},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.6.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.6.tgz","_integrity":"sha512-tmGtdZQEW7E51mcELaW7BKD/8qX7RK/wja6d0SImYccXS4+IzGZA7wM+bltv5Z16rnsBSeGlrapnnPDmdlcNMA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.12.1","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.65","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.6_1779683116329_0.5132684913427985","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"dynamodb-refresh-token-provider","version":"0.2.7","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.2.7","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"647cd2814152482bca8256fd6a3446e9d6860f62","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.2.7.tgz","fileCount":15,"integrity":"sha512-gzCy1gmRx/sPiGrkjqO449+9L6rBq9Wr1YKOSdFsU8IiguhGGKpIRD9NYruzLbpZqfb1T6LL1D6k383etzsmtg==","signatures":[{"sig":"MEUCIAwBzt0vDiyf0frSl4gDuu+JXcgVsGasSn6HJYoV0XdJAiEAvNHM7htI2qP0FWSmW0Wbsv3RF/qXXzp2Urk+yH21oK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74937},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.2.7.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.2.7.tgz","_integrity":"sha512-gzCy1gmRx/sPiGrkjqO449+9L6rBq9Wr1YKOSdFsU8IiguhGGKpIRD9NYruzLbpZqfb1T6LL1D6k383etzsmtg==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/util-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.70","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.2.7_1780289804179_0.11103025870368666","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"dynamodb-refresh-token-provider","version":"0.3.0","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.0","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"78cb995394b4d52b009621018d97967a5a5890d7","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.0.tgz","fileCount":15,"integrity":"sha512-P/wQMpY75dq0uT/Njp5x9qkaqML7XOWEbph907hp4jI4RxdQ8jIWNT5RnivshIxOFmNfPeNEidEw8X82uYjCCQ==","signatures":[{"sig":"MEQCIAg305jDr49JVJwigl8ND2v5WwnO4iW1JXK5zOsK5ahmAiBcIH0Ky3QRCJVHIkMFhf/Nxxn+4BYCHlDLstbc85xb+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89151},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.0.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.0.tgz","_integrity":"sha512-P/wQMpY75dq0uT/Njp5x9qkaqML7XOWEbph907hp4jI4RxdQ8jIWNT5RnivshIxOFmNfPeNEidEw8X82uYjCCQ==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.70","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.0_1780459550321_0.7719187912825276","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"dynamodb-refresh-token-provider","version":"0.3.1","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.1","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"76cb3a9ba61faa207dc901528ff877bf2f1f9e67","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.1.tgz","fileCount":15,"integrity":"sha512-nuWtSp8SitboX47i5kF5FLy1suqEIcq9R1BCuBSn0oAinr4xUvFwhkQtjRFbCuCinGtsTxxhFjXw4bash1ZZIA==","signatures":[{"sig":"MEQCIAS9WCyrbvBty9T7aTmm50TS7V/Qar7KAmBrPxmKPQK+AiBzjsEOEua25b6GdssZmUEWZ3Zkaea67Fs7z07lnu2+1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89151},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.1.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.1.tgz","_integrity":"sha512-nuWtSp8SitboX47i5kF5FLy1suqEIcq9R1BCuBSn0oAinr4xUvFwhkQtjRFbCuCinGtsTxxhFjXw4bash1ZZIA==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.71","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.1_1780894023037_0.3958768832694963","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"dynamodb-refresh-token-provider","version":"0.3.2","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.2","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"7e0d0ffaf6301a96f4fab2e2fa78dac7a2dad071","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.2.tgz","fileCount":15,"integrity":"sha512-/GebUxUU4xugcpIPabZIZpx26SWI/FO5RkpFS+dnKMx5z8uWYDganAmM4nNQWnKYY/QiWhjhq2cTvsy/Qtpq0g==","signatures":[{"sig":"MEUCIAVeW1a1bvD5WMNHOnh5JfEqaSZTwg7RmmuPy877QWcwAiEAtzZKHI3OMZmgSit0ZHH0KDf90cvypOgUijIUAJfuX7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89151},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.2.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.2.tgz","_integrity":"sha512-/GebUxUU4xugcpIPabZIZpx26SWI/FO5RkpFS+dnKMx5z8uWYDganAmM4nNQWnKYY/QiWhjhq2cTvsy/Qtpq0g==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.99.74","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.2_1781499993601_0.8724643927808073","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"dynamodb-refresh-token-provider","version":"0.3.3","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.3","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"0c6ae7ea4e983ae75153aebeaa9d2ec4923faec7","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.3.tgz","fileCount":15,"integrity":"sha512-r/hnQy8KAR4na2Y3XTaspniOZY0QAPw0cfXWlgoUmhWHXQGGwX7KFF0z5mej6RztuK9gfodpS4fWShYu5tsMNw==","signatures":[{"sig":"MEQCIDWEbepl2PzJSu8rXUiaiaPHs2Vm4S4YIOFxgsWTibs5AiBnjvKngKC5JEWehYd2z3OHkL6FN7sP7A5d6TfxBDt1GQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89151},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"tsconfig.dev.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.3.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.3.tgz","_integrity":"sha512-r/hnQy8KAR4na2Y3XTaspniOZY0QAPw0cfXWlgoUmhWHXQGGwX7KFF0z5mej6RztuK9gfodpS4fWShYu5tsMNw==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.100.2","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.3_1782104817815_0.18806163404153975","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"dynamodb-refresh-token-provider","version":"0.3.4","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.4","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"bec73465e4b9a7762b0f909dc16cb53d4e2577a9","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.4.tgz","fileCount":15,"integrity":"sha512-/wLY6MUxKh7qbewW+Q5gHz7ld+3vwFPHmWN5wSrlQlvnxy1lmiNm7PHYJxiFmt1s6sDkTolY1N5gMThhTLWNmg==","signatures":[{"sig":"MEUCIQCshIoBmMSelqUrjtuYLhNHE/cfTEA0TTb7Ha1CKHHD0AIgLrhO1Mt3qMpQC1eWZCrtEtlUCYueaUXGzfK5D8+6IhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89152},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.4.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.4.tgz","_integrity":"sha512-/wLY6MUxKh7qbewW+Q5gHz7ld+3vwFPHmWN5wSrlQlvnxy1lmiNm7PHYJxiFmt1s6sDkTolY1N5gMThhTLWNmg==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.17.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.100.7","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.4_1782708251702_0.694827313920283","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"dynamodb-refresh-token-provider","version":"0.3.5","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.5","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"132660660b4ba34ad030af4f0e38c7cb82e2e9bb","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.5.tgz","fileCount":15,"integrity":"sha512-fRT905Resfh1VpFUx1Sjhkc7O1OoZlYfzuYILrAlojKkkYTFvgi6SjcXt6tBwaEzce1O4tSO604K8kZhupbHtg==","signatures":[{"sig":"MEUCIQDZARBcGPA4l3jxDBVSqBXG4pNJpt7vhEpAw9Rebk869wIgchSP85fmcLr3e/Nj2fVCkcNCmYph7kUGm2upHCvxWow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89152},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.5.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.5.tgz","_integrity":"sha512-fRT905Resfh1VpFUx1Sjhkc7O1OoZlYfzuYILrAlojKkkYTFvgi6SjcXt6tBwaEzce1O4tSO604K8kZhupbHtg==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.4","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.5_1783310970473_0.12126447814681773","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"dynamodb-refresh-token-provider","version":"0.3.6","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.3.6","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"ab9ac932dd1b23aea84c299e7e93fe04809fa7d9","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.3.6.tgz","fileCount":15,"integrity":"sha512-xDRs9gbrlIWToKMN/LC0T0yPF3AhiTeYjvVFCbz3hYVQsek9/4diJ8qbaVudlCWGloMQ8qD9jWBt5wGrIZAD4w==","signatures":[{"sig":"MEUCIQCR9IDQ/MviP/kF4tnn85RbavO8kOoPgNDfnVs1kNm5PAIgXqycPpgOtoGlD/essxecRJ/ugoJk9HlRzWNFMEGLpQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89153},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.3.6.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.3.6.tgz","_integrity":"sha512-xDRs9gbrlIWToKMN/LC0T0yPF3AhiTeYjvVFCbz3hYVQsek9/4diJ8qbaVudlCWGloMQ8qD9jWBt5wGrIZAD4w==","devEngines":{"packageManager":{"name":"yarn","onFail":"ignore","version":"1.22.22"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), and **revoke","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.11","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"5.9.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.3.6_1783913788142_0.43141897397048434","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"dynamodb-refresh-token-provider","version":"0.4.0","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.0","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"945d0a80d32b6c5921fbd38bf82ec5127f2019c5","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.0.tgz","fileCount":15,"integrity":"sha512-1MCKNO8QtEt0v7StfuqTAoONNN4m+l0PZbe/8ueur2rK13P19NvIDS0PCJX2AYSWfkZVehiS295QRNWNNP619Q==","signatures":[{"sig":"MEUCIF/05xPrjeIM5djaXRbfpOjMchzP3jcfGSIpB+GGO7FDAiEAz+ZM2GgXBFIMtGcVqN/j+XdSlXQXbkIRcHaSXFV31MA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117422},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.0.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.0.tgz","_integrity":"sha512-1MCKNO8QtEt0v7StfuqTAoONNN4m+l0PZbe/8ueur2rK13P19NvIDS0PCJX2AYSWfkZVehiS295QRNWNNP619Q==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.11","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.0_1784002978699_0.23408869479609917","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"dynamodb-refresh-token-provider","version":"0.4.1","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.1","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"e12e5af182764b8a23a691d8e8ee6e68abd0b2e2","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.1.tgz","fileCount":15,"integrity":"sha512-VxCVVpXyB8PaUOu8h6Zm5LUWeW17DyM+UMl6zvcg41b+hq98Iaw+T17kCJrU3j09ZNxIGSvR8Vh7Aim141rLig==","signatures":[{"sig":"MEQCIECIzcbKnjUSWOngHgo852iUoEIsbJE4V3AJV/XadTNjAiBqU5+PZ5VyoE5QczRGZPkYlPCqp4CNFTj6W+4tntDwcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117487},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.1.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.1.tgz","_integrity":"sha512-VxCVVpXyB8PaUOu8h6Zm5LUWeW17DyM+UMl6zvcg41b+hq98Iaw+T17kCJrU3j09ZNxIGSvR8Vh7Aim141rLig==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.16","ts-jest":"^29.4.11","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.1_1784519505700_0.08222639431953715","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"dynamodb-refresh-token-provider","version":"0.4.2","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.2","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"afed905a0e72411ecd3adf4d84e442f2c76e3123","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.2.tgz","fileCount":15,"integrity":"sha512-5IDJSX44Hm3yENHlz5dtO9PUx9ZFKf/KsT5e9R9BcoiTWHX+ygVyxoj/2hOw0XF24XvKT8vHmioE6ErfS09tEA==","signatures":[{"sig":"MEYCIQD98c67EtPSg9J3rdnuMyJjbFISiz6Gp7hglE5sPeBnYwIhAO4hCkntsOrE6EWwSLr8iiKviLONrF7PesFXAVoH7US4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117487},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.2.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.2.tgz","_integrity":"sha512-5IDJSX44Hm3yENHlz5dtO9PUx9ZFKf/KsT5e9R9BcoiTWHX+ygVyxoj/2hOw0XF24XvKT8vHmioE6ErfS09tEA==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.20","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.2_1785123758708_0.8155868512225966","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"dynamodb-refresh-token-provider","version":"0.4.3","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.3","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"ef1c479947f822b5a0ddd33c15ea8df40578cb4f","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.3.tgz","fileCount":15,"integrity":"sha512-URcuQjB8Q4TuzNpNxiPMVGLTWgWMF2nSrrZBTQl5pewP5k0ob19+SbMc0lXYDemqEN5WdL9Y1XruJOVN+p7goA==","signatures":[{"sig":"MEUCIBDr3g9/A3sD/nwJXhNG0J8m1zlKgX3pz3HgK5t5/iJjAiEAgEKNFuyaoeBaWO+uNyJat1Qhb2Pc4FdcZ5nMFIYjoXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117487},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.3.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.3.tgz","_integrity":"sha512-URcuQjB8Q4TuzNpNxiPMVGLTWgWMF2nSrrZBTQl5pewP5k0ob19+SbMc0lXYDemqEN5WdL9Y1XruJOVN+p7goA==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.23","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.3_1785728091496_0.33682237348263877","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"dynamodb-refresh-token-provider","version":"0.4.4","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.4","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"242417fcf8c122d21f56191a045a1881c29fc5c9","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.4.tgz","fileCount":15,"integrity":"sha512-0Dk18je2+Y6DYh1uMdJe1f63ZnrR7UQvFIQBsnm9gBPsbDrt+lu5iRAq1eEJnEd8ZVA3IzPxfzG83W4sEWUBQw==","signatures":[{"sig":"MEUCIBLfwIoGq0XpUbDtHLDew1mz1NsUNIHriJuEO7+1qPRKAiEA8WfMcQBGGgi+GwUbGFPFSk8Rv2eXP25bF8GqbnEENaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117487},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.4.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.4.tgz","_integrity":"sha512-0Dk18je2+Y6DYh1uMdJe1f63ZnrR7UQvFIQBsnm9gBPsbDrt+lu5iRAq1eEJnEd8ZVA3IzPxfzG83W4sEWUBQw==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.31","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.4_1786328090347_0.8534212905520271","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"dynamodb-refresh-token-provider","version":"0.4.5","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.5","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"0652ec016dd601ed5bf54622d436bc7c8d335b89","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.5.tgz","fileCount":15,"integrity":"sha512-g1N8oJbxG2lX/LNmcmEiXLeSA3bh21doKv7vXhdbh9GGQGFZbb4AJKCdZXEqmXME/6YiPIKIpskCmtvMEtzbYA==","signatures":[{"sig":"MEYCIQDOnTpjyPG5ORgkh24a1WxqfPZux8UJLLDrGQj7KkPygQIhAOn3+AJTZYmE3NUME5tiQlc/eUo/FybRUNeQReEPLSTB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117487},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.5.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.5.tgz","_integrity":"sha512-g1N8oJbxG2lX/LNmcmEiXLeSA3bh21doKv7vXhdbh9GGQGFZbb4AJKCdZXEqmXME/6YiPIKIpskCmtvMEtzbYA==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.101.31","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.5_1786930980987_0.9787488224260286","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"dynamodb-refresh-token-provider","version":"0.4.6","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.4.6","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"1e36b9bf450b65e2b4042a354990094b9751bf53","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.4.6.tgz","fileCount":15,"integrity":"sha512-Y8wQYEgATNvjuQhgoD/6LhWhyYNRdwzWnZ2NkcgxWvNAFEzCiMdm8pcxxFmbaPtqQ8tnoUhtHPdMkySm7R/K0Q==","signatures":[{"sig":"MEYCIQDadvZur6xTOIaPnR2Vk6ZKM/KhucqMNyypcqjoKrSMRAIhAJXot2DKEKYC4pVMrG7wqxvlr9H80K/4Hqgkl9R1UoPo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117486},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.4.6.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.4.6.tgz","_integrity":"sha512-Y8wQYEgATNvjuQhgoD/6LhWhyYNRdwzWnZ2NkcgxWvNAFEzCiMdm8pcxxFmbaPtqQ8tnoUhtHPdMkySm7R/K0Q==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.103.1","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.4.6_1787535903829_0.8335874405758958","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"dynamodb-refresh-token-provider","version":"0.5.0","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.5.0","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"f46c1c692058f657ced7d63eeb9595f58ec95c57","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.0.tgz","fileCount":15,"integrity":"sha512-ReY6nfGsRki39AnXHyrpix4G5Lmd8fLwNeil5Z/oJhcMAidvEx3g3Y6RpfuNehsLBWB6O5EeYE5jgsHviSM3iw==","signatures":[{"sig":"MEUCIQD3qNp5FkdD/77+m+HE953VNN9hjIKU0m9NmwYggL/q+wIgabivWhClKuj+ardDq5x8doX5/qvusb3JDQYcnt7cE7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139146},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.0.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.0.tgz","_integrity":"sha512-ReY6nfGsRki39AnXHyrpix4G5Lmd8fLwNeil5Z/oJhcMAidvEx3g3Y6RpfuNehsLBWB6O5EeYE5jgsHviSM3iw==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","eslint":"^9","projen":"^0.103.1","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.5.0_1787905526867_0.2227353688769449","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"dynamodb-refresh-token-provider","version":"0.5.1","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.5.1","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"5d6f20505b29c52757af5ba2a6bcc1ba0dfd2168","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.1.tgz","fileCount":15,"integrity":"sha512-n0HVzcAvzHGr3It1IR9KkzwMy5RBdshGPb+dURm9lwTiSgcv+nJ4LhuCUcjh2Zrl6KGKDD4H07tbQQDtyt2dzw==","signatures":[{"sig":"MEYCIQCOKQN84M8oSLh5Kb9ZERWinuyIbsS4Tm4B8on3G4UYawIhAKrBpSgFH4NoO5yMsPf0H9ia0SfHbxoLSx5WFOwMfZ4m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139147},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.1.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.1.tgz","_integrity":"sha512-n0HVzcAvzHGr3It1IR9KkzwMy5RBdshGPb+dURm9lwTiSgcv+nJ4LhuCUcjh2Zrl6KGKDD4H07tbQQDtyt2dzw==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.0","eslint":"^9","projen":"^0.103.11","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.5.1_1788160253138_0.8056185438626065","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"dynamodb-refresh-token-provider","version":"0.5.2","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.5.2","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"f5185a7e334a8e6b4c187a81fbcd23809c8a43fe","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.2.tgz","fileCount":15,"integrity":"sha512-OozO4o+4iqhKwD/oVoCvx+3yhT7b/f74xsUBqqRN6Dn630VWrOXypUWoHL2C1NDwthJi8KdkBlhpdTQ5hdkz4Q==","signatures":[{"sig":"MEUCIHT8satzSJWqtvFLgIwEjPgW4R8/+jnCwTINimpoA3T+AiEA9a2J3Obf1g6JH6cYuOS7CQwKuMksgcPkgXuY2Da3N1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139147},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.2.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.2.tgz","_integrity":"sha512-OozO4o+4iqhKwD/oVoCvx+3yhT7b/f74xsUBqqRN6Dn630VWrOXypUWoHL2C1NDwthJi8KdkBlhpdTQ5hdkz4Q==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.19.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","eslint":"^9","projen":"^0.103.20","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.5.2_1788753747178_0.40041965750346864","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"dynamodb-refresh-token-provider","version":"0.5.3","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.5.3","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"33b12641c1c2d16a57096c56345daf0c601ca525","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.3.tgz","fileCount":15,"integrity":"sha512-TKJWkIEDiRjk3VKvUCDJUoJ1isVu4K3VSnOpobhnwy7XZdYvSlHMJvnZA/00bDD8v6BaJBRQsZM4ZDprGXcfAg==","signatures":[{"sig":"MEYCIQDvapdtNgFsuAoq2DBdoCDSe5zkWMNEO8lFO6rPCmvm3wIhAIlfWHk8nmSNc0O6ddLPYBgqoBMjhbgaW9DqwfCOAs/t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAVlGiUr2jfhUleROtbyrYj7Ctyquz+32Y67aIGGo1NeAiA0DAXWFzziIo7595jBhKEzZZRy5b3cuef97qfOghuK3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139147},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.3.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.3.tgz","_integrity":"sha512-TKJWkIEDiRjk3VKvUCDJUoJ1isVu4K3VSnOpobhnwy7XZdYvSlHMJvnZA/00bDD8v6BaJBRQsZM4ZDprGXcfAg==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.19.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","eslint":"^9","projen":"^0.103.23","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^12","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.5.3_1789360050538_0.031136124543299504","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"dynamodb-refresh-token-provider","version":"0.5.4","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","_id":"dynamodb-refresh-token-provider@0.5.4","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","dist":{"shasum":"6629bd19a773997ebacaaa20e948e623556c8790","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.4.tgz","fileCount":15,"integrity":"sha512-7eZSaIFaFwKy2P8G4Ka7eM99M+fKV1IRtYNknvtyFQN0Go4zvN1ij1elvpNoGAsn0J4RbXdsfuVjAL5psY966w==","signatures":[{"sig":"MEUCIGLskgog81SAhA6nvue0W9CKAh1+c+pyhUE9dMvwbY5TAiEA5CpDSCCtP9kqwiclmOP1Gtbsfz+chvIx2WKv2Dn1P+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHEBatzF+AWrkG3Mzp6YkijrWw1BmJXaBPMJms05gpOZAiEA9dFRKt2ubvPLzW5kJxu0ma50LnPMok3Zw1ilgY85jAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139147},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.4.tgz","types":"lib/index.d.ts","engines":{"node":">= 20.0.0"},"scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.4.tgz","_integrity":"sha512-7eZSaIFaFwKy2P8G4Ka7eM99M+fKV1IRtYNknvtyFQN0Go4zvN1ij1elvpNoGAsn0J4RbXdsfuVjAL5psY966w==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.19.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.2","eslint":"^9","projen":"^0.103.25","ts-jest":"^29.4.12","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^13","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"tmp":"tmp/dynamodb-refresh-token-provider_0.5.4_1789964829535_0.09777192573087357","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"//":"~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".","_id":"dynamodb-refresh-token-provider@0.5.5","bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"dist":{"shasum":"c9a91f9cf967592806efcd83211408aff26ee1ba","tarball":"https://registry.npmjs.org/dynamodb-refresh-token-provider/-/dynamodb-refresh-token-provider-0.5.5.tgz","fileCount":15,"integrity":"sha512-Qb+rl3C3GfL/u4LuoK7Wd7NsSN6zbBixHTn/Npv4IH1sCW4iqbLrRUQlscnLoL2fLnrQXNaPbImm5ecKhCJ+ZA==","signatures":[{"sig":"MEYCIQCSw2Uc099fFeKakn2aXQx9M3P0p9ekuq2eeHkiZoduHgIhAI5nvRQBOt3xPtuh3km64OuvtkSGZdNezGEN6oSvDRcl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEKiaVe9Z/WBjeU4OZV+gce7AV0DO/MhdFLFOTgaD8HNAiEAqQsomRhEnhoqAegEydz/6VQ8cDHoIJOnWNlTb15P7qQ="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dynamodb-refresh-token-provider@0.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139147},"jest":{"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"testMatch":["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],"transform":{"^.+\\.[t]sx?$":["ts-jest",{"tsconfig":"test/tsconfig.json"}]},"clearMocks":true,"collectCoverage":true,"coverageProvider":"v8","coverageDirectory":"coverage","coverageReporters":["json","lcov","clover","cobertura","text"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"coveragePathIgnorePatterns":["/node_modules/"]},"main":"lib/index.js","name":"dynamodb-refresh-token-provider","_from":"file:dist/js/dynamodb-refresh-token-provider-0.5.5.tgz","types":"lib/index.d.ts","author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"engines":{"node":">= 20.0.0"},"license":"Apache-2.0","scripts":{"bump":"projen bump","test":"projen test","build":"projen build","eject":"projen eject","watch":"projen watch","eslint":"projen eslint","projen":"projen","unbump":"projen unbump","clobber":"projen clobber","compile":"projen compile","default":"projen default","package":"projen package","release":"projen release","upgrade":"projen upgrade","test:watch":"projen test:watch","pre-compile":"projen pre-compile","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","bump:releasable-commits":"projen bump:releasable-commits"},"version":"0.5.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:995b26ba-c18d-451e-898e-dc2f0917b45b"}},"homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","_resolved":"/home/runner/work/dynamodb-refresh-token-provider/dynamodb-refresh-token-provider/dist/js/dynamodb-refresh-token-provider-0.5.5.tgz","_integrity":"sha512-Qb+rl3C3GfL/u4LuoK7Wd7NsSN6zbBixHTn/Npv4IH1sCW4iqbLrRUQlscnLoL2fLnrQXNaPbImm5ecKhCJ+ZA==","devEngines":{"packageManager":{"name":"npm","onFail":"ignore"}},"repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"_npmVersion":"11.19.0","description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","directories":{},"maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@aws-sdk/lib-dynamodb":"^3.777.0","@aws-sdk/client-dynamodb":"^3.777.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.2","eslint":"^9","projen":"^0.103.27","ts-jest":"^29.4.14","ts-node":"^10.9.2","constructs":"^10.0.0","jest-junit":"^17","typescript":"6.0.x","@types/jest":"^30.0.0","@types/node":"^20","eslint-plugin-import":"^2.32.0","commit-and-tag-version":"^13","@stylistic/eslint-plugin":"^2","@typescript-eslint/parser":"^8","@typescript-eslint/eslint-plugin":"^8","eslint-import-resolver-typescript":"^4.4.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dynamodb-refresh-token-provider_0.5.5_1790571216825_0.7403140701179689"}}},"time":{"created":"2026-04-07T13:02:39.277Z","modified":"2026-09-28T04:53:37.225Z","0.1.2":"2026-04-07T13:02:39.567Z","0.1.3":"2026-04-07T13:06:28.431Z","0.2.0":"2026-04-09T04:10:56.909Z","0.2.1":"2026-04-14T05:01:26.981Z","0.2.2":"2026-04-14T05:38:54.675Z","0.2.3":"2026-05-09T06:11:18.689Z","0.2.4":"2026-05-11T04:07:45.318Z","0.2.5":"2026-05-18T04:16:16.838Z","0.2.6":"2026-05-25T04:25:16.480Z","0.2.7":"2026-06-01T04:56:44.338Z","0.3.0":"2026-06-03T04:05:50.457Z","0.3.1":"2026-06-08T04:47:03.176Z","0.3.2":"2026-06-15T05:06:33.803Z","0.3.3":"2026-06-22T05:06:57.970Z","0.3.4":"2026-06-29T04:44:11.841Z","0.3.5":"2026-07-06T04:09:30.611Z","0.3.6":"2026-07-13T03:36:28.285Z","0.4.0":"2026-07-14T04:22:58.831Z","0.4.1":"2026-07-20T03:51:45.835Z","0.4.2":"2026-07-27T03:42:38.886Z","0.4.3":"2026-08-03T03:34:51.626Z","0.4.4":"2026-08-10T02:14:50.499Z","0.4.5":"2026-08-17T01:43:01.163Z","0.4.6":"2026-08-24T01:45:03.955Z","0.5.0":"2026-08-28T08:25:27.004Z","0.5.1":"2026-08-31T07:10:53.276Z","0.5.2":"2026-09-07T04:02:27.354Z","0.5.3":"2026-09-14T04:27:30.614Z","0.5.4":"2026-09-21T04:27:09.625Z","0.5.5":"2026-09-28T04:53:36.910Z"},"bugs":{"url":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/issues"},"author":{"name":"yicr","email":"yicr@users.noreply.github.com"},"license":"Apache-2.0","homepage":"https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider#readme","repository":{"url":"git+https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider.git","type":"git"},"description":"TypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (","maintainers":[{"name":"yicr","email":"yuichiro.higa@gmail.com"}],"readme":"# DynamoDB Refresh Token Provider\n\n[![npm version](https://img.shields.io/npm/v/dynamodb-refresh-token-provider.svg)](https://www.npmjs.com/package/dynamodb-refresh-token-provider)\n[![License](https://img.shields.io/npm/l/dynamodb-refresh-token-provider.svg)](https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/blob/main/LICENSE)\n[![build](https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/actions/workflows/build.yml/badge.svg)](https://github.com/gammarers-aws-sdk-modules/dynamodb-refresh-token-provider/actions/workflows/build.yml)\n\nTypeScript library that stores **opaque refresh tokens** in **Amazon DynamoDB** using AWS SDK for JavaScript v3. Tokens are persisted under a hash of the plaintext value; **issue**, **rotate** (with reuse detection via a transactional write), **revoke** (idempotent), **revokeSession** (session-wide family revocation), and **revokeSubject** (subject-wide revocation across all sessions) are supported.\n\n## Features\n\n- **`RefreshTokenStore` interface** — swap implementations while keeping the same API.\n- **`DynamodbRefreshTokenProvider`** — single-table design with string partition key `pk` and strongly consistent reads by default.\n- **DynamoDB TTL** — writes `ttl` (Unix seconds) on `Put` and `TransactWriteItems` so expired and rotated rows can be removed automatically when table TTL is enabled.\n- **Logical expiration** — `expiresAt` drives validation; `ttl` is for storage cleanup only.\n- **Rotation safety** — marks the old row as rotated and inserts the successor in one transaction; detects reuse and conflicting updates.\n- **Session revocation (OAuth 2.0 BCP)** — `revokeSession({ sessionId })` revokes all tokens for a session via a `sessionId` GSI; optional `revokeSessionOnReuse` cascades on reuse detection.\n- **Subject revocation** — `revokeSubject({ subjectId })` revokes every token for a user across all sessions via a `subjectId` GSI (logout all devices, password change, account suspension).\n- **Structured errors** — `RefreshTokenError`, `RefreshTokenInvalidError`, `RefreshTokenExpiredError`, `RefreshTokenRevokedError`, `RefreshTokenReusedError` (with optional `subjectId` / `sessionId`), and `RefreshTokenRotateFailedError` for `instanceof` handling.\n- **Utilities** — `sha256hex` and `randomtoken` for hashing and token generation aligned with the store.\n\n## Installation\n\n```bash\nnpm install dynamodb-refresh-token-provider\n```\n\n```bash\nyarn add dynamodb-refresh-token-provider\n```\n\n## Usage\n\nCreate a store with your table name, AWS region, and optional `StoreOptions`. Your DynamoDB table needs a **string partition key** named `pk`, **TTL enabled** on attribute `ttl` (see [DynamoDB TTL](#dynamodb-ttl)), a **GSI** on `sessionId` for session revocation (see [Session GSI](#session-gsi)), and a **GSI** on `subjectId` for subject-wide revocation (see [Subject GSI](#subject-gsi)).\n\n```typescript\nimport {\n  DynamodbRefreshTokenProvider,\n  RefreshTokenExpiredError,\n  RefreshTokenInvalidError,\n  RefreshTokenReusedError,\n  RefreshTokenRevokedError,\n} from 'dynamodb-refresh-token-provider';\n\nconst store = new DynamodbRefreshTokenProvider('your-refresh-token-table', 'us-east-1', {\n  ttlDays: 60,\n  // ttlSeconds: 3600, // alternative to ttlDays; takes precedence when both are set\n  // tokenBytes: 32,\n  pkPrefix: 'rt#',\n  // translateConfig: { marshallOptions: { removeUndefinedValues: true } },\n  // Optional: revoke every token in the session when reuse is detected (OAuth 2.0 BCP)\n  // revokeSessionOnReuse: true,\n  // sessionIdIndexName: 'sessionId-index',\n  // subjectIdIndexName: 'subjectId-index',\n});\n\n// Issue a new refresh token for a subject/session\nconst issued = await store.issue({\n  subjectId: 'user-123',\n  sessionId: 'session-456',\n});\n// issued.refreshToken — send to the client (plaintext)\n// issued.refreshTokenExpiresAt — Unix seconds (same as expiresAt / ttl on the item)\n\n// Rotate: exchange the current token for a new one\ntry {\n  const rotated = await store.rotate({ refreshToken: issued.refreshToken });\n  // rotated.refreshToken, rotated.refreshTokenExpiresAt, rotated.subjectId, rotated.sessionId\n} catch (e) {\n  if (e instanceof RefreshTokenReusedError) {\n    // already rotated or lost a transactional race\n    // e.sessionId / e.subjectId are set when the store row was loaded\n    if (e.sessionId) {\n      await store.revokeSession({ sessionId: e.sessionId, subjectId: e.subjectId });\n    }\n  }\n  if (e instanceof RefreshTokenInvalidError) {\n    // unknown or malformed token\n  }\n  if (e instanceof RefreshTokenExpiredError) {\n    // past expiresAt\n  }\n  if (e instanceof RefreshTokenRevokedError) {\n    // revokedAt is set\n  }\n  throw e;\n}\n\n// Revoke one token: idempotent; succeeds even if the row does not exist\nawait store.revoke({ refreshToken: issued.refreshToken });\n\n// Revoke all tokens for a session (requires sessionId GSI)\nawait store.revokeSession({ sessionId: 'session-456', subjectId: 'user-123' });\n\n// Revoke all tokens for a subject across every session (requires subjectId GSI)\nawait store.revokeSubject({ subjectId: 'user-123' });\n```\n\n### DynamoDB TTL\n\nEach item includes:\n\n| Attribute | Purpose |\n|-----------|---------|\n| `expiresAt` | Logical expiration (Unix seconds); used by the library for validation. |\n| `ttl` | DynamoDB TTL attribute (Unix seconds); enable table TTL on this name for automatic deletion. |\n\nOn **issue**, both are set to the same value. On **rotate**, the successor `Put` sets both to the new expiration; the previous row’s `ttl` is updated to its existing `expiresAt`. **Revoke**, **revokeSession**, and **revokeSubject** do not change `ttl` (the value from issue/rotate still applies).\n\nEnable TTL on your table once (per table/region). The TTL attribute name must be **`ttl`**.\n\n**AWS CLI**\n\n```bash\naws dynamodb update-time-to-live \\\n  --table-name your-refresh-token-table \\\n  --time-to-live-specification \"Enabled=true, AttributeName=ttl\"\n```\n\n**AWS Console**\n\n1. Open the table → **Additional settings** → **Time to Live (TTL)**.\n2. Turn TTL on and set the attribute name to **`ttl`**.\n\nDynamoDB deletes items asynchronously, typically within 48 hours after `ttl` is in the past.\n\n### Session GSI\n\n`revokeSession` (and `revokeSessionOnReuse`) query token rows by `sessionId`. Create a GSI whose **partition key** is the attribute **`sessionId`** (String). `KEYS_ONLY` projection is enough (base-table `pk` is always projected).\n\n| Setting | Value |\n|---------|--------|\n| Index name | `sessionId-index` (override with `sessionIdIndexName`) |\n| Partition key | `sessionId` (S) |\n| Projection | `KEYS_ONLY` (or `ALL`) |\n\n**AWS CLI** (example; adjust billing mode / capacity as needed)\n\n```bash\naws dynamodb update-table \\\n  --table-name your-refresh-token-table \\\n  --attribute-definitions AttributeName=sessionId,AttributeType=S \\\n  --global-secondary-index-updates '[{\n    \"Create\": {\n      \"IndexName\": \"sessionId-index\",\n      \"KeySchema\": [{\"AttributeName\": \"sessionId\", \"KeyType\": \"HASH\"}],\n      \"Projection\": {\"ProjectionType\": \"KEYS_ONLY\"}\n    }\n  }]'\n```\n\n### Subject GSI\n\n`revokeSubject` queries token rows by `subjectId` to revoke every refresh token for a user (e.g. logout all devices, password change, account suspension). Create a GSI whose **partition key** is the attribute **`subjectId`** (String). `KEYS_ONLY` projection is enough (base-table `pk` is always projected).\n\n| Setting | Value |\n|---------|--------|\n| Index name | `subjectId-index` (override with `subjectIdIndexName`) |\n| Partition key | `subjectId` (S) |\n| Projection | `KEYS_ONLY` (or `ALL`) |\n\n**AWS CLI** (example; adjust billing mode / capacity as needed)\n\n```bash\naws dynamodb update-table \\\n  --table-name your-refresh-token-table \\\n  --attribute-definitions AttributeName=subjectId,AttributeType=S \\\n  --global-secondary-index-updates '[{\n    \"Create\": {\n      \"IndexName\": \"subjectId-index\",\n      \"KeySchema\": [{\"AttributeName\": \"subjectId\", \"KeyType\": \"HASH\"}],\n      \"Projection\": {\"ProjectionType\": \"KEYS_ONLY\"}\n    }\n  }]'\n```\n\n## Options\n\nConstructor: `new DynamodbRefreshTokenProvider(tableName, region, options?)`.\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `ttlDays` | `number` | `60` | Token lifetime in days; added to `now` when computing `expiresAt` and `ttl` (Unix seconds). Ignored when `ttlSeconds` is set. |\n| `ttlSeconds` | `number` | (none) | Token lifetime in seconds; takes precedence over `ttlDays` when both are set. |\n| `tokenBytes` | `number` | `32` | Random byte length for generated refresh tokens (e.g. `32` → 256-bit). |\n| `translateConfig` | `DocumentClientTranslateConfig` | (none) | Pass-through to `DynamoDBDocumentClient.from` (e.g. `marshallOptions.removeUndefinedValues`). |\n| `pkPrefix` | `string` | `'rt#'` | Partition key prefix; full `pk` is `prefix` + SHA-256 hex of the plaintext token. |\n| `consistentRead` | `boolean` | `true` | Use strongly consistent reads on `GetItem` when loading a token row. |\n| `endpoint` | `string` | (none) | Custom DynamoDB API endpoint (e.g. LocalStack or DynamoDB Local). |\n| `sessionIdIndexName` | `string` | `'sessionId-index'` | GSI name whose partition key is `sessionId` (required for `revokeSession`). |\n| `subjectIdIndexName` | `string` | `'subjectId-index'` | GSI name whose partition key is `subjectId` (required for `revokeSubject`). |\n| `revokeSessionOnReuse` | `boolean` | `false` | When true, `rotate` calls `revokeSession` for the token’s session before throwing `RefreshTokenReusedError`. |\n\n`issue`, `rotate`, `revoke`, `revokeSession`, and `revokeSubject` accept an optional `now?: Date` for testing or clock injection.\n\n## Requirements\n\n- **Node.js** 20.0.0 or later.\n- A **DynamoDB table** with a string partition key **`pk`**, **TTL enabled** on attribute **`ttl`** (see [DynamoDB TTL](#dynamodb-ttl)), a **GSI** on **`sessionId`** for session revocation (see [Session GSI](#session-gsi)), and a **GSI** on **`subjectId`** for subject-wide revocation (see [Subject GSI](#subject-gsi)).\n- **AWS credentials** and permissions for `PutItem`, `GetItem`, `UpdateItem`, `Query`, and `TransactWriteItems` on that table (and the configured `endpoint` if used).\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md"}