@joist/di 4.5.0 → 4.6.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.
Files changed (74) hide show
  1. package/package.json +1 -1
  2. package/src/lib/context/protocol.ts +1 -1
  3. package/src/lib/dom/injectable-el.ts +1 -1
  4. package/src/lib/injectable.ts +11 -13
  5. package/src/lib/injector.test.ts +18 -0
  6. package/src/lib/injector.ts +8 -4
  7. package/src/lib/lifecycle.test.ts +7 -7
  8. package/src/lib/lifecycle.ts +3 -9
  9. package/src/lib/metadata.ts +7 -5
  10. package/src/lib/provider.ts +1 -1
  11. package/src/lib.ts +4 -4
  12. package/target/lib/context/injector.d.ts +1 -0
  13. package/target/lib/context/injector.d.ts.map +1 -0
  14. package/target/lib/context/protocol.d.ts +32 -1
  15. package/target/lib/context/protocol.d.ts.map +1 -0
  16. package/target/lib/context/protocol.js +13 -0
  17. package/target/lib/context/protocol.js.map +1 -1
  18. package/target/lib/dom/dom-injector.d.ts +4 -0
  19. package/target/lib/dom/dom-injector.d.ts.map +1 -0
  20. package/target/lib/dom/dom-injector.js +3 -0
  21. package/target/lib/dom/dom-injector.js.map +1 -1
  22. package/target/lib/dom/dom-injector.test.d.ts +1 -0
  23. package/target/lib/dom/dom-injector.test.d.ts.map +1 -0
  24. package/target/lib/dom/dom-injector.test.js +34 -1
  25. package/target/lib/dom/dom-injector.test.js.map +1 -1
  26. package/target/lib/dom/injectable-el.d.ts +1 -0
  27. package/target/lib/dom/injectable-el.d.ts.map +1 -0
  28. package/target/lib/dom/injectable-el.js +3 -0
  29. package/target/lib/dom/injectable-el.js.map +1 -1
  30. package/target/lib/dom/injectable-el.test.d.ts +1 -0
  31. package/target/lib/dom/injectable-el.test.d.ts.map +1 -0
  32. package/target/lib/dom/injectable-el.test.js +39 -3
  33. package/target/lib/dom/injectable-el.test.js.map +1 -1
  34. package/target/lib/inject.d.ts +7 -0
  35. package/target/lib/inject.d.ts.map +1 -0
  36. package/target/lib/inject.js +6 -0
  37. package/target/lib/inject.js.map +1 -1
  38. package/target/lib/inject.test.d.ts +1 -0
  39. package/target/lib/inject.test.d.ts.map +1 -0
  40. package/target/lib/inject.test.js +34 -1
  41. package/target/lib/inject.test.js.map +1 -1
  42. package/target/lib/injectable.d.ts +1 -0
  43. package/target/lib/injectable.d.ts.map +1 -0
  44. package/target/lib/injectable.js +7 -2
  45. package/target/lib/injectable.js.map +1 -1
  46. package/target/lib/injectable.test.d.ts +1 -0
  47. package/target/lib/injectable.test.d.ts.map +1 -0
  48. package/target/lib/injectable.test.js +34 -1
  49. package/target/lib/injectable.test.js.map +1 -1
  50. package/target/lib/injector.d.ts +22 -4
  51. package/target/lib/injector.d.ts.map +1 -0
  52. package/target/lib/injector.js +38 -1
  53. package/target/lib/injector.js.map +1 -1
  54. package/target/lib/injector.test.d.ts +1 -0
  55. package/target/lib/injector.test.d.ts.map +1 -0
  56. package/target/lib/injector.test.js +51 -1
  57. package/target/lib/injector.test.js.map +1 -1
  58. package/target/lib/lifecycle.d.ts +1 -0
  59. package/target/lib/lifecycle.d.ts.map +1 -0
  60. package/target/lib/lifecycle.js +3 -9
  61. package/target/lib/lifecycle.js.map +1 -1
  62. package/target/lib/lifecycle.test.d.ts +1 -0
  63. package/target/lib/lifecycle.test.d.ts.map +1 -0
  64. package/target/lib/lifecycle.test.js +36 -3
  65. package/target/lib/lifecycle.test.js.map +1 -1
  66. package/target/lib/metadata.d.ts +6 -5
  67. package/target/lib/metadata.d.ts.map +1 -0
  68. package/target/lib/metadata.js.map +1 -1
  69. package/target/lib/provider.d.ts +1 -0
  70. package/target/lib/provider.d.ts.map +1 -0
  71. package/target/lib/provider.js.map +1 -1
  72. package/target/lib.d.ts +3 -2
  73. package/target/lib.d.ts.map +1 -0
  74. package/target/lib.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joist/di",
