
Research
/Security News
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
@dtty/simpldi
Advanced tools
A simple dependency injection library for typescript projects.
This library requires the reflect-metadata
package to function properly.
Add the line import 'reflect-metadata';
to the top of you entry file (e.g. index.js).
npm i @dtty/simpldi reflect-metadata
Unlike many other dependency injection libraries for Typescript projects, @dtty/simpldi
requires developers to manage the container lifecycle themselvs.
While some may consider this a burden, it ultimately allows for far more flexible configurations and a simpler API to engage with.
// Basic usage
const rootContainer = new Container();
// Add a simple provider
rootContainer.addProvider(simpleToken, SimpleProviderClass);
// Add a transient provider
rootContainer.addProvider(transientToken, TransientProviderClass, {
mode: ProviderMode.TRANSIENT,
});
// Fetch a provider
const instance = await rootContainer.resolveProvider(simpleToken);
Tokens in @dtty/simpldi
are used in place of magic strings for dependency resolution.
This enables stricter type checking when manually resolving dependencies.
// Create a token
const token = new Token<SimpleProviderClass>();
// Optionall, add a name to the token
const tokenWithName = new Token<SimpleProviderClass>("My Name");
By default, all providers in the container are registered as singletons.
This behavior can be optionally changed by setting mode: ProviderMode.TRANSIENT
when registering a provider.
Transient providers will be re-initialized each time they are resolved, ensuring all downstream providers recieve a fresh instance.
Providers are always scoped to their container but can depend on providers from a parent container. Creating a child container allows developers to scope specific providers to the lifetime of the container. for example the use of a child container for request-specific providers in a web server.
// Start with a root
const rootContainer = new Container();
// And spawn a child
const childContainer = rootContainer.createChildContainer();
By default, all providers a lazy loaded into the container, meaning that provider instances are only created when the are needed. Lazy loading enables a faster application start time and ensures that only the relevant classes are created, cutting down on overhead.
Below are ways to hook into the provider lifecycle.
By implementing the IOnProviderInit
interface, a provider adds a lifecycle method that is called whenever the provider instance is resolved in the container.
This can be useful for bootstrapping common providers like database connections that require an asynchronous interaction after creation.
FAQs
Simple and compact Dependency Injection library for TS
The npm package @dtty/simpldi receives a total of 0 weekly downloads. As such, @dtty/simpldi popularity was classified as not popular.
We found that @dtty/simpldi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.