@praxisjs/di 0.2.2 → 1.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # @praxisjs/di
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 3372878: Migrate all packages from functional APIs to a decorator-first design.
8
+
9
+ **`@praxisjs/core`**
10
+
11
+ - Added `Composable` abstract base class for building class-based composables
12
+ - Removed `resource`, `createResource`, `Resource`, `ResourceStatus`, `ResourceOptions` from public exports — use `@Resource` from `@praxisjs/decorators` instead
13
+
14
+ **`@praxisjs/motion`**
15
+
16
+ - Replaced `useMotion`, `tween`, `spring`, `createTransition`, `Animate`, `easings`, `resolveEasing` with `@Tween` and `@Spring` decorators
17
+
18
+ **`@praxisjs/di`**
19
+
20
+ - Replaced `useService` and `createScope` with a `@Scope` decorator
21
+ - Renamed exported type `Scope` to `ScopeType` to free the name for the new decorator
22
+
23
+ **`@praxisjs/fsm`**
24
+
25
+ - Removed `createMachine` — use the `@StateMachine` and `@Transition` decorators directly
26
+
27
+ **`@praxisjs/router`**
28
+
29
+ - Removed `createRouter`, `lazy`, `useRouter`, `useParams`, `useQuery`, `useLocation`
30
+ - Added `@RouterConfig`, `@Lazy`, `@InjectRouter`, `@Params`, `@Query`, `@Location` decorators
31
+
32
+ **`@praxisjs/store`**
33
+
34
+ - Removed `createStore` — use the `@Store` and `@UseStore` decorators directly
35
+
36
+ **`@praxisjs/composables`**
37
+
38
+ - Replaced all `use*` composable functions with class-based composables extending `Composable`:
39
+ `WindowSize`, `ScrollPosition`, `ElementSize`, `Intersection`, `Focus`, `MediaQuery`, `ColorScheme`, `Mouse`, `KeyCombo`, `Idle`, `Clipboard`, `Geolocation`, `TimeAgo`, `Pagination`
40
+
41
+ **`@praxisjs/concurrent`**
42
+
43
+ - Removed `task`, `queue`, `pool` and their instance types — use `@Task`, `@Queue`, `@Pool` decorators instead
44
+
45
+ ### Patch Changes
46
+
47
+ - Updated dependencies [3372878]
48
+ - Updated dependencies [feaa478]
49
+ - @praxisjs/core@1.0.0
50
+ - @praxisjs/decorators@0.5.0
51
+
52
+ ## 0.2.3
53
+
54
+ ### Patch Changes
55
+
56
+ - Updated dependencies [d11a10a]
57
+ - @praxisjs/core@0.4.2
58
+
3
59
  ## 0.2.2
4
60
 
5
61
  ### Patch Changes
@@ -29,7 +29,9 @@ describe("Container", () => {
29
29
  });
