hmlongco/Resolver
54.1
Adequate · 1 October 2026
841
lines of production code
Swift
primary language
2
measurements over time
What this system is
Resolver is a dependency injection framework for Swift applications that provides a registry for registering and resolving services with support for hierarchical containers, named registrations, and various object scopes. It offers compile-time safe property wrappers for injection and integrates with iOS, macOS, tvOS, watchOS, and visionOS platforms. The system has been superseded by a newer, lighter Factory-based dependency injection system, with Resolver now deprecated in favor of this successor.
Features
Added Jazzy-generated API documentation
The repository now includes a complete, Jazzy-generated HTML reference for the Resolver library. This documentation covers the core \Resolver\ class, \ResolverOptions\, and \ResolverRegistration\, as well as the various scope implementations (\ResolverScopeApplication\, \ResolverScopeCache\, \ResolverScopeGraph\, \ResolverScopeShare\, \ResolverScopeUnique\) and the \UIViewController\ extension, providing a navigable reference for developers.
Documentation/API · high confidence
Added Xcode workspace configuration for Swift Package Manager
A new Xcode workspace file (contents.xcworkspacedata) has been added to the .swiftpm directory. This file configures the workspace to reference the local package, enabling developers to open and edit the Swift package directly within Xcode.
.swiftpm · high confidence
Initial release of Resolver 0.9 dependency injection framework
This change introduces the initial version (0.9) of the Resolver framework, a dependency injection library for Swift. The commit establishes the core project structure, including the main \Resolver.swift\ source file, a comprehensive suite of unit tests (covering basic resolution, containers, scopes, names, and storyboards), and extensive documentation covering installation, registration, resolving, and various DI strategies. It also sets up the Xcode project configuration to build the Resolver as a framework.
Resolver/Resolver.xcodeproj · high confidence
Introduction of Resolver dependency injection framework
The Sources/Resolver directory now contains the core Resolver.swift file, introducing a dependency injection registry for Swift applications. This change adds the ability to register services with factories, resolve instances by type and optional name, and manage hierarchical containers via child scopes. It includes property wrappers for injection, support for multiple arguments in factory closures, and thread-safe access to registrations and caches, effectively establishing the foundational DI capabilities for the project.
Sources/Resolver · high confidence
Behavioural changes
Added privacy manifest and framework header for Resolver 1.1.3
The Resolver framework now includes a PrivacyInfo.xcprivacy manifest declaring no data collection, tracking, or API usage, and a Resolver.h header exposing the framework's version number and string constants for external consumers.
Sources · high confidence
Deprecation notice for Resolver in favor of Factory
The README now explicitly states that Resolver is officially deprecated and recommends using the new dependency injection system, Factory, which is described as a compile-time safe, smaller, lighter, and faster container-based alternative. This change updates the project's primary documentation to guide users toward the successor framework.
(repo-wide) · high confidence
Updated Xcode project configuration and test schemes
The Resolver.xcodeproj has been regenerated to support Xcode 12.5, including new project and test info plists, workspace settings, and build schemes. The test scheme now explicitly enables code coverage, and the project structure includes references to cyclic dependency and injected property wrapper tests.
Resolver.xcodeproj · medium confidence
Test coverage
Initial test suite for Resolver dependency injection; Initial test suite for Resolver dependency injection framework.
Dependencies
Add Swift Package Manager support and update CocoaPods version
The Resolver library now supports installation via Swift Package Manager (SPM), introducing a new Package.swift manifest and a resolved dependency file (Package.resolved) that pins the swift-docc-plugin. The library is configured to build as static, dynamic, or automatic libraries and targets iOS 12, macOS 10.14, tvOS 13, watchOS 8, and visionOS 1. Additionally, the CocoaPods podspec has been updated to version 1.5.1 to align with the latest release.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 55 → 54 (-0.9)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 50 → 50 (+0.0)
- Readiness 43 → 43 (+0.4)
- Security 81 → 81 (+0.0)
Resolved (2)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (4)
- Coverage not measured — Swift suite
- Three distinct register overloads exist with similarly named factory types (ResolverFactory, ResolverFactoryResolver, ResolverFactoryArgumentsN). It is unclear what differentiates these factory types (e.g., argument count vs. resolution strategy), leading to potential confusion for users choosing the correct overload.
- Two overloads of resolveProperties exist with similarly named mutator types (ResolverFactoryMutator vs ResolverFactoryMutatorArgumentsN). This mirrors the inconsistency in the register methods and suggests an arbitrary split in API design.
- Two properties, application and cached, both return the same type ResolverScopeCache. This implies they are aliases or identical in behavior, which is confusing naming. If they are identical, one should be deprecated. If they differ, they should return distinct types or have distinct behaviors documented.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
hmlongco/Resolver was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d49d02cf6df2793885b4040242ec53990c563c76 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.