SuperAPI AI Directory

dependency injection setup

Coding & development

View repository

Updated 10-16 04:26

About this skill

Dependency Injection Setup

Instructions

Add new services to Leavn's DIContainer:

  1. Create service protocol:

    // Services/MyDomain/MyServiceProtocol.swift
    public protocol MyServiceProtocol {
        func doSomething() async throws -> Result
    }
    
  2. Create implementation:

    // Services/MyDomain/MyServiceLive.swift
    public final class MyServiceLive: MyServiceProtocol {
        public init() { }
    
   public func doSomething() async throws -> Result {
       // Implementation
   }

}


3. **Register in DIContainer**:
```swift
// For singletons (stateful services):
private lazy var _myService = MyServiceLive()
var myService: MyServiceProtocol {
    _myService
}

// For factories (stateless services):
var myService: MyServiceProtocol {
    MyServiceLive()
}
  1. Use in ViewModels:
    let service = DIContainer.shared.myService
    

Use this skill when: Creating new service, adding dependency, setting up DI, refactoring to protocol-oriented design