@zudojs/container 0.0.1

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 (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/containerCore/containerCore.core.d.ts +52 -0
  5. package/dist/containerCore/containerCore.core.d.ts.map +1 -0
  6. package/dist/containerCore/containerCore.core.js +150 -0
  7. package/dist/containerCore/containerCore.core.js.map +1 -0
  8. package/dist/containerCore/containerCore.scope.d.ts +58 -0
  9. package/dist/containerCore/containerCore.scope.d.ts.map +1 -0
  10. package/dist/containerCore/containerCore.scope.js +100 -0
  11. package/dist/containerCore/containerCore.scope.js.map +1 -0
  12. package/dist/containerCore/containerCore.type.d.ts +40 -0
  13. package/dist/containerCore/containerCore.type.d.ts.map +1 -0
  14. package/dist/containerCore/containerCore.type.js +5 -0
  15. package/dist/containerCore/containerCore.type.js.map +1 -0
  16. package/dist/containerCore/index.d.ts +9 -0
  17. package/dist/containerCore/index.d.ts.map +1 -0
  18. package/dist/containerCore/index.js +9 -0
  19. package/dist/containerCore/index.js.map +1 -0
  20. package/dist/containerLifecycle/containerLifecycle.core.d.ts +56 -0
  21. package/dist/containerLifecycle/containerLifecycle.core.d.ts.map +1 -0
  22. package/dist/containerLifecycle/containerLifecycle.core.js +145 -0
  23. package/dist/containerLifecycle/containerLifecycle.core.js.map +1 -0
  24. package/dist/containerLifecycle/index.d.ts +7 -0
  25. package/dist/containerLifecycle/index.d.ts.map +1 -0
  26. package/dist/containerLifecycle/index.js +7 -0
  27. package/dist/containerLifecycle/index.js.map +1 -0
  28. package/dist/containerOptions/containerOptions.type.d.ts +54 -0
  29. package/dist/containerOptions/containerOptions.type.d.ts.map +1 -0
  30. package/dist/containerOptions/containerOptions.type.js +73 -0
  31. package/dist/containerOptions/containerOptions.type.js.map +1 -0
  32. package/dist/containerOptions/index.d.ts +7 -0
  33. package/dist/containerOptions/index.d.ts.map +1 -0
  34. package/dist/containerOptions/index.js +7 -0
  35. package/dist/containerOptions/index.js.map +1 -0
  36. package/dist/containerProvider/containerProvider.core.d.ts +59 -0
  37. package/dist/containerProvider/containerProvider.core.d.ts.map +1 -0
  38. package/dist/containerProvider/containerProvider.core.js +61 -0
  39. package/dist/containerProvider/containerProvider.core.js.map +1 -0
  40. package/dist/containerProvider/index.d.ts +7 -0
  41. package/dist/containerProvider/index.d.ts.map +1 -0
  42. package/dist/containerProvider/index.js +7 -0
  43. package/dist/containerProvider/index.js.map +1 -0
  44. package/dist/containerRegistration/containerRegistration.core.d.ts +54 -0
  45. package/dist/containerRegistration/containerRegistration.core.d.ts.map +1 -0
  46. package/dist/containerRegistration/containerRegistration.core.js +135 -0
  47. package/dist/containerRegistration/containerRegistration.core.js.map +1 -0
  48. package/dist/containerRegistration/index.d.ts +7 -0
  49. package/dist/containerRegistration/index.d.ts.map +1 -0
  50. package/dist/containerRegistration/index.js +7 -0
  51. package/dist/containerRegistration/index.js.map +1 -0
  52. package/dist/containerRegistry/containerRegistry.core.d.ts +36 -0
  53. package/dist/containerRegistry/containerRegistry.core.d.ts.map +1 -0
  54. package/dist/containerRegistry/containerRegistry.core.js +153 -0
  55. package/dist/containerRegistry/containerRegistry.core.js.map +1 -0
  56. package/dist/containerRegistry/containerRegistry.error.d.ts +12 -0
  57. package/dist/containerRegistry/containerRegistry.error.d.ts.map +1 -0
  58. package/dist/containerRegistry/containerRegistry.error.js +22 -0
  59. package/dist/containerRegistry/containerRegistry.error.js.map +1 -0
  60. package/dist/containerRegistry/containerRegistry.type.d.ts +43 -0
  61. package/dist/containerRegistry/containerRegistry.type.d.ts.map +1 -0
  62. package/dist/containerRegistry/containerRegistry.type.js +14 -0
  63. package/dist/containerRegistry/containerRegistry.type.js.map +1 -0
  64. package/dist/containerRegistry/index.d.ts +9 -0
  65. package/dist/containerRegistry/index.d.ts.map +1 -0
  66. package/dist/containerRegistry/index.js +9 -0
  67. package/dist/containerRegistry/index.js.map +1 -0
  68. package/dist/containerResolution/containerResolution.core.d.ts +26 -0
  69. package/dist/containerResolution/containerResolution.core.d.ts.map +1 -0
  70. package/dist/containerResolution/containerResolution.core.js +125 -0
  71. package/dist/containerResolution/containerResolution.core.js.map +1 -0
  72. package/dist/containerResolution/containerResolution.error.d.ts +8 -0
  73. package/dist/containerResolution/containerResolution.error.d.ts.map +1 -0
  74. package/dist/containerResolution/containerResolution.error.js +8 -0
  75. package/dist/containerResolution/containerResolution.error.js.map +1 -0
  76. package/dist/containerResolution/containerResolution.type.d.ts +38 -0
  77. package/dist/containerResolution/containerResolution.type.d.ts.map +1 -0
  78. package/dist/containerResolution/containerResolution.type.js +5 -0
  79. package/dist/containerResolution/containerResolution.type.js.map +1 -0
  80. package/dist/containerResolution/index.d.ts +8 -0
  81. package/dist/containerResolution/index.d.ts.map +1 -0
  82. package/dist/containerResolution/index.js +8 -0
  83. package/dist/containerResolution/index.js.map +1 -0
  84. package/dist/containerScope/containerScope.type.d.ts +17 -0
  85. package/dist/containerScope/containerScope.type.d.ts.map +1 -0
  86. package/dist/containerScope/containerScope.type.js +43 -0
  87. package/dist/containerScope/containerScope.type.js.map +1 -0
  88. package/dist/containerScope/index.d.ts +7 -0
  89. package/dist/containerScope/index.d.ts.map +1 -0
  90. package/dist/containerScope/index.js +7 -0
  91. package/dist/containerScope/index.js.map +1 -0
  92. package/dist/containerToken/containerToken.type.d.ts +23 -0
  93. package/dist/containerToken/containerToken.type.d.ts.map +1 -0
  94. package/dist/containerToken/containerToken.type.js +45 -0
  95. package/dist/containerToken/containerToken.type.js.map +1 -0
  96. package/dist/containerToken/index.d.ts +7 -0
  97. package/dist/containerToken/index.d.ts.map +1 -0
  98. package/dist/containerToken/index.js +7 -0
  99. package/dist/containerToken/index.js.map +1 -0
  100. package/dist/index.d.ts +15 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +15 -0
  103. package/dist/index.js.map +1 -0
  104. package/package.json +47 -0
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Container registration registry.
3
+ */
4
+ import { defineRegistration, getRegistrationToken, } from "../containerRegistration/containerRegistration.core.js";
5
+ import { unwrapToken } from "../containerToken/containerToken.type.js";
6
+ import { RegistryOperation } from "./containerRegistry.type.js";
7
+ import { DuplicateRegistrationError, RegistrationNotFoundError, } from "@zudojs/errors";
8
+ import { describeRegistryToken } from "./containerRegistry.error.js";
9
+ export class ContainerRegistry {
10
+ registrations = new Map();
11
+ listeners = new Set();
12
+ allowDuplicates;
13
+ constructor(options = {}) {
14
+ this.allowDuplicates = options.allowDuplicates ?? false;
15
+ }
16
+ register(token, provider, options = {}) {
17
+ const t = unwrapToken(token);
18
+ if (this.registrations.has(t) && !this.allowDuplicates)
19
+ throw new DuplicateRegistrationError(describeRegistryToken(t));
20
+ const prev = this.registrations.get(t);
21
+ const reg = defineRegistration(t, provider, options);
22
+ this.registrations.set(t, reg);
23
+ this.emit({
24
+ operation: prev ? RegistryOperation.REPLACE : RegistryOperation.REGISTER,
25
+ token: t,
26
+ registration: reg,
27
+ previous: prev,
28
+ timestamp: new Date(),
29
+ });
30
+ return reg;
31
+ }
32
+ registerRegistration(registration) {
33
+ const t = getRegistrationToken(registration);
34
+ if (this.registrations.has(t) && !this.allowDuplicates)
35
+ throw new DuplicateRegistrationError(describeRegistryToken(t));
36
+ const prev = this.registrations.get(t);
37
+ this.registrations.set(t, registration);
38
+ this.emit({
39
+ operation: prev ? RegistryOperation.REPLACE : RegistryOperation.REGISTER,
40
+ token: t,
41
+ registration,
42
+ previous: prev,
43
+ timestamp: new Date(),
44
+ });
45
+ return registration;
46
+ }
47
+ replace(token, provider, options = {}) {
48
+ const t = unwrapToken(token);
49
+ if (!this.registrations.has(t))
50
+ throw new RegistrationNotFoundError(describeRegistryToken(t));
51
+ const prev = this.registrations.get(t);
52
+ const reg = defineRegistration(t, provider, options);
53
+ this.registrations.set(t, reg);
54
+ this.emit({
55
+ operation: RegistryOperation.REPLACE,
56
+ token: t,
57
+ registration: reg,
58
+ previous: prev,
59
+ timestamp: new Date(),
60
+ });
61
+ return reg;
62
+ }
63
+ get(token) {
64
+ return this.registrations.get(unwrapToken(token));
65
+ }
66
+ getOrThrow(token) {
67
+ const r = this.get(token);
68
+ if (!r)
69
+ throw new RegistrationNotFoundError(describeRegistryToken(unwrapToken(token)));
70
+ return r;
71
+ }
72
+ has(token) {
73
+ return this.registrations.has(unwrapToken(token));
74
+ }
75
+ remove(token) {
76
+ const t = unwrapToken(token);
77
+ const prev = this.registrations.get(t);
78
+ if (!prev)
79
+ return false;
80
+ const removed = this.registrations.delete(t);
81
+ if (removed)
82
+ this.emit({
83
+ operation: RegistryOperation.REMOVE,
84
+ token: t,
85
+ previous: prev,
86
+ timestamp: new Date(),
87
+ });
88
+ return removed;
89
+ }
90
+ removeOrThrow(token) {
91
+ if (!this.remove(unwrapToken(token)))
92
+ throw new RegistrationNotFoundError(describeRegistryToken(unwrapToken(token)));
93
+ }
94
+ get size() {
95
+ return this.registrations.size;
96
+ }
97
+ getAll() {
98
+ return [...this.registrations.values()];
99
+ }
100
+ getTokens() {
101
+ return [...this.registrations.keys()];
102
+ }
103
+ getByModule(module) {
104
+ return [...this.registrations.values()].filter((r) => r.metadata.module === module);
105
+ }
106
+ getByScope(scope) {
107
+ return [...this.registrations.values()].filter((r) => r.scope === scope);
108
+ }
109
+ find(predicate) {
110
+ return [...this.registrations.values()].filter(predicate);
111
+ }
112
+ getMetadata(token) {
113
+ return this.get(token)?.metadata;
114
+ }
115
+ clear() {
116
+ if (this.registrations.size === 0)
117
+ return;
118
+ this.registrations.clear();
119
+ this.emit({
120
+ operation: RegistryOperation.CLEAR,
121
+ token: Symbol.for("zudojs:container:registry"),
122
+ timestamp: new Date(),
123
+ });
124
+ }
125
+ subscribe(listener) {
126
+ this.listeners.add(listener);
127
+ return () => {
128
+ this.listeners.delete(listener);
129
+ };
130
+ }
131
+ clearListeners() {
132
+ this.listeners.clear();
133
+ }
134
+ emit(event) {
135
+ for (const l of this.listeners) {
136
+ try {
137
+ l(event);
138
+ }
139
+ catch {
140
+ /* noop */
141
+ }
142
+ }
143
+ }
144
+ snapshot() {
145
+ return this.getAll();
146
+ }
147
+ restore(regs) {
148
+ this.registrations.clear();
149
+ for (const r of regs)
150
+ this.registrations.set(getRegistrationToken(r), r);
151
+ }
152
+ }
153
+ //# sourceMappingURL=containerRegistry.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.core.js","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @zudojs/container/containerRegistry/containerRegistry.error
3
+ *
4
+ * Error classes re-exported from @zudojs/errors.
5
+ * This file retains the token description helper used by the registry.
6
+ */
7
+ import type { InjectionToken, Token } from "../containerToken/containerToken.type.js";
8
+ /**
9
+ * Describes a token for registry diagnostics.
10
+ */
11
+ export declare function describeRegistryToken<T>(token: Token<T> | InjectionToken<T>): string;
12
+ //# sourceMappingURL=containerRegistry.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.error.d.ts","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACN,MAAM,0CAA0C,CAAC;AAIlD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAClC,MAAM,CASR"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @zudojs/container/containerRegistry/containerRegistry.error
3
+ *
4
+ * Error classes re-exported from @zudojs/errors.
5
+ * This file retains the token description helper used by the registry.
6
+ */
7
+ import { unwrapToken } from "../containerToken/containerToken.type.js";
8
+ /**
9
+ * Describes a token for registry diagnostics.
10
+ */
11
+ export function describeRegistryToken(token) {
12
+ const normalized = unwrapToken(token);
13
+ if (typeof normalized === "string")
14
+ return normalized;
15
+ if (typeof normalized === "symbol") {
16
+ return normalized.description
17
+ ? `Symbol(${normalized.description})`
18
+ : "Symbol()";
19
+ }
20
+ return normalized.name || "AnonymousConstructor";
21
+ }
22
+ //# sourceMappingURL=containerRegistry.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.error.js","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAmC;IAEnC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,WAAW;YAC3B,CAAC,CAAC,UAAU,UAAU,CAAC,WAAW,GAAG;YACrC,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,IAAI,sBAAsB,CAAC;AACnD,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Types for the container registry.
3
+ */
4
+ import type { ContainerRegistration } from "../containerRegistration/containerRegistration.core.js";
5
+ import type { InjectionToken, Token } from "../containerToken/containerToken.type.js";
6
+ /**
7
+ * Normalized registry token.
8
+ */
9
+ export type RegistryToken<T = unknown> = Token<T> | InjectionToken<T>;
10
+ /**
11
+ * Registry change operation.
12
+ */
13
+ export declare enum RegistryOperation {
14
+ REGISTER = "register",
15
+ REPLACE = "replace",
16
+ REMOVE = "remove",
17
+ CLEAR = "clear"
18
+ }
19
+ /**
20
+ * Event emitted when the registry changes.
21
+ */
22
+ export interface RegistryChangeEvent<T = unknown> {
23
+ readonly operation: RegistryOperation;
24
+ readonly token: RegistryToken<T>;
25
+ readonly registration?: ContainerRegistration<T>;
26
+ readonly previous?: ContainerRegistration<T>;
27
+ readonly timestamp: Date;
28
+ }
29
+ /**
30
+ * Registry subscription callback.
31
+ */
32
+ export type RegistryListener<T = unknown> = (event: RegistryChangeEvent<T>) => void;
33
+ /**
34
+ * Registry options.
35
+ */
36
+ export interface ContainerRegistryOptions {
37
+ /**
38
+ * Whether duplicate registrations are allowed.
39
+ * Defaults to false.
40
+ */
41
+ readonly allowDuplicates?: boolean;
42
+ }
43
+ //# sourceMappingURL=containerRegistry.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.type.d.ts","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAEpG,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACN,MAAM,0CAA0C,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAEtE;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC1C,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Types for the container registry.
3
+ */
4
+ /**
5
+ * Registry change operation.
6
+ */
7
+ export var RegistryOperation;
8
+ (function (RegistryOperation) {
9
+ RegistryOperation["REGISTER"] = "register";
10
+ RegistryOperation["REPLACE"] = "replace";
11
+ RegistryOperation["REMOVE"] = "remove";
12
+ RegistryOperation["CLEAR"] = "clear";
13
+ })(RegistryOperation || (RegistryOperation = {}));
14
+ //# sourceMappingURL=containerRegistry.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.type.js","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH;;GAEG;AACH,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;IACnB,sCAAiB,CAAA;IACjB,oCAAe,CAAA;AACjB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @zudojs/container/containerRegistry
3
+ *
4
+ * Service registry storage and lookup.
5
+ */
6
+ export * from "./containerRegistry.type.js";
7
+ export { describeRegistryToken } from "./containerRegistry.error.js";
8
+ export * from "./containerRegistry.core.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containerRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @zudojs/container/containerRegistry
3
+ *
4
+ * Service registry storage and lookup.
5
+ */
6
+ export * from "./containerRegistry.type.js";
7
+ export { describeRegistryToken } from "./containerRegistry.error.js";
8
+ export * from "./containerRegistry.core.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containerRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Dependency resolver for Zudojs.
3
+ */
4
+ import type { RegistrationToken } from "../containerRegistration/containerRegistration.core.js";
5
+ import type { ContainerRegistry } from "../containerRegistry/containerRegistry.core.js";
6
+ import type { ResolutionCache, ResolutionOptions, ResolutionResult } from "./containerResolution.type.js";
7
+ export declare class ContainerResolver {
8
+ private readonly registry;
9
+ private readonly singletonCache;
10
+ constructor(registry: ContainerRegistry);
11
+ resolve<T>(token: RegistrationToken<T>, options?: ResolutionOptions): T;
12
+ resolveDetailed<T>(token: RegistrationToken<T>, options?: ResolutionOptions): ResolutionResult<T>;
13
+ private resolveInternal;
14
+ private createInstance;
15
+ private createFromFactory;
16
+ private createFromClass;
17
+ createScope(): ResolutionCache;
18
+ clearSingletons(): void;
19
+ hasSingleton<T>(token: RegistrationToken<T>): boolean;
20
+ getSingleton<T>(token: RegistrationToken<T>): T | undefined;
21
+ removeSingleton<T>(token: RegistrationToken<T>): boolean;
22
+ clearScope(cache: ResolutionCache): void;
23
+ resolveMany<T>(tokens: readonly RegistrationToken<T>[], options?: ResolutionOptions): T[];
24
+ canResolve<T>(token: RegistrationToken<T>): boolean;
25
+ }
26
+ //# sourceMappingURL=containerResolution.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.core.d.ts","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,wDAAwD,CAAC;AAIhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AASxF,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAQvC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IAEjD,YAAY,QAAQ,EAAE,iBAAiB,EAGtC;IAED,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,iBAAsB,GAAG,CAAC,CAE1E;IAED,eAAe,CAAC,CAAC,EACf,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAAC,CAAC,CAAC,CAKrB;IAED,OAAO,CAAC,eAAe;IAiEvB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,eAAe;IAIvB,WAAW,IAAI,eAAe,CAE7B;IACD,eAAe,IAAI,IAAI,CAEtB;IACD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAEpD;IACD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAE1D;IACD,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAEvD;IACD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEvC;IAED,WAAW,CAAC,CAAC,EACX,MAAM,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,EACvC,OAAO,GAAE,iBAAsB,GAC9B,CAAC,EAAE,CAEL;IAED,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAGlD;CACF"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Dependency resolver for Zudojs.
3
+ */
4
+ import { isClassProvider, isExistingProvider, isFactoryProvider, isValueProvider, normalizeProvider, } from "../containerProvider/containerProvider.core.js";
5
+ import { ContainerScope as Scope } from "../containerScope/containerScope.type.js";
6
+ import { getRegistrationToken } from "../containerRegistration/containerRegistration.core.js";
7
+ import { RegistrationNotFoundError } from "@zudojs/errors";
8
+ import { describeRegistryToken } from "../containerRegistry/containerRegistry.error.js";
9
+ import { unwrapToken } from "../containerToken/containerToken.type.js";
10
+ import { CircularDependencyError, ProviderResolutionError, } from "@zudojs/errors";
11
+ import { describeToken } from "../containerToken/containerToken.type.js";
12
+ export class ContainerResolver {
13
+ registry;
14
+ singletonCache;
15
+ constructor(registry) {
16
+ this.registry = registry;
17
+ this.singletonCache = new Map();
18
+ }
19
+ resolve(token, options = {}) {
20
+ return this.resolveDetailed(token, options).value;
21
+ }
22
+ resolveDetailed(token, options = {}) {
23
+ const normalized = unwrapToken(token);
24
+ const cache = options.cache ?? this.singletonCache;
25
+ const path = options.path ?? [];
26
+ return this.resolveInternal(normalized, cache, path, options);
27
+ }
28
+ resolveInternal(token, cache, path, options) {
29
+ if (path.includes(token))
30
+ throw new CircularDependencyError([...path, token].map((t) => describeToken(t)));
31
+ const registration = this.registry.get(token);
32
+ if (!registration) {
33
+ if (options.autoRegisterClasses !== false &&
34
+ typeof token === "function") {
35
+ this.registry.register(token, { useClass: token }, { scope: Scope.TRANSIENT });
36
+ return this.resolveInternal(token, cache, path, {
37
+ ...options,
38
+ autoRegisterClasses: false,
39
+ });
40
+ }
41
+ throw new RegistrationNotFoundError(describeRegistryToken(token));
42
+ }
43
+ const currentPath = [...path, token];
44
+ if (registration.scope !== Scope.TRANSIENT) {
45
+ const cached = cache.get(token);
46
+ if (cached !== undefined) {
47
+ return {
48
+ value: cached,
49
+ token,
50
+ registration,
51
+ scope: registration.scope,
52
+ fromCache: true,
53
+ path: currentPath,
54
+ };
55
+ }
56
+ }
57
+ const value = this.createInstance(registration, cache, currentPath, options);
58
+ if (registration.scope === Scope.SINGLETON)
59
+ this.singletonCache.set(token, value);
60
+ else if (registration.scope === Scope.SCOPED)
61
+ cache.set(token, value);
62
+ return {
63
+ value,
64
+ token,
65
+ registration,
66
+ scope: registration.scope,
67
+ fromCache: false,
68
+ path: currentPath,
69
+ };
70
+ }
71
+ createInstance(registration, cache, path, options) {
72
+ const provider = normalizeProvider(registration.provider);
73
+ try {
74
+ if (isValueProvider(provider))
75
+ return provider.useValue;
76
+ if (isExistingProvider(provider))
77
+ return this.resolve(provider.useExisting, { ...options, cache, path });
78
+ if (isFactoryProvider(provider))
79
+ return this.createFromFactory(provider, cache, path, options);
80
+ if (isClassProvider(provider))
81
+ return this.createFromClass(provider.useClass);
82
+ throw new Error("Unsupported container provider.");
83
+ }
84
+ catch (error) {
85
+ if (error instanceof CircularDependencyError ||
86
+ error instanceof ProviderResolutionError)
87
+ throw error;
88
+ const message = error instanceof Error ? error.message : undefined;
89
+ throw new ProviderResolutionError(describeRegistryToken(getRegistrationToken(registration)), message, error);
90
+ }
91
+ }
92
+ createFromFactory(provider, cache, path, options) {
93
+ const deps = provider.inject ?? [];
94
+ return provider.useFactory(...deps.map((d) => this.resolve(d, { ...options, cache, path })));
95
+ }
96
+ createFromClass(constructor) {
97
+ return new constructor();
98
+ }
99
+ createScope() {
100
+ return new Map();
101
+ }
102
+ clearSingletons() {
103
+ this.singletonCache.clear();
104
+ }
105
+ hasSingleton(token) {
106
+ return this.singletonCache.has(unwrapToken(token));
107
+ }
108
+ getSingleton(token) {
109
+ return this.singletonCache.get(unwrapToken(token));
110
+ }
111
+ removeSingleton(token) {
112
+ return this.singletonCache.delete(unwrapToken(token));
113
+ }
114
+ clearScope(cache) {
115
+ cache.clear();
116
+ }
117
+ resolveMany(tokens, options = {}) {
118
+ return tokens.map((t) => this.resolve(t, options));
119
+ }
120
+ canResolve(token) {
121
+ const t = unwrapToken(token);
122
+ return this.registry.has(t) || typeof t === "function";
123
+ }
124
+ }
125
+ //# sourceMappingURL=containerResolution.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.core.js","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/container/containerResolution/containerResolution.error
3
+ *
4
+ * Error classes re-exported from @zudojs/errors.
5
+ * Token description helpers live in containerToken.type.ts.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=containerResolution.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.error.d.ts","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/container/containerResolution/containerResolution.error
3
+ *
4
+ * Error classes re-exported from @zudojs/errors.
5
+ * Token description helpers live in containerToken.type.ts.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=containerResolution.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.error.js","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Types for dependency resolution.
3
+ */
4
+ import type { ContainerRegistration } from "../containerRegistration/containerRegistration.core.js";
5
+ import type { ContainerScope } from "../containerScope/containerScope.type.js";
6
+ import type { Token } from "../containerToken/containerToken.type.js";
7
+ /**
8
+ * A cache containing resolved dependency instances.
9
+ */
10
+ export type ResolutionCache = Map<Token<unknown>, unknown>;
11
+ /**
12
+ * Dependency resolution path.
13
+ * Used for diagnostics and circular dependency detection.
14
+ */
15
+ export type ResolutionPath = readonly Token<unknown>[];
16
+ /**
17
+ * Options controlling dependency resolution.
18
+ */
19
+ export interface ResolutionOptions {
20
+ /** Existing cache for the current resolution scope. */
21
+ readonly cache?: ResolutionCache;
22
+ /** Current dependency resolution path. Normally managed internally. */
23
+ readonly path?: ResolutionPath;
24
+ /** Whether to allow resolving unregistered classes directly from their constructors. Defaults to true. */
25
+ readonly autoRegisterClasses?: boolean;
26
+ }
27
+ /**
28
+ * Resolution result containing the resolved value and diagnostic information.
29
+ */
30
+ export interface ResolutionResult<T> {
31
+ readonly value: T;
32
+ readonly token: Token<T>;
33
+ readonly registration: ContainerRegistration<T>;
34
+ readonly scope: ContainerScope;
35
+ readonly fromCache: boolean;
36
+ readonly path: ResolutionPath;
37
+ }
38
+ //# sourceMappingURL=containerResolution.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.type.d.ts","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAEpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,0GAA0G;IAC1G,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for dependency resolution.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=containerResolution.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerResolution.type.js","sourceRoot":"","sources":["../../src/containerResolution/containerResolution.type.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/container/containerResolution
3
+ *
4
+ * Dependency resolution and injection.
5
+ */
6
+ export * from "./containerResolution.type.js";
7
+ export * from "./containerResolution.core.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containerResolution/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/container/containerResolution
3
+ *
4
+ * Dependency resolution and injection.
5
+ */
6
+ export * from "./containerResolution.type.js";
7
+ export * from "./containerResolution.core.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containerResolution/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Defines how long a dependency instance should live inside the dependency injection container.
3
+ */
4
+ export declare enum ContainerScope {
5
+ SINGLETON = "singleton",
6
+ SCOPED = "scoped",
7
+ TRANSIENT = "transient"
8
+ }
9
+ export declare const DEFAULT_CONTAINER_SCOPE: ContainerScope;
10
+ export declare function isContainerScope(value: unknown): value is ContainerScope;
11
+ export declare function resolveContainerScope(scope?: ContainerScope): ContainerScope;
12
+ export declare function isSingletonScope(scope: ContainerScope): boolean;
13
+ export declare function isScopedScope(scope: ContainerScope): boolean;
14
+ export declare function isTransientScope(scope: ContainerScope): boolean;
15
+ export declare function isCachedScope(scope: ContainerScope): boolean;
16
+ export declare function describeContainerScope(scope: ContainerScope): string;
17
+ //# sourceMappingURL=containerScope.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerScope.type.d.ts","sourceRoot":"","sources":["../../src/containerScope/containerScope.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,cAAyC,CAAC;AAEhF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,CAE5E;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAE/D;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAE5D;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAE/D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAE5D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAWpE"}