@signaltree/enterprise 4.0.9 → 4.0.12
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.
- package/package.json +1 -1
- package/src/index.js +10 -0
- package/src/index.js.map +1 -0
- package/src/lib/diff-engine.d.ts +108 -0
- package/src/lib/diff-engine.js +236 -0
- package/src/lib/diff-engine.js.map +1 -0
- package/src/lib/enterprise-enhancer.d.ts +81 -0
- package/src/lib/enterprise-enhancer.js +78 -0
- package/src/lib/enterprise-enhancer.js.map +1 -0
- package/src/lib/enterprise.d.ts +1 -0
- package/src/lib/enterprise.js +7 -0
- package/src/lib/enterprise.js.map +1 -0
- package/src/lib/path-index.d.ts +119 -0
- package/src/lib/path-index.js +265 -0
- package/src/lib/path-index.js.map +1 -0
- package/src/lib/scheduler.d.ts +2 -0
- package/src/lib/scheduler.js +25 -0
- package/src/lib/scheduler.js.map +1 -0
- package/src/lib/thread-pools.d.ts +4 -0
- package/src/lib/thread-pools.js +14 -0
- package/src/lib/thread-pools.js.map +1 -0
- package/src/lib/update-engine.d.ts +115 -0
- package/src/lib/update-engine.js +287 -0
- package/src/lib/update-engine.js.map +1 -0
- package/src/test-setup.d.ts +1 -0
- package/src/test-setup.js +8 -0
- package/src/test-setup.js.map +1 -0
- package/LICENSE +0 -54
- package/src/lib/diff-engine.spec.ts +0 -384
- package/src/lib/diff-engine.ts +0 -351
- package/src/lib/enterprise-enhancer.ts +0 -136
- package/src/lib/enterprise.spec.ts +0 -7
- package/src/lib/enterprise.ts +0 -3
- package/src/lib/path-index.spec.ts +0 -290
- package/src/lib/path-index.ts +0 -320
- package/src/lib/scheduler.ts +0 -16
- package/src/lib/thread-pools.ts +0 -11
- package/src/lib/update-engine.spec.ts +0 -93
- package/src/lib/update-engine.ts +0 -399
- package/src/test-setup.ts +0 -6
- package/src/types/signaltree-core.d.ts +0 -4
- /package/src/{index.ts → index.d.ts} +0 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OptimizedUpdateEngine = void 0;
|
|
4
|
+
const core_1 = require("@angular/core");
|
|
5
|
+
const diff_engine_1 = require("./diff-engine");
|
|
6
|
+
const path_index_1 = require("./path-index");
|
|
7
|
+
/**
|
|
8
|
+
* OptimizedUpdateEngine
|
|
9
|
+
*
|
|
10
|
+
* High-performance update engine using path indexing and diffing to minimize
|
|
11
|
+
* unnecessary signal updates.
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Diff-based updates (only update what changed)
|
|
15
|
+
* - Path indexing for O(k) lookups
|
|
16
|
+
* - Automatic batching for large updates
|
|
17
|
+
* - Priority-based patch ordering
|
|
18
|
+
* - Skip unchanged values
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const tree = signalTree(data, { useLazySignals: true });
|
|
23
|
+
* const engine = new OptimizedUpdateEngine(tree);
|
|
24
|
+
*
|
|
25
|
+
* // Optimized update - only changes what's different
|
|
26
|
+
* const result = engine.update({
|
|
27
|
+
* user: { name: 'Alice' } // Only updates if name changed
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* console.log(result.changedPaths); // ['user.name']
|
|
31
|
+
* console.log(result.duration); // ~2ms
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
class OptimizedUpdateEngine {
|
|
35
|
+
constructor(tree) {
|
|
36
|
+
this.pathIndex = new path_index_1.PathIndex();
|
|
37
|
+
this.diffEngine = new diff_engine_1.DiffEngine();
|
|
38
|
+
// Build initial index
|
|
39
|
+
this.pathIndex.buildFromTree(tree);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Update tree with optimizations
|
|
43
|
+
*
|
|
44
|
+
* @param tree - Current tree state
|
|
45
|
+
* @param updates - Updates to apply
|
|
46
|
+
* @param options - Update options
|
|
47
|
+
* @returns Update result
|
|
48
|
+
*/
|
|
49
|
+
update(tree, updates, options = {}) {
|
|
50
|
+
const startTime = performance.now();
|
|
51
|
+
// Step 1: Generate diff to find actual changes
|
|
52
|
+
const diffOptions = {};
|
|
53
|
+
if (options.maxDepth !== undefined)
|
|
54
|
+
diffOptions.maxDepth = options.maxDepth;
|
|
55
|
+
if (options.ignoreArrayOrder !== undefined)
|
|
56
|
+
diffOptions.ignoreArrayOrder = options.ignoreArrayOrder;
|
|
57
|
+
if (options.equalityFn !== undefined)
|
|
58
|
+
diffOptions.equalityFn = options.equalityFn;
|
|
59
|
+
const diff = this.diffEngine.diff(tree, updates, diffOptions);
|
|
60
|
+
if (diff.changes.length === 0) {
|
|
61
|
+
// No actual changes, skip update entirely
|
|
62
|
+
return {
|
|
63
|
+
changed: false,
|
|
64
|
+
duration: performance.now() - startTime,
|
|
65
|
+
changedPaths: [],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Step 2: Convert diff to optimized patches
|
|
69
|
+
const patches = this.createPatches(diff.changes);
|
|
70
|
+
// Step 3: Sort patches for optimal application order
|
|
71
|
+
const sortedPatches = this.sortPatches(patches);
|
|
72
|
+
// Step 4: Apply patches with optional batching
|
|
73
|
+
const result = options.batch
|
|
74
|
+
? this.batchApplyPatches(tree, sortedPatches, options.batchSize)
|
|
75
|
+
: this.applyPatches(tree, sortedPatches);
|
|
76
|
+
const duration = performance.now() - startTime;
|
|
77
|
+
return {
|
|
78
|
+
changed: true,
|
|
79
|
+
duration,
|
|
80
|
+
changedPaths: result.appliedPaths,
|
|
81
|
+
stats: {
|
|
82
|
+
totalPaths: diff.changes.length,
|
|
83
|
+
optimizedPaths: patches.length,
|
|
84
|
+
batchedUpdates: result.batchCount,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Rebuild path index from current tree state
|
|
90
|
+
*
|
|
91
|
+
* @param tree - Current tree
|
|
92
|
+
*/
|
|
93
|
+
rebuildIndex(tree) {
|
|
94
|
+
this.pathIndex.clear();
|
|
95
|
+
this.pathIndex.buildFromTree(tree);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get path index statistics
|
|
99
|
+
*/
|
|
100
|
+
getIndexStats() {
|
|
101
|
+
return this.pathIndex.getStats();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Creates optimized patches from diff changes
|
|
105
|
+
*/
|
|
106
|
+
createPatches(changes) {
|
|
107
|
+
const patches = [];
|
|
108
|
+
const processedPaths = new Set();
|
|
109
|
+
for (const change of changes) {
|
|
110
|
+
const pathStr = change.path.join('.');
|
|
111
|
+
// Skip if parent path already processed (optimization)
|
|
112
|
+
let skipPath = false;
|
|
113
|
+
for (const processed of processedPaths) {
|
|
114
|
+
if (pathStr.startsWith(processed + '.')) {
|
|
115
|
+
skipPath = true;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (skipPath) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// Create patch based on change type
|
|
123
|
+
const patch = this.createPatch(change);
|
|
124
|
+
patches.push(patch);
|
|
125
|
+
// Mark path as processed
|
|
126
|
+
processedPaths.add(pathStr);
|
|
127
|
+
// If this is an object replacement, skip child paths
|
|
128
|
+
if (change.type === diff_engine_1.ChangeType.REPLACE &&
|
|
129
|
+
typeof change.value === 'object') {
|
|
130
|
+
processedPaths.add(pathStr);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return patches;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Creates a single patch from a change
|
|
137
|
+
*/
|
|
138
|
+
createPatch(change) {
|
|
139
|
+
return {
|
|
140
|
+
type: change.type,
|
|
141
|
+
path: change.path,
|
|
142
|
+
value: change.value,
|
|
143
|
+
oldValue: change.oldValue,
|
|
144
|
+
priority: this.calculatePriority(change),
|
|
145
|
+
signal: this.pathIndex.get(change.path),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Calculates update priority for optimal ordering
|
|
150
|
+
*/
|
|
151
|
+
calculatePriority(change) {
|
|
152
|
+
let priority = 0;
|
|
153
|
+
// Shallow updates have higher priority
|
|
154
|
+
priority += (10 - change.path.length) * 10;
|
|
155
|
+
// Array updates have lower priority (more expensive)
|
|
156
|
+
if (change.path.some((p) => typeof p === 'number')) {
|
|
157
|
+
priority -= 20;
|
|
158
|
+
}
|
|
159
|
+
// Replace operations have higher priority than nested updates
|
|
160
|
+
if (change.type === diff_engine_1.ChangeType.REPLACE) {
|
|
161
|
+
priority += 30;
|
|
162
|
+
}
|
|
163
|
+
return priority;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Sorts patches for optimal application
|
|
167
|
+
*/
|
|
168
|
+
sortPatches(patches) {
|
|
169
|
+
return patches.sort((a, b) => {
|
|
170
|
+
// Sort by priority (higher first)
|
|
171
|
+
if (a.priority !== b.priority) {
|
|
172
|
+
return b.priority - a.priority;
|
|
173
|
+
}
|
|
174
|
+
// Then by path depth (shallow first)
|
|
175
|
+
return a.path.length - b.path.length;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Applies patches directly (no batching)
|
|
180
|
+
*/
|
|
181
|
+
applyPatches(tree, patches) {
|
|
182
|
+
const appliedPaths = [];
|
|
183
|
+
let updateCount = 0;
|
|
184
|
+
for (const patch of patches) {
|
|
185
|
+
if (this.applyPatch(patch, tree)) {
|
|
186
|
+
appliedPaths.push(patch.path.join('.'));
|
|
187
|
+
updateCount++;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
appliedPaths,
|
|
192
|
+
updateCount,
|
|
193
|
+
batchCount: 1,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Applies patches with batching for better performance
|
|
198
|
+
*/
|
|
199
|
+
batchApplyPatches(tree, patches, batchSize = 50) {
|
|
200
|
+
const batches = [];
|
|
201
|
+
for (let i = 0; i < patches.length; i += batchSize) {
|
|
202
|
+
batches.push(patches.slice(i, i + batchSize));
|
|
203
|
+
}
|
|
204
|
+
const appliedPaths = [];
|
|
205
|
+
let updateCount = 0;
|
|
206
|
+
// Process patches in batches
|
|
207
|
+
for (const currentBatch of batches) {
|
|
208
|
+
for (const patch of currentBatch) {
|
|
209
|
+
if (this.applyPatch(patch, tree)) {
|
|
210
|
+
appliedPaths.push(patch.path.join('.'));
|
|
211
|
+
updateCount++;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
appliedPaths,
|
|
217
|
+
updateCount,
|
|
218
|
+
batchCount: batches.length,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Applies a single patch to the tree object
|
|
223
|
+
*/
|
|
224
|
+
applyPatch(patch, tree) {
|
|
225
|
+
try {
|
|
226
|
+
// First, try to update via signal if available
|
|
227
|
+
if (patch.signal && (0, core_1.isSignal)(patch.signal) && 'set' in patch.signal) {
|
|
228
|
+
const currentValue = patch.signal();
|
|
229
|
+
// Only update if value actually changed
|
|
230
|
+
if (this.isEqual(currentValue, patch.value)) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
// Update the signal - this will handle reactivity
|
|
234
|
+
patch.signal.set(patch.value);
|
|
235
|
+
// After successful ADD, update the index
|
|
236
|
+
if (patch.type === diff_engine_1.ChangeType.ADD && patch.value !== undefined) {
|
|
237
|
+
this.pathIndex.set(patch.path, patch.signal);
|
|
238
|
+
}
|
|
239
|
+
return true;
|
|
240
|
+
} // Fallback: Navigate to parent object and update directly
|
|
241
|
+
let current = tree;
|
|
242
|
+
for (let i = 0; i < patch.path.length - 1; i++) {
|
|
243
|
+
const key = patch.path[i];
|
|
244
|
+
current = current[key];
|
|
245
|
+
if (!current || typeof current !== 'object') {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const lastKey = patch.path[patch.path.length - 1];
|
|
250
|
+
// Only update if value actually changed
|
|
251
|
+
if (this.isEqual(current[lastKey], patch.value)) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
// Apply update directly to object
|
|
255
|
+
current[lastKey] = patch.value;
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.error(`Failed to apply patch at ${patch.path.join('.')}:`, error);
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Check equality
|
|
265
|
+
*/
|
|
266
|
+
isEqual(a, b) {
|
|
267
|
+
// Fast path for primitives
|
|
268
|
+
if (a === b) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
if (typeof a !== typeof b) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
if (typeof a !== 'object' || a === null || b === null) {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
// Deep equality for objects (simple version)
|
|
278
|
+
try {
|
|
279
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
280
|
+
}
|
|
281
|
+
catch (_a) {
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
exports.OptimizedUpdateEngine = OptimizedUpdateEngine;
|
|
287
|
+
//# sourceMappingURL=update-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-engine.js","sourceRoot":"","sources":["../../../../../packages/enterprise/src/lib/update-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const zone_1 = require("jest-preset-angular/setup-env/zone");
|
|
4
|
+
(0, zone_1.setupZoneTestEnv)({
|
|
5
|
+
errorOnUnknownElements: true,
|
|
6
|
+
errorOnUnknownProperties: true,
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=test-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../../../packages/enterprise/src/test-setup.ts"],"names":[],"mappings":";;AAAA,6DAAsE;AAEtE,IAAA,uBAAgB,EAAC;IACf,sBAAsB,EAAE,IAAI;IAC5B,wBAAwB,EAAE,IAAI;CAC/B,CAAC,CAAC"}
|
package/LICENSE
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
BUSINESS SOURCE LICENSE 1.1
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Jonathan D Borgia
|
|
4
|
-
|
|
5
|
-
This Business Source License 1.1 ("License") governs the use of the software and associated documentation files (the "Software"). You are granted a limited license to use the Software under the terms of this License.
|
|
6
|
-
|
|
7
|
-
1. Definitions
|
|
8
|
-
|
|
9
|
-
"Change Date" means the date on which the Change License set out in section 6 will apply to the Software. The Change Date for this release is 2028-09-05.
|
|
10
|
-
|
|
11
|
-
"Change License" means the open source license that will apply to the Software on and after the Change Date. The Change License for this release is the MIT License.
|
|
12
|
-
|
|
13
|
-
"Licensor" means the copyright owner granting rights under this License (Jonathan D Borgia).
|
|
14
|
-
|
|
15
|
-
"You" ("Licensee") means an individual or legal entity exercising rights under this License who has not violated the terms of this License or had their rights terminated.
|
|
16
|
-
|
|
17
|
-
2. License Grant
|
|
18
|
-
|
|
19
|
-
Subject to the terms and conditions of this License, Licensor hereby grants You a non-exclusive, non-transferable, worldwide license to use, reproduce, display, perform, and distribute the Software, and to make modifications and derivative works for internal use, until the Change Date.
|
|
20
|
-
|
|
21
|
-
3. Commercial Use
|
|
22
|
-
|
|
23
|
-
You may use the Software in commercial applications, including for providing services, selling products that include the Software, or otherwise exploiting the Software commercially, subject to the other terms of this License.
|
|
24
|
-
|
|
25
|
-
4. Limitations and Conditions
|
|
26
|
-
|
|
27
|
-
a. You may not remove or alter this License, the copyright notice, or notices of the Change Date.
|
|
28
|
-
|
|
29
|
-
b. You may not publicly offer a modified version of the Software that would directly compete with Licensor's public offering of the Software if doing so would circumvent the intent of this License.
|
|
30
|
-
|
|
31
|
-
c. Except as expressly provided in this License, no rights are granted to You under any patent or trademark of Licensor.
|
|
32
|
-
|
|
33
|
-
5. Disclaimer and Limitation of Liability
|
|
34
|
-
|
|
35
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. TO THE FULLEST EXTENT PERMITTED BY LAW, LICENSOR WILL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM OR RELATING TO THE SOFTWARE.
|
|
36
|
-
|
|
37
|
-
6. Change License
|
|
38
|
-
|
|
39
|
-
On and after the Change Date specified above, the Software will be licensed under the Change License (MIT License) on the same terms and conditions as set forth by that Change License.
|
|
40
|
-
|
|
41
|
-
7. Governing Law
|
|
42
|
-
|
|
43
|
-
This License will be governed by and construed in accordance with the laws of the State of New York, USA, without regard to conflict of law principles.
|
|
44
|
-
|
|
45
|
-
8. Accepting this License
|
|
46
|
-
|
|
47
|
-
You accept this License by copying, modifying, or distributing the Software or any portion thereof.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
LICENSE NOTE
|
|
52
|
-
|
|
53
|
-
- Original license file replaced on 2025-09-05 to Business Source License 1.1. Change Date: 2028-09-05. Change License: MIT.
|
|
54
|
-
or standard modifications for your own applications.
|