{"adoption": {"forks": 369, "observed_at": "2026-08-28T04:10:41.194274+00:00", "stars": 10240}, "canonical_url": "https://ross.abutalabs.com/products/fantasy-land", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Specification for interoperability of common algebraic structures in JavaScript", "domain": ["programming-languages", "developer-tools"], "enriched": true, "function": ["serialization", "developer-tools"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["fantasyland/fantasy-land"], "name": "fantasyland/fantasy-land", "platform": ["cross-platform"], "pushed_at": "2024-11-10T21:50:53+00:00", "repo": "fantasyland/fantasy-land", "stars": 10240, "tags": ["functional-programming", "algebraic-structures", "specification", "functor", "monad", "monoid", "typeclasses", "interoperability", "algorithms", "nodejs", "javascript"], "topics": ["javascript", "fantasy-land", "functional", "specification"], "urls": [], "use_cases": ["make my JavaScript library's data types interoperable with other functional libraries", "understand what laws a monad or functor must satisfy in JavaScript", "implement algebraic data types that work across fp libraries", "find the standard method names for chain, ap, map, concat in JS", "check whether my functional library complies with a known spec", "learn functional programming concepts like semigroup and traversable"], "what_it_is": "Fantasy Land is a specification (not a runtime library) defining how common algebraic structures like functors, monads, monoids, and semigroups should interoperate in JavaScript. It provides laws and method contracts that functional programming libraries can implement for compatibility.", "when_to_avoid": ["you want a runtime library with working implementations of monads or functors - use libraries like Sanctuary, fp-ts, or Ramda instead", "you are not doing functional programming in JavaScript", "you need executable code rather than a specification"], "when_to_choose": ["you are building a JavaScript functional programming library and want interoperability with the ecosystem", "you need a canonical reference for algebraic structure laws and method contracts", "you want to verify or test that your types follow functor/monad laws"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fantasy-land", "repo": "fantasyland/fantasy-land", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "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:41.194274+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.194274+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:19:28.526148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "037727f2de351972a284bf8bf68fd0977ff2e4307d5527077b08287efcfce65d", "fetched_at": "2026-08-28T04:10:41.194274+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fantasyland/fantasy-land"}, {"content_hash": "7d3b540add00cdc82c4b6dae8a09ca0e67a86e19864c69772663f265b9dddccc", "fetched_at": "2026-08-29T08:19:14.440705+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/fantasy-land"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4891, "days_push": 661, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}