{"adoption": {"forks": 133, "observed_at": "2026-08-28T04:05:04.186042+00:00", "stars": 1564}, "canonical_url": "https://ross.abutalabs.com/products/node-rate-limiter", "card": {"archived": false, "artifact_type": "library", "description": "A generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled", "domain": ["developer-tools", "web-development", "backend", "apis"], "enriched": true, "function": ["rate-limiting", "caching"], "health_score": 32, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["jhurliman/node-rate-limiter"], "name": "jhurliman/node-rate-limiter", "platform": ["browser", "cross-platform"], "pushed_at": "2025-05-08T04:16:29+00:00", "repo": "jhurliman/node-rate-limiter", "stars": 1564, "tags": ["token-bucket", "throttling", "api-client", "web-crawling", "typescript", "nodejs"], "topics": [], "urls": [], "use_cases": ["throttle api requests to stay under rate limits", "rate limit outgoing http requests in nodejs", "implement token bucket throttling with burst support", "return 429 responses when clients exceed limits", "slow down web crawling requests", "limit messages sent per second"], "what_it_is": "A generic rate limiting library for Node.js and the web, exposing RateLimiter and TokenBucket classes for throttling tasks like API requests or web crawling. It supports configurable intervals, burst rates, and both async and synchronous token removal.", "when_to_avoid": ["you need distributed rate limiting shared across multiple servers or processes", "you need a reverse proxy or API gateway-level rate limiter", "you need persistent rate limit state across restarts"], "when_to_choose": ["you need in-process rate limiting for API clients or crawlers in Node.js", "you want token bucket semantics with configurable burst and drip rates", "you need both async waiting and synchronous try-style token removal"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/node-rate-limiter", "repo": "jhurliman/node-rate-limiter", "role": "main", "score": 41}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "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:04.186042+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.186042+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:00:13.630336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05203440af98124abba6298d774e1823daa1a083d839562b916bc954193c729b", "fetched_at": "2026-08-28T04:05:04.186042+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jhurliman/node-rate-limiter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 20, "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": 5386, "days_push": 482, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 41, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}