30
30
  it("creates new instance for transient scope", () => {
31
31
  class Counter {
32
- value = Math.random();
32
+ constructor() {
33
+ this.value = Math.random();
34
+ }
33
35
  }
34
36
  const c = new Container();
35
37
  c.register(Counter, { scope: "transient" });
@@ -84,5 +86,72 @@ describe("Container", () => {
84
86
  const c = new Container();
85
87
  expect(c.register(A).register(B)).toBe(c);
86
88
  });
89
+ it("resolves prop injections from di:props metadata", () => {
90
+ class Logger {
91
+ }
92
+ class Service {
93
+ }
94
+ const c = new Container();
95
+ c.register(Logger);
96
+ c.register(Service);
97
+ // Simulate what the @Inject decorator does — set di:props metadata
98
+ const propsMap = new Map();
99
+ propsMap.set("logger", Logger);
100
+ Reflect.defineMetadata("di:props", propsMap, Service.prototype);
101
+ const instance = c.resolve(Service);
102
+ expect(instance.logger).toBeInstanceOf(Logger);
103
+ // Cleanup
104
+ Reflect.deleteMetadata("di:props", Service.prototype);
105
+ });
106
+ it("child container falls back to parent for unregistered service", () => {
107
+ class MyDep {
108
+ }
109
+ const parent = new Container();
110
+ parent.register(MyDep);
111
+ const child = parent.createChild();
112
+ expect(child.resolve(MyDep)).toBeInstanceOf(MyDep);
113
+ });
114
+ it("grandchild resolves from grandparent (three-level chain)", () => {
115
+ const URL_TOKEN = token("GRANDPARENT_URL");
116
+ const grandparent = new Container();
117
+ grandparent.registerValue(URL_TOKEN, "https://grandparent.com");
118
+ const child = grandparent.createChild();
119
+ const grandchild = child.createChild();
120
+ expect(grandchild.resolve(URL_TOKEN)).toBe("https://grandparent.com");
121
+ });
122
+ it("resolves constructor injection from di:inject metadata", () => {
123
+ class Engine {
124
+ }
125
+ class Car {
126
+ constructor(engine) {
127
+ this.engine = engine;
128
+ }
129
+ }
130
+ const c = new Container();
131
+ c.register(Engine);
132
+ c.register(Car);
133
+ // Simulate what a @Inject constructor param decorator would set
134
+ Reflect.defineMetadata("di:inject", [Engine], Car);
135
+ const car = c.resolve(Car);
136
+ expect(car).toBeInstanceOf(Car);
137
+ expect(car.engine).toBeInstanceOf(Engine);
138
+ Reflect.deleteMetadata("di:inject", Car);
139
+ });
140
+ it("registering the same class twice replaces the previous registration", () => {
141
+ class Counter {
142
+ constructor() {
143
+ this.value = Math.random();
144
+ }
145
+ }
146
+ const c = new Container();
147
+ c.register(Counter, { scope: "singleton" });
148
+ const first = c.resolve(Counter);
149
+ // Re-register resets the descriptor (no cached instance)
150
+ c.register(Counter, { scope: "singleton" });
151
+ const second = c.resolve(Counter);
152
+ // After re-registration, a new singleton is created
153
+ expect(second).toBeInstanceOf(Counter);
154
+ expect(second).not.toBe(first);
155
+ });
87
156
  });
88
157
  //# sourceMappingURL=container.test.js.map
@@ -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":"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"}
@@ -1,140 +1,302 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
1
35
  import "reflect-metadata";
2
36
  import { describe, it, expect, vi } from "vitest";
