@memberjunction/core 2.128.0 → 2.129.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/mocks/TestMetadataProvider.d.ts +4 -2
- package/dist/__tests__/mocks/TestMetadataProvider.d.ts.map +1 -1
- package/dist/__tests__/mocks/TestMetadataProvider.js +9 -3
- package/dist/__tests__/mocks/TestMetadataProvider.js.map +1 -1
- package/dist/generic/RegisterForStartup.d.ts +228 -0
- package/dist/generic/RegisterForStartup.d.ts.map +1 -0
- package/dist/generic/RegisterForStartup.js +233 -0
- package/dist/generic/RegisterForStartup.js.map +1 -0
- package/dist/generic/baseEngine.d.ts +191 -8
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +360 -14
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEngineRegistry.d.ts +247 -0
- package/dist/generic/baseEngineRegistry.d.ts.map +1 -0
- package/dist/generic/baseEngineRegistry.js +470 -0
- package/dist/generic/baseEngineRegistry.js.map +1 -0
- package/dist/generic/entityInfo.d.ts +50 -0
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +56 -0
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/graphqlTypeNames.d.ts +90 -0
- package/dist/generic/graphqlTypeNames.d.ts.map +1 -0
- package/dist/generic/graphqlTypeNames.js +119 -0
- package/dist/generic/graphqlTypeNames.js.map +1 -0
- package/dist/generic/interfaces.d.ts +234 -3
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +388 -0
- package/dist/generic/localCacheManager.d.ts.map +1 -0
- package/dist/generic/localCacheManager.js +856 -0
- package/dist/generic/localCacheManager.js.map +1 -0
- package/dist/generic/providerBase.d.ts +227 -13
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +751 -6
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.d.ts +18 -0
- package/dist/generic/queryInfo.d.ts.map +1 -1
- package/dist/generic/queryInfo.js +18 -0
- package/dist/generic/queryInfo.js.map +1 -1
- package/dist/generic/queryInfoInterfaces.d.ts +17 -0
- package/dist/generic/queryInfoInterfaces.d.ts.map +1 -1
- package/dist/generic/runQuery.d.ts +30 -0
- package/dist/generic/runQuery.d.ts.map +1 -1
- package/dist/generic/runQuery.js +13 -0
- package/dist/generic/runQuery.js.map +1 -1
- package/dist/generic/telemetryManager.d.ts +628 -0
- package/dist/generic/telemetryManager.d.ts.map +1 -0
- package/dist/generic/telemetryManager.js +1011 -0
- package/dist/generic/telemetryManager.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/views/runView.d.ts +25 -0
- package/dist/views/runView.d.ts.map +1 -1
- package/dist/views/runView.js +4 -5
- package/dist/views/runView.js.map +1 -1
- package/package.json +2 -2
|
@@ -27,8 +27,10 @@ export declare class TestMetadataProvider extends ProviderBase {
|
|
|
27
27
|
GetEntityRecordNames(): Promise<any[]>;
|
|
28
28
|
GetRecordFavoriteStatus(): Promise<boolean>;
|
|
29
29
|
SetRecordFavoriteStatus(): Promise<void>;
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
protected InternalRunView(): Promise<any>;
|
|
31
|
+
protected InternalRunViews(): Promise<any[]>;
|
|
32
|
+
protected InternalRunQuery(): Promise<any>;
|
|
33
|
+
protected InternalRunQueries(): Promise<any[]>;
|
|
32
34
|
protected GetCurrentUser(): Promise<UserInfo>;
|
|
33
35
|
GetRecordDependencies(entityName: string, compositeKey: CompositeKey, contextUser?: UserInfo): Promise<RecordDependency[]>;
|
|
34
36
|
GetRecordDuplicates(params: PotentialDuplicateRequest, contextUser?: UserInfo): Promise<PotentialDuplicateResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestMetadataProvider.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/TestMetadataProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,qBAAa,oBAAqB,SAAQ,YAAY;IAClD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,UAAU,CAAO;;IAMzB,SAAS,KAAK,YAAY,IAAI,OAAO,CAEpC;IAEM,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,kBAAkB,IAAI,GAAG,CAEnC;IAEM,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAQ9B,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAItC,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3C,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TestMetadataProvider.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/TestMetadataProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,qBAAa,oBAAqB,SAAQ,YAAY;IAClD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,UAAU,CAAO;;IAMzB,SAAS,KAAK,YAAY,IAAI,OAAO,CAEpC;IAEM,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,kBAAkB,IAAI,GAAG,CAEnC;IAEM,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAQ9B,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAItC,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3C,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;cAIrC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;cAI/B,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;cAIlC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;cAIhC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;cAKpC,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IAYtC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI1H,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAOnH,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAU3H,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0FnK,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAW5L,IAAW,wBAAwB,IAAI,MAAM,CAE5C;IAEY,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIpE,IAAW,oBAAoB,IAAI,qBAAqB,CAMvD;IAED,SAAS,KAAK,QAAQ,IAAI,iBAAiB,CAE1C;CACJ"}
|
|
@@ -57,10 +57,16 @@ class TestMetadataProvider extends providerBase_1.ProviderBase {
|
|
|
57
57
|
async SetRecordFavoriteStatus() {
|
|
58
58
|
// No-op
|
|
59
59
|
}
|
|
60
|
-
async
|
|
61
|
-
return { Success: true, Results: [] };
|
|
60
|
+
async InternalRunView() {
|
|
61
|
+
return { Success: true, Results: [], RowCount: 0, TotalRowCount: 0, ExecutionTime: 0, ErrorMessage: '', UserViewRunID: '' };
|
|
62
62
|
}
|
|
63
|
-
async
|
|
63
|
+
async InternalRunViews() {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
async InternalRunQuery() {
|
|
67
|
+
return { Success: true, Results: [], RowCount: 0, TotalRowCount: 0, ExecutionTime: 0, ErrorMessage: '', QueryID: '', QueryName: '' };
|
|
68
|
+
}
|
|
69
|
+
async InternalRunQueries() {
|
|
64
70
|
return [];
|
|
65
71
|
}
|
|
66
72
|
// Required abstract methods (minimal stubs for testing - no database needed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestMetadataProvider.js","sourceRoot":"","sources":["../../../src/__tests__/mocks/TestMetadataProvider.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,6DAA0D;AAC1D,yDAWkC;AAClC,6DAAsD;AACtD,yDAAmG;AAInG,MAAa,oBAAqB,SAAQ,2BAAY;IAMlD;QACI,KAAK,EAAE,CAAC;QANJ,kBAAa,GAAG,IAAI,CAAC;QACrB,kBAAa,GAAQ,IAAI,CAAC;QAC1B,0BAAqB,GAAG,CAAC,CAAC;QAC1B,eAAU,GAAG,GAAG,CAAC,CAAC,eAAe;IAIzC,CAAC;IAED,IAAc,YAAY;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAEM,eAAe,CAAC,KAAc;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,IAAW,kBAAkB;QACzB,OAAO,EAAE,CAAC,CAAC,kBAAkB;IACjC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAEM,cAAc;QACjB,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY,CAAC,EAAU;QAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAEM,eAAe,CAAC,QAAa;QAChC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,iEAAiE;IACjE,sEAAsE;IAEtE,kDAAkD;IAC3C,KAAK,CAAC,mBAAmB;QAC5B,OAAO,aAAa,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC7B,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,uBAAuB;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,uBAAuB;QAChC,QAAQ;IACZ,CAAC;
|
|
1
|
+
{"version":3,"file":"TestMetadataProvider.js","sourceRoot":"","sources":["../../../src/__tests__/mocks/TestMetadataProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { UserInfo } from "./securityInfo";
|
|
2
|
+
import { IMetadataProvider } from "./interfaces";
|
|
3
|
+
/**
|
|
4
|
+
* Options for the @RegisterForStartup decorator
|
|
5
|
+
*/
|
|
6
|
+
export interface RegisterForStartupOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Loading priority. Lower numbers load first.
|
|
9
|
+
* Classes with same priority load in parallel.
|
|
10
|
+
* Default: 100
|
|
11
|
+
*/
|
|
12
|
+
priority?: number;
|
|
13
|
+
/**
|
|
14
|
+
* What happens if HandleStartup() fails.
|
|
15
|
+
* - 'fatal': Stop startup, throw error, process should terminate
|
|
16
|
+
* - 'error': Log error, continue loading other classes (default)
|
|
17
|
+
* - 'warn': Log warning, continue (for optional functionality)
|
|
18
|
+
* - 'silent': Swallow error completely
|
|
19
|
+
*/
|
|
20
|
+
severity?: 'fatal' | 'error' | 'warn' | 'silent';
|
|
21
|
+
/**
|
|
22
|
+
* Human-readable description for logging/debugging
|
|
23
|
+
*/
|
|
24
|
+
description?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Interface for any singleton class that needs initialization at application startup.
|
|
28
|
+
* Implementing classes must follow the singleton pattern with a static Instance property.
|
|
29
|
+
* Named "Sink" to indicate it receives/handles startup events.
|
|
30
|
+
*/
|
|
31
|
+
export interface IStartupSink {
|
|
32
|
+
/**
|
|
33
|
+
* Called during application bootstrap to initialize the singleton.
|
|
34
|
+
* @param contextUser - The authenticated user context (required for server-side, optional for client-side)
|
|
35
|
+
* @param provider - Optional metadata provider to use for initialization
|
|
36
|
+
*/
|
|
37
|
+
HandleStartup(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated Use IStartupSink instead
|
|
41
|
+
*/
|
|
42
|
+
export type IStartupClass = IStartupSink;
|
|
43
|
+
/**
|
|
44
|
+
* Registration information for a startup class
|
|
45
|
+
*/
|
|
46
|
+
export interface StartupRegistration {
|
|
47
|
+
/**
|
|
48
|
+
* The constructor function of the registered class
|
|
49
|
+
*/
|
|
50
|
+
constructor: new (...args: unknown[]) => IStartupSink;
|
|
51
|
+
/**
|
|
52
|
+
* Function to get the singleton instance of the class
|
|
53
|
+
*/
|
|
54
|
+
getInstance: () => IStartupSink;
|
|
55
|
+
/**
|
|
56
|
+
* Options provided to the decorator
|
|
57
|
+
*/
|
|
58
|
+
options: RegisterForStartupOptions;
|
|
59
|
+
/**
|
|
60
|
+
* When the class was successfully loaded (undefined if not yet loaded)
|
|
61
|
+
*/
|
|
62
|
+
loadedAt?: Date;
|
|
63
|
+
/**
|
|
64
|
+
* How long the HandleStartup() call took in milliseconds
|
|
65
|
+
*/
|
|
66
|
+
loadDurationMs?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Result of loading a single startup class
|
|
70
|
+
*/
|
|
71
|
+
export interface LoadResult {
|
|
72
|
+
/**
|
|
73
|
+
* Name of the class that was loaded
|
|
74
|
+
*/
|
|
75
|
+
className: string;
|
|
76
|
+
/**
|
|
77
|
+
* Whether the load was successful
|
|
78
|
+
*/
|
|
79
|
+
success: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Error that occurred during loading (if any)
|
|
82
|
+
*/
|
|
83
|
+
error?: Error;
|
|
84
|
+
/**
|
|
85
|
+
* Severity level from the registration options
|
|
86
|
+
*/
|
|
87
|
+
severity?: RegisterForStartupOptions['severity'];
|
|
88
|
+
/**
|
|
89
|
+
* How long the load took in milliseconds
|
|
90
|
+
*/
|
|
91
|
+
durationMs: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Result of the LoadAllStartupClasses operation
|
|
95
|
+
*/
|
|
96
|
+
export interface LoadAllResult {
|
|
97
|
+
/**
|
|
98
|
+
* Whether all required classes loaded successfully (no fatal errors)
|
|
99
|
+
*/
|
|
100
|
+
success: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Results for each individual class load
|
|
103
|
+
*/
|
|
104
|
+
results: LoadResult[];
|
|
105
|
+
/**
|
|
106
|
+
* Total time for all loading operations
|
|
107
|
+
*/
|
|
108
|
+
totalDurationMs: number;
|
|
109
|
+
/**
|
|
110
|
+
* The fatal error that stopped loading (if any)
|
|
111
|
+
*/
|
|
112
|
+
fatalError?: Error;
|
|
113
|
+
}
|
|
114
|
+
type StartupClassConstructor = {
|
|
115
|
+
new (...args: unknown[]): IStartupSink;
|
|
116
|
+
Instance: IStartupSink;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Decorator to mark a singleton class for automatic loading at application startup.
|
|
120
|
+
* Similar naming convention to @RegisterClass for consistency.
|
|
121
|
+
*
|
|
122
|
+
* The decorated class must:
|
|
123
|
+
* 1. Implement IStartupSink interface
|
|
124
|
+
* 2. Have a static 'Instance' property (singleton pattern)
|
|
125
|
+
*
|
|
126
|
+
* This decorator also prevents tree-shaking by creating a runtime reference
|
|
127
|
+
* to the class during module initialization.
|
|
128
|
+
*
|
|
129
|
+
* Can be used with or without parentheses:
|
|
130
|
+
* - `@RegisterForStartup` - uses default options
|
|
131
|
+
* - `@RegisterForStartup()` - uses default options
|
|
132
|
+
* - `@RegisterForStartup({ priority: 10 })` - uses custom options
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* // With options
|
|
137
|
+
* @RegisterForStartup({ priority: 10, severity: 'fatal', description: 'Encryption services' })
|
|
138
|
+
* class EncryptionEngine extends BaseEngine<EncryptionEngine> implements IStartupSink {
|
|
139
|
+
* public async HandleStartup(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void> {
|
|
140
|
+
* await this.Config(false, contextUser, provider);
|
|
141
|
+
* }
|
|
142
|
+
* }
|
|
143
|
+
*
|
|
144
|
+
* // Without options (uses defaults)
|
|
145
|
+
* @RegisterForStartup
|
|
146
|
+
* class SimpleEngine extends BaseEngine<SimpleEngine> implements IStartupSink {
|
|
147
|
+
* public async HandleStartup(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void> {
|
|
148
|
+
* await this.Config(false, contextUser, provider);
|
|
149
|
+
* }
|
|
150
|
+
* }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export declare function RegisterForStartup<T extends StartupClassConstructor>(constructor: T): T;
|
|
154
|
+
export declare function RegisterForStartup(options?: RegisterForStartupOptions): <T extends StartupClassConstructor>(constructor: T) => T;
|
|
155
|
+
/**
|
|
156
|
+
* Manages registration and loading of startup classes.
|
|
157
|
+
* This is a singleton that handles the @RegisterForStartup decorator pattern.
|
|
158
|
+
*/
|
|
159
|
+
export declare class StartupManager {
|
|
160
|
+
private static _instance;
|
|
161
|
+
private _registrations;
|
|
162
|
+
private _loadCompleted;
|
|
163
|
+
private _loadPromise;
|
|
164
|
+
private _lastResult;
|
|
165
|
+
private constructor();
|
|
166
|
+
/**
|
|
167
|
+
* Returns the singleton instance of StartupManager
|
|
168
|
+
*/
|
|
169
|
+
static get Instance(): StartupManager;
|
|
170
|
+
/**
|
|
171
|
+
* Register a class for startup loading. Called by @RegisterForStartup decorator.
|
|
172
|
+
*/
|
|
173
|
+
Register(registration: Omit<StartupRegistration, 'loadedAt' | 'loadDurationMs'>): void;
|
|
174
|
+
/**
|
|
175
|
+
* Get all registered startup classes, sorted by priority (lower numbers first).
|
|
176
|
+
*/
|
|
177
|
+
GetRegistrations(): StartupRegistration[];
|
|
178
|
+
/**
|
|
179
|
+
* Check if startup loading has been completed
|
|
180
|
+
*/
|
|
181
|
+
get LoadCompleted(): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Handles all startup activities including initializing the local cache manager and then
|
|
184
|
+
* loading all registered startup classes in priority order.
|
|
185
|
+
*
|
|
186
|
+
* Classes with the same priority are loaded in parallel.
|
|
187
|
+
*
|
|
188
|
+
* This method is idempotent - multiple callers will receive the same promise
|
|
189
|
+
* and startup classes are only loaded once unless forceRefresh is true.
|
|
190
|
+
* This prevents race conditions when multiple components await startup completion.
|
|
191
|
+
*
|
|
192
|
+
* @param forceRefresh - If true, reload all startup classes even if already loaded
|
|
193
|
+
* @param contextUser - The authenticated user context
|
|
194
|
+
* @param provider - Optional metadata provider
|
|
195
|
+
* @returns Results of all load operations
|
|
196
|
+
*/
|
|
197
|
+
Startup(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<LoadAllResult>;
|
|
198
|
+
/**
|
|
199
|
+
* Internal method that performs the actual startup loading work.
|
|
200
|
+
*/
|
|
201
|
+
private ExecuteLoad;
|
|
202
|
+
/**
|
|
203
|
+
* Resolve the priority from options, defaulting to 100 if not specified.
|
|
204
|
+
*/
|
|
205
|
+
private ResolvePriority;
|
|
206
|
+
/**
|
|
207
|
+
* Group registrations by their priority for parallel loading within priority levels.
|
|
208
|
+
*/
|
|
209
|
+
private GroupByPriority;
|
|
210
|
+
/**
|
|
211
|
+
* Reset startup registrations. Use with caution, primarily for testing.
|
|
212
|
+
*/
|
|
213
|
+
Reset(): void;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @deprecated Use RegisterForStartupOptions instead
|
|
217
|
+
*/
|
|
218
|
+
export type LoadOnStartupOptions = RegisterForStartupOptions;
|
|
219
|
+
/**
|
|
220
|
+
* @deprecated Use IStartupSink instead
|
|
221
|
+
*/
|
|
222
|
+
export type ILoadOnStartup = IStartupSink;
|
|
223
|
+
/**
|
|
224
|
+
* @deprecated Use RegisterForStartup instead
|
|
225
|
+
*/
|
|
226
|
+
export declare const LoadOnStartup: typeof RegisterForStartup;
|
|
227
|
+
export {};
|
|
228
|
+
//# sourceMappingURL=RegisterForStartup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisterForStartup.d.ts","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoadOnStartup = exports.StartupManager = exports.RegisterForStartup = void 0;
|
|
4
|
+
const metadata_1 = require("./metadata");
|
|
5
|
+
const localCacheManager_1 = require("./localCacheManager");
|
|
6
|
+
/**
|
|
7
|
+
* Internal function that performs the actual registration
|
|
8
|
+
*/
|
|
9
|
+
function registerStartupClass(constructor, options) {
|
|
10
|
+
// Register with StartupManager
|
|
11
|
+
StartupManager.Instance.Register({
|
|
12
|
+
constructor: constructor,
|
|
13
|
+
getInstance: () => {
|
|
14
|
+
// Access the Instance property at runtime when actually needed
|
|
15
|
+
const ctor = constructor;
|
|
16
|
+
if (!('Instance' in ctor)) {
|
|
17
|
+
throw new Error(`@RegisterForStartup requires singleton pattern. ${constructor.name} must have a static 'Instance' property.`);
|
|
18
|
+
}
|
|
19
|
+
return ctor.Instance;
|
|
20
|
+
},
|
|
21
|
+
options: options
|
|
22
|
+
});
|
|
23
|
+
return constructor;
|
|
24
|
+
}
|
|
25
|
+
function RegisterForStartup(constructorOrOptions) {
|
|
26
|
+
// Check if called directly on a class (without parentheses)
|
|
27
|
+
// In that case, the first argument is the constructor function
|
|
28
|
+
if (typeof constructorOrOptions === 'function') {
|
|
29
|
+
// Direct decorator usage: @RegisterForStartup
|
|
30
|
+
return registerStartupClass(constructorOrOptions, {});
|
|
31
|
+
}
|
|
32
|
+
// Called with options (or empty parentheses): @RegisterForStartup() or @RegisterForStartup({ ... })
|
|
33
|
+
const options = constructorOrOptions || {};
|
|
34
|
+
return function (constructor) {
|
|
35
|
+
return registerStartupClass(constructor, options);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
exports.RegisterForStartup = RegisterForStartup;
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// STARTUP MANAGER - Handles all startup loading infrastructure
|
|
41
|
+
// ============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Manages registration and loading of startup classes.
|
|
44
|
+
* This is a singleton that handles the @RegisterForStartup decorator pattern.
|
|
45
|
+
*/
|
|
46
|
+
class StartupManager {
|
|
47
|
+
constructor() {
|
|
48
|
+
this._registrations = [];
|
|
49
|
+
this._loadCompleted = false;
|
|
50
|
+
this._loadPromise = null;
|
|
51
|
+
this._lastResult = null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns the singleton instance of StartupManager
|
|
55
|
+
*/
|
|
56
|
+
static get Instance() {
|
|
57
|
+
if (!StartupManager._instance) {
|
|
58
|
+
StartupManager._instance = new StartupManager();
|
|
59
|
+
}
|
|
60
|
+
return StartupManager._instance;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Register a class for startup loading. Called by @RegisterForStartup decorator.
|
|
64
|
+
*/
|
|
65
|
+
Register(registration) {
|
|
66
|
+
this._registrations.push(registration);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get all registered startup classes, sorted by priority (lower numbers first).
|
|
70
|
+
*/
|
|
71
|
+
GetRegistrations() {
|
|
72
|
+
return [...this._registrations].sort((a, b) => {
|
|
73
|
+
const priorityA = this.ResolvePriority(a.options);
|
|
74
|
+
const priorityB = this.ResolvePriority(b.options);
|
|
75
|
+
return priorityA - priorityB;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if startup loading has been completed
|
|
80
|
+
*/
|
|
81
|
+
get LoadCompleted() {
|
|
82
|
+
return this._loadCompleted;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handles all startup activities including initializing the local cache manager and then
|
|
86
|
+
* loading all registered startup classes in priority order.
|
|
87
|
+
*
|
|
88
|
+
* Classes with the same priority are loaded in parallel.
|
|
89
|
+
*
|
|
90
|
+
* This method is idempotent - multiple callers will receive the same promise
|
|
91
|
+
* and startup classes are only loaded once unless forceRefresh is true.
|
|
92
|
+
* This prevents race conditions when multiple components await startup completion.
|
|
93
|
+
*
|
|
94
|
+
* @param forceRefresh - If true, reload all startup classes even if already loaded
|
|
95
|
+
* @param contextUser - The authenticated user context
|
|
96
|
+
* @param provider - Optional metadata provider
|
|
97
|
+
* @returns Results of all load operations
|
|
98
|
+
*/
|
|
99
|
+
async Startup(forceRefresh = false, contextUser, provider) {
|
|
100
|
+
// If already completed and not forcing refresh, return cached result
|
|
101
|
+
if (this._loadCompleted && !forceRefresh && this._lastResult) {
|
|
102
|
+
return this._lastResult;
|
|
103
|
+
}
|
|
104
|
+
// If currently loading (and not forcing refresh), return the existing promise
|
|
105
|
+
// This allows multiple callers to await the same loading operation
|
|
106
|
+
if (this._loadPromise && !forceRefresh) {
|
|
107
|
+
return this._loadPromise;
|
|
108
|
+
}
|
|
109
|
+
// If forcing refresh, reset state
|
|
110
|
+
if (forceRefresh) {
|
|
111
|
+
this._loadCompleted = false;
|
|
112
|
+
this._loadPromise = null;
|
|
113
|
+
this._lastResult = null;
|
|
114
|
+
}
|
|
115
|
+
// Start loading and store the promise so other callers can await it
|
|
116
|
+
this._loadPromise = this.ExecuteLoad(contextUser, provider);
|
|
117
|
+
try {
|
|
118
|
+
this._lastResult = await this._loadPromise;
|
|
119
|
+
return this._lastResult;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
// Clear the promise reference after completion (result is cached in _lastResult)
|
|
123
|
+
this._loadPromise = null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Internal method that performs the actual startup loading work.
|
|
128
|
+
*/
|
|
129
|
+
async ExecuteLoad(contextUser, provider) {
|
|
130
|
+
// first, init the LocalCacheManager and await its completion
|
|
131
|
+
// Get the storage provider from the metadata provider (uses IndexedDB)
|
|
132
|
+
const cacheStart = Date.now();
|
|
133
|
+
const storageProvider = metadata_1.Metadata.Provider.LocalStorageProvider;
|
|
134
|
+
await localCacheManager_1.LocalCacheManager.Instance.Initialize(storageProvider);
|
|
135
|
+
console.log(`LocalCacheManager initialized in ${Date.now() - cacheStart}ms`);
|
|
136
|
+
const startTime = Date.now();
|
|
137
|
+
const registrations = this.GetRegistrations();
|
|
138
|
+
const groups = this.GroupByPriority(registrations);
|
|
139
|
+
const results = [];
|
|
140
|
+
for (const group of groups) {
|
|
141
|
+
const groupResults = await Promise.all(group.map(async (reg) => {
|
|
142
|
+
const loadStart = Date.now();
|
|
143
|
+
try {
|
|
144
|
+
const instance = reg.getInstance();
|
|
145
|
+
await instance.HandleStartup(contextUser, provider);
|
|
146
|
+
reg.loadedAt = new Date();
|
|
147
|
+
reg.loadDurationMs = Date.now() - loadStart;
|
|
148
|
+
return {
|
|
149
|
+
className: reg.constructor.name,
|
|
150
|
+
success: true,
|
|
151
|
+
durationMs: reg.loadDurationMs
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const durationMs = Date.now() - loadStart;
|
|
156
|
+
return {
|
|
157
|
+
className: reg.constructor.name,
|
|
158
|
+
success: false,
|
|
159
|
+
error: error,
|
|
160
|
+
severity: reg.options.severity || 'error',
|
|
161
|
+
durationMs
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
165
|
+
results.push(...groupResults);
|
|
166
|
+
// Check for fatal errors - stop immediately
|
|
167
|
+
const fatal = groupResults.find(r => !r.success && r.severity === 'fatal');
|
|
168
|
+
if (fatal) {
|
|
169
|
+
return {
|
|
170
|
+
success: false,
|
|
171
|
+
results,
|
|
172
|
+
totalDurationMs: Date.now() - startTime,
|
|
173
|
+
fatalError: fatal.error
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// Log non-fatal errors
|
|
177
|
+
for (const result of groupResults) {
|
|
178
|
+
if (!result.success) {
|
|
179
|
+
if (result.severity === 'error') {
|
|
180
|
+
console.error(`[StartupManager] Error loading ${result.className}:`, result.error);
|
|
181
|
+
}
|
|
182
|
+
else if (result.severity === 'warn') {
|
|
183
|
+
console.warn(`[StartupManager] Warning loading ${result.className}:`, result.error);
|
|
184
|
+
}
|
|
185
|
+
// 'silent' - do nothing
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
this._loadCompleted = true;
|
|
190
|
+
return {
|
|
191
|
+
success: results.every(r => r.success || r.severity !== 'fatal'),
|
|
192
|
+
results,
|
|
193
|
+
totalDurationMs: Date.now() - startTime
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Resolve the priority from options, defaulting to 100 if not specified.
|
|
198
|
+
*/
|
|
199
|
+
ResolvePriority(options) {
|
|
200
|
+
return options.priority ?? 100;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Group registrations by their priority for parallel loading within priority levels.
|
|
204
|
+
*/
|
|
205
|
+
GroupByPriority(registrations) {
|
|
206
|
+
const groups = new Map();
|
|
207
|
+
for (const reg of registrations) {
|
|
208
|
+
const priority = this.ResolvePriority(reg.options);
|
|
209
|
+
if (!groups.has(priority)) {
|
|
210
|
+
groups.set(priority, []);
|
|
211
|
+
}
|
|
212
|
+
groups.get(priority).push(reg);
|
|
213
|
+
}
|
|
214
|
+
return Array.from(groups.entries())
|
|
215
|
+
.sort((a, b) => a[0] - b[0])
|
|
216
|
+
.map(([_, group]) => group);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Reset startup registrations. Use with caution, primarily for testing.
|
|
220
|
+
*/
|
|
221
|
+
Reset() {
|
|
222
|
+
this._registrations = [];
|
|
223
|
+
this._loadCompleted = false;
|
|
224
|
+
this._loadPromise = null;
|
|
225
|
+
this._lastResult = null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.StartupManager = StartupManager;
|
|
229
|
+
/**
|
|
230
|
+
* @deprecated Use RegisterForStartup instead
|
|
231
|
+
*/
|
|
232
|
+
exports.LoadOnStartup = RegisterForStartup;
|
|
233
|
+
//# sourceMappingURL=RegisterForStartup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisterForStartup.js","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AACtC,2DAAwD;AA0IxD;;GAEG;AACH,SAAS,oBAAoB,CACzB,WAAc,EACd,OAAkC;IAElC,+BAA+B;IAC/B,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7B,WAAW,EAAE,WAAkE;QAC/E,WAAW,EAAE,GAAG,EAAE;YACd,+DAA+D;YAC/D,MAAM,IAAI,GAAG,WAAoD,CAAC;YAClE,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACX,mDAAmD,WAAW,CAAC,IAAI,0CAA0C,CAChH,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACvB,CAAC;AAuCD,SAAgB,kBAAkB,CAC9B,oBAAoD;IAEpD,4DAA4D;IAC5D,+DAA+D;IAC/D,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC7C,8CAA8C;QAC9C,OAAO,oBAAoB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,oGAAoG;IACpG,MAAM,OAAO,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAC3C,OAAO,UAAS,WAAc;QAC1B,OAAO,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;AACN,CAAC;AAfD,gDAeC;AAED,+EAA+E;AAC/E,+DAA+D;AAC/D,+EAA+E;AAE/E;;;GAGG;AACH,MAAa,cAAc;IAQvB;QALQ,mBAAc,GAA0B,EAAE,CAAC;QAC3C,mBAAc,GAAY,KAAK,CAAC;QAChC,iBAAY,GAAkC,IAAI,CAAC;QACnD,gBAAW,GAAyB,IAAI,CAAC;IAE1B,CAAC;IAExB;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC5B,cAAc,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,cAAc,CAAC,SAAS,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,YAAsE;QAClF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAmC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAgB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,SAAS,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,OAAO,CAChB,eAAwB,KAAK,EAC7B,WAAsB,EACtB,QAA4B;QAE5B,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,8EAA8E;QAC9E,mEAAmE;QACnE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QAED,kCAAkC;QAClC,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACP,iFAAiF;YACjF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,WAAsB,EAAE,QAA4B;QAC1E,6DAA6D;QAC7D,uEAAuE;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,mBAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,MAAM,qCAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;QAI7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAuB,EAAE;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;oBACnC,MAAM,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAEpD,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC1B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAE5C,OAAO;wBACH,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI;wBAC/B,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,GAAG,CAAC,cAAc;qBACjC,CAAC;gBACN,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAC1C,OAAO;wBACH,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI;wBAC/B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAc;wBACrB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO;wBACzC,UAAU;qBACb,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CACL,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAE9B,4CAA4C;YAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YAC3E,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO;oBACP,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACvC,UAAU,EAAE,KAAK,CAAC,KAAK;iBAC1B,CAAC;YACN,CAAC;YAED,uBAAuB;YACvB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvF,CAAC;yBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACpC,OAAO,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxF,CAAC;oBACD,wBAAwB;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,OAAO;YACH,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;YAChE,OAAO;YACP,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAC1C,CAAC;IACN,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAkC;QACtD,OAAO,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,aAAoC;QACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;QAExD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;CACJ;AApND,wCAoNC;AAgBD;;GAEG;AACU,QAAA,aAAa,GAAG,kBAAkB,CAAC"}
|