{"adoption": {"forks": 28, "observed_at": "2026-08-28T04:05:28.719805+00:00", "stars": 1731}, "canonical_url": "https://ross.abutalabs.com/products/surreal", "card": {"archived": false, "artifact_type": "library", "description": "🗿 Mini jQuery alternative. Dependency-free animations. Locality of Behavior.  Use one element or arrays transparently. Pairs with htmx. Vanilla querySelector() but better!", "domain": ["web-development", "frontend"], "enriched": true, "function": ["ui-components", "animation", "developer-tools"], "health_score": 85, "homepage": "https://gnat.github.io/surreal/example.html", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["gnat/surreal"], "name": "gnat/surreal", "platform": ["browser"], "pushed_at": "2026-05-27T13:12:42+00:00", "repo": "gnat/surreal", "stars": 1731, "tags": ["jquery-alternative", "dom-manipulation", "locality-of-behavior", "vanilla-js", "htmx", "queryselector", "dependency-free", "no-build-step", "javascript"], "topics": ["cash", "dom", "dom-manipulation", "jquery", "jquery-alternative", "jquery-like", "jquery-replacement", "queryselector", "queryselectorall", "selector", "umbrella", "ergonomics", "locality-of-behavior", "hyperscript", "htmx", "animation", "timeline", "vanilla-js", "javascript", "surreal"], "urls": [], "use_cases": ["replace jQuery with a tiny vanilla JS alternative", "avoid typing document.querySelector and addEventListener repeatedly", "add animations and timelines without extra libraries", "use inline scripts with locality of behavior alongside htmx", "query one element or arrays of elements transparently", "write ergonomic DOM manipulation with no build step"], "what_it_is": "Surreal is a tiny, dependency-free JavaScript library that provides ergonomic jQuery-style DOM selection and manipulation on top of vanilla querySelector. It adds Locality of Behavior helpers like me()/any(), call chaining, and built-in animations and timelines in roughly 320 lines with no build step.", "when_to_avoid": ["you need a full reactive frontend framework with state management", "your project already standardizes on jQuery or a large UI framework", "you need extensive plugin ecosystem or legacy browser support"], "when_to_choose": ["you want jQuery-like ergonomics while staying close to vanilla JS", "you pair htmx or hyperscript and want inline, local scripts", "you need a tiny dependency-free DOM helper with animations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/surreal", "repo": "gnat/surreal", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "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:05:28.719805+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.719805+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:31:42.494579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26dabe9ca3f32c0dbac994890da3120a0f75b648aeff0334897647e7a1cac69d", "fetched_at": "2026-08-28T04:05:28.719805+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gnat/surreal"}, {"content_hash": "035423f08e44fae99763f5e20d597f9ba2cbbd95975ce55148211adb33847b7e", "fetched_at": "2026-08-29T11:08:42.055936+00:00", "kind": "homepage", "missing": false, "url": "https://gnat.github.io/surreal/example.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 84, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1551, "days_push": 98, "days_rel": 408, "gap_med": 0.0, "n_releases_24m": 3}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}