@joist/di 4.0.0-next.36 → 4.0.0-next.38

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joist/di",
3
- "version": "4.0.0-next.36",
3
+ "version": "4.0.0-next.38",
4
4
  "type": "module",
5
5
  "main": "./target/lib.js",
6
6
  "module": "./target/lib.js",
@@ -14,6 +14,9 @@ export function injectableEl<T extends ConstructableToken<HTMLElement>>(
14
14
  constructor(..._: any[]) {
15
15
  super();
16
16
 
17
+ // assume injector exists
18
+ const injector = injectables.get(this)!;
19
+
17
20
  /**
18
21
  * Listen for the finddiroot event.
19
22
  * This is event is triggered when the element is connected to the dom
@@ -26,13 +29,13 @@ export function injectableEl<T extends ConstructableToken<HTMLElement>>(
26
29
  const parentInjector = findInjectorRoot(e);
27
30
 
28
31
  if (parentInjector) {
29
- injectables.get(this)?.setParent(parentInjector);
32
+ injector.setParent(parentInjector);
30
33
  }
31
34
 
32
- callLifecycle(this, metadata?.onInjected);
35
+ callLifecycle(this, injector, metadata?.onInjected);
33
36
  });
34
37
 
35
- callLifecycle(this, metadata?.onCreated);
38
+ callLifecycle(this, injector, metadata?.onCreated);
36
39
  }
37
40
 
38
41
  connectedCallback() {
@@ -58,7 +58,7 @@ export class Injector {
58
58
  const metadata = readMetadata(token as ConstructableToken<T>);
59
59
 
60
60
  if (metadata) {
61
- callLifecycle(instance, metadata.onInjected);
61
+ callLifecycle(instance, injectables.get(instance) ?? this, metadata.onInjected);
62
62
  }
63
63
 
64
64
  return instance;
@@ -136,8 +136,8 @@ export class Injector {
136
136
  const metadata = readMetadata(token as ConstructableToken<T>);
137
137
 
138
138
  if (metadata) {
139
- callLifecycle(instance, metadata.onCreated);
140
- callLifecycle(instance, metadata.onInjected);
139
+ callLifecycle(instance, injector ?? this, metadata.onCreated);
140
+ callLifecycle(instance, injector ?? this, metadata.onInjected);
141
141
  }
142
142
  }
143
143
 
@@ -1,6 +1,6 @@
1
1
  import { assert } from 'chai';
2
2
 
3
- import { Injector } from './injector.js';
3
+ import { injectables, Injector } from './injector.js';
4
4
  import { injected, created } from './lifecycle.js';
5
5
  import { injectable } from './injectable.js';
6
6
  import { inject } from './inject.js';
@@ -34,6 +34,35 @@ it('should call onInit and onInject when a service is first created', () => {
34
34
  });
35
35
  });
36
36
 
37
+ it('should pass the injector to all lifecycle callbacks', () => {
38
+ const i = new Injector();
39
+
40
+ @injectable({
41
+ name: 'MyService'
42
+ })
43
+ class MyService {
44
+ res: Injector[] = [];
45
+
46
+ @created()
47
+ onCreated(i: Injector) {
48
+ this.res.push(i);
49
+ }
50
+
51
+ @injected()
52
+ onInjected(i: Injector) {
53
+ this.res.push(i);
54
+ }
55
+ }
56
+
57
+ const service = i.inject(MyService);
58
+ const injector = injectables.get(service);
59
+
60
+ assert.equal(service.res[0], injector);
61
+ assert.equal(service.res[0].parent, i);
62
+ assert.equal(service.res[1], injector);
63
+ assert.equal(service.res[1].parent, i);
64
+ });
65
+
37
66
  it('should call onInject any time a service is returned', () => {
38
67
  const i = new Injector();
39
68
 
@@ -1,9 +1,13 @@
1
1
  (Symbol as any).metadata ??= Symbol('Symbol.metadata');
2
2
 
3
- import { InjectableMetadata } from './metadata.js';
3
+ import { Injector } from './injector.js';
4
+ import { InjectableMetadata, LifecycleCallback } from './metadata.js';
4
5
 
5
6
  export function injected() {
6
- return function onInjectDecorator(val: Function, ctx: ClassMethodDecoratorContext): void {
7
+ return function onInjectDecorator(
8
+ val: LifecycleCallback,
9
+ ctx: ClassMethodDecoratorContext
10
+ ): void {
7
11
  const metadata: InjectableMetadata = ctx.metadata;
8
12
  metadata.onInjected ??= [];
9
13
  metadata.onInjected.push(val);
@@ -11,17 +15,20 @@ export function injected() {
11
15
  }
12
16
 
13
17
  export function created() {
14
- return function onInjectDecorator(val: Function, ctx: ClassMethodDecoratorContext): void {
18
+ return function onInjectDecorator(
19
+ val: LifecycleCallback,
20
+ ctx: ClassMethodDecoratorContext
21
+ ): void {
15
22
  const metadata: InjectableMetadata = ctx.metadata;
16
23
  metadata.onCreated ??= [];
17
24
  metadata.onCreated.push(val);
18
25
  };
19
26
  }
20
27
 
21
- export function callLifecycle(instance: object, methods?: Function[]): void {
28
+ export function callLifecycle(instance: object, i: Injector, methods?: LifecycleCallback[]): void {
22
29
  if (methods) {
23
30
  for (let cb of methods) {
24
- cb.call(instance);
31
+ cb.call(instance, i);
25
32
  }
26
33
  }
27
34
  }
@@ -1,8 +1,11 @@
1
+ import { Injector } from './injector.js';
1
2
  import { ConstructableToken } from './provider.js';
2
3
 
4
+ export type LifecycleCallback = (i: Injector) => void;
5
+
3
6
  export interface InjectableMetadata {
4
- onCreated?: Function[];
5
- onInjected?: Function[];
7
+ onCreated?: LifecycleCallback[];
8
+ onInjected?: LifecycleCallback[];
6
9
  }
7
10
 
8
11
  export function readMetadata<T>(target: ConstructableToken<T>): InjectableMetadata | null {
@@ -6,15 +6,16 @@ export function injectableEl(Base, ctx) {
6
6
  [Base.name]: class extends Base {
7
7
  constructor(..._) {
8
8
  super();
9
+ const injector = injectables.get(this);
9
10
  this.addEventListener('finddiroot', (e) => {
10
11
  e.stopPropagation();
11
12
  const parentInjector = findInjectorRoot(e);
12
13
  if (parentInjector) {
13
- injectables.get(this)?.setParent(parentInjector);
14
+ injector.setParent(parentInjector);
14
15
  }
15
- callLifecycle(this, metadata?.onInjected);
16
+ callLifecycle(this, injector, metadata?.onInjected);
16
17
  });
17
- callLifecycle(this, metadata?.onCreated);
18
+ callLifecycle(this, injector, metadata?.onCreated);
18
19
  }
19
20
  connectedCallback() {
20
21
  if (this.isConnected) {
@@ -1 +1 @@
1
- {"version":3,"file":"injectable-el.js","sourceRoot":"","sources":["../../src/lib/injectable-el.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,GAA0B;IAE1B,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;IAElD,MAAM,GAAG,GAAG;QACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAM,SAAQ,IAAI;YAC7B,YAAY,GAAG,CAAQ;gBACrB,KAAK,EAAE,CAAC;gBAQR,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxC,CAAC,CAAC,eAAe,EAAE,CAAC;oBAEpB,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAE3C,IAAI,cAAc,EAAE,CAAC;wBACnB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;oBACnD,CAAC;oBAED,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBAEH,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;YAED,iBAAiB;gBACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAE/E,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;gBAClB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;gBAE5C,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;SACF;KACF,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAQ;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;IAI9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"injectable-el.js","sourceRoot":"","sources":["../../src/lib/injectable-el.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,GAA0B;IAE1B,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;IAElD,MAAM,GAAG,GAAG;QACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAM,SAAQ,IAAI;YAC7B,YAAY,GAAG,CAAQ;gBACrB,KAAK,EAAE,CAAC;gBAGR,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;gBAQxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxC,CAAC,CAAC,eAAe,EAAE,CAAC;oBAEpB,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAE3C,IAAI,cAAc,EAAE,CAAC;wBACnB,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBACrC,CAAC;oBAED,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC;YAED,iBAAiB;gBACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAE/E,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;gBAClB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;gBAE5C,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;SACF;KACF,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAQ;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;IAI9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -16,7 +16,7 @@ export class Injector {
16
16
  const instance = this.#instances.get(token);
17
17
  const metadata = readMetadata(token);
18
18
  if (metadata) {
19
- callLifecycle(instance, metadata.onInjected);
19
+ callLifecycle(instance, injectables.get(instance) ?? this, metadata.onInjected);
20
20
  }
21
21
  return instance;
22
22
  }
@@ -61,8 +61,8 @@ export class Injector {
61
61
  }
62
62
  const metadata = readMetadata(token);
63
63
  if (metadata) {
64
- callLifecycle(instance, metadata.onCreated);
65
- callLifecycle(instance, metadata.onInjected);
64
+ callLifecycle(instance, injector ?? this, metadata.onCreated);
65
+ callLifecycle(instance, injector ?? this, metadata.onInjected);
66
66
  }
67
67
  }
68
68
  return instance;
@@ -1 +1 @@
1
- {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- export declare function injected(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
2
- export declare function created(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
3
- export declare function callLifecycle(instance: object, methods?: Function[]): void;
1
+ import { Injector } from './injector.js';
2
+ import { LifecycleCallback } from './metadata.js';
3
+ export declare function injected(): (val: LifecycleCallback, ctx: ClassMethodDecoratorContext) => void;
4
+ export declare function created(): (val: LifecycleCallback, ctx: ClassMethodDecoratorContext) => void;
5
+ export declare function callLifecycle(instance: object, i: Injector, methods?: LifecycleCallback[]): void;
@@ -13,10 +13,10 @@ export function created() {
13
13
  metadata.onCreated.push(val);
14
14
  };
15
15
  }
16
- export function callLifecycle(instance, methods) {
16
+ export function callLifecycle(instance, i, methods) {
17
17
  if (methods) {
18
18
  for (let cb of methods) {
19
- cb.call(instance);
19
+ cb.call(instance, i);
20
20
  }
21
21
  }
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAIvD,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,SAAS,KAAK,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAoB;IAClE,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAKvD,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,iBAAiB,CAC/B,GAAsB,EACtB,GAAgC;QAEhC,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,iBAAiB,CAC/B,GAAsB,EACtB,GAAgC;QAEhC,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,SAAS,KAAK,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,CAAW,EAAE,OAA6B;IACxF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { assert } from 'chai';
3
- import { Injector } from './injector.js';
3
+ import { injectables, Injector } from './injector.js';
4
4
  import { injected, created } from './lifecycle.js';
5
5
  import { injectable } from './injectable.js';
6
6
  import { inject } from './inject.js';
@@ -46,6 +46,48 @@ it('should call onInit and onInject when a service is first created', () => {
46
46
  onInjected: 1
47
47
  });
48
48
  });
49
+ it('should pass the injector to all lifecycle callbacks', () => {
50
+ const i = new Injector();
51
+ let MyService = (() => {
52
+ let _classDecorators = [injectable({
53
+ name: 'MyService'
54
+ })];
55
+ let _classDescriptor;
56
+ let _classExtraInitializers = [];
57
+ let _classThis;
58
+ let _instanceExtraInitializers = [];
59
+ let _onCreated_decorators;
60
+ let _onInjected_decorators;
61
+ var MyService = class {
62
+ static { _classThis = this; }
63
+ static {
64
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
65
+ _onCreated_decorators = [created()];
66
+ _onInjected_decorators = [injected()];
67
+ __esDecorate(this, null, _onCreated_decorators, { kind: "method", name: "onCreated", static: false, private: false, access: { has: obj => "onCreated" in obj, get: obj => obj.onCreated }, metadata: _metadata }, null, _instanceExtraInitializers);
68
+ __esDecorate(this, null, _onInjected_decorators, { kind: "method", name: "onInjected", static: false, private: false, access: { has: obj => "onInjected" in obj, get: obj => obj.onInjected }, metadata: _metadata }, null, _instanceExtraInitializers);
69
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
70
+ MyService = _classThis = _classDescriptor.value;
71
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
72
+ __runInitializers(_classThis, _classExtraInitializers);
73
+ }
74
+ res = (__runInitializers(this, _instanceExtraInitializers), []);
75
+ onCreated(i) {
76
+ this.res.push(i);
77
+ }
78
+ onInjected(i) {
79
+ this.res.push(i);
80
+ }
81
+ };
82
+ return MyService = _classThis;
83
+ })();
84
+ const service = i.inject(MyService);
85
+ const injector = injectables.get(service);
86
+ assert.equal(service.res[0], injector);
87
+ assert.equal(service.res[0].parent, i);
88
+ assert.equal(service.res[1], injector);
89
+ assert.equal(service.res[1].parent, i);
90
+ });
49
91
  it('should call onInject any time a service is returned', () => {
50
92
  const i = new Injector();
51
93
  let MyService = (() => {
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;IACzE,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;IAGH,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;IAGH,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC7E,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;QAIG,KAAK;gCADV,UAAU,EAAE;;;;;;;;gBACb,6KAEC;;;gBAFK,uDAAK;;YACT,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;;;IAG9B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;IACzE,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;IAGH,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAKnB,SAAS;gCAHd,UAAU,CAAC;gBACV,IAAI,EAAE,WAAW;aAClB,CAAC;;;;;;;;;;;yCAIC,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAXH,6KAYC;;;gBAZK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACK,EAAE,EAAC;YAGrB,SAAS,CAAC,CAAW;gBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;YAGD,UAAU,CAAC,CAAW;gBACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;;;;IAGH,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;IAGH,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC7E,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;QAGnB,SAAS;gCADd,UAAU,EAAE;;;;;;;;;;;yCAOV,OAAO,EAAE;0CAKT,QAAQ,EAAE;gBAJX,8KAAA,SAAS,6DAER;gBAGD,iLAAA,UAAU,6DAET;gBAdH,6KAeC;;;gBAfK,uDAAS;;YACb,GAAG,IADC,mDAAS,EACP;gBACJ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;aACd,EAAC;YAGF,SAAS;gBACP,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACvB,CAAC;YAGD,UAAU;gBACR,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC;;;;QAIG,KAAK;gCADV,UAAU,EAAE;;;;;;;;gBACb,6KAEC;;;gBAFK,uDAAK;;YACT,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;;;IAG9B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,8 @@
1
+ import { Injector } from './injector.js';
1
2
  import { ConstructableToken } from './provider.js';
3
+ export type LifecycleCallback = (i: Injector) => void;
2
4
  export interface InjectableMetadata {
3
- onCreated?: Function[];
4
- onInjected?: Function[];
5
+ onCreated?: LifecycleCallback[];
6
+ onInjected?: LifecycleCallback[];
5
7
  }
6
8
  export declare function readMetadata<T>(target: ConstructableToken<T>): InjectableMetadata | null;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAAI,MAA6B;IAC3D,MAAM,QAAQ,GAA8B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,YAAY,CAAI,MAA6B;IAC3D,MAAM,QAAQ,GAA8B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC;AAClB,CAAC"}