@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.10

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.
Files changed (304) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.esm.js +30 -24
  3. package/dist/components/ui/accessibility-demo.js +30 -24
  4. package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
  5. package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
  6. package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
  7. package/dist/components/ui/advanced-transition-system-demo.js +110 -64
  8. package/dist/components/ui/advanced-transition-system.esm.js +166 -122
  9. package/dist/components/ui/advanced-transition-system.js +166 -122
  10. package/dist/components/ui/animation/animated-container.esm.js +52 -29
  11. package/dist/components/ui/animation/animated-container.js +52 -29
  12. package/dist/components/ui/animation/staggered-container.esm.js +18 -9
  13. package/dist/components/ui/animation/staggered-container.js +18 -9
  14. package/dist/components/ui/animation-demo.esm.js +67 -35
  15. package/dist/components/ui/animation-demo.js +67 -35
  16. package/dist/components/ui/badge.esm.js +9 -6
  17. package/dist/components/ui/badge.js +9 -6
  18. package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
  19. package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
  20. package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
  21. package/dist/components/ui/border-radius-shadow-demo.js +23 -12
  22. package/dist/components/ui/button.esm.js +8 -2
  23. package/dist/components/ui/button.js +8 -2
  24. package/dist/components/ui/card.esm.js +33 -8
  25. package/dist/components/ui/card.js +33 -8
  26. package/dist/components/ui/checkbox.esm.js +3 -3
  27. package/dist/components/ui/checkbox.js +3 -3
  28. package/dist/components/ui/color-preview.esm.js +68 -45
  29. package/dist/components/ui/color-preview.js +68 -45
  30. package/dist/components/ui/data-display/chart.esm.js +112 -84
  31. package/dist/components/ui/data-display/chart.js +112 -84
  32. package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
  33. package/dist/components/ui/data-display/data-grid-simple.js +1 -1
  34. package/dist/components/ui/data-display/data-grid.esm.js +80 -67
  35. package/dist/components/ui/data-display/data-grid.js +80 -67
  36. package/dist/components/ui/data-display/list.esm.js +53 -45
  37. package/dist/components/ui/data-display/list.js +53 -45
  38. package/dist/components/ui/data-display/table.esm.js +62 -54
  39. package/dist/components/ui/data-display/table.js +62 -54
  40. package/dist/components/ui/data-display/timeline.esm.js +39 -34
  41. package/dist/components/ui/data-display/timeline.js +39 -34
  42. package/dist/components/ui/data-display/tree.esm.js +116 -84
  43. package/dist/components/ui/data-display/tree.js +116 -84
  44. package/dist/components/ui/data-display/types.esm.js +389 -364
  45. package/dist/components/ui/data-display/types.js +389 -364
  46. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
  47. package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
  48. package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
  49. package/dist/components/ui/enterprise-mobile-experience.js +124 -73
  50. package/dist/components/ui/feedback/alert.esm.js +22 -15
  51. package/dist/components/ui/feedback/alert.js +22 -15
  52. package/dist/components/ui/feedback/progress.esm.js +47 -24
  53. package/dist/components/ui/feedback/progress.js +47 -24
  54. package/dist/components/ui/feedback/skeleton.esm.js +39 -29
  55. package/dist/components/ui/feedback/skeleton.js +39 -29
  56. package/dist/components/ui/feedback/toast.esm.js +62 -38
  57. package/dist/components/ui/feedback/toast.js +62 -38
  58. package/dist/components/ui/feedback/types.esm.js +83 -83
  59. package/dist/components/ui/feedback/types.js +83 -83
  60. package/dist/components/ui/font-preview.esm.js +41 -39
  61. package/dist/components/ui/font-preview.js +41 -39
  62. package/dist/components/ui/form-demo.esm.js +150 -113
  63. package/dist/components/ui/form-demo.js +150 -113
  64. package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
  65. package/dist/components/ui/hardware-acceleration-demo.js +137 -87
  66. package/dist/components/ui/input.esm.js +4 -1
  67. package/dist/components/ui/input.js +4 -1
  68. package/dist/components/ui/layout-demo.esm.js +81 -56
  69. package/dist/components/ui/layout-demo.js +81 -56
  70. package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
  71. package/dist/components/ui/layouts/adaptive-layout.js +27 -8
  72. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
  73. package/dist/components/ui/layouts/desktop-layout.js +39 -19
  74. package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
  75. package/dist/components/ui/layouts/mobile-layout.js +19 -9
  76. package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
  77. package/dist/components/ui/layouts/tablet-layout.js +28 -14
  78. package/dist/components/ui/mobile-form-validation.esm.js +120 -87
  79. package/dist/components/ui/mobile-form-validation.js +120 -87
  80. package/dist/components/ui/mobile-input-demo.esm.js +19 -13
  81. package/dist/components/ui/mobile-input-demo.js +19 -13
  82. package/dist/components/ui/mobile-input.esm.js +185 -120
  83. package/dist/components/ui/mobile-input.js +185 -120
  84. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
  85. package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
  86. package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
  87. package/dist/components/ui/navigation/breadcrumb.js +17 -14
  88. package/dist/components/ui/navigation/index.esm.js +23 -1
  89. package/dist/components/ui/navigation/index.js +23 -1
  90. package/dist/components/ui/navigation/menu.esm.js +49 -35
  91. package/dist/components/ui/navigation/menu.js +49 -35
  92. package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
  93. package/dist/components/ui/navigation/navigation-demo.js +81 -74
  94. package/dist/components/ui/navigation/pagination.esm.js +62 -50
  95. package/dist/components/ui/navigation/pagination.js +62 -50
  96. package/dist/components/ui/navigation/sidebar.esm.js +56 -42
  97. package/dist/components/ui/navigation/sidebar.js +56 -42
  98. package/dist/components/ui/navigation/stepper.esm.js +34 -23
  99. package/dist/components/ui/navigation/stepper.js +34 -23
  100. package/dist/components/ui/navigation/tabs.esm.js +32 -21
  101. package/dist/components/ui/navigation/tabs.js +32 -21
  102. package/dist/components/ui/navigation/types.esm.js +196 -195
  103. package/dist/components/ui/navigation/types.js +196 -195
  104. package/dist/components/ui/overlay/backdrop.esm.js +17 -16
  105. package/dist/components/ui/overlay/backdrop.js +17 -16
  106. package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
  107. package/dist/components/ui/overlay/focus-manager.js +21 -19
  108. package/dist/components/ui/overlay/index.esm.js +22 -2
  109. package/dist/components/ui/overlay/index.js +22 -2
  110. package/dist/components/ui/overlay/modal.esm.js +38 -34
  111. package/dist/components/ui/overlay/modal.js +38 -34
  112. package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
  113. package/dist/components/ui/overlay/overlay-manager.js +25 -20
  114. package/dist/components/ui/overlay/popover.esm.js +74 -58
  115. package/dist/components/ui/overlay/popover.js +74 -58
  116. package/dist/components/ui/overlay/portal.esm.js +7 -7
  117. package/dist/components/ui/overlay/portal.js +7 -7
  118. package/dist/components/ui/overlay/tooltip.esm.js +54 -39
  119. package/dist/components/ui/overlay/tooltip.js +54 -39
  120. package/dist/components/ui/overlay/types.esm.js +132 -131
  121. package/dist/components/ui/overlay/types.js +132 -131
  122. package/dist/components/ui/performance-demo.esm.js +135 -88
  123. package/dist/components/ui/performance-demo.js +135 -88
  124. package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
  125. package/dist/components/ui/semantic-input-system-demo.js +117 -80
  126. package/dist/components/ui/theme-customizer.esm.js +84 -52
  127. package/dist/components/ui/theme-customizer.js +84 -52
  128. package/dist/components/ui/theme-preview.esm.js +95 -43
  129. package/dist/components/ui/theme-preview.js +95 -43
  130. package/dist/components/ui/theme-switcher.esm.js +70 -44
  131. package/dist/components/ui/theme-switcher.js +70 -44
  132. package/dist/components/ui/theme-toggle.esm.js +3 -3
  133. package/dist/components/ui/theme-toggle.js +3 -3
  134. package/dist/components/ui/token-demo.esm.js +33 -21
  135. package/dist/components/ui/token-demo.js +33 -21
  136. package/dist/components/ui/touch-demo.esm.js +102 -73
  137. package/dist/components/ui/touch-demo.js +102 -73
  138. package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
  139. package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
  140. package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
  141. package/dist/components/ui/touch-friendly-interface.js +85 -61
  142. package/dist/hooks/use-accessibility-support.esm.js +115 -85
  143. package/dist/hooks/use-accessibility-support.js +115 -85
  144. package/dist/hooks/use-adaptive-layout.esm.js +56 -33
  145. package/dist/hooks/use-adaptive-layout.js +56 -33
  146. package/dist/hooks/use-advanced-patterns.esm.js +57 -42
  147. package/dist/hooks/use-advanced-patterns.js +57 -42
  148. package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
  149. package/dist/hooks/use-advanced-transition-system.js +112 -71
  150. package/dist/hooks/use-animation-profile.esm.js +63 -34
  151. package/dist/hooks/use-animation-profile.js +63 -34
  152. package/dist/hooks/use-battery-animations.esm.js +80 -55
  153. package/dist/hooks/use-battery-animations.js +80 -55
  154. package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
  155. package/dist/hooks/use-battery-conscious-loading.js +166 -123
  156. package/dist/hooks/use-battery-optimization.esm.js +78 -55
  157. package/dist/hooks/use-battery-optimization.js +78 -55
  158. package/dist/hooks/use-battery-status.esm.js +73 -51
  159. package/dist/hooks/use-battery-status.js +73 -51
  160. package/dist/hooks/use-component-performance.esm.js +62 -47
  161. package/dist/hooks/use-component-performance.js +62 -47
  162. package/dist/hooks/use-device-loading-states.esm.js +152 -109
  163. package/dist/hooks/use-device-loading-states.js +152 -109
  164. package/dist/hooks/use-device.esm.js +25 -14
  165. package/dist/hooks/use-device.js +25 -14
  166. package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
  167. package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
  168. package/dist/hooks/use-form-feedback.esm.js +124 -81
  169. package/dist/hooks/use-form-feedback.js +124 -81
  170. package/dist/hooks/use-form-performance.esm.js +127 -92
  171. package/dist/hooks/use-form-performance.js +127 -92
  172. package/dist/hooks/use-frame-rate.esm.js +56 -37
  173. package/dist/hooks/use-frame-rate.js +56 -37
  174. package/dist/hooks/use-gestures.esm.js +96 -72
  175. package/dist/hooks/use-gestures.js +96 -72
  176. package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
  177. package/dist/hooks/use-hardware-acceleration.js +65 -37
  178. package/dist/hooks/use-input-accessibility.esm.js +157 -119
  179. package/dist/hooks/use-input-accessibility.js +157 -119
  180. package/dist/hooks/use-input-performance.esm.js +139 -104
  181. package/dist/hooks/use-input-performance.js +139 -104
  182. package/dist/hooks/use-layout-performance.esm.js +50 -29
  183. package/dist/hooks/use-layout-performance.js +50 -29
  184. package/dist/hooks/use-loading-accessibility.esm.js +209 -169
  185. package/dist/hooks/use-loading-accessibility.js +209 -169
  186. package/dist/hooks/use-loading-performance.esm.js +117 -93
  187. package/dist/hooks/use-loading-performance.js +117 -93
  188. package/dist/hooks/use-memory-usage.esm.js +57 -38
  189. package/dist/hooks/use-memory-usage.js +57 -38
  190. package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
  191. package/dist/hooks/use-mobile-form-layout.js +111 -74
  192. package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
  193. package/dist/hooks/use-mobile-form-validation.js +211 -144
  194. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
  195. package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
  196. package/dist/hooks/use-mobile-layout.esm.js +73 -51
  197. package/dist/hooks/use-mobile-layout.js +73 -51
  198. package/dist/hooks/use-mobile-optimization.esm.js +72 -44
  199. package/dist/hooks/use-mobile-optimization.js +72 -44
  200. package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
  201. package/dist/hooks/use-mobile-skeleton.js +97 -64
  202. package/dist/hooks/use-mobile-touch.esm.js +128 -93
  203. package/dist/hooks/use-mobile-touch.js +128 -93
  204. package/dist/hooks/use-performance-throttling.esm.js +72 -48
  205. package/dist/hooks/use-performance-throttling.js +72 -48
  206. package/dist/hooks/use-performance.esm.js +90 -52
  207. package/dist/hooks/use-performance.js +90 -52
  208. package/dist/hooks/use-reusable-architecture.esm.js +94 -65
  209. package/dist/hooks/use-reusable-architecture.js +94 -65
  210. package/dist/hooks/use-semantic-input-types.esm.js +166 -124
  211. package/dist/hooks/use-semantic-input-types.js +166 -124
  212. package/dist/hooks/use-semantic-input.esm.js +178 -126
  213. package/dist/hooks/use-semantic-input.js +178 -126
  214. package/dist/hooks/use-tablet-layout.esm.js +67 -38
  215. package/dist/hooks/use-tablet-layout.js +67 -38
  216. package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
  217. package/dist/hooks/use-touch-friendly-input.js +193 -149
  218. package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
  219. package/dist/hooks/use-touch-friendly-interface.js +99 -67
  220. package/dist/hooks/use-touch-optimization.esm.js +99 -72
  221. package/dist/hooks/use-touch-optimization.js +99 -72
  222. package/dist/index.esm.js +289 -280
  223. package/dist/index.js +289 -280
  224. package/dist/lib/utils.esm.js +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/plugins/theme-css-generator.esm.js +104 -55
  227. package/dist/plugins/theme-css-generator.js +104 -55
  228. package/dist/provider.esm.js +4 -4
  229. package/dist/provider.js +4 -4
  230. package/dist/styles.css +1 -1
  231. package/dist/theme.esm.js +633 -468
  232. package/dist/theme.js +633 -468
  233. package/dist/themes/ThemeContext.esm.js +15 -15
  234. package/dist/themes/ThemeContext.js +15 -15
  235. package/dist/themes/ThemeProvider.esm.js +25 -22
  236. package/dist/themes/ThemeProvider.js +25 -22
  237. package/dist/themes/accessibility.esm.js +147 -108
  238. package/dist/themes/accessibility.js +147 -108
  239. package/dist/themes/aria-patterns.esm.js +198 -162
  240. package/dist/themes/aria-patterns.js +198 -162
  241. package/dist/themes/base-themes.esm.js +14 -11
  242. package/dist/themes/base-themes.js +14 -11
  243. package/dist/themes/colorManager.esm.js +101 -83
  244. package/dist/themes/colorManager.js +101 -83
  245. package/dist/themes/examples/dark-theme.esm.js +133 -103
  246. package/dist/themes/examples/dark-theme.js +133 -103
  247. package/dist/themes/examples/minimal-theme.esm.js +83 -61
  248. package/dist/themes/examples/minimal-theme.js +83 -61
  249. package/dist/themes/focus-management.esm.js +202 -143
  250. package/dist/themes/focus-management.js +202 -143
  251. package/dist/themes/fontLoader.esm.js +28 -19
  252. package/dist/themes/fontLoader.js +28 -19
  253. package/dist/themes/high-contrast.esm.js +152 -104
  254. package/dist/themes/high-contrast.js +152 -104
  255. package/dist/themes/inheritance.esm.js +35 -27
  256. package/dist/themes/inheritance.js +35 -27
  257. package/dist/themes/keyboard-navigation.esm.js +152 -123
  258. package/dist/themes/keyboard-navigation.js +152 -123
  259. package/dist/themes/motion-reduction.esm.js +193 -133
  260. package/dist/themes/motion-reduction.js +193 -133
  261. package/dist/themes/navigation.esm.js +146 -146
  262. package/dist/themes/navigation.js +146 -146
  263. package/dist/themes/screen-reader.esm.js +159 -94
  264. package/dist/themes/screen-reader.js +159 -94
  265. package/dist/themes/systemThemeDetector.esm.js +42 -34
  266. package/dist/themes/systemThemeDetector.js +42 -34
  267. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  268. package/dist/themes/themeCSSUpdater.js +21 -9
  269. package/dist/themes/themePersistence.esm.js +68 -47
  270. package/dist/themes/themePersistence.js +68 -47
  271. package/dist/themes/themes/stan-design.esm.js +633 -468
  272. package/dist/themes/themes/stan-design.js +633 -468
  273. package/dist/themes/types.esm.js +301 -287
  274. package/dist/themes/types.js +301 -287
  275. package/dist/themes/useSystemTheme.esm.js +4 -4
  276. package/dist/themes/useSystemTheme.js +4 -4
  277. package/dist/themes/useTheme.esm.js +4 -4
  278. package/dist/themes/useTheme.js +4 -4
  279. package/dist/themes/validation.esm.js +128 -77
  280. package/dist/themes/validation.js +128 -77
  281. package/dist/tokens/index.esm.js +15 -4
  282. package/dist/tokens/index.js +15 -4
  283. package/dist/tokens/tokenExporter.esm.js +87 -61
  284. package/dist/tokens/tokenExporter.js +87 -61
  285. package/dist/tokens/tokenGenerator.esm.js +86 -77
  286. package/dist/tokens/tokenGenerator.js +86 -77
  287. package/dist/tokens/tokenManager.esm.js +64 -51
  288. package/dist/tokens/tokenManager.js +64 -51
  289. package/dist/tokens/tokenValidator.esm.js +193 -147
  290. package/dist/tokens/tokenValidator.js +193 -147
  291. package/dist/tokens/types.esm.js +49 -35
  292. package/dist/tokens/types.js +49 -35
  293. package/dist/utils/bundle-analyzer.esm.js +83 -65
  294. package/dist/utils/bundle-analyzer.js +83 -65
  295. package/dist/utils/bundle-splitting.esm.js +142 -117
  296. package/dist/utils/bundle-splitting.js +142 -117
  297. package/dist/utils/lazy-loading.esm.js +132 -106
  298. package/dist/utils/lazy-loading.js +132 -106
  299. package/dist/utils/performance-monitor.esm.js +170 -129
  300. package/dist/utils/performance-monitor.js +170 -129
  301. package/dist/utils/tree-shaking.esm.js +69 -61
  302. package/dist/utils/tree-shaking.js +69 -61
  303. package/package.json +1 -1
  304. package/src/index.ts +146 -146