3
- "version": "4.5.0",
3
+ "version": "4.6.0",
4
4
  "type": "module",
5
5
  "main": "./target/lib.js",
6
6
  "module": "./target/lib.js",
@@ -53,7 +53,7 @@ export type ContextCallback<ValueType> = (value: ValueType, unsubscribe?: () =>
53
53
  export class ContextRequestEvent<T extends UnknownContext> extends Event {
54
54
  context: T;
55
55
  callback: ContextCallback<ContextType<T>>;
56
- subscribe?: boolean;
56
+ subscribe?: boolean | undefined;
57
57
 
58
58
  public constructor(context: T, callback: ContextCallback<ContextType<T>>, subscribe?: boolean) {
59
59
  super("context-request", { bubbles: true, composed: true });
@@ -59,5 +59,5 @@ export function injectableEl<T extends ConstructableToken<InjectableEl>>(
59
59
  },
60
60
  };
61
61
 
62
- return def[Base.name];
62
+ return def[Base.name] as T;
63
63
  }
@@ -1,10 +1,7 @@
1
1
  import { injectableEl } from "./dom/injectable-el.js";
2
+ import type { InjectableEl } from "./dom/injectable-el.js";
2
3
  import { INJECTOR, Injector } from "./injector.js";
3
- import type {
4
- ConstructableToken,
5
- InjectionToken,
6
- Provider,
7
- } from "./provider.js";
4
+ import type { ConstructableToken, InjectionToken, Provider } from "./provider.js";
8
5
 
9
6
  export interface InjectableOpts {
10
7
  name?: string;
@@ -41,18 +38,19 @@ export function injectable(opts?: InjectableOpts) {
41
38
  },
42
39
  };
43
40
 
41
+ const injectableBase = def[Base.name];
42
+
43
+ if (!injectableBase) {
44
+ throw new Error(`Failed to create injectable class for ${Base.name}`);
45
+ }
46
+
44
47
  // Only apply custom element bootstrap logic if the decorated class is an HTMLElement
45
48
  if ("HTMLElement" in globalThis) {
46
- if (
47
- Object.prototype.isPrototypeOf.call(
48
- HTMLElement.prototype,
49
- Base.prototype,
50
- )
51
- ) {
52
- return injectableEl(def[Base.name], ctx);
49
+ if (Object.prototype.isPrototypeOf.call(HTMLElement.prototype, Base.prototype)) {
50
+ return injectableEl(injectableBase, ctx);
53
51
  }
54
52
  }
55
53
 
56
- return def[Base.name];
54
+ return injectableBase;
57
55
  };
58
56
  }
@@ -288,3 +288,21 @@ it("should create a non singleton instance", () => {
288
288
 
289
289
  assert.notEqual(app.inject(A, { singleton: false }), app.inject(A, { singleton: false }));
290
290
  });
