{"adoption": {"forks": 211, "observed_at": "2026-08-28T04:06:16.438835+00:00", "stars": 2119}, "canonical_url": "https://ross.abutalabs.com/products/watchjs", "card": {"archived": true, "artifact_type": "library", "description": "watch the changes of any object or attribute", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["state-management", "developer-tools"], "health_score": 10, "homepage": null, "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "abandoned", "member_repos": ["melanke/Watch.JS"], "name": "melanke/Watch.JS", "platform": ["browser", "cross-platform"], "pushed_at": "2020-03-16T13:12:49+00:00", "repo": "melanke/Watch.JS", "stars": 2119, "tags": ["observer-pattern", "object-watching", "data-binding", "no-longer-maintained", "es5", "javascript", "nodejs"], "topics": [], "urls": [], "use_cases": ["watch changes to a javascript object attribute", "run a callback when object property changes", "observe multiple object attributes for changes", "implement observer pattern without frameworks", "detect when array or object is mutated", "bind ui updates to data changes in vanilla js"], "what_it_is": "Watch.JS is a small JavaScript library that lets you observe changes to object attributes and invoke callback functions when they change, implementing the Observer pattern without requiring changes to your development style. It works in browsers (IE9+), Node.js, and other JavaScript environments, but is no longer maintained.", "when_to_avoid": ["you are starting a new project - use on-change or Proxies instead", "you need reactive state management with framework integration", "you need long-term support or active maintenance"], "when_to_choose": ["you need simple object property watching in legacy browsers like IE9", "you want a tiny dependency-free observer pattern implementation for vanilla JavaScript", "you are maintaining an older codebase that already uses Watch.JS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/watchjs", "repo": "melanke/Watch.JS", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.438835+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.362771+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e66a1e232800343188c53b19a54b92c2f4154f73c00d7c24a69ef74442f9ddc", "fetched_at": "2026-08-28T04:06:16.438835+00:00", "kind": "readme", "missing": false, "url": "https://github.com/melanke/Watch.JS"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "archived", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5067, "days_push": 2361, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}