{"adoption": {"forks": 857, "observed_at": "2026-08-28T04:08:16.126969+00:00", "stars": 3746}, "canonical_url": "https://ross.abutalabs.com/products/adapter", "card": {"archived": false, "artifact_type": "library", "description": "Shim to insulate apps from spec changes and prefix differences. Latest adapter.js release:", "domain": ["web-development", "browser-extensions", "cross-platform"], "enriched": true, "function": ["middleware", "developer-tools"], "health_score": 97, "homepage": "https://webrtcHacks.github.io/adapter/adapter-latest.js", "language": "JavaScript", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["webrtcHacks/adapter"], "name": "webrtcHacks/adapter", "platform": ["browser"], "pushed_at": "2026-08-23T14:27:00+00:00", "repo": "webrtcHacks/adapter", "stars": 3746, "tags": ["webrtc", "polyfill", "shim", "browser-compatibility", "real-time-communication", "nodejs", "javascript"], "topics": ["webrtc", "webrtc-adapter", "polyfill"], "urls": [], "use_cases": ["make WebRTC apps work consistently across Chrome, Firefox, and Safari", "handle browser prefix differences in getUserMedia and RTCPeerConnection", "detect which browser and WebRTC quirks the user needs", "polyfill older browsers with nonstandard WebRTC APIs", "build video chat apps without writing per-browser code"], "what_it_is": "adapter.js is a JavaScript shim that insulates WebRTC applications from spec changes and browser prefix/behavior differences. It normalizes the WebRTC API across browsers and exposes browser detection details.", "when_to_avoid": ["you only target a single modern browser with no legacy quirks", "your app does not use WebRTC at all", "you need a full WebRTC implementation rather than an API shim"], "when_to_choose": ["you are building a WebRTC-based app that must support multiple browsers", "you want a maintained shim instead of hand-rolled browser detection", "you need consistent behavior for getUserMedia, RTCPeerConnection, and related APIs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/adapter", "repo": "webrtcHacks/adapter", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "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:08:16.126969+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.126969+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:29:03.414801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44b84ac653d579d9e35cb2c76e171a71a4eec2e65ce2abbb7d1d28e6411e2d6d", "fetched_at": "2026-08-28T04:08:16.126969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webrtcHacks/adapter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 68}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4234, "days_push": 10, "days_rel": 137, "gap_med": 55, "n_releases_24m": 4}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}