{"_id":"keyv-nest","_rev":"7-6f4940ee1db419c59b04f91d1a86c17d","name":"keyv-nest","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.2":{"name":"keyv-nest","version":"0.0.2","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.0.2","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"e0d32b674a1b78cfb78ed7564c6b6a3fd5364785","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.0.2.tgz","fileCount":11,"integrity":"sha512-faafRrsAJDe9VPBn4E353Po0rTQz/OZonyjDP8Rqy3ol/bSPir90Bn219XR0oVjQtleu1zrlfyJvdxl7qsaDEw==","signatures":[{"sig":"MEUCIBODvNQhgQkEnAjtA5jCWReTySerlzlnefwJZIx2xl2ZAiEAgULgPsCVcwN9kcfbzznrGp6e/gIZmBWVvq4K7paZjX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16494},"main":"index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"da5b0877a6832a332dd1da807cc24dec37ff16b1","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.8.2","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"22.5.1","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^4.5.4","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.0.2_1723090896250_0.9828702983302986","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"keyv-nest","version":"0.0.4","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.0.4","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"ebfecce8d664fc7e33021b94672ad175dc9ba4d6","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.0.4.tgz","fileCount":11,"integrity":"sha512-Nk9W4z3xV7ng7eomZBltw1yUYuqf8F7USDNUoCC1QhMQNvf+GpxZRvUZnKFVWLv1Wyxy/PZCe0QsZVqJwkPOLw==","signatures":[{"sig":"MEQCIFy6tkolETotWFVVm95cjXs322otXXQEuD+Cfwd9m3vhAiACcCphgvZbNJir1llMV8Whm5JxatIMuzLKGTHcEE3xuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"6113bba6cfd5afa9f522cfa9761efae797588472","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.8.2","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"22.5.1","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^4.5.4","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.0.4_1723092121790_0.5044876385310224","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"keyv-nest","version":"0.0.5","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.0.5","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"bdb0ef9fa7c14ecba8d986ec3e1e90d485da026e","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.0.5.tgz","fileCount":11,"integrity":"sha512-tgMCdg3FzYBvf760ETjKmqWMFq9RlnTcXU0Mcy3FhTjSHR+s1tYeMUlcEQNafin13gH5cEsv0hszfG56RBYmsQ==","signatures":[{"sig":"MEYCIQCbMOba0nQrPjObKYItEL51As2+mSkrcp850DDoeWyDUgIhAMeKGANMlVZ4xkgLI0vMQRtyvzM6xtLRsMBxilt/eFYG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16579},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"ac0afa49065836b6996deddf4c14a571feafd0dc","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.8.2","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"22.5.1","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^4.5.4","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.0.5_1723097743998_0.6932270933803502","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"keyv-nest","version":"0.1.0","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.1.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"250bb1fb54c3915481a742d89cad4790fc2237ca","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.1.0.tgz","fileCount":11,"integrity":"sha512-pXoXipAhuS69jknwYzvW3jn3OfhExbM9DuOSI3f1/b3gIHZD77WPbrND0tFrJxUtOhmAxrXHeC9P0Gn6Rat4Jw==","signatures":[{"sig":"MEUCICW9bXRXK8MoZZAyHaQW+WPQAYwj/kis/tUAI2RsVSCwAiEAuzwPZQzujVQbAzE18pduQzfekIV+nSgGFDAmk1XfS7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19695},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"f5468543660490c18d3a897cb666ac9deb15ad22","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","prepare":"husky","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.9.2","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"24.1.0","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^4.5.4","husky":"^9.1.7","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12","semantic-release":"^24.2.5"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.1.0_1748585409701_0.6684620374823671","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"keyv-nest","version":"0.2.0","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.2.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"25c87078cc2b45a047467330ab1873525897c275","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.2.0.tgz","fileCount":11,"integrity":"sha512-XqeNXtXz0Mp3+1oVIF2Xnm2Q58aPkt0KYyeqyhQGj2dXem1kGGAcV+n+NyL+qDx/i1y8kwUiFcBxtTZHfu3DXQ==","signatures":[{"sig":"MEUCIQDZGzPkEWKOTiKnkeMsj1KnjmixDX0SPkBjMGCkLs8HNwIgQ7U+WBHoTe6eNUmPfXRTMmoGtlKOiI8jiJXaVn7NkwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"704d86f7f447ea76dae56a271dfd312eb2a1639d","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","prepare":"husky","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.9.3","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"24.7.0","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^4.5.4","husky":"^9.1.7","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12","semantic-release":"^24.2.5"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.2.0_1756631442306_0.5684701366304592","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"keyv-nest","version":"0.0.6","keywords":[],"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","_id":"keyv-nest@0.0.6","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"dist":{"shasum":"6c51154202179a5e75682ed6ad38ee64b483ff96","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.0.6.tgz","fileCount":11,"integrity":"sha512-RGkYEjQBr/OE3mVH/twIwciFIERKPcOaJrDRMfmPNNjnJf/RarzDGg5EHzfa4smHmAc8XT8cEyRyk4jW/pkdGQ==","signatures":[{"sig":"MEUCIAHrPJ3gq3Ppvz7KR9hj98SkN5Wvc8c/wWnrAeEszVVdAiEAsfd+2HoDww13f9ZnEhjOezgy7sr7c6ceGin6kCCZUjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26176},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"index.ts","exports":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"gitHead":"4cdfd4348b7de8a6a94895442976a3cac1c6388b","scripts":{"test":"bun test","build":"bun build:type && bun build:js && bun build:umd","prepare":"husky","release":"bunx standard-version && git push --follow-tags && npm publish","build:js":"bun build . --outdir=dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","prerelease":"bun run build && bun run test"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"repository":{"url":"git+https://github.com/snomiao/keyv-nest.git","type":"git"},"_npmVersion":"10.9.3","description":"Nest multi-level keyv caches, boost user-experiences","directories":{},"_nodeVersion":"24.5.0","dependencies":{"chalk":"^4.1.2","slash":"^3.0.0","braces":"^3.0.3","expect":"^29.7.0","phpdie":"^1.2.12","ci-info":"^3.9.0","has-flag":"^4.0.0","react-is":"^18.3.1","bun-types":"^1.1.17","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","picomatch":"^2.3.1","color-name":"^1.1.4","fill-range":"^7.1.1","micromatch":"^4.0.7","picocolors":"^1.0.1","ansi-styles":"^5.2.0","graceful-fs":"^4.2.11","stack-utils":"^2.0.6","@keyv/sqlite":"^3.6.7","undici-types":"^5.26.5","color-convert":"^2.0.1","jest-get-type":"^29.6.3","pretty-format":"^29.7.0","diff-sequences":"^29.6.3","supports-color":"^7.2.0","to-regex-range":"^5.0.1","jest-message-util":"^29.7.0","jest-matcher-utils":"^29.7.0","escape-string-regexp":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"keyv":"^5.5.5","husky":"^9.1.7","tiny-lru":"^11.2.11","@types/bun":"latest","typescript":"^5.5.4","@types/jest":"^29.5.12","semantic-release":"^24.2.5"},"_npmOperationalInternal":{"tmp":"tmp/keyv-nest_0.0.6_1764991672584_0.3653775375804542","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"keyv-nest","version":"0.0.7","description":"Nest multi-level keyv caches, boost user-experiences","keywords":["keyv","cache","caching","nested-cache","multi-level-cache","hierarchical-cache","memory-cache","disk-cache","storage","key-value","adapter","store","lru","performance","write-concern"],"homepage":"https://github.com/snomiao/keyv-nest#readme","bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"repository":{"type":"git","url":"git+https://github.com/snomiao/keyv-nest.git"},"license":"MIT","author":{"name":"snomiao","email":"snomiao@gmail.com"},"exports":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"main":"./dist/index.js","module":"index.ts","types":"./dist/index.d.ts","scripts":{"build":"bun build:type && bun build:js && bun build:umd","build:js":"bun build . --outdir=dist","build:type":"bunx --bun tsc -d --noEmit false --emitDeclarationOnly --outDir dist","build:umd":"bunx rollup dist/index.js --file dist/index.umd.js --format umd --name {}","prerelease":"bun run build && bun run test","release":"bunx standard-version && git push --follow-tags && npm publish","test":"bun test","prepare":"husky"},"dependencies":{"@keyv/sqlite":"^3.6.7","ansi-styles":"^5.2.0","braces":"^3.0.3","bun-types":"^1.1.17","chalk":"^4.1.2","ci-info":"^3.9.0","color-convert":"^2.0.1","color-name":"^1.1.4","diff-sequences":"^29.6.3","escape-string-regexp":"^2.0.0","expect":"^29.7.0","fill-range":"^7.1.1","graceful-fs":"^4.2.11","has-flag":"^4.0.0","is-number":"^7.0.0","jest-diff":"^29.7.0","jest-get-type":"^29.6.3","jest-matcher-utils":"^29.7.0","jest-message-util":"^29.7.0","jest-util":"^29.7.0","js-tokens":"^4.0.0","micromatch":"^4.0.7","phpdie":"^1.2.12","picocolors":"^1.0.1","picomatch":"^2.3.1","pretty-format":"^29.7.0","react-is":"^18.3.1","slash":"^3.0.0","stack-utils":"^2.0.6","supports-color":"^7.2.0","to-regex-range":"^5.0.1","undici-types":"^5.26.5"},"devDependencies":{"@types/bun":"latest","@types/jest":"^29.5.12","husky":"^9.1.7","keyv":"^5.5.5","semantic-release":"^24.2.5","tiny-lru":"^11.2.11","typescript":"^5.5.4"},"type":"module","_id":"keyv-nest@0.0.7","gitHead":"03563b4e00dcdf26dd2a4082b0ad332699bb2b00","_nodeVersion":"24.5.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-JVMzbtdQUdL7ZC1bCpyRVGQKy/D50u3WOBXkiZjktetvQfZuzCvjgpqL+p5M0hfHq7V24VOXdDw2/YBKqTWpFw==","shasum":"12a62b0ec5bf71afded53db61a680200131677f8","tarball":"https://registry.npmjs.org/keyv-nest/-/keyv-nest-0.0.7.tgz","fileCount":11,"unpackedSize":28703,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB1und532DAI2c8GzL203t85q0nB85mEQfGwC33jt/irAiAzeVfqXCLWDQ3VCUrqv8+Eph0F1QNc0qapk/8xufx0dg=="}]},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"directories":{},"maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/keyv-nest_0.0.7_1765254428048_0.8291951433162921"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-08T04:21:36.249Z","modified":"2025-12-09T04:27:08.432Z","0.0.2":"2024-08-08T04:21:36.444Z","0.0.4":"2024-08-08T04:42:02.119Z","0.0.5":"2024-08-08T06:15:44.169Z","0.1.0":"2025-05-30T06:10:09.881Z","0.2.0":"2025-08-31T09:10:42.504Z","0.0.6":"2025-12-06T03:27:52.721Z","0.0.7":"2025-12-09T04:27:08.194Z"},"bugs":{"url":"https://github.com/snomiao/keyv-nest/issues"},"author":{"name":"snomiao","email":"snomiao@gmail.com"},"license":"MIT","homepage":"https://github.com/snomiao/keyv-nest#readme","keywords":["keyv","cache","caching","nested-cache","multi-level-cache","hierarchical-cache","memory-cache","disk-cache","storage","key-value","adapter","store","lru","performance","write-concern"],"repository":{"type":"git","url":"git+https://github.com/snomiao/keyv-nest.git"},"description":"Nest multi-level keyv caches, boost user-experiences","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"readme":"# KeyvNest\n\n[![npm version](https://badge.fury.io/js/keyv-nest.svg)](https://www.npmjs.com/package/keyv-nest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n`KeyvNest` is a hierarchical caching adapter for the [Keyv](https://github.com/lukechilds/keyv) module. It allows you to nest multiple caching layers, such as memory cache, disk cache, and network cache, to create a multi-layered caching mechanism that boosts user experience by optimizing data retrieval across different storage tiers.\n\n## Features\n\n- 🚀 **Multi-layer caching**: Nest unlimited cache layers with automatic promotion\n- ⚡ **Performance optimized**: Fast reads from primary cache with automatic fallback\n- 🔄 **Write concern control**: Fine-grained control over synchronous/asynchronous writes\n- 🔌 **Keyv compatible**: Works seamlessly with any Keyv store adapter\n- 📦 **TypeScript support**: Full type definitions included\n- 🎯 **Simple API**: Easy to use and integrate\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n- [API](#api)\n- [Examples](#examples)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Installation\n\nYou can install the module via npm:\n\n```sh\nnpm install keyv-nest\n```\n\nOr using bun:\n\n```sh\nbun add keyv-nest\n```\n\n## Usage\n\nFirst, import the module and create instances of your cache stores. Then, use `KeyvNest` to create a hierarchical caching structure.\n\n```typescript\nimport Keyv from 'keyv';\nimport KeyvNest from 'keyv-nest';\n\nconst memoryCache = new Keyv({ store: new Map() });\nconst diskCache = new Keyv({ store: new KeyvFileStore('/path/to/store') });\nconst networkCache = new Keyv({ store: new SomeNetworkStore() });\n\nconst nestedCache = KeyvNest(memoryCache, diskCache, networkCache);\n\n(async () => {\n  await nestedCache.set('foo', 'bar');\n  const value = await nestedCache.get('foo');\n  console.log(value); // 'bar'\n})();\n```\n\n### Advanced Example with Write Concern\n\nKeyvNest supports write concern control to manage how data is persisted across cache layers:\n\n```typescript\nimport Keyv from 'keyv';\nimport KeyvNest from 'keyv-nest';\n\nconst memoryCache = new Keyv({ store: new Map() });\nconst diskCache = new Keyv({ store: new KeyvFileStore('/path/to/store') });\n\nconst nestedCache = KeyvNest(memoryCache, diskCache);\n\n// Write concern = 0: Write to first layer only, propagate asynchronously\nawait nestedCache.set('key1', 'value1', { writeConcern: 0 });\n\n// Write concern = 1: Write to first two layers, propagate rest asynchronously\nawait nestedCache.set('key2', 'value2', { writeConcern: 1 });\n\n// Default: Write to all layers synchronously\nawait nestedCache.set('key3', 'value3');\n```\n\n### Using KeyvNest as a Keyv Store\n\n```typescript\nexport const store = (g.store ??= KeyvNest(\n  {\n    get: (key) => console.log(\"kv.get \" + key),\n    set: (key, v) => console.log(\"kv.set \" + key),\n    delete: () => console.log(\"kv.delete\"),\n    clear: () => console.log(\"kv.clear\"),\n  },\n  new QuickLRU({ maxSize: 1000 }),\n  new KeyvDirStore(\"./.cache/\" + collection),\n  new KeyvMongo(MONGODB_URI, { collection })\n));\n\nexport const kv = new Keyv<any>({ store, ttl: enhancedMs(\"4w\") });\nexport const kv1m = new Keyv<unknown>({ store, ttl: enhancedMs(\"1m\") });\nexport const kv1d = new Keyv<unknown>({ store, ttl: enhancedMs(\"1d\") });\nexport const kv1w = new Keyv<unknown>({ store, ttl: enhancedMs(\"1w\") });\nexport const kv1y = new Keyv<unknown>({ store, ttl: enhancedMs(\"1y\") });\n\nexport const cache1m = KeyvCachedWith(kv1m);\nexport const cache1d = KeyvCachedWith(kv1d);\nexport const cache1w = KeyvCachedWith(kv1w);\nexport const cache1y = KeyvCachedWith(kv1y);\n```\n\n\n## API\n\n### KeyvNest\n\n#### `KeyvNest(cache: KeyvStore<T>, store: KeyvStore<T>, ...rest: KeyvStore<T>[]): KeyvStore<T>`\n\nCreates a nested cache adapter that allows for multi-layered caching.\n\n- **cache**: The primary cache store (usually memory cache).\n- **store**: The secondary cache store (usually disk cache).\n- **rest**: Additional cache stores (e.g., network cache).\n\nReturns a `KeyvStore` instance with the following methods:\n\n#### `get(key: string): Promise<T>`\n\nRetrieves a value from the cache hierarchy. If the value is found in the primary cache, it is returned. Otherwise, it checks the secondary cache and so on. If a value is found in any cache layer, it is promoted to the primary cache.\n\n- **key**: The cache key.\n- **returns**: A promise that resolves to the cached value or `undefined`.\n\n#### `set(key: string, value: T, options?: number | KeyvNestOptions): Promise<any>`\n\nSets a value in all layers of the cache hierarchy.\n\n- **key**: The cache key.\n- **value**: The value to cache.\n- **options**: Optional TTL (number) or options object:\n  - **ttl**: Time-to-live in milliseconds\n  - **writeConcern**: Controls write propagation behavior:\n    - `0`: Write to first layer only, propagate asynchronously to others\n    - `1`: Write to first two layers synchronously, propagate rest asynchronously\n    - `>=2`: Write to N+1 layers synchronously\n    - `undefined` (default): Write to all layers synchronously\n- **returns**: A promise that resolves when the operation has completed.\n\n#### `delete(key: string): Promise<any>`\n\nDeletes a value from all layers of the cache hierarchy.\n\n- **key**: The cache key.\n- **returns**: A promise that resolves when the operation has completed.\n\n#### `clear(): Promise<any>`\n\nClears all values from all layers of the cache hierarchy.\n\n- **returns**: A promise that resolves when the operation has completed.\n\n#### `getMany(keys: string[]): Promise<Array<StoredData<T | undefined>>>`\n\nRetrieves multiple values from the cache hierarchy. Missing values are fetched from deeper layers and promoted to the primary cache.\n\n- **keys**: Array of cache keys.\n- **returns**: A promise that resolves to an array of cached values.\n\n## Examples\n\nHere is an example of using `KeyvNest` with memory and disk caches:\n\n```typescript\nimport Keyv from 'keyv';\nimport KeyvNest from 'keyv-nest';\n\nconst memoryCache = new Keyv({ store: new Map() });\nconst diskCache = new Keyv({ store: new KeyvFileStore('/path/to/store') });\n\nconst nestedCache = KeyvNest(memoryCache, diskCache);\n\n(async () => {\n  await nestedCache.set('username', 'john_doe');\n  const username = await nestedCache.get('username');\n  console.log(username); // 'john_doe'\n\n  await nestedCache.delete('username');\n  const deletedUsername = await nestedCache.get('username');\n  console.log(deletedUsername); // undefined\n\n  await nestedCache.clear();\n})();\n```\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request for any feature requests, bug reports, or improvements.\n\n## License\n\nThis module is open-source and licensed under the MIT License. For more details, see the [LICENSE](LICENSE) file.\n","readmeFilename":"README.md"}