@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,468 @@
1
+ /**
2
+ * Enhanced Error Handling System for Coherent.js
3
+ * Provides detailed error messages and debugging context
4
+ */
5
+ /**
6
+ * Custom error types for better debugging
7
+ */
8
+ export class CoherentError extends Error {
9
+ constructor(message, options = {}) {
10
+ super(message);
11
+ this.name = 'CoherentError';
12
+ this.type = options.type || 'generic';
13
+ this.component = options.component;
14
+ this.context = options.context;
15
+ this.suggestions = options.suggestions || [];
16
+ this.timestamp = Date.now();
17
+ if (Error.captureStackTrace) {
18
+ Error.captureStackTrace(this, CoherentError);
19
+ }
20
+ }
21
+ toJSON() {
22
+ return {
23
+ name: this.name,
24
+ message: this.message,
25
+ type: this.type,
26
+ component: this.component,
27
+ context: this.context,
28
+ suggestions: this.suggestions,
29
+ timestamp: this.timestamp,
30
+ stack: this.stack
31
+ };
32
+ }
33
+ }
34
+ export class ComponentValidationError extends CoherentError {
35
+ constructor(message, component, suggestions = []) {
36
+ super(message, {
37
+ type: 'validation',
38
+ component,
39
+ suggestions: [
40
+ 'Check component structure and syntax',
41
+ 'Ensure all required properties are present',
42
+ 'Validate prop types and values',
43
+ ...suggestions
44
+ ]
45
+ });
46
+ this.name = 'ComponentValidationError';
47
+ }
48
+ }
49
+ export class RenderingError extends CoherentError {
50
+ constructor(message, component, context, suggestions = []) {
51
+ super(message, {
52
+ type: 'rendering',
53
+ component,
54
+ context,
55
+ suggestions: [
56
+ 'Check for circular references',
57
+ 'Validate component depth',
58
+ 'Ensure all functions return valid components',
59
+ ...suggestions
60
+ ]
61
+ });
62
+ this.name = 'RenderingError';
63
+ }
64
+ }
65
+ export class PerformanceError extends CoherentError {
66
+ constructor(message, metrics, suggestions = []) {
67
+ super(message, {
68
+ type: 'performance',
69
+ context: metrics,
70
+ suggestions: [
71
+ 'Consider component memoization',
72
+ 'Reduce component complexity',
73
+ 'Enable caching',
74
+ ...suggestions
75
+ ]
76
+ });
77
+ this.name = 'PerformanceError';
78
+ }
79
+ }
80
+ export class StateError extends CoherentError {
81
+ constructor(message, state, suggestions = []) {
82
+ super(message, {
83
+ type: 'state',
84
+ context: state,
85
+ suggestions: [
86
+ 'Check state mutations',
87
+ 'Ensure proper state initialization',
88
+ 'Validate state transitions',
89
+ ...suggestions
90
+ ]
91
+ });
92
+ this.name = 'StateError';
93
+ }
94
+ }
95
+ /**
96
+ * Error handler with context-aware reporting
97
+ */
98
+ export class ErrorHandler {
99
+ constructor(options = {}) {
100
+ this.options = {
101
+ enableStackTrace: options.enableStackTrace !== false,
102
+ enableSuggestions: options.enableSuggestions !== false,
103
+ enableLogging: options.enableLogging !== false,
104
+ logLevel: options.logLevel || 'error',
105
+ maxErrorHistory: options.maxErrorHistory || 100,
106
+ ...options
107
+ };
108
+ this.errorHistory = [];
109
+ this.errorCounts = new Map();
110
+ this.suppressedErrors = new Set();
111
+ }
112
+ /**
113
+ * Handle and report errors with detailed context
114
+ */
115
+ handle(error, context = {}) {
116
+ // Create enhanced error if it's not already a CoherentError
117
+ const enhancedError = this.enhanceError(error, _context);
118
+ // Add to history
119
+ this.addToHistory(enhancedError);
120
+ // Log if enabled
121
+ if (this.options.enableLogging) {
122
+ this.logError(enhancedError);
123
+ }
124
+ // Return enhanced error for potential re-throwing
125
+ return enhancedError;
126
+ }
127
+ /**
128
+ * Enhance existing errors with more context
129
+ */
130
+ enhanceError(error, context = {}) {
131
+ if (error instanceof CoherentError) {
132
+ return error;
133
+ }
134
+ // Determine error type from context
135
+ const errorType = this.classifyError(error, _context);
136
+ // Create appropriate error type
137
+ switch (errorType) {
138
+ case 'validation':
139
+ return new ComponentValidationError(error.message, context.component, this.generateSuggestions(error, _context));
140
+ case 'rendering':
141
+ return new RenderingError(error.message, context.component, context.renderContext, this.generateSuggestions(error, _context));
142
+ case 'performance':
143
+ return new PerformanceError(error.message, context.metrics, this.generateSuggestions(error, _context));
144
+ case 'state':
145
+ return new StateError(error.message, context.state, this.generateSuggestions(error, _context));
146
+ default:
147
+ return new CoherentError(error.message, {
148
+ type: errorType,
149
+ component: context.component,
150
+ context: context.context,
151
+ suggestions: this.generateSuggestions(error, _context)
152
+ });
153
+ }
154
+ }
155
+ /**
156
+ * Classify error type based on message and context
157
+ */
158
+ classifyError(error, _context) {
159
+ const message = error.message.toLowerCase();
160
+ // Validation errors
161
+ if (message.includes('invalid') || message.includes('validation') ||
162
+ message.includes('required') || message.includes('type')) {
163
+ return 'validation';
164
+ }
165
+ // Rendering errors
166
+ if (message.includes('render') || message.includes('circular') ||
167
+ message.includes('depth') || message.includes('cannot render')) {
168
+ return 'rendering';
169
+ }
170
+ // Performance errors
171
+ if (message.includes('slow') || message.includes('memory') ||
172
+ message.includes('performance') || message.includes('timeout')) {
173
+ return 'performance';
174
+ }
175
+ // State errors
176
+ if (message.includes('state') || message.includes('mutation') ||
177
+ message.includes('store') || context.state) {
178
+ return 'state';
179
+ }
180
+ // Check context for type hints
181
+ if (context.component)
182
+ return 'validation';
183
+ if (context.renderContext)
184
+ return 'rendering';
185
+ if (context.metrics)
186
+ return 'performance';
187
+ return 'generic';
188
+ }
189
+ /**
190
+ * Generate helpful suggestions based on error
191
+ */
192
+ generateSuggestions(error, context = {}) {
193
+ const suggestions = [];
194
+ const message = error.message.toLowerCase();
195
+ // Common patterns and suggestions
196
+ const patterns = [
197
+ {
198
+ pattern: /cannot render|render.*failed/,
199
+ suggestions: [
200
+ 'Check if component returns a valid object structure',
201
+ 'Ensure all properties are properly defined',
202
+ 'Look for undefined variables or null references'
203
+ ]
204
+ },
205
+ {
206
+ pattern: /circular.*reference/,
207
+ suggestions: [
208
+ 'Remove circular references between components',
209
+ 'Use lazy loading or memoization to break cycles',
210
+ 'Check for self-referencing components'
211
+ ]
212
+ },
213
+ {
214
+ pattern: /maximum.*depth/,
215
+ suggestions: [
216
+ 'Reduce component nesting depth',
217
+ 'Break complex components into smaller parts',
218
+ 'Check for infinite recursion in component functions'
219
+ ]
220
+ },
221
+ {
222
+ pattern: /invalid.*component/,
223
+ suggestions: [
224
+ 'Ensure component follows the expected object structure',
225
+ 'Check property names and values for typos',
226
+ 'Verify component is not null or undefined'
227
+ ]
228
+ },
229
+ {
230
+ pattern: /performance|slow|timeout/,
231
+ suggestions: [
232
+ 'Enable component caching',
233
+ 'Use memoization for expensive operations',
234
+ 'Reduce component complexity',
235
+ 'Consider lazy loading for large components'
236
+ ]
237
+ }
238
+ ];
239
+ // Match patterns and add suggestions
240
+ patterns.forEach(({ pattern, suggestions: patternSuggestions }) => {
241
+ if (pattern.test(message)) {
242
+ suggestions.push(...patternSuggestions);
243
+ }
244
+ });
245
+ // Context-specific suggestions
246
+ if (context.component) {
247
+ const componentType = typeof context.component;
248
+ if (componentType === 'function') {
249
+ suggestions.push('Check function component return value');
250
+ }
251
+ else if (componentType === 'object' && context.component === null) {
252
+ suggestions.push('Component is null - ensure proper initialization');
253
+ }
254
+ else if (Array.isArray(context.component)) {
255
+ suggestions.push('Arrays should contain valid component objects');
256
+ }
257
+ }
258
+ // Add debugging tips
259
+ if (suggestions.length === 0) {
260
+ suggestions.push('Enable development tools for more detailed debugging', 'Check browser console for additional error details', 'Use component validation tools to identify issues');
261
+ }
262
+ return [...new Set(suggestions)]; // Remove duplicates
263
+ }
264
+ /**
265
+ * Add error to history with deduplication
266
+ */
267
+ addToHistory(error) {
268
+ const errorKey = `${error.name}:${error.message}`;
269
+ // Update count
270
+ this.errorCounts.set(errorKey, (this.errorCounts.get(errorKey) || 0) + 1);
271
+ // Add to history
272
+ const historyEntry = {
273
+ ...error.toJSON(),
274
+ count: this.errorCounts.get(errorKey),
275
+ firstSeen: this.errorHistory.find(e => e.key === errorKey)?.firstSeen || error.timestamp,
276
+ key: errorKey
277
+ };
278
+ // Remove old entry if exists
279
+ this.errorHistory = this.errorHistory.filter(e => e.key !== errorKey);
280
+ // Add new entry
281
+ this.errorHistory.unshift(historyEntry);
282
+ // Limit history size
283
+ if (this.errorHistory.length > this.options.maxErrorHistory) {
284
+ this.errorHistory = this.errorHistory.slice(0, this.options.maxErrorHistory);
285
+ }
286
+ }
287
+ /**
288
+ * Log error with enhanced formatting
289
+ */
290
+ logError(error) {
291
+ if (this.suppressedErrors.has(`${error.name}:${error.message}`)) {
292
+ return;
293
+ }
294
+ const isRepeated = this.errorCounts.get(`${error.name}:${error.message}`) > 1;
295
+ // Format error for console
296
+ const errorGroup = `🚨 ${error.name}${isRepeated ? ` (×${this.errorCounts.get(`${error.name}:${error.message}`)})` : ''}`;
297
+ console.group(errorGroup);
298
+ // Main error message
299
+ console.error(`❌ ${error.message}`);
300
+ // Component context if available
301
+ if (error.component) {
302
+ console.log('🔍 Component:', this.formatComponent(error.component));
303
+ }
304
+ // Additional context
305
+ if (error._context) {
306
+ console.log('📋 Context:', error._context);
307
+ }
308
+ // Suggestions
309
+ if (this.options.enableSuggestions && error.suggestions.length > 0) {
310
+ console.group('💡 Suggestions:');
311
+ error.suggestions.forEach((suggestion, index) => {
312
+ console.log(`${index + 1}. ${suggestion}`);
313
+ });
314
+ console.groupEnd();
315
+ }
316
+ // Stack trace
317
+ if (this.options.enableStackTrace && error.stack) {
318
+ console.log('📚 Stack trace:', error.stack);
319
+ }
320
+ console.groupEnd();
321
+ }
322
+ /**
323
+ * Format component for logging
324
+ */
325
+ formatComponent(component, maxDepth = 2, currentDepth = 0) {
326
+ if (currentDepth > maxDepth) {
327
+ return '[...deep]';
328
+ }
329
+ if (typeof component === 'function') {
330
+ return `[Function: ${component.name || 'anonymous'}]`;
331
+ }
332
+ if (Array.isArray(component)) {
333
+ return component.slice(0, 3).map(item => this.formatComponent(item, maxDepth, currentDepth + 1));
334
+ }
335
+ if (component && typeof component === 'object') {
336
+ const formatted = {};
337
+ const keys = Object.keys(component).slice(0, 5);
338
+ for (const key of keys) {
339
+ if (key === 'children' && component[key]) {
340
+ formatted[key] = this.formatComponent(component[key], maxDepth, currentDepth + 1);
341
+ }
342
+ else {
343
+ formatted[key] = component[key];
344
+ }
345
+ }
346
+ if (Object.keys(component).length > 5) {
347
+ formatted['...'] = `(${Object.keys(component).length - 5} more)`;
348
+ }
349
+ return formatted;
350
+ }
351
+ return component;
352
+ }
353
+ /**
354
+ * Suppress specific error types
355
+ */
356
+ suppress(errorPattern) {
357
+ this.suppressedErrors.add(errorPattern);
358
+ }
359
+ /**
360
+ * Clear error history
361
+ */
362
+ clearHistory() {
363
+ this.errorHistory = [];
364
+ this.errorCounts.clear();
365
+ }
366
+ /**
367
+ * Get error statistics
368
+ */
369
+ getStats() {
370
+ const errorsByType = {};
371
+ const errorsByTime = {};
372
+ this.errorHistory.forEach(error => {
373
+ // Count by type
374
+ errorsByType[error.type] = (errorsByType[error.type] || 0) + error.count;
375
+ // Count by hour
376
+ const hour = new Date(error.timestamp).toISOString().slice(0, 13);
377
+ errorsByTime[hour] = (errorsByTime[hour] || 0) + error.count;
378
+ });
379
+ return {
380
+ totalErrors: this.errorHistory.reduce((sum, e) => sum + e.count, 0),
381
+ uniqueErrors: this.errorHistory.length,
382
+ errorsByType,
383
+ errorsByTime,
384
+ mostCommonErrors: this.getMostCommonErrors(5),
385
+ recentErrors: this.errorHistory.slice(0, 10)
386
+ };
387
+ }
388
+ /**
389
+ * Get most common errors
390
+ */
391
+ getMostCommonErrors(limit = 10) {
392
+ return this.errorHistory
393
+ .sort((a, b) => b.count - a.count)
394
+ .slice(0, limit)
395
+ .map(({ name, message, count, type }) => ({
396
+ name,
397
+ message,
398
+ count,
399
+ type
400
+ }));
401
+ }
402
+ }
403
+ /**
404
+ * Global error handler instance
405
+ */
406
+ export const globalErrorHandler = new ErrorHandler();
407
+ /**
408
+ * Convenience functions for common error types
409
+ */
410
+ export function throwValidationError(message, component, suggestions = []) {
411
+ throw new ComponentValidationError(message, component, suggestions);
412
+ }
413
+ export function throwRenderingError(message, component, context, suggestions = []) {
414
+ throw new RenderingError(message, component, context, suggestions);
415
+ }
416
+ export function throwPerformanceError(message, metrics, suggestions = []) {
417
+ throw new PerformanceError(message, metrics, suggestions);
418
+ }
419
+ export function throwStateError(message, state, suggestions = []) {
420
+ throw new StateError(message, state, suggestions);
421
+ }
422
+ /**
423
+ * Try-catch wrapper with enhanced error handling
424
+ */
425
+ export function safeExecute(fn, context = {}, fallback = null) {
426
+ try {
427
+ return fn();
428
+ }
429
+ catch (error) {
430
+ const enhancedError = globalErrorHandler.handle(error, _context);
431
+ if (fallback !== null) {
432
+ return typeof fallback === 'function' ? fallback(enhancedError) : fallback;
433
+ }
434
+ throw enhancedError;
435
+ }
436
+ }
437
+ /**
438
+ * Async try-catch wrapper
439
+ */
440
+ export async function safeExecuteAsync(fn, context = {}, fallback = null) {
441
+ try {
442
+ return await fn();
443
+ }
444
+ catch (error) {
445
+ const enhancedError = globalErrorHandler.handle(error, _context);
446
+ if (fallback !== null) {
447
+ return typeof fallback === 'function' ? fallback(enhancedError) : fallback;
448
+ }
449
+ throw enhancedError;
450
+ }
451
+ }
452
+ /**
453
+ * Factory function to create an ErrorHandler instance
454
+ *
455
+ * @param {Object} options - ErrorHandler configuration
456
+ * @returns {ErrorHandler} ErrorHandler instance
457
+ *
458
+ * @example
459
+ * const errorHandler = createErrorHandler({
460
+ * enableTracing: true,
461
+ * enableSuggestions: true
462
+ * });
463
+ */
464
+ export function createErrorHandler(options = {}) {
465
+ return new ErrorHandler(options);
466
+ }
467
+ export default ErrorHandler;
468
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../../src/utils/error-handler.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export function normalizeProps(props: any): any;
2
+ export function flattenChildren(children: any): any;
3
+ //# sourceMappingURL=normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../../../../src/utils/normalization.js"],"names":[],"mappings":"AACA,gDAWC;AAED,oDAYC"}
@@ -0,0 +1,24 @@
1
+ // src/utils/normalization.js
2
+ export function normalizeProps(_props) {
3
+ if (!props || typeof props !== 'object') {
4
+ return {};
5
+ }
6
+ // Filter out key and ref from props (they're handled separately)
7
+ const normalizedProps = { ...props };
8
+ delete normalizedProps.key;
9
+ delete normalizedProps.ref;
10
+ return normalizedProps;
11
+ }
12
+ export function flattenChildren(children) {
13
+ const flattened = [];
14
+ for (const child of children) {
15
+ if (Array.isArray(child)) {
16
+ flattened.push(...flattenChildren(child));
17
+ }
18
+ else if (child !== null && child !== undefined && child !== false) {
19
+ flattened.push(child);
20
+ }
21
+ }
22
+ return flattened;
23
+ }
24
+ //# sourceMappingURL=normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../../../src/utils/normalization.js"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,MAAM,UAAU,cAAc,CAAC,KAAK;IAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,iEAAiE;IACjE,MAAM,eAAe,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACrC,OAAO,eAAe,CAAC,GAAG,CAAC;IAC3B,OAAO,eAAe,CAAC,GAAG,CAAC;IAE3B,OAAO,eAAe,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAQ;IACpC,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export namespace Validation {
2
+ export { validateCoherentObject };
3
+ export { validateComponent };
4
+ export { validateProps };
5
+ }
6
+ declare function validateCoherentObject(obj: any, context?: string): boolean;
7
+ declare function validateComponent(componentFunction: any): boolean;
8
+ declare function validateProps(props: any): boolean;
9
+ export {};
10
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/utils/validation.js"],"names":[],"mappings":";;;;;AASA,6EAcC;AAED,oEAMC;AAED,oDAMC"}
@@ -0,0 +1,32 @@
1
+ // src/utils/validation.js
2
+ import { CoherentTypes, COHERENT_MARKER } from '../types/constants.js';
3
+ export const Validation = {
4
+ validateCoherentObject,
5
+ validateComponent,
6
+ validateProps
7
+ };
8
+ function validateCoherentObject(obj, context = 'render') {
9
+ if (!obj || typeof obj !== 'object') {
10
+ throw new Error(`${context}: Expected object, received ${typeof obj}`);
11
+ }
12
+ if (!obj[COHERENT_MARKER]) {
13
+ throw new Error(`${context}: Object is not a valid Coherent object`);
14
+ }
15
+ if (!Object.values(CoherentTypes).includes(obj.type)) {
16
+ throw new Error(`${context}: Invalid Coherent object type: ${obj.type}`);
17
+ }
18
+ return true;
19
+ }
20
+ function validateComponent(componentFunction) {
21
+ if (typeof componentFunction !== 'function') {
22
+ throw new Error('Component must be a function');
23
+ }
24
+ return true;
25
+ }
26
+ function validateProps(_props) {
27
+ if (props && typeof props !== 'object') {
28
+ throw new Error('Props must be an object');
29
+ }
30
+ return true;
31
+ }
32
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/utils/validation.js"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,aAAa;CAChB,CAAC;AAEF,SAAS,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ;IACnD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,+BAA+B,OAAO,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,yCAAyC,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,mCAAmC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,iBAAiB;IACxC,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAK;IACxB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@coherent.js/core",
3
+ "version": "1.0.0-beta.2",
4
+ "description": "Core runtime for Coherent.js (SSR framework).",
5
+ "type": "module",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.js",
8
+ "types": "./types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "development": "./src/index.js",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist/",
18
+ "types/",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
22
+ "engines": {
23
+ "node": ">=20.0.0"
24
+ },
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/Tomdrouv1/coherent.js.git"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public",
32
+ "registry": "https://registry.npmjs.org/"
33
+ },
34
+ "scripts": {
35
+ "build": "node build.mjs",
36
+ "clean": "rm -rf dist/",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest",
39
+ "test:coverage": "vitest run --coverage",
40
+ "typecheck": "tsc --noEmit",
41
+ "test:vitest": "vitest run",
42
+ "test:node": "node --test test/*.test.js"
43
+ }
44
+ }