{"adoption": {"forks": 356, "observed_at": "2026-08-28T04:05:57.202938+00:00", "stars": 1938}, "canonical_url": "https://ross.abutalabs.com/products/nullsafe", "card": {"archived": false, "artifact_type": "library", "description": "NullSafe is a simple category on NSNull that returns nil for unrecognised messages instead of throwing an exception", "domain": ["developer-tools", "mobile-development"], "enriched": true, "function": ["error-handling", "serialization"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["nicklockwood/NullSafe"], "name": "nicklockwood/NullSafe", "platform": [], "pushed_at": "2023-08-14T15:29:54+00:00", "repo": "nicklockwood/NullSafe", "stars": 1938, "tags": ["objective-c", "nsnull", "crash-prevention", "ios", "macos"], "topics": [], "urls": [], "use_cases": ["prevent crashes from null values in JSON responses", "make NSNull tolerate unrecognized method calls", "handle nulls in plist parsing safely", "avoid exceptions when network data contains null instead of arrays or strings"], "what_it_is": "NullSafe is a small Objective-C category on NSNull that returns nil for unrecognized messages instead of throwing an exception. It prevents common crashes caused by unexpected null values in JSON or plist data.", "when_to_avoid": ["you are writing new code in Swift where optionals already handle nulls", "you prefer explicit null handling over runtime message interception", "your project targets modern platforms where NSNull misuse is rare"], "when_to_choose": ["you maintain a legacy Objective-C iOS or macOS app that crashes on unexpected JSON nulls", "you want a drop-in single-file fix with no header includes", "you need ARC and non-ARC compatibility"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nullsafe", "repo": "nicklockwood/NullSafe", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "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:57.202938+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.202938+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:08:13.412852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7f5a8483f336545e413abe861f7df974dc781448765a687c1fa7a7c31fb6d4d", "fetched_at": "2026-08-28T04:05:57.202938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nicklockwood/NullSafe"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+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": 5005, "days_push": 1115, "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}}