@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,95 @@
1
+ /**
2
+ * Bundle size optimization through tree-shaking and code analysis
3
+ */
4
+ export class BundleOptimizer {
5
+ usedComponents: Set<any>;
6
+ usedUtilities: Set<any>;
7
+ componentDependencies: Map<any, any>;
8
+ unusedCode: Set<any>;
9
+ analyzeUsage(rootComponent: any, props?: {}): {
10
+ usedComponents: any[];
11
+ componentDependencies: any;
12
+ optimizationOpportunities: {
13
+ type: string;
14
+ impact: string;
15
+ description: string;
16
+ estimatedSavings: number;
17
+ }[];
18
+ bundleEstimate: {
19
+ estimated: number;
20
+ breakdown: {
21
+ framework: number;
22
+ components: number;
23
+ utilities: number;
24
+ };
25
+ };
26
+ recommendations: {
27
+ priority: string;
28
+ action: string;
29
+ impact: string;
30
+ }[];
31
+ };
32
+ traverseComponent(component: any, props: any, context: any): void;
33
+ analyzeFunctionComponent(component: any, props: any, context: any): void;
34
+ analyzeObjectComponent(obj: any, context: any): void;
35
+ getComponentName(component: any): any;
36
+ generateOptimizationReport(): {
37
+ usedComponents: any[];
38
+ componentDependencies: any;
39
+ optimizationOpportunities: {
40
+ type: string;
41
+ impact: string;
42
+ description: string;
43
+ estimatedSavings: number;
44
+ }[];
45
+ bundleEstimate: {
46
+ estimated: number;
47
+ breakdown: {
48
+ framework: number;
49
+ components: number;
50
+ utilities: number;
51
+ };
52
+ };
53
+ recommendations: {
54
+ priority: string;
55
+ action: string;
56
+ impact: string;
57
+ }[];
58
+ };
59
+ findOptimizationOpportunities(): {
60
+ type: string;
61
+ impact: string;
62
+ description: string;
63
+ estimatedSavings: number;
64
+ }[];
65
+ estimateBundleSize(): {
66
+ estimated: number;
67
+ breakdown: {
68
+ framework: number;
69
+ components: number;
70
+ utilities: number;
71
+ };
72
+ };
73
+ generateRecommendations(): {
74
+ priority: string;
75
+ action: string;
76
+ impact: string;
77
+ }[];
78
+ generateOptimizedConfig(): {
79
+ entryPoints: {
80
+ core: string[];
81
+ components: string[];
82
+ utilities: string[];
83
+ };
84
+ treeShaking: {
85
+ unusedExports: any[];
86
+ sideEffects: boolean;
87
+ };
88
+ optimization: {
89
+ minify: boolean;
90
+ splitChunks: boolean;
91
+ };
92
+ };
93
+ }
94
+ export const bundleOptimizer: BundleOptimizer;
95
+ //# sourceMappingURL=bundle-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-optimizer.d.ts","sourceRoot":"","sources":["../../../../src/performance/bundle-optimizer.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;IAEQ,yBAA+B;IAC/B,wBAA8B;IAC9B,qCAAsC;IACtC,qBAA2B;IAI/B;;;;;;;;;;;;;;;;;;;;;;MASC;IAED,kEAkBC;IAED,yEA0BC;IAED,qDA+BC;IAED,sCASC;IAGD;;;;;;;;;;;;;;;;;;;;;;MAQC;IAED;;;;;QA8BC;IAED;;;;;;;MAaC;IAED;;;;QAoBC;IAGD;;;;;;;;;;;;;;MAmBC;CACJ;AAED,8CAAqD"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Bundle size optimization through tree-shaking and code analysis
3
+ */
4
+ export class BundleOptimizer {
5
+ constructor() {
6
+ this.usedComponents = new Set();
7
+ this.usedUtilities = new Set();
8
+ this.componentDependencies = new Map();
9
+ this.unusedCode = new Set();
10
+ }
11
+ // Analyze component tree to identify what's actually used
12
+ analyzeUsage(rootComponent, props = {}) {
13
+ const analysisContext = {
14
+ componentStack: [],
15
+ propsFlow: new Map(),
16
+ conditionalBranches: new Set()
17
+ };
18
+ this.traverseComponent(rootComponent, props, analysisContext);
19
+ return this.generateOptimizationReport();
20
+ }
21
+ traverseComponent(component, props, _context) {
22
+ const componentName = this.getComponentName(component);
23
+ // Track component usage
24
+ this.usedComponents.add(componentName);
25
+ context.componentStack.push(componentName);
26
+ // Track props flow for optimization
27
+ context.propsFlow.set(componentName, Object.keys(_props));
28
+ // Analyze component implementation
29
+ if (typeof component === 'function') {
30
+ this.analyzeFunctionComponent(component, props, _context);
31
+ }
32
+ else if (typeof component === 'object') {
33
+ this.analyzeObjectComponent(component, _context);
34
+ }
35
+ context.componentStack.pop();
36
+ }
37
+ analyzeFunctionComponent(component, props, _context) {
38
+ const componentStr = component.toString();
39
+ // Detect conditional rendering patterns
40
+ const conditionalPatterns = [
41
+ /\?\s*\{/g, // Conditional objects
42
+ /&&\s*\{/g, // Logical AND rendering
43
+ /if\s*\(/g // If statements
44
+ ];
45
+ for (const pattern of conditionalPatterns) {
46
+ const matches = componentStr.match(pattern);
47
+ if (matches) {
48
+ context.conditionalBranches.add(`${this.getComponentName(component)}_conditional`);
49
+ }
50
+ }
51
+ // Try to execute with sample props to discover runtime paths
52
+ try {
53
+ const result = component(_props);
54
+ if (result) {
55
+ this.traverseComponent(result, {}, _context);
56
+ }
57
+ }
58
+ catch {
59
+ // Component might need specific props, skip runtime analysis
60
+ }
61
+ }
62
+ analyzeObjectComponent(obj, _context) {
63
+ if (Array.isArray(obj)) {
64
+ obj.forEach(item => {
65
+ if (item && typeof item === 'object') {
66
+ this.traverseComponent(item, {}, _context);
67
+ }
68
+ });
69
+ return;
70
+ }
71
+ const keys = Object.keys(obj);
72
+ if (keys.length === 1) {
73
+ const tagName = keys[0];
74
+ const props = obj[tagName];
75
+ // Track HTML tag usage
76
+ this.usedComponents.add(`html_${tagName}`);
77
+ // Traverse children
78
+ if (props && typeof props === 'object') {
79
+ if (props.children) {
80
+ if (Array.isArray(props.children)) {
81
+ props.children.forEach(child => {
82
+ this.traverseComponent(child, {}, _context);
83
+ });
84
+ }
85
+ else {
86
+ this.traverseComponent(props.children, {}, _context);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
92
+ getComponentName(component) {
93
+ if (typeof component === 'function') {
94
+ return component.name || 'AnonymousFunction';
95
+ }
96
+ if (typeof component === 'object' && component) {
97
+ const keys = Object.keys(component);
98
+ return keys.length > 0 ? `Object_${keys[0]}` : 'EmptyObject';
99
+ }
100
+ return 'Unknown';
101
+ }
102
+ // Generate optimization recommendations
103
+ generateOptimizationReport() {
104
+ return {
105
+ usedComponents: Array.from(this.usedComponents),
106
+ componentDependencies: Object.fromEntries(this.componentDependencies),
107
+ optimizationOpportunities: this.findOptimizationOpportunities(),
108
+ bundleEstimate: this.estimateBundleSize(),
109
+ recommendations: this.generateRecommendations()
110
+ };
111
+ }
112
+ findOptimizationOpportunities() {
113
+ const opportunities = [];
114
+ // Check for unused utilities
115
+ const coreUtilities = ['validateCoherentObject', 'mergeProps', 'cloneCoherentObject'];
116
+ const unusedUtilities = coreUtilities.filter(util => !this.usedUtilities.has(util));
117
+ if (unusedUtilities.length > 0) {
118
+ opportunities.push({
119
+ type: 'unused_utilities',
120
+ impact: 'medium',
121
+ description: `Remove unused utilities: ${unusedUtilities.join(', ')}`,
122
+ estimatedSavings: unusedUtilities.length * 2 // KB estimate
123
+ });
124
+ }
125
+ // Check for component consolidation opportunities
126
+ const htmlComponents = Array.from(this.usedComponents)
127
+ .filter(name => name.startsWith('html_'));
128
+ if (htmlComponents.length < 10) {
129
+ opportunities.push({
130
+ type: 'minimal_html_tags',
131
+ impact: 'high',
132
+ description: 'Create minimal HTML tag bundle for smaller apps',
133
+ estimatedSavings: 15 // KB estimate
134
+ });
135
+ }
136
+ return opportunities;
137
+ }
138
+ estimateBundleSize() {
139
+ const baseFrameworkSize = 25; // KB
140
+ const componentOverhead = this.usedComponents.size * 0.5; // KB per component
141
+ const utilitySize = this.usedUtilities.size * 2; // KB per utility
142
+ return {
143
+ estimated: baseFrameworkSize + componentOverhead + utilitySize,
144
+ breakdown: {
145
+ framework: baseFrameworkSize,
146
+ components: componentOverhead,
147
+ utilities: utilitySize
148
+ }
149
+ };
150
+ }
151
+ generateRecommendations() {
152
+ const recommendations = [];
153
+ if (this.usedComponents.size < 5) {
154
+ recommendations.push({
155
+ priority: 'high',
156
+ action: 'Consider creating a minimal bundle with only required components',
157
+ impact: 'Reduce bundle size by 40-60%'
158
+ });
159
+ }
160
+ if (this.usedComponents.size > 50) {
161
+ recommendations.push({
162
+ priority: 'medium',
163
+ action: 'Implement code-splitting to load components on demand',
164
+ impact: 'Improve initial load time by 30-50%'
165
+ });
166
+ }
167
+ return recommendations;
168
+ }
169
+ // Generate optimized bundle configuration
170
+ generateOptimizedConfig() {
171
+ return {
172
+ entryPoints: {
173
+ core: ['./src/coherent.js'],
174
+ components: Array.from(this.usedComponents)
175
+ .filter(name => !name.startsWith('html_'))
176
+ .map(name => `./src/components/${name}.js`),
177
+ utilities: Array.from(this.usedUtilities)
178
+ .map(name => `./src/core/${name}.js`)
179
+ },
180
+ treeShaking: {
181
+ unusedExports: Array.from(this.unusedCode),
182
+ sideEffects: false
183
+ },
184
+ optimization: {
185
+ minify: true,
186
+ splitChunks: this.usedComponents.size > 20
187
+ }
188
+ };
189
+ }
190
+ }
191
+ export const bundleOptimizer = new BundleOptimizer();
192
+ //# sourceMappingURL=bundle-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-optimizer.js","sourceRoot":"","sources":["../../../../src/performance/bundle-optimizer.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Advanced caching system with memory management and smart invalidation for Coherent.js
3
+ *
4
+ * @module @coherent/performance/cache-manager
5
+ * @license MIT
6
+ */
7
+ /**
8
+ * @typedef {Object} CacheEntry
9
+ * @property {any} value - The cached value
10
+ * @property {number} timestamp - When the entry was created
11
+ * @property {number} lastAccess - Last access time
12
+ * @property {number} size - Approximate size in bytes
13
+ * @property {Object} metadata - Additional metadata
14
+ * @property {number} accessCount - Number of times accessed
15
+ */
16
+ /**
17
+ * @typedef {Object} CacheStats
18
+ * @property {number} hits - Number of cache hits
19
+ * @property {number} misses - Number of cache misses
20
+ * @property {number} size - Current cache size in bytes
21
+ * @property {number} entries - Number of cache entries
22
+ * @property {Record<string, number>} hitRate - Hit rate by cache type
23
+ */
24
+ /**
25
+ * @typedef {Object} CacheOptions
26
+ * @property {number} [maxCacheSize=1000] - Maximum number of entries per cache type
27
+ * @property {number} [maxMemoryMB=100] - Maximum memory usage in MB
28
+ * @property {number} [ttlMs=300000] - Default time-to-live in milliseconds (5 minutes)
29
+ * @property {boolean} [enableStatistics=true] - Whether to collect usage statistics
30
+ */
31
+ /**
32
+ * Creates a new CacheManager instance
33
+ * @param {CacheOptions} [options] - Configuration options
34
+ * @returns {Object} Cache manager instance
35
+ */
36
+ export function createCacheManager(options?: CacheOptions): Object;
37
+ export const cacheManager: Object;
38
+ export namespace CacheManager {
39
+ export { createCacheManager as create };
40
+ }
41
+ export type CacheEntry = {
42
+ /**
43
+ * - The cached value
44
+ */
45
+ value: any;
46
+ /**
47
+ * - When the entry was created
48
+ */
49
+ timestamp: number;
50
+ /**
51
+ * - Last access time
52
+ */
53
+ lastAccess: number;
54
+ /**
55
+ * - Approximate size in bytes
56
+ */
57
+ size: number;
58
+ /**
59
+ * - Additional metadata
60
+ */
61
+ metadata: Object;
62
+ /**
63
+ * - Number of times accessed
64
+ */
65
+ accessCount: number;
66
+ };
67
+ export type CacheStats = {
68
+ /**
69
+ * - Number of cache hits
70
+ */
71
+ hits: number;
72
+ /**
73
+ * - Number of cache misses
74
+ */
75
+ misses: number;
76
+ /**
77
+ * - Current cache size in bytes
78
+ */
79
+ size: number;
80
+ /**
81
+ * - Number of cache entries
82
+ */
83
+ entries: number;
84
+ /**
85
+ * - Hit rate by cache type
86
+ */
87
+ hitRate: Record<string, number>;
88
+ };
89
+ export type CacheOptions = {
90
+ /**
91
+ * - Maximum number of entries per cache type
92
+ */
93
+ maxCacheSize?: number | undefined;
94
+ /**
95
+ * - Maximum memory usage in MB
96
+ */
97
+ maxMemoryMB?: number | undefined;
98
+ /**
99
+ * - Default time-to-live in milliseconds (5 minutes)
100
+ */
101
+ ttlMs?: number | undefined;
102
+ /**
103
+ * - Whether to collect usage statistics
104
+ */
105
+ enableStatistics?: boolean | undefined;
106
+ };
107
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../../src/performance/cache-manager.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AACH,6CAHW,YAAY,GACV,MAAM,CAkTlB;AAGD,kCAAiD;;;;;;;;WAjVnC,GAAG;;;;eACH,MAAM;;;;gBACN,MAAM;;;;UACN,MAAM;;;;cACN,MAAM;;;;iBACN,MAAM;;;;;;UAKN,MAAM;;;;YACN,MAAM;;;;UACN,MAAM;;;;aACN,MAAM;;;;aACN,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC"}