@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,502 @@
1
+ /**
2
+ * Core Object Utilities for Coherent.js
3
+ * Handles object validation, manipulation, and analysis
4
+ */
5
+ /**
6
+ * Deep clone an object with optimizations for common patterns
7
+ * Handles circular references, functions, dates, regex, and more
8
+ */
9
+ export function deepClone(obj, seen = new WeakMap()) {
10
+ // Handle primitives
11
+ if (obj === null || typeof obj !== 'object') {
12
+ return obj;
13
+ }
14
+ // Handle circular references
15
+ if (seen.has(obj)) {
16
+ return seen.get(obj);
17
+ }
18
+ // Handle Date objects
19
+ if (obj instanceof Date) {
20
+ return new Date(obj.getTime());
21
+ }
22
+ // Handle RegExp objects
23
+ if (obj instanceof RegExp) {
24
+ return new RegExp(obj.source, obj.flags);
25
+ }
26
+ // Handle Array objects
27
+ if (Array.isArray(obj)) {
28
+ const clonedArray = [];
29
+ seen.set(obj, clonedArray);
30
+ for (let i = 0; i < obj.length; i++) {
31
+ clonedArray[i] = deepClone(obj[i], seen);
32
+ }
33
+ return clonedArray;
34
+ }
35
+ // Handle Function objects (preserve reference for performance)
36
+ if (typeof obj === 'function') {
37
+ // For Coherent components, we typically want to preserve function references
38
+ // rather than cloning them, as they represent behavior
39
+ return obj;
40
+ }
41
+ // Handle Map objects
42
+ if (obj instanceof Map) {
43
+ const clonedMap = new Map();
44
+ seen.set(obj, clonedMap);
45
+ for (const [key, value] of obj) {
46
+ clonedMap.set(deepClone(key, seen), deepClone(value, seen));
47
+ }
48
+ return clonedMap;
49
+ }
50
+ // Handle Set objects
51
+ if (obj instanceof Set) {
52
+ const clonedSet = new Set();
53
+ seen.set(obj, clonedSet);
54
+ for (const value of obj) {
55
+ clonedSet.add(deepClone(value, seen));
56
+ }
57
+ return clonedSet;
58
+ }
59
+ // Handle WeakMap and WeakSet (cannot be cloned, return new empty instance)
60
+ if (obj instanceof WeakMap) {
61
+ return new WeakMap();
62
+ }
63
+ if (obj instanceof WeakSet) {
64
+ return new WeakSet();
65
+ }
66
+ // Handle plain objects and other object types
67
+ const clonedObj = {};
68
+ seen.set(obj, clonedObj);
69
+ // Handle objects with custom prototypes
70
+ if (obj.constructor && obj.constructor !== Object) {
71
+ try {
72
+ // Attempt to create instance with same constructor
73
+ clonedObj.__proto__ = obj.__proto__;
74
+ }
75
+ catch {
76
+ // Fallback to Object.create if direct prototype assignment fails
77
+ Object.setPrototypeOf(clonedObj, Object.getPrototypeOf(obj));
78
+ }
79
+ }
80
+ // Clone all enumerable properties
81
+ for (const key in obj) {
82
+ if (obj.hasOwnProperty(key)) {
83
+ clonedObj[key] = deepClone(obj[key], seen);
84
+ }
85
+ }
86
+ // Clone non-enumerable properties (important for some objects)
87
+ const descriptors = Object.getOwnPropertyDescriptors(obj);
88
+ for (const key of Object.keys(descriptors)) {
89
+ if (!descriptors[key].enumerable && descriptors[key].configurable) {
90
+ try {
91
+ Object.defineProperty(clonedObj, key, {
92
+ ...descriptors[key],
93
+ value: deepClone(descriptors[key].value, seen)
94
+ });
95
+ }
96
+ catch {
97
+ // Skip properties that can't be cloned
98
+ }
99
+ }
100
+ }
101
+ return clonedObj;
102
+ }
103
+ /**
104
+ * Shallow clone optimized for Coherent objects
105
+ * Much faster than deep clone when you only need one level
106
+ */
107
+ export function shallowClone(obj) {
108
+ if (obj === null || typeof obj !== 'object') {
109
+ return obj;
110
+ }
111
+ if (Array.isArray(obj)) {
112
+ return [...obj];
113
+ }
114
+ if (obj instanceof Date) {
115
+ return new Date(obj.getTime());
116
+ }
117
+ if (obj instanceof RegExp) {
118
+ return new RegExp(obj.source, obj.flags);
119
+ }
120
+ // For objects, spread operator is fastest for shallow clone
121
+ return { ...obj };
122
+ }
123
+ /**
124
+ * Smart clone that chooses between shallow and deep based on structure
125
+ * Optimized for Coherent component patterns
126
+ */
127
+ export function smartClone(obj, maxDepth = 10, currentDepth = 0) {
128
+ // Prevent infinite recursion
129
+ if (currentDepth >= maxDepth) {
130
+ return shallowClone(obj);
131
+ }
132
+ // Use shallow clone for simple structures
133
+ if (typeof obj !== 'object' || obj === null) {
134
+ return obj;
135
+ }
136
+ // For arrays, check if elements need deep cloning
137
+ if (Array.isArray(obj)) {
138
+ const needsDeepClone = obj.some(item => typeof item === 'object' && item !== null && !isSimpleObject(item));
139
+ if (!needsDeepClone && currentDepth < 3) {
140
+ return obj.map(item => smartClone(item, maxDepth, currentDepth + 1));
141
+ }
142
+ else {
143
+ return obj.map(item => shallowClone(item));
144
+ }
145
+ }
146
+ // For Coherent objects, intelligently clone based on content
147
+ if (isCoherentObject(obj)) {
148
+ const cloned = {};
149
+ for (const [tag, props] of Object.entries(obj)) {
150
+ if (props && typeof props === 'object') {
151
+ // Deep clone children, shallow clone other props
152
+ if (props.children) {
153
+ cloned[tag] = {
154
+ ...props,
155
+ children: smartClone(props.children, maxDepth, currentDepth + 1)
156
+ };
157
+ }
158
+ else {
159
+ cloned[tag] = shallowClone(_props);
160
+ }
161
+ }
162
+ else {
163
+ cloned[tag] = props;
164
+ }
165
+ }
166
+ return cloned;
167
+ }
168
+ // Fallback to shallow clone for other objects
169
+ return shallowClone(obj);
170
+ }
171
+ /**
172
+ * Check if object is a simple structure (no nested objects/arrays)
173
+ */
174
+ function isSimpleObject(obj) {
175
+ if (typeof obj !== 'object' || obj === null) {
176
+ return true;
177
+ }
178
+ if (Array.isArray(obj)) {
179
+ return obj.every(item => typeof item !== 'object' || item === null);
180
+ }
181
+ return Object.values(obj).every(value => typeof value !== 'object' || value === null || value instanceof Date || value instanceof RegExp);
182
+ }
183
+ /**
184
+ * Clone with performance monitoring
185
+ * Useful for debugging clone performance in development
186
+ */
187
+ export function monitoredClone(obj, options = {}) {
188
+ const { method = 'deep', logTiming = false, maxDepth = 10 } = options;
189
+ const start = performance.now();
190
+ let result;
191
+ switch (method) {
192
+ case 'shallow':
193
+ result = shallowClone(obj);
194
+ break;
195
+ case 'smart':
196
+ result = smartClone(obj, maxDepth);
197
+ break;
198
+ case 'deep':
199
+ default:
200
+ result = deepClone(obj);
201
+ break;
202
+ }
203
+ const end = performance.now();
204
+ if (logTiming) {
205
+ console.log(`🔄 ${method} clone took ${(end - start).toFixed(2)}ms`);
206
+ }
207
+ return result;
208
+ }
209
+ // Rest of your existing object-utils.js code...
210
+ /**
211
+ * Validate that a component structure is valid for rendering
212
+ */
213
+ export function validateComponent(component, path = 'root') {
214
+ if (component === null || component === undefined) {
215
+ throw new Error(`Invalid component at ${path}: null or undefined`);
216
+ }
217
+ // Allow strings, numbers, booleans as text content
218
+ if (['string', 'number', 'boolean'].includes(typeof component)) {
219
+ return true;
220
+ }
221
+ // Allow functions (will be evaluated during render)
222
+ if (typeof component === 'function') {
223
+ return true;
224
+ }
225
+ // Handle arrays
226
+ if (Array.isArray(component)) {
227
+ component.forEach((child, index) => {
228
+ validateComponent(child, `${path}[${index}]`);
229
+ });
230
+ return true;
231
+ }
232
+ // Handle objects
233
+ if (typeof component === 'object') {
234
+ const keys = Object.keys(component);
235
+ if (keys.length === 0) {
236
+ throw new Error(`Empty object at ${path}`);
237
+ }
238
+ keys.forEach(key => {
239
+ const value = component[key];
240
+ // Validate HTML tag names (basic validation)
241
+ if (!/^[a-zA-Z][a-zA-Z0-9-]*$/.test(key) && key !== 'text') {
242
+ console.warn(`Potentially invalid tag name at ${path}: ${key}`);
243
+ }
244
+ // If value is an object, it should be props
245
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
246
+ // Validate children if present
247
+ if (value.children) {
248
+ validateComponent(value.children, `${path}.${key}.children`);
249
+ }
250
+ }
251
+ else if (value && typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'function') {
252
+ throw new Error(`Invalid value type at ${path}.${key}: ${typeof value}`);
253
+ }
254
+ });
255
+ return true;
256
+ }
257
+ throw new Error(`Invalid component type at ${path}: ${typeof component}`);
258
+ }
259
+ /**
260
+ * Check if an object follows Coherent.js object syntax
261
+ */
262
+ export function isCoherentObject(obj) {
263
+ if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
264
+ return false;
265
+ }
266
+ const keys = Object.keys(obj);
267
+ // Empty objects are not coherent objects
268
+ if (keys.length === 0) {
269
+ return false;
270
+ }
271
+ // Check if all keys look like HTML tags or 'text'
272
+ return keys.every(key => {
273
+ // Allow 'text' as a special key
274
+ if (key === 'text')
275
+ return true;
276
+ // Basic HTML tag validation
277
+ return /^[a-zA-Z][a-zA-Z0-9-]*$/.test(key);
278
+ });
279
+ }
280
+ /**
281
+ * Extract props from a Coherent object
282
+ */
283
+ export function extractProps(coherentObj) {
284
+ if (!isCoherentObject(coherentObj)) {
285
+ return {};
286
+ }
287
+ const props = {};
288
+ const keys = Object.keys(coherentObj);
289
+ keys.forEach(tag => {
290
+ const value = coherentObj[tag];
291
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
292
+ props[tag] = { ...value };
293
+ }
294
+ else {
295
+ props[tag] = { text: value };
296
+ }
297
+ });
298
+ return props;
299
+ }
300
+ /**
301
+ * Check if a component has children
302
+ */
303
+ export function hasChildren(component) {
304
+ if (Array.isArray(component)) {
305
+ return component.length > 0;
306
+ }
307
+ if (isCoherentObject(component)) {
308
+ // First check if the component itself has a children property
309
+ if (component.children !== undefined && component.children !== null) {
310
+ return Array.isArray(component.children) ? component.children.length > 0 : true;
311
+ }
312
+ // Then check if any of its properties have children
313
+ const keys = Object.keys(component);
314
+ return keys.some(key => {
315
+ const value = component[key];
316
+ return value && typeof value === 'object' && value.children;
317
+ });
318
+ }
319
+ return false;
320
+ }
321
+ /**
322
+ * Normalize children to a consistent array format
323
+ */
324
+ export function normalizeChildren(children) {
325
+ if (children === null || children === undefined) {
326
+ return [];
327
+ }
328
+ if (Array.isArray(children)) {
329
+ return children.flat().filter(child => child !== null && child !== undefined);
330
+ }
331
+ return [children];
332
+ }
333
+ /**
334
+ * Get children from a component's props
335
+ */
336
+ export function getChildren(_props) {
337
+ if (!props || typeof props !== 'object') {
338
+ return [];
339
+ }
340
+ if (props.children === undefined) {
341
+ return [];
342
+ }
343
+ return normalizeChildren(props.children);
344
+ }
345
+ /**
346
+ * Merge props objects with conflict resolution
347
+ */
348
+ export function mergeProps(base = {}, override = {}) {
349
+ const merged = { ...base };
350
+ Object.keys(override).forEach(key => {
351
+ if (key === 'children') {
352
+ // Merge children arrays
353
+ const baseChildren = normalizeChildren(base.children);
354
+ const overrideChildren = normalizeChildren(override.children);
355
+ merged.children = [...baseChildren, ...overrideChildren];
356
+ }
357
+ else if (key === 'className' && base.className) {
358
+ // Merge class names
359
+ merged.className = `${base.className} ${override.className}`;
360
+ }
361
+ else if (key === 'style' && base.style && typeof base.style === 'object') {
362
+ // Merge style objects
363
+ merged.style = { ...base.style, ...override.style };
364
+ }
365
+ else {
366
+ // Override other properties
367
+ merged[key] = override[key];
368
+ }
369
+ });
370
+ return merged;
371
+ }
372
+ /**
373
+ * Get nested value from object using dot notation
374
+ */
375
+ export function getNestedValue(obj, path) {
376
+ if (!obj || typeof path !== 'string') {
377
+ return undefined;
378
+ }
379
+ return path.split('.').reduce((current, key) => {
380
+ return current && current[key] !== undefined ? current[key] : undefined;
381
+ }, obj);
382
+ }
383
+ /**
384
+ * Set nested value in object using dot notation
385
+ */
386
+ export function setNestedValue(obj, path, value) {
387
+ if (!obj || typeof path !== 'string') {
388
+ return obj;
389
+ }
390
+ const keys = path.split('.');
391
+ const lastKey = keys.pop();
392
+ const target = keys.reduce((current, key) => {
393
+ if (!current[key] || typeof current[key] !== 'object') {
394
+ current[key] = {};
395
+ }
396
+ return current[key];
397
+ }, obj);
398
+ target[lastKey] = value;
399
+ return obj;
400
+ }
401
+ /**
402
+ * Compare two components for equality (useful for optimization)
403
+ */
404
+ export function isEqual(a, b, maxDepth = 5, currentDepth = 0) {
405
+ // Prevent deep comparisons that are too expensive
406
+ if (currentDepth > maxDepth) {
407
+ return a === b;
408
+ }
409
+ if (a === b)
410
+ return true;
411
+ if (a === null || b === null || a === undefined || b === undefined)
412
+ return false;
413
+ if (typeof a !== typeof b)
414
+ return false;
415
+ if (typeof a === 'function') {
416
+ // Functions are compared by reference
417
+ return a === b;
418
+ }
419
+ if (Array.isArray(a)) {
420
+ if (!Array.isArray(b) || a.length !== b.length)
421
+ return false;
422
+ return a.every((item, i) => isEqual(item, b[i], maxDepth, currentDepth + 1));
423
+ }
424
+ if (typeof a === 'object') {
425
+ const keysA = Object.keys(a);
426
+ const keysB = Object.keys(b);
427
+ if (keysA.length !== keysB.length)
428
+ return false;
429
+ return keysA.every(key => keysB.includes(key) &&
430
+ isEqual(a[key], b[key], maxDepth, currentDepth + 1));
431
+ }
432
+ return false;
433
+ }
434
+ /**
435
+ * Create a frozen (immutable) version of a component
436
+ */
437
+ export function freeze(obj) {
438
+ if (obj && typeof obj === 'object') {
439
+ Object.freeze(obj);
440
+ // Recursively freeze nested objects
441
+ Object.values(obj).forEach(value => {
442
+ if (value && typeof value === 'object') {
443
+ freeze(value);
444
+ }
445
+ });
446
+ }
447
+ return obj;
448
+ }
449
+ /**
450
+ * Check if component tree contains circular references
451
+ */
452
+ export function hasCircularReferences(obj, seen = new WeakSet()) {
453
+ if (obj && typeof obj === 'object') {
454
+ if (seen.has(obj)) {
455
+ return true;
456
+ }
457
+ seen.add(obj);
458
+ for (const value of Object.values(obj)) {
459
+ if (hasCircularReferences(value, seen)) {
460
+ return true;
461
+ }
462
+ }
463
+ }
464
+ return false;
465
+ }
466
+ /**
467
+ * Get memory footprint estimate of a component tree
468
+ */
469
+ export function getMemoryFootprint(obj, visited = new WeakSet()) {
470
+ if (obj === null || obj === undefined)
471
+ return 0;
472
+ if (visited.has(obj))
473
+ return 0;
474
+ let size = 0;
475
+ if (typeof obj === 'string') {
476
+ size = obj.length * 2; // Rough estimate: 2 bytes per character
477
+ }
478
+ else if (typeof obj === 'number') {
479
+ size = 8; // 64-bit number
480
+ }
481
+ else if (typeof obj === 'boolean') {
482
+ size = 4; // Boolean
483
+ }
484
+ else if (typeof obj === 'object') {
485
+ visited.add(obj);
486
+ size = 48; // Base object overhead
487
+ if (Array.isArray(obj)) {
488
+ size += obj.length * 8; // Array overhead
489
+ obj.forEach(item => {
490
+ size += getMemoryFootprint(item, visited);
491
+ });
492
+ }
493
+ else {
494
+ Object.keys(obj).forEach(key => {
495
+ size += key.length * 2; // Key string
496
+ size += getMemoryFootprint(obj[key], visited);
497
+ });
498
+ }
499
+ }
500
+ return size;
501
+ }
502
+ //# sourceMappingURL=object-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-utils.js","sourceRoot":"","sources":["../../../../src/core/object-utils.js"],"names":[],"mappings":"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"}