Repolode
hmlongco

hmlongco/Factory

Contenedor de inyección de dependencias para Swift y SwiftUI que registra fábricas como propiedades computadas e incluye scopes, contextos y mocks para pruebas.

Estrellas
2,929
Forks
193
Issues abiertos
1
Último commit
hace 9 días

¿Qué es?

Factory es una biblioteca de inyección de dependencias basada en contenedores para Swift y SwiftUI. Defines un servicio como una propiedad computada de un Container que devuelve un Factory y luego lo solicitas mediante un wrapper de propiedad @Injected, una llamada directa a una función o una función global de dependencias. El compilador comprueba que haya una fábrica para cada tipo inyectado, de modo que las registraciones faltantes provocan errores de compilación en lugar de errores en tiempo de ejecución.

La biblioteca cubre las necesidades habituales de los sistemas de inyección de dependencias: scopes como singleton, cached, shared y scopes de sesión personalizados controlan cuánto tiempo viven las instancias; los contextos permiten cambiar las implementaciones en compilaciones de depuración, pruebas unitarias, vistas previas de SwiftUI o pruebas de UI. Sobrescribir una registración con un mock requiere una sola llamada, lo que facilita configurar vistas previas y casos de XCTest o Swift Testing.

Factory también funciona con Observation, @MainActor y el aislamiento de concurrencia de Swift, e incluye un modo de depuración que muestra el árbol de resolución. Se distribuye mediante Swift Package Manager con licencia MIT.

Funciones clave

  • 01Registra servicios como propiedades computadas de un Container y comprueba en tiempo de compilación que no falte ninguna fábrica.
  • 02Ofrece wrappers de propiedad, llamadas directas a fábricas y funciones globales de dependencias para resolverlas.
  • 03Admite scopes como singleton, cached, shared y scopes personalizados.
  • 04Proporciona contextos para depuración, pruebas unitarias, vistas previas de SwiftUI y pruebas de UI que permiten cambiar las implementaciones.
  • 05Funciona con contenedores basados en escenas de SwiftUI, Observation y el aislamiento de @MainActor.
  • 06Incluye un registro de depuración que muestra el árbol de resolución de dependencias.

Casos de uso

  • Inyectar servicios y repositorios en vistas y modelos de vista de SwiftUI.
  • Reemplazar servicios de red o analítica por mocks en vistas previas de SwiftUI.
  • Escribir pruebas unitarias para los estados de carga, vacío y error mediante la sobrescritura de dependencias.
  • Estructurar una app de iOS con arquitecturas MVVM, MVP, Clean o VIPER.

Antes de usarlo

  • Solo es para proyectos Swift, por lo que no se aplica a otros lenguajes.

En colecciones

Temas

Preguntas frecuentes

¿Qué es Factory?
Contenedor de inyección de dependencias para Swift y SwiftUI que registra fábricas como propiedades computadas e incluye scopes, contextos y mocks para pruebas. Factory es una biblioteca de inyección de dependencias basada en contenedores para Swift y SwiftUI. Defines un servicio como una propiedad computada de un Container que devuelve un Factory y luego lo solicitas mediante un wrapper de propiedad @Injected, una llamada directa a una función o una función global de dependencias. El compilador comprueba que haya una fábrica para cada tipo inyectado, de modo que las registraciones faltantes provocan errores de compilación en lugar de errores en tiempo de ejecución.
¿Factory es gratuito? ¿Qué licencia tiene?
Factory es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿Factory sigue mantenido?
Mantenimiento activo. El último commit de Factory fue el 28 oct 2026.
¿Para qué puedo usar Factory?
Inyectar servicios y repositorios en vistas y modelos de vista de SwiftUI. Reemplazar servicios de red o analítica por mocks en vistas previas de SwiftUI. Escribir pruebas unitarias para los estados de carga, vacío y error mediante la sobrescritura de dependencias. Estructurar una app de iOS con arquitecturas MVVM, MVP, Clean o VIPER.
¿Dónde consigo Factory?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hmlongco/Factory

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados