@needle-di/core 0.8.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,8 @@
5
5
  [![NPM version](http://img.shields.io/npm/v/@needle-di/core.svg)](https://www.npmjs.com/package/@needle-di/core)
6
6
  [![JSR version](http://img.shields.io/jsr/v/@needle-di/core.svg)](https://jsr.io/@needle-di/core)
7
7
  [![NPM downloads](https://img.shields.io/npm/dm/@needle-di/core)](https://www.npmjs.com/package/@needle-di/core)
8
- [![Build status](https://github.com/needle-di/core/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/needle-di/core/actions/workflows/main.yml)
8
+ [![Build status](https://img.shields.io/github/actions/workflow/status/needle-di/core/ci.yml?branch=main&style=flat)](https://github.com/needle-di/core/actions/workflows/ci.yml)
9
+ [![Coverage](https://gist.githubusercontent.com/dirkluijk/db6fbd0d0d4c138655a89386c5bdbe41/raw/badge.svg)](https://github.com/needle-di/core/actions/workflows/ci.yml)
9
10
 
10
11
  Needle DI is a lightweight, TypeScript-first library for dependency injection (DI). It is designed to be both easy to use and highly efficient.
11
12
 
@@ -15,7 +16,7 @@ Needle DI is a lightweight, TypeScript-first library for dependency injection (D
15
16
  - Intended for both JavaScript-only and TypeScript projects
16
17
  - Supports [tree-shakeable injection tokens](https://needle-di.io/advanced/tree-shaking.html): optimize your builds for production.
17
18
  - Inspired by [Angular](https://angular.dev/) and [InversifyJS](https://github.com/inversify/InversifyJS), familiar to developers coming from these frameworks.
18
- - Uses native [ECMAScript TC39 decorators](https://github.com/tc39/proposal-decorators) (currently stage 3)
19
+ - Uses native [ECMAScript decorators](https://github.com/tc39/proposal-decorators) (currently stage 3)
19
20
  - No need for `experimentalDecorators` and `emitDecoratorMetadata`
20
21
  - No reflection libraries needed, like `reflect-metadata` or other reflection mechanisms.
21
22
 
@@ -55,6 +56,12 @@ Check out the [docs](https://needle-di.io/concepts/binding.html) to learn more!
55
56
  npm install --save @needle-di/core
56
57
  ```
57
58
 
59
+ Needle DI also works with [Deno](https://deno.com/) and is published to [JSR](https://jsr.io/@needle-di/core) as well:
60
+
61
+ ```bash
62
+ deno add jsr:@needle-di/core
63
+ ```
64
+
58
65
  ## Docs
59
66
 
60
67
  Check out our docs on [https://needle-di.io](https://needle-di.io/concepts/binding.html).
@@ -1,8 +1,13 @@
1
- import { type Token } from "./tokens.js";
2
- import { type Provider } from "./providers.js";
1
+ import { type Token } from "./tokens.ts";
2
+ import { type Provider } from "./providers.ts";
3
+ /**
4
+ * A dependency injection (DI) container will keep track of all bindings
5
+ * and hold the actual instances of your services.
6
+ */
3
7
  export declare class Container {
4
8
  private readonly providers;
5
9
  private readonly singletons;
10
+ constructor();
6
11
  bindAll<A>(p1: Provider<A>): this;
7
12
  bindAll<A, B>(p1: Provider<A>, p2: Provider<B>): this;
8
13
  bindAll<A, B, C>(p1: Provider<A>, p2: Provider<B>, p3: Provider<C>): this;
package/dist/container.js CHANGED
@@ -2,9 +2,19 @@ import { isClassToken, toString, isInjectionToken } from "./tokens.js";
2
2
  import { isClassProvider, isFactoryProvider, isConstructorProvider, isValueProvider, isAsyncFactoryProvider, isMultiProvider, isExistingProvider, } from "./providers.js";
3
3
  import { getInjectableTargets, isInjectable } from "./decorators.js";
4
4
  import { assertPresent, getParentClasses, windowedSlice } from "./utils.js";
5
+ /**
6
+ * A dependency injection (DI) container will keep track of all bindings
7
+ * and hold the actual instances of your services.
8
+ */
5
9
  export class Container {
6
10
  providers = new Map();
7
11
  singletons = new Map();
12
+ constructor() {
13
+ this.bind({
14
+ provide: Container,
15
+ useValue: this,
16
+ });
17
+ }
8
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
19
  bindAll(...providers) {
10
20
  providers.forEach((it) => this.bind(it));
@@ -66,7 +76,7 @@ export class Container {
66
76
  if (providers.some(isAsyncFactoryProvider)) {
67
77
  throw new AsyncProvidersInSyncInjectionContextError(token);
68
78
  }
69
- this.singletons.set(token, providers.flatMap((it) => this.construct(it, this)));
79
+ this.singletons.set(token, providers.flatMap((it) => this.construct(it)));
70
80
  }
71
81
  const singletons = assertPresent(this.singletons.get(token));
72
82
  if (multi) {
@@ -92,7 +102,7 @@ export class Container {
92
102
  }
93
103
  const existingProviders = this.providers.get(token) ?? [];
94
104
  if (!this.singletons.has(token)) {
95
- const values = await Promise.all(existingProviders.map((it) => this.constructAsync(it, this)));
105
+ const values = await Promise.all(existingProviders.map((it) => this.constructAsync(it)));
96
106
  this.singletons.set(token, values.flat());
97
107
  }
98
108
  const singletons = assertPresent(this.singletons.get(token));
@@ -107,7 +117,7 @@ export class Container {
107
117
  return promisify(singletons.at(0));
108
118
  }
109
119
  }
110
- construct(provider, scope) {
120
+ construct(provider, scope = this) {
111
121
  const originalScope = currentScope;
112
122
  try {
113
123
  currentScope = scope;
@@ -117,7 +127,7 @@ export class Container {
117
127
  currentScope = originalScope;
118
128
  }
119
129
  }
120
- async constructAsync(provider, scope) {
130
+ async constructAsync(provider, scope = this) {
121
131
  const originalScope = currentScope;
122
132
  try {
123
133
  currentScope = scope;
@@ -129,7 +139,7 @@ export class Container {
129
139
  }
130
140
  async doConstructAsync(provider, scope) {
131
141
  if (isAsyncFactoryProvider(provider)) {
132
- return [await provider.useFactory()];
142
+ return [await provider.useFactory(scope)];
133
143
  }
134
144
  else if (isExistingProvider(provider)) {
135
145
  return scope.getAsync(provider.useExisting, { multi: true });
@@ -226,7 +236,7 @@ function doConstruct(provider, scope) {
226
236
  return [provider.useValue];
227
237
  }
228
238
  else if (isFactoryProvider(provider)) {
229
- return [provider.useFactory()];
239
+ return [provider.useFactory(scope)];
230
240
  }
231
241
  else if (isAsyncFactoryProvider(provider)) {
232
242
  throw Error("Invalid state");
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
- import { type AbstractClass, type Class } from "./utils.js";
1
+ import { type AbstractClass, type Class } from "./utils.ts";
2
2
  type ClassDecorator<C extends Class<unknown>> = (target: C) => C | void;
3
3
  export declare const injectableSymbol: unique symbol;
4
4
  export type InjectableClass<T = unknown> = (Class<T> | AbstractClass<T>) & {
5
5
  [injectableSymbol]: Class<unknown>[];
6
6
  };
7
+ /**
8
+ * The @injectable() decorator allows you to automatically bind a class as singleton service
9
+ * when requesting it from a DI container.
10
+ */
7
11
  export declare function injectable<C extends Class<unknown>>(): ClassDecorator<C>;
8
12
  export declare function isInjectable<T>(target: AbstractClass<T>): target is InjectableClass<T>;
9
13
  export declare function getInjectableTargets<T>(target: InjectableClass<T>): Class<unknown>[];
@@ -1,5 +1,9 @@
1
1
  import { getParentClasses } from "./utils.js";
2
2
  export const injectableSymbol = Symbol("injectable");
3
+ /**
4
+ * The @injectable() decorator allows you to automatically bind a class as singleton service
5
+ * when requesting it from a DI container.
6
+ */
3
7
  export function injectable() {
4
8
  return (target) => {
5
9
  getParentClasses(target).forEach((parentClass) => {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAIrD,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,gBAAgB,EAAE;oBACnD,KAAK,EAAE,CAAC,MAAM,CAAC;oBACf,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,qBAAqB,GAAG,WAA8B,CAAC;gBAC7D,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE;YAC9C,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,MAAwB;IACtD,iDAAiD;IACjD,OAAO,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,MAA0B;IAChE,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAIrD;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,gBAAgB,EAAE;oBACnD,KAAK,EAAE,CAAC,MAAM,CAAC;oBACf,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,qBAAqB,GAAG,WAA8B,CAAC;gBAC7D,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE;YAC9C,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,MAAwB;IACtD,iDAAiD;IACjD,OAAO,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,MAA0B;IAChE,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { inject, Container, bootstrap, bootstrapAsync, injectAsync } from "./container.js";
2
- export { injectable } from "./decorators.js";
3
- export type { FactoryProvider, ExistingProvider, Provider, ConstructorProvider, ClassProvider, ValueProvider, AsyncFactoryProvider, } from "./providers.js";
4
- export { InjectionToken } from "./tokens.js";
5
- export type { Token } from "./tokens.js";
1
+ export { inject, Container, bootstrap, bootstrapAsync, injectAsync } from "./container.ts";
2
+ export { injectable } from "./decorators.ts";
3
+ export type { FactoryProvider, ExistingProvider, Provider, ConstructorProvider, ClassProvider, ValueProvider, AsyncFactoryProvider, } from "./providers.ts";
4
+ export { InjectionToken } from "./tokens.ts";
5
+ export type { Token } from "./tokens.ts";
@@ -1,5 +1,6 @@
1
- import type { Token } from "./tokens.js";
2
- import { type Class } from "./utils.js";
1
+ import type { Token } from "./tokens.ts";
2
+ import { type Class } from "./utils.ts";
3
+ import type { Container } from './container.ts';
3
4
  /**
4
5
  * A provider states how, for a given token, a service should be constructed.
5
6
  */
@@ -34,7 +35,7 @@ export interface FactoryProvider<T> {
34
35
  provide: Token<T>;
35
36
  async?: false;
36
37
  multi?: true;
37
- useFactory: () => NoInfer<T>;
38
+ useFactory: (container: Container) => NoInfer<T>;
38
39
  }
39
40
  /**
40
41
  * An async factory provider refers to a value which is lazily returned
@@ -44,7 +45,7 @@ export interface AsyncFactoryProvider<T> {
44
45
  provide: Token<T>;
45
46
  async: true;
46
47
  multi?: true;
47
- useFactory: () => Promise<NoInfer<T>>;
48
+ useFactory: (container: Container) => Promise<NoInfer<T>>;
48
49
  }
49
50
  /**
50
51
  * An existing provider refers to a value provided by another provider.
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAqErD,MAAM,UAAU,qBAAqB,CAAI,QAAqB;IAC5D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,QAAqB;IACxD,OAAO,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAI,QAAqB;IAC7D,OAAO,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,QAAqB;IACzD,OAAO,SAAS,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAsErD,MAAM,UAAU,qBAAqB,CAAI,QAAqB;IAC5D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,QAAqB;IACxD,OAAO,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAI,QAAqB;IAC7D,OAAO,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,QAAqB;IACzD,OAAO,SAAS,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,QAAqB;IACtD,OAAO,SAAS,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACjF,CAAC"}
package/dist/tokens.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type AbstractClass, type Class } from "./utils.js";
1
+ import { type AbstractClass, type Class } from "./utils.ts";
2
2
  /**
3
3
  * A token is a reference to a service in the dependency injection (DI) container.
4
4
  * When obtaining a service from the container, you should use this token.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-di/core",
3
- "version": "0.8.3",
3
+ "version": "0.10.0",
4
4
  "description": "A simple TypeScript library for dependency injection",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -25,19 +25,21 @@
25
25
  "url": "git+https://github.com/needle-di/core.git"
26
26
  },
27
27
  "type": "module",
28
- "module": "dist/index.js",
28
+ "module": "./dist/index.js",
29
29
  "exports": "./dist/index.js",
30
- "types": "dist/index.d.ts",
30
+ "types": "./dist/index.d.ts",
31
31
  "sideEffects": false,
32
32
  "files": [
33
- "dist/**/**"
33
+ "./dist/**/**"
34
34
  ],
35
35
  "scripts": {
36
- "build": "tsc",
37
- "build:watch": "tsc -w",
38
- "test": "vitest run && tsc -p tsconfig.test.json",
36
+ "check-types": "tsc",
37
+ "check-types:watch": "tsc -w",
38
+ "build": "tsc -p tsconfig.build.json",
39
+ "build:watch": "tsc -p tsconfig.build.json -w",
40
+ "test": "vitest run",
39
41
  "test:watch": "vitest",
40
- "test:ci": "vitest run --silent --coverage",
42
+ "test:ci": "vitest run --silent --coverage --coverage.reporter=json-summary",
41
43
  "lint": "eslint src",
42
44
  "lint:fix": "eslint src --fix",
43
45
  "reformat": "prettier src/**/*.ts README.md --write",
@@ -48,11 +50,12 @@
48
50
  "devDependencies": {
49
51
  "@eslint/js": "^9.10.0",
50
52
  "@release-it/bumper": "^6.0.1",
51
- "@total-typescript/tsconfig": "github:total-typescript/tsconfig",
53
+ "@tsconfig/node20": "^20.1.4",
54
+ "@types/node": "^22.9.1",
52
55
  "@vitest/coverage-v8": "^2.1.1",
53
- "eslint": "^9.10.0",
56
+ "eslint": "~9.14.0",
54
57
  "prettier": "^3.3.3",
55
- "typescript": "~5.5.0",
58
+ "typescript": "5.7.0-beta",
56
59
  "typescript-eslint": "^8.6.0",
57
60
  "vitepress": "^1.3.4",
58
61
  "vitest": "^2.1.1"