{"adoption": {"forks": 55, "observed_at": "2026-08-28T04:03:49.727303+00:00", "stars": 1163}, "canonical_url": "https://ross.abutalabs.com/products/memoize", "card": {"archived": false, "artifact_type": "library", "description": "Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input", "domain": ["developer-tools", "performance"], "enriched": true, "function": ["caching", "concurrency"], "health_score": 94, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sindresorhus/memoize"], "name": "sindresorhus/memoize", "platform": ["browser", "bun"], "pushed_at": "2026-07-21T16:42:15+00:00", "repo": "sindresorhus/memoize", "stars": 1163, "tags": ["memoization", "typescript", "ttl-cache", "function-optimization", "npm", "javascript", "nodejs", "deno"], "topics": [], "urls": [], "use_cases": ["memoize expensive function calls in javascript", "cache function results by input arguments", "add ttl expiration to memoized functions", "speed up repeated function calls with same arguments", "memoize functions with custom cache keys", "avoid recomputing pure function results"], "what_it_is": "A TypeScript library for memoizing functions, caching results of calls with identical input to speed up consecutive invocations. It supports TTL-based expiration, custom caching strategies, and automatic memory release.", "when_to_avoid": ["you need to memoize promise-returning functions with promise-specific behaviors - use p-memoize instead", "you need a distributed or persistent cache rather than in-memory function memoization", "your functions have side effects and caching results would be incorrect"], "when_to_choose": ["you need lightweight function-level caching in Node.js or the browser", "you want TTL-based cache expiration with automatic memory cleanup", "you need customizable caching strategies like multi-argument keys or WeakMap caching", "you prefer a small, well-maintained ESM package"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/memoize", "repo": "sindresorhus/memoize", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "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:03:49.727303+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.727303+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:31:35.258911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5bee2ac5e6345d7ccb1bc45b3be74d187c7b754713b74a05ad86ab6c5470785", "fetched_at": "2026-08-28T04:03:49.727303+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/memoize"}, {"content_hash": "7b34e201ab0fb3baf0f38d880ef004b3ea98cdaac3c1cc59ad05ab81d33b7d3f", "fetched_at": "2026-08-29T12:36:05.491062+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/memoize"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 43}, "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": 3908, "days_push": 43, "days_rel": 167, "gap_med": 196.0, "n_releases_24m": 3}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}