1- # Keyval
1+ # Keyval – _ Simple Dictionary API for Modern Apps_
2+
3+ [ ![ npm version] [ npm-version-src ]] [ npm-version-href ] <!-- [![npm downloads][npm-downloads-src]][npm-downloads-href]-->
4+ [ ![ bundle] [ bundle-src ]] [ bundle-href ]
5+ [ ![ License] [ license-src ]] [ license-href ]
26
37** Keyval** is a small key/value storage layer with a consistent API across environments and backends:
48
@@ -388,7 +392,7 @@ const kv = new RedisKV({
388392
389393When enabled:
390394
391- * Field-level ` expires ` semantics begin to take effect.
395+ * Field-level ` expires ` semantics take effect.
392396* On every ` set() ` or ` json() ` mutation, the namespace-level TTL is ** re-applied/renewed**
393397* If a key has an ` expires ` later than the namespace-level TTL:
394398
@@ -399,8 +403,6 @@ When enabled:
399403
400404## Recipes
401405
402- The following patterns are intentionally practical—they mirror real architectural decisions rather than abstract examples.
403-
404406### 1. Session-scoped state (ephemeral)
405407
406408``` js
@@ -473,7 +475,7 @@ All Keyval backends share the same *conceptual* model and API surface, but they
473475* how expiry is enforced,
474476* what metadata is supported.
475477
476- This section documents those differences explicitly, so developers know exactly what to expect when choosing a backend.
478+ This section documents those differences explicitly, so you know exactly what to expect when choosing a backend.
477479
478480### InMemoryKV
479481
@@ -757,7 +759,7 @@ Example structure:
757759** Expiry**
758760
759761* Standard hash-level TTL is enforced natively by Redis.
760- * Field-level expiry is supported (when a namespace-level TTL is set).
762+ * Field-level expiry is supported (when a namespace-level TTL is set and ` options.fieldLevelExpiry ` is set ).
761763* Expired keys are removed lazily on next access.
762764
763765** Typical use cases**
@@ -968,3 +970,25 @@ await kv.close(); // releases backend resources
968970` ` `
969971
970972---
973+
974+ ## Contributing
975+
976+ All forms of contributions are welcome at this time. For example, syntax and other implementation details are all up for discussion. Also, help is needed with more formal documentation. And here are specific links:
977+
978+ + [Project](https://github.com/webqit/keyval)
979+ + [Documentation](https://github.com/webqit/keyval/wiki)
980+ + [Discusions](https://github.com/webqit/keyval/discussions)
981+ + [Issues](https://github.com/webqit/keyval/issues)
982+
983+ ## License
984+
985+ MIT.
986+
987+ [npm-version-src]: https://img.shields.io/npm/v/@webqit/keyval?style=flat&colorA=18181B&colorB=F0DB4F
988+ [npm-version-href]: https://npmjs.com/package/@webqit/keyval
989+ [npm-downloads-src]: https://img.shields.io/npm/dm/@webqit/keyval?style=flat&colorA=18181B&colorB=F0DB4F
990+ [npm-downloads-href]: https://npmjs.com/package/@webqit/keyval
991+ [bundle-src]: https://img.shields.io/bundlephobia/minzip/@webqit/keyval?style=flat&colorA=18181B&colorB=F0DB4F
992+ [bundle-href]: https://bundlephobia.com/result?p=@webqit/keyval
993+ [license-src]: https://img.shields.io/github/license/webqit/keyval.svg?style=flat&colorA=18181B&colorB=F0DB4F
994+ [license-href]: https://github.com/webqit/keyval/blob/master/LICENSE
0 commit comments