{"adoption": {"forks": 43, "observed_at": "2026-08-28T04:05:17.072086+00:00", "stars": 1652}, "canonical_url": "https://ross.abutalabs.com/products/callbag-basics", "card": {"archived": false, "artifact_type": "library", "description": "👜 Tiny and fast reactive/iterable programming library", "domain": ["web-development", "frontend", "developer-tools"], "enriched": true, "function": ["middleware", "streaming"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["staltz/callbag-basics"], "name": "staltz/callbag-basics", "platform": ["browser"], "pushed_at": "2023-04-20T06:28:40+00:00", "repo": "staltz/callbag-basics", "stars": 1652, "tags": ["reactive-programming", "observables", "iterables", "callbag", "functional-programming", "streams", "nodejs", "javascript"], "topics": ["callbacks", "reactive", "iterables", "observables", "callbag"], "urls": [], "use_cases": ["handle click events reactively in the browser", "process async event streams with map/filter/take operators", "transform iterables with the same operators used for streams", "build lightweight reactive apps without RxJS bundle size", "flatten promises and events into unified streams", "create interval-based tick streams for polling"], "what_it_is": "A tiny and fast JavaScript library implementing the callbag spec, providing basic factories and operators for reactive stream and iterable programming. The same operators work for both push-based event streams and pull-based iterables, with a modular design where everything is a standalone utility function.", "when_to_avoid": ["you need a batteries-included reactive library with schedulers and subjects", "your team already knows RxJS and ecosystem tooling matters more than size", "you need extensive documentation and community support", "you require frequent updates or long-term active maintenance"], "when_to_choose": ["you want a tiny (~7kB) alternative to RxJS or xstream", "you need one operator set that works for both observables and iterables", "you prefer a modular, spec-based design with no core library", "performance in stream processing is critical"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/callbag-basics", "repo": "staltz/callbag-basics", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "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:17.072086+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.072086+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:45:01.015059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a578da1c89a3477913f72c44a542e7366f7c4ee9660e1464652fd5754e95d635", "fetched_at": "2026-08-28T04:05:17.072086+00:00", "kind": "readme", "missing": false, "url": "https://github.com/staltz/callbag-basics"}, {"content_hash": "0e2bd3122b4f4ceef3e596a79ad1c915ff6c67f04f2f1fad7bab20325aec60f0", "fetched_at": "2026-08-29T11:18:11.070506+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag-basics"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3138, "days_push": 1231, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}