3
- import { Container, token } from "../container";
4
- import { Injectable, Inject, InjectContainer, useService, createScope, } from "../decorators";
5
- // Each test group uses a fresh container to avoid state pollution
6
- function makeScope() {
7
- return new Container();
37
+ import { Container, container, token } from "../container";
38
+ import { Injectable, Inject, InjectContainer, Scope, } from "../decorators";
39
+ function makeFieldCtx(name) {
40
+ const initializers = [];
41
+ return {
42
+ ctx: {
43
+ name,
44
+ kind: "field",
45
+ addInitializer(fn) { initializers.push(fn); },
46
+ },
47
+ run(instance) { initializers.forEach((fn) => { fn.call(instance); }); },
48
+ };
8
49
  }
9
- // ── Injectable ────────────────────────────────────────────────────────────────
50
+ // ── @Injectable ───────────────────────────────────────────────────────────────
10
51
  describe("Injectable", () => {
11
52
  it("registers the class in the global container", () => {
12
- // We test via useService resolving without throwing
13
53
  class MyService {
14
- greet() {
15
- return "hello";
16
- }
54
+ greet() { return "hello"; }
17
55
  }
18
56
  Injectable()(MyService, {});
19
- const instance = useService(MyService);
20
- expect(instance).toBeInstanceOf(MyService);
21
- expect(instance.greet()).toBe("hello");
57
+ expect(container.resolve(MyService)).toBeInstanceOf(MyService);
58
+ expect(container.resolve(MyService).greet()).toBe("hello");
22
59
  });
23
- it("registers with transient scope", () => {
60
+ it("registers with transient scope — each resolve returns a new instance", () => {
24
61
  class TmpService {
25
62
  }
26
63
  Injectable({ scope: "transient" })(TmpService, {});
27
- const a = useService(TmpService);
28
- const b = useService(TmpService);
29
- expect(a).not.toBe(b);
64
+ expect(container.resolve(TmpService)).not.toBe(container.resolve(TmpService));
30
65
  });
31
66
  });
32
- // ── Inject ────────────────────────────────────────────────────────────────────
67
+ // ── @Inject ───────────────────────────────────────────────────────────────────
33
68
  describe("Inject", () => {
34
69
  it("injects a registered service via property", () => {
35
70
  class Logger {
36
- log(msg) {
37
- return msg;
38
- }
71
+ log(msg) { return msg; }
39
72
  }
40
73
  Injectable()(Logger, {});
41
- const initializers = [];
42
- const ctx = {
43
- name: "logger",
44
- kind: "field",
45
- addInitializer(fn) {
46
- initializers.push(fn);
47
- },
48
- };
74
+ const { ctx, run } = makeFieldCtx("logger");
49
75
  Inject(Logger)(undefined, ctx);
50
76
  const instance = {};
51
- initializers.forEach((fn) => {
52
- fn.call(instance);
53
- });
77
+ run(instance);
54
78
  expect(instance.logger).toBeInstanceOf(Logger);
79
+ // second access covers the cache-hit branch (line 62: !cache.has(this) === false)
80
+ expect(instance.logger).toBe(instance.logger);
55
81
  });
56
82
  it("throws a descriptive error when dep is not registered", () => {
57
83
  class UnknownDep {
58
84
  }
59
- const initializers = [];
60
- const ctx = {
61
- name: "dep",
62
- kind: "field",
63
- addInitializer(fn) {
64
- initializers.push(fn);
65
- },
66
- };
85
+ const { ctx, run } = makeFieldCtx("dep");
67
86
  Inject(UnknownDep)(undefined, ctx);
68
87
  class MyClass {
69
- constructor() { }
70
88
  }
71
89
  const instance = new MyClass();
72
- initializers.forEach((fn) => {
73
- fn.call(instance);
74
- });
90
+ run(instance);
75
91
  expect(() => instance.dep).toThrow("[Inject]");
76
92
  });
77
93
  it("warns on direct assignment in non-production", () => {
78
94
  class Dep2 {
79
95
  }
80
96
  Injectable()(Dep2, {});
81
- const initializers = [];
82
- const ctx = {
83
- name: "dep2",
84
- kind: "field",
85
- addInitializer(fn) {
86
- initializers.push(fn);
87
- },
88
- };
97
+ const { ctx, run } = makeFieldCtx("dep2");
89
98
  Inject(Dep2)(undefined, ctx);
90
99
  const instance = {};
91
- initializers.forEach((fn) => {
92
- fn.call(instance);
93
- });
100
+ run(instance);
94
101
  const spy = vi.spyOn(console, "warn").mockImplementation(() => { });
95
102
  instance.dep2 = "override";
96
103
  expect(spy).toHaveBeenCalledWith(expect.stringContaining("[Inject]"));
97
104
  spy.mockRestore();
98
105
  });
106
+ it("returns cached value on second access (cache hit)", () => {
107
+ class CachedService {
108
+ constructor() {
109
+ this.id = Math.random();
110
+ }
111
+ }
112
+ Injectable()(CachedService, {});
113
+ const { ctx, run } = makeFieldCtx("svc");
114
+ Inject(CachedService)(undefined, ctx);
115
+ const instance = {};
116
+ run(instance);
117
+ const first = instance.svc;
118
+ const second = instance.svc;
119
+ expect(first).toBe(second); // same cached instance
120
+ });
121
+ it("does not warn on direct assignment in production mode", () => {
122
+ class ProdDep {
123
+ }
124
+ Injectable()(ProdDep, {});
125
+ const { ctx, run } = makeFieldCtx("dep");
126
+ Inject(ProdDep)(undefined, ctx);
127
+ const instance = {};
128
+ run(instance);
129
+ const spy = vi.spyOn(console, "warn").mockImplementation(() => { });
130
+ vi.stubEnv("NODE_ENV", "production");
131
+ instance.dep = "override";
132
+ expect(spy).not.toHaveBeenCalled();
133
+ vi.unstubAllEnvs();
134
+ spy.mockRestore();
135
+ });
136
+ it("includes the Token description in the error when resolution fails", () => {
137
+ const MY_TOKEN = token("MY_SERVICE");
138
+ const { ctx, run } = makeFieldCtx("svc");
139
+ Inject(MY_TOKEN)(undefined, ctx);
140
+ class Consumer {
141
+ }
142
+ const instance = new Consumer();
143
+ run(instance);
144
+ expect(() => instance.svc).toThrow("MY_SERVICE");
145
+ });
99
146
  });
100
- // ── InjectContainer ───────────────────────────────────────────────────────────
147
+ // ── @InjectContainer ──────────────────────────────────────────────────────────
101
148
  describe("InjectContainer", () => {
102
- it("injects the global container instance", () => {
103
- const initializers = [];
104
- const ctx = {
105
- name: "container",
106
- kind: "field",
107
- addInitializer(fn) {
108
- initializers.push(fn);
109
- },
110
- };
149
+ it("injects the global container on an unscoped class", () => {
150
+ const { ctx, run } = makeFieldCtx("c");
111
151
  InjectContainer()(undefined, ctx);
112
152
  const instance = {};
113
- initializers.forEach((fn) => {
114
- fn.call(instance);
115
- });
116
- expect(instance.container).toBeInstanceOf(Container);
153
+ run(instance);
154
+ expect(instance.c).toBeInstanceOf(Container);
155
+ expect(instance.c).toBe(container);
117
156
  });
118
157
  });
119
- // ── useService ────────────────────────────────────────────────────────────────
120
- describe("useService", () => {
121
- it("resolves by Token", () => {
158
+ // ── @Scope ────────────────────────────────────────────────────────────────────
159
+ describe("Scope", () => {
160
+ it("creates a child container per instance", () => {
161
+ let Widget = (() => {
162
+ let _classDecorators = [Scope()];
163
+ let _classDescriptor;
164
+ let _classExtraInitializers = [];
165
+ let _classThis;
166
+ var Widget = class {
167
+ static { _classThis = this; }
168
+ static {
169
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
170
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
171
+ Widget = _classThis = _classDescriptor.value;
172
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
173
+ __runInitializers(_classThis, _classExtraInitializers);
174
+ }
175
+ };
176
+ return Widget = _classThis;
177
+ })();
178
+ const { ctx, run } = makeFieldCtx("c");
179
+ InjectContainer()(undefined, ctx);
180
+ const a = new Widget();
181
+ run(a);
182
+ const b = new Widget();
183
+ run(b);
184
+ expect(a.c).toBeInstanceOf(Container);
185
+ expect(b.c).toBeInstanceOf(Container);
186
+ expect(a.c).not.toBe(b.c); // each instance gets its own scope
187
+ expect(a.c).not.toBe(container); // it's a child, not the root
188
+ });
189
+ it("services registered in configure are resolvable within the scope", () => {
190
+ const DB_URL = token("DB_URL");
191
+ let DataModule = (() => {
192
+ let _classDecorators = [Scope((c) => { c.registerValue(DB_URL, "postgres://localhost"); })];
193
+ let _classDescriptor;
194
+ let _classExtraInitializers = [];
195
+ let _classThis;
196
+ var DataModule = class {
197
+ static { _classThis = this; }
198
+ static {
199
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
200
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
201
+ DataModule = _classThis = _classDescriptor.value;
202
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
203
+ __runInitializers(_classThis, _classExtraInitializers);
204
+ }
205
+ };
206
+ return DataModule = _classThis;
207
+ })();
208
+ const { ctx, run } = makeFieldCtx("db");
209
+ Inject(DB_URL)(undefined, ctx);
210
+ const instance = new DataModule();
211
+ run(instance);
212
+ expect(instance.db).toBe("postgres://localhost");
213
+ });
214
+ it("@Inject resolves from the scoped container, not the global one", () => {
215
+ class ScopedRepo {
216
+ }
217
+ // NOT registered in global container
122
218
  const VERSION = token("VERSION");
123
- const c = createScope((sc) => sc.registerValue(VERSION, "1.0.0"));
124
- // useService uses global container — test via token on a fresh child
125
- expect(c.resolve(VERSION)).toBe("1.0.0");
219
+ let App = (() => {
220
+ let _classDecorators = [Scope((c) => {
221
+ c.register(ScopedRepo);
222
+ c.registerValue(VERSION, "2.0");
223
+ })];
224
+ let _classDescriptor;
225
+ let _classExtraInitializers = [];
226
+ let _classThis;
227
+ var App = class {
228
+ static { _classThis = this; }
229
+ static {
230
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
231
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
232
+ App = _classThis = _classDescriptor.value;
233
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
234
+ __runInitializers(_classThis, _classExtraInitializers);
235
+ }
236
+ };
237
+ return App = _classThis;
238
+ })();
239
+ const { ctx: repoCtx, run: runRepo } = makeFieldCtx("repo");
240
+ Inject(ScopedRepo)(undefined, repoCtx);
241
+ const { ctx: verCtx, run: runVer } = makeFieldCtx("version");
242
+ Inject(VERSION)(undefined, verCtx);
243
+ const instance = new App();
244
+ runRepo(instance);
245
+ runVer(instance);
246
+ expect(instance.repo).toBeInstanceOf(ScopedRepo);
247
+ expect(instance.version).toBe("2.0");
126
248
  });
127
- });
128
- // ── createScope ───────────────────────────────────────────────────────────────
129
- describe("createScope", () => {
130
- it("creates a child container without configure fn", () => {
131
- const child = createScope();
132
- expect(child).toBeInstanceOf(Container);
249
+ it("@InjectContainer returns the scoped child container", () => {
250
+ let Service = (() => {
251
+ let _classDecorators = [Scope((c) => { c.registerValue(token("X"), 42); })];
252
+ let _classDescriptor;
253
+ let _classExtraInitializers = [];
254
+ let _classThis;
255
+ var Service = class {
256
+ static { _classThis = this; }
257
+ static {
258
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
259
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
260
+ Service = _classThis = _classDescriptor.value;
261
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
262
+ __runInitializers(_classThis, _classExtraInitializers);
263
+ }
264
+ };
265
+ return Service = _classThis;
266
+ })();
267
+ const { ctx, run } = makeFieldCtx("container");
268
+ InjectContainer()(undefined, ctx);
269
+ const instance = new Service();
270
+ run(instance);
271
+ expect(instance.container).toBeInstanceOf(Container);
272
+ expect(instance.container).not.toBe(container);
133
273
  });
134
- it("applies the configure callback", () => {
135
- const DB = token("DB");
136
- const child = createScope((c) => c.registerValue(DB, "postgres://localhost"));
137
- expect(child.resolve(DB)).toBe("postgres://localhost");
274
+ it("child container inherits registrations from the parent", () => {
275
+ class GlobalService {
276
+ }
277
+ Injectable()(GlobalService, {});
278
+ let Child = (() => {
279
+ let _classDecorators = [Scope()];
280
+ let _classDescriptor;
281
+ let _classExtraInitializers = [];
282
+ let _classThis;
283
+ var Child = class {
284
+ static { _classThis = this; }
285
+ static {
286
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
287
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
288
+ Child = _classThis = _classDescriptor.value;
289
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
290
+ __runInitializers(_classThis, _classExtraInitializers);
291
+ }
292
+ };
293
+ return Child = _classThis;
294
+ })();
295
+ const { ctx, run } = makeFieldCtx("svc");
296
+ Inject(GlobalService)(undefined, ctx);
297
+ const instance = new Child();
298
+ run(instance);
299
+ expect(instance.svc).toBeInstanceOf(GlobalService);
138
300
  });
139
301
  });
140
302
  //# sourceMappingURL=decorators.test.js.map
@@ -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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"}
@@ -7,7 +7,7 @@ export interface ServiceDescriptor {
7
7
  scope: Scope;
8
8
  instance?: unknown;
9
9
  }
10
- export type Constructor<T = unknown> = new (...args: unknown[]) => T;
10
+ export type Constructor<T = unknown> = new (...args: any[]) => T;
11
11
  export declare class Token<_T> {
12
12
  readonly description: string;
13
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;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAErE,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,CAGrB;IACJ,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,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IA0BhD,OAAO,CAAC,WAAW;IAoBnB,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,CAGrB;IACJ,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,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IA0BhD,OAAO,CAAC,WAAW;IAoBnB,WAAW,IAAI,SAAS;CAGzB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
package/dist/container.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export class Token {
2
- description;
3
2
  constructor(description) {
4
3
  this.description = description;
5
4
  }
@@ -11,9 +10,8 @@ export function token(description) {
11
10
  return new Token(description);
12
11
  }
13
12
  export class Container {
14
- services = new Map();
15
- parent;
16
13
  constructor(parent) {
14
+ this.services = new Map();
17
15
  this.parent = parent;
18
16
  }
19
17
  register(target, options = {}) {