@coherent.js/core 1.0.0-beta.2

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +130 -0
  3. package/dist/coherent.d.ts +472 -0
  4. package/dist/coherent.d.ts.map +1 -0
  5. package/dist/coherent.js +590 -0
  6. package/dist/coherent.js.map +1 -0
  7. package/dist/components/component-system.d.ts +1138 -0
  8. package/dist/components/component-system.d.ts.map +1 -0
  9. package/dist/components/component-system.js +2220 -0
  10. package/dist/components/component-system.js.map +1 -0
  11. package/dist/components/lifecycle.d.ts +212 -0
  12. package/dist/components/lifecycle.d.ts.map +1 -0
  13. package/dist/components/lifecycle.js +525 -0
  14. package/dist/components/lifecycle.js.map +1 -0
  15. package/dist/core/html-utils.d.ts +14 -0
  16. package/dist/core/html-utils.d.ts.map +1 -0
  17. package/dist/core/html-utils.js +166 -0
  18. package/dist/core/html-utils.js.map +1 -0
  19. package/dist/core/object-factory.d.ts +38 -0
  20. package/dist/core/object-factory.d.ts.map +1 -0
  21. package/dist/core/object-factory.js +63 -0
  22. package/dist/core/object-factory.js.map +1 -0
  23. package/dist/core/object-utils.d.ts +77 -0
  24. package/dist/core/object-utils.d.ts.map +1 -0
  25. package/dist/core/object-utils.js +502 -0
  26. package/dist/core/object-utils.js.map +1 -0
  27. package/dist/dev/dev-tools.d.ts +194 -0
  28. package/dist/dev/dev-tools.d.ts.map +1 -0
  29. package/dist/dev/dev-tools.js +846 -0
  30. package/dist/dev/dev-tools.js.map +1 -0
  31. package/dist/forms/validation.d.ts +271 -0
  32. package/dist/forms/validation.d.ts.map +1 -0
  33. package/dist/forms/validation.js +573 -0
  34. package/dist/forms/validation.js.map +1 -0
  35. package/dist/index.cjs +5281 -0
  36. package/dist/index.cjs.map +7 -0
  37. package/dist/index.js +5204 -0
  38. package/dist/index.js.map +7 -0
  39. package/dist/performance/bundle-optimizer.d.ts +95 -0
  40. package/dist/performance/bundle-optimizer.d.ts.map +1 -0
  41. package/dist/performance/bundle-optimizer.js +192 -0
  42. package/dist/performance/bundle-optimizer.js.map +1 -0
  43. package/dist/performance/cache-manager.d.ts +107 -0
  44. package/dist/performance/cache-manager.d.ts.map +1 -0
  45. package/dist/performance/cache-manager.js +314 -0
  46. package/dist/performance/cache-manager.js.map +1 -0
  47. package/dist/performance/component-cache.d.ts +120 -0
  48. package/dist/performance/component-cache.d.ts.map +1 -0
  49. package/dist/performance/component-cache.js +364 -0
  50. package/dist/performance/component-cache.js.map +1 -0
  51. package/dist/performance/monitor.d.ts +189 -0
  52. package/dist/performance/monitor.d.ts.map +1 -0
  53. package/dist/performance/monitor.js +347 -0
  54. package/dist/performance/monitor.js.map +1 -0
  55. package/dist/rendering/base-renderer.d.ts +140 -0
  56. package/dist/rendering/base-renderer.d.ts.map +1 -0
  57. package/dist/rendering/base-renderer.js +409 -0
  58. package/dist/rendering/base-renderer.js.map +1 -0
  59. package/dist/rendering/css-manager.d.ts +73 -0
  60. package/dist/rendering/css-manager.d.ts.map +1 -0
  61. package/dist/rendering/css-manager.js +176 -0
  62. package/dist/rendering/css-manager.js.map +1 -0
  63. package/dist/rendering/dom-renderer.d.ts +62 -0
  64. package/dist/rendering/dom-renderer.d.ts.map +1 -0
  65. package/dist/rendering/dom-renderer.js +252 -0
  66. package/dist/rendering/dom-renderer.js.map +1 -0
  67. package/dist/rendering/html-renderer.d.ts +67 -0
  68. package/dist/rendering/html-renderer.d.ts.map +1 -0
  69. package/dist/rendering/html-renderer.js +444 -0
  70. package/dist/rendering/html-renderer.js.map +1 -0
  71. package/dist/rendering/renderer-config.d.ts +282 -0
  72. package/dist/rendering/renderer-config.d.ts.map +1 -0
  73. package/dist/rendering/renderer-config.js +144 -0
  74. package/dist/rendering/renderer-config.js.map +1 -0
  75. package/dist/rendering/streaming-renderer.d.ts +117 -0
  76. package/dist/rendering/streaming-renderer.d.ts.map +1 -0
  77. package/dist/rendering/streaming-renderer.js +326 -0
  78. package/dist/rendering/streaming-renderer.js.map +1 -0
  79. package/dist/rendering/vdom-diff.d.ts +47 -0
  80. package/dist/rendering/vdom-diff.d.ts.map +1 -0
  81. package/dist/rendering/vdom-diff.js +416 -0
  82. package/dist/rendering/vdom-diff.js.map +1 -0
  83. package/dist/routing/router.d.ts +241 -0
  84. package/dist/routing/router.d.ts.map +1 -0
  85. package/dist/routing/router.js +648 -0
  86. package/dist/routing/router.js.map +1 -0
  87. package/dist/state/reactive-state.d.ts +166 -0
  88. package/dist/state/reactive-state.d.ts.map +1 -0
  89. package/dist/state/reactive-state.js +546 -0
  90. package/dist/state/reactive-state.js.map +1 -0
  91. package/dist/state/state-manager.d.ts +45 -0
  92. package/dist/state/state-manager.d.ts.map +1 -0
  93. package/dist/state/state-manager.js +151 -0
  94. package/dist/state/state-manager.js.map +1 -0
  95. package/dist/types/constants.d.ts +8 -0
  96. package/dist/types/constants.d.ts.map +1 -0
  97. package/dist/types/constants.js +36 -0
  98. package/dist/types/constants.js.map +1 -0
  99. package/dist/utils/dependency-utils.d.ts +43 -0
  100. package/dist/utils/dependency-utils.d.ts.map +1 -0
  101. package/dist/utils/dependency-utils.js +105 -0
  102. package/dist/utils/dependency-utils.js.map +1 -0
  103. package/dist/utils/error-handler.d.ts +148 -0
  104. package/dist/utils/error-handler.d.ts.map +1 -0
  105. package/dist/utils/error-handler.js +468 -0
  106. package/dist/utils/error-handler.js.map +1 -0
  107. package/dist/utils/normalization.d.ts +3 -0
  108. package/dist/utils/normalization.d.ts.map +1 -0
  109. package/dist/utils/normalization.js +24 -0
  110. package/dist/utils/normalization.js.map +1 -0
  111. package/dist/utils/validation.d.ts +10 -0
  112. package/dist/utils/validation.d.ts.map +1 -0
  113. package/dist/utils/validation.js +32 -0
  114. package/dist/utils/validation.js.map +1 -0
  115. package/package.json +44 -0
  116. package/types/index.d.ts +734 -0
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Real-time performance monitoring and metrics collection
3
+ */
4
+ import { createCacheManager, cacheManager as globalCache } from './cache-manager.js';
5
+ // Create a dedicated cache instance for monitoring
6
+ const monitorCache = createCacheManager({
7
+ maxSize: 1000,
8
+ ttlMs: 300000 // 5 minutes
9
+ });
10
+ export class PerformanceMonitor {
11
+ constructor() {
12
+ this.metrics = {
13
+ renderTimes: [],
14
+ componentCounts: new Map(),
15
+ memoryUsage: [],
16
+ cachePerformance: [],
17
+ errors: []
18
+ };
19
+ this.startTime = Date.now();
20
+ this.isMonitoring = false;
21
+ }
22
+ start() {
23
+ this.isMonitoring = true;
24
+ this.collectSystemMetrics();
25
+ console.log('🚀 Performance monitoring started');
26
+ }
27
+ stop() {
28
+ this.isMonitoring = false;
29
+ console.log('⏹️ Performance monitoring stopped');
30
+ return this.generateReport();
31
+ }
32
+ // Measure render performance
33
+ measureRender(component, props, renderFn) {
34
+ const startTime = process.hrtime.bigint();
35
+ const startMemory = process.memoryUsage();
36
+ try {
37
+ const result = renderFn(component, _props);
38
+ const endTime = process.hrtime.bigint();
39
+ const endMemory = process.memoryUsage();
40
+ const renderTimeMs = Number(endTime - startTime) / 1000000;
41
+ const memoryDelta = endMemory.heapUsed - startMemory.heapUsed;
42
+ this.recordRenderMetric({
43
+ component: this.getComponentName(component),
44
+ renderTime: renderTimeMs,
45
+ memoryDelta,
46
+ resultSize: typeof result === 'string' ? result.length : 0
47
+ });
48
+ return result;
49
+ }
50
+ catch (error) {
51
+ this.recordError(error, component);
52
+ throw error;
53
+ }
54
+ }
55
+ recordRenderMetric(metric) {
56
+ this.metrics.renderTimes.push({
57
+ ...metric,
58
+ timestamp: Date.now()
59
+ });
60
+ // Update component usage stats
61
+ const current = this.metrics.componentCounts.get(metric.component) || 0;
62
+ this.metrics.componentCounts.set(metric.component, current + 1);
63
+ // Keep only recent metrics
64
+ if (this.metrics.renderTimes.length > 1000) {
65
+ this.metrics.renderTimes = this.metrics.renderTimes.slice(-1000);
66
+ }
67
+ }
68
+ recordError(error, component) {
69
+ this.metrics.errors.push({
70
+ error: error.message,
71
+ component: this.getComponentName(component),
72
+ stack: error.stack,
73
+ timestamp: Date.now()
74
+ });
75
+ }
76
+ collectSystemMetrics() {
77
+ if (!this.isMonitoring)
78
+ return;
79
+ const memUsage = process.memoryUsage();
80
+ this.metrics.memoryUsage.push({
81
+ timestamp: Date.now(),
82
+ heapUsed: memUsage.heapUsed,
83
+ heapTotal: memUsage.heapTotal,
84
+ external: memUsage.external,
85
+ rss: memUsage.rss
86
+ });
87
+ // Get cache stats if available
88
+ if (monitorCache) {
89
+ const cacheStats = monitorCache.getStats();
90
+ this.metrics.cachePerformance.push({
91
+ timestamp: Date.now(),
92
+ ...cacheStats
93
+ });
94
+ }
95
+ // Keep only recent system metrics
96
+ if (this.metrics.memoryUsage.length > 100) {
97
+ this.metrics.memoryUsage = this.metrics.memoryUsage.slice(-100);
98
+ }
99
+ setTimeout(() => this.collectSystemMetrics(), 5000); // Every 5 seconds
100
+ }
101
+ getComponentName(component) {
102
+ if (typeof component === 'function') {
103
+ return component.name || 'AnonymousFunction';
104
+ }
105
+ if (typeof component === 'object' && component) {
106
+ const keys = Object.keys(component);
107
+ return keys.length > 0 ? keys[0] : 'EmptyObject';
108
+ }
109
+ return 'Unknown';
110
+ }
111
+ generateReport() {
112
+ const now = Date.now();
113
+ const uptimeMs = now - this.startTime;
114
+ return {
115
+ summary: {
116
+ uptime: `${(uptimeMs / 1000).toFixed(2)}s`,
117
+ totalRenders: this.metrics.renderTimes.length,
118
+ averageRenderTime: this.calculateAverageRenderTime(),
119
+ errorRate: this.calculateErrorRate(),
120
+ memoryEfficiency: this.calculateMemoryEfficiency()
121
+ },
122
+ performance: {
123
+ renderTimes: this.getRenderTimeStats(),
124
+ topComponents: this.getTopComponentsByUsage(),
125
+ slowestComponents: this.getSlowestComponents(),
126
+ memoryTrends: this.getMemoryTrends()
127
+ },
128
+ caching: globalCache.getStats(),
129
+ recommendations: this.generatePerformanceRecommendations(),
130
+ rawMetrics: {
131
+ recentRenders: this.metrics.renderTimes.slice(-50),
132
+ recentErrors: this.metrics.errors.slice(-10),
133
+ memorySnapshots: this.metrics.memoryUsage.slice(-20)
134
+ }
135
+ };
136
+ }
137
+ calculateAverageRenderTime() {
138
+ if (this.metrics.renderTimes.length === 0)
139
+ return 0;
140
+ const total = this.metrics.renderTimes.reduce((sum, metric) => sum + metric.renderTime, 0);
141
+ return (total / this.metrics.renderTimes.length).toFixed(2);
142
+ }
143
+ calculateErrorRate() {
144
+ const totalOperations = this.metrics.renderTimes.length + this.metrics.errors.length;
145
+ if (totalOperations === 0)
146
+ return 0;
147
+ return ((this.metrics.errors.length / totalOperations) * 100).toFixed(2);
148
+ }
149
+ calculateMemoryEfficiency() {
150
+ if (this.metrics.memoryUsage.length < 2)
151
+ return 'N/A';
152
+ const recent = this.metrics.memoryUsage.slice(-10);
153
+ const first = recent[0];
154
+ const last = recent[recent.length - 1];
155
+ // Calculate growth over the recent time period
156
+ const totalGrowth = last.heapUsed - first.heapUsed;
157
+ const timeSpanMs = last.timestamp - first.timestamp;
158
+ const recentRenderCount = this.metrics.renderTimes.filter(r => r.timestamp >= first.timestamp && r.timestamp <= last.timestamp).length;
159
+ if (recentRenderCount === 0)
160
+ return 'N/A';
161
+ const growthPerRender = totalGrowth / recentRenderCount;
162
+ // Convert to KB for readability
163
+ const growthKB = (growthPerRender / 1024).toFixed(2);
164
+ if (Math.abs(growthPerRender) < 1024) {
165
+ return 'Excellent (< 1KB/render in 10s)';
166
+ }
167
+ else if (Math.abs(growthPerRender) < 10240) {
168
+ return `Good (${growthKB}KB/render in ${timeSpanMs}ms)`;
169
+ }
170
+ else if (Math.abs(growthPerRender) < 102400) {
171
+ return `Fair (${growthKB}KB/render in ${timeSpanMs}ms)`;
172
+ }
173
+ else {
174
+ return `Poor (${growthKB}KB/render in ${timeSpanMs}ms)`;
175
+ }
176
+ }
177
+ getRenderTimeStats() {
178
+ if (this.metrics.renderTimes.length === 0)
179
+ return {};
180
+ const times = this.metrics.renderTimes.map(m => m.renderTime).sort((a, b) => a - b);
181
+ return {
182
+ min: times[0].toFixed(2),
183
+ max: times[times.length - 1].toFixed(2),
184
+ median: times[Math.floor(times.length / 2)].toFixed(2),
185
+ p95: times[Math.floor(times.length * 0.95)].toFixed(2),
186
+ p99: times[Math.floor(times.length * 0.99)].toFixed(2)
187
+ };
188
+ }
189
+ getTopComponentsByUsage(limit = 10) {
190
+ return Array.from(this.metrics.componentCounts.entries())
191
+ .sort(([, a], [, b]) => b - a)
192
+ .slice(0, limit)
193
+ .map(([component, count]) => ({ component, count }));
194
+ }
195
+ getSlowestComponents(limit = 10) {
196
+ const componentTimes = new Map();
197
+ for (const metric of this.metrics.renderTimes) {
198
+ const existing = componentTimes.get(metric.component) || [];
199
+ existing.push(metric.renderTime);
200
+ componentTimes.set(metric.component, existing);
201
+ }
202
+ return Array.from(componentTimes.entries())
203
+ .map(([component, times]) => ({
204
+ component,
205
+ avgTime: (times.reduce((a, b) => a + b, 0) / times.length).toFixed(2),
206
+ maxTime: Math.max(...times).toFixed(2),
207
+ count: times.length
208
+ }))
209
+ .sort((a, b) => parseFloat(b.avgTime) - parseFloat(a.avgTime))
210
+ .slice(0, limit);
211
+ }
212
+ getMemoryTrends() {
213
+ if (this.metrics.memoryUsage.length < 2)
214
+ return {};
215
+ const recent = this.metrics.memoryUsage.slice(-20);
216
+ const trend = this.calculateTrend(recent.map(m => m.heapUsed));
217
+ return {
218
+ direction: trend > 0 ? 'increasing' : trend < 0 ? 'decreasing' : 'stable',
219
+ rate: `${Math.abs(trend).toFixed(2)} bytes/second`,
220
+ currentHeap: `${(recent[recent.length - 1].heapUsed / 1024 / 1024).toFixed(2)}MB`,
221
+ trend: trend
222
+ };
223
+ }
224
+ generatePerformanceRecommendations() {
225
+ const recommendations = [];
226
+ const avgRenderTime = parseFloat(this.calculateAverageRenderTime());
227
+ if (avgRenderTime > 10) {
228
+ recommendations.push({
229
+ priority: 'high',
230
+ issue: 'High average render time',
231
+ suggestion: 'Enable caching for frequently rendered components',
232
+ impact: 'Could reduce render time by 70-90%'
233
+ });
234
+ }
235
+ const errorRate = parseFloat(this.calculateErrorRate());
236
+ if (errorRate > 5) {
237
+ recommendations.push({
238
+ priority: 'high',
239
+ issue: 'High error rate',
240
+ suggestion: 'Review component validation and error handling',
241
+ impact: 'Improve stability and user experience'
242
+ });
243
+ }
244
+ const memTrends = this.getMemoryTrends();
245
+ if (memTrends.direction === 'increasing' && memTrends.trend > 1000000) {
246
+ recommendations.push({
247
+ priority: 'medium',
248
+ issue: 'Memory usage increasing',
249
+ suggestion: 'Check for memory leaks, implement cleanup for cached objects',
250
+ impact: 'Prevent out-of-memory errors in production'
251
+ });
252
+ }
253
+ const topComponents = this.getTopComponentsByUsage(5);
254
+ const hotComponents = topComponents.filter(c => c.count > this.metrics.renderTimes.length * 0.1);
255
+ // Filter out components that are already static cached
256
+ const uncachedHotComponents = hotComponents.filter(c => {
257
+ return !this.staticCachedComponents || !this.staticCachedComponents.has(c.component);
258
+ });
259
+ if (uncachedHotComponents.length > 0) {
260
+ recommendations.push({
261
+ priority: 'medium',
262
+ issue: 'High frequency components detected',
263
+ suggestion: `Consider static caching for: ${uncachedHotComponents.map(c => c.component).join(', ')}`,
264
+ impact: 'Significant performance improvement for hot paths'
265
+ });
266
+ }
267
+ else if (hotComponents.length > 0) {
268
+ // All hot components are already static cached - provide positive feedback
269
+ recommendations.push({
270
+ priority: 'low',
271
+ issue: 'Hot components optimized',
272
+ suggestion: `Static caching active for: ${hotComponents.map(c => c.component).join(', ')}`,
273
+ impact: 'Excellent performance optimization already implemented'
274
+ });
275
+ }
276
+ return recommendations;
277
+ }
278
+ calculateTrend(values) {
279
+ if (values.length < 2)
280
+ return 0;
281
+ const n = values.length;
282
+ const sumX = (n * (n - 1)) / 2;
283
+ const sumY = values.reduce((a, b) => a + b, 0);
284
+ const sumXY = values.reduce((sum, y, x) => sum + x * y, 0);
285
+ const sumXX = (n * (n - 1) * (2 * n - 1)) / 6;
286
+ return (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
287
+ }
288
+ // Real-time monitoring interface
289
+ getRealtimeStats() {
290
+ const recent = this.metrics.renderTimes.slice(-10);
291
+ const recentMemory = this.metrics.memoryUsage.slice(-3);
292
+ return {
293
+ currentRenderRate: recent.length > 0 ? `${(recent.length / 10).toFixed(1)}/s` : '0/s',
294
+ avgRecentRenderTime: recent.length > 0
295
+ ? `${(recent.reduce((sum, m) => sum + m.renderTime, 0) / recent.length).toFixed(2)}ms`
296
+ : '0ms',
297
+ memoryUsage: recentMemory.length > 0
298
+ ? `${(recentMemory[recentMemory.length - 1].heapUsed / 1024 / 1024).toFixed(2)}MB`
299
+ : '0MB',
300
+ cacheHitRate: globalCache.getStats().hitRate,
301
+ activeComponents: this.metrics.componentCounts.size
302
+ };
303
+ }
304
+ /**
305
+ * Record component render performance
306
+ */
307
+ recordRender(componentName, startTime, endTime, metadata = {}) {
308
+ if (!this.enabled)
309
+ return;
310
+ const renderTime = endTime - startTime;
311
+ const renderData = {
312
+ component: componentName,
313
+ duration: renderTime,
314
+ timestamp: Date.now(),
315
+ ...metadata
316
+ };
317
+ // Store render time
318
+ this.renderTimes.push(renderData);
319
+ // Update component stats
320
+ if (!this.componentStats.has(componentName)) {
321
+ this.componentStats.set(componentName, {
322
+ renders: 0,
323
+ totalTime: 0,
324
+ avgTime: 0,
325
+ minTime: Infinity,
326
+ maxTime: 0
327
+ });
328
+ }
329
+ const stats = this.componentStats.get(componentName);
330
+ stats.renders++;
331
+ stats.totalTime += renderTime;
332
+ stats.avgTime = stats.totalTime / stats.renders;
333
+ stats.minTime = Math.min(stats.minTime, renderTime);
334
+ stats.maxTime = Math.max(stats.maxTime, renderTime);
335
+ // Cleanup old data (keep last 1000 renders)
336
+ if (this.renderTimes.length > 1000) {
337
+ this.renderTimes = this.renderTimes.slice(-1000);
338
+ }
339
+ // Warning for slow renders
340
+ if (renderTime > this.thresholds.renderTime) {
341
+ console.warn(`Slow render detected: ${componentName} took ${renderTime.toFixed(2)}ms`);
342
+ }
343
+ }
344
+ }
345
+ // Global monitor instance
346
+ export const performanceMonitor = new PerformanceMonitor();
347
+ //# sourceMappingURL=monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../../src/performance/monitor.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ export namespace DEFAULT_RENDERER_CONFIG {
2
+ let maxDepth: number;
3
+ let enableValidation: boolean;
4
+ let enableMonitoring: boolean;
5
+ let validateInput: boolean;
6
+ let enableCache: boolean;
7
+ let minify: boolean;
8
+ let cacheSize: number;
9
+ let cacheTTL: number;
10
+ let chunkSize: number;
11
+ let bufferSize: number;
12
+ let enableMetrics: boolean;
13
+ let yieldThreshold: number;
14
+ let encoding: string;
15
+ let enableHydration: boolean;
16
+ let namespace: null;
17
+ let enablePerformanceTracking: boolean;
18
+ let performanceThreshold: number;
19
+ let enableDevWarnings: boolean;
20
+ let enableDebugLogging: boolean;
21
+ let errorFallback: string;
22
+ let throwOnError: boolean;
23
+ }
24
+ /**
25
+ * Base renderer class with common functionality
26
+ */
27
+ export class BaseRenderer {
28
+ constructor(options?: {});
29
+ config: any;
30
+ metrics: {
31
+ startTime: null;
32
+ endTime: null;
33
+ elementsProcessed: number;
34
+ };
35
+ /**
36
+ * Validate and merge configuration options
37
+ */
38
+ validateAndMergeConfig(options: any): any;
39
+ /**
40
+ * Get configuration for specific renderer type
41
+ */
42
+ getRendererConfig(rendererType: any): any;
43
+ /**
44
+ * Validate component structure
45
+ */
46
+ validateComponent(component: any): boolean;
47
+ /**
48
+ * Check if component is valid for rendering
49
+ */
50
+ isValidComponent(component: any): any;
51
+ /**
52
+ * Validate rendering depth to prevent stack overflow
53
+ */
54
+ validateDepth(depth: any): void;
55
+ /**
56
+ * Handle different component types with consistent logic
57
+ */
58
+ processComponentType(component: any): {
59
+ type: string;
60
+ value: any;
61
+ };
62
+ /**
63
+ * Execute function components with error handling
64
+ */
65
+ executeFunctionComponent(func: any, depth?: number): any;
66
+ /**
67
+ * Process element children consistently
68
+ */
69
+ processChildren(children: any, options: any, depth: any): void[];
70
+ /**
71
+ * Extract and process element attributes
72
+ */
73
+ extractElementAttributes(props: any): any;
74
+ /**
75
+ * Record performance metrics
76
+ */
77
+ recordPerformance(operation: any, startTime: any, fromCache?: boolean, metadata?: {}): void;
78
+ /**
79
+ * Record error for monitoring
80
+ */
81
+ recordError(operation: any, error: any, metadata?: {}): void;
82
+ /**
83
+ * Get current timestamp with fallback
84
+ */
85
+ getCurrentTime(): number;
86
+ /**
87
+ * Start performance timing
88
+ */
89
+ startTiming(): void;
90
+ /**
91
+ * End performance timing
92
+ */
93
+ endTiming(): void;
94
+ /**
95
+ * Get performance metrics
96
+ */
97
+ getMetrics(): {
98
+ duration: number;
99
+ elementsPerSecond: number;
100
+ startTime: null;
101
+ endTime: null;
102
+ elementsProcessed: number;
103
+ };
104
+ /**
105
+ * Reset metrics for new render
106
+ */
107
+ resetMetrics(): void;
108
+ /**
109
+ * Abstract method - must be implemented by subclasses
110
+ */
111
+ renderComponent(): void;
112
+ /**
113
+ * Abstract method - must be implemented by subclasses
114
+ */
115
+ render(): void;
116
+ }
117
+ export namespace RendererUtils {
118
+ /**
119
+ * Check if element is static (no functions)
120
+ */
121
+ function isStaticElement(element: any): any;
122
+ /**
123
+ * Check if object has functions (for caching decisions)
124
+ */
125
+ function hasFunctions(obj: any, visited?: WeakSet<object>): boolean;
126
+ /**
127
+ * Get element complexity score
128
+ */
129
+ function getElementComplexity(element: any): number;
130
+ /**
131
+ * Generate cache key for element
132
+ */
133
+ function generateCacheKey(tagName: any, element: any): string | null;
134
+ /**
135
+ * Check if element is cacheable
136
+ */
137
+ function isCacheable(element: any, options: any): boolean;
138
+ }
139
+ export default BaseRenderer;
140
+ //# sourceMappingURL=base-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-renderer.d.ts","sourceRoot":"","sources":["../../../../src/rendering/base-renderer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyDA;;GAEG;AACH;IACI,0BAOC;IANG,YAAkD;IAClD;;;;MAIC;IAGL;;OAEG;IACH,0CAqCC;IAED;;OAEG;IACH,0CA8BC;IAED;;OAEG;IACH,2CAKC;IAED;;OAEG;IACH,sCAOC;IAED;;OAEG;IACH,gCAIC;IAED;;OAEG;IACH;;;MAiCC;IAED;;OAEG;IACH,yDAkCC;IAED;;OAEG;IACH,iEASC;IAED;;OAEG;IACH,0CAOC;IAED;;OAEG;IACH,4FASC;IAED;;OAEG;IACH,6DAIC;IAED;;OAEG;IACH,yBAKC;IAED;;OAEG;IACH,oBAEC;IAED;;OAEG;IACH,kBAEC;IAED;;OAEG;IACH;;;;;;MAUC;IAED;;OAEG;IACH,qBAMC;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,eAEC;CACJ;;IAMG;;OAEG;IACH,4CAoBC;IAED;;OAEG;IACH,oEAWC;IAED;;OAEG;IACH,oDAaC;IAED;;OAEG;IACH,qEAmBC;IAED;;OAEG;IACH,0DAeC"}