{"adoption": {"forks": 39, "observed_at": "2026-08-28T04:05:05.888446+00:00", "stars": 1575}, "canonical_url": "https://ross.abutalabs.com/products/callbag", "card": {"archived": false, "artifact_type": "library", "description": "👜 A standard for JS callbacks that enables lightweight observables and iterables", "domain": ["web-development", "developer-tools", "frontend", "backend"], "enriched": true, "function": ["streaming", "concurrency", "developer-tools"], "health_score": 20, "homepage": null, "language": null, "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["callbag/callbag"], "name": "callbag/callbag", "platform": ["browser", "cross-platform"], "pushed_at": "2023-02-27T19:29:12+00:00", "repo": "callbag/callbag", "stars": 1575, "tags": ["reactive-programming", "observables", "iterables", "async-iterables", "protocol-specification", "callback-standard", "functional-reactive", "nodejs"], "topics": [], "urls": [], "use_cases": ["implement lightweight observables in javascript", "standard for reactive streams with minimal memory allocations", "build modular stream operators as separate npm packages", "unify observables and async iterables under one callback protocol", "create custom reactive data sources and sinks", "learn how callback-based stream protocols work"], "what_it_is": "Callbag is a lightweight specification/standard for JavaScript callbacks that enables minimal-overhead observables, iterables, and async iterables. It is intentionally not a library but a protocol definition (source/sink handshake, data delivery, and termination semantics) on which modular reactive utility packages can be built.", "when_to_avoid": ["you need a batteries-included reactive library with rich operators out of the box", "you want extensive documentation, types, and community support like RxJS provides", "your team prefers established standards such as TC39 observable proposals or WHATWG streams", "you need guaranteed long-term maintenance, as the spec sees infrequent updates"], "when_to_choose": ["you want a tiny, dependency-free reactive streams standard with minimal overhead", "you need interoperability across callbag-based operator packages like callbag-basics", "you prefer composing your own reactive toolkit from small modular pieces", "you want one protocol covering observables, iterables, and async iterables"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/callbag", "repo": "callbag/callbag", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "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:05.888446+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.888446+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:57:35.526323+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ee830c0faed5950c703e7aad1e872c0093c692fb01c7b6f0d0eb303864144a4", "fetched_at": "2026-08-28T04:05:05.888446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/callbag/callbag"}, {"content_hash": "a7028b4f46a54aadf9de9fea601138e982f60b832be850755b7a66c6bfb18a90", "fetched_at": "2026-08-29T11:27:58.074844+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/callbag"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3148, "days_push": 1283, "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}}