awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
jeffijoe avatar

jeffijoe/awilix

0
View on GitHub↗
4,088 stars·144 forks·TypeScript·mit·26 views

Awilix

Awilix is a JavaScript dependency injection framework and inversion of control container. It provides a centralized system for registering and resolving services, decoupling application components by automating how dependencies are created and passed to the functions or classes that require them.

The framework features an automatic module loader that scans the filesystem using glob patterns to register dependencies based on filenames and exports. It supports parameter-name-based injection and proxy-based resolution to manage how dependencies are delivered to constructors and functions.

The system manages object lifecycles through singleton and transient patterns, including hierarchical container scoping for request-specific state. It includes capabilities for resource disposal, dependency lifetime validation, and registration verification to ensure resolution correctness.

Features

  • Dependency Injection Containers - Provides a centralized inversion of control container to decouple components and automate service resolution.
  • Dependency Injection - Decouples application components by automating how services are created and passed to the classes or functions that need them.
  • Dependency Lifecycle Management - Manages whether services are created as singletons or recreated on every request.
  • Dependency Scoping - Generates child containers with private caches to allow for request-specific state scoping.
  • Automatic Dependency Discovery - Implements an automatic module loader that scans the filesystem using glob patterns to register dependencies based on filenames and exports.
  • Constructor Injection - Injects required dependencies into constructors and functions using parameter parsing or proxy objects.
  • Dependency Injection - Maps identifiers to values, functions, or classes to be managed and injected across the application.
  • Dependency Injection Frameworks - Implements a framework for decoupling components by registering and resolving services through a central registry.
  • Dependency Resolution - Retrieves registered dependencies by name while utilizing type inference to ensure correct object shapes.
  • Automatic Dependency Loaders - Ships a utility that scans the filesystem using glob patterns to automatically register classes and functions.
  • Filesystem Scanning - Provides an automatic module loader that scans the filesystem using glob patterns to register dependencies.
  • Inversion-of-Control Containers - Manages object lifecycles and dependencies via constructor injection and hierarchical scoped containers.
  • Object Lifetime Management - Controls whether objects are recreated on every request, cached within a scope, or maintained as a singleton.
  • Parameter-Name Injection - Resolves dependencies by parsing constructor or function parameter names and matching them to registered keys.
  • Automatic Dependency Registrations - Automates the discovery and registration of services within the dependency injection container via filesystem scanning.
  • Service Lifetime Scopes - Manages object instantiation cycles through singleton, scoped, and transient lifetimes.
  • Scoped State Containers - Supports hierarchical container scoping to maintain private instance caches for request-specific state.
  • Dependency Resource Disposal - Provides mechanisms to execute registered cleanup functions and clear resolver caches to close connection pools and other system resources.
  • Lifetime Consistency Validation - Validates that dependencies do not have shorter lifetimes than the modules they are injected into to prevent stale data.
  • Modular Architecture - Organizes large codebases by separating service definitions from their instantiation and wiring logic.
  • Resolution Integrity Enforcement - Throws runtime errors when dependencies have shorter lifetimes than their ancestors or when singletons are registered in child scopes.
  • Proxy-Based Resolution - Provides a proxy object to modules that dynamically resolves requested dependencies on demand.
  • Recursive Dependency Resolution - Implements recursive resolution to construct complex dependency graphs for service instantiation.
  • Resource Lifecycle Managers - Tracks instantiated dependencies and executes cleanup functions when a scope is destroyed.

Star history

Star history chart for jeffijoe/awilixStar history chart for jeffijoe/awilix

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does jeffijoe/awilix do?

Awilix is a JavaScript dependency injection framework and inversion of control container. It provides a centralized system for registering and resolving services, decoupling application components by automating how dependencies are created and passed to the functions or classes that require them.

What are the main features of jeffijoe/awilix?

The main features of jeffijoe/awilix are: Dependency Injection Containers, Dependency Injection, Dependency Lifecycle Management, Dependency Scoping, Automatic Dependency Discovery, Constructor Injection, Dependency Injection Frameworks, Dependency Resolution.

What are some open-source alternatives to jeffijoe/awilix?

Open-source alternatives to jeffijoe/awilix include: microsoft/tsyringe — tsyringe is a TypeScript dependency injection container and inversion of control framework. It decouples class… ets-labs/python-dependency-injector — This is a dependency injection framework and inversion of control container for Python. It decouples object creation… derekyrc/mini-spring — mini-spring is a Java dependency injection framework and inversion of control container. It manages the full lifecycle… typestack/typedi — TypeDI is a TypeScript dependency injection container and inversion of control tool. It functions as a centralized… autofac/autofac — Autofac is a dependency injection framework and inversion of control container for .NET. It functions as a component… liangxiegame/qframework — QFramework is a Unity game architecture framework designed to separate presentation, system, and data logic. It…

Open-source alternatives to Awilix

Similar open-source projects, ranked by how many features they share with Awilix.
  • microsoft/tsyringemicrosoft avatar

    microsoft/tsyringe

    5,960View on GitHub↗

    tsyringe is a TypeScript dependency injection container and inversion of control framework. It decouples class implementations from object creation by managing dependencies and object lifecycles using decorators and metadata. The framework features a hierarchical container system where child containers can maintain independent registration scopes and fall back to parent containers for dependency resolution. It provides a provider system that controls object longevity through singleton and transient instantiation rules. The system supports recursive constructor injection and handles circular

    TypeScriptcontainerdecoratorsdependency
    View on GitHub↗5,960
  • ets-labs/python-dependency-injectorets-labs avatar

    ets-labs/python-dependency-injector

    4,805View on GitHub↗

    This is a dependency injection framework and inversion of control container for Python. It decouples object creation from business logic by managing how services and their dependencies are assembled, delivered, and linked within an application. The framework is distinguished by its ability to perform automated component wiring, using import hooks and decorators to inject dependencies into functions and classes across different modules. It supports non-blocking flows through an asynchronous dependency resolver and manages the initialization and shutdown sequences of shared external resources a

    Pythonaiohttpasynciodependency-injection
    View on GitHub↗4,805
  • derekyrc/mini-springDerekYRC avatar

    DerekYRC/mini-spring

    6,360View on GitHub↗

    mini-spring is a Java dependency injection framework and inversion of control container. It manages the full lifecycle of beans, including instantiation, property population, and scope management, while providing a system for automating the wiring of components. The project implements a Java AOP framework that uses dynamic proxies to intercept method calls for cross-cutting logic. It also functions as a Java component scanner to automatically discover and register managed objects via annotations and as a Java event bus to decouple components through a publish-subscribe multicast system. The

    Javamini-springspringspring-boot
    View on GitHub↗6,360
  • typestack/typeditypestack avatar

    typestack/typedi

    4,242View on GitHub↗

    TypeDI is a TypeScript dependency injection container and inversion of control tool. It functions as a centralized registry and service locator that manages object instantiation and decouples component dependencies using type inference and decorators. The project provides scoped dependency management to isolate service instances within specific contexts, preventing data leakage between different execution flows. It supports flexible service resolution through the use of type-safe tokens and the ability to map unique identifiers or class constructors to specific service instances. The contain

    TypeScriptdependency-injectioninversion-of-controlioc
    View on GitHub↗4,242
See all 30 alternatives to Awilix→