fragment-ts 1.0.26 → 1.0.28
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/dist/cli/commands/init.command.js +1 -1
- package/dist/core/container/di-container.d.ts +1 -0
- package/dist/core/container/di-container.d.ts.map +1 -1
- package/dist/core/container/di-container.js +50 -21
- package/dist/core/container/di-container.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/init.command.ts +1 -1
- package/src/core/container/di-container.ts +170 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di-container.d.ts","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAuB;IAEzC,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI;IAU/D,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"di-container.d.ts","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAuB;IAEzC,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI;IAU/D,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAsDzB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,2BAA2B;IAkDnC,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,iBAAiB;IAiBzB,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIxB,eAAe,IAAI,GAAG,EAAE;IAIxB,KAAK,IAAI,IAAI;IAQb,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -79,7 +79,8 @@ class DIContainer {
|
|
|
79
79
|
this.injectProperties(instance);
|
|
80
80
|
// Call @PostConstruct
|
|
81
81
|
const postConstructMethod = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.POST_CONSTRUCT, target);
|
|
82
|
-
if (postConstructMethod &&
|
|
82
|
+
if (postConstructMethod &&
|
|
83
|
+
typeof instance[postConstructMethod] === "function") {
|
|
83
84
|
console.log(` 🎯 Calling @PostConstruct: ${target.name}.${postConstructMethod}()`);
|
|
84
85
|
instance[postConstructMethod]();
|
|
85
86
|
}
|
|
@@ -87,25 +88,53 @@ class DIContainer {
|
|
|
87
88
|
}
|
|
88
89
|
injectProperties(instance) {
|
|
89
90
|
const constructor = instance.constructor;
|
|
90
|
-
console.log(
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
91
|
+
console.log(`🔍 Checking properties for injection on ${constructor.name}`);
|
|
92
|
+
// Get all own property keys of the instance (including inherited via getters/setters if needed)
|
|
93
|
+
// But primarily own enumerable + non-enumerable properties
|
|
94
|
+
let props = [];
|
|
95
|
+
let obj = instance;
|
|
96
|
+
// Walk up the prototype chain to include properties from parent classes
|
|
97
|
+
while (obj && obj !== Object.prototype) {
|
|
98
|
+
props = props.concat(Object.getOwnPropertyNames(obj));
|
|
99
|
+
obj = Object.getPrototypeOf(obj);
|
|
100
|
+
}
|
|
101
|
+
// Deduplicate
|
|
102
|
+
const uniqueProps = Array.from(new Set(props));
|
|
103
|
+
console.log(`📋 Instance properties (including inherited): ${uniqueProps.filter((p) => p !== "constructor").join(", ") || "none"}`);
|
|
104
|
+
for (const prop of uniqueProps) {
|
|
105
|
+
if (prop === "constructor")
|
|
106
|
+
continue;
|
|
107
|
+
// Check each injection type on the instance and its prototype
|
|
108
|
+
this.tryInjectAutowired(instance, instance, prop, constructor.name);
|
|
109
|
+
this.tryInjectByToken(instance, instance, prop, constructor.name);
|
|
110
|
+
this.tryInjectValue(instance, instance, prop, constructor.name);
|
|
111
|
+
this.tryInjectRepository(instance, instance, prop, constructor.name);
|
|
112
|
+
this.tryInjectLazy(instance, instance, prop, constructor.name);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
checkForDecoratedProperties(instance, constructor) {
|
|
116
|
+
// Check all metadata keys that might be attached to properties
|
|
117
|
+
const propertyKeys = [
|
|
118
|
+
...(Reflect.getMetadataKeys(constructor.prototype) || []),
|
|
119
|
+
...(Reflect.getMetadataKeys(instance) || []),
|
|
120
|
+
];
|
|
121
|
+
// Filter for property-related metadata
|
|
122
|
+
for (const key of propertyKeys) {
|
|
123
|
+
if (key.includes("fragment:")) {
|
|
124
|
+
// This is a Fragment metadata key, need to check if it's attached to a property
|
|
125
|
+
const metadataValue = Reflect.getMetadata(key, constructor.prototype);
|
|
126
|
+
if (metadataValue && typeof metadataValue === "object") {
|
|
127
|
+
// Could be a property metadata
|
|
128
|
+
for (const prop of Object.keys(metadataValue)) {
|
|
129
|
+
if (prop !== "constructor") {
|
|
130
|
+
this.tryInjectAutowired(instance, constructor.prototype, prop, constructor.name);
|
|
131
|
+
this.tryInjectByToken(instance, constructor.prototype, prop, constructor.name);
|
|
132
|
+
this.tryInjectValue(instance, constructor.prototype, prop, constructor.name);
|
|
133
|
+
this.tryInjectRepository(instance, constructor.prototype, prop, constructor.name);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
107
137
|
}
|
|
108
|
-
currentProto = Object.getPrototypeOf(currentProto);
|
|
109
138
|
}
|
|
110
139
|
}
|
|
111
140
|
tryInjectAutowired(instance, proto, prop, className) {
|
|
@@ -130,7 +159,7 @@ class DIContainer {
|
|
|
130
159
|
const token = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.INJECT, proto, prop);
|
|
131
160
|
if (!token)
|
|
132
161
|
return;
|
|
133
|
-
const tokenName = typeof token ===
|
|
162
|
+
const tokenName = typeof token === "string" ? token : token.name;
|
|
134
163
|
console.log(` 💉 @Inject found: ${className}.${prop} -> ${tokenName}`);
|
|
135
164
|
const isOptional = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.OPTIONAL, proto, prop);
|
|
136
165
|
try {
|
|
@@ -171,7 +200,7 @@ class DIContainer {
|
|
|
171
200
|
if (!isLazy)
|
|
172
201
|
return;
|
|
173
202
|
const type = Reflect.getMetadata("design:type", proto, prop);
|
|
174
|
-
console.log(` ⏳ @Lazy found: ${className}.${prop} (${type?.name ||
|
|
203
|
+
console.log(` ⏳ @Lazy found: ${className}.${prop} (${type?.name || "unknown"})`);
|
|
175
204
|
let cached = null;
|
|
176
205
|
let resolved = false;
|
|
177
206
|
Object.defineProperty(instance, prop, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di-container.js","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"di-container.js","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@ export class DIContainer {
|
|
|
18
18
|
|
|
19
19
|
register(token: any, instance?: any, factory?: () => any): void {
|
|
20
20
|
this.registered.add(token);
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
if (instance) {
|
|
23
23
|
this.singletons.set(token, instance);
|
|
24
24
|
} else if (factory) {
|
|
@@ -30,13 +30,13 @@ export class DIContainer {
|
|
|
30
30
|
if (typeof token === "function" && !this.registered.has(token)) {
|
|
31
31
|
throw new Error(
|
|
32
32
|
`Cannot resolve ${token.name}: Not registered as injectable. ` +
|
|
33
|
-
|
|
33
|
+
`Did you forget to add @Injectable(), @Service(), @Controller(), or @Repository()?`,
|
|
34
34
|
);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
if (this.constructing.has(token)) {
|
|
38
38
|
throw new Error(
|
|
39
|
-
`Circular dependency detected for ${token.name || token}
|
|
39
|
+
`Circular dependency detected for ${token.name || token}`,
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -47,7 +47,8 @@ export class DIContainer {
|
|
|
47
47
|
if (this.factories.has(token)) {
|
|
48
48
|
const factory = this.factories.get(token)!;
|
|
49
49
|
const instance = factory();
|
|
50
|
-
const scope =
|
|
50
|
+
const scope =
|
|
51
|
+
Reflect.getMetadata(METADATA_KEYS.SCOPE, token) || "singleton";
|
|
51
52
|
|
|
52
53
|
if (scope === "singleton") {
|
|
53
54
|
this.singletons.set(token, instance);
|
|
@@ -61,7 +62,8 @@ export class DIContainer {
|
|
|
61
62
|
|
|
62
63
|
try {
|
|
63
64
|
const instance = this.createInstance(token);
|
|
64
|
-
const scope =
|
|
65
|
+
const scope =
|
|
66
|
+
Reflect.getMetadata(METADATA_KEYS.SCOPE, token) || "singleton";
|
|
65
67
|
|
|
66
68
|
if (scope === "singleton") {
|
|
67
69
|
this.singletons.set(token, instance);
|
|
@@ -80,12 +82,14 @@ export class DIContainer {
|
|
|
80
82
|
|
|
81
83
|
private createInstance(target: any): any {
|
|
82
84
|
console.log(` 🔨 Creating instance of ${target.name}`);
|
|
83
|
-
|
|
85
|
+
|
|
84
86
|
const paramTypes = Reflect.getMetadata("design:paramtypes", target) || [];
|
|
85
87
|
|
|
86
88
|
const params = paramTypes.map((type: any, index: number) => {
|
|
87
89
|
if (!type || type === Object) {
|
|
88
|
-
console.warn(
|
|
90
|
+
console.warn(
|
|
91
|
+
` ⚠️ Constructor param ${index} of ${target.name} has no type`,
|
|
92
|
+
);
|
|
89
93
|
return undefined;
|
|
90
94
|
}
|
|
91
95
|
console.log(` 📦 Resolving constructor dependency: ${type.name}`);
|
|
@@ -100,10 +104,15 @@ export class DIContainer {
|
|
|
100
104
|
// Call @PostConstruct
|
|
101
105
|
const postConstructMethod = Reflect.getMetadata(
|
|
102
106
|
METADATA_KEYS.POST_CONSTRUCT,
|
|
103
|
-
target
|
|
107
|
+
target,
|
|
104
108
|
);
|
|
105
|
-
if (
|
|
106
|
-
|
|
109
|
+
if (
|
|
110
|
+
postConstructMethod &&
|
|
111
|
+
typeof instance[postConstructMethod] === "function"
|
|
112
|
+
) {
|
|
113
|
+
console.log(
|
|
114
|
+
` 🎯 Calling @PostConstruct: ${target.name}.${postConstructMethod}()`,
|
|
115
|
+
);
|
|
107
116
|
instance[postConstructMethod]();
|
|
108
117
|
}
|
|
109
118
|
|
|
@@ -112,41 +121,100 @@ export class DIContainer {
|
|
|
112
121
|
|
|
113
122
|
private injectProperties(instance: any): void {
|
|
114
123
|
const constructor = instance.constructor;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
//
|
|
119
|
-
let
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// Check each injection type
|
|
132
|
-
this.tryInjectAutowired(instance, currentProto, prop, constructor.name);
|
|
133
|
-
this.tryInjectByToken(instance, currentProto, prop, constructor.name);
|
|
134
|
-
this.tryInjectValue(instance, currentProto, prop, constructor.name);
|
|
135
|
-
this.tryInjectRepository(instance, currentProto, prop, constructor.name);
|
|
136
|
-
this.tryInjectLazy(instance, currentProto, prop, constructor.name);
|
|
137
|
-
}
|
|
124
|
+
console.log(`🔍 Checking properties for injection on ${constructor.name}`);
|
|
125
|
+
|
|
126
|
+
// Get all own property keys of the instance (including inherited via getters/setters if needed)
|
|
127
|
+
// But primarily own enumerable + non-enumerable properties
|
|
128
|
+
let props: string[] = [];
|
|
129
|
+
let obj = instance;
|
|
130
|
+
|
|
131
|
+
// Walk up the prototype chain to include properties from parent classes
|
|
132
|
+
while (obj && obj !== Object.prototype) {
|
|
133
|
+
props = props.concat(Object.getOwnPropertyNames(obj));
|
|
134
|
+
obj = Object.getPrototypeOf(obj);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Deduplicate
|
|
138
|
+
const uniqueProps = Array.from(new Set(props));
|
|
138
139
|
|
|
139
|
-
|
|
140
|
+
console.log(
|
|
141
|
+
`📋 Instance properties (including inherited): ${uniqueProps.filter((p) => p !== "constructor").join(", ") || "none"}`,
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
for (const prop of uniqueProps) {
|
|
145
|
+
if (prop === "constructor") continue;
|
|
146
|
+
|
|
147
|
+
// Check each injection type on the instance and its prototype
|
|
148
|
+
this.tryInjectAutowired(instance, instance, prop, constructor.name);
|
|
149
|
+
this.tryInjectByToken(instance, instance, prop, constructor.name);
|
|
150
|
+
this.tryInjectValue(instance, instance, prop, constructor.name);
|
|
151
|
+
this.tryInjectRepository(instance, instance, prop, constructor.name);
|
|
152
|
+
this.tryInjectLazy(instance, instance, prop, constructor.name);
|
|
140
153
|
}
|
|
141
154
|
}
|
|
142
155
|
|
|
143
|
-
private
|
|
156
|
+
private checkForDecoratedProperties(
|
|
157
|
+
instance: any,
|
|
158
|
+
constructor: Function,
|
|
159
|
+
): void {
|
|
160
|
+
// Check all metadata keys that might be attached to properties
|
|
161
|
+
const propertyKeys = [
|
|
162
|
+
...(Reflect.getMetadataKeys(constructor.prototype) || []),
|
|
163
|
+
...(Reflect.getMetadataKeys(instance) || []),
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
// Filter for property-related metadata
|
|
167
|
+
for (const key of propertyKeys) {
|
|
168
|
+
if (key.includes("fragment:")) {
|
|
169
|
+
// This is a Fragment metadata key, need to check if it's attached to a property
|
|
170
|
+
const metadataValue = Reflect.getMetadata(key, constructor.prototype);
|
|
171
|
+
if (metadataValue && typeof metadataValue === "object") {
|
|
172
|
+
// Could be a property metadata
|
|
173
|
+
for (const prop of Object.keys(metadataValue)) {
|
|
174
|
+
if (prop !== "constructor") {
|
|
175
|
+
this.tryInjectAutowired(
|
|
176
|
+
instance,
|
|
177
|
+
constructor.prototype,
|
|
178
|
+
prop,
|
|
179
|
+
constructor.name,
|
|
180
|
+
);
|
|
181
|
+
this.tryInjectByToken(
|
|
182
|
+
instance,
|
|
183
|
+
constructor.prototype,
|
|
184
|
+
prop,
|
|
185
|
+
constructor.name,
|
|
186
|
+
);
|
|
187
|
+
this.tryInjectValue(
|
|
188
|
+
instance,
|
|
189
|
+
constructor.prototype,
|
|
190
|
+
prop,
|
|
191
|
+
constructor.name,
|
|
192
|
+
);
|
|
193
|
+
this.tryInjectRepository(
|
|
194
|
+
instance,
|
|
195
|
+
constructor.prototype,
|
|
196
|
+
prop,
|
|
197
|
+
constructor.name,
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private tryInjectAutowired(
|
|
207
|
+
instance: any,
|
|
208
|
+
proto: any,
|
|
209
|
+
prop: string,
|
|
210
|
+
className: string,
|
|
211
|
+
): void {
|
|
144
212
|
const type = Reflect.getMetadata(METADATA_KEYS.AUTOWIRED, proto, prop);
|
|
145
|
-
|
|
213
|
+
|
|
146
214
|
if (!type) return;
|
|
147
215
|
|
|
148
216
|
console.log(` 💉 @Autowired found: ${className}.${prop} -> ${type.name}`);
|
|
149
|
-
|
|
217
|
+
|
|
150
218
|
const isOptional = Reflect.getMetadata(METADATA_KEYS.OPTIONAL, proto, prop);
|
|
151
219
|
|
|
152
220
|
try {
|
|
@@ -155,22 +223,29 @@ export class DIContainer {
|
|
|
155
223
|
} catch (error) {
|
|
156
224
|
if (!isOptional) {
|
|
157
225
|
throw new Error(
|
|
158
|
-
`Failed to autowire ${type.name} into ${className}.${prop}: ${error}
|
|
226
|
+
`Failed to autowire ${type.name} into ${className}.${prop}: ${error}`,
|
|
159
227
|
);
|
|
160
228
|
}
|
|
161
|
-
console.warn(
|
|
229
|
+
console.warn(
|
|
230
|
+
` ⚠️ Optional dependency ${type.name} not available for ${className}.${prop}`,
|
|
231
|
+
);
|
|
162
232
|
instance[prop] = undefined;
|
|
163
233
|
}
|
|
164
234
|
}
|
|
165
235
|
|
|
166
|
-
private tryInjectByToken(
|
|
236
|
+
private tryInjectByToken(
|
|
237
|
+
instance: any,
|
|
238
|
+
proto: any,
|
|
239
|
+
prop: string,
|
|
240
|
+
className: string,
|
|
241
|
+
): void {
|
|
167
242
|
const token = Reflect.getMetadata(METADATA_KEYS.INJECT, proto, prop);
|
|
168
|
-
|
|
243
|
+
|
|
169
244
|
if (!token) return;
|
|
170
245
|
|
|
171
|
-
const tokenName = typeof token ===
|
|
246
|
+
const tokenName = typeof token === "string" ? token : token.name;
|
|
172
247
|
console.log(` 💉 @Inject found: ${className}.${prop} -> ${tokenName}`);
|
|
173
|
-
|
|
248
|
+
|
|
174
249
|
const isOptional = Reflect.getMetadata(METADATA_KEYS.OPTIONAL, proto, prop);
|
|
175
250
|
|
|
176
251
|
try {
|
|
@@ -179,17 +254,24 @@ export class DIContainer {
|
|
|
179
254
|
} catch (error) {
|
|
180
255
|
if (!isOptional) {
|
|
181
256
|
throw new Error(
|
|
182
|
-
`Failed to inject ${tokenName} into ${className}.${prop}: ${error}
|
|
257
|
+
`Failed to inject ${tokenName} into ${className}.${prop}: ${error}`,
|
|
183
258
|
);
|
|
184
259
|
}
|
|
185
|
-
console.warn(
|
|
260
|
+
console.warn(
|
|
261
|
+
` ⚠️ Optional dependency ${tokenName} not available for ${className}.${prop}`,
|
|
262
|
+
);
|
|
186
263
|
instance[prop] = undefined;
|
|
187
264
|
}
|
|
188
265
|
}
|
|
189
266
|
|
|
190
|
-
private tryInjectValue(
|
|
267
|
+
private tryInjectValue(
|
|
268
|
+
instance: any,
|
|
269
|
+
proto: any,
|
|
270
|
+
prop: string,
|
|
271
|
+
className: string,
|
|
272
|
+
): void {
|
|
191
273
|
const expression = Reflect.getMetadata(METADATA_KEYS.VALUE, proto, prop);
|
|
192
|
-
|
|
274
|
+
|
|
193
275
|
if (expression === undefined) return;
|
|
194
276
|
|
|
195
277
|
console.log(` 🔧 @Value found: ${className}.${prop} = ${expression}`);
|
|
@@ -197,38 +279,60 @@ export class DIContainer {
|
|
|
197
279
|
console.log(` ✅ Set value for ${className}.${prop}`);
|
|
198
280
|
}
|
|
199
281
|
|
|
200
|
-
private tryInjectRepository(
|
|
201
|
-
|
|
202
|
-
|
|
282
|
+
private tryInjectRepository(
|
|
283
|
+
instance: any,
|
|
284
|
+
proto: any,
|
|
285
|
+
prop: string,
|
|
286
|
+
className: string,
|
|
287
|
+
): void {
|
|
288
|
+
const entity = Reflect.getMetadata(
|
|
289
|
+
METADATA_KEYS.INJECT_REPOSITORY,
|
|
290
|
+
proto,
|
|
291
|
+
prop,
|
|
292
|
+
);
|
|
293
|
+
|
|
203
294
|
if (!entity) return;
|
|
204
295
|
|
|
205
|
-
console.log(
|
|
206
|
-
|
|
296
|
+
console.log(
|
|
297
|
+
` 💾 @InjectRepository found: ${className}.${prop} -> Repository<${entity.name}>`,
|
|
298
|
+
);
|
|
299
|
+
|
|
207
300
|
try {
|
|
208
301
|
instance[prop] = this.resolveRepository(entity);
|
|
209
|
-
console.log(
|
|
302
|
+
console.log(
|
|
303
|
+
` ✅ Injected Repository<${entity.name}> into ${className}.${prop}`,
|
|
304
|
+
);
|
|
210
305
|
} catch (error) {
|
|
211
306
|
throw new Error(
|
|
212
|
-
`Failed to inject repository for ${entity.name} into ${className}.${prop}: ${error}
|
|
307
|
+
`Failed to inject repository for ${entity.name} into ${className}.${prop}: ${error}`,
|
|
213
308
|
);
|
|
214
309
|
}
|
|
215
310
|
}
|
|
216
311
|
|
|
217
|
-
private tryInjectLazy(
|
|
312
|
+
private tryInjectLazy(
|
|
313
|
+
instance: any,
|
|
314
|
+
proto: any,
|
|
315
|
+
prop: string,
|
|
316
|
+
className: string,
|
|
317
|
+
): void {
|
|
218
318
|
const isLazy = Reflect.getMetadata(METADATA_KEYS.LAZY, proto, prop);
|
|
219
|
-
|
|
319
|
+
|
|
220
320
|
if (!isLazy) return;
|
|
221
321
|
|
|
222
322
|
const type = Reflect.getMetadata("design:type", proto, prop);
|
|
223
|
-
console.log(
|
|
224
|
-
|
|
323
|
+
console.log(
|
|
324
|
+
` ⏳ @Lazy found: ${className}.${prop} (${type?.name || "unknown"})`,
|
|
325
|
+
);
|
|
326
|
+
|
|
225
327
|
let cached: any = null;
|
|
226
328
|
let resolved = false;
|
|
227
329
|
|
|
228
330
|
Object.defineProperty(instance, prop, {
|
|
229
331
|
get: () => {
|
|
230
332
|
if (!resolved) {
|
|
231
|
-
console.log(
|
|
333
|
+
console.log(
|
|
334
|
+
` 🔓 Lazy-loading ${type.name} for ${className}.${prop}`,
|
|
335
|
+
);
|
|
232
336
|
cached = this.resolve(type);
|
|
233
337
|
resolved = true;
|
|
234
338
|
}
|
|
@@ -240,7 +344,9 @@ export class DIContainer {
|
|
|
240
344
|
}
|
|
241
345
|
|
|
242
346
|
private resolveValue(expression: string): any {
|
|
243
|
-
const match = expression.match(
|
|
347
|
+
const match = expression.match(
|
|
348
|
+
/\$\{([^:}]+)(?::([^}]*))?\}|\$([A-Z_][A-Z0-9_]*)/i,
|
|
349
|
+
);
|
|
244
350
|
if (match) {
|
|
245
351
|
const key = match[1] || match[3];
|
|
246
352
|
const defaultValue = match[2];
|
|
@@ -279,15 +385,15 @@ export class DIContainer {
|
|
|
279
385
|
try {
|
|
280
386
|
const { TypeORMModule } = require("../../typeorm/typeorm-module");
|
|
281
387
|
const dataSource = TypeORMModule.getDataSource();
|
|
282
|
-
|
|
388
|
+
|
|
283
389
|
if (!dataSource || !dataSource.isInitialized) {
|
|
284
390
|
throw new Error("TypeORM DataSource not initialized");
|
|
285
391
|
}
|
|
286
|
-
|
|
392
|
+
|
|
287
393
|
return dataSource.getRepository(entity);
|
|
288
394
|
} catch (error) {
|
|
289
395
|
throw new Error(
|
|
290
|
-
`Failed to resolve repository for ${entity.name}: ${(error as Error)?.message}
|
|
396
|
+
`Failed to resolve repository for ${entity.name}: ${(error as Error)?.message}`,
|
|
291
397
|
);
|
|
292
398
|
}
|
|
293
399
|
}
|
|
@@ -311,4 +417,4 @@ export class DIContainer {
|
|
|
311
417
|
reset(): void {
|
|
312
418
|
this.clear();
|
|
313
419
|
}
|
|
314
|
-
}
|
|
420
|
+
}
|