{"adoption": {"forks": 73, "observed_at": "2026-08-28T04:05:13.310074+00:00", "stars": 1628}, "canonical_url": "https://ross.abutalabs.com/products/taskjs", "card": {"archived": false, "artifact_type": "library", "description": "Beautiful concurrency for JavaScript", "domain": ["developer-tools", "web-development", "programming-languages"], "enriched": true, "function": ["concurrency", "http-client", "developer-tools"], "health_score": 20, "homepage": "http://taskjs.org", "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "abandoned", "member_repos": ["mozilla/task.js"], "name": "mozilla/task.js", "platform": ["browser", "cross-platform"], "pushed_at": "2019-03-28T03:38:53+00:00", "repo": "mozilla/task.js", "stars": 1628, "tags": ["generators", "async-io", "task-scheduler", "cooperative-concurrency", "es6", "callbacks", "nodejs", "javascript"], "topics": [], "urls": [], "use_cases": ["write async I/O without callbacks using generators", "run multiple I/O operations concurrently and join their results", "add timeouts to async operations with try/catch error handling", "avoid callback pyramids in pre-async/await JavaScript engines", "coordinate tasks with first-class synchronizable events"], "what_it_is": "task.js is a JavaScript library built on ES6 generators that provides a cooperative task scheduler and synchronizable events, enabling non-blocking I/O written in a synchronous style without callbacks. It was an early Mozilla experiment in making asynchronous JavaScript code look and read like sequential code.", "when_to_avoid": ["you are starting a new project - use native async/await and Promises instead", "you need a maintained library with active support or security updates", "your runtime already supports modern async syntax, which makes task.js redundant"], "when_to_choose": ["you are stuck maintaining legacy JavaScript that must run on engines without async/await", "you want a minimal, educational example of generator-based cooperative scheduling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/taskjs", "repo": "mozilla/task.js", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "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:13.310074+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.310074+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:48:20.552866+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2a4ef282f0922361fff5d126c75bae1bd6f528e3ed4e9f08bd7a4111a5c6657a", "fetched_at": "2026-08-28T04:05:13.310074+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla/task.js"}, {"content_hash": "9ee39d3caf961a19491a26129baf9f872fe366e9e03677a168946996bdc7d8e7", "fetched_at": "2026-08-29T11:21:19.051845+00:00", "kind": "homepage", "missing": false, "url": "http://taskjs.org"}, {"content_hash": "1f30b041f83901cbfafd4b9e8ecc747690b803a1caeeb2a993b1ab97644084c6", "fetched_at": "2026-08-29T11:21:19.061003+00:00", "kind": "site_page", "missing": false, "url": "https://taskjs.org/a-propos"}], "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": 5804, "days_push": 2715, "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}}