@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,314 @@
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 = {}) {
37
+ const { maxCacheSize = 1000, maxMemoryMB = 100, ttlMs = 1000 * 60 * 5, // 5 minutes
38
+ enableStatistics = true } = options;
39
+ // Internal state
40
+ const caches = {
41
+ static: new Map(), // Never-changing components
42
+ component: new Map(), // Component results with deps
43
+ template: new Map(), // Template strings
44
+ data: new Map() // General purpose data
45
+ };
46
+ let memoryUsage = 0;
47
+ const stats = {
48
+ hits: 0,
49
+ misses: 0,
50
+ hitRate: {
51
+ static: 0,
52
+ component: 0,
53
+ template: 0,
54
+ data: 0
55
+ },
56
+ accessCount: {
57
+ static: 0,
58
+ component: 0,
59
+ template: 0,
60
+ data: 0
61
+ }
62
+ };
63
+ // Cleanup interval (doesn't keep Node.js process alive)
64
+ let cleanupInterval;
65
+ if (typeof setInterval === 'function') {
66
+ cleanupInterval = setInterval(() => cleanup(), 30000);
67
+ if (cleanupInterval.unref) {
68
+ cleanupInterval.unref();
69
+ }
70
+ }
71
+ /**
72
+ * Generate a cache key from component and props
73
+ * @param {any} component - Component or component name
74
+ * @param {Object} [props={}] - Component props
75
+ * @param {Object} [context={}] - Additional context
76
+ * @returns {string} Cache key
77
+ */
78
+ function generateCacheKey(component, props = {}, context = {}) {
79
+ const componentStr = typeof component === 'function'
80
+ ? component.name || component.toString()
81
+ : JSON.stringify(component);
82
+ const propsStr = JSON.stringify(props, Object.keys(_props).sort());
83
+ const contextStr = JSON.stringify(_context);
84
+ const hash = simpleHash(componentStr + propsStr + contextStr);
85
+ return `${extractComponentName(component)}_${hash}`;
86
+ }
87
+ /**
88
+ * Get a value from the cache
89
+ * @param {string} key - Cache key
90
+ * @param {string} [type='component'] - Cache type
91
+ * @returns {any|null} Cached value or null if not found
92
+ */
93
+ function get(key, type = 'component') {
94
+ const cache = caches[type] || caches.component;
95
+ const _entry = cache.get(key);
96
+ if (!entry) {
97
+ stats.misses++;
98
+ if (enableStatistics)
99
+ stats.accessCount[type]++;
100
+ return null;
101
+ }
102
+ // Check TTL
103
+ if (Date.now() - entry.timestamp > ttlMs) {
104
+ cache.delete(key);
105
+ updateMemoryUsage(-entry.size);
106
+ stats.misses++;
107
+ if (enableStatistics)
108
+ stats.accessCount[type]++;
109
+ return null;
110
+ }
111
+ // Update access time and stats
112
+ entry.lastAccess = Date.now();
113
+ entry.accessCount++;
114
+ stats.hits++;
115
+ if (enableStatistics) {
116
+ stats.accessCount[type]++;
117
+ stats.hitRate[type] = (stats.hits / (stats.hits + stats.misses)) * 100;
118
+ }
119
+ return entry.value;
120
+ }
121
+ /**
122
+ * Store a value in the cache
123
+ * @param {string} key - Cache key
124
+ * @param {any} value - Value to cache
125
+ * @param {string} [type='component'] - Cache type
126
+ * @param {Object} [metadata={}] - Additional metadata
127
+ */
128
+ function set(key, value, type = 'component', metadata = {}) {
129
+ const cache = caches[type] || caches.component;
130
+ const size = calculateSize(value);
131
+ // Check memory limits
132
+ if (memoryUsage + size > maxMemoryMB * 1024 * 1024) {
133
+ optimize(type, size);
134
+ }
135
+ const _entry = {
136
+ value,
137
+ timestamp: Date.now(),
138
+ lastAccess: Date.now(),
139
+ size,
140
+ metadata,
141
+ accessCount: 0
142
+ };
143
+ // Remove existing entry if it exists
144
+ const existing = cache.get(key);
145
+ if (existing) {
146
+ updateMemoryUsage(-existing.size);
147
+ }
148
+ cache.set(key, entry);
149
+ updateMemoryUsage(size);
150
+ // Enforce cache size limits
151
+ if (cache.size > maxCacheSize) {
152
+ optimize(type);
153
+ }
154
+ }
155
+ /**
156
+ * Remove an entry from the cache
157
+ * @param {string} key - Cache key
158
+ * @param {string} [type] - Cache type (optional, checks all caches if not provided)
159
+ * @returns {boolean} True if an entry was removed
160
+ */
161
+ function remove(key, type) {
162
+ if (type) {
163
+ const cache = caches[type];
164
+ if (!cache)
165
+ return false;
166
+ const _entry = cache.get(key);
167
+ if (entry) {
168
+ updateMemoryUsage(-entry.size);
169
+ return cache.delete(key);
170
+ }
171
+ return false;
172
+ }
173
+ // Check all caches if no type specified
174
+ for (const [, cache] of Object.entries(caches)) {
175
+ const _entry = cache.get(key);
176
+ if (entry) {
177
+ updateMemoryUsage(-entry.size);
178
+ return cache.delete(key);
179
+ }
180
+ }
181
+ return false;
182
+ }
183
+ /**
184
+ * Clear all caches or a specific cache type
185
+ * @param {string} [type] - Cache type to clear (optional, clears all if not provided)
186
+ */
187
+ function clear(type) {
188
+ if (type) {
189
+ const cache = caches[type];
190
+ if (cache) {
191
+ cache.clear();
192
+ }
193
+ }
194
+ else {
195
+ Object.values(caches).forEach(cache => cache.clear());
196
+ }
197
+ memoryUsage = 0;
198
+ }
199
+ /**
200
+ * Get cache statistics
201
+ * @returns {CacheStats} Cache statistics
202
+ */
203
+ function getStats() {
204
+ const entries = Object.values(caches).reduce((sum, cache) => sum + cache.size, 0);
205
+ return {
206
+ hits: stats.hits,
207
+ misses: stats.misses,
208
+ size: memoryUsage,
209
+ entries,
210
+ hitRate: stats.hitRate,
211
+ accessCount: stats.accessCount
212
+ };
213
+ }
214
+ /**
215
+ * Clean up expired entries
216
+ */
217
+ function cleanup() {
218
+ const now = Date.now();
219
+ let freed = 0;
220
+ for (const [, cache] of Object.entries(caches)) {
221
+ for (const [key, entry] of cache.entries()) {
222
+ if (now - entry.timestamp > ttlMs) {
223
+ cache.delete(key);
224
+ updateMemoryUsage(-entry.size);
225
+ freed++;
226
+ }
227
+ }
228
+ }
229
+ return { freed };
230
+ }
231
+ // Internal helper functions
232
+ function calculateSize(value) {
233
+ if (value === null || value === undefined)
234
+ return 0;
235
+ if (typeof value === 'string')
236
+ return value.length * 2; // UTF-16
237
+ if (typeof value === 'number')
238
+ return 8; // 64-bit float
239
+ if (typeof value === 'boolean')
240
+ return 4;
241
+ if (Array.isArray(value)) {
242
+ return value.reduce((sum, item) => sum + calculateSize(item), 0);
243
+ }
244
+ if (typeof value === 'object') {
245
+ return Object.values(value).reduce((sum, val) => sum + calculateSize(val), 0);
246
+ }
247
+ return 0;
248
+ }
249
+ function updateMemoryUsage(delta) {
250
+ memoryUsage = Math.max(0, memoryUsage + delta);
251
+ }
252
+ function optimize(type, requiredSpace = 0) {
253
+ const cache = caches[type] || caches.component;
254
+ const entries = Array.from(cache.entries())
255
+ .sort(([, a], [, b]) => a.lastAccess - b.lastAccess);
256
+ let freed = 0;
257
+ for (const [key, entry] of entries) {
258
+ if (freed >= requiredSpace)
259
+ break;
260
+ cache.delete(key);
261
+ updateMemoryUsage(-entry.size);
262
+ freed += entry.size;
263
+ }
264
+ return { freed };
265
+ }
266
+ function simpleHash(str) {
267
+ let hash = 0;
268
+ for (let i = 0; i < str.length; i++) {
269
+ const char = str.charCodeAt(i);
270
+ hash = ((hash << 5) - hash) + char;
271
+ hash = hash & hash; // Convert to 32-bit integer
272
+ }
273
+ return Math.abs(hash).toString(36);
274
+ }
275
+ function extractComponentName(component) {
276
+ if (typeof component === 'function') {
277
+ return component.name || 'AnonymousComponent';
278
+ }
279
+ if (component && typeof component === 'object') {
280
+ const keys = Object.keys(component);
281
+ return keys.length > 0 ? keys[0] : 'ObjectComponent';
282
+ }
283
+ return 'UnknownComponent';
284
+ }
285
+ // Clean up on destroy
286
+ function destroy() {
287
+ if (cleanupInterval) {
288
+ clearInterval(cleanupInterval);
289
+ }
290
+ clear();
291
+ }
292
+ // Public API
293
+ return {
294
+ get,
295
+ set,
296
+ remove,
297
+ clear,
298
+ getStats,
299
+ cleanup,
300
+ destroy,
301
+ generateCacheKey,
302
+ get memoryUsage() {
303
+ return memoryUsage;
304
+ },
305
+ get maxMemory() {
306
+ return maxMemoryMB * 1024 * 1024;
307
+ }
308
+ };
309
+ }
310
+ // Create a default instance for convenience
311
+ export const cacheManager = createCacheManager();
312
+ // For backward compatibility
313
+ export const CacheManager = { create: createCacheManager };
314
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../../../src/performance/cache-manager.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Create a new component cache instance
3
+ */
4
+ export function createComponentCache(options?: {}): ComponentCache;
5
+ /**
6
+ * Memoization decorator for components
7
+ */
8
+ export function memoize(component: any, keyGenerator: any, options?: {}): (...args: any[]) => any;
9
+ /**
10
+ * Component Cache Manager with intelligent invalidation
11
+ */
12
+ export class ComponentCache {
13
+ constructor(options?: {});
14
+ options: {
15
+ maxSize: any;
16
+ defaultTTL: any;
17
+ cleanupInterval: any;
18
+ enableStats: boolean;
19
+ };
20
+ cache: Map<any, any>;
21
+ dependencies: Map<any, any>;
22
+ stats: {
23
+ hits: number;
24
+ misses: number;
25
+ evictions: number;
26
+ cleanups: number;
27
+ invalidations: number;
28
+ };
29
+ cleanupTimer: NodeJS.Timeout | undefined;
30
+ /**
31
+ * Generate cache key from component and props
32
+ */
33
+ generateKey(component: any, props?: {}, context?: {}): string;
34
+ /**
35
+ * Serialize component for cache key generation
36
+ */
37
+ serializeComponent(component: any, maxDepth?: number, currentDepth?: number): any;
38
+ /**
39
+ * Get component from cache
40
+ */
41
+ get(key: any, dependencies?: any[]): any;
42
+ /**
43
+ * Set component in cache
44
+ */
45
+ set(key: any, component: any, options?: {}): boolean;
46
+ /**
47
+ * Check if component exists in cache
48
+ */
49
+ has(key: any): any;
50
+ /**
51
+ * Invalidate cache entries by dependency
52
+ */
53
+ invalidate(dependency: any): number;
54
+ /**
55
+ * Invalidate multiple dependencies
56
+ */
57
+ invalidateMultiple(dependencies: any): number;
58
+ /**
59
+ * Clear entire cache
60
+ */
61
+ clear(): number;
62
+ /**
63
+ * Add dependency mapping
64
+ */
65
+ addDependencyMapping(dependency: any, key: any): void;
66
+ /**
67
+ * Remove dependency mappings for a cache key
68
+ */
69
+ removeDependencyMappings(key: any): void;
70
+ /**
71
+ * Evict least recently used entry
72
+ */
73
+ evictLeastUsed(): void;
74
+ /**
75
+ * Cleanup expired entries
76
+ */
77
+ cleanup(): number;
78
+ /**
79
+ * Get cache statistics
80
+ */
81
+ getStats(): {
82
+ size: number;
83
+ maxSize: any;
84
+ hits: number;
85
+ misses: number;
86
+ hitRate: string | number;
87
+ evictions: number;
88
+ cleanups: number;
89
+ invalidations: number;
90
+ dependencies: number;
91
+ memoryUsage: number;
92
+ };
93
+ /**
94
+ * Estimate memory usage (rough approximation)
95
+ */
96
+ estimateMemoryUsage(): number;
97
+ /**
98
+ * Get hot path components (most accessed)
99
+ */
100
+ getHotComponents(limit?: number): {
101
+ key: any;
102
+ accessCount: any;
103
+ component: any;
104
+ dependencies: any[];
105
+ }[];
106
+ /**
107
+ * Get cache recommendations
108
+ */
109
+ getRecommendations(): {
110
+ type: string;
111
+ message: string;
112
+ priority: string;
113
+ }[];
114
+ /**
115
+ * Destroy cache and cleanup
116
+ */
117
+ destroy(): void;
118
+ }
119
+ export default ComponentCache;
120
+ //# sourceMappingURL=component-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-cache.d.ts","sourceRoot":"","sources":["../../../../src/performance/component-cache.js"],"names":[],"mappings":"AA2YA;;GAEG;AACH,mEAEC;AAED;;GAEG;AACH,2EAMsC,GAAG,WAAI,SAY5C;AA3XD;;GAEG;AACH;IACI,0BAyBC;IAxBG;;;;;MAMC;IAED,qBAAsB;IACtB,4BAA6B;IAC7B;;;;;;MAMC;IAIG,yCAEgC;IAIxC;;OAEG;IACH,8DAiBC;IAED;;OAEG;IACH,kFAyBC;IAED;;OAEG;IACH,yCA2BC;IAED;;OAEG;IACH,qDAoBC;IAED;;OAEG;IACH,mBAGC;IAED;;OAEG;IACH,oCAgBC;IAED;;OAEG;IACH,8CAMC;IAED;;OAEG;IACH,gBAKC;IAED;;OAEG;IACH,sDAKC;IAED;;OAEG;IACH,yCAOC;IAED;;OAEG;IACH,uBAgBC;IAED;;OAEG;IACH,kBAqBC;IAED;;OAEG;IACH;;;;;;;;;;;MAcC;IAED;;OAEG;IACH,8BAOC;IAED;;OAEG;IACH;;;;;QAWC;IAED;;OAEG;IACH;;;;QA6BC;IAED;;OAEG;IACH,gBAKC;CACJ"}