@spinajs/di 2.0.385 → 2.0.387

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.
@@ -1,9 +1,11 @@
1
1
  import { TypedArray } from './array.js';
2
- import { IContainer } from './interfaces.js';
2
+ import { IContainer, IInjectDescriptor } from './interfaces.js';
3
3
  import { Class } from './types.js';
4
4
  export declare class ContainerCache {
5
5
  private container;
6
6
  private cache;
7
+ private resolutionPromises;
8
+ private creatingKeys;
7
9
  constructor(container: IContainer);
8
10
  [Symbol.iterator](): Generator<{
9
11
  key: string;
@@ -11,8 +13,25 @@ export declare class ContainerCache {
11
13
  }, void, unknown>;
12
14
  remove(key: string | Class<any> | TypedArray<any>, parent?: boolean): void;
13
15
  add(key: string | Class<any> | object, instance: any): void;
16
+ /**
17
+ * Add instance to cache only if it doesn't already exist (atomic operation for singletons)
18
+ */
19
+ addIfNotExists(key: string | Class<any> | object, instance: any): boolean;
14
20
  has(key: string | Class<any> | object | TypedArray<any>, parent?: boolean): boolean;
15
21
  get(key: string | Class<any> | TypedArray<any>, parent?: boolean): any;
22
+ /**
23
+ * Atomic get-or-create operation for singleton services
24
+ * Prevents concurrent creation of the same singleton instance
25
+ */
26
+ getOrCreate<T>(sourceType: string | Class<any> | TypedArray<any> | object, targetType: string | Class<any> | TypedArray<any>, factory: () => Promise<T> | T, isSingleton: boolean, descriptor: IInjectDescriptor<unknown>, options?: unknown[]): Promise<T> | T;
27
+ /**
28
+ * Get resolution statistics for monitoring
29
+ */
30
+ getResolutionStats(): {
31
+ cacheSize: number;
32
+ activeResolutions: number;
33
+ resolutionKeys: string[];
34
+ };
16
35
  clear(): void;
17
36
  }
18
37
  //# sourceMappingURL=container-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container-cache.d.ts","sourceRoot":"","sources":["../../src/container-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,cAAc;IAGb,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,KAAK,CAAqB;gBAEd,SAAS,EAAE,UAAU;IAQxC,CAAC,MAAM,CAAC,QAAQ,CAAC;;;;IAQX,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;IAYpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAYnF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,GAAG;IActE,KAAK;CAIb"}
1
+ {"version":3,"file":"container-cache.d.ts","sourceRoot":"","sources":["../../src/container-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,qBAAa,cAAc;IAOb,OAAO,CAAC,SAAS;IAN7B,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,kBAAkB,CAAwC;IAElE,OAAO,CAAC,YAAY,CAA0B;gBAE1B,SAAS,EAAE,UAAU;IAQxC,CAAC,MAAM,CAAC,QAAQ,CAAC;;;;IAQX,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;IAY3D;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO;IAWzE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAanF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,GAAG;IAc7E;;;OAGG;IACI,WAAW,CAAC,CAAC,EAClB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,EAC1D,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EACjD,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC7B,WAAW,EAAE,OAAc,EAC3B,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IA8GjB;;OAEG;IACI,kBAAkB;;;;;IAQlB,KAAK;CAMb"}
@@ -1,10 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContainerCache = void 0;
4
+ const array_js_1 = require("./array.js");
4
5
  const helpers_js_1 = require("./helpers.js");
6
+ const enums_js_1 = require("./enums.js");
7
+ const exceptions_js_1 = require("./exceptions.js");
5
8
  class ContainerCache {
6
9
  constructor(container) {
7
10
  this.container = container;
11
+ // Track ongoing resolution promises to prevent concurrent singleton creation
12
+ this.resolutionPromises = new Map();
13
+ // Track keys currently being created synchronously
14
+ this.creatingKeys = new Set();
8
15
  this.cache = new Map();
9
16
  // add to cache container
10
17
  // so we can inject container if needed
@@ -36,6 +43,19 @@ class ContainerCache {
36
43
  this.cache.set(tName, [instance]);
37
44
  }
38
45
  }
46
+ /**
47
+ * Add instance to cache only if it doesn't already exist (atomic operation for singletons)
48
+ */
49
+ addIfNotExists(key, instance) {
50
+ const tName = (0, helpers_js_1.getTypeName)(key);
51
+ if (this.has(key)) {
52
+ return false; // Already exists, don't add
53
+ }
54
+ else {
55
+ this.cache.set(tName, [instance]);
56
+ return true; // Successfully added
57
+ }
58
+ }
39
59
  has(key, parent) {
40
60
  if (this.cache.has((0, helpers_js_1.getTypeName)(key))) {
41
61
  return true;
@@ -55,8 +75,123 @@ class ContainerCache {
55
75
  }
56
76
  return [];
57
77
  }
78
+ /**
79
+ * Atomic get-or-create operation for singleton services
80
+ * Prevents concurrent creation of the same singleton instance
81
+ */
82
+ getOrCreate(sourceType, targetType, factory, isSingleton = true, descriptor, options) {
83
+ const keyName = (0, helpers_js_1.getTypeName)(targetType);
84
+ const sourceTypeKey = (0, helpers_js_1.getTypeName)(sourceType);
85
+ // Fast path: return cached instance if it exists
86
+ if (this.has(targetType, descriptor.resolver === enums_js_1.ResolveType.PerChildContainer ? false : true)) {
87
+ const cached = this.get(targetType, descriptor.resolver === enums_js_1.ResolveType.PerChildContainer ? false : true);
88
+ if (descriptor.resolver === enums_js_1.ResolveType.PerInstanceCheck) {
89
+ if (cached) {
90
+ const found = cached.find((x) => {
91
+ if (!x.__checkInstance__) {
92
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
93
+ throw new exceptions_js_1.ResolveException(`service ${x.constructor.name} is marked as PerInstanceCheck resolver, but no __checkInstance__ function is provided`);
94
+ }
95
+ return x.__checkInstance__(options);
96
+ });
97
+ if (found) {
98
+ return found;
99
+ }
100
+ else {
101
+ return factory();
102
+ }
103
+ }
104
+ }
105
+ return Array.isArray(cached) ? cached[0] : cached;
106
+ }
107
+ // For non-singletons, always create new instance
108
+ if (!isSingleton) {
109
+ return factory();
110
+ }
111
+ // Check if creation is already in progress (async)
112
+ if (this.resolutionPromises.has(keyName)) {
113
+ return this.resolutionPromises.get(keyName);
114
+ }
115
+ // Check if creation is already in progress (sync)
116
+ if (this.creatingKeys.has(keyName)) {
117
+ // This indicates a potential circular dependency or re-entrant call
118
+ if (this.has(targetType)) {
119
+ const cached = this.get(targetType);
120
+ return Array.isArray(cached) ? cached[0] : cached;
121
+ }
122
+ throw new Error(`Circular dependency detected for ${keyName}`);
123
+ }
124
+ // Mark this key as being created to prevent re-entrance
125
+ this.creatingKeys.add(keyName);
126
+ let instance;
127
+ try {
128
+ instance = factory();
129
+ }
130
+ catch (error) {
131
+ this.creatingKeys.delete(keyName);
132
+ throw error;
133
+ }
134
+ const _checkCache = (resolvedInstance) => {
135
+ if (sourceType instanceof array_js_1.TypedArray) {
136
+ // If sourceType is a TypedArray, we need to ensure we cache it correctly
137
+ if (!this.has(sourceTypeKey)) {
138
+ this.add(sourceTypeKey, resolvedInstance);
139
+ }
140
+ else {
141
+ // If it already exists, we should merge the new instance into the existing array
142
+ const existingInstances = this.get(sourceTypeKey);
143
+ if (!existingInstances.includes(resolvedInstance)) {
144
+ existingInstances.push(resolvedInstance);
145
+ }
146
+ }
147
+ const cached = this.get(sourceTypeKey);
148
+ return sourceType instanceof array_js_1.TypedArray ? cached : cached[0];
149
+ }
150
+ else {
151
+ // Cache the instance if not already cached
152
+ if (!this.has(targetType)) {
153
+ this.add(targetType, resolvedInstance);
154
+ }
155
+ }
156
+ // Return the cached version
157
+ const cached = this.get(targetType);
158
+ return cached[0];
159
+ };
160
+ // If factory returns a Promise, handle async resolution
161
+ if (instance instanceof Promise) {
162
+ const creation = instance.then(resolvedInstance => {
163
+ this.creatingKeys.delete(keyName);
164
+ this.resolutionPromises.delete(keyName);
165
+ return _checkCache(resolvedInstance);
166
+ }).catch(error => {
167
+ this.creatingKeys.delete(keyName);
168
+ this.resolutionPromises.delete(keyName);
169
+ throw error;
170
+ });
171
+ // Store the promise to prevent concurrent resolutions
172
+ this.resolutionPromises.set(keyName, creation);
173
+ return creation;
174
+ }
175
+ else {
176
+ // Synchronous resolution
177
+ this.creatingKeys.delete(keyName);
178
+ return _checkCache(instance);
179
+ }
180
+ }
181
+ /**
182
+ * Get resolution statistics for monitoring
183
+ */
184
+ getResolutionStats() {
185
+ return {
186
+ cacheSize: this.cache.size,
187
+ activeResolutions: this.resolutionPromises.size,
188
+ resolutionKeys: Array.from(this.resolutionPromises.keys()),
189
+ };
190
+ }
58
191
  clear() {
59
192
  this.cache.clear();
193
+ this.resolutionPromises.clear();
194
+ this.creatingKeys.clear();
60
195
  this.add(this.container, this.container);
61
196
  }
62
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container-cache.js","sourceRoot":"","sources":["../../src/container-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-cache.js","sourceRoot":"","sources":["../../src/container-cache.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,10 @@ export declare class Container extends EventEmitter implements IContainer {
23
23
  * Parent container if avaible
24
24
  */
25
25
  private parent;
26
+ /**
27
+ * Child containers created from this container
28
+ */
29
+ private children;
26
30
  /**
27
31
  * Returns container cache - map object with resolved classes as singletons
28
32
  */
@@ -43,6 +47,14 @@ export declare class Container extends EventEmitter implements IContainer {
43
47
  * Clears container resolved types
44
48
  */
45
49
  clearRegistry(): void;
50
+ /**
51
+ * Get cache statistics for memory monitoring
52
+ */
53
+ getCacheStats(): {
54
+ size: number;
55
+ entries: string[];
56
+ childrenCount: number;
57
+ };
46
58
  /**
47
59
  * Register class/interface to DI.
48
60
  * @param type - interface object to register
@@ -109,6 +121,7 @@ export declare class Container extends EventEmitter implements IContainer {
109
121
  resolve<T>(type: TypedArray<T>, options?: unknown[], check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
110
122
  resolve<T>(type: TypedArray<T>, check?: boolean): T extends AsyncService ? Promise<T[]> : T[];
111
123
  getRegisteredTypes<T>(service: string | Class<T> | TypedArray<T>, parent?: boolean): (Class<unknown> | Factory<unknown>)[];
124
+ private getCurrentType;
112
125
  private resolveType;
113
126
  protected getNewInstance(typeToCreate: Class<unknown> | Factory<unknown>, a?: IResolvedInjection[], options?: unknown[]): Promise<unknown> | unknown;
114
127
  hasRegisteredType<T>(source: Class<T> | string, type: Class<T> | string | TypedArray<T>, parent?: boolean): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Container = void 0;
7
7
  const exceptions_1 = require("@spinajs/exceptions");
8
8
  require("reflect-metadata");
9
+ const array_js_1 = require("./array.js");
9
10
  const decorators_js_1 = require("./decorators.js");
10
11
  const enums_js_1 = require("./enums.js");
11
12
  const helpers_js_1 = require("./helpers.js");
@@ -34,6 +35,10 @@ class Container extends events_1.EventEmitter {
34
35
  }
35
36
  constructor(parent) {
36
37
  super();
38
+ /**
39
+ * Child containers created from this container
40
+ */
41
+ this.children = new Set();
37
42
  this.registry = new registry_js_1.Registry(this);
38
43
  this.cache = new container_cache_js_1.ContainerCache(this);
39
44
  this.parent = parent || undefined;
@@ -46,13 +51,31 @@ class Container extends events_1.EventEmitter {
46
51
  this.clearRegistry();
47
52
  }
48
53
  async dispose() {
54
+ const disposalErrors = [];
55
+ // Dispose all children first
56
+ await Promise.all([...this.children].map(child => child.dispose().catch(err => {
57
+ disposalErrors.push(err);
58
+ // Continue with other children even if one fails
59
+ })));
60
+ this.children.clear();
61
+ // Dispose services in this container
49
62
  for (const entry of this.cache) {
50
63
  if (entry.value instanceof interfaces_js_1.Service) {
51
- await entry.value.dispose();
64
+ try {
65
+ await entry.value.dispose();
66
+ }
67
+ catch (err) {
68
+ disposalErrors.push(err);
69
+ // Continue with other services even if one fails
70
+ }
52
71
  }
53
72
  }
54
73
  this.clearCache();
55
74
  this.emit('di.dispose');
75
+ // Log disposal errors if any occurred
76
+ if (disposalErrors.length > 0) {
77
+ console.warn(`${disposalErrors.length} services failed to dispose properly:`, disposalErrors);
78
+ }
56
79
  }
57
80
  /**
58
81
  * clears container registered types information
@@ -66,6 +89,22 @@ class Container extends events_1.EventEmitter {
66
89
  clearRegistry() {
67
90
  this.Registry.clear();
68
91
  }
92
+ /**
93
+ * Get cache statistics for memory monitoring
94
+ */
95
+ getCacheStats() {
96
+ const entries = [];
97
+ let size = 0;
98
+ for (const entry of this.cache) {
99
+ entries.push(entry.key);
100
+ size++;
101
+ }
102
+ return {
103
+ size,
104
+ entries,
105
+ childrenCount: this.children.size
106
+ };
107
+ }
69
108
  /**
70
109
  * Register class/interface to DI.
71
110
  * @param type - interface object to register
@@ -91,14 +130,20 @@ class Container extends events_1.EventEmitter {
91
130
  *
92
131
  */
93
132
  child() {
94
- return new Container(this);
133
+ const child = new Container(this);
134
+ this.children.add(child);
135
+ // Remove from parent when child is disposed
136
+ child.once('di.dispose', () => {
137
+ this.children.delete(child);
138
+ });
139
+ return child;
95
140
  }
96
141
  get(service, parent = true) {
97
142
  // get value registered as TypedArray ( mean to return all created instances )
98
- if (service instanceof Array && service.constructor.name === 'TypedArray') {
143
+ if (service instanceof Array && service.constructor.name === 'TypedArray' || service instanceof array_js_1.TypedArray) {
99
144
  return this.cache.get((0, helpers_js_1.getTypeName)(service.Type));
100
145
  }
101
- const r = this.cache.get(service, parent);
146
+ const r = this.cache.get(this.getCurrentType(service, null, parent ?? true) ?? service, parent);
102
147
  return r[r.length - 1];
103
148
  }
104
149
  hasRegistered(service, parent = true) {
@@ -113,13 +158,16 @@ class Container extends events_1.EventEmitter {
113
158
  * @throws {@link InvalidArgument} when service is null or empty
114
159
  */
115
160
  isResolved(service, parent = true) {
116
- return this.Cache.has(service, parent);
161
+ if (service instanceof Array && service.constructor.name === 'TypedArray' || service instanceof array_js_1.TypedArray) {
162
+ return this.Cache.has(this.getCurrentType(service.Type, null, parent ?? true) ?? service, parent);
163
+ }
164
+ return this.Cache.has(this.getCurrentType(service, null, parent ?? true) ?? service, parent);
117
165
  }
118
166
  /**
119
167
  *
120
168
  * @param type - type to resolve
121
169
  * @param options - options passed to constructor / factory
122
- * @param check - strict check if serivice is registered in container before resolving. Default behavior is to not check and resolve
170
+ * @param check - strict check if serivice is registered in container before resolving. Default behavior is not to check and resolve
123
171
  */
124
172
  resolve(type, options, check, tType) {
125
173
  if (!type) {
@@ -150,30 +198,15 @@ class Container extends events_1.EventEmitter {
150
198
  }
151
199
  const resolved = targetType.map((r) => this.resolveType(type, r, opt));
152
200
  if (resolved.some((r) => r instanceof Promise)) {
153
- return Promise.all(resolved);
201
+ return Promise.all(resolved).then(() => this.get(type, check ?? true));
154
202
  }
155
- return resolved;
203
+ return this.get(type, check ?? true);
156
204
  }
157
205
  else {
158
- // finaly resolve single type:
159
- // 1. last registered type OR
160
- // 2. if non is registered - type itself
161
- let targetType = this.getRegisteredTypes(type);
162
- if (!targetType) {
163
- // if nothing is register under string identifier, then return null
164
- if (typeof type === 'string') {
165
- return null;
166
- }
167
- else {
168
- targetType = [type];
169
- }
206
+ const fType = this.getCurrentType(type, tType, check ?? true);
207
+ if (fType === null) {
208
+ return null;
170
209
  }
171
- // if we have target function callback
172
- // we can select whitch of targetType to resolve
173
- //
174
- // if not, by default last registered type is resolved
175
- // if we have override for target type in registry, resolve it ( last registered ) otherwise resolve target type type itself
176
- const fType = targetType[targetType.length - 1] ?? tType;
177
210
  const rValue = this.resolveType(sourceType, fType, opt);
178
211
  return rValue;
179
212
  }
@@ -181,6 +214,28 @@ class Container extends events_1.EventEmitter {
181
214
  getRegisteredTypes(service, parent) {
182
215
  return this.Registry.getTypes(service, parent);
183
216
  }
217
+ getCurrentType(type, tType, check) {
218
+ // finaly resolve single type:
219
+ // 1. last registered type OR
220
+ // 2. if non is registered - type itself
221
+ let targetType = this.getRegisteredTypes(type, check ?? true);
222
+ if (!targetType) {
223
+ // if nothing is register under string identifier, then return null
224
+ if (typeof type === 'string') {
225
+ return null;
226
+ }
227
+ else {
228
+ targetType = [type];
229
+ }
230
+ }
231
+ // if we have target function callback
232
+ // we can select whitch of targetType to resolve
233
+ //
234
+ // if not, by default last registered type is resolved
235
+ // if we have override for target type in registry, resolve it ( last registered ) otherwise resolve target type type itself
236
+ const fType = targetType[targetType.length - 1] ?? tType;
237
+ return fType;
238
+ }
184
239
  resolveType(sourceType, targetType, options) {
185
240
  /**
186
241
  * If its a factory func, always resolve as new instance
@@ -198,11 +253,7 @@ class Container extends events_1.EventEmitter {
198
253
  // resolving strategy per container is treatead as singleton
199
254
  // in this particular container
200
255
  const isSingletonInChild = descriptor.resolver === enums_js_1.ResolveType.PerChildContainer;
201
- const isSingleton = descriptor.resolver === enums_js_1.ResolveType.Singleton;
202
- const setCache = (target) => {
203
- this.Cache.add(sourceType, target);
204
- return target;
205
- };
256
+ const isSingleton = descriptor.resolver === enums_js_1.ResolveType.Singleton || descriptor.resolver === enums_js_1.ResolveType.PerInstanceCheck || descriptor.resolver === enums_js_1.ResolveType.PerInstance;
206
257
  const emit = (target) => {
207
258
  const sourceTypeName = (0, helpers_js_1.getTypeName)(sourceType);
208
259
  const targetTypeName = (0, helpers_js_1.getTypeName)(targetType);
@@ -213,31 +264,15 @@ class Container extends events_1.EventEmitter {
213
264
  this.emit(`di.resolved.${sourceTypeName}`, this, target);
214
265
  }
215
266
  };
216
- const getCachedInstance = (e, parent) => {
217
- if (this.isResolved(e, parent)) {
218
- const rArray = this.get(e, parent);
219
- return lodash_1.default.isArray(rArray) ? rArray.find((x) => (0, helpers_js_1.getTypeName)(x) === (0, helpers_js_1.getTypeName)(targetType)) : rArray;
220
- }
221
- return null;
222
- };
223
- const getCachedInstances = (e, parent) => {
224
- if (this.isResolved(e, parent)) {
225
- const rArray = this.get(e, parent);
226
- return lodash_1.default.isArray(rArray) ? rArray : [rArray];
227
- }
228
- return null;
229
- };
230
267
  const createNewInstance = (t, i, options) => {
231
268
  const instance = this.getNewInstance(t, i, options);
232
269
  if ((0, helpers_js_1.isPromise)(instance)) {
233
270
  return instance.then((r) => {
234
- setCache(r);
235
271
  emit(r);
236
272
  return r;
237
273
  });
238
274
  }
239
275
  else {
240
- setCache(instance);
241
276
  emit(instance);
242
277
  return instance;
243
278
  }
@@ -256,48 +291,27 @@ class Container extends events_1.EventEmitter {
256
291
  return instance;
257
292
  }
258
293
  }
259
- if (d.resolver === enums_js_1.ResolveType.PerInstanceCheck) {
260
- const cashed = getCachedInstances(tType, true);
261
- if (cashed) {
262
- const found = cashed.find((x) => {
263
- if (!x.__checkInstance__) {
264
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
265
- throw new exceptions_js_1.ResolveException(`service ${x.constructor.name} is marked as PerInstanceCheck resolver, but no __checkInstance__ function is provided`);
266
- }
267
- return x.__checkInstance__(options);
268
- });
269
- if (found) {
270
- return found;
271
- }
272
- else {
273
- return createNewInstance(t, i, options);
274
- }
275
- }
276
- }
277
294
  this.Registry.register(sName, t);
278
- const cashed = getCachedInstance(tType, d.resolver === enums_js_1.ResolveType.Singleton ? true : false);
279
- if (!cashed) {
280
- return createNewInstance(t, i, options);
281
- }
282
- else {
283
- return cashed;
284
- }
295
+ // For singletons, don't check cache here - let getOrCreate handle it atomically
296
+ return createNewInstance(t, i, options);
285
297
  };
286
- // check cache if needed
298
+ // For singletons, use atomic cache operations to prevent concurrent creation
287
299
  if (isSingletonInChild || isSingleton) {
288
- // if its singleton ( not per child container )
289
- // check also in parent containers
290
- // ------- IMPORTANT ------------
291
- // TODO: in future allow to check in runtime if target type is cashed,
292
- // now, if for example we resolve array of some type,
293
- // when we later register another type of base class used in typed array
294
- // we will not resolve it, becaouse contaienr will not check
295
- // if in cache this new type exists ( only check if type in array exists )
296
- const cached = getCachedInstance(sourceType, isSingleton);
297
- if (cached) {
298
- return cached;
299
- }
300
+ return this.Cache.getOrCreate(sourceType, tType, () => {
301
+ const deps = this.resolveDependencies(descriptor.inject);
302
+ if (deps instanceof Promise) {
303
+ return deps.then((resolvedDependencies) => {
304
+ return resolve(descriptor, tType, resolvedDependencies);
305
+ });
306
+ }
307
+ else {
308
+ const resInstance = resolve(descriptor, tType, deps);
309
+ return resInstance;
310
+ }
311
+ }, true, // isSingleton
312
+ descriptor, options);
300
313
  }
314
+ // Non-singleton path - resolve normally without caching
301
315
  const deps = this.resolveDependencies(descriptor.inject);
302
316
  if (deps instanceof Promise) {
303
317
  return deps.then((resolvedDependencies) => {
@@ -306,9 +320,6 @@ class Container extends events_1.EventEmitter {
306
320
  }
307
321
  else {
308
322
  const resInstance = resolve(descriptor, tType, deps);
309
- if (resInstance instanceof Promise) {
310
- return resInstance;
311
- }
312
323
  return resInstance;
313
324
  }
314
325
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}