@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,444 @@
1
+ /**
2
+ * High-performance HTML renderer with caching, monitoring, and streaming support
3
+ * Converts object-based components to HTML strings with advanced optimizations
4
+ */
5
+ import { BaseRenderer, RendererUtils } from './base-renderer.js';
6
+ import { hasChildren, normalizeChildren, } from '../core/object-utils.js';
7
+ import { escapeHtml, isVoidElement, formatAttributes, minifyHtml } from '../core/html-utils.js';
8
+ import { performanceMonitor } from '../performance/monitor.js';
9
+ import { createCacheManager } from '../performance/cache-manager.js';
10
+ import { cssUtils, defaultCSSManager } from './css-manager.js';
11
+ // Create a global cache instance for the renderer
12
+ const rendererCache = createCacheManager({
13
+ maxSize: 1000,
14
+ ttlMs: 300000 // 5 minutes
15
+ });
16
+ /**
17
+ * HTML Renderer Class extending BaseRenderer
18
+ *
19
+ * @class HTMLRenderer
20
+ * @extends BaseRenderer
21
+ * @description High-performance HTML renderer with caching, monitoring, and streaming support.
22
+ * Converts object-based components to HTML strings with advanced optimizations.
23
+ *
24
+ * @param {Object} [options={}] - Renderer configuration options
25
+ * @param {boolean} [options.enableCache=true] - Enable component caching
26
+ * @param {boolean} [options.enableMonitoring=true] - Enable performance monitoring
27
+ * @param {boolean} [options.minify=false] - Enable HTML minification
28
+ * @param {boolean} [options.streaming=false] - Enable streaming mode
29
+ * @param {number} [options.maxDepth=100] - Maximum rendering depth
30
+ * @param {number} [options.cacheSize=1000] - Cache size limit
31
+ * @param {number} [options.cacheTTL=300000] - Cache TTL in milliseconds
32
+ *
33
+ * @example
34
+ * const renderer = new HTMLRenderer({
35
+ * enableCache: true,
36
+ * enableMonitoring: true,
37
+ * minify: true
38
+ * });
39
+ *
40
+ * const html = renderer.render({ div: { text: 'Hello World' } });
41
+ */
42
+ class HTMLRenderer extends BaseRenderer {
43
+ constructor(options = {}) {
44
+ super({
45
+ enableCache: options.enableCache !== false,
46
+ enableMonitoring: options.enableMonitoring !== false,
47
+ minify: options.minify || false,
48
+ streaming: options.streaming || false,
49
+ maxDepth: options.maxDepth || 100,
50
+ ...options
51
+ });
52
+ // Initialize cache if enabled
53
+ if (this.config.enableCache && !this.cache) {
54
+ this.cache = rendererCache;
55
+ }
56
+ }
57
+ /**
58
+ * Main render method - converts components to HTML string
59
+ *
60
+ * @param {Object|Array|string|Function} component - Component to render
61
+ * @param {Object} [options={}] - Rendering options
62
+ * @param {Object} [options.context] - Rendering context
63
+ * @param {boolean} [options.enableCache] - Override cache setting
64
+ * @param {number} [options.depth=0] - Current rendering depth
65
+ * @returns {string} Rendered HTML string
66
+ *
67
+ * @example
68
+ * const html = renderer.render({
69
+ * div: {
70
+ * className: 'container',
71
+ * children: [
72
+ * { h1: { text: 'Title' } },
73
+ * { p: { text: 'Content' } }
74
+ * ]
75
+ * }
76
+ * });
77
+ */
78
+ render(component, options = {}) {
79
+ const _config = { ...this.config, ...options };
80
+ this.startTiming();
81
+ try {
82
+ // Input validation
83
+ if (config.validateInput && !this.isValidComponent(component)) {
84
+ throw new Error('Invalid component structure');
85
+ }
86
+ // Main rendering logic
87
+ const html = this.renderComponent(component, config, 0);
88
+ const finalHtml = config.minify ? minifyHtml(html, config) : html;
89
+ // Performance monitoring
90
+ this.endTiming();
91
+ this.recordPerformance('renderToString', this.metrics.startTime, false, {
92
+ cacheEnabled: config.enableCache
93
+ });
94
+ return finalHtml;
95
+ }
96
+ catch (error) {
97
+ this.recordError('renderToString', error);
98
+ throw error;
99
+ }
100
+ }
101
+ /**
102
+ * Render a single component with full optimization pipeline
103
+ */
104
+ renderComponent(component, options, depth = 0) {
105
+ // Use base class depth validation
106
+ this.validateDepth(depth);
107
+ // Use base class component type processing
108
+ const { type, value } = this.processComponentType(component);
109
+ switch (type) {
110
+ case 'empty':
111
+ return '';
112
+ case 'text':
113
+ return escapeHtml(value);
114
+ case 'function':
115
+ const result = this.executeFunctionComponent(value, depth);
116
+ return this.renderComponent(result, options, depth + 1);
117
+ case 'array':
118
+ return value.map(child => this.renderComponent(child, options, depth + 1)).join('');
119
+ case 'element':
120
+ // Process object-based component
121
+ const tagName = Object.keys(value)[0];
122
+ const elementContent = value[tagName];
123
+ return this.renderElement(tagName, elementContent, options, depth);
124
+ default:
125
+ this.recordError('renderComponent', new Error(`Unknown component type: ${type}`));
126
+ return '';
127
+ }
128
+ }
129
+ /**
130
+ * Render an HTML element with advanced caching and optimization
131
+ */
132
+ renderElement(tagName, element, options, depth = 0) {
133
+ const startTime = performance.now();
134
+ // Track element usage for performance analysis (via stats in the new cache manager)
135
+ if (options.enableMonitoring && this.cache) {
136
+ // The new cache manager tracks usage automatically via get/set operations
137
+ }
138
+ // Check cache first for static elements
139
+ if (options.enableCache && this.cache && RendererUtils.isStaticElement(element)) {
140
+ const cacheKey = `static:${tagName}:${JSON.stringify(element)}`;
141
+ const cached = this.cache.get('static', cacheKey);
142
+ if (cached) {
143
+ this.recordPerformance(tagName, startTime, true);
144
+ return cached.value; // Return the cached HTML
145
+ }
146
+ }
147
+ // Handle text-only elements including booleans
148
+ if (typeof element === 'string' || typeof element === 'number' || typeof element === 'boolean') {
149
+ const html = isVoidElement(tagName)
150
+ ? `<${tagName}>`
151
+ : `<${tagName}>${escapeHtml(String(element))}</${tagName}>`;
152
+ this.cacheIfStatic(tagName, element, html, options);
153
+ this.recordPerformance(tagName, startTime, false);
154
+ return html;
155
+ }
156
+ // Handle function elements
157
+ if (typeof element === 'function') {
158
+ const result = this.executeFunctionComponent(element, depth);
159
+ return this.renderElement(tagName, result, options, depth);
160
+ }
161
+ // Handle object elements (complex elements with props and children)
162
+ if (element && typeof element === 'object') {
163
+ return this.renderObjectElement(tagName, element, options, depth);
164
+ }
165
+ // Handle null and undefined by returning empty tags
166
+ if (element === null || element === undefined) {
167
+ const html = isVoidElement(tagName)
168
+ ? `<${tagName}>`
169
+ : `<${tagName}></${tagName}>`;
170
+ this.recordPerformance(tagName, startTime, false);
171
+ return html;
172
+ }
173
+ // Fallback for any other types
174
+ const html = `<${tagName}>${escapeHtml(String(element))}</${tagName}>`;
175
+ this.recordPerformance(tagName, startTime, false);
176
+ return html;
177
+ }
178
+ /**
179
+ * Cache element if it's static
180
+ */
181
+ cacheIfStatic(tagName, element, html) {
182
+ if (this.config.enableCache && this.cache && RendererUtils.isStaticElement(element)) {
183
+ const cacheKey = `static:${tagName}:${JSON.stringify(element)}`;
184
+ this.cache.set('static', cacheKey, html, {
185
+ ttlMs: this.config.cacheTTL || 5 * 60 * 1000, // 5 minutes default
186
+ size: html.length // Approximate size
187
+ });
188
+ }
189
+ }
190
+ /**
191
+ * Render complex object elements with attributes and children
192
+ */
193
+ renderObjectElement(tagName, element, options, depth = 0) {
194
+ const startTime = performance.now();
195
+ // Check component-level cache
196
+ if (options.enableCache && this.cache) {
197
+ const cacheKey = RendererUtils.generateCacheKey(tagName, element);
198
+ if (cacheKey) {
199
+ const cached = this.cache.get(cacheKey);
200
+ if (cached) {
201
+ this.recordPerformance(tagName, startTime, true);
202
+ return cached;
203
+ }
204
+ }
205
+ }
206
+ // Extract props and children directly from element content
207
+ const { children, text, ...attributes } = element || {};
208
+ // Build opening tag with attributes
209
+ const attributeString = formatAttributes(attributes);
210
+ const openingTag = attributeString
211
+ ? `<${tagName} ${attributeString}>`
212
+ : `<${tagName}>`;
213
+ // Handle text content
214
+ let textContent = '';
215
+ if (text !== undefined) {
216
+ const isScript = tagName === 'script';
217
+ const isStyle = tagName === 'style';
218
+ const isRawTag = isScript || isStyle;
219
+ const raw = typeof text === 'function' ? String(text()) : String(text);
220
+ if (isRawTag) {
221
+ // Prevent </script> or </style> early-terminating the tag
222
+ const safe = raw
223
+ .replace(/<\/(script)/gi, '<\\/$1')
224
+ .replace(/<\/(style)/gi, '<\\/$1')
225
+ // Escape problematic Unicode line separators in JS
226
+ .replace(/\u2028/g, '\\u2028')
227
+ .replace(/\u2029/g, '\\u2029');
228
+ textContent = safe;
229
+ }
230
+ else {
231
+ textContent = escapeHtml(raw);
232
+ }
233
+ }
234
+ // Handle children
235
+ let childrenHtml = '';
236
+ if (hasChildren(element)) {
237
+ const normalizedChildren = normalizeChildren(children);
238
+ childrenHtml = normalizedChildren
239
+ .map(child => this.renderComponent(child, options, depth + 1))
240
+ .join('');
241
+ }
242
+ // Build complete HTML
243
+ const html = `${openingTag}${textContent}${childrenHtml}</${tagName}>`;
244
+ // Cache the result if appropriate
245
+ if (options.enableCache && this.cache && RendererUtils.isCacheable(element, options)) {
246
+ const cacheKey = RendererUtils.generateCacheKey(tagName, element);
247
+ if (cacheKey) {
248
+ this.cache.set(cacheKey, html);
249
+ }
250
+ }
251
+ this.recordPerformance(tagName, startTime, false);
252
+ return html;
253
+ }
254
+ }
255
+ // Note: globalCache is now imported from cache-manager.js
256
+ /**
257
+ * Main render function - converts object components to HTML
258
+ */
259
+ export function renderToString(component, options = {}) {
260
+ // Merge default options with provided options
261
+ const mergedOptions = {
262
+ enableCache: true,
263
+ enableMonitoring: false,
264
+ ...options
265
+ };
266
+ const renderer = new HTMLRenderer(mergedOptions);
267
+ return renderer.render(component, mergedOptions);
268
+ }
269
+ /**
270
+ * Renders component to complete HTML document with DOCTYPE
271
+ * Better alternative to manual DOCTYPE concatenation
272
+ * Supports CSS file inclusion and inline styles
273
+ */
274
+ export async function renderHTML(component, options = {}) {
275
+ const htmlContent = renderToString(component, options);
276
+ // Process CSS options
277
+ const cssOptions = cssUtils.processCSSOptions(options);
278
+ // Generate CSS HTML if any CSS is specified
279
+ let cssHtml = '';
280
+ if (cssOptions.files.length > 0 || cssOptions.links.length > 0 || cssOptions.inline) {
281
+ cssHtml = await cssUtils.generateCSSHtml(cssOptions, defaultCSSManager);
282
+ }
283
+ // If the component includes a head tag, inject CSS into it
284
+ if (cssHtml && htmlContent.includes('<head>')) {
285
+ const htmlWithCSS = htmlContent.replace('</head>', `${cssHtml}\n</head>`);
286
+ return `<!DOCTYPE html>\n${htmlWithCSS}`;
287
+ }
288
+ // If there's CSS but no head tag, wrap the component with a basic HTML structure
289
+ if (cssHtml) {
290
+ return `<!DOCTYPE html>
291
+ <html>
292
+ <head>
293
+ <meta charset="utf-8">
294
+ <meta name="viewport" content="width=device-width, initial-scale=1">
295
+ ${cssHtml}
296
+ </head>
297
+ <body>
298
+ ${htmlContent}
299
+ </body>
300
+ </html>`;
301
+ }
302
+ return `<!DOCTYPE html>\n${htmlContent}`;
303
+ }
304
+ /**
305
+ * Synchronous version of renderHTML for cases without CSS files
306
+ * Falls back to async if CSS files are detected
307
+ */
308
+ export function renderHTMLSync(component, options = {}) {
309
+ const cssOptions = cssUtils.processCSSOptions(options);
310
+ // If CSS files are specified, return a promise
311
+ if (cssOptions.files.length > 0) {
312
+ console.warn('CSS files detected, use renderHTML() (async) instead of renderHTMLSync()');
313
+ return renderHTML(component, options);
314
+ }
315
+ const htmlContent = renderToString(component, options);
316
+ // Handle inline CSS and external links only
317
+ let cssHtml = '';
318
+ if (cssOptions.links.length > 0) {
319
+ cssHtml += defaultCSSManager.generateCSSLinks(cssOptions.links);
320
+ }
321
+ if (cssOptions.inline) {
322
+ cssHtml += `\n${defaultCSSManager.generateInlineStyles(cssOptions.inline)}`;
323
+ }
324
+ if (cssHtml && htmlContent.includes('<head>')) {
325
+ const htmlWithCSS = htmlContent.replace('</head>', `${cssHtml}\n</head>`);
326
+ return `<!DOCTYPE html>\n${htmlWithCSS}`;
327
+ }
328
+ if (cssHtml) {
329
+ return `<!DOCTYPE html>
330
+ <html>
331
+ <head>
332
+ <meta charset="utf-8">
333
+ <meta name="viewport" content="width=device-width, initial-scale=1">
334
+ ${cssHtml}
335
+ </head>
336
+ <body>
337
+ ${htmlContent}
338
+ </body>
339
+ </html>`;
340
+ }
341
+ return `<!DOCTYPE html>\n${htmlContent}`;
342
+ }
343
+ /**
344
+ * Alias for renderHTML - more semantic name for HTML rendering
345
+ */
346
+ export function render(component, options = {}) {
347
+ return renderHTML(component, options);
348
+ }
349
+ // Old functions removed - now part of HTMLRenderer class
350
+ // Old helper functions removed - now available in RendererUtils from BaseRenderer
351
+ /**
352
+ * Batch rendering for multiple components
353
+ */
354
+ export function renderBatch(components, options = {}) {
355
+ if (!Array.isArray(components)) {
356
+ throw new Error('renderBatch expects an array of components');
357
+ }
358
+ // Merge default options with provided options
359
+ const mergedOptions = {
360
+ enableCache: true,
361
+ enableMonitoring: false,
362
+ ...options
363
+ };
364
+ const renderer = new HTMLRenderer(mergedOptions);
365
+ return components.map(component => renderer.render(component, mergedOptions));
366
+ }
367
+ /**
368
+ * Render to chunks for large output (fake streaming - renders full HTML then chunks it)
369
+ * For true progressive streaming, use the streaming-renderer.js renderToStream function
370
+ */
371
+ export function* renderToChunks(component, options = {}) {
372
+ // Merge default options with provided options
373
+ const mergedOptions = {
374
+ enableCache: true,
375
+ enableMonitoring: false,
376
+ ...options,
377
+ chunkSize: options.chunkSize || 1024 // Default 1KB chunks
378
+ };
379
+ const html = renderToString(component, mergedOptions);
380
+ for (let i = 0; i < html.length; i += mergedOptions.chunkSize) {
381
+ yield html.slice(i, i + mergedOptions.chunkSize);
382
+ }
383
+ }
384
+ /**
385
+ * @deprecated Use renderToChunks instead. This function will be removed in a future version.
386
+ * For true progressive streaming, use the streaming-renderer.js renderToStream function.
387
+ */
388
+ export async function* renderToStream(component, options = {}) {
389
+ console.warn('renderToStream from html-renderer is deprecated. Use renderToChunks for chunking or streaming-renderer.js renderToStream for true streaming.');
390
+ return yield* renderToChunks(component, options);
391
+ }
392
+ /**
393
+ * Get global cache instance for external access
394
+ */
395
+ export function getCache() {
396
+ return rendererCache;
397
+ }
398
+ /**
399
+ * Reset cache (useful for testing)
400
+ */
401
+ export function resetCache() {
402
+ if (rendererCache) {
403
+ rendererCache.clear();
404
+ }
405
+ }
406
+ /**
407
+ * Get rendering statistics
408
+ */
409
+ export function getRenderingStats() {
410
+ return {
411
+ cache: rendererCache ? rendererCache.getStats() : null,
412
+ performance: performanceMonitor.getStats()
413
+ };
414
+ }
415
+ /**
416
+ * Precompile static components for maximum performance
417
+ */
418
+ export function precompileComponent(component, options = {}) {
419
+ if (!isStaticElement(component)) {
420
+ throw new Error('Can only precompile static components');
421
+ }
422
+ const html = renderToString(component, { ...options, enableCache: false });
423
+ return {
424
+ html,
425
+ isPrecompiled: true,
426
+ render: () => html
427
+ };
428
+ }
429
+ /**
430
+ * Development helper - render with detailed timing
431
+ */
432
+ export function renderWithTiming(component, options = {}) {
433
+ const start = performance.now();
434
+ const html = renderToString(component, { ...options, enableMonitoring: true });
435
+ const end = performance.now();
436
+ return {
437
+ html,
438
+ timing: {
439
+ total: end - start,
440
+ breakdown: performanceMonitor.getStats()
441
+ }
442
+ };
443
+ }
444
+ //# sourceMappingURL=html-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../../../../src/rendering/html-renderer.js"],"names":[],"mappings":"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"}