@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
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TelemetryManager - Lightweight instrumentation system for tracking operation performance,
|
|
3
|
+
* detecting patterns, and surfacing optimization opportunities.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Session-level event tracking for RunView, RunQuery, Engine, AI, Cache operations
|
|
7
|
+
* - Pattern detection for identifying duplicate calls and optimization opportunities
|
|
8
|
+
* - Pluggable analyzer system for custom analysis rules
|
|
9
|
+
* - WarningManager integration for debounced console output
|
|
10
|
+
* - Configurable via local storage for per-client settings
|
|
11
|
+
* - Strongly-typed parameter interfaces for each telemetry category
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const tm = TelemetryManager.Instance;
|
|
16
|
+
*
|
|
17
|
+
* // Enable telemetry
|
|
18
|
+
* tm.SetEnabled(true);
|
|
19
|
+
*
|
|
20
|
+
* // Track a RunView operation with typed params
|
|
21
|
+
* const eventId = tm.StartEvent('RunView', 'ProviderBase.RunView', {
|
|
22
|
+
* EntityName: 'Users',
|
|
23
|
+
* ExtraFilter: 'IsActive = 1',
|
|
24
|
+
* ResultType: 'entity_object'
|
|
25
|
+
* });
|
|
26
|
+
* // ... perform operation
|
|
27
|
+
* tm.EndEvent(eventId, { cacheHit: false, resultCount: 50 });
|
|
28
|
+
*
|
|
29
|
+
* // Get patterns for analysis
|
|
30
|
+
* const patterns = tm.GetPatterns({ category: 'RunView', minCount: 2 });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import { BaseSingleton } from '@memberjunction/global';
|
|
34
|
+
/**
|
|
35
|
+
* Telemetry detail levels - controls what information is captured
|
|
36
|
+
*/
|
|
37
|
+
export type TelemetryLevel = 'off' | 'basic' | 'standard' | 'verbose' | 'debug';
|
|
38
|
+
/**
|
|
39
|
+
* Numeric mapping for level comparisons
|
|
40
|
+
*/
|
|
41
|
+
export declare const TelemetryLevelValue: Record<TelemetryLevel, number>;
|
|
42
|
+
/**
|
|
43
|
+
* Categories of operations that can be tracked
|
|
44
|
+
*/
|
|
45
|
+
export type TelemetryCategory = 'RunView' | 'RunQuery' | 'Engine' | 'Network' | 'AI' | 'Cache' | 'Custom';
|
|
46
|
+
/**
|
|
47
|
+
* Severity levels for telemetry insights
|
|
48
|
+
*/
|
|
49
|
+
export type TelemetryInsightSeverity = 'info' | 'warning' | 'optimization';
|
|
50
|
+
/**
|
|
51
|
+
* Result type for RunView operations
|
|
52
|
+
*/
|
|
53
|
+
export type RunViewResultType = 'simple' | 'entity_object' | 'count_only';
|
|
54
|
+
/**
|
|
55
|
+
* Telemetry params for a single RunView operation.
|
|
56
|
+
* Maps to core properties of RunViewParams.
|
|
57
|
+
*/
|
|
58
|
+
export interface TelemetryRunViewParams {
|
|
59
|
+
/** Entity name being queried */
|
|
60
|
+
EntityName?: string;
|
|
61
|
+
/** View ID if running a saved view */
|
|
62
|
+
ViewID?: string;
|
|
63
|
+
/** View name if running a saved view */
|
|
64
|
+
ViewName?: string;
|
|
65
|
+
/** SQL WHERE clause filter */
|
|
66
|
+
ExtraFilter?: string;
|
|
67
|
+
/** SQL ORDER BY clause */
|
|
68
|
+
OrderBy?: string;
|
|
69
|
+
/** Type of result to return */
|
|
70
|
+
ResultType?: RunViewResultType;
|
|
71
|
+
/** Maximum rows to return */
|
|
72
|
+
MaxRows?: number;
|
|
73
|
+
/** Starting row for pagination */
|
|
74
|
+
StartRow?: number;
|
|
75
|
+
/** Whether to cache locally */
|
|
76
|
+
CacheLocal?: boolean;
|
|
77
|
+
/** Internal marker for engine-initiated calls */
|
|
78
|
+
_fromEngine?: boolean;
|
|
79
|
+
/** Whether result was served from cache (set after operation completes) */
|
|
80
|
+
cacheHit?: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Telemetry params for batch RunViews operation.
|
|
84
|
+
* Used when multiple views are executed in a single call.
|
|
85
|
+
*/
|
|
86
|
+
export interface TelemetryRunViewsBatchParams {
|
|
87
|
+
/** Number of views in the batch */
|
|
88
|
+
BatchSize: number;
|
|
89
|
+
/** Entity names being queried in the batch */
|
|
90
|
+
Entities: string[];
|
|
91
|
+
/** Internal marker for engine-initiated calls */
|
|
92
|
+
_fromEngine?: boolean;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Telemetry params for a single RunQuery operation.
|
|
96
|
+
* Maps to core properties of RunQueryParams.
|
|
97
|
+
*/
|
|
98
|
+
export interface TelemetryRunQueryParams {
|
|
99
|
+
/** Query ID if running by ID */
|
|
100
|
+
QueryID?: string;
|
|
101
|
+
/** Query name if running by name */
|
|
102
|
+
QueryName?: string;
|
|
103
|
+
/** Category path for the query */
|
|
104
|
+
CategoryPath?: string;
|
|
105
|
+
/** Category ID for the query */
|
|
106
|
+
CategoryID?: string;
|
|
107
|
+
/** Maximum rows to return */
|
|
108
|
+
MaxRows?: number;
|
|
109
|
+
/** Starting row for pagination */
|
|
110
|
+
StartRow?: number;
|
|
111
|
+
/** Whether to cache locally */
|
|
112
|
+
CacheLocal?: boolean;
|
|
113
|
+
/** Whether parameters were provided */
|
|
114
|
+
HasParameters?: boolean;
|
|
115
|
+
/** Whether result was served from cache (set after operation completes) */
|
|
116
|
+
cacheHit?: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Telemetry params for batch RunQueries operation.
|
|
120
|
+
* Used when multiple queries are executed in a single call.
|
|
121
|
+
*/
|
|
122
|
+
export interface TelemetryRunQueriesBatchParams {
|
|
123
|
+
/** Number of queries in the batch */
|
|
124
|
+
BatchSize: number;
|
|
125
|
+
/** Query names/IDs in the batch */
|
|
126
|
+
Queries: string[];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Engine operation types
|
|
130
|
+
*/
|
|
131
|
+
export type EngineOperationType = 'Config' | 'Load' | 'AdditionalLoading' | 'Refresh' | 'initial' | 'refresh';
|
|
132
|
+
/**
|
|
133
|
+
* Telemetry params for Engine operations.
|
|
134
|
+
* Tracks engine lifecycle and loading events.
|
|
135
|
+
*/
|
|
136
|
+
export interface TelemetryEngineParams {
|
|
137
|
+
/** Name of the engine class */
|
|
138
|
+
engineClass: string;
|
|
139
|
+
/** Type of engine operation */
|
|
140
|
+
operation: EngineOperationType;
|
|
141
|
+
/** Number of entities loaded (if applicable) */
|
|
142
|
+
entityCount?: number;
|
|
143
|
+
/** Number of configs being loaded */
|
|
144
|
+
configCount?: number;
|
|
145
|
+
/** Entity names being loaded */
|
|
146
|
+
entityNames?: string[];
|
|
147
|
+
/** Dataset names being loaded */
|
|
148
|
+
datasetNames?: string[];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Telemetry params for AI operations.
|
|
152
|
+
* Tracks AI model invocations and token usage.
|
|
153
|
+
*/
|
|
154
|
+
export interface TelemetryAIParams {
|
|
155
|
+
/** AI Model ID */
|
|
156
|
+
modelID?: string;
|
|
157
|
+
/** AI Model name */
|
|
158
|
+
modelName?: string;
|
|
159
|
+
/** Prompt ID if using a saved prompt */
|
|
160
|
+
promptID?: string;
|
|
161
|
+
/** Prompt name if using a saved prompt */
|
|
162
|
+
promptName?: string;
|
|
163
|
+
/** Number of input tokens */
|
|
164
|
+
inputTokens?: number;
|
|
165
|
+
/** Number of output tokens */
|
|
166
|
+
outputTokens?: number;
|
|
167
|
+
/** AI operation type */
|
|
168
|
+
operationType?: 'chat' | 'embedding' | 'classification' | 'summary';
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Cache operation types
|
|
172
|
+
*/
|
|
173
|
+
export type CacheOperationType = 'get' | 'set' | 'invalidate' | 'validate';
|
|
174
|
+
/**
|
|
175
|
+
* Cache status results
|
|
176
|
+
*/
|
|
177
|
+
export type CacheStatusType = 'hit' | 'miss' | 'stale' | 'current';
|
|
178
|
+
/**
|
|
179
|
+
* Telemetry params for Cache operations.
|
|
180
|
+
* Tracks cache hits, misses, and validation.
|
|
181
|
+
*/
|
|
182
|
+
export interface TelemetryCacheParams {
|
|
183
|
+
/** Type of cache (local or server) */
|
|
184
|
+
cacheType: 'local' | 'server';
|
|
185
|
+
/** Cache operation being performed */
|
|
186
|
+
operation: CacheOperationType;
|
|
187
|
+
/** Entity name (if applicable) */
|
|
188
|
+
entityName?: string;
|
|
189
|
+
/** Cache fingerprint for identification */
|
|
190
|
+
fingerprint?: string;
|
|
191
|
+
/** Result status of the cache operation */
|
|
192
|
+
status?: CacheStatusType;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Telemetry params for Network operations.
|
|
196
|
+
* Tracks API calls and network requests.
|
|
197
|
+
*/
|
|
198
|
+
export interface TelemetryNetworkParams {
|
|
199
|
+
/** HTTP method */
|
|
200
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
201
|
+
/** Request URL or endpoint */
|
|
202
|
+
url?: string;
|
|
203
|
+
/** Response status code */
|
|
204
|
+
statusCode?: number;
|
|
205
|
+
/** Request size in bytes */
|
|
206
|
+
requestSize?: number;
|
|
207
|
+
/** Response size in bytes */
|
|
208
|
+
responseSize?: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Telemetry params for Custom operations.
|
|
212
|
+
* Allows arbitrary key-value pairs for custom tracking.
|
|
213
|
+
*/
|
|
214
|
+
export interface TelemetryCustomParams {
|
|
215
|
+
/** Custom operation name */
|
|
216
|
+
operationName?: string;
|
|
217
|
+
/** Any additional custom data */
|
|
218
|
+
[key: string]: unknown;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Union type of all telemetry param types.
|
|
222
|
+
* Used for type-safe fingerprint generation and event creation.
|
|
223
|
+
*/
|
|
224
|
+
export type TelemetryParamsUnion = TelemetryRunViewParams | TelemetryRunViewsBatchParams | TelemetryRunQueryParams | TelemetryRunQueriesBatchParams | TelemetryEngineParams | TelemetryAIParams | TelemetryCacheParams | TelemetryNetworkParams | TelemetryCustomParams;
|
|
225
|
+
/**
|
|
226
|
+
* Map of category to its param type for type inference
|
|
227
|
+
*/
|
|
228
|
+
export interface TelemetryCategoryParamsMap {
|
|
229
|
+
RunView: TelemetryRunViewParams | TelemetryRunViewsBatchParams;
|
|
230
|
+
RunQuery: TelemetryRunQueryParams | TelemetryRunQueriesBatchParams;
|
|
231
|
+
Engine: TelemetryEngineParams;
|
|
232
|
+
AI: TelemetryAIParams;
|
|
233
|
+
Cache: TelemetryCacheParams;
|
|
234
|
+
Network: TelemetryNetworkParams;
|
|
235
|
+
Custom: TelemetryCustomParams;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Configuration for the telemetry system
|
|
239
|
+
*/
|
|
240
|
+
export interface TelemetrySettings {
|
|
241
|
+
/** Global on/off switch */
|
|
242
|
+
enabled: boolean;
|
|
243
|
+
/** Default detail level for all categories */
|
|
244
|
+
level: TelemetryLevel;
|
|
245
|
+
/** Per-category overrides */
|
|
246
|
+
categoryOverrides: Partial<Record<TelemetryCategory, {
|
|
247
|
+
enabled: boolean;
|
|
248
|
+
level?: TelemetryLevel;
|
|
249
|
+
}>>;
|
|
250
|
+
/** Auto-trim settings for memory management */
|
|
251
|
+
autoTrim: {
|
|
252
|
+
enabled: boolean;
|
|
253
|
+
maxEvents?: number;
|
|
254
|
+
maxAgeMs?: number;
|
|
255
|
+
};
|
|
256
|
+
/** Duplicate detection settings */
|
|
257
|
+
duplicateDetection: {
|
|
258
|
+
enabled: boolean;
|
|
259
|
+
windowMs: number;
|
|
260
|
+
};
|
|
261
|
+
/** Analyzer settings */
|
|
262
|
+
analyzers: {
|
|
263
|
+
enabled: boolean;
|
|
264
|
+
dedupeWindowMs: number;
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Memory snapshot for detailed tracking
|
|
269
|
+
*/
|
|
270
|
+
export interface MemorySnapshot {
|
|
271
|
+
heapUsed: number;
|
|
272
|
+
heapTotal: number;
|
|
273
|
+
timestamp: number;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* A single telemetry event
|
|
277
|
+
*/
|
|
278
|
+
export interface TelemetryEvent<T extends TelemetryParamsUnion = TelemetryParamsUnion> {
|
|
279
|
+
/** Unique event ID */
|
|
280
|
+
id: string;
|
|
281
|
+
/** Category of operation */
|
|
282
|
+
category: TelemetryCategory;
|
|
283
|
+
/** Specific operation name (e.g., 'RunView.Execute') */
|
|
284
|
+
operation: string;
|
|
285
|
+
/** Hash for duplicate detection */
|
|
286
|
+
fingerprint: string;
|
|
287
|
+
startTime: number;
|
|
288
|
+
endTime?: number;
|
|
289
|
+
elapsedMs?: number;
|
|
290
|
+
userId?: string;
|
|
291
|
+
params: T;
|
|
292
|
+
tags?: string[];
|
|
293
|
+
stackTrace?: string;
|
|
294
|
+
memoryBefore?: MemorySnapshot;
|
|
295
|
+
memoryAfter?: MemorySnapshot;
|
|
296
|
+
parentEventId?: string;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Aggregated pattern for a specific operation fingerprint
|
|
300
|
+
*/
|
|
301
|
+
export interface TelemetryPattern {
|
|
302
|
+
fingerprint: string;
|
|
303
|
+
category: TelemetryCategory;
|
|
304
|
+
operation: string;
|
|
305
|
+
sampleParams: TelemetryParamsUnion;
|
|
306
|
+
count: number;
|
|
307
|
+
totalElapsedMs: number;
|
|
308
|
+
avgElapsedMs: number;
|
|
309
|
+
minElapsedMs: number;
|
|
310
|
+
maxElapsedMs: number;
|
|
311
|
+
callerLocations: Map<string, number>;
|
|
312
|
+
firstSeen: number;
|
|
313
|
+
lastSeen: number;
|
|
314
|
+
windowStartTime: number;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Insight generated by an analyzer
|
|
318
|
+
*/
|
|
319
|
+
export interface TelemetryInsight {
|
|
320
|
+
id: string;
|
|
321
|
+
severity: TelemetryInsightSeverity;
|
|
322
|
+
analyzerName: string;
|
|
323
|
+
category: string;
|
|
324
|
+
title: string;
|
|
325
|
+
message: string;
|
|
326
|
+
suggestion: string;
|
|
327
|
+
relatedEventIds: string[];
|
|
328
|
+
entityName?: string;
|
|
329
|
+
metadata?: Record<string, unknown>;
|
|
330
|
+
timestamp: number;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Context provided to analyzers
|
|
334
|
+
*/
|
|
335
|
+
export interface TelemetryAnalyzerContext {
|
|
336
|
+
/** Recent events (last N or time window) */
|
|
337
|
+
recentEvents: TelemetryEvent[];
|
|
338
|
+
/** Aggregated patterns */
|
|
339
|
+
patterns: Map<string, TelemetryPattern>;
|
|
340
|
+
/** Access to engine registry for cross-referencing */
|
|
341
|
+
getEngineLoadedEntities(): Map<string, string[]>;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Interface for pluggable analyzers
|
|
345
|
+
*/
|
|
346
|
+
export interface TelemetryAnalyzer {
|
|
347
|
+
/** Unique name for this analyzer */
|
|
348
|
+
name: string;
|
|
349
|
+
/** Category for grouping warnings in UI */
|
|
350
|
+
category: string;
|
|
351
|
+
/** Analyze an event and optionally return an insight */
|
|
352
|
+
analyze(event: TelemetryEvent, context: TelemetryAnalyzerContext): TelemetryInsight | null;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Type guard to check if params represent a batch RunViews operation
|
|
356
|
+
*/
|
|
357
|
+
export declare function isBatchRunViewParams(params: TelemetryParamsUnion): params is TelemetryRunViewsBatchParams;
|
|
358
|
+
/**
|
|
359
|
+
* Type guard to check if params represent a single RunView operation
|
|
360
|
+
*/
|
|
361
|
+
export declare function isSingleRunViewParams(params: TelemetryParamsUnion): params is TelemetryRunViewParams;
|
|
362
|
+
/**
|
|
363
|
+
* Type guard to check if params represent a single RunQuery operation
|
|
364
|
+
*/
|
|
365
|
+
export declare function isSingleRunQueryParams(params: TelemetryParamsUnion): params is TelemetryRunQueryParams;
|
|
366
|
+
/**
|
|
367
|
+
* Type guard to check if params represent a batch RunQueries operation
|
|
368
|
+
*/
|
|
369
|
+
export declare function isBatchRunQueryParams(params: TelemetryParamsUnion): params is TelemetryRunQueriesBatchParams;
|
|
370
|
+
/**
|
|
371
|
+
* Type guard to check if params represent an Engine operation
|
|
372
|
+
*/
|
|
373
|
+
export declare function isEngineParams(params: TelemetryParamsUnion): params is TelemetryEngineParams;
|
|
374
|
+
/**
|
|
375
|
+
* Type guard to check if params represent an AI operation
|
|
376
|
+
*/
|
|
377
|
+
export declare function isAIParams(params: TelemetryParamsUnion): params is TelemetryAIParams;
|
|
378
|
+
/**
|
|
379
|
+
* Type guard to check if params represent a Cache operation
|
|
380
|
+
*/
|
|
381
|
+
export declare function isCacheParams(params: TelemetryParamsUnion): params is TelemetryCacheParams;
|
|
382
|
+
/**
|
|
383
|
+
* Type guard to check if params represent a Network operation
|
|
384
|
+
*/
|
|
385
|
+
export declare function isNetworkParams(params: TelemetryParamsUnion): params is TelemetryNetworkParams;
|
|
386
|
+
/**
|
|
387
|
+
* Singleton manager for telemetry tracking and analysis.
|
|
388
|
+
*
|
|
389
|
+
* Provides:
|
|
390
|
+
* - Event recording for various operation types with strongly-typed parameters
|
|
391
|
+
* - Pattern detection for identifying optimization opportunities
|
|
392
|
+
* - Pluggable analyzer system for custom rules
|
|
393
|
+
* - Integration with WarningManager for console output
|
|
394
|
+
*/
|
|
395
|
+
export declare class TelemetryManager extends BaseSingleton<TelemetryManager> {
|
|
396
|
+
private _settings;
|
|
397
|
+
private _events;
|
|
398
|
+
private _patterns;
|
|
399
|
+
private _activeEvents;
|
|
400
|
+
private _analyzers;
|
|
401
|
+
private _insights;
|
|
402
|
+
private _insightDedupeWindow;
|
|
403
|
+
/**
|
|
404
|
+
* Returns the singleton instance of TelemetryManager
|
|
405
|
+
*/
|
|
406
|
+
static get Instance(): TelemetryManager;
|
|
407
|
+
protected constructor();
|
|
408
|
+
/**
|
|
409
|
+
* Get a copy of current settings
|
|
410
|
+
*/
|
|
411
|
+
get Settings(): TelemetrySettings;
|
|
412
|
+
/**
|
|
413
|
+
* Update telemetry settings
|
|
414
|
+
*/
|
|
415
|
+
UpdateSettings(settings: Partial<TelemetrySettings>): void;
|
|
416
|
+
/**
|
|
417
|
+
* Check if telemetry is globally enabled
|
|
418
|
+
*/
|
|
419
|
+
get IsEnabled(): boolean;
|
|
420
|
+
/**
|
|
421
|
+
* Enable or disable telemetry globally
|
|
422
|
+
*/
|
|
423
|
+
SetEnabled(enabled: boolean): void;
|
|
424
|
+
/**
|
|
425
|
+
* Check if a specific category is enabled
|
|
426
|
+
*/
|
|
427
|
+
IsCategoryEnabled(category: TelemetryCategory): boolean;
|
|
428
|
+
/**
|
|
429
|
+
* Get the telemetry level for a specific category
|
|
430
|
+
*/
|
|
431
|
+
GetLevelForCategory(category: TelemetryCategory): TelemetryLevel;
|
|
432
|
+
/**
|
|
433
|
+
* Get the numeric value for a telemetry level
|
|
434
|
+
*/
|
|
435
|
+
GetLevelValue(level: TelemetryLevel): number;
|
|
436
|
+
/**
|
|
437
|
+
* Start tracking a RunView event
|
|
438
|
+
*/
|
|
439
|
+
StartEvent(category: 'RunView', operation: string, params: TelemetryRunViewParams | TelemetryRunViewsBatchParams, userId?: string): string | null;
|
|
440
|
+
/**
|
|
441
|
+
* Start tracking a RunQuery event
|
|
442
|
+
*/
|
|
443
|
+
StartEvent(category: 'RunQuery', operation: string, params: TelemetryRunQueryParams | TelemetryRunQueriesBatchParams, userId?: string): string | null;
|
|
444
|
+
/**
|
|
445
|
+
* Start tracking an Engine event
|
|
446
|
+
*/
|
|
447
|
+
StartEvent(category: 'Engine', operation: string, params: TelemetryEngineParams, userId?: string): string | null;
|
|
448
|
+
/**
|
|
449
|
+
* Start tracking an AI event
|
|
450
|
+
*/
|
|
451
|
+
StartEvent(category: 'AI', operation: string, params: TelemetryAIParams, userId?: string): string | null;
|
|
452
|
+
/**
|
|
453
|
+
* Start tracking a Cache event
|
|
454
|
+
*/
|
|
455
|
+
StartEvent(category: 'Cache', operation: string, params: TelemetryCacheParams, userId?: string): string | null;
|
|
456
|
+
/**
|
|
457
|
+
* Start tracking a Network event
|
|
458
|
+
*/
|
|
459
|
+
StartEvent(category: 'Network', operation: string, params: TelemetryNetworkParams, userId?: string): string | null;
|
|
460
|
+
/**
|
|
461
|
+
* Start tracking a Custom event
|
|
462
|
+
*/
|
|
463
|
+
StartEvent(category: 'Custom', operation: string, params: TelemetryCustomParams, userId?: string): string | null;
|
|
464
|
+
/**
|
|
465
|
+
* Complete an event that was started with StartEvent
|
|
466
|
+
* @param eventId - The event ID returned from StartEvent
|
|
467
|
+
* @param additionalParams - Optional additional parameters to merge into the event's params
|
|
468
|
+
* Useful for adding context like cacheHit, resultCount, etc.
|
|
469
|
+
*/
|
|
470
|
+
EndEvent(eventId: string | null, additionalParams?: Record<string, unknown>): TelemetryEvent | null;
|
|
471
|
+
/**
|
|
472
|
+
* Record a completed RunView event directly
|
|
473
|
+
*/
|
|
474
|
+
RecordEvent(category: 'RunView', operation: string, params: TelemetryRunViewParams | TelemetryRunViewsBatchParams, elapsedMs: number, userId?: string): void;
|
|
475
|
+
/**
|
|
476
|
+
* Record a completed RunQuery event directly
|
|
477
|
+
*/
|
|
478
|
+
RecordEvent(category: 'RunQuery', operation: string, params: TelemetryRunQueryParams | TelemetryRunQueriesBatchParams, elapsedMs: number, userId?: string): void;
|
|
479
|
+
/**
|
|
480
|
+
* Record a completed Engine event directly
|
|
481
|
+
*/
|
|
482
|
+
RecordEvent(category: 'Engine', operation: string, params: TelemetryEngineParams, elapsedMs: number, userId?: string): void;
|
|
483
|
+
/**
|
|
484
|
+
* Record a completed AI event directly
|
|
485
|
+
*/
|
|
486
|
+
RecordEvent(category: 'AI', operation: string, params: TelemetryAIParams, elapsedMs: number, userId?: string): void;
|
|
487
|
+
/**
|
|
488
|
+
* Record a completed Cache event directly
|
|
489
|
+
*/
|
|
490
|
+
RecordEvent(category: 'Cache', operation: string, params: TelemetryCacheParams, elapsedMs: number, userId?: string): void;
|
|
491
|
+
/**
|
|
492
|
+
* Record a completed Network event directly
|
|
493
|
+
*/
|
|
494
|
+
RecordEvent(category: 'Network', operation: string, params: TelemetryNetworkParams, elapsedMs: number, userId?: string): void;
|
|
495
|
+
/**
|
|
496
|
+
* Record a completed Custom event directly
|
|
497
|
+
*/
|
|
498
|
+
RecordEvent(category: 'Custom', operation: string, params: TelemetryCustomParams, elapsedMs: number, userId?: string): void;
|
|
499
|
+
private updatePattern;
|
|
500
|
+
/**
|
|
501
|
+
* Get events matching the filter criteria
|
|
502
|
+
*/
|
|
503
|
+
GetEvents(filter?: {
|
|
504
|
+
category?: TelemetryCategory;
|
|
505
|
+
operation?: string;
|
|
506
|
+
minElapsedMs?: number;
|
|
507
|
+
since?: number;
|
|
508
|
+
limit?: number;
|
|
509
|
+
}): TelemetryEvent[];
|
|
510
|
+
/**
|
|
511
|
+
* Get patterns matching the filter criteria
|
|
512
|
+
*/
|
|
513
|
+
GetPatterns(filter?: {
|
|
514
|
+
category?: TelemetryCategory;
|
|
515
|
+
minCount?: number;
|
|
516
|
+
sortBy?: 'count' | 'totalTime' | 'avgTime';
|
|
517
|
+
}): TelemetryPattern[];
|
|
518
|
+
/**
|
|
519
|
+
* Get patterns with duplicate calls (count >= minCount)
|
|
520
|
+
*/
|
|
521
|
+
GetDuplicates(minCount?: number): TelemetryPattern[];
|
|
522
|
+
/**
|
|
523
|
+
* Get active events that haven't completed yet
|
|
524
|
+
*/
|
|
525
|
+
GetActiveEvents(): TelemetryEvent[];
|
|
526
|
+
private registerBuiltInAnalyzers;
|
|
527
|
+
/**
|
|
528
|
+
* Register a custom analyzer
|
|
529
|
+
*/
|
|
530
|
+
RegisterAnalyzer(analyzer: TelemetryAnalyzer): void;
|
|
531
|
+
/**
|
|
532
|
+
* Unregister an analyzer by name
|
|
533
|
+
*/
|
|
534
|
+
UnregisterAnalyzer(name: string): void;
|
|
535
|
+
/**
|
|
536
|
+
* Get all registered analyzers
|
|
537
|
+
*/
|
|
538
|
+
GetAnalyzers(): TelemetryAnalyzer[];
|
|
539
|
+
/**
|
|
540
|
+
* Get insights matching the filter criteria
|
|
541
|
+
*/
|
|
542
|
+
GetInsights(filter?: {
|
|
543
|
+
severity?: TelemetryInsightSeverity;
|
|
544
|
+
category?: string;
|
|
545
|
+
entityName?: string;
|
|
546
|
+
limit?: number;
|
|
547
|
+
}): TelemetryInsight[];
|
|
548
|
+
private runAnalyzers;
|
|
549
|
+
private buildAnalyzerContext;
|
|
550
|
+
private shouldEmitInsight;
|
|
551
|
+
private emitInsightWarning;
|
|
552
|
+
/**
|
|
553
|
+
* Record a telemetry insight to the warning manager for debounced output
|
|
554
|
+
*/
|
|
555
|
+
private recordTelemetryInsightToWarningManager;
|
|
556
|
+
private generateId;
|
|
557
|
+
/**
|
|
558
|
+
* Generate a fingerprint for duplicate detection using type guards
|
|
559
|
+
*/
|
|
560
|
+
private generateFingerprint;
|
|
561
|
+
/**
|
|
562
|
+
* Generate fingerprint for RunView operations
|
|
563
|
+
*/
|
|
564
|
+
private generateRunViewFingerprint;
|
|
565
|
+
/**
|
|
566
|
+
* Generate fingerprint for RunQuery operations
|
|
567
|
+
*/
|
|
568
|
+
private generateRunQueryFingerprint;
|
|
569
|
+
/**
|
|
570
|
+
* Generate fingerprint for Engine operations
|
|
571
|
+
*/
|
|
572
|
+
private generateEngineFingerprint;
|
|
573
|
+
/**
|
|
574
|
+
* Generate fingerprint for AI operations
|
|
575
|
+
*/
|
|
576
|
+
private generateAIFingerprint;
|
|
577
|
+
/**
|
|
578
|
+
* Generate fingerprint for Cache operations
|
|
579
|
+
*/
|
|
580
|
+
private generateCacheFingerprint;
|
|
581
|
+
/**
|
|
582
|
+
* Generate fingerprint for Network operations
|
|
583
|
+
*/
|
|
584
|
+
private generateNetworkFingerprint;
|
|
585
|
+
/**
|
|
586
|
+
* Simple hash function for creating short fingerprints from long strings.
|
|
587
|
+
* Not cryptographic, just for deduplication purposes.
|
|
588
|
+
*/
|
|
589
|
+
private simpleHash;
|
|
590
|
+
private captureStackTrace;
|
|
591
|
+
private cleanStackTrace;
|
|
592
|
+
private extractCallerLocation;
|
|
593
|
+
private captureMemory;
|
|
594
|
+
private getTimestamp;
|
|
595
|
+
private trimIfNeeded;
|
|
596
|
+
private loadSettings;
|
|
597
|
+
private saveSettings;
|
|
598
|
+
/**
|
|
599
|
+
* Clear all recorded events and patterns
|
|
600
|
+
*/
|
|
601
|
+
Clear(): void;
|
|
602
|
+
/**
|
|
603
|
+
* Clear only patterns (keeps events)
|
|
604
|
+
*/
|
|
605
|
+
ClearPatterns(): void;
|
|
606
|
+
/**
|
|
607
|
+
* Clear insights
|
|
608
|
+
*/
|
|
609
|
+
ClearInsights(): void;
|
|
610
|
+
/**
|
|
611
|
+
* Reset everything including settings
|
|
612
|
+
*/
|
|
613
|
+
Reset(): void;
|
|
614
|
+
/**
|
|
615
|
+
* Get summary statistics
|
|
616
|
+
*/
|
|
617
|
+
GetStats(): {
|
|
618
|
+
totalEvents: number;
|
|
619
|
+
totalPatterns: number;
|
|
620
|
+
totalInsights: number;
|
|
621
|
+
activeEvents: number;
|
|
622
|
+
byCategory: Record<TelemetryCategory, {
|
|
623
|
+
events: number;
|
|
624
|
+
avgMs: number;
|
|
625
|
+
}>;
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
//# sourceMappingURL=telemetryManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryManager.d.ts","sourceRoot":"","sources":["../../src/generic/telemetryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,aAAa,EAAwC,MAAM,wBAAwB,CAAC;AAM7F;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAM9D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACvB,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,IAAI,GACJ,OAAO,GACP,QAAQ,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;AAM3E;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,eAAe,GAAG,YAAY,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IACzC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC3C,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9G;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,GAAG,UAAU,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,sCAAsC;IACtC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,sCAAsC;IACtC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC1B,sBAAsB,GACtB,4BAA4B,GAC5B,uBAAuB,GACvB,8BAA8B,GAC9B,qBAAqB,GACrB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,sBAAsB,GAAG,4BAA4B,CAAC;IAC/D,QAAQ,EAAE,uBAAuB,GAAG,8BAA8B,CAAC;IACnE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,OAAO,EAAE,sBAAsB,CAAC;IAChC,MAAM,EAAE,qBAAqB,CAAC;CACjC;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,KAAK,EAAE,cAAc,CAAC;IACtB,6BAA6B;IAC7B,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE;QACjD,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,cAAc,CAAC;KAC1B,CAAC,CAAC,CAAC;IACJ,+CAA+C;IAC/C,QAAQ,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mCAAmC;IACnC,kBAAkB,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,wBAAwB;IACxB,SAAS,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;KAC1B,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB;IACjF,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,WAAW,CAAC,EAAE,cAAc,CAAC;IAG7B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,oBAAoB,CAAC;IAGnC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,wBAAwB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,4CAA4C;IAC5C,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,0BAA0B;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,sDAAsD;IACtD,uBAAuB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,IAAI,CAAC;CAC9F;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,4BAA4B,CAKzG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,sBAAsB,CAKpG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,uBAAuB,CAKtG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,8BAA8B,CAK5G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,qBAAqB,CAK5F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,iBAAiB,CAIpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,oBAAoB,CAK1F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,IAAI,sBAAsB,CAI9F;AA2ND;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACjE,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,aAAa,CAA0C;IAG/D,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,oBAAoB,CAAkC;IAE9D;;OAEG;IACH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED,SAAS;IAQT;;OAEG;IACH,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IAED;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAKjE;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAM9D;;OAEG;IACI,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,cAAc;IAKvE;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAMnD;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,GAAG,4BAA4B,EAC7D,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAAG,8BAA8B,EAChE,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,IAAI,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,EAC5B,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAEhB;;OAEG;IACI,UAAU,CACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI;IAiChB;;;;;OAKG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG,IAAI;IA6B1G;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,GAAG,4BAA4B,EAC7D,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAAG,8BAA8B,EAChE,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,IAAI,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,EAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAEP;;OAEG;IACI,WAAW,CACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI;IAuCP,OAAO,CAAC,aAAa;IAuDrB;;OAEG;IACI,SAAS,CAAC,MAAM,CAAC,EAAE;QACtB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,cAAc,EAAE;IAsBpB;;OAEG;IACI,WAAW,CAAC,MAAM,CAAC,EAAE;QACxB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;KAC9C,GAAG,gBAAgB,EAAE;IAsBtB;;OAEG;IACI,aAAa,CAAC,QAAQ,GAAE,MAAU,GAAG,gBAAgB,EAAE;IAI9D;;OAEG;IACI,eAAe,IAAI,cAAc,EAAE;IAM1C,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;IACI,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI1D;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACI,YAAY,IAAI,iBAAiB,EAAE;IAI1C;;OAEG;IACI,WAAW,CAAC,MAAM,CAAC,EAAE;QACxB,QAAQ,CAAC,EAAE,wBAAwB,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,gBAAgB,EAAE;IAmBtB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,sCAAsC;IAoB9C,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA2BlC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;;OAGG;IACH,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACI,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACI,aAAa,IAAI,IAAI;IAK5B;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,QAAQ,IAAI;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E;CAiCJ"}
|