Swiftpack.co - AlbGarciam/DependencyInjection as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by AlbGarciam.
AlbGarciam/DependencyInjection 1.2.0
A library to inject your dependencies via property wrappers
โญ๏ธ 5
๐Ÿ•“ 1 week ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/AlbGarciam/DependencyInjection.git", from: "1.2.0")

๐Ÿ’‰ DependencyInjection

A library to inject your dependencies via property wrappers

Github Swift Swift Package Manager codecov

๐ŸŒŸ Features

DependencyInjection allows you to define the dependencies of your app. It exposes a property wrapper to make easier the injection in your instances. Every instance can be resolved at three different levels:

  • instance: Resolves a unique instance across the entire app
  • shared: Resolves the instance and allows it to be reused if it is needed on another object
  • global: The instance will act as a singleton

๐Ÿ— Usage

There are two separate steps when using DependencyInjection

Register dependecies

Starting on version 1.0.0 DependencyInjection makes use of Obj-C runtime to search the injection modules across the final module once the first injection is requested.

In order to declare your module you have to declare a class that conforms to ModuleContract and call it Module. Once this is done, DependencyInjection will consider it when building the injection structure as explained before.

final class Module: ModuleContract {
    static func get() {
        instance(TypeAContract.self, TypeA.self)
        shared(TypeBContract.self, TypeB.self)
        global(TypeCContract.self, TypeC.self)
    }
}

Injecting instance

To inject an instance you can just use the property wrapper:

protocol Definition: Injectable {}
class Implementation: Definition {}

@Injected var instance: Definition // It will be Implementation

๐Ÿ›  Compatibility

This library can be used on iOS, macOS, iPadOS, watchOS and tvOS as it only relies on Foundation framework

โš™๏ธ Installation

You can use the Swift Package Manager by declaring DependencyInjection as a dependency in your Package.swift file:

.package(url: "https://github.com/AlbGarciam/DependencyInjection", from: "0.1.0")

DependencyInjection exposes 2 versions of the library, a static and a dynamic version.

๐Ÿป Etc.

  • Contributions are very welcome.
  • Attribution is appreciated (let's spread the word!), but not mandatory.

๐Ÿ‘จโ€๐Ÿ’ป Author

Alberto Garcรญa โ€“ @AlbGarciam

๐Ÿ‘ฎโ€โ™‚๏ธ License

DependencyInjection is available under the MIT license. See the LICENSE file for more info.

GitHub

link
Stars: 5
Last commit: 1 week ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics