One memory space.
Multiple boundaries.
Namespaces keep unrelated data isolated while still living inside the same shared in-memory root. Same namespace — shared state. Different namespaces — independent.
MemoryX is a lightweight, namespace-aware in-memory key-value store for JavaScript and TypeScript. Keep transient browser data isolated, addressable and observable — without bringing a full state-management stack.
Namespaces create boundaries. Paths make nested data addressable. Subscriptions make mutations observable. This is real MemoryX running in your browser.
user.prefs.theme → lightSometimes you need a small, explicit memory layer for transient application data: preferences, UI state, session-scoped data, feature-local caches, temporary objects and other runtime values. MemoryX gives that data a home without forcing an architectural commitment around it.
Namespaces keep unrelated data isolated while still living inside the same shared in-memory root. Same namespace — shared state. Different namespaces — independent.
Lodash-compatible property paths — dot notation, array paths and bracket syntax — so nested values are addressable without manually walking object trees.
Subscribe to a path or to the whole namespace. Notifications are synchronous and tied directly to mutations via subscribe.
castPath semantics, bracket & dot compatible.Memory is organised by namespace rather than hidden in a giant application-wide object.
Property-path semantics follow the lodash mental model — differential-tested against real lodash.
Subscriptions are synchronous, once per mutation, ancestor-aware. Listener exceptions propagate.
Path writes to __proto__, constructor or prototype abort the whole operation — prototype-pollution guard.
MemoryX is open source under the MIT license. Read the source, inspect the implementation, run the tests, or contribute on GitHub.