Skip to content

fix(deps): update dependency keyv to v6 - #634

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/keyv-6.x
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/keyv-6.x

Conversation

@renovate

@renovate renovate Bot commented Oct 7, 2026

Copy link
Copy Markdown

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
keyv ^4.0.3 → ^6.0.0 age adoption passing confidence

Release Notes

jaredwray/keyv (keyv)

v6.1.0

keyv@​6.1.0 — 2026-10-06

First stable release of Keyv v6, published to npm's latest tag.

All 20 published packages release in lockstep at 6.1.0; there is no 6.0.0. @keyv/website is private and not published.

Coming from v5? Follow the v5 to v6 migration guide, or point your coding agent at https://keyv.org/skills/migrate. v5 stays in maintenance; install it with keyv@5.

⚠ BREAKING CHANGES

These are changes since 6.0.0-rc.1. Coming from v5, start with the migration guide.

  • keyv, adapters: the namespace separator option is namespaceSeparator on every adapter that joins the namespace and the key, and it defaults to ::; keySeparator and keyPrefixSeparator are gone (d0bc310, #​2189)
    Migration from rc.1: rename the option. To keep reading namespaced data rc.1 wrote, set namespaceSeparator: ':' on the memory and bridge adapters, @keyv/etcd, @keyv/dynamo, @keyv/cloudflare-kv and @keyv/valkey. @keyv/redis already used :: in rc.1.
    Migration from v5: v5's Keyv also prefixed every key with <namespace>:, so the setting depends on the adapter. A default v5 @keyv/redis setup stored keyv::keyv:foo, which v6 reads with new Keyv(new KeyvRedis(uri, { namespaceSeparator: '::keyv:' }), { namespace: 'keyv' }). If you used createKeyv(), set only the same namespace. For other adapters, see The Default keyv Namespace Was Removed.
  • keyv: throwOnErrors is removed; a failed call returns a fallback value when an error listener is attached and rejects when none is (860dba7, #​2155)
    Migration: remove throwOnErrors, and attach an error listener if you want fallback values instead of rejections.
  • keyv: a namespace set on the storage adapter is used when Keyv has none (c6e88e7, #​2156)
    Migration: data rc.1 wrote in that setup has no namespace; remove the adapter's namespace to keep reading it, or let it refill.
  • keyv: a namespaced clear() fails instead of wiping a store it can't list (790eb3c, #​2186)
    Migration: give the store keys() or iterator(), or call clear() on a Keyv instance without a namespace to empty it.
  • keyv: writes fail when an encryption adapter is set and serialization is off; rc.1 stored those values unencrypted (b73ee16, #​2176)
    Migration: keep serialization on, which is the default, when you use encryption.
  • postgres, sqlite, mongo, dynamo, cloudflare-kv, etcd: keys that start with <namespace>: are stored as given instead of being treated as already prefixed (9dec04c, #​2159)
    Migration: entries rc.1 wrote under such keys read as missing; write them again.
  • encrypt-node, encrypt-web: @keyv/encrypt-node accepts only AES-GCM, AES-CCM and ChaCha20-Poly1305 with base64, base64url or hex output, and @keyv/encrypt-web accepts only AES-GCM; AES-CBC is removed (b06ec8b, #​2187)
    Migration: the defaults are unchanged; re-encrypt values written with any other algorithm or encoding before you upgrade.
  • dynamo: keys written without a TTL no longer expire, and sixHoursInMilliseconds is removed (476761d, #​2161)
    Migration: set Keyv's ttl option for a default expiry, as in new Keyv(store, { ttl: 6 * 60 * 60 * 1000 }).
  • etcd: the lease property is removed, and the store ttl applies to each key from its own write (6ba3096, #​2160)
    Migration: remove code that reads or sets store.lease.
  • etcd: without a namespace, clear() and iterator() only touch entries Keyv wrote without a namespace (8a77946, #​2173)
    Migration: set noNamespaceAffectsAll: true for the rc.1 behavior, and namespaceSeparator: ':' while etcd still holds namespaced rc.1 entries.
  • memcache: clear() only removes the store's own entries, and values rc.1 wrote read as missing (12415c5, #​2179)
    Migration: let the cache refill; set noNamespaceAffectsAll: true on a store without a namespace to flush the whole server.
  • bigmap: setting storeSize keeps every entry and no longer emits clear (b80b44d, #​2178)
    Migration: call clear() yourself if you resized the map to empty it.
Features
  • add the keyv-migrate agent skill, which upgrades a project from Keyv v4 or v5 to v6; it is published at https://keyv.org/skills/migrate (bae30d5, #​2171)

    npx skills add jaredwray/keyv --skill keyv-migrate
  • add a namespaceSeparator option to every adapter that joins the namespace and the key; it defaults to :: (d0bc310, #​2189)

    import Keyv from 'keyv';
    import KeyvEtcd from '@keyv/etcd';
    
    // Read keys written with the old ':' separator
    const keyv = new Keyv(new KeyvEtcd('etcd://localhost:2379', { namespaceSeparator: ':' }), { namespace: 'keyv' });
Bug Fixes
  • keyv: promise-based stores without async methods go through KeyvBridgeAdapter (9c82ca3, #​2157)
  • keyv: the sanitizer strips patterns until none remain (3462350, #​2158)
  • keyv, postgres: fractional TTLs no longer fail writes, and postgres disconnect() releases the pool it connected with (82daf5d, #​2168)
  • postgres, sqlite: a clearExpiredInterval over 24.8 days no longer runs cleanup every millisecond (920ad81, #​2164)
  • cloudflare-kv: keys with a TTL of 60 seconds or less are removed by KV (ce6efce, #​2162)
  • etcd: the value envelope uses Keyv's JSON serializer, so Buffer and BigInt values round-trip (9010961, #​2041)
  • etcd: setMany() reports failed writes as false (c8133f7, #​2172)
  • memcache: keys memcached can't store now work, and rejected writes return false (365eeba, #​2174)
  • mongo: add a v6 migration script so documents v5 wrote stay readable (4068b0a, #​2152)
  • mongo: GridFS reads the newest revision, and delete() removes every revision (8101af5, #​2163)
  • mysql: tables get a primary key on (namespace, id), and existing tables are migrated on connect (1bb5d90, #​2165)
  • mysql: the primary-key migration keeps primary keys you added and finds generated invisible ones (fbbb044, #​2170)
  • mysql, postgres: the v6 migration scripts ship in the package and run with npx tsx (8ede7f4, #​2150)
  • mysql, valkey: keyv is a peer dependency instead of a bundled copy (2c72abe, #​2149)
  • postgres: the migration script drops the legacy primary key first, deleteMany() runs as one statement, and SQL NULL reads as undefined (aa692eb, #​2064)
  • redis: createKeyv() accepts cluster and sentinel options, replacing the client removes the old client's listeners, and missing values are undefined (cab81d2, #​2062)
  • redis: concurrent operations during the handshake share one connect instead of failing (bb35d2b, #​2105)
  • redis: connectionTimeout covers the handshake, and timed-out connects close their sockets (00a48ba, #​2108)
  • redis: createKeyvNonBlocking() stops reconnecting to a server that is down (0575171, #​2167)
  • redis: clear() and iterator() match the namespace literally, not as a glob pattern (b91b8bf, #​2185)
  • sqlite: converting a v5 table runs in a transaction, and the sqlite3 driver no longer hangs after a failed statement (90630ee, #​2063)
  • valkey: reads return undefined, never null (2435715, #​2065)
  • valkey: clear() removes only its own namespace, not namespaces that share its prefix (4d369be, #​2147)
  • valkey: clear(), iterator() and useSets work in cluster mode (a4326e9, #​2166)
Documentation
Internal
  • npm releases are staged and approved with 2FA, with provenance and an Aikido scan gate; stable v6 releases stage under latest (#​2057, #​2124, #​2148)
  • runtime dependency upgrades: @redis/client 6.2.1, mongodb 7.6.0, mysql2 3.24.2, pg 8.23.0, better-sqlite3 13.0.3, memcache 1.10.0, AWS SDK DynamoDB 3.1121.0, msgpackr 2.1.0, lz4-napi 2.10.0, hookified 3.0.3 (#​2083–#​2092)
Contributors
Full List of Changes

Full diff: jaredwray/keyv@v6.0.0-rc.1...v6.1.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate

renovate Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: pnpm-lock.yaml
 WARN  GET https://registry.npmjs.org/keyv error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@commitlint/cli/-/cli-17.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@heise/eslint-config/-/eslint-config-19.0.13.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@keyv/redis/-/redis-2.1.3.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.1.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/git/-/git-10.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.1.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.2.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/cache-manager/-/cache-manager-4.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/etag/-/etag-1.8.1.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/keyv error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@commitlint/cli/-/cli-17.0.0.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.0.0.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@heise/eslint-config/-/eslint-config-19.0.13.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@keyv/redis/-/redis-2.1.3.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.0.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.1.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/git/-/git-10.0.0.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.1.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.2.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/cache-manager/-/cache-manager-4.0.0.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/etag/-/etag-1.8.1.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.
 WARN  GET https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 ERR_INVALID_THIS  Value of "this" must be of type URLSearchParams
 WARN  GET https://registry.npmjs.org/@types/node/-/node-14.17.27.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/sharp/-/sharp-0.30.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1009.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-2.6.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/eslint-plugin-sort-keys-fix/-/eslint-plugin-sort-keys-fix-1.1.2.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/express/-/express-4.17.1.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/got/-/got-11.8.2.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/husky/-/husky-8.0.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/jest/-/jest-27.3.0.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants