{"repo":"ElliotNB/observable-slim","free":true,"listed":false,"github":"https://github.com/ElliotNB/observable-slim","clone":"git clone https://github.com/ElliotNB/observable-slim.git","description":"Observable Slim is a singleton that utilizes ES6 Proxies to observe changes made to object graphs. Originally built to assist with state management, one-way data binding, and any situation where an application must be reactive to data store changes.","language":"JavaScript","stars":305,"topics":["javascript","es6-proxies","observable","proxy","nested-objects","state-management","data-binding"],"license":"MIT","category":"networking-infra","readme_excerpt":":eyes: Observable Slim https://github.com/elliotnb/observable-slim A small, dependency-free library that watches deep changes in plain JavaScript objects/arrays and tells you exactly what changed. Observable Slim mirrors JavaScript objects and arrays using ES2015 Proxy, letting you observe deeply nested changes with clear notifications using dotted paths and RFC-6901 JSON Pointers. Engineered for performance, it features linear O(N) initialization and lazy path generation, allowing it to scale efficiently even on deep state trees. It safely handles circular references, ensures fast O(1) lookups via WeakMap identity tables, and keeps paths accurate even when arrays reorder. You can batch updates for smoother UI rendering, pause/resume observers, and rely on automatic garbage collection for removed data. Lightweight ( 6 KB minified), dependency-free, and memory-safe. Table of Contents - Design (Deep Dive) - Features - Installation - Quick Start - API - Change Record Shape - Usage Examples - Limitations and Browser Support - TypeScript - Development - Contributing Design (Deep Dive) Curious about the underlying architecture and implementation? See docs/design.md for the problem model, core algorithms, complexity, invariants, cycle-safe instrumentation, cross-proxy fan-out, lazy path generation (linked-list lineage), reachability-based teardown, and correctness arguments. It's optional reading, but helpful if you want to understand how the internals stay fast and memory-safe. For","default_branch":null,"files":null,"tree":[],"storefront":"/r/ElliotNB","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ElliotNB/observable-slim/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}