@@ -1,72 +1,72 @@
1
1
  // Bundle splitting utilities for optimizing build process and loading performance
2
2
  export interface BundleSplitConfig {
3
- enabled;
4
- strategy;
5
- chunkSize;
6
- maxChunks;
7
- minChunkSize;
8
- vendorChunk;
9
- commonChunk;
10
- asyncChunk;
11
- preloadChunks;
12
- cacheGroups, any>;
3
+ enabled: boolean;
4
+ strategy: 'dynamic' | 'static' | 'hybrid';
5
+ chunkSize: number;
6
+ maxChunks: number;
7
+ minChunkSize: number;
8
+ vendorChunk: boolean;
9
+ commonChunk: boolean;
10
+ asyncChunk: boolean;
11
+ preloadChunks: boolean;
12
+ cacheGroups: Record<string, any>;
13
13
  }
14
14
 
15
15
  export interface ChunkAnalysis {
16
- name;
17
- size;
18
- gzippedSize;
19
- modules];
20
- dependencies];
21
- async;
22
- vendor;
23
- common;
24
- loadPriority;
16
+ name: string;
17
+ size: number;
18
+ gzippedSize: number;
19
+ modules: string[];
20
+ dependencies: string[];
21
+ async: boolean;
22
+ vendor: boolean;
23
+ common: boolean;
24
+ loadPriority: 'high' | 'medium' | 'low';
25
25
  }
