{"adoption": {"forks": 778, "observed_at": "2026-08-28T04:10:50.179918+00:00", "stars": 11841}, "canonical_url": "https://ross.abutalabs.com/products/co", "card": {"archived": false, "artifact_type": "library", "description": "The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc)", "domain": ["developer-tools", "backend"], "enriched": true, "function": ["concurrency", "developer-tools"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["tj/co"], "name": "tj/co", "platform": ["browser"], "pushed_at": "2020-12-15T07:22:26+00:00", "repo": "tj/co", "stars": 11841, "tags": ["async-control-flow", "generators", "coroutines", "promises", "thunks", "legacy-async", "algorithms", "nodejs", "javascript"], "topics": [], "urls": [], "use_cases": ["write async nodejs code with generators instead of callbacks", "run multiple promises in parallel with yield on arrays or objects", "wrap generator functions into promise-returning functions", "handle async errors with try/catch in generator code", "support thunks and promises in a unified async flow"], "what_it_is": "co is a JavaScript library for Node.js and the browser that provides generator-based async control flow, letting you write non-blocking code using yield with promises, thunks, arrays, objects, and generators. It was a precursor to async/await and returns promises from co() calls.", "when_to_avoid": ["writing new code on modern Node.js or browsers with native async/await", "you need actively developed async tooling", "your environment lacks generator support and you don't want transpilation"], "when_to_choose": ["maintaining legacy Node.js codebases that predate async/await", "running on very old Node versions or browsers without async/await support", "you prefer generator-based coroutine style over promise chains"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/co", "repo": "tj/co", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "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:10:50.179918+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:50.179918+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:15:16.978781+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f2a46cce77cc5fabc89be2cda96a83888480fe9634d380c45c89cf43b067d8d", "fetched_at": "2026-08-28T04:10:50.179918+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tj/co"}, {"content_hash": "10379d7fd784211c46d30e2ca22bb2749a6206424e49c46ffa8243b18cb484a2", "fetched_at": "2026-08-29T08:13:29.372043+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/co"}], "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": 4836, "days_push": 2087, "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}}