traceperf 0.2.0 → 1.3.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/README.md +612 -209
- package/dist/__tests__/helpers/console.d.ts +9 -0
- package/dist/__tests__/helpers/console.js +25 -0
- package/dist/__tests__/helpers/console.js.map +1 -0
- package/dist/auto.d.ts +30 -0
- package/dist/auto.js +91 -0
- package/dist/auto.js.map +1 -0
- package/dist/browser.d.ts +52 -144
- package/dist/browser.js +112 -439
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +68 -0
- package/dist/cli.js +528 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/allocations.d.ts +38 -0
- package/dist/core/allocations.js +85 -0
- package/dist/core/allocations.js.map +1 -0
- package/dist/core/cpu-profile.d.ts +84 -0
- package/dist/core/cpu-profile.js +181 -0
- package/dist/core/cpu-profile.js.map +1 -0
- package/dist/core/env.d.ts +10 -0
- package/dist/core/env.js +40 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/event-loop.d.ts +30 -0
- package/dist/core/event-loop.js +43 -0
- package/dist/core/event-loop.js.map +1 -0
- package/dist/core/explain.d.ts +48 -0
- package/dist/core/explain.js +236 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/exporters.d.ts +111 -0
- package/dist/core/exporters.js +236 -0
- package/dist/core/exporters.js.map +1 -0
- package/dist/core/index.d.ts +9 -3
- package/dist/core/index.js +9 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/core/optimized-performance-monitor.js +687 -175
- package/dist/core/optimized-performance-monitor.js.map +1 -1
- package/dist/core/prometheus.d.ts +36 -0
- package/dist/core/prometheus.js +93 -0
- package/dist/core/prometheus.js.map +1 -0
- package/dist/core/records.d.ts +97 -0
- package/dist/core/records.js +87 -0
- package/dist/core/records.js.map +1 -0
- package/dist/core/stats.d.ts +45 -0
- package/dist/core/stats.js +136 -0
- package/dist/core/stats.js.map +1 -0
- package/dist/core/timeline.d.ts +28 -0
- package/dist/core/timeline.js +65 -0
- package/dist/core/timeline.js.map +1 -0
- package/dist/drivers.d.ts +51 -0
- package/dist/drivers.js +205 -0
- package/dist/drivers.js.map +1 -0
- package/dist/esm/auto.d.ts +30 -0
- package/dist/esm/auto.js +87 -0
- package/dist/esm/auto.js.map +1 -0
- package/dist/esm/browser.d.ts +52 -144
- package/dist/esm/browser.js +101 -445
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/cli.d.ts +68 -0
- package/dist/esm/cli.js +520 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/core/allocations.d.ts +38 -0
- package/dist/esm/core/allocations.js +82 -0
- package/dist/esm/core/allocations.js.map +1 -0
- package/dist/esm/core/cpu-profile.d.ts +84 -0
- package/dist/esm/core/cpu-profile.js +176 -0
- package/dist/esm/core/cpu-profile.js.map +1 -0
- package/dist/esm/core/env.d.ts +10 -0
- package/dist/esm/core/env.js +35 -0
- package/dist/esm/core/env.js.map +1 -0
- package/dist/esm/core/event-loop.d.ts +30 -0
- package/dist/esm/core/event-loop.js +40 -0
- package/dist/esm/core/event-loop.js.map +1 -0
- package/dist/esm/core/explain.d.ts +48 -0
- package/dist/esm/core/explain.js +232 -0
- package/dist/esm/core/explain.js.map +1 -0
- package/dist/esm/core/exporters.d.ts +111 -0
- package/dist/esm/core/exporters.js +229 -0
- package/dist/esm/core/exporters.js.map +1 -0
- package/dist/esm/core/index.d.ts +10 -4
- package/dist/esm/core/index.js +10 -4
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/esm/core/optimized-performance-monitor.js +685 -173
- package/dist/esm/core/optimized-performance-monitor.js.map +1 -1
- package/dist/esm/core/prometheus.d.ts +36 -0
- package/dist/esm/core/prometheus.js +89 -0
- package/dist/esm/core/prometheus.js.map +1 -0
- package/dist/esm/core/records.d.ts +97 -0
- package/dist/esm/core/records.js +82 -0
- package/dist/esm/core/records.js.map +1 -0
- package/dist/esm/core/stats.d.ts +45 -0
- package/dist/esm/core/stats.js +131 -0
- package/dist/esm/core/stats.js.map +1 -0
- package/dist/esm/core/timeline.d.ts +28 -0
- package/dist/esm/core/timeline.js +62 -0
- package/dist/esm/core/timeline.js.map +1 -0
- package/dist/esm/drivers.d.ts +51 -0
- package/dist/esm/drivers.js +197 -0
- package/dist/esm/drivers.js.map +1 -0
- package/dist/esm/index.d.ts +13 -5
- package/dist/esm/index.js +21 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrument.d.ts +88 -0
- package/dist/esm/instrument.js +274 -0
- package/dist/esm/instrument.js.map +1 -0
- package/dist/esm/integrations.d.ts +70 -0
- package/dist/esm/integrations.js +197 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/node-builtins.d.ts +1 -0
- package/dist/esm/node-builtins.js +32 -0
- package/dist/esm/node-builtins.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/register.d.ts +20 -0
- package/dist/esm/register.js +98 -0
- package/dist/esm/register.js.map +1 -0
- package/dist/esm/report-html.d.ts +11 -0
- package/dist/esm/report-html.js +106 -0
- package/dist/esm/report-html.js.map +1 -0
- package/dist/esm/types/index.d.ts +4 -80
- package/dist/esm/types/index.js +1 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/options.d.ts +72 -0
- package/dist/esm/types/options.js +2 -0
- package/dist/esm/types/options.js.map +1 -0
- package/dist/esm/watch.d.ts +17 -0
- package/dist/esm/watch.js +87 -0
- package/dist/esm/watch.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +26 -29
- package/dist/index.js.map +1 -1
- package/dist/instrument.d.ts +88 -0
- package/dist/instrument.js +282 -0
- package/dist/instrument.js.map +1 -0
- package/dist/integrations.d.ts +70 -0
- package/dist/integrations.js +205 -0
- package/dist/integrations.js.map +1 -0
- package/dist/node-builtins.d.ts +1 -0
- package/dist/node-builtins.js +67 -0
- package/dist/node-builtins.js.map +1 -0
- package/dist/register.d.ts +20 -0
- package/dist/register.js +103 -0
- package/dist/register.js.map +1 -0
- package/dist/report-html.d.ts +11 -0
- package/dist/report-html.js +109 -0
- package/dist/report-html.js.map +1 -0
- package/dist/traceperf.browser.js +1910 -0
- package/dist/traceperf.browser.min.js +6 -0
- package/dist/types/index.d.ts +4 -80
- package/dist/types/index.js +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/options.d.ts +72 -0
- package/dist/types/{config.js → options.js} +1 -1
- package/dist/types/options.js.map +1 -0
- package/dist/watch.d.ts +17 -0
- package/dist/watch.js +90 -0
- package/dist/watch.js.map +1 -0
- package/package.json +99 -19
- package/dist/core/config.d.ts +0 -77
- package/dist/core/config.js +0 -116
- package/dist/core/config.js.map +0 -1
- package/dist/core/constants.d.ts +0 -78
- package/dist/core/constants.js +0 -109
- package/dist/core/constants.js.map +0 -1
- package/dist/core/logger.d.ts +0 -97
- package/dist/core/logger.js +0 -186
- package/dist/core/logger.js.map +0 -1
- package/dist/esm/core/config.d.ts +0 -77
- package/dist/esm/core/config.js +0 -112
- package/dist/esm/core/config.js.map +0 -1
- package/dist/esm/core/constants.d.ts +0 -78
- package/dist/esm/core/constants.js +0 -106
- package/dist/esm/core/constants.js.map +0 -1
- package/dist/esm/core/logger.d.ts +0 -97
- package/dist/esm/core/logger.js +0 -182
- package/dist/esm/core/logger.js.map +0 -1
- package/dist/esm/formatters/ascii.d.ts +0 -52
- package/dist/esm/formatters/ascii.js +0 -100
- package/dist/esm/formatters/ascii.js.map +0 -1
- package/dist/esm/formatters/cli.d.ts +0 -50
- package/dist/esm/formatters/cli.js +0 -96
- package/dist/esm/formatters/cli.js.map +0 -1
- package/dist/esm/formatters/index.d.ts +0 -3
- package/dist/esm/formatters/index.js +0 -4
- package/dist/esm/formatters/index.js.map +0 -1
- package/dist/esm/formatters/json.d.ts +0 -45
- package/dist/esm/formatters/json.js +0 -85
- package/dist/esm/formatters/json.js.map +0 -1
- package/dist/esm/trackers/execution.d.ts +0 -101
- package/dist/esm/trackers/execution.js +0 -226
- package/dist/esm/trackers/execution.js.map +0 -1
- package/dist/esm/trackers/index.d.ts +0 -2
- package/dist/esm/trackers/index.js +0 -3
- package/dist/esm/trackers/index.js.map +0 -1
- package/dist/esm/trackers/performance.d.ts +0 -68
- package/dist/esm/trackers/performance.js +0 -112
- package/dist/esm/trackers/performance.js.map +0 -1
- package/dist/esm/types/config.d.ts +0 -142
- package/dist/esm/types/config.js +0 -2
- package/dist/esm/types/config.js.map +0 -1
- package/dist/esm/types/logger.d.ts +0 -147
- package/dist/esm/types/logger.js +0 -2
- package/dist/esm/types/logger.js.map +0 -1
- package/dist/esm/utils/colors.d.ts +0 -87
- package/dist/esm/utils/colors.js +0 -146
- package/dist/esm/utils/colors.js.map +0 -1
- package/dist/esm/utils/index.d.ts +0 -3
- package/dist/esm/utils/index.js +0 -4
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/proxy-tracker.d.ts +0 -68
- package/dist/esm/utils/proxy-tracker.js +0 -127
- package/dist/esm/utils/proxy-tracker.js.map +0 -1
- package/dist/esm/utils/stack.d.ts +0 -63
- package/dist/esm/utils/stack.js +0 -110
- package/dist/esm/utils/stack.js.map +0 -1
- package/dist/esm/utils/string.d.ts +0 -29
- package/dist/esm/utils/string.js +0 -45
- package/dist/esm/utils/string.js.map +0 -1
- package/dist/esm/utils/timing.d.ts +0 -65
- package/dist/esm/utils/timing.js +0 -99
- package/dist/esm/utils/timing.js.map +0 -1
- package/dist/formatters/ascii.d.ts +0 -52
- package/dist/formatters/ascii.js +0 -104
- package/dist/formatters/ascii.js.map +0 -1
- package/dist/formatters/cli.d.ts +0 -50
- package/dist/formatters/cli.js +0 -100
- package/dist/formatters/cli.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -3
- package/dist/formatters/index.js +0 -20
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/json.d.ts +0 -45
- package/dist/formatters/json.js +0 -89
- package/dist/formatters/json.js.map +0 -1
- package/dist/trackers/execution.d.ts +0 -101
- package/dist/trackers/execution.js +0 -230
- package/dist/trackers/execution.js.map +0 -1
- package/dist/trackers/index.d.ts +0 -2
- package/dist/trackers/index.js +0 -19
- package/dist/trackers/index.js.map +0 -1
- package/dist/trackers/performance.d.ts +0 -68
- package/dist/trackers/performance.js +0 -116
- package/dist/trackers/performance.js.map +0 -1
- package/dist/types/config.d.ts +0 -142
- package/dist/types/config.js.map +0 -1
- package/dist/types/logger.d.ts +0 -147
- package/dist/types/logger.js +0 -3
- package/dist/types/logger.js.map +0 -1
- package/dist/types.d.ts +0 -65
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/colors.d.ts +0 -87
- package/dist/utils/colors.js +0 -160
- package/dist/utils/colors.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/proxy-tracker.d.ts +0 -68
- package/dist/utils/proxy-tracker.js +0 -131
- package/dist/utils/proxy-tracker.js.map +0 -1
- package/dist/utils/stack.d.ts +0 -63
- package/dist/utils/stack.js +0 -116
- package/dist/utils/stack.js.map +0 -1
- package/dist/utils/string.d.ts +0 -29
- package/dist/utils/string.js +0 -50
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/timing.d.ts +0 -65
- package/dist/utils/timing.js +0 -106
- package/dist/utils/timing.js.map +0 -1
package/dist/esm/browser.js
CHANGED
|
@@ -4,397 +4,71 @@
|
|
|
4
4
|
* This file provides a browser-compatible version of TracePerf that can be used
|
|
5
5
|
* in React, Next.js, or other frontend applications.
|
|
6
6
|
*/
|
|
7
|
+
import { OptimizedPerformanceMonitor, TrackingModes } from './core/optimized-performance-monitor.js';
|
|
7
8
|
// Define tracking mode constants to avoid circular dependencies
|
|
8
|
-
export const TrackingMode =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
DEBUG: 'debug'
|
|
9
|
+
export const TrackingMode = TrackingModes;
|
|
10
|
+
const preserveSignature = (wrapper, fn) => {
|
|
11
|
+
Object.defineProperty(wrapper, 'name', { value: fn.name, configurable: true });
|
|
12
|
+
Object.defineProperty(wrapper, 'length', { value: fn.length, configurable: true });
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* Browser-compatible
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const id = `${label}-${Math.random().toString(36).substring(2, 9)}`;
|
|
25
|
-
this._timers.set(id, performance.now());
|
|
26
|
-
return id;
|
|
27
|
-
}
|
|
28
|
-
endTimer(id) {
|
|
29
|
-
const startTime = this._timers.get(id);
|
|
30
|
-
if (!startTime) {
|
|
31
|
-
throw new Error(`Timer with id ${id} not found`);
|
|
32
|
-
}
|
|
33
|
-
const duration = performance.now() - startTime;
|
|
34
|
-
this._timers.delete(id);
|
|
35
|
-
return duration;
|
|
36
|
-
}
|
|
37
|
-
isBottleneck(duration, threshold) {
|
|
38
|
-
const effectiveThreshold = threshold !== null && threshold !== void 0 ? threshold : this._defaultThreshold;
|
|
39
|
-
return duration > effectiveThreshold;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Get memory usage from browser performance API
|
|
43
|
-
* @returns Memory usage object with heap metrics or undefined if not available
|
|
44
|
-
*/
|
|
45
|
-
getMemoryUsage() {
|
|
46
|
-
try {
|
|
47
|
-
// Chrome-specific memory API
|
|
48
|
-
if (performance && 'memory' in performance) {
|
|
49
|
-
const memory = performance.memory;
|
|
50
|
-
return {
|
|
51
|
-
heapUsed: (memory === null || memory === void 0 ? void 0 : memory.usedJSHeapSize) || 0,
|
|
52
|
-
heapTotal: (memory === null || memory === void 0 ? void 0 : memory.totalJSHeapSize) || 0,
|
|
53
|
-
external: 0, // Not available in browser
|
|
54
|
-
rss: 0, // Not available in browser
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// Firefox has a different memory API
|
|
58
|
-
if (window && window.performance && window.performance.memory) {
|
|
59
|
-
const memory = window.performance.memory;
|
|
60
|
-
return {
|
|
61
|
-
heapUsed: memory.usedJSHeapSize || 0,
|
|
62
|
-
heapTotal: memory.totalJSHeapSize || 0,
|
|
63
|
-
external: 0,
|
|
64
|
-
rss: 0,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
console.warn('Memory API not available or permission denied:', e);
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Calculate memory difference
|
|
76
|
-
* @param start - Starting memory usage
|
|
77
|
-
* @returns Memory difference in bytes
|
|
78
|
-
*/
|
|
79
|
-
getMemoryDiff(start) {
|
|
80
|
-
try {
|
|
81
|
-
const current = this.getMemoryUsage();
|
|
82
|
-
if (!current)
|
|
83
|
-
return 0;
|
|
84
|
-
const diff = current.heapUsed - start.heapUsed;
|
|
85
|
-
// Return zero instead of negative values
|
|
86
|
-
return Math.max(0, diff);
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
console.warn('Error calculating memory difference:', e);
|
|
90
|
-
return 0;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
now() {
|
|
94
|
-
return performance.now();
|
|
95
|
-
}
|
|
96
|
-
generateSuggestion(functionName, duration, memoryUsage) {
|
|
97
|
-
if (duration > 1000) {
|
|
98
|
-
return `🛠 Potential Fix: Consider optimizing or adding caching to ${functionName}`;
|
|
99
|
-
}
|
|
100
|
-
if (duration > 500) {
|
|
101
|
-
return `🛠 Potential Fix: Look for blocking operations in ${functionName}`;
|
|
102
|
-
}
|
|
103
|
-
return `🛠 Potential Fix: Review ${functionName} for performance optimizations`;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Browser-compatible execution tracker for tracking function calls and generating flow charts
|
|
15
|
+
* Browser-compatible TracePerf instance.
|
|
16
|
+
*
|
|
17
|
+
* Shares the core tracker with the Node.js entry (same nesting, statistics,
|
|
18
|
+
* hooks, exporters and options) and adds console-style logging methods.
|
|
19
|
+
* Output uses the browser format:
|
|
20
|
+
*
|
|
21
|
+
* Execution Flow:
|
|
22
|
+
* → parent (12.34ms)
|
|
23
|
+
* → child (10.01ms)
|
|
108
24
|
*/
|
|
109
|
-
class
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
* @param duration - Execution duration in ms
|
|
133
|
-
* @returns Optimization suggestion
|
|
134
|
-
*/
|
|
135
|
-
generateSuggestion(name, duration) {
|
|
136
|
-
if (duration > 500) {
|
|
137
|
-
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing or breaking it down into smaller functions.`;
|
|
138
|
-
}
|
|
139
|
-
else if (duration > 200) {
|
|
140
|
-
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing if called frequently.`;
|
|
141
|
-
}
|
|
142
|
-
else if (duration > 100) {
|
|
143
|
-
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Monitor if called in critical paths.`;
|
|
25
|
+
class BrowserLogger extends OptimizedPerformanceMonitor {
|
|
26
|
+
constructor(config = {}) {
|
|
27
|
+
super({
|
|
28
|
+
trackingMode: config.trackingMode,
|
|
29
|
+
silent: config.silent,
|
|
30
|
+
trackMemory: config.trackMemory,
|
|
31
|
+
enableNestedTracking: config.enableNestedTracking,
|
|
32
|
+
threshold: config.threshold,
|
|
33
|
+
sampleRate: config.sampleRate,
|
|
34
|
+
enabled: config.enabled,
|
|
35
|
+
blockingThreshold: config.blockingThreshold,
|
|
36
|
+
stats: config.stats,
|
|
37
|
+
plugins: config.plugins,
|
|
38
|
+
onComplete: config.onComplete,
|
|
39
|
+
reporter: config.reporter,
|
|
40
|
+
asyncLocalStorage: config.asyncLocalStorage
|
|
41
|
+
});
|
|
42
|
+
this._mode = 'dev';
|
|
43
|
+
this._indentLevel = 0;
|
|
44
|
+
this._mode = config.mode || 'dev';
|
|
45
|
+
this._slowThreshold = config.performanceThreshold || 100;
|
|
46
|
+
if (!config.reporter) {
|
|
47
|
+
this.setConfig({ reporter: root => console.log(this.formatFlow(root)) });
|
|
144
48
|
}
|
|
145
|
-
return '';
|
|
146
49
|
}
|
|
147
50
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* @param fn - The function to track
|
|
151
|
-
* @param options - Options for tracking
|
|
152
|
-
* @returns The return value of the tracked function
|
|
51
|
+
* Render an execution tree in the browser output format
|
|
153
52
|
*/
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
53
|
+
formatFlow(root) {
|
|
54
|
+
const lines = ['Execution Flow:'];
|
|
55
|
+
const visit = (record, level) => {
|
|
56
|
+
const indent = ' '.repeat(level);
|
|
57
|
+
const slowThreshold = record.threshold > 0 ? record.threshold : this._slowThreshold;
|
|
58
|
+
const isSlow = record.duration > slowThreshold;
|
|
59
|
+
const memory = record.memoryDelta !== undefined && record.memoryDelta > 0
|
|
60
|
+
? ` [${formatMemorySize(record.memoryDelta)}]` : '';
|
|
61
|
+
lines.push(`${indent}→ ${record.label} (${record.duration.toFixed(2)}ms)${isSlow ? ' [SLOW]' : ''}${memory}`);
|
|
62
|
+
const suggestion = isSlow ? slowSuggestion(record.label, record.duration) : '';
|
|
63
|
+
if (suggestion) {
|
|
64
|
+
lines.push(`${indent} ⚠️ ${suggestion}`);
|
|
165
65
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
// Add to call stack
|
|
171
|
-
this._callStack.push(fnName);
|
|
172
|
-
// Create execution record
|
|
173
|
-
const execution = {
|
|
174
|
-
name: fnName,
|
|
175
|
-
duration: 0,
|
|
176
|
-
isSlow: false,
|
|
177
|
-
level: this._callStack.length - 1,
|
|
178
|
-
startTime: performance.now(),
|
|
179
|
-
children: [],
|
|
66
|
+
record.children
|
|
67
|
+
.filter(child => child.duration >= child.threshold)
|
|
68
|
+
.forEach(child => visit(child, level + 1));
|
|
180
69
|
};
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
execution.parent = this._currentExecution;
|
|
184
|
-
this._currentExecution.children.push(execution);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
// This is a root execution
|
|
188
|
-
this._executions.push(execution);
|
|
189
|
-
}
|
|
190
|
-
// Save the previous current execution
|
|
191
|
-
const previousExecution = this._currentExecution;
|
|
192
|
-
// Set this as the current execution
|
|
193
|
-
this._currentExecution = execution;
|
|
194
|
-
let result;
|
|
195
|
-
try {
|
|
196
|
-
// Execute the function
|
|
197
|
-
result = fn();
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
// End timing
|
|
201
|
-
const endTime = performance.now();
|
|
202
|
-
execution.endTime = endTime;
|
|
203
|
-
execution.duration = endTime - execution.startTime;
|
|
204
|
-
execution.isSlow = execution.duration > threshold;
|
|
205
|
-
// Calculate memory usage
|
|
206
|
-
if (trackMemory && startMemory !== undefined) {
|
|
207
|
-
try {
|
|
208
|
-
const memoryDiff = this._performanceMonitor.getMemoryDiff(startMemory);
|
|
209
|
-
execution.memoryUsage = memoryDiff;
|
|
210
|
-
}
|
|
211
|
-
catch (e) {
|
|
212
|
-
console.warn('Error calculating memory usage:', e);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Restore the previous current execution
|
|
216
|
-
this._currentExecution = previousExecution;
|
|
217
|
-
// Remove from call stack
|
|
218
|
-
this._callStack.pop();
|
|
219
|
-
// Re-throw the error
|
|
220
|
-
throw error;
|
|
221
|
-
}
|
|
222
|
-
// End timing
|
|
223
|
-
const endTime = performance.now();
|
|
224
|
-
execution.endTime = endTime;
|
|
225
|
-
execution.duration = endTime - execution.startTime;
|
|
226
|
-
execution.isSlow = execution.duration > threshold;
|
|
227
|
-
// Calculate memory usage
|
|
228
|
-
if (trackMemory && startMemory !== undefined) {
|
|
229
|
-
try {
|
|
230
|
-
const memoryDiff = this._performanceMonitor.getMemoryDiff(startMemory);
|
|
231
|
-
execution.memoryUsage = memoryDiff;
|
|
232
|
-
}
|
|
233
|
-
catch (e) {
|
|
234
|
-
console.warn('Error calculating memory usage:', e);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
// Generate suggestion if slow
|
|
238
|
-
if (execution.isSlow) {
|
|
239
|
-
execution.suggestion = this.generateSuggestion(fnName, execution.duration);
|
|
240
|
-
}
|
|
241
|
-
// Restore the previous current execution
|
|
242
|
-
this._currentExecution = previousExecution;
|
|
243
|
-
// Remove from call stack
|
|
244
|
-
this._callStack.pop();
|
|
245
|
-
return result;
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Create a trackable version of a function
|
|
249
|
-
*
|
|
250
|
-
* This is a helper method to create a tracked version of a function
|
|
251
|
-
* that can be used for nested function tracking.
|
|
252
|
-
*
|
|
253
|
-
* @param fn - The function to make trackable
|
|
254
|
-
* @param options - Options for tracking
|
|
255
|
-
* @returns A tracked version of the function
|
|
256
|
-
*/
|
|
257
|
-
createTrackable(fn, options) {
|
|
258
|
-
var _a, _b, _c;
|
|
259
|
-
const label = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
|
|
260
|
-
const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : 100; // Use a sensible default of 100ms
|
|
261
|
-
const enableNestedTracking = (_b = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
|
|
262
|
-
const trackMemory = (_c = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _c !== void 0 ? _c : true;
|
|
263
|
-
const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || TrackingMode.BALANCED;
|
|
264
|
-
// Create a tracked version of the function using arrow function
|
|
265
|
-
const self = this;
|
|
266
|
-
return function (...args) {
|
|
267
|
-
return self.track(() => fn.apply(this, args), {
|
|
268
|
-
...options,
|
|
269
|
-
label,
|
|
270
|
-
threshold,
|
|
271
|
-
enableNestedTracking,
|
|
272
|
-
trackMemory,
|
|
273
|
-
trackingMode
|
|
274
|
-
});
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Get the current call stack
|
|
279
|
-
*
|
|
280
|
-
* @returns The current call stack
|
|
281
|
-
*/
|
|
282
|
-
getCallStack() {
|
|
283
|
-
return [...this._callStack];
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Generate a visual representation of the execution flow
|
|
287
|
-
*
|
|
288
|
-
* @returns ASCII flow chart of the execution
|
|
289
|
-
*/
|
|
290
|
-
generateFlowChart() {
|
|
291
|
-
let result = 'Execution Flow:\n';
|
|
292
|
-
// Process each execution
|
|
293
|
-
this.prepareExecutionData(this._executions).forEach(execution => {
|
|
294
|
-
const indent = ' '.repeat(execution.level);
|
|
295
|
-
const durationStr = execution.duration.toFixed(2);
|
|
296
|
-
const slowMarker = execution.isSlow ? ' [SLOW]' : '';
|
|
297
|
-
let memoryStr = '';
|
|
298
|
-
if (execution.memoryUsage !== undefined && execution.memoryUsage > 0) {
|
|
299
|
-
memoryStr = ` [${this.formatMemorySize(execution.memoryUsage)}]`;
|
|
300
|
-
}
|
|
301
|
-
result += `${indent}→ ${execution.name} (${durationStr}ms)${slowMarker}${memoryStr}\n`;
|
|
302
|
-
// Add suggestion if available
|
|
303
|
-
if (execution.suggestion) {
|
|
304
|
-
result += `${indent} ⚠️ ${execution.suggestion}\n`;
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
return result;
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Prepare execution data for the flow chart
|
|
311
|
-
*
|
|
312
|
-
* @param executions - The execution records to prepare
|
|
313
|
-
* @returns A list of execution data
|
|
314
|
-
*/
|
|
315
|
-
prepareExecutionData(executions) {
|
|
316
|
-
const result = [];
|
|
317
|
-
// Process each root execution
|
|
318
|
-
executions.forEach(execution => {
|
|
319
|
-
// Add the root execution
|
|
320
|
-
result.push({
|
|
321
|
-
name: execution.name,
|
|
322
|
-
duration: execution.duration,
|
|
323
|
-
isSlow: execution.isSlow,
|
|
324
|
-
suggestion: execution.suggestion,
|
|
325
|
-
level: execution.level,
|
|
326
|
-
memoryUsage: execution.memoryUsage
|
|
327
|
-
});
|
|
328
|
-
// Add children recursively
|
|
329
|
-
this.addChildrenToResult(execution.children, result);
|
|
330
|
-
});
|
|
331
|
-
return result;
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Add children to the result list
|
|
335
|
-
*
|
|
336
|
-
* @param children - The children to add
|
|
337
|
-
* @param result - The result list
|
|
338
|
-
*/
|
|
339
|
-
addChildrenToResult(children, result) {
|
|
340
|
-
children.forEach(child => {
|
|
341
|
-
// Add the child
|
|
342
|
-
result.push({
|
|
343
|
-
name: child.name,
|
|
344
|
-
duration: child.duration,
|
|
345
|
-
isSlow: child.isSlow,
|
|
346
|
-
suggestion: child.suggestion,
|
|
347
|
-
level: child.level,
|
|
348
|
-
memoryUsage: child.memoryUsage
|
|
349
|
-
});
|
|
350
|
-
// Add grandchildren recursively
|
|
351
|
-
this.addChildrenToResult(child.children, result);
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Format memory size for display
|
|
356
|
-
* @param bytes Memory usage in bytes
|
|
357
|
-
* @returns Formatted string
|
|
358
|
-
*/
|
|
359
|
-
formatMemorySize(bytes) {
|
|
360
|
-
if (bytes < 1024) {
|
|
361
|
-
return `${bytes.toFixed(2)}B`;
|
|
362
|
-
}
|
|
363
|
-
else if (bytes < 1024 * 1024) {
|
|
364
|
-
return `${(bytes / 1024).toFixed(2)}KB`;
|
|
365
|
-
}
|
|
366
|
-
else if (bytes < 1024 * 1024 * 1024) {
|
|
367
|
-
return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Clear all execution records
|
|
375
|
-
*/
|
|
376
|
-
clear() {
|
|
377
|
-
this._executions = [];
|
|
378
|
-
this._currentExecution = null;
|
|
379
|
-
this._callStack = [];
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Browser-compatible logger
|
|
384
|
-
*/
|
|
385
|
-
class BrowserLogger {
|
|
386
|
-
constructor(config = {}) {
|
|
387
|
-
this._mode = 'dev';
|
|
388
|
-
this._indentLevel = 0;
|
|
389
|
-
this._trackingMode = TrackingMode.BALANCED;
|
|
390
|
-
this._mode = config.mode || 'dev';
|
|
391
|
-
this._trackingMode = config.trackingMode || TrackingMode.BALANCED;
|
|
392
|
-
this._executionTracker = new BrowserExecutionTracker({
|
|
393
|
-
defaultThreshold: config.performanceThreshold || 100,
|
|
394
|
-
});
|
|
395
|
-
this._performanceMonitor = new BrowserPerformanceMonitor({
|
|
396
|
-
defaultThreshold: config.performanceThreshold || 100,
|
|
397
|
-
});
|
|
70
|
+
visit(root, 0);
|
|
71
|
+
return lines.join('\n');
|
|
398
72
|
}
|
|
399
73
|
info(message, ...args) {
|
|
400
74
|
this.log('info', message, args);
|
|
@@ -438,63 +112,25 @@ class BrowserLogger {
|
|
|
438
112
|
* @returns This instance for chaining
|
|
439
113
|
*/
|
|
440
114
|
setTrackingMode(mode) {
|
|
441
|
-
|
|
115
|
+
super.setTrackingMode(mode);
|
|
442
116
|
return this;
|
|
443
117
|
}
|
|
444
118
|
/**
|
|
445
|
-
*
|
|
446
|
-
*
|
|
119
|
+
* Create a trackable version of a function. Calls go through `track()`,
|
|
120
|
+
* so nested trackables attach to their caller.
|
|
447
121
|
*/
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
var _a, _b;
|
|
453
|
-
const silent = (_a = options === null || options === void 0 ? void 0 : options.silent) !== null && _a !== void 0 ? _a : false;
|
|
454
|
-
const trackMemory = (_b = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _b !== void 0 ? _b : true;
|
|
455
|
-
const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || this._trackingMode;
|
|
456
|
-
// Track the function execution
|
|
457
|
-
const result = this._executionTracker.track(fn, {
|
|
122
|
+
createTrackable(fn, options = {}) {
|
|
123
|
+
const label = options.label || fn.name || 'anonymous';
|
|
124
|
+
// Use a regular function so callers keep their own `this`
|
|
125
|
+
const run = (thisArg, args) => this.track(() => fn.apply(thisArg, args), {
|
|
458
126
|
...options,
|
|
459
|
-
|
|
460
|
-
trackingMode
|
|
127
|
+
label
|
|
461
128
|
});
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
const flowChart = this._executionTracker.generateFlowChart();
|
|
465
|
-
console.log(flowChart);
|
|
466
|
-
}
|
|
467
|
-
return result;
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Create a trackable version of a function
|
|
471
|
-
*
|
|
472
|
-
* This is a helper method to create a tracked version of a function
|
|
473
|
-
* that can be used for nested function tracking.
|
|
474
|
-
*
|
|
475
|
-
* @param fn - The function to make trackable
|
|
476
|
-
* @param options - Options for tracking
|
|
477
|
-
* @returns A tracked version of the function
|
|
478
|
-
*/
|
|
479
|
-
createTrackable(fn, options) {
|
|
480
|
-
var _a, _b, _c;
|
|
481
|
-
const label = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
|
|
482
|
-
const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : 100; // Use a sensible default of 100ms
|
|
483
|
-
const enableNestedTracking = (_b = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
|
|
484
|
-
const trackMemory = (_c = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _c !== void 0 ? _c : true;
|
|
485
|
-
const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || this._trackingMode;
|
|
486
|
-
// Create a tracked version of the function using arrow function
|
|
487
|
-
const self = this;
|
|
488
|
-
return function (...args) {
|
|
489
|
-
return self.track(() => fn.apply(this, args), {
|
|
490
|
-
...options,
|
|
491
|
-
label,
|
|
492
|
-
threshold,
|
|
493
|
-
enableNestedTracking,
|
|
494
|
-
trackMemory,
|
|
495
|
-
trackingMode
|
|
496
|
-
});
|
|
129
|
+
const tracked = function (...args) {
|
|
130
|
+
return run(this, args);
|
|
497
131
|
};
|
|
132
|
+
preserveSignature(tracked, fn);
|
|
133
|
+
return tracked;
|
|
498
134
|
}
|
|
499
135
|
log(level, message, args) {
|
|
500
136
|
// Skip logs based on mode
|
|
@@ -513,7 +149,7 @@ class BrowserLogger {
|
|
|
513
149
|
try {
|
|
514
150
|
formattedMessage = JSON.stringify(message, null, 2);
|
|
515
151
|
}
|
|
516
|
-
catch (
|
|
152
|
+
catch (_a) {
|
|
517
153
|
formattedMessage = String(message);
|
|
518
154
|
}
|
|
519
155
|
}
|
|
@@ -537,12 +173,39 @@ class BrowserLogger {
|
|
|
537
173
|
}
|
|
538
174
|
}
|
|
539
175
|
}
|
|
176
|
+
function formatMemorySize(bytes) {
|
|
177
|
+
if (bytes < 1024) {
|
|
178
|
+
return `${bytes.toFixed(2)}B`;
|
|
179
|
+
}
|
|
180
|
+
else if (bytes < 1024 * 1024) {
|
|
181
|
+
return `${(bytes / 1024).toFixed(2)}KB`;
|
|
182
|
+
}
|
|
183
|
+
else if (bytes < 1024 * 1024 * 1024) {
|
|
184
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
|
|
185
|
+
}
|
|
186
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
|
|
187
|
+
}
|
|
188
|
+
function slowSuggestion(name, duration) {
|
|
189
|
+
if (duration > 500) {
|
|
190
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing or breaking it down into smaller functions.`;
|
|
191
|
+
}
|
|
192
|
+
else if (duration > 200) {
|
|
193
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing if called frequently.`;
|
|
194
|
+
}
|
|
195
|
+
else if (duration > 100) {
|
|
196
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Monitor if called in critical paths.`;
|
|
197
|
+
}
|
|
198
|
+
return '';
|
|
199
|
+
}
|
|
540
200
|
/**
|
|
541
201
|
* Create a browser-compatible logger instance
|
|
542
202
|
* @param config Configuration options
|
|
543
203
|
* @returns Browser logger instance
|
|
544
204
|
*/
|
|
545
205
|
export function createBrowserLogger(config = {}) {
|
|
206
|
+
if (config.logger instanceof BrowserLogger) {
|
|
207
|
+
return config.logger;
|
|
208
|
+
}
|
|
546
209
|
return new BrowserLogger(config);
|
|
547
210
|
}
|
|
548
211
|
/**
|
|
@@ -559,17 +222,10 @@ const browserLogger = createBrowserLogger();
|
|
|
559
222
|
// Export the default instance
|
|
560
223
|
export default browserLogger;
|
|
561
224
|
// Export classes for advanced usage
|
|
562
|
-
export { BrowserLogger
|
|
563
|
-
//
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
createTracePerf,
|
|
569
|
-
BrowserLogger,
|
|
570
|
-
BrowserPerformanceMonitor,
|
|
571
|
-
BrowserExecutionTracker,
|
|
572
|
-
TrackingMode
|
|
573
|
-
});
|
|
574
|
-
}
|
|
225
|
+
export { BrowserLogger };
|
|
226
|
+
// Plugins and exporters that work in browsers
|
|
227
|
+
export { performanceTimeline } from './core/timeline.js';
|
|
228
|
+
export { toChromeTrace, jsonLinesExporter, openTelemetryExporter, recordToJSON } from './core/exporters.js';
|
|
229
|
+
export { formatTree } from './core/records.js';
|
|
230
|
+
export { instrumentFetch } from './instrument.js';
|
|
575
231
|
//# sourceMappingURL=browser.js.map
|
package/dist/esm/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,yBAAyB;IAI7B,YAAY,UAAyC,EAAE;;QAH/C,YAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;QAI/C,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;IACjE,CAAC;IAEM,UAAU,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACtD,MAAM,kBAAkB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,iBAAiB,CAAC;QAC/D,OAAO,QAAQ,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,cAAc;QACnB,IAAI,CAAC;YACH,6BAA6B;YAC7B,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAI,WAAmB,CAAC,MAAM,CAAC;gBAC3C,OAAO;oBACL,QAAQ,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,KAAI,CAAC;oBACrC,SAAS,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,CAAC;oBACvC,QAAQ,EAAE,CAAC,EAAE,2BAA2B;oBACxC,GAAG,EAAE,CAAC,EAAE,2BAA2B;iBACpC,CAAC;YACJ,CAAC;YAED,qCAAqC;YACrC,IAAI,MAAM,IAAK,MAAc,CAAC,WAAW,IAAK,MAAc,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAChF,MAAM,MAAM,GAAI,MAAc,CAAC,WAAW,CAAC,MAAM,CAAC;gBAClD,OAAO;oBACL,QAAQ,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;oBACpC,SAAS,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC;oBACtC,QAAQ,EAAE,CAAC;oBACX,GAAG,EAAE,CAAC;iBACP,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,KAA2B;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC;YAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE/C,yCAAyC;YACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEM,GAAG;QACR,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CACvB,YAAoB,EACpB,QAAgB,EAChB,WAAoB;QAEpB,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,OAAO,8DAA8D,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,qDAAqD,YAAY,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,4BAA4B,YAAY,gCAAgC,CAAC;IAClF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,uBAAuB;IAS3B;;;;OAIG;IACH,YAAY,UAAyC,EAAE;;QAb/C,eAAU,GAAa,EAAE,CAAC;QAC1B,gBAAW,GAAU,EAAE,CAAC;QACxB,sBAAiB,GAAQ,IAAI,CAAC;QAG9B,sBAAiB,GAA4B,IAAI,GAAG,EAAE,CAAC;QAS7D,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAElE,2DAA2D;QAC3D,IAAI,CAAC,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAAyC,CAAC,CAAC;gBAC5E,EAAyB,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB,CAAC,IAAY,EAAE,QAAgB;QACvD,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,aAAa,IAAI,UAAU,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,gFAAgF,CAAC;QACxI,CAAC;aAAM,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YAC1B,OAAO,aAAa,IAAI,UAAU,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,0DAA0D,CAAC;QAClH,CAAC;aAAM,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YAC1B,OAAO,aAAa,IAAI,UAAU,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,qDAAqD,CAAC;QAC7G,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAI,EAAW,EAAE,UAAe,EAAE;;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;QACvD,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,IAAI,CAAC,iBAAiB,CAAC;QAC9D,MAAM,oBAAoB,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,IAAI,CAAC;QAClE,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,WAAW,mCAAI,IAAI,CAAC;QAEhD,oCAAoC;QACpC,IAAI,WAA+F,CAAC;QACpG,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;YAC1D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,0BAA0B;QAC1B,MAAM,SAAS,GAAQ;YACrB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACjC,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,gCAAgC;QAChC,IAAI,IAAI,CAAC,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;YACnD,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,sCAAsC;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEjD,oCAAoC;QACpC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnC,IAAI,MAAS,CAAC;QAEd,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,GAAG,EAAE,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa;YACb,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,SAAS,CAAC,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;YACnD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;YAElD,yBAAyB;YACzB,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;oBACvE,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC;gBACrC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAE3C,yBAAyB;YACzB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAEtB,qBAAqB;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,aAAa;QACb,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,SAAS,CAAC,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QACnD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QAElD,yBAAyB;QACzB,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvE,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC;YACrC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7E,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,yBAAyB;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAEtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACI,eAAe,CACpB,EAAK,EACL,OAA2D;;QAE3D,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;QACvD,MAAM,SAAS,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,GAAG,CAAC,CAAC,kCAAkC;QAC/E,MAAM,oBAAoB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,mCAAI,IAAI,CAAC;QACnE,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,IAAI,CAAC;QACjD,MAAM,YAAY,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,YAAY,CAAC,QAAQ,CAAC;QAEpE,gEAAgE;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,UAAoB,GAAG,IAAmB;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBAC5C,GAAG,OAAO;gBACV,KAAK;gBACL,SAAS;gBACT,oBAAoB;gBACpB,WAAW;gBACX,YAAY;aACb,CAAkB,CAAC;QACtB,CAA8C,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,YAAY;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,iBAAiB;QACtB,IAAI,MAAM,GAAG,mBAAmB,CAAC;QAEjC,yBAAyB;QACzB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAErD,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBACrE,SAAS,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;YACnE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,WAAW,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC;YAEvF,8BAA8B;YAC9B,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,SAAS,CAAC,UAAU,IAAI,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAAC,UAAiB;QAC5C,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,8BAA8B;QAC9B,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,yBAAyB;YACzB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC,CAAC;YAEH,2BAA2B;YAC3B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,QAAe,EAAE,MAAa;QACxD,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,gBAAgB;YAChB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YAEH,gCAAgC;YAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,KAAa;QACpC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;YACjB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,aAAa;IAOjB,YAAY,SAAiC,EAAE;QANvC,UAAK,GAAY,KAAK,CAAC;QACvB,iBAAY,GAAW,CAAC,CAAC;QAGzB,kBAAa,GAAW,YAAY,CAAC,QAAQ,CAAC;QAGpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAuB,CAAC;YACnD,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,IAAI,GAAG;SACrD,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,yBAAyB,CAAC;YACvD,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,IAAI,GAAG;SACrD,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,OAAwB,EAAE,GAAG,IAAW;QAClD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,OAAwB,EAAE,GAAG,IAAW;QAClD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAwB,EAAE,GAAG,IAAW;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,OAAwB,EAAE,GAAG,IAAW;QACnD,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,KAAa;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,IAAa;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,IAAY;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAI,EAAW,EAAE,OAAuB;;QAClD,MAAM,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,KAAK,CAAC;QACxC,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,IAAI,CAAC;QACjD,MAAM,YAAY,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,IAAI,CAAC,aAAa,CAAC;QAEjE,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC9C,GAAG,OAAO;YACV,WAAW;YACX,YAAY;SACb,CAAC,CAAC;QAEH,uCAAuC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACI,eAAe,CACpB,EAAK,EACL,OAA2D;;QAE3D,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;QACvD,MAAM,SAAS,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,GAAG,CAAC,CAAC,kCAAkC;QAC/E,MAAM,oBAAoB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,mCAAI,IAAI,CAAC;QACnE,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,IAAI,CAAC;QACjD,MAAM,YAAY,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,IAAI,CAAC,aAAa,CAAC;QAEjE,gEAAgE;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,UAAoB,GAAG,IAAmB;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBAC5C,GAAG,OAAO;gBACV,KAAK;gBACL,SAAS;gBACT,oBAAoB;gBACpB,WAAW;gBACX,YAAY;aACb,CAAkB,CAAC;QACtB,CAA8C,CAAC;IACjD,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAwB,EAAE,IAAW;QAChE,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,gBAAwB,CAAC;QAE7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,gBAAgB,GAAG,OAAO,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,gBAAgB,GAAG,GAAG,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElD,yCAAyC;QACzC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;gBACzC,MAAM;QACV,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiC,EAAE;IACrE,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiC,EAAE;IACjE,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,yCAAyC;AACzC,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAE5C,8BAA8B;AAC9B,eAAe,aAAa,CAAC;AAE7B,oCAAoC;AACpC,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,uBAAuB,EACxB,CAAC;AAEF,6BAA6B;AAC7B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;QAC5C,OAAO,EAAE,aAAa;QACtB,mBAAmB;QACnB,eAAe;QACf,aAAa;QACb,yBAAyB;QACzB,uBAAuB;QACvB,YAAY;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"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"}
|