@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.11
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/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +0 -1
- package/dist/components/ui/navigation/index.js +0 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +0 -2
- package/dist/components/ui/overlay/index.js +0 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +157 -281
- package/dist/index.js +157 -281
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/index.esm.js +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +1 -2
- package/dist/tokens/index.js +1 -2
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
|
@@ -1,61 +1,65 @@
|
|
|
1
1
|
// Bundle analysis and optimization utilities
|
|
2
2
|
export interface BundleMetrics {
|
|
3
|
-
totalSize;
|
|
4
|
-
gzippedSize;
|
|
5
|
-
moduleCount;
|
|
6
|
-
chunkCount;
|
|
7
|
-
largestChunks
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
totalSize: number;
|
|
4
|
+
gzippedSize: number;
|
|
5
|
+
moduleCount: number;
|
|
6
|
+
chunkCount: number;
|
|
7
|
+
largestChunks: Array<{
|
|
8
|
+
name: string;
|
|
9
|
+
size: number;
|
|
10
|
+
gzippedSize: number;
|
|
11
|
+
modules: string[];
|
|
11
12
|
}>;
|
|
12
|
-
duplicateModules];
|
|
13
|
-
unusedExports];
|
|
14
|
-
optimizationScore;
|
|
13
|
+
duplicateModules: string[];
|
|
14
|
+
unusedExports: string[];
|
|
15
|
+
optimizationScore: number;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export interface PerformanceMetrics {
|
|
18
|
-
buildTime;
|
|
19
|
-
themeSwitchTime;
|
|
20
|
-
componentRenderTime;
|
|
21
|
-
memoryUsage;
|
|
22
|
-
bundleLoadTime;
|
|
19
|
+
buildTime: number;
|
|
20
|
+
themeSwitchTime: number;
|
|
21
|
+
componentRenderTime: number;
|
|
22
|
+
memoryUsage: number;
|
|
23
|
+
bundleLoadTime: number;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
export class BundleAnalyzer {
|
|
26
|
-
private metrics;
|
|
27
|
-
private performanceMetrics;
|
|
27
|
+
private metrics: BundleMetrics;
|
|
28
|
+
private performanceMetrics: PerformanceMetrics;
|
|
28
29
|
|
|
29
30
|
constructor() {
|
|
30
31
|
this.metrics = {
|
|
31
|
-
totalSize,
|
|
32
|
-
gzippedSize,
|
|
33
|
-
moduleCount,
|
|
34
|
-
chunkCount,
|
|
35
|
-
largestChunks],
|
|
36
|
-
duplicateModules],
|
|
37
|
-
unusedExports],
|
|
38
|
-
optimizationScore
|
|
32
|
+
totalSize: 0,
|
|
33
|
+
gzippedSize: 0,
|
|
34
|
+
moduleCount: 0,
|
|
35
|
+
chunkCount: 0,
|
|
36
|
+
largestChunks: [],
|
|
37
|
+
duplicateModules: [],
|
|
38
|
+
unusedExports: [],
|
|
39
|
+
optimizationScore: 0
|
|
40
|
+
};
|
|
39
41
|
|
|
40
42
|
this.performanceMetrics = {
|
|
41
|
-
buildTime,
|
|
42
|
-
themeSwitchTime,
|
|
43
|
-
componentRenderTime,
|
|
44
|
-
memoryUsage,
|
|
45
|
-
bundleLoadTime
|
|
43
|
+
buildTime: 0,
|
|
44
|
+
themeSwitchTime: 0,
|
|
45
|
+
componentRenderTime: 0,
|
|
46
|
+
memoryUsage: 0,
|
|
47
|
+
bundleLoadTime: 0
|
|
48
|
+
};
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
// Analyze bundle size from build output
|
|
49
|
-
analyzeBundleSize(buildOutput)
|
|
52
|
+
analyzeBundleSize(buildOutput: string): BundleMetrics {
|
|
53
|
+
const lines = buildOutput.split('\n');
|
|
50
54
|
let totalSize = 0;
|
|
51
55
|
let gzippedSize = 0;
|
|
52
|
-
const chunks; size; gzippedSize}> = [];
|
|
56
|
+
const chunks: Array<{ name: string; size: number; gzippedSize: number }> = [];
|
|
53
57
|
|
|
54
58
|
// Parse build output for size information
|
|
55
59
|
lines.forEach(line => {
|
|
56
60
|
if (line.includes('dist/assets/') && line.includes('kB')) {
|
|
57
61
|
// Updated regex to match Vite's output format more accurately
|
|
58
|
-
const match = line.match(/dist\/assets\/([^.]+)\.[^.]+\.([^.]+)\s+(\d+\.\d+)\s+kB\s+\│\s+gzip)\s+kB/);
|
|
62
|
+
const match = line.match(/dist\/assets\/([^.]+)\.[^.]+\.([^.]+)\s+(\d+\.\d+)\s+kB\s+\│\s+gzip:\s+(\d+\.\d+)\s+kB/);
|
|
59
63
|
if (match) {
|
|
60
64
|
const [, name, ext, size, gzip] = match;
|
|
61
65
|
const sizeKB = parseFloat(size);
|
|
@@ -65,20 +69,23 @@ export class BundleAnalyzer {
|
|
|
65
69
|
gzippedSize += gzipKB;
|
|
66
70
|
|
|
67
71
|
chunks.push({
|
|
68
|
-
name}.${ext}`,
|
|
69
|
-
size,
|
|
70
|
-
gzippedSize
|
|
72
|
+
name: `${name}.${ext}`,
|
|
73
|
+
size: sizeKB,
|
|
74
|
+
gzippedSize: gzipKB
|
|
75
|
+
});
|
|
71
76
|
} else {
|
|
72
|
-
// Fallback
|
|
77
|
+
// Fallback: try to parse just the size information
|
|
78
|
+
const sizeMatch = line.match(/(\d+\.\d+)\s+kB/);
|
|
73
79
|
if (sizeMatch) {
|
|
74
80
|
const sizeKB = parseFloat(sizeMatch[1]);
|
|
75
81
|
totalSize += sizeKB;
|
|
76
82
|
gzippedSize += sizeKB * 0.3; // Estimate gzip size as 30% of original
|
|
77
83
|
|
|
78
84
|
chunks.push({
|
|
79
|
-
name,
|
|
80
|
-
size,
|
|
81
|
-
gzippedSize
|
|
85
|
+
name: 'unknown',
|
|
86
|
+
size: sizeKB,
|
|
87
|
+
gzippedSize: sizeKB * 0.3
|
|
88
|
+
});
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
91
|
}
|
|
@@ -90,26 +97,28 @@ export class BundleAnalyzer {
|
|
|
90
97
|
this.metrics = {
|
|
91
98
|
totalSize,
|
|
92
99
|
gzippedSize,
|
|
93
|
-
moduleCount),
|
|
94
|
-
chunkCount,
|
|
95
|
-
largestChunks, 5).map(chunk => ({
|
|
100
|
+
moduleCount: this.estimateModuleCount(totalSize),
|
|
101
|
+
chunkCount: chunks.length,
|
|
102
|
+
largestChunks: chunks.slice(0, 5).map(chunk => ({
|
|
96
103
|
...chunk,
|
|
97
|
-
modules)
|
|
104
|
+
modules: this.estimateModulesForChunk(chunk.name)
|
|
98
105
|
})),
|
|
99
|
-
duplicateModules),
|
|
100
|
-
unusedExports),
|
|
101
|
-
optimizationScore)
|
|
106
|
+
duplicateModules: this.detectDuplicateModules(),
|
|
107
|
+
unusedExports: this.detectUnusedExports(),
|
|
108
|
+
optimizationScore: this.calculateOptimizationScore()
|
|
102
109
|
};
|
|
103
110
|
|
|
104
111
|
return this.metrics;
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
// Estimate module count based on bundle size
|
|
108
|
-
private estimateModuleCount(bundleSizeKB)
|
|
115
|
+
private estimateModuleCount(bundleSizeKB: number): number {
|
|
116
|
+
// Rough estimation: average module size is ~2KB
|
|
117
|
+
return Math.round(bundleSizeKB / 2);
|
|
109
118
|
}
|
|
110
119
|
|
|
111
120
|
// Estimate modules for a specific chunk
|
|
112
|
-
private estimateModulesForChunk(chunkName)] {
|
|
121
|
+
private estimateModulesForChunk(chunkName: string): string[] {
|
|
113
122
|
// This would be more accurate with actual webpack/vite analysis
|
|
114
123
|
// For now, provide reasonable estimates based on chunk names
|
|
115
124
|
if (chunkName.includes('index')) {
|
|
@@ -123,21 +132,22 @@ export class BundleAnalyzer {
|
|
|
123
132
|
}
|
|
124
133
|
|
|
125
134
|
// Detect duplicate modules (simplified)
|
|
126
|
-
private detectDuplicateModules()] {
|
|
135
|
+
private detectDuplicateModules(): string[] {
|
|
127
136
|
// This would require actual bundle analysis
|
|
128
137
|
// For now, return common duplicates
|
|
129
138
|
return ['react', 'react-dom'];
|
|
130
139
|
}
|
|
131
140
|
|
|
132
141
|
// Detect unused exports (simplified)
|
|
133
|
-
private detectUnusedExports()] {
|
|
142
|
+
private detectUnusedExports(): string[] {
|
|
134
143
|
// This would require actual tree-shaking analysis
|
|
135
144
|
// For now, return potential unused exports
|
|
136
145
|
return ['legacy-theme', 'deprecated-utils'];
|
|
137
146
|
}
|
|
138
147
|
|
|
139
148
|
// Calculate optimization score (0-100)
|
|
140
|
-
private calculateOptimizationScore()
|
|
149
|
+
private calculateOptimizationScore(): number {
|
|
150
|
+
let score = 100;
|
|
141
151
|
|
|
142
152
|
// Penalize large bundle size
|
|
143
153
|
if (this.metrics.totalSize > 500) score -= 20;
|
|
@@ -156,19 +166,23 @@ export class BundleAnalyzer {
|
|
|
156
166
|
}
|
|
157
167
|
|
|
158
168
|
// Get current metrics
|
|
159
|
-
getMetrics()
|
|
169
|
+
getMetrics(): BundleMetrics {
|
|
170
|
+
return { ...this.metrics };
|
|
160
171
|
}
|
|
161
172
|
|
|
162
173
|
// Get performance metrics
|
|
163
|
-
getPerformanceMetrics()
|
|
174
|
+
getPerformanceMetrics(): PerformanceMetrics {
|
|
175
|
+
return { ...this.performanceMetrics };
|
|
164
176
|
}
|
|
165
177
|
|
|
166
178
|
// Measure build time
|
|
167
|
-
measureBuildTime(startTime
|
|
179
|
+
measureBuildTime(startTime: number): void {
|
|
180
|
+
this.performanceMetrics.buildTime = Date.now() - startTime;
|
|
168
181
|
}
|
|
169
182
|
|
|
170
183
|
// Measure theme switch performance
|
|
171
|
-
measureThemeSwitch(callback) => void)
|
|
184
|
+
measureThemeSwitch(callback: () => void): number {
|
|
185
|
+
const startTime = performance.now();
|
|
172
186
|
callback();
|
|
173
187
|
const endTime = performance.now();
|
|
174
188
|
const duration = endTime - startTime;
|
|
@@ -177,7 +191,8 @@ export class BundleAnalyzer {
|
|
|
177
191
|
}
|
|
178
192
|
|
|
179
193
|
// Measure component render performance
|
|
180
|
-
measureComponentRender(callback) => void)
|
|
194
|
+
measureComponentRender(callback: () => void): number {
|
|
195
|
+
const startTime = performance.now();
|
|
181
196
|
callback();
|
|
182
197
|
const endTime = performance.now();
|
|
183
198
|
const duration = endTime - startTime;
|
|
@@ -186,7 +201,8 @@ export class BundleAnalyzer {
|
|
|
186
201
|
}
|
|
187
202
|
|
|
188
203
|
// Get memory usage (if available)
|
|
189
|
-
getMemoryUsage()
|
|
204
|
+
getMemoryUsage(): number {
|
|
205
|
+
if ('memory' in performance) {
|
|
190
206
|
const memory = (performance as any).memory;
|
|
191
207
|
this.performanceMetrics.memoryUsage = memory.usedJSHeapSize / 1024 / 1024; // MB
|
|
192
208
|
return this.performanceMetrics.memoryUsage;
|
|
@@ -195,8 +211,8 @@ export class BundleAnalyzer {
|
|
|
195
211
|
}
|
|
196
212
|
|
|
197
213
|
// Generate optimization recommendations
|
|
198
|
-
generateRecommendations()] {
|
|
199
|
-
const recommendations] = [];
|
|
214
|
+
generateRecommendations(): string[] {
|
|
215
|
+
const recommendations: string[] = [];
|
|
200
216
|
|
|
201
217
|
if (this.metrics.totalSize > 500) {
|
|
202
218
|
recommendations.push('Bundle size is large. Consider code splitting and lazy loading.');
|
|
@@ -230,10 +246,12 @@ export class BundleAnalyzer {
|
|
|
230
246
|
}
|
|
231
247
|
|
|
232
248
|
// Export metrics for external analysis
|
|
233
|
-
exportMetrics()
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
249
|
+
exportMetrics(): string {
|
|
250
|
+
return JSON.stringify({
|
|
251
|
+
bundle: this.metrics,
|
|
252
|
+
performance: this.performanceMetrics,
|
|
253
|
+
recommendations: this.generateRecommendations(),
|
|
254
|
+
timestamp: new Date().toISOString()
|
|
237
255
|
}, null, 2);
|
|
238
256
|
}
|
|
239
257
|
}
|