@spinajs/di 2.0.384 → 2.0.386
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/lib/cjs/container-cache.d.ts +20 -1
- package/lib/cjs/container-cache.d.ts.map +1 -1
- package/lib/cjs/container-cache.js +135 -0
- package/lib/cjs/container-cache.js.map +1 -1
- package/lib/cjs/container.d.ts +13 -0
- package/lib/cjs/container.d.ts.map +1 -1
- package/lib/cjs/container.js +99 -88
- package/lib/cjs/container.js.map +1 -1
- package/lib/mjs/container-cache.d.ts +20 -1
- package/lib/mjs/container-cache.d.ts.map +1 -1
- package/lib/mjs/container-cache.js +135 -0
- package/lib/mjs/container-cache.js.map +1 -1
- package/lib/mjs/container.d.ts +13 -0
- package/lib/mjs/container.d.ts.map +1 -1
- package/lib/mjs/container.js +100 -89
- package/lib/mjs/container.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -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;
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"container-cache.js","sourceRoot":"","sources":["../../src/container-cache.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/container.d.ts
CHANGED
|
@@ -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":";AACA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAe,SAAS,EAAE,YAAY,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/container.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
203
|
+
return this.get(type, check ?? true);
|
|
156
204
|
}
|
|
157
205
|
else {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
279
|
-
|
|
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
|
-
//
|
|
298
|
+
// For singletons, use atomic cache operations to prevent concurrent creation
|
|
287
299
|
if (isSingletonInChild || isSingleton) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
}
|
package/lib/cjs/container.js.map
CHANGED
|
@@ -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":";;;;;;AAAA,oDAAsD;AACtD,4BAA0B;AAC1B,yCAAwC;AACxC,mDAAwD;AACxD,yCAAyC;AACzC,6CAA+F;AAC/F,mDAA4J;AAE5J,mCAAsC;AACtC,2CAAqC;AACrC,+CAAyC;AACzC,6DAAsD;AACtD,oDAAuB;AACvB,mDAAkD;AAElD;;GAEG;AACH,MAAa,SAAU,SAAQ,qBAAY;IAsBzC;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,YAAY,MAAmB;QAC7B,KAAK,EAAE,CAAC;QArBV;;WAEG;QACK,aAAQ,GAAoB,IAAI,GAAG,EAAE,CAAC;QAoB5C,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,mCAAc,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,cAAc,GAAY,EAAE,CAAC;QAEnC,6BAA6B;QAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAC/C,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,iDAAiD;QACnD,CAAC,CAAC,CACH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,qCAAqC;QACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,YAAY,uBAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,iDAAiD;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExB,sCAAsC;QACtC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,uCAAuC,EAAE,cAAc,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC;QACT,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO;YACP,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;SAClC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAI,cAAwD;QACzE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,4BAAe,CAAC,6CAA6C,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,kBAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEM,UAAU,CAAI,cAAiE;QACpF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,4BAAe,CAAC,6CAA6C,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAI,cAAiD,EAAE,MAAgB;QACnF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzB,4CAA4C;QAC5C,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAeM,GAAG,CAAI,OAA0C,EAAE,MAAM,GAAG,IAAI;QACrE,8EAA8E;QAC9E,IAAI,OAAO,YAAY,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,YAAY,qBAAU,EAAE,CAAC;YAC3G,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,wBAAW,EAAC,OAAO,CAAC,IAAI,CAAC,CAAQ,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;QAChG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAM,CAAC;IAC9B,CAAC;IAEM,aAAa,CAAI,OAA0B,EAAE,MAAM,GAAG,IAAI;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,UAAU,CAAI,OAA0C,EAAE,MAAM,GAAG,IAAI;QAC5E,IAAI,OAAO,YAAY,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,YAAY,qBAAU,EAAE,CAAC;YAC3G,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;QACpG,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/F,CAAC;IAkCD;;;;;OAKG;IACI,OAAO,CAAI,IAAuC,EAAE,OAA6B,EAAE,KAAe,EAAE,KAAsB;QAC/H,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,4BAAe,CAAC,6CAA6C,CAAC,CAAC;QAC3E,CAAC;QAED,cAAc;QACd,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,MAAM,UAAU,GAAG,IAAA,wBAAW,EAAC,IAAI,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAE1D,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAiB,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,QAAQ,UAAU,iCAAiC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,IAAI,IAAA,yBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;YACvB,0BAA0B;YAC1B,yCAAyC;YACzC,uDAAuD;YACvD,qBAAqB;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YAED,qEAAqE;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,OAAO,CAAC,EAAE,CAAC;gBAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,CAAQ,CAAC;YACjF,CAAC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAQ,CAAC;QAC9C,CAAC;aAAM,CAAC;YAEN,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;YAC9D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACxD,OAAO,MAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,kBAAkB,CAAI,OAA0C,EAAE,MAAgB;QACvF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEO,cAAc,CAAI,IAAuB,EAAE,KAAe,EAAE,KAAc;QAChF,8BAA8B;QAC9B,6BAA6B;QAC7B,wCAAwC;QACxC,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mEAAmE;YACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,gDAAgD;QAChD,EAAE;QACF,sDAAsD;QACtD,4HAA4H;QAC5H,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW,CAAI,UAA6C,EAAE,UAAiC,EAAE,OAAmB;QAC1H;;WAEG;QACH,IAAI,IAAA,sBAAS,EAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAM,CAAC;QAC7D,CAAC;QAED,mCAAmC;QACnC,sCAAsC;QACtC,yCAAyC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC;QACzB,MAAM,KAAK,GAAG,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEjD,yBAAyB;QACzB,4DAA4D;QAC5D,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,KAAK,sBAAW,CAAC,iBAAiB,CAAC;QACjF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,KAAK,sBAAW,CAAC,SAAS,IAAI,UAAU,CAAC,QAAQ,KAAK,sBAAW,CAAC,gBAAgB,IAAI,UAAU,CAAC,QAAQ,KAAK,sBAAW,CAAC,WAAW,CAAC;QAE7K,MAAM,IAAI,GAAG,CAAC,MAAW,EAAE,EAAE;YAC3B,MAAM,cAAc,GAAG,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;YAE/C,uDAAuD;YACvD,IAAI,CAAC,IAAI,CAAC,eAAe,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzD,qCAAqC;YACrC,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,eAAe,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,CAAuB,EAAE,OAAY,EAAE,EAAE;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,IAAA,sBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzB,IAAI,CAAC,CAAC,CAAC,CAAC;oBACR,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACf,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAA6B,EAAE,CAAW,EAAE,CAAuB,EAAE,EAAE;YACtF,IAAI,CAAC,CAAC,QAAQ,KAAK,sBAAW,CAAC,WAAW,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEpD,IAAI,IAAA,sBAAS,EAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;wBACzB,IAAI,CAAC,CAAC,CAAC,CAAC;wBACR,OAAO,CAAC,CAAC;oBACX,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACf,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAEjC,gFAAgF;YAChF,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,6EAA6E;QAC7E,IAAI,kBAAkB,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAC3B,UAAU,EACV,KAAK,EACL,GAAG,EAAE;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEzD,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAE;wBACxC,OAAO,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,oBAAoB,CAAM,CAAC;oBAC/D,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,IAA4B,CAAC,CAAC;oBAC7E,OAAO,WAAgB,CAAC;gBAC1B,CAAC;YACH,CAAC,EACD,IAAI,EAAE,cAAc;YACpB,UAAU,EACV,OAAO,CACH,CAAC;QACT,CAAC;QAED,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAE;gBACxC,OAAO,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,oBAAoB,CAAM,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,IAA4B,CAAC,CAAC;YAC7E,OAAO,WAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IAES,cAAc,CAAC,YAA+C,EAAE,CAAwB,EAAE,OAAmB;QACrH,IAAI,IAAI,GAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,WAAW,GAAY,IAAI,CAAC;QAEhC;;;WAGG;QACH,IAAI,IAAA,sBAAS,EAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAED,oBAAoB;YACpB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAExE,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,iDAAiD;gBACjD,oBAAoB;gBACnB,WAAmB,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5D,CAAC;YAED,IAAI,IAAA,2BAAc,EAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC7B,WAA4B;yBAC1B,OAAO,EAAE;yBACT,IAAI,CAAC,GAAG,EAAE;wBACT,GAAG,CAAC,WAAW,CAAC,CAAC;oBACnB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,WAAW,YAAY,2BAAW,EAAE,CAAC;oBACvC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAI,MAAyB,EAAE,IAAuC,EAAE,MAAgB;QAC9G,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAES,mBAAmB,CAAC,QAA8B;QAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,2CAA2C;YAC3C,wDAAwD;YACxD,iDAAiD;YACjD,mCAAmC;YACnC,gCAAgC;YAChC,2CAA2C;YAC3C,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;oBAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,+BAAe,CAAC,WAAW,IAAI,oCAAoC,CAAC,CAAC;oBACjF,CAAC;oBAED,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;gBAEF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,+BAAe,CAAC,WAAY,CAAC,CAAC,MAAc,CAAC,IAAI,oCAAoC,CAAC,CAAC;gBACnG,CAAC;gBAED,IAAI,gBAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC3B,OAAO;4BACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;4BACzB,OAAO,EAAE,CAAC,CAAC,OAAO;yBACnB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG;wBACR,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAChC,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,YAAY,GAAG,IAAI,CAAC;YACxB,IAAI,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAW,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,CAAC,OAAO,CAAE,OAAO,EAAE,IAAY,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzH,CAAC;YAED,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gBACpC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE;oBACpC,OAAO;wBACL,UAAU,EAAE,CAAC,CAAC,UAAU;wBACxB,aAAa,EAAE,CAAC,CAAC,aAAa;wBAC9B,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;qBAC3B,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;aACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,YAAY,CAAC;QAEpB,SAAS,QAAQ,CAAC,GAAQ,EAAE,CAAqB;YAC/C,IAAI,QAAQ,GAAG,GAAG,CAAC;YACnB,IAAI,gBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChC,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;gBACtC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;oBACnB,QAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAEM,iBAAiB,CAAC,IAAoB;QAC3C,MAAM,UAAU,GAA+B;YAC7C,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,sBAAW,CAAC,SAAS;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,qCAAqB,EAAE,IAAI,CAA+B,CAAC;QAChG,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,SAAS,UAAU,CAAC,GAAwB;YAC1C,IAAI,CAAC,GAAG;gBAAE,OAAO,SAAS,CAAC;YAC3B,MAAM,QAAQ,GAA+B,OAAO,CAAC,WAAW,CAAC,qCAAqB,EAAE,GAAG,CAAC,CAAC;YAC7F,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5B,MAAM,SAAS,GAAG,IAAA,wBAAW,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAExC,4DAA4D;oBAC5D,kFAAkF;oBAClF,sDAAsD;oBACtD,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC1B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;yBAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC5F,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,uDAAuD;YACvD,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjB,oBAAoB;QACpB,6CAA6C;QAC7C,0DAA0D;QAE1D,wEAAwE;QACxE,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QACrE,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,gBAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAEtF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AApmBD,8BAomBC"}
|