@revas-hq/kit-container
v0.0.3
Published
A simple and lightweight service container for managing dependencies in TypeScript. This library allows you to register and retrieve services in a central container, making dependency injection and management easier in your applications.
Downloads
114
Readme
Service Container Library
A simple and lightweight service container for managing dependencies in TypeScript. This library allows you to register and retrieve services in a central container, making dependency injection and management easier in your applications.
Installation
To install the package, use npm or yarn:
npm install @revas-hq/kit-container
Usage
Here's how to use the service container in your project.
Create the Service Container
First, create a service container instance using the provided createServiceContainer function.
import { createServiceContainer } from "@revas-hq/kit-container";
const container = createServiceContainer();
Registering a Service
To register a service, use the setService method. The key is a string, and the value is the service instance (or any value you wish to store).
const myService = {
doSomething: () => console.log("Service doing something!"),
};
container.setService("myService", myService);
Retrieving a Service
To retrieve a service, use the getService method with the corresponding key.
const service = container.getService<typeof myService>("myService");
service.doSomething(); // Output: Service doing something!
Error Handling
If you try to retrieve a service that hasn't been registered, an error will be thrown:
container.getService("nonExistentService"); // Throws: "Service with key nonExistentService is not registered."
If you attempt to register a service with an already registered key, an error will also be thrown:
container.setService("myService", myService);
container.setService("myService", anotherService); // Throws: "Service with key myService is already registered."
You should not try/catch these errors, they are usually developers errors that needs to be fixed.
Example
import { createServiceContainer } from "@revas-hq/kit-container";
const container = createServiceContainer();
// Register a service
container.setService("myLogger", { log: (msg: string) => console.log(msg) });
// Retrieve the service and use it
const logger = container.getService<{ log: (msg: string) => void }>("myLogger");
logger.log("Hello, Service Container!"); // Output: Hello, Service Container!
License
This project is licensed under the MIT License. See the LICENSE file for details.