291
+
292
+ it("should forward singleton option to parent injector", () => {
293
+ class Service {}
294
+
295
+ const parent = new Injector();
296
+ const child = new Injector({ parent });
297
+
298
+ const a = child.inject(Service, { singleton: false });
299
+ const b = child.inject(Service, { singleton: false });
300
+
301
+ assert.notEqual(a, b);
302
+ });
303
+
304
+ it("should assign injector name from options", () => {
305
+ const app = new Injector({ name: "app" });
306
+
307
+ assert.equal(app.name, "app");
308
+ });
@@ -39,11 +39,12 @@ export class Injector {
39
39
  // keep track of instances. One Token can have one instance
40
40
  #instances = new WeakMap<InjectionToken<any>, any>();
41
41
 
42
- name?: string;
43
- parent?: Injector;
42
+ name?: string | undefined;
43
+ parent?: Injector | undefined;
44
44
  providers: ProviderMap;
45
45
 
46
46
  constructor(opts?: InjectorOpts) {
47
+ this.name = opts?.name;
47
48
  this.parent = opts?.parent;
48
49
  this.providers = new ProviderMap(opts?.providers);
49
50
  }
@@ -63,7 +64,10 @@ export class Injector {
63
64
  }
64
65
 
65
66
  // resolves and retuns and instance of the requested service
66
- inject<T>(token: InjectionToken<T>, opts?: { ignoreParent?: boolean; singleton?: boolean }): T {
67
+ inject<T>(
68
+ token: InjectionToken<T>,
69
+ opts?: { ignoreParent?: boolean | undefined; singleton?: boolean | undefined },
70
+ ): T {
67
71
  // check for a local instance
68
72
  if (opts?.singleton !== false && this.#instances.has(token)) {
69
73
  const instance = this.#instances.get(token);
@@ -96,7 +100,7 @@ export class Injector {
96
100
 
97
101
  // check for a parent and attempt to get there
98
102
  if (this.parent && opts?.ignoreParent !== true) {
99
- return this.parent.inject(token);
103
+ return this.parent.inject(token, opts);
100
104
  }
101
105
 
102
106
  if (token instanceof StaticToken) {
@@ -4,7 +4,8 @@ import { inject } from "./inject.js";
4
4
  import { injectable } from "./injectable.js";
5
5
  import { Injector } from "./injector.js";
6
6
  import { created, injected } from "./lifecycle.js";
7
- import { LifecycleCallback, readInjector } from "./metadata.js";
7
+ import { readInjector } from "./metadata.js";
8
+ import type { LifecycleCallback } from "./metadata.js";
8
9
  import { StaticToken } from "./provider.js";
9
10
 
10
11
  it("should call onInit and onInject when a service is first created", () => {
@@ -59,10 +60,10 @@ it("should pass the injector to all lifecycle callbacks", () => {
59
60
  const service = i.inject(MyService);
60
61
  const injector = readInjector(service);
61
62
 
62
- assert.equal(service.res[0], injector);
63
- assert.equal(service.res[0].parent, i);
64
- assert.equal(service.res[1], injector);
65
- assert.equal(service.res[1].parent, i);
63
+ assert.equal(service.res[0]!, injector);
64
+ assert.equal(service.res[0]!.parent, i);
65
+ assert.equal(service.res[1]!, injector);
66
+ assert.equal(service.res[1]!.parent, i);
66
67
  });
67
68
 
68
69
  it("should call onInject any time a service is returned", () => {
@@ -246,7 +247,6 @@ it("should execute callbacks when condition returns empty object", () => {
246
247
  });
247
248
  });
248
249
 
249
-
250
250
  it("should pass the injector to the condition", () => {
251
251
  const IS_PROD = new StaticToken("isProd", () => false);
252
252
 
@@ -291,4 +291,4 @@ it("should pass the instance to the condition", () => {
291
291
 
292
292
  const service = i.inject(MyService);
293
293
  assert.equal(service.count, 0); // not called because instance.enabled is false
294
- });
294
+ });
@@ -13,10 +13,7 @@ export function injected<T>(condition?: LifecycleCondition<T>) {
13
13
  ): void {
14
14
  const metadata: InjectableMetadata<T> = ctx.metadata;
15
15
  metadata.onInjected ??= [];
16
- metadata.onInjected.push({
17
- callback: val,
18
- condition,
19
- });
16
+ metadata.onInjected.push({ callback: val, condition });
20
17
  };
21
18
  }
22
19
 
@@ -27,10 +24,7 @@ export function created<T>(condition?: LifecycleCondition<T>) {
27
24
  ): void {
28
25
  const metadata: InjectableMetadata<T> = ctx.metadata;
29
26
  metadata.onCreated ??= [];
30
- metadata.onCreated.push({
31
- callback: val,
32
- condition,
33
- });
27
+ metadata.onCreated.push({ callback: val, condition });
34
28
  };
35
29
  }
36
30
 
@@ -47,7 +41,7 @@ export function callLifecycle(
47
41
  continue;
48
42
  }
49
43
  }
50
- callback.call(instance, injector);
44
+ callback?.call(instance, injector);
51
45
  }
52
46
  }
53
47
  }
@@ -5,16 +5,18 @@ import type { InjectionToken } from "./provider.js";
5
5
 
6
6
  export type LifecycleCallback = (i: Injector) => void;
7
7
 
8
- export type LifecycleCondition<T> = (ctx:{injector: Injector, instance: T}) => { enabled?: boolean };
8
+ export type LifecycleCondition<T> = (ctx: { injector: Injector; instance: T }) => {
9
+ enabled?: boolean | undefined;
10
+ };
9
11
 
10
12
  export interface LifecycleMethod<T> {
11
- callback: LifecycleCallback;
12
- condition?: LifecycleCondition<T>;
13
+ callback?: LifecycleCallback | undefined;
14
+ condition?: LifecycleCondition<T> | undefined;
13
15
  }
14
16
 
15
17
  export interface InjectableMetadata<T> {
16
- onCreated?: LifecycleMethod<T>[];
17
- onInjected?: LifecycleMethod<T>[];
18
+ onCreated?: LifecycleMethod<T>[] | undefined;
19
+ onInjected?: LifecycleMethod<T>[] | undefined;
18
20
  }
19
21
 
20
22
  export function readMetadata<T>(target: InjectionToken<T>): InjectableMetadata<T> | null {
@@ -4,7 +4,7 @@ export type ProviderFactory<T> = (injector: Injector) => T;
4
4
 
5
5
  export class StaticToken<T> {
6
6
  #name: string;
7
- #factory?: ProviderFactory<T>;
7
+ #factory?: ProviderFactory<T> | undefined;
8
8
 
9
9
  [Symbol.metadata] = null;
10
10
 
package/src/lib.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { Injector } from "./lib/injector.js";
2
2
  export {
3
- Provider,
4
- ConstructableToken,
3
+ type Provider,
4
+ type ConstructableToken,
5
5
  StaticToken,
6
- InjectionToken,
6
+ type InjectionToken,
7
7
  } from "./lib/provider.js";
8
8
  export { injectable } from "./lib/injectable.js";
9
- export { inject, injectAll, Injected } from "./lib/inject.js";
9
+ export { inject, injectAll, type Injected } from "./lib/inject.js";
10
10
  export { injected, created } from "./lib/lifecycle.js";
11
11
  export { DOMInjector } from "./lib/dom/dom-injector.js";
@@ -1,3 +1,4 @@
1
1
  import { type Context } from "./protocol.js";
2
2
  import type { Injector } from "../injector.js";
3
3
  export declare const INJECTOR_CTX: Context<"injector", Injector>;
4
+ //# sourceMappingURL=injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../../src/lib/context/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,eAAe,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAC5B,CAAC"}
@@ -6,16 +6,47 @@ declare global {
6
6
  "context-request": ContextRequestEvent<Context<unknown, unknown>>;
7
7
  }
8
8
  }
9
+ /**
10
+ * A context key.
11
+ *
12
+ * A context key can be any type of object, including strings and symbols. The
13
+ * Context type brands the key type with the `__context__` property that
14
+ * carries the type of the value the context references.
15
+ */
9
16
  export type Context<KeyType, ValueType> = KeyType & {
10
17
  __context__: ValueType;
11
18
  };
19
+ /**
20
+ * An unknown context type
21
+ */
12
22
  export type UnknownContext = Context<unknown, unknown>;
23
+ /**
24
+ * A helper type which can extract a Context value type from a Context type
25
+ */
13
26
  export type ContextType<T extends UnknownContext> = T extends Context<infer _, infer V> ? V : never;
27
+ /**
28
+ * A function which creates a Context value object
29
+ */
14
30
  export declare function createContext<KeyType, ValueType>(key: KeyType): Context<KeyType, ValueType>;
31
+ /**
32
+ * A callback which is provided by a context requester and is called with the value satisfying the request.
33
+ * This callback can be called multiple times by context providers as the requested value is changed.
34
+ */
15
35
  export type ContextCallback<ValueType> = (value: ValueType, unsubscribe?: () => void) => void;
36
+ /**
37
+ * An event fired by a context requester to signal it desires a named context.
38
+ *
39
+ * A provider should inspect the `context` property of the event to determine if it has a value that can
40
+ * satisfy the request, calling the `callback` with the requested value if so.
41
+ *
42
+ * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback
43
+ * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`
44
+ * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.
45
+ */
16
46
  export declare class ContextRequestEvent<T extends UnknownContext> extends Event {
17
47
  context: T;
18
48
  callback: ContextCallback<ContextType<T>>;
19
- subscribe?: boolean;
49
+ subscribe?: boolean | undefined;
20
50
  constructor(context: T, callback: ContextCallback<ContextType<T>>, subscribe?: boolean);
21
51
  }
52
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/lib/context/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe;QACvB,iBAAiB,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KACnE;IACD,UAAU,gBAAgB;QACxB,iBAAiB,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KACnE;CACF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,GAAG;IAAE,WAAW,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpG;;GAEG;AAEH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAC9C,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAE9F;;;;;;;;;GASG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,KAAK;IACtE,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;gBAEb,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO;CAO9F"}
@@ -1,6 +1,19 @@
1
+ /**
2
+ * A function which creates a Context value object
3
+ */
1
4
  export function createContext(key) {
2
5
  return key;
3
6
  }
7
+ /**
8
+ * An event fired by a context requester to signal it desires a named context.
9
+ *
10
+ * A provider should inspect the `context` property of the event to determine if it has a value that can
11
+ * satisfy the request, calling the `callback` with the requested value if so.
12
+ *
13
+ * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback
14
+ * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`
15
+ * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.
16
+ */
4
17
  export class ContextRequestEvent extends Event {
5
18
  context;
6
19
  callback;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/lib/context/protocol.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,aAAa,CAAqB,GAAY;IAC5D,OAAO,GAAkC,CAAC;AAC5C,CAAC;AAkBD,MAAM,OAAO,mBAA8C,SAAQ,KAAK;IACtE,OAAO,CAAI;IACX,QAAQ,CAAkC;IAC1C,SAAS,CAAW;IAEpB,YAAmB,OAAU,EAAE,QAAyC,EAAE,SAAmB;QAC3F,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/lib/context/protocol.ts"],"names":[],"mappings":"AA4BA;;GAEG;AAEH,MAAM,UAAU,aAAa,CAAqB,GAAY;IAC5D,OAAO,GAAkC,CAAC;AAC5C,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAA8C,SAAQ,KAAK;IACtE,OAAO,CAAI;IACX,QAAQ,CAAkC;IAC1C,SAAS,CAAuB;IAEhC,YAAmB,OAAU,EAAE,QAAyC,EAAE,SAAmB;QAC3F,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
@@ -1,7 +1,11 @@
1
1
  import { Injector } from "../injector.js";
2
+ /**
3
+ * Special Injector that allows you to register an injector with a particular DOM element.
4
+ */
2
5
  export declare class DOMInjector extends Injector {
3
6
  #private;
4
7
  get isAttached(): boolean;
5
8
  attach(element: Document | HTMLElement): void;
6
9
  detach(): void;
7
10
  }
11
+ //# sourceMappingURL=dom-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-injector.d.ts","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;;IAIvC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI;IAmC7C,MAAM,IAAI,IAAI;CAOf"}
@@ -1,6 +1,9 @@
1
1
  import { INJECTOR_CTX } from "../context/injector.js";
2
2
  import { ContextRequestEvent } from "../context/protocol.js";
3
3
  import { INJECTOR, Injector } from "../injector.js";
4
+ /**
5
+ * Special Injector that allows you to register an injector with a particular DOM element.
6
+ */
4
7
  export class DOMInjector extends Injector {
5
8
  #element = null;
6
9
  #controller = null;
@@ -1 +1 @@
1
- {"version":3,"file":"dom-injector.js","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAKpD,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,QAAQ,GAAkC,IAAI,CAAC;IAC/C,WAAW,GAA2B,IAAI,CAAC;IAE3C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAA+B;QACpC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,QAAQ,uCAAuC,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC5B,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,GAAG,KAA4C,CAAC;YAEvD,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBACzB,CAAC,CAAC,eAAe,EAAE,CAAC;oBAEpB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"dom-injector.js","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,QAAQ,GAAkC,IAAI,CAAC;IAC/C,WAAW,GAA2B,IAAI,CAAC;IAE3C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAA+B;QACpC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,QAAQ,uCAAuC,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC5B,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,GAAG,KAA4C,CAAC;YAEvD,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBACzB,CAAC,CAAC,eAAe,EAAE,CAAC;oBAEpB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=dom-injector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-injector.test.d.ts","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.test.ts"],"names":[],"mappings":""}
@@ -1,4 +1,37 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
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
+ };
2
35
  import { assert } from "chai";
3
36
  import { INJECTOR_CTX } from "../context/injector.js";
4
37
  import { ContextRequestEvent } from "../context/protocol.js";
@@ -1 +1 @@
1
- {"version":3,"file":"dom-injector.test.js","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom-injector.test.js","sourceRoot":"","sources":["../../../src/lib/dom/dom-injector.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC5D,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,MAAM,GAAoB,IAAI,CAAC;IAEnC,IAAI,CAAC,aAAa,CAChB,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1C,MAAM,GAAG,CAAC,CAAC;IACb,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/B,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACjE,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IAEnC,MAAM,EAAE,GAAG,CAAC,CAAsC,EAAE,EAAE;QACpD,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YAC/B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAEtD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;IACvF,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IAEnC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEzC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEpB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;QAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IAEnC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEpD,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8BAA8B,EAAE,CAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,UAAU;QACd,IAAI,GAAG,MAAM,CAAC;KACf;IAED,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;QAC/B,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KACjE,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAGzB,SAAS;gCADd,UAAU,EAAE;;;;0BACW,WAAW;6BAAnB,SAAQ,WAAW;;;;gBAAnC,6KASC;;;gBATK,uDAAS;;YACb,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAE7B,iBAAiB;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAElC,IAAI,EAAE,CAAC;YACT,CAAC;;;;IAGH,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5B,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -5,3 +5,4 @@ export type InjectableEl = HTMLElement & {
5
5
  [INJECTOR]: Injector;
6
6
  };
7
7
  export declare function injectableEl<T extends ConstructableToken<InjectableEl>>(Base: T, ctx: ClassDecoratorContext): T;
8
+ //# sourceMappingURL=injectable-el.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectable-el.d.ts","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElE,wBAAgB,YAAY,CAAC,CAAC,SAAS,kBAAkB,CAAC,YAAY,CAAC,EACrE,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,qBAAqB,GACzB,CAAC,CAiDH"}
@@ -27,6 +27,9 @@ export function injectableEl(Base, ctx) {
27
27
  }
28
28
  }
29
29
  disconnectedCallback() {
30
+ // super disconnect needs to be called first.
31
+ // If not the context could be different since the element will be removed from the injector chain.
32
+ // This leads to unexpected behaviors.
30
33
  if (super.disconnectedCallback) {
31
34
  super.disconnectedCallback();
32
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"injectable-el.js","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,GAA0B;IAE1B,MAAM,QAAQ,GAAqC,GAAG,CAAC,QAAQ,CAAC;IAEhE,MAAM,GAAG,GAAG;QACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAM,SAAQ,IAAI;YAC7B,YAAY,GAAG,CAAQ;gBACrB,KAAK,EAAE,CAAC;gBAER,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;wBACpD,CAAC,CAAC,eAAe,EAAE,CAAC;wBAEpB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC;YAED,iBAAiB;gBACf,IAAI,CAAC,aAAa,CAChB,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;gBAC9B,CAAC,CAAC,CACH,CAAC;gBAEF,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAE1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,oBAAoB;gBAIlB,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACpC,CAAC;SACF;KACF,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"injectable-el.js","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,GAA0B;IAE1B,MAAM,QAAQ,GAAqC,GAAG,CAAC,QAAQ,CAAC;IAEhE,MAAM,GAAG,GAAG;QACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAM,SAAQ,IAAI;YAC7B,YAAY,GAAG,CAAQ;gBACrB,KAAK,EAAE,CAAC;gBAER,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;wBACpD,CAAC,CAAC,eAAe,EAAE,CAAC;wBAEpB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC;YAED,iBAAiB;gBACf,IAAI,CAAC,aAAa,CAChB,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;gBAC9B,CAAC,CAAC,CACH,CAAC;gBAEF,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAE1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,oBAAoB;gBAClB,6CAA6C;gBAC7C,mGAAmG;gBACnG,sCAAsC;gBACtC,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACpC,CAAC;SACF;KACF,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAM,CAAC;AAC7B,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=injectable-el.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectable-el.test.d.ts","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.test.ts"],"names":[],"mappings":""}
@@ -1,4 +1,37 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
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
+ };
2
35
  import { assert } from "chai";
3
36
  import { inject } from "../inject.js";
4
37
  import { injectable } from "../injectable.js";
@@ -140,7 +173,7 @@ it("should handle parent HTML Injectors", async () => {
140
173
  customElements.define("injectable-parent-1", Parent);
141
174
  customElements.define("injectable-child-1", Child);
142
175
  const el = document.createElement("div");
143
- el.innerHTML = `
176
+ el.innerHTML = /*html*/ `
144
177
  <injectable-parent-1>
145
178
  <injectable-child-1></injectable-child-1>
146
179
  </injectable-parent-1>
@@ -218,7 +251,7 @@ it("should handle changing contexts", async () => {
218
251
  customElements.define("ctx-2", Ctx2);
219
252
  customElements.define("ctx-child", Child);
220
253
  const el = document.createElement("div");
221
- el.innerHTML = `
254
+ el.innerHTML = /*html*/ `
222
255
  <div>
223
256
  <ctx-1>
224
257
  <ctx-child></ctx-child>
@@ -310,11 +343,14 @@ it("should call disconnectedCallback when element is removed from DOM", async ()
310
343
  })();
311
344
  customElements.define("test-disconnect", TestElement);
312
345
  const el = new TestElement();
346
+ // Initially, neither callback should have been called
313
347
  assert.isFalse(el.connectedCalled);
314
348
  assert.isFalse(el.disconnectedCalled);
349
+ // Add to DOM - connectedCallback should be called
315
350
  document.body.append(el);
316
351
  assert.isTrue(el.connectedCalled);
317
352
  assert.isFalse(el.disconnectedCalled);
353
+ // Remove from DOM - disconnectedCallback should be called
318
354
  el.remove();
319
355
  assert.isTrue(el.connectedCalled);
320
356
  assert.isTrue(el.disconnectedCalled);
@@ -1 +1 @@
1
- {"version":3,"file":"injectable-el.test.js","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injectable-el.test.js","sourceRoot":"","sources":["../../../src/lib/dom/injectable-el.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,16 @@
1
1
  import type { InjectionToken } from "./provider.js";
2
2
  export type Injected<T> = () => T;
3
+ /**
4
+ * Injects a service into an `injectable` class.
5
+ */
3
6
  export declare function inject<T>(token: InjectionToken<T>, opts?: {
4
7
  singleton?: boolean;
5
8
  ignoreParent?: boolean;
6
9
  }): Injected<T>;
10
+ /**
11
+ * Finds and injects ALL instances of a service from the current points up.
12
+ */
7
13
  export declare function injectAll<T>(token: InjectionToken<T>, opts?: {
8
14
  singleton: boolean;
9
15
  }): Injected<T[]>;
16
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/lib/inject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAElC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EACtB,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,QAAQ,CAAC,CAAC,CAAC,CAEb;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAC5B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAEf"}
@@ -1,7 +1,13 @@
1
1
  import { readInjector } from "./metadata.js";
2
+ /**
3
+ * Injects a service into an `injectable` class.
4
+ */
2
5
  export function inject(token, opts) {
3
6
  return internalInject((i) => i.inject(token, opts));
4
7
  }
8
+ /**
9
+ * Finds and injects ALL instances of a service from the current points up.
10
+ */
5
11
  export function injectAll(token, opts) {
6
12
  return internalInject((i) => i.injectAll(token, opts));
7
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/lib/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQ7C,MAAM,UAAU,MAAM,CACpB,KAAwB,EACxB,IAAsD;IAEtD,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAKD,MAAM,UAAU,SAAS,CACvB,KAAwB,EACxB,IAA6B;IAE7B,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAsB,EAAsB;IACjE,OAAO;QACL,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,gKAAgK,CACzL,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/lib/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C;;GAEG;AACH,MAAM,UAAU,MAAM,CACpB,KAAwB,EACxB,IAAsD;IAEtD,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAwB,EACxB,IAA6B;IAE7B,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAsB,EAAsB;IACjE,OAAO;QACL,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,gKAAgK,CACzL,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}