@praxisjs/di 1.2.0 → 1.2.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @praxisjs/di
2
2
 
3
+ ## 1.2.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [5a10864]
8
+ - @praxisjs/core@1.3.0
9
+ - @praxisjs/decorators@0.7.3
10
+
11
+ ## 1.2.1
12
+
13
+ ### Patch Changes
14
+
15
+ - 7e90df6: Refactor `@Injectable` and `@Scope` to use `ClassBehavior` / `createClassDecorator` from `@praxisjs/decorators`. Simplify `Container.instantiate` to plain `new target()`, removing the internal TC39 metadata maps (`constructorDepsMap`, `propDepsMap`) and the associated `setConstructorDeps` / `setPropDep` helpers.
16
+
3
17
  ## 1.2.0
4
18
 
5
19
  ### Minor Changes
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { Container, Token, token, setConstructorDeps, setPropDep } from "../container";
2
+ import { Container, Token, token } from "../container";
3
3
  describe("Token", () => {
4
4
  it("stores description", () => {
5
5
  const t = new Token("MY_SERVICE");
@@ -85,17 +85,15 @@ describe("Container", () => {
85
85
  const c = new Container();
86
86
  expect(c.register(A).register(B)).toBe(c);
87
87
  });
88
- it("resolves prop injections from di:props metadata", () => {
89
- class Logger {
90
- }
91
- class Service {
88
+ it("parent singleton is reused when resolved from child container", () => {
89
+ class SharedService {
92
90
  }
93
- const c = new Container();
94
- c.register(Logger);
95
- c.register(Service);
96
- setPropDep(Service.prototype, "logger", Logger);
97
- const instance = c.resolve(Service);
98
- expect(instance.logger).toBeInstanceOf(Logger);
91
+ const parent = new Container();
92
+ parent.register(SharedService, { scope: "singleton" });
93
+ const child = parent.createChild();
94
+ const fromChild = child.resolve(SharedService);
95
+ const fromParent = parent.resolve(SharedService);
96
+ expect(fromChild).toBe(fromParent);
99
97
  });
100
98
  it("child container falls back to parent for unregistered service", () => {
101
99
  class MyDep {
@@ -113,21 +111,17 @@ describe("Container", () => {
113
111
  const grandchild = child.createChild();
114
112
  expect(grandchild.resolve(URL_TOKEN)).toBe("https://grandparent.com");
115
113
  });
116
- it("resolves constructor injection from di:inject metadata", () => {
117
- class Engine {
118
- }
119
- class Car {
120
- constructor(engine) {
121
- this.engine = engine;
122
- }
114
+ it("registerFactory can resolve other services from the container", () => {
115
+ class Logger {
123
116
  }
117
+ const LOG_WRAP = token("LOG_WRAP");
124
118
  const c = new Container();
125
- c.register(Engine);
126
- c.register(Car);
127
- setConstructorDeps(Car, [Engine]);
128
- const car = c.resolve(Car);
129
- expect(car).toBeInstanceOf(Car);
130
- expect(car.engine).toBeInstanceOf(Engine);
119
+ c.register(Logger);
120
+ c.registerFactory(LOG_WRAP, (container) => ({
121
+ logger: container.resolve(Logger),
122
+ }));
123
+ const result = c.resolve(LOG_WRAP);
124
+ expect(result.logger).toBeInstanceOf(Logger);
131
125
  });
132
126
  it("registering the same class twice replaces the previous registration", () => {
133
127
  class Counter {
@@ -145,23 +139,17 @@ describe("Container", () => {
145
139
  expect(second).toBeInstanceOf(Counter);
146
140
  expect(second).not.toBe(first);
147
141
  });
148
- it("circular dependency A → B → A throws a descriptive error", () => {
149
- class A {
150
- constructor(b) {
151
- this.b = b;
152
- }
153
- }
154
- class B {
155
- constructor(a) {
156
- this.a = a;
157
- }
142
+ it("re-registering with different scope switches scope correctly", () => {
143
+ class Svc {
158
144
  }
159
145
  const c = new Container();
160
- c.register(A);
161
- c.register(B);
162
- setConstructorDeps(A, [B]);
163
- setConstructorDeps(B, [A]);
164
- expect(() => c.resolve(A)).toThrow("[DI] Circular dependency detected");
146
+ c.register(Svc, { scope: "singleton" });
147
+ c.resolve(Svc); // warm up singleton
148
+ c.register(Svc, { scope: "transient" });
149
+ const a = c.resolve(Svc);
150
+ const b = c.resolve(Svc);
151
+ expect(a).toBeInstanceOf(Svc);
152
+ expect(a).not.toBe(b);
165
153
  });
166
154
  it("factory function that throws — error message includes which service failed", () => {
167
155
  class Broken {
@@ -1 +1 @@
1
- {"version":3,"file":"container.test.js","sourceRoot":"","sources":["../../src/__tests__/container.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.test.js","sourceRoot":"","sources":["../../src/__tests__/container.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAoB,MAAM,cAAc,CAAC;AAEzE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,SAAS;SAAG;QAClB,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,OAAO;YAAb;gBACE,UAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC;SAAA;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,OAAO;SAAG;QAChB,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,KAAK,CAAS,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAS,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,KAAK,CAAS,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC;SAAG;QACV,MAAM,CAAC;SAAG;QACV,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,aAAa;SAAG;QACtB,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEnC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK;SAAG;QACd,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,SAAS,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;QACpC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM;SAAG;QACf,MAAM,QAAQ,GAAG,KAAK,CAAqB,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;SAClC,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO;YAAb;gBACE,UAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC;SAAA;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEjC,yDAAyD;QACzD,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,oDAAoD;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG;SAAG;QACZ,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;QAEpC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,MAAM;YACV;gBACE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;SACF;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6GAA6G,EAAE,KAAK,IAAI,EAAE;QAC3H,MAAM,WAAW;SAAG;QACpB,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,GAAG;YAAT;gBACE,OAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC;SAAA;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE7B,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,QAAQ,GAAG,KAAK,CAAU,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnC,kFAAkF;QAClF,MAAM,KAAK,GAAG,IAAI,GAAG,CAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,YAAY;SAAG;QACrB,MAAM,KAAK;YACT;gBACE,6DAA6D;gBAC7D,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC;SACF;QACD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAU,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,EAAG,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -55,39 +55,95 @@ function makeFieldCtx(name) {
55
55
  // ── @Injectable ───────────────────────────────────────────────────────────────
56
56
  describe("Injectable", () => {
57
57
  it("with no arguments — defaults to singleton scope", () => {
58
- class SingletonByDefault {
59
- }
60
- Injectable()(SingletonByDefault, {});
58
+ let SingletonByDefault = (() => {
59
+ let _classDecorators = [Injectable()];
60
+ let _classDescriptor;
61
+ let _classExtraInitializers = [];
62
+ let _classThis;
63
+ var SingletonByDefault = class {
64
+ static { _classThis = this; }
65
+ static {
66
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
67
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
68
+ SingletonByDefault = _classThis = _classDescriptor.value;
69
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
70
+ __runInitializers(_classThis, _classExtraInitializers);
71
+ }
72
+ };
73
+ return SingletonByDefault = _classThis;
74
+ })();
61
75
  const a = container.resolve(SingletonByDefault);
62
76
  const b = container.resolve(SingletonByDefault);
63
77
  expect(a).toBe(b);
64
78
  });
65
79
  it("registers the class in the global container", () => {
66
- class MyService {
67
- greet() {
68
- return "hello";
69
- }
70
- }
71
- Injectable()(MyService, {});
80
+ let MyService = (() => {
81
+ let _classDecorators = [Injectable()];
82
+ let _classDescriptor;
83
+ let _classExtraInitializers = [];
84
+ let _classThis;
85
+ var MyService = class {
86
+ static { _classThis = this; }
87
+ static {
88
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
89
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
90
+ MyService = _classThis = _classDescriptor.value;
91
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
92
+ __runInitializers(_classThis, _classExtraInitializers);
93
+ }
94
+ greet() {
95
+ return "hello";
96
+ }
97
+ };
98
+ return MyService = _classThis;
99
+ })();
72
100
  expect(container.resolve(MyService)).toBeInstanceOf(MyService);
73
101
  expect(container.resolve(MyService).greet()).toBe("hello");
74
102
  });
75
103
  it("registers with transient scope — each resolve returns a new instance", () => {
76
- class TmpService {
77
- }
78
- Injectable({ scope: "transient" })(TmpService, {});
104
+ let TmpService = (() => {
105
+ let _classDecorators = [Injectable({ scope: "transient" })];
106
+ let _classDescriptor;
107
+ let _classExtraInitializers = [];
108
+ let _classThis;
109
+ var TmpService = class {
110
+ static { _classThis = this; }
111
+ static {
112
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
113
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
114
+ TmpService = _classThis = _classDescriptor.value;
115
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
116
+ __runInitializers(_classThis, _classExtraInitializers);
117
+ }
118
+ };
119
+ return TmpService = _classThis;
120
+ })();
79
121
  expect(container.resolve(TmpService)).not.toBe(container.resolve(TmpService));
80
122
  });
81
123
  });
82
124
  // ── @Inject ───────────────────────────────────────────────────────────────────
83
125
  describe("Inject", () => {
84
126
  it("injects a registered service via property", () => {
85
- class Logger {
86
- log(msg) {
87
- return msg;
88
- }
89
- }
90
- Injectable()(Logger, {});
127
+ let Logger = (() => {
128
+ let _classDecorators = [Injectable()];
129
+ let _classDescriptor;
130
+ let _classExtraInitializers = [];
131
+ let _classThis;
132
+ var Logger = class {
133
+ static { _classThis = this; }
134
+ static {
135
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
136
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
137
+ Logger = _classThis = _classDescriptor.value;
138
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
139
+ __runInitializers(_classThis, _classExtraInitializers);
140
+ }
141
+ log(msg) {
142
+ return msg;
143
+ }
144
+ };
145
+ return Logger = _classThis;
146
+ })();
91
147
  const { ctx, run } = makeFieldCtx("logger");
92
148
  Inject(Logger)(undefined, ctx);
93
149
  const instance = {};
@@ -108,9 +164,23 @@ describe("Inject", () => {
108
164
  expect(() => instance.dep).toThrow("[Inject]");
109
165
  });
110
166
  it("warns on direct assignment in non-production", () => {
111
- class Dep2 {
112
- }
113
- Injectable()(Dep2, {});
167
+ let Dep2 = (() => {
168
+ let _classDecorators = [Injectable()];
169
+ let _classDescriptor;
170
+ let _classExtraInitializers = [];
171
+ let _classThis;
172
+ var Dep2 = class {
173
+ static { _classThis = this; }
174
+ static {
175
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
176
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
177
+ Dep2 = _classThis = _classDescriptor.value;
178
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
179
+ __runInitializers(_classThis, _classExtraInitializers);
180
+ }
181
+ };
182
+ return Dep2 = _classThis;
183
+ })();
114
184
  const { ctx, run } = makeFieldCtx("dep2");
115
185
  Inject(Dep2)(undefined, ctx);
116
186
  const instance = {};
@@ -121,12 +191,26 @@ describe("Inject", () => {
121
191
  spy.mockRestore();
122
192
  });
123
193
  it("returns cached value on second access (cache hit)", () => {
124
- class CachedService {
125
- constructor() {
126
- this.id = Math.random();
127
- }
128
- }
129
- Injectable()(CachedService, {});
194
+ let CachedService = (() => {
195
+ let _classDecorators = [Injectable()];
196
+ let _classDescriptor;
197
+ let _classExtraInitializers = [];
198
+ let _classThis;
199
+ var CachedService = class {
200
+ static { _classThis = this; }
201
+ constructor() {
202
+ this.id = Math.random();
203
+ }
204
+ static {
205
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
206
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
207
+ CachedService = _classThis = _classDescriptor.value;
208
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
209
+ __runInitializers(_classThis, _classExtraInitializers);
210
+ }
211
+ };
212
+ return CachedService = _classThis;
213
+ })();
130
214
  const { ctx, run } = makeFieldCtx("svc");
131
215
  Inject(CachedService)(undefined, ctx);
132
216
  const instance = {};
@@ -136,9 +220,23 @@ describe("Inject", () => {
136
220
  expect(first).toBe(second); // same cached instance
137
221
  });
138
222
  it("does not warn on direct assignment in production mode", () => {
139
- class ProdDep {
140
- }
141
- Injectable()(ProdDep, {});
223
+ let ProdDep = (() => {
224
+ let _classDecorators = [Injectable()];
225
+ let _classDescriptor;
226
+ let _classExtraInitializers = [];
227
+ let _classThis;
228
+ var ProdDep = class {
229
+ static { _classThis = this; }
230
+ static {
231
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
232
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
233
+ ProdDep = _classThis = _classDescriptor.value;
234
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
235
+ __runInitializers(_classThis, _classExtraInitializers);
236
+ }
237
+ };
238
+ return ProdDep = _classThis;
239
+ })();
142
240
  const { ctx, run } = makeFieldCtx("dep");
143
241
  Inject(ProdDep)(undefined, ctx);
144
242
  const instance = {};
@@ -310,9 +408,23 @@ describe("Scope", () => {
310
408
  expect(instance.container).not.toBe(container);
311
409
  });
312
410
  it("child container inherits registrations from the parent", () => {
313
- class GlobalService {
314
- }
315
- Injectable()(GlobalService, {});
411
+ let GlobalService = (() => {
412
+ let _classDecorators = [Injectable()];
413
+ let _classDescriptor;
414
+ let _classExtraInitializers = [];
415
+ let _classThis;
416
+ var GlobalService = class {
417
+ static { _classThis = this; }
418
+ static {
419
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
420
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
421
+ GlobalService = _classThis = _classDescriptor.value;
422
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
423
+ __runInitializers(_classThis, _classExtraInitializers);
424
+ }
425
+ };
426
+ return GlobalService = _classThis;
427
+ })();
316
428
  let Child = (() => {
317
429
  let _classDecorators = [Scope()];
318
430
  let _classDescriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.test.js","sourceRoot":"","sources":["../../src/__tests__/decorators.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.test.js","sourceRoot":"","sources":["../../src/__tests__/decorators.test.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,6 @@ export interface ServiceDescriptor {
8
8
  instance?: unknown;
9
9
  }
10
10
  export type Constructor<T = unknown> = new (...args: any[]) => T;
11
- export declare function setConstructorDeps(target: Constructor, deps: Array<Constructor | Token<unknown>>): void;
12
- export declare function setPropDep(prototype: object, prop: string, dep: Constructor | Token<unknown>): void;
13
11
  export declare class Token<_T> {
14
12
  readonly description: string;
15
13
  constructor(description: string);
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAYjE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GACxC,IAAI,CAEN;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAChC,IAAI,CAKN;AAED,qBAAa,KAAK,CAAC,EAAE;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM;IAG/B,QAAQ;CAGT;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;gBAExB,MAAM,CAAC,EAAE,SAAS;IAI9B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAQ1E,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKjD,eAAe,CAAC,CAAC,EACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,CAAC,GACnC,IAAI;IAKP,OAAO,CAAC,CAAC,EACP,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EACjC,eAAe,6CAA0C,GACxD,CAAC;IA2CJ,OAAO,CAAC,WAAW;IAiCnB,WAAW,IAAI,SAAS;CAGzB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEjE,qBAAa,KAAK,CAAC,EAAE;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM;IAG/B,QAAQ;CAGT;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;gBAExB,MAAM,CAAC,EAAE,SAAS;IAI9B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAQ1E,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKjD,eAAe,CAAC,CAAC,EACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,CAAC,GACnC,IAAI;IAKP,OAAO,CAAC,CAAC,EACP,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EACjC,eAAe,6CAA0C,GACxD,CAAC;IAwCJ,OAAO,CAAC,WAAW;IAWnB,WAAW,IAAI,SAAS;CAGzB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
package/dist/container.js CHANGED
@@ -1,15 +1,3 @@
1
- // TC39-compatible metadata storage
2
- const constructorDepsMap = new WeakMap();
3
- const propDepsMap = new WeakMap();
4
- export function setConstructorDeps(target, deps) {
5
- constructorDepsMap.set(target, deps);
6
- }
7
- export function setPropDep(prototype, prop, dep) {
8
- if (!propDepsMap.has(prototype)) {
9
- propDepsMap.set(prototype, new Map());
10
- }
11
- propDepsMap.get(prototype)?.set(prop, dep);
12
- }
13
1
  export class Token {
14
2
  constructor(description) {
15
3
  this.description = description;
@@ -66,33 +54,24 @@ export class Container {
66
54
  }
67
55
  const descriptor = entry;
68
56
  if (descriptor.scope === "singleton") {
69
- descriptor.instance ??= this.instantiate(descriptor.target, resolutionStack);
57
+ descriptor.instance ??= this.instantiate(descriptor.target);
70
58
  return descriptor.instance;
71
59
  }
72
- return this.instantiate(descriptor.target, resolutionStack);
60
+ return this.instantiate(descriptor.target);
73
61
  }
74
62
  finally {
75
63
  resolutionStack.delete(key);
76
64
  }
77
65
  }
78
- instantiate(target, resolutionStack = new Set()) {
79
- const deps = constructorDepsMap.get(target) ?? [];
80
- const resolvedDeps = deps.map((dep) => this.resolve(dep, resolutionStack));
81
- let instance;
66
+ instantiate(target) {
82
67
  try {
83
- instance = new target(...resolvedDeps);
68
+ return new target();
84
69
  }
85
70
  catch (err) {
86
71
  if (err instanceof Error && err.message.startsWith("[DI]"))
87
72
  throw err;
88
73
  throw new Error(`[DI] Failed to instantiate "${target.name}": ${err.message}`);
89
74
  }
90
- const propInjections = propDepsMap.get(target.prototype) ??
91
- new Map();
92
- for (const [prop, dep] of propInjections) {
93
- instance[prop] = this.resolve(dep, resolutionStack);
94
- }
95
- return instance;
96
75
  }
97
76
  createChild() {
98
77
  return new Container(this);
@@ -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,18 +1,5 @@
1
1
  import { type Container, Token, type Constructor, type InjectableOptions } from "./container";
2
2
  export declare function Injectable(options?: InjectableOptions): (value: Constructor, _context: ClassDecoratorContext) => void;
3
- /**
4
- * Creates a child DI container scoped to each instance of the decorated class.
5
- * Services registered in the configure callback are available within the scope,
6
- * and @Inject / @InjectContainer will resolve from it automatically.
7
- *
8
- * @Scope((c) => {
9
- * c.register(UserRepository);
10
- * c.registerValue(AuthToken, 'abc');
11
- * })
12
- * class UserModule extends StatefulComponent {
13
- * @Inject(UserRepository) repo!: UserRepository;
14
- * }
15
- */
16
3
  export declare function Scope(configure?: (c: Container) => void): (cls: new (...args: any[]) => any, _ctx: ClassDecoratorContext) => any;
17
4
  export declare function Inject<T>(dep: Constructor<T> | Token<T>): (_value: undefined, context: ClassFieldDecoratorContext<any>) => void;
18
5
  export declare function InjectContainer(): (_value: undefined, context: ClassFieldDecoratorContext<any>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWzG,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,IACvC,OAAO,WAAW,EAAE,UAAU,qBAAqB,KAAG,IAAI,CAG5E;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,IAEtC,KAAK,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,qBAAqB,KAAG,GAAG,CAapF;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAsCrC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,KAAK,IAAI,CACvF;AAID,wBAAgB,eAAe,IAkBZ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,KAAK,IAAI,CACvF"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA0BzG,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAEmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CACzI;AA8BD,wBAAgB,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,GAEkB,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,qBAAqB,KAAK,GAAG,CAC/I;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAsCrC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,KAAK,IAAI,CACvF;AAID,wBAAgB,eAAe,IAkBZ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,KAAK,IAAI,CACvF"}
@@ -1,4 +1,4 @@
1
- import { createFieldDecorator } from "@praxisjs/decorators";
1
+ import { createFieldDecorator, createClassDecorator, ClassBehavior } from "@praxisjs/decorators";
2
2
  import { container, Token } from "./container";
3
3
  // Maps instances to their scoped child containers (set by @Scope).
4
4
  const scopedContainers = new WeakMap();
@@ -6,10 +6,21 @@ function resolveFrom(instance) {
6
6
  return scopedContainers.get(instance) ?? container;
7
7
  }
8
8
  // ── @Injectable ───────────────────────────────────────────────────────────────
9
+ class InjectableBehavior extends ClassBehavior {
10
+ constructor(options) {
11
+ super();
12
+ this.options = options;
13
+ }
14
+ create(_instance) {
15
+ return {};
16
+ }
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ initialize(Enhanced, _original) {
19
+ container.register(Enhanced, this.options);
20
+ }
21
+ }
9
22
  export function Injectable(options = {}) {
10
- return function (value, _context) {
11
- container.register(value, options);
12
- };
23
+ return createClassDecorator(new InjectableBehavior(options));
13
24
  }
14
25
  // ── @Scope ────────────────────────────────────────────────────────────────────
15
26
  /**
@@ -25,20 +36,21 @@ export function Injectable(options = {}) {
25
36
  * @Inject(UserRepository) repo!: UserRepository;
26
37
  * }
27
38
  */
39
+ class ScopeBehavior extends ClassBehavior {
40
+ constructor(configure) {
41
+ super();
42
+ this.configure = configure;
43
+ }
44
+ create(instance) {
45
+ const child = container.createChild();
46
+ this.configure?.(child);
47
+ scopedContainers.set(instance, child);
48
+ return {};
49
+ }
50
+ }
28
51
  export function Scope(configure) {
29
52
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- return function (cls, _ctx) {
31
- return class extends cls {
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- constructor(...args) {
34
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
35
- super(...args);
36
- const child = container.createChild();
37
- configure?.(child);
38
- scopedContainers.set(this, child);
39
- }
40
- };
41
- };
53
+ return createClassDecorator(new ScopeBehavior(configure));
42
54
  }
43
55
  // ── @Inject ───────────────────────────────────────────────────────────────────
44
56
  export function Inject(dep) {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisjs/di",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -11,8 +11,8 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@praxisjs/core": "1.2.0",
15
- "@praxisjs/decorators": "0.7.2"
14
+ "@praxisjs/core": "1.3.0",
15
+ "@praxisjs/decorators": "0.7.3"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/node": "^25.5.0",
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
 
3
- import { Container, Token, token, setConstructorDeps, setPropDep, type Constructor } from "../container";
3
+ import { Container, Token, token, type Constructor } from "../container";
4
4
 
5
5
  describe("Token", () => {
6
6
  it("stores description", () => {
@@ -93,20 +93,15 @@ describe("Container", () => {
93
93
  expect(c.register(A).register(B)).toBe(c);
94
94
  });
95
95
 
96
- it("resolves prop injections from di:props metadata", () => {
97
- class Logger {}
98
- class Service {
99
- logger!: Logger;
100
- }
101
-
102
- const c = new Container();
103
- c.register(Logger);
104
- c.register(Service);
105
-
106
- setPropDep(Service.prototype, "logger", Logger);
96
+ it("parent singleton is reused when resolved from child container", () => {
97
+ class SharedService {}
98
+ const parent = new Container();
99
+ parent.register(SharedService, { scope: "singleton" });
100
+ const child = parent.createChild();
107
101
 
108
- const instance = c.resolve(Service);
109
- expect(instance.logger).toBeInstanceOf(Logger);
102
+ const fromChild = child.resolve(SharedService);
103
+ const fromParent = parent.resolve(SharedService);
104
+ expect(fromChild).toBe(fromParent);
110
105
  });
111
106
 
112
107
  it("child container falls back to parent for unregistered service", () => {
@@ -126,21 +121,16 @@ describe("Container", () => {
126
121
  expect(grandchild.resolve(URL_TOKEN)).toBe("https://grandparent.com");
127
122
  });
128
123
 
129
- it("resolves constructor injection from di:inject metadata", () => {
130
- class Engine {}
131
- class Car {
132
- constructor(public engine: Engine) {}
133
- }
134
-
124
+ it("registerFactory can resolve other services from the container", () => {
125
+ class Logger {}
126
+ const LOG_WRAP = token<{ logger: Logger }>("LOG_WRAP");
135
127
  const c = new Container();
136
- c.register(Engine);
137
- c.register(Car);
138
-
139
- setConstructorDeps(Car, [Engine]);
140
-
141
- const car = c.resolve(Car);
142
- expect(car).toBeInstanceOf(Car);
143
- expect(car.engine).toBeInstanceOf(Engine);
128
+ c.register(Logger);
129
+ c.registerFactory(LOG_WRAP, (container) => ({
130
+ logger: container.resolve(Logger),
131
+ }));
132
+ const result = c.resolve(LOG_WRAP);
133
+ expect(result.logger).toBeInstanceOf(Logger);
144
134
  });
145
135
 
146
136
  it("registering the same class twice replaces the previous registration", () => {
@@ -160,20 +150,17 @@ describe("Container", () => {
160
150
  expect(second).not.toBe(first);
161
151
  });
162
152
 
163
- it("circular dependency A → B → A throws a descriptive error", () => {
164
- class A {
165
- constructor(public b: unknown) {}
166
- }
167
- class B {
168
- constructor(public a: unknown) {}
169
- }
153
+ it("re-registering with different scope switches scope correctly", () => {
154
+ class Svc {}
170
155
  const c = new Container();
171
- c.register(A);
172
- c.register(B);
173
- setConstructorDeps(A, [B]);
174
- setConstructorDeps(B, [A]);
156
+ c.register(Svc, { scope: "singleton" });
157
+ c.resolve(Svc); // warm up singleton
175
158
 
176
- expect(() => c.resolve(A)).toThrow("[DI] Circular dependency detected");
159
+ c.register(Svc, { scope: "transient" });
160
+ const a = c.resolve(Svc);
161
+ const b = c.resolve(Svc);
162
+ expect(a).toBeInstanceOf(Svc);
163
+ expect(a).not.toBe(b);
177
164
  });
178
165
 
179
166
  it("factory function that throws — error message includes which service failed", () => {
@@ -25,27 +25,27 @@ function makeFieldCtx(name: string) {
25
25
 
26
26
  describe("Injectable", () => {
27
27
  it("with no arguments — defaults to singleton scope", () => {
28
+ @Injectable()
28
29
  class SingletonByDefault {}
29
- Injectable()(SingletonByDefault, {} as ClassDecoratorContext);
30
30
  const a = container.resolve(SingletonByDefault);
31
31
  const b = container.resolve(SingletonByDefault);
32
32
  expect(a).toBe(b);
33
33
  });
34
34
 
35
35
  it("registers the class in the global container", () => {
36
+ @Injectable()
36
37
  class MyService {
37
38
  greet() {
38
39
  return "hello";
39
40
  }
40
41
  }
41
- Injectable()(MyService, {} as ClassDecoratorContext);
42
42
  expect(container.resolve(MyService)).toBeInstanceOf(MyService);
43
43
  expect(container.resolve(MyService).greet()).toBe("hello");
44
44
  });
45
45
 
46
46
  it("registers with transient scope — each resolve returns a new instance", () => {
47
+ @Injectable({ scope: "transient" })
47
48
  class TmpService {}
48
- Injectable({ scope: "transient" })(TmpService, {} as ClassDecoratorContext);
49
49
  expect(container.resolve(TmpService)).not.toBe(
50
50
  container.resolve(TmpService),
51
51
  );
@@ -56,12 +56,12 @@ describe("Injectable", () => {
56
56
 
57
57
  describe("Inject", () => {
58
58
  it("injects a registered service via property", () => {
59
+ @Injectable()
59
60
  class Logger {
60
61
  log(msg: string) {
61
62
  return msg;
62
63
  }
63
64
  }
64
- Injectable()(Logger, {} as ClassDecoratorContext);
65
65
 
66
66
  const { ctx, run } = makeFieldCtx("logger");
67
67
  Inject(Logger)(undefined, ctx);
@@ -83,8 +83,8 @@ describe("Inject", () => {
83
83
  });
84
84
 
85
85
  it("warns on direct assignment in non-production", () => {
86
+ @Injectable()
86
87
  class Dep2 {}
87
- Injectable()(Dep2, {} as ClassDecoratorContext);
88
88
  const { ctx, run } = makeFieldCtx("dep2");
89
89
  Inject(Dep2)(undefined, ctx);
90
90
  const instance: Record<string, unknown> = {};
@@ -96,10 +96,10 @@ describe("Inject", () => {
96
96
  });
97
97
 
98
98
  it("returns cached value on second access (cache hit)", () => {
99
+ @Injectable()
99
100
  class CachedService {
100
101
  id = Math.random();
101
102
  }
102
- Injectable()(CachedService, {} as ClassDecoratorContext);
103
103
 
104
104
  const { ctx, run } = makeFieldCtx("svc");
105
105
  Inject(CachedService)(undefined, ctx);
@@ -112,8 +112,8 @@ describe("Inject", () => {
112
112
  });
113
113
 
114
114
  it("does not warn on direct assignment in production mode", () => {
115
+ @Injectable()
115
116
  class ProdDep {}
116
- Injectable()(ProdDep, {} as ClassDecoratorContext);
117
117
  const { ctx, run } = makeFieldCtx("dep");
118
118
  Inject(ProdDep)(undefined, ctx);
119
119
  const instance: Record<string, unknown> = {};
@@ -249,8 +249,8 @@ describe("Scope", () => {
249
249
  });
250
250
 
251
251
  it("child container inherits registrations from the parent", () => {
252
+ @Injectable()
252
253
  class GlobalService {}
253
- Injectable()(GlobalService, {} as ClassDecoratorContext);
254
254
 
255
255
  @Scope()
256
256
  class Child {}
package/src/container.ts CHANGED
@@ -13,34 +13,6 @@ export interface ServiceDescriptor {
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
14
  export type Constructor<T = unknown> = new (...args: any[]) => T;
15
15
 
16
- // TC39-compatible metadata storage
17
- const constructorDepsMap = new WeakMap<
18
- Constructor,
19
- Array<Constructor | Token<unknown>>
20
- >();
21
- const propDepsMap = new WeakMap<
22
- object,
23
- Map<string, Constructor | Token<unknown>>
24
- >();
25
-
26
- export function setConstructorDeps(
27
- target: Constructor,
28
- deps: Array<Constructor | Token<unknown>>,
29
- ): void {
30
- constructorDepsMap.set(target, deps);
31
- }
32
-
33
- export function setPropDep(
34
- prototype: object,
35
- prop: string,
36
- dep: Constructor | Token<unknown>,
37
- ): void {
38
- if (!propDepsMap.has(prototype)) {
39
- propDepsMap.set(prototype, new Map());
40
- }
41
- propDepsMap.get(prototype)?.set(prop, dep);
42
- }
43
-
44
16
  export class Token<_T> {
45
17
  readonly description: string;
46
18
  constructor(description: string) {
@@ -117,50 +89,25 @@ export class Container {
117
89
  const descriptor = entry as ServiceDescriptor;
118
90
 
119
91
  if (descriptor.scope === "singleton") {
120
- descriptor.instance ??= this.instantiate(
121
- descriptor.target,
122
- resolutionStack,
123
- );
92
+ descriptor.instance ??= this.instantiate(descriptor.target);
124
93
  return descriptor.instance as T;
125
94
  }
126
95
 
127
- return this.instantiate(descriptor.target, resolutionStack) as T;
96
+ return this.instantiate(descriptor.target) as T;
128
97
  } finally {
129
98
  resolutionStack.delete(key);
130
99
  }
131
100
  }
132
101
 
133
- private instantiate<T>(
134
- target: Constructor<T>,
135
- resolutionStack = new Set<Constructor | Token<unknown>>(),
136
- ): T {
137
- const deps = constructorDepsMap.get(target as Constructor) ?? [];
138
-
139
- const resolvedDeps = deps.map((dep) =>
140
- this.resolve(dep as Constructor, resolutionStack),
141
- );
142
- let instance: T;
102
+ private instantiate<T>(target: Constructor<T>): T {
143
103
  try {
144
- instance = new target(...resolvedDeps);
104
+ return new target();
145
105
  } catch (err) {
146
106
  if (err instanceof Error && err.message.startsWith("[DI]")) throw err;
147
107
  throw new Error(
148
108
  `[DI] Failed to instantiate "${target.name}": ${(err as Error).message}`,
149
109
  );
150
110
  }
151
-
152
- const propInjections =
153
- propDepsMap.get(target.prototype as object) ??
154
- new Map<string, Constructor | Token<unknown>>();
155
-
156
- for (const [prop, dep] of propInjections) {
157
- (instance as Record<string, unknown>)[prop] = this.resolve(
158
- dep as Constructor,
159
- resolutionStack,
160
- );
161
- }
162
-
163
- return instance;
164
111
  }
165
112
 
166
113
  createChild(): Container {
package/src/decorators.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { createFieldDecorator, type FieldBinding } from "@praxisjs/decorators";
1
+ import type { RootComponent } from "@praxisjs/core/internal";
2
+ import { createFieldDecorator, createClassDecorator, ClassBehavior, type FieldBinding, type ClassEnhancement } from "@praxisjs/decorators";
2
3
 
3
4
  import { container, type Container, Token, type Constructor, type InjectableOptions } from "./container";
4
5
 
@@ -11,10 +12,24 @@ function resolveFrom(instance: object) {
11
12
 
12
13
  // ── @Injectable ───────────────────────────────────────────────────────────────
13
14
 
15
+ class InjectableBehavior extends ClassBehavior {
16
+ constructor(private readonly options: InjectableOptions) {
17
+ super();
18
+ }
19
+
20
+ create(_instance: RootComponent): ClassEnhancement {
21
+ return {};
22
+ }
23
+
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ initialize(Enhanced: new (...args: any[]) => unknown, _original: new (...args: any[]) => unknown): void {
26
+ container.register(Enhanced as Constructor, this.options);
27
+ }
28
+ }
29
+
14
30
  export function Injectable(options: InjectableOptions = {}) {
15
- return function (value: Constructor, _context: ClassDecoratorContext): void {
16
- container.register(value, options);
17
- };
31
+
32
+ return createClassDecorator(new InjectableBehavior(options)) as unknown as (value: Constructor, _context: ClassDecoratorContext) => void;
18
33
  }
19
34
 
20
35
  // ── @Scope ────────────────────────────────────────────────────────────────────
@@ -32,21 +47,22 @@ export function Injectable(options: InjectableOptions = {}) {
32
47
  * @Inject(UserRepository) repo!: UserRepository;
33
48
  * }
34
49
  */
50
+ class ScopeBehavior extends ClassBehavior {
51
+ constructor(private readonly configure?: (c: Container) => void) {
52
+ super();
53
+ }
54
+
55
+ create(instance: RootComponent): ClassEnhancement {
56
+ const child = container.createChild();
57
+ this.configure?.(child);
58
+ scopedContainers.set(instance as object, child);
59
+ return {};
60
+ }
61
+ }
62
+
35
63
  export function Scope(configure?: (c: Container) => void) {
36
64
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
- return function(cls: new (...args: any[]) => any, _ctx: ClassDecoratorContext): any {
38
-
39
- return class extends cls {
40
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- constructor(...args: any[]) {
42
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
43
- super(...args);
44
- const child = container.createChild();
45
- configure?.(child);
46
- scopedContainers.set(this as object, child);
47
- }
48
- };
49
- };
65
+ return createClassDecorator(new ScopeBehavior(configure)) as unknown as (cls: new (...args: any[]) => any, _ctx: ClassDecoratorContext) => any;
50
66
  }
51
67
 
52
68
  // ── @Inject ───────────────────────────────────────────────────────────────────