26
26
 
27
27
  export interface BundleSplitReport {
28
- chunks];
29
- totalSize;
30
- totalGzippedSize;
31
- chunkCount;
32
- averageChunkSize;
33
- optimizationScore;
34
- recommendations];
35
- timestamp;
28
+ chunks: ChunkAnalysis[];
29
+ totalSize: number;
30
+ totalGzippedSize: number;
31
+ chunkCount: number;
32
+ averageChunkSize: number;
33
+ optimizationScore: number;
34
+ recommendations: string[];
35
+ timestamp: number;
36
36
  }
37
37
 
38
38
  export class BundleSplitter {
39
- private config;
40
- private chunks, ChunkAnalysis>;
41
-
42
- constructor(config= {
43
- enabled,
44
- strategy,
45
- chunkSize, // 244KB
46
- maxChunks,
47
- minChunkSize, // 30KB
48
- vendorChunk,
49
- commonChunk,
50
- asyncChunk,
51
- preloadChunks,
52
- cacheGroups}
39
+ private config: BundleSplitConfig;
40
+ private chunks: Map<string, ChunkAnalysis>;
41
+
42
+ constructor(config: BundleSplitConfig = {
43
+ enabled: true,
44
+ strategy: 'hybrid',
45
+ chunkSize: 244 * 1024, // 244KB
46
+ maxChunks: 10,
47
+ minChunkSize: 30 * 1024, // 30KB
48
+ vendorChunk: true,
49
+ commonChunk: true,
50
+ asyncChunk: true,
51
+ preloadChunks: true,
52
+ cacheGroups: {}
53
53
  }) {
54
54
  this.config = config;
55
55
  this.chunks = new Map();
56
56
  }
57
57
 
58
58
  // Analyze bundle chunks from build output
59
- analyzeChunks(buildOutput)] {
59
+ analyzeChunks(buildOutput: string): ChunkAnalysis[] {
60
60
  if (!this.config.enabled) return [];
61
61
 
62
62
  const lines = buildOutput.split('\n');
63
- const chunks] = [];
63
+ const chunks: ChunkAnalysis[] = [];
64
64
 
65
65
  lines.forEach(line => {
66
66
  // Handle all dist/ patterns
67
67
  if (line.includes('dist/') && line.includes('kB')) {
68
68
  // Use a more flexible regex that captures the essential parts
69
- const match = line.match(/\s*dist\/(?)?([^\s]+)\s+(\d+\.\d+)\s+kB\s+\│\s*gzip)\s+kB/);
69
+ const match = line.match(/\s*dist\/(?:assets\/)?([^\s]+)\s+(\d+\.\d+)\s+kB\s+\│\s*gzip:\s*(\d+\.\d+)\s+kB/);
70
70
 
71
71
  if (match) {
72
72
  const [, filename, size, gzip] = match;
@@ -74,20 +74,20 @@ export class BundleSplitter {
74
74
  const gzipKB = parseFloat(gzip);
75
75
 
76
76
  // Extract name and extension from filename
77
- const nameMatch = filename.match(/^([^.]+)(?]+\.([^.]+))?$/);
78
- const name = nameMatch ? nameMatch[1] ;
79
- const ext = nameMatch && nameMatch[2] ? nameMatch[2] ;
77
+ const nameMatch = filename.match(/^([^.]+)(?:\.[^.]+\.([^.]+))?$/);
78
+ const name = nameMatch ? nameMatch[1] : filename;
79
+ const ext = nameMatch && nameMatch[2] ? nameMatch[2] : '';
80
80
 
81
- const chunk= {
82
- name}.${ext}` ,
83
- size, // Convert to bytes
84
- gzippedSize,
85
- modules),
86
- dependencies),
87
- async),
88
- vendor),
89
- common),
90
- loadPriority, sizeKB)
81
+ const chunk: ChunkAnalysis = {
82
+ name: ext ? `${name}.${ext}` : name,
83
+ size: sizeKB * 1024, // Convert to bytes
84
+ gzippedSize: gzipKB * 1024,
85
+ modules: this.estimateModulesForChunk(name),
86
+ dependencies: this.estimateDependencies(name),
87
+ async: this.isAsyncChunk(name),
88
+ vendor: this.isVendorChunk(name),
89
+ common: this.isCommonChunk(name),
90
+ loadPriority: this.calculateLoadPriority(name, sizeKB)
91
91
  };
92
92
 
93
93
  chunks.push(chunk);
@@ -100,7 +100,7 @@ export class BundleSplitter {
100
100
  }
101
101
 
102
102
  // Estimate modules for a specific chunk
103
- private estimateModulesForChunk(chunkName)] {
103
+ private estimateModulesForChunk(chunkName: string): string[] {
104
104
  if (chunkName.includes('index')) {
105
105
  return ['main', 'themes', 'components', 'utils'];
106
106
  } else if (chunkName.includes('vendor')) {
@@ -116,7 +116,7 @@ export class BundleSplitter {
116
116
  }
117
117
 
118
118
  // Estimate dependencies for a chunk
119
- private estimateDependencies(chunkName)] {
119
+ private estimateDependencies(chunkName: string): string[] {
120
120
  if (chunkName.includes('index')) {
121
121
  return ['vendor', 'theme', 'component'];
122
122
  } else if (chunkName.includes('vendor')) {
@@ -130,25 +130,29 @@ export class BundleSplitter {
130
130
  }
131
131
 
132
132
  // Check if chunk is async (lazy-loaded)
133
- private isAsyncChunk(chunkName)) ||
133
+ private isAsyncChunk(chunkName: string): boolean {
134
+ return chunkName.includes('async') ||
134
135
  chunkName.includes('lazy') ||
135
136
  chunkName.includes('dynamic');
136
137
  }
137
138
 
138
139
  // Check if chunk contains vendor libraries
139
- private isVendorChunk(chunkName)) ||
140
+ private isVendorChunk(chunkName: string): boolean {
141
+ return chunkName.includes('vendor') ||
140
142
  chunkName.includes('lib') ||
141
143
  chunkName.includes('node_modules');
142
144
  }
143
145
 
144
146
  // Check if chunk contains common/shared code
145
- private isCommonChunk(chunkName)) ||
147
+ private isCommonChunk(chunkName: string): boolean {
148
+ return chunkName.includes('common') ||
146
149
  chunkName.includes('shared') ||
147
150
  chunkName.includes('runtime');
148
151
  }
149
152
 
150
153
  // Calculate load priority for a chunk
151
- private calculateLoadPriority(chunkName, sizeKB)) || chunkName.includes('main')) {
154
+ private calculateLoadPriority(chunkName: string, sizeKB: number): 'high' | 'medium' | 'low' {
155
+ if (chunkName.includes('index') || chunkName.includes('main')) {
152
156
  return 'high';
153
157
  } else if (chunkName.includes('vendor') || chunkName.includes('common')) {
154
158
  return 'medium';
@@ -159,8 +163,8 @@ export class BundleSplitter {
159
163
  }
160
164
 
161
165
  // Generate bundle splitting recommendations
162
- generateRecommendations(chunks])] {
163
- const recommendations] = [];
166
+ generateRecommendations(chunks: ChunkAnalysis[]): string[] {
167
+ const recommendations: string[] = [];
164
168
 
165
169
  // Check chunk count
166
170
  if (chunks.length > this.config.maxChunks) {
@@ -206,7 +210,8 @@ export class BundleSplitter {
206
210
  }
207
211
 
208
212
  // Calculate optimization score
209
- calculateOptimizationScore(chunks])= 100;
213
+ calculateOptimizationScore(chunks: ChunkAnalysis[]): number {
214
+ let score = 100;
210
215
 
211
216
  // Penalize too many chunks
212
217
  if (chunks.length > this.config.maxChunks) {
@@ -237,24 +242,29 @@ export class BundleSplitter {
237
242
  }
238
243
 
239
244
  // Generate Vite configuration for bundle splitting
240
- generateViteConfig()= {
241
- build),
242
- chunkFileNames),
243
- entryFileNames),
244
- assetFileNames)
245
+ generateViteConfig(): string {
246
+ const config = {
247
+ build: {
248
+ rollupOptions: {
249
+ output: {
250
+ manualChunks: this.generateManualChunks(),
251
+ chunkFileNames: this.generateChunkFileNames(),
252
+ entryFileNames: this.generateEntryFileNames(),
253
+ assetFileNames: this.generateAssetFileNames()
245
254
  }
246
255
  },
247
- chunkSizeWarningLimit,
248
- minify,
249
- sourcemap}
256
+ chunkSizeWarningLimit: this.config.chunkSize / 1024,
257
+ minify: 'terser',
258
+ sourcemap: true
259
+ }
250
260
  };
251
261
 
252
262
  return JSON.stringify(config, null, 2);
253
263
  }
254
264
 
255
265
  // Generate manual chunk configuration
256
- private generateManualChunks(), string[]> {
257
- const chunks, string[]> = {};
266
+ private generateManualChunks(): Record<string, string[]> {
267
+ const chunks: Record<string, string[]> = {};
258
268
 
259
269
  if (this.config.vendorChunk) {
260
270
  chunks.vendor = [
@@ -283,7 +293,8 @@ export class BundleSplitter {
283
293
  }
284
294
 
285
295
  // Generate chunk file naming pattern
286
- private generateChunkFileNames()=== 'dynamic') {
296
+ private generateChunkFileNames(): string {
297
+ if (this.config.strategy === 'dynamic') {
287
298
  return 'assets/[name]-[hash].js';
288
299
  } else if (this.config.strategy === 'static') {
289
300
  return 'assets/[name].js';
@@ -293,20 +304,25 @@ export class BundleSplitter {
293
304
  }
294
305
 
295
306
  // Generate entry file naming pattern
296
- private generateEntryFileNames()]-[hash].js';
307
+ private generateEntryFileNames(): string {
308
+ return 'assets/[name]-[hash].js';
297
309
  }
298
310
 
299
311
  // Generate asset file naming pattern
300
- private generateAssetFileNames()]-[hash].[ext]';
312
+ private generateAssetFileNames(): string {
313
+ return 'assets/[name]-[hash].[ext]';
301
314
  }
302
315
 
303
316
  // Generate webpack configuration for bundle splitting
304
- generateWebpackConfig()= {
305
- optimization,
306
- minSize,
307
- maxSize,
308
- maxChunks,
309
- cacheGroups)
317
+ generateWebpackConfig(): string {
318
+ const config = {
319
+ optimization: {
320
+ splitChunks: {
321
+ chunks: 'all',
322
+ minSize: this.config.minChunkSize,
323
+ maxSize: this.config.chunkSize,
324
+ maxChunks: this.config.maxChunks,
325
+ cacheGroups: this.generateWebpackCacheGroups()
310
326
  }
311
327
  }
312
328
  };
@@ -315,23 +331,25 @@ export class BundleSplitter {
315
331
  }
316
332
 
317
333
  // Generate webpack cache groups
318
- private generateWebpackCacheGroups(), any> {
319
- const cacheGroups, any> = {};
334
+ private generateWebpackCacheGroups(): Record<string, any> {
335
+ const cacheGroups: Record<string, any> = {};
320
336
 
321
337
  if (this.config.vendorChunk) {
322
338
  cacheGroups.vendor = {
323
- test]node_modules[\\/]/,
324
- name,
325
- chunks,
326
- priority};
339
+ test: /[\\/]node_modules[\\/]/,
340
+ name: 'vendor',
341
+ chunks: 'all',
342
+ priority: 10
343
+ };
327
344
  }
328
345
 
329
346
  if (this.config.commonChunk) {
330
347
  cacheGroups.common = {
331
- name,
332
- minChunks,
333
- chunks,
334
- priority};
348
+ name: 'common',
349
+ minChunks: 2,
350
+ chunks: 'all',
351
+ priority: 5
352
+ };
335
353
  }
336
354
 
337
355
  // Add custom cache groups from config
@@ -341,8 +359,8 @@ export class BundleSplitter {
341
359
  }
342
360
 
343
361
  // Generate dynamic import patterns for code splitting
344
- generateDynamicImports()] {
345
- const patterns] = [];
362
+ generateDynamicImports(): string[] {
363
+ const patterns: string[] = [];
346
364
 
347
365
  if (this.config.asyncChunk) {
348
366
  patterns.push(
@@ -363,8 +381,8 @@ export class BundleSplitter {
363
381
  }
364
382
 
365
383
  // Generate preload strategies
366
- generatePreloadStrategies()] {
367
- const strategies] = [];
384
+ generatePreloadStrategies(): string[] {
385
+ const strategies: string[] = [];
368
386
 
369
387
  if (this.config.preloadChunks) {
370
388
  strategies.push(
@@ -381,7 +399,7 @@ export class BundleSplitter {
381
399
  "};",
382
400
  "",
383
401
  "// Preload on route change",
384
- "const preloadRouteChunk = (route) => {",
402
+ "const preloadRouteChunk = (route: string) => {",
385
403
  " const link = document.createElement('link');",
386
404
  " link.rel = 'prefetch';",
387
405
  " link.as = 'script';",
@@ -395,18 +413,19 @@ export class BundleSplitter {
395
413
  }
396
414
 
397
415
  // Get bundle splitting statistics
398
- getStatistics(chunks]);
399
- totalGzippedSize;
400
- chunkCount;
401
- averageChunkSize;
402
- vendorChunkCount;
403
- asyncChunkCount;
404
- commonChunkCount;
405
- optimizationScore;
416
+ getStatistics(chunks: ChunkAnalysis[]): {
417
+ totalSize: number;
418
+ totalGzippedSize: number;
419
+ chunkCount: number;
420
+ averageChunkSize: number;
421
+ vendorChunkCount: number;
422
+ asyncChunkCount: number;
423
+ commonChunkCount: number;
424
+ optimizationScore: number;
406
425
  } {
407
426
  const totalSize = chunks.reduce((sum, chunk) => sum + chunk.size, 0);
408
427
  const totalGzippedSize = chunks.reduce((sum, chunk) => sum + chunk.gzippedSize, 0);
409
- const averageChunkSize = chunks.length > 0 ? totalSize / chunks.length ;
428
+ const averageChunkSize = chunks.length > 0 ? totalSize / chunks.length : 0;
410
429
  const vendorChunkCount = chunks.filter(chunk => chunk.vendor).length;
411
430
  const asyncChunkCount = chunks.filter(chunk => chunk.async).length;
412
431
  const commonChunkCount = chunks.filter(chunk => chunk.common).length;
@@ -415,7 +434,7 @@ export class BundleSplitter {
415
434
  return {
416
435
  totalSize,
417
436
  totalGzippedSize,
418
- chunkCount,
437
+ chunkCount: chunks.length,
419
438
  averageChunkSize,
420
439
  vendorChunkCount,
421
440
  asyncChunkCount,
@@ -425,7 +444,8 @@ export class BundleSplitter {
425
444
  }
426
445
 
427
446
  // Export bundle splitting analysis
428
- exportAnalysis(chunks])= this.generateRecommendations(chunks);
447
+ exportAnalysis(chunks: ChunkAnalysis[]): string {
448
+ const recommendations = this.generateRecommendations(chunks);
429
449
  const statistics = this.getStatistics(chunks);
430
450
  const viteConfig = this.generateViteConfig();
431
451
  const webpackConfig = this.generateWebpackConfig();
@@ -436,21 +456,26 @@ export class BundleSplitter {
436
456
  chunks,
437
457
  statistics,
438
458
  recommendations,
439
- configurations,
440
- webpack},
441
- codeSplitting,
459
+ configurations: {
460
+ vite: viteConfig,
461
+ webpack: webpackConfig
462
+ },
463
+ codeSplitting: {
464
+ dynamicImports,
442
465
  preloadStrategies
443
466
  },
444
- timestamp).toISOString()
467
+ timestamp: new Date().toISOString()
445
468
  }, null, 2);
446
469
  }
447
470
 
448
471
  // Update configuration
449
- updateConfig(newConfig)= { ...this.config, ...newConfig };
472
+ updateConfig(newConfig: Partial<BundleSplitConfig>): void {
473
+ this.config = { ...this.config, ...newConfig };
450
474
  }
451
475
 
452
476
  // Get current configuration
453
- getConfig()};
477
+ getConfig(): BundleSplitConfig {
478
+ return { ...this.config };
454
479
  }
455
480
  }
456
481