@adobe/data 0.7.2 → 0.7.4
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/dist/ecs/archetype/archetype.d.ts +3 -3
- package/dist/ecs/archetype/create-archetype.d.ts +4 -4
- package/dist/ecs/archetype/create-archetype.js.map +1 -1
- package/dist/ecs/archetype/create-archetype.test.js +6 -6
- package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
- package/dist/ecs/archetype/delete-row.d.ts +2 -2
- package/dist/ecs/archetype/delete-row.js.map +1 -1
- package/dist/ecs/archetype/delete-row.test.js +4 -4
- package/dist/ecs/archetype/delete-row.test.js.map +1 -1
- package/dist/ecs/core-components.d.ts +3 -3
- package/dist/ecs/database/create-database.test.js +130 -0
- package/dist/ecs/database/create-database.test.js.map +1 -1
- package/dist/ecs/database/database.d.ts +6 -5
- package/dist/ecs/database/index.d.ts +0 -1
- package/dist/ecs/database/index.js +0 -1
- package/dist/ecs/database/index.js.map +1 -1
- package/dist/ecs/database/observe-select-entities.d.ts +3 -3
- package/dist/ecs/database/observe-select-entities.js.map +1 -1
- package/dist/ecs/database/observed/create-observed-database.js +8 -0
- package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
- package/dist/ecs/database/observed/observed-database.d.ts +3 -3
- package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +8 -1
- package/dist/ecs/database/reconciling/create-reconciling-database.js +50 -19
- package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
- package/dist/ecs/database/reconciling/create-reconciling-database.test.js +297 -0
- package/dist/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
- package/dist/ecs/database/replicate.js.map +1 -1
- package/dist/ecs/database/transactional-store/coalesce-transactions.d.ts +5 -1
- package/dist/ecs/database/transactional-store/coalesce-transactions.js +17 -28
- package/dist/ecs/database/transactional-store/coalesce-transactions.js.map +1 -1
- package/dist/ecs/database/transactional-store/coalesce-transactions.test.js +84 -7
- package/dist/ecs/database/transactional-store/coalesce-transactions.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.js +7 -2
- package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js +5 -3
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +106 -0
- package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +1 -0
- package/dist/ecs/entity/entity.d.ts +8 -0
- package/dist/ecs/entity/entity.js +3 -0
- package/dist/ecs/entity/entity.js.map +1 -0
- package/dist/ecs/entity/u32.d.ts +8 -0
- package/dist/{lit/elements/service-context.js → ecs/entity/u32.js} +3 -3
- package/dist/ecs/entity/u32.js.map +1 -0
- package/dist/ecs/entity-location-table/create-entity-location-table.d.ts +1 -1
- package/dist/ecs/entity-location-table/create-entity-location-table.js +27 -2
- package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
- package/dist/ecs/entity-location-table/create-entity-location-table.test.js +15 -2
- package/dist/ecs/entity-location-table/create-entity-location-table.test.js.map +1 -1
- package/dist/ecs/entity.d.ts +9 -7
- package/dist/ecs/entity.js +5 -2
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/index.d.ts +3 -3
- package/dist/ecs/index.js +4 -3
- package/dist/ecs/index.js.map +1 -1
- package/dist/ecs/optional-components.d.ts +3 -0
- package/dist/ecs/optional-components.js +2 -0
- package/dist/ecs/optional-components.js.map +1 -0
- package/dist/ecs/required-components.d.ts +4 -0
- package/dist/ecs/required-components.js +2 -0
- package/dist/ecs/required-components.js.map +1 -0
- package/dist/ecs/store/core/core.d.ts +19 -18
- package/dist/ecs/store/core/create-core.d.ts +2 -1
- package/dist/ecs/store/core/create-core.js +40 -17
- package/dist/ecs/store/core/create-core.js.map +1 -1
- package/dist/ecs/store/core/create-core.test.d.ts +1 -1
- package/dist/ecs/store/core/create-core.test.js +78 -2
- package/dist/ecs/store/core/create-core.test.js.map +1 -1
- package/dist/ecs/store/core/select-entities.d.ts +3 -2
- package/dist/ecs/store/core/select-entities.js.map +1 -1
- package/dist/ecs/store/create-store.d.ts +2 -1
- package/dist/ecs/store/create-store.js +3 -1
- package/dist/ecs/store/create-store.js.map +1 -1
- package/dist/ecs/store/create-store.test.js.map +1 -1
- package/dist/ecs/store/store-schema/create-store-schema-test.js +2 -2
- package/dist/ecs/store/store-schema/create-store-schema-test.js.map +1 -1
- package/dist/ecs/store/store-schema/create-store-schema.d.ts +1 -11
- package/dist/ecs/store/store-schema/create-store-schema.js +44 -30
- package/dist/ecs/store/store-schema/create-store-schema.js.map +1 -1
- package/dist/ecs/store/store-schema/index.d.ts +1 -2
- package/dist/ecs/store/store-schema/index.js +20 -23
- package/dist/ecs/store/store-schema/index.js.map +1 -1
- package/dist/ecs/store/store-schema/store-schema.d.ts +1 -12
- package/dist/ecs/store/store-schema/store-schema.js +55 -21
- package/dist/ecs/store/store-schema/store-schema.js.map +1 -1
- package/dist/ecs/store/store.d.ts +12 -11
- package/dist/ecs/store/store.js.map +1 -1
- package/dist/ecs/undo-redo-service/create-undo-redo-service.test.js +23 -23
- package/dist/ecs/undo-redo-service/create-undo-redo-service.test.js.map +1 -1
- package/dist/graphics/frame.d.ts +1 -22
- package/dist/graphics/frame.js +14 -11
- package/dist/graphics/frame.js.map +1 -1
- package/dist/graphics/get-web-gpu-device-and-context.d.ts +1 -2
- package/dist/graphics/get-web-gpu-device-and-context.js +23 -20
- package/dist/graphics/get-web-gpu-device-and-context.js.map +1 -1
- package/dist/graphics/graphics-context.d.ts +1 -5
- package/dist/graphics/graphics-context.js +5 -0
- package/dist/graphics/graphics-context.js.map +1 -1
- package/dist/lit/hooks/use-observable-values.d.ts +1 -2
- package/dist/lit/hooks/use-observable-values.js.map +1 -1
- package/dist/math/aabb-face/face.d.ts +51 -0
- package/dist/math/aabb-face/face.js +110 -0
- package/dist/math/aabb-face/face.js.map +1 -0
- package/dist/math/aabb-face/face.test.js +94 -0
- package/dist/math/aabb-face/face.test.js.map +1 -0
- package/dist/math/box/box.d.ts +50 -0
- package/dist/math/box/box.js +23 -0
- package/dist/math/box/box.js.map +1 -0
- package/dist/math/face/face.d.ts +51 -0
- package/dist/math/face/face.js +110 -0
- package/dist/math/face/face.js.map +1 -0
- package/dist/math/face/face.test.js +94 -0
- package/dist/math/face/face.test.js.map +1 -0
- package/dist/math/picking/face.d.ts +1 -0
- package/dist/math/picking/face.js +2 -0
- package/dist/math/picking/face.js.map +1 -0
- package/dist/math/picking/get-closest-entity-to-line.js +1 -1
- package/dist/math/picking/get-closest-entity-to-line.js.map +1 -1
- package/dist/math/picking/get-closest-entity-to-point.js +1 -1
- package/dist/math/picking/get-closest-entity-to-point.js.map +1 -1
- package/dist/math/picking/getClosestEntityToLine.d.ts +4 -0
- package/dist/math/picking/getClosestEntityToLine.js +29 -0
- package/dist/math/picking/getClosestEntityToLine.js.map +1 -0
- package/dist/math/picking/getClosestEntityToPoint.d.ts +4 -0
- package/dist/math/picking/getClosestEntityToPoint.js +27 -0
- package/dist/math/picking/getClosestEntityToPoint.js.map +1 -0
- package/dist/math/picking/getIntersectingEntities.d.ts +12 -0
- package/dist/math/picking/getIntersectingEntities.js +15 -0
- package/dist/math/picking/getIntersectingEntities.js.map +1 -0
- package/dist/math/picking/pick-from-tables.js +1 -1
- package/dist/math/picking/pick-from-tables.js.map +1 -1
- package/dist/math/picking/pick-result.d.ts +4 -2
- package/dist/math/transform/debug-inverse.d.ts +1 -0
- package/dist/math/transform/debug-inverse.js +28 -0
- package/dist/math/transform/debug-inverse.js.map +1 -0
- package/dist/math/transform/debug-quat.d.ts +1 -0
- package/dist/math/transform/debug-quat.js +23 -0
- package/dist/math/transform/debug-quat.js.map +1 -0
- package/dist/math/transform/debug-test.d.ts +1 -0
- package/dist/math/transform/debug-test.js +34 -0
- package/dist/math/transform/debug-test.js.map +1 -0
- package/dist/math/transform/transform.d.ts +58 -0
- package/dist/math/transform/transform.js +101 -0
- package/dist/math/transform/transform.js.map +1 -0
- package/dist/math/transform/transform.test.d.ts +1 -0
- package/dist/math/transform/transform.test.js +309 -0
- package/dist/math/transform/transform.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/dist/ecs/database/applied/applied-database.d.ts +0 -47
- package/dist/ecs/database/applied/applied-database.js +0 -22
- package/dist/ecs/database/applied/applied-database.js.map +0 -1
- package/dist/ecs/database/applied/applied-entry.d.ts +0 -30
- package/dist/ecs/database/applied/applied-entry.js +0 -84
- package/dist/ecs/database/applied/applied-entry.js.map +0 -1
- package/dist/ecs/database/applied/create-applied-database.d.ts +0 -8
- package/dist/ecs/database/applied/create-applied-database.js +0 -266
- package/dist/ecs/database/applied/create-applied-database.js.map +0 -1
- package/dist/ecs/database/applied/create-applied-database.test.js +0 -94
- package/dist/ecs/database/applied/create-applied-database.test.js.map +0 -1
- package/dist/ecs/database/create-applied-database.d.ts +0 -49
- package/dist/ecs/database/create-applied-database.js +0 -275
- package/dist/ecs/database/create-applied-database.js.map +0 -1
- package/dist/ecs/database/reconciling/applied-database.d.ts +0 -47
- package/dist/ecs/database/reconciling/applied-database.js +0 -22
- package/dist/ecs/database/reconciling/applied-database.js.map +0 -1
- package/dist/ecs/database/reconciling/applied-entry.d.ts +0 -30
- package/dist/ecs/database/reconciling/applied-entry.js +0 -84
- package/dist/ecs/database/reconciling/applied-entry.js.map +0 -1
- package/dist/ecs/database/reconciling/create-applied-database.d.ts +0 -8
- package/dist/ecs/database/reconciling/create-applied-database.js +0 -266
- package/dist/ecs/database/reconciling/create-applied-database.js.map +0 -1
- package/dist/ecs/database/reconciling/create-applied-database.test.js +0 -94
- package/dist/ecs/database/reconciling/create-applied-database.test.js.map +0 -1
- package/dist/lit/elements/service-application.d.ts +0 -9
- package/dist/lit/elements/service-application.js +0 -55
- package/dist/lit/elements/service-application.js.map +0 -1
- package/dist/lit/elements/service-context.d.ts +0 -1
- package/dist/lit/elements/service-context.js.map +0 -1
- package/dist/lit/elements/service-element.d.ts +0 -6
- package/dist/lit/elements/service-element.js +0 -43
- package/dist/lit/elements/service-element.js.map +0 -1
- package/dist/table/compact-table.d.ts +0 -7
- package/dist/table/compact-table.js +0 -15
- package/dist/table/compact-table.js.map +0 -1
- package/dist/table/compact-table.test.js +0 -121
- package/dist/table/compact-table.test.js.map +0 -1
- /package/dist/ecs/database/{applied/create-applied-database.test.d.ts → transactional-store/entity-id-preservation.test.d.ts} +0 -0
- /package/dist/{ecs/database/reconciling/create-applied-database.test.d.ts → math/aabb-face/face.test.d.ts} +0 -0
- /package/dist/{table/compact-table.test.d.ts → math/face/face.test.d.ts} +0 -0
|
@@ -39,6 +39,14 @@ export function createObservedDatabase(store) {
|
|
|
39
39
|
const entityObservers = new Map();
|
|
40
40
|
const transactionObservers = new Set();
|
|
41
41
|
const notifyObservers = (result) => {
|
|
42
|
+
// Don't notify for no-op transactions (no actual changes made)
|
|
43
|
+
// Check if there are any changed entities, components, or archetypes
|
|
44
|
+
const hasChanges = result.changedEntities.size > 0 ||
|
|
45
|
+
result.changedComponents.size > 0 ||
|
|
46
|
+
result.changedArchetypes.size > 0;
|
|
47
|
+
if (!hasChanges) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
42
50
|
for (const observer of transactionObservers) {
|
|
43
51
|
observer(result);
|
|
44
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-observed-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/observed/create-observed-database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-observed-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/observed/create-observed-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { StringKeyof } from "../../../types/types.js";
|
|
|
6
6
|
import { ReadonlyStore, Store } from "../../store/index.js";
|
|
7
7
|
import { Observe } from "../../../observe/index.js";
|
|
8
8
|
import { TransactionResult } from "../transactional-store/index.js";
|
|
9
|
-
import {
|
|
9
|
+
import { RequiredComponents } from "../../required-components.js";
|
|
10
10
|
import { Entity } from "../../entity.js";
|
|
11
11
|
import { EntityReadValues } from "../../store/core/index.js";
|
|
12
12
|
export interface ObservedDatabase<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>> extends ReadonlyStore<C, R, A> {
|
|
@@ -21,8 +21,8 @@ export interface ObservedDatabase<C extends Components, R extends ResourceCompon
|
|
|
21
21
|
readonly [K in StringKeyof<R>]: Observe<R[K]>;
|
|
22
22
|
};
|
|
23
23
|
readonly transactions: Observe<TransactionResult<C>>;
|
|
24
|
-
entity<T extends
|
|
25
|
-
readonly [K in (StringKeyof<
|
|
24
|
+
entity<T extends RequiredComponents>(id: Entity, minArchetype?: ReadonlyArchetype<T> | Archetype<T>): Observe<{
|
|
25
|
+
readonly [K in (StringKeyof<RequiredComponents & T>)]: (RequiredComponents & T)[K];
|
|
26
26
|
} & EntityReadValues<C> | null>;
|
|
27
27
|
entity(id: Entity): Observe<EntityReadValues<C> | null>;
|
|
28
28
|
archetype(id: ArchetypeId): Observe<void>;
|
|
@@ -5,4 +5,11 @@ import { Store } from "../../store/index.js";
|
|
|
5
5
|
import { Components } from "../../store/components.js";
|
|
6
6
|
import { ArchetypeComponents } from "../../store/archetype-components.js";
|
|
7
7
|
import { ReconcilingDatabase } from "./reconciling-database.js";
|
|
8
|
-
export declare function createReconcilingDatabase<const C extends Components, const R extends ResourceComponents, const A extends ArchetypeComponents<StringKeyof<C>>, const TD extends TransactionDeclarations<C, R, A>>(store: Store<C, R, A>, transactionDeclarations: TD
|
|
8
|
+
export declare function createReconcilingDatabase<const C extends Components, const R extends ResourceComponents, const A extends ArchetypeComponents<StringKeyof<C>>, const TD extends TransactionDeclarations<C, R, A>>(store: Store<C, R, A>, transactionDeclarations: TD, options?: {
|
|
9
|
+
/**
|
|
10
|
+
* Maximum time in milliseconds to keep committed entries for reordering.
|
|
11
|
+
* Entries older than the most recent entry by this amount will be pruned.
|
|
12
|
+
* Default: 5000ms
|
|
13
|
+
*/
|
|
14
|
+
maxSynchronizeDurationMs?: number;
|
|
15
|
+
}): ReconcilingDatabase<C, R, A, TD>;
|
|
@@ -21,7 +21,8 @@ SOFTWARE.*/
|
|
|
21
21
|
import { applyOperations } from "../transactional-store/apply-operations.js";
|
|
22
22
|
import { ReconcilingEntryOps, serializeReconcilingEntry, deserializeReconcilingEntry, } from "./reconciling-entry.js";
|
|
23
23
|
import { createObservedDatabase } from "../observed/create-observed-database.js";
|
|
24
|
-
export function createReconcilingDatabase(store, transactionDeclarations) {
|
|
24
|
+
export function createReconcilingDatabase(store, transactionDeclarations, options = {}) {
|
|
25
|
+
const { maxSynchronizeDurationMs = 5000 } = options;
|
|
25
26
|
const observedDatabase = createObservedDatabase(store);
|
|
26
27
|
const { execute, observe, resources, toData: observedToData, fromData: observedFromData, ...storeMethods } = observedDatabase;
|
|
27
28
|
const reconcilingEntries = [];
|
|
@@ -39,11 +40,37 @@ export function createReconcilingDatabase(store, transactionDeclarations) {
|
|
|
39
40
|
for (let i = startIndex; i < reconcilingEntries.length; i++) {
|
|
40
41
|
const entry = reconcilingEntries[i];
|
|
41
42
|
const result = execute(t => entry.transaction(t, entry.args), { transient: ReconcilingEntryOps.isTransient(entry) });
|
|
42
|
-
|
|
43
|
+
// Only store result if it actually made changes (not a no-op)
|
|
44
|
+
// A no-op transaction has empty redo/undo operations
|
|
45
|
+
const isNoOp = result.redo.length === 0 && result.undo.length === 0;
|
|
46
|
+
if (!isNoOp) {
|
|
47
|
+
entry.result = result;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// For no-ops, don't store a result - this prevents it from being rolled back
|
|
51
|
+
entry.result = undefined;
|
|
52
|
+
}
|
|
53
|
+
// Always track the last result (even if no-op) for return value
|
|
43
54
|
lastResult = result;
|
|
44
55
|
}
|
|
45
56
|
return lastResult;
|
|
46
57
|
};
|
|
58
|
+
const pruneCommittedEntries = (mostRecentEntryTime) => {
|
|
59
|
+
// Only prune committed entries that are too old to be reordered.
|
|
60
|
+
// We keep entries within the synchronization window relative to the most recent entry.
|
|
61
|
+
// This matches action-ecs behavior where pruning is based on the newest action time.
|
|
62
|
+
const pruneThreshold = Math.abs(mostRecentEntryTime) - maxSynchronizeDurationMs;
|
|
63
|
+
while (reconcilingEntries.length > 0) {
|
|
64
|
+
const entry = reconcilingEntries[0];
|
|
65
|
+
// Only prune committed entries (positive time) that are older than the threshold
|
|
66
|
+
if (entry.time > 0 && Math.abs(entry.time) < pruneThreshold) {
|
|
67
|
+
reconcilingEntries.shift();
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
47
74
|
const applyEnvelope = (envelope) => {
|
|
48
75
|
const transaction = transactionDeclarations[envelope.name];
|
|
49
76
|
if (!transaction) {
|
|
@@ -65,6 +92,11 @@ export function createReconcilingDatabase(store, transactionDeclarations) {
|
|
|
65
92
|
if (startIndex < reconcilingEntries.length) {
|
|
66
93
|
rollbackRange(startIndex);
|
|
67
94
|
replayRange(startIndex);
|
|
95
|
+
// Use the most recent entry time for pruning (or 0 if no entries)
|
|
96
|
+
const mostRecentTime = reconcilingEntries.length > 0
|
|
97
|
+
? Math.abs(reconcilingEntries[reconcilingEntries.length - 1].time)
|
|
98
|
+
: 0;
|
|
99
|
+
pruneCommittedEntries(mostRecentTime);
|
|
68
100
|
}
|
|
69
101
|
return undefined;
|
|
70
102
|
}
|
|
@@ -77,32 +109,31 @@ export function createReconcilingDatabase(store, transactionDeclarations) {
|
|
|
77
109
|
result: undefined,
|
|
78
110
|
};
|
|
79
111
|
const insertIndex = ReconcilingEntryOps.findInsertIndex(reconcilingEntries, entry);
|
|
80
|
-
|
|
112
|
+
// Calculate the rebuild index before inserting
|
|
113
|
+
// For replacements: use min of old and new position to ensure we rebuild from earliest affected point
|
|
114
|
+
// For new entries: startIndex is length, so rebuildIndex will be insertIndex
|
|
81
115
|
const rebuildIndex = Math.min(startIndex, insertIndex);
|
|
116
|
+
// Rollback everything from the rebuild point BEFORE inserting the new entry
|
|
117
|
+
// This is clearer than rolling back after insert (which would iterate over the new entry unnecessarily)
|
|
82
118
|
rollbackRange(rebuildIndex);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
119
|
+
// Now insert the new entry at the calculated position
|
|
120
|
+
reconcilingEntries.splice(insertIndex, 0, entry);
|
|
121
|
+
// Replay from the rebuild point, which now includes the newly inserted entry
|
|
122
|
+
// This returns the result of the last replayed entry (which includes the newly inserted one)
|
|
123
|
+
const latestResult = replayRange(rebuildIndex);
|
|
124
|
+
// Prune old entries based on the newly applied entry's time
|
|
125
|
+
pruneCommittedEntries(Math.abs(entry.time));
|
|
126
|
+
// Return the result from replay (which may be a no-op with a value but no stored entry.result)
|
|
86
127
|
return latestResult;
|
|
87
128
|
};
|
|
88
|
-
const removeEntryAtIndex = (index, { rollback }) => {
|
|
89
|
-
if (index < 0 || index >= reconcilingEntries.length) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (rollback) {
|
|
93
|
-
rollbackRange(index);
|
|
94
|
-
}
|
|
95
|
-
reconcilingEntries.splice(index, 1);
|
|
96
|
-
if (rollback) {
|
|
97
|
-
replayRange(index);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
129
|
const cancelEntry = (id) => {
|
|
101
130
|
const index = reconcilingEntries.findIndex(entry => entry.id === id);
|
|
102
131
|
if (index === -1) {
|
|
103
132
|
return;
|
|
104
133
|
}
|
|
105
|
-
|
|
134
|
+
rollbackRange(index);
|
|
135
|
+
reconcilingEntries.splice(index, 1);
|
|
136
|
+
replayRange(index);
|
|
106
137
|
};
|
|
107
138
|
const serializeReconcilingEntries = () => reconcilingEntries
|
|
108
139
|
.filter(entry => ReconcilingEntryOps.isTransient(entry))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-reconciling-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;WAmBW;AAIX,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAO7E,OAAO,EAEH,mBAAmB,EAEnB,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAQjF,MAAM,UAAU,yBAAyB,CAMrC,KAAqB,EACrB,uBAA2B;
|
|
1
|
+
{"version":3,"file":"create-reconciling-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,5 +90,302 @@ describe("createReconcilingDatabase", () => {
|
|
|
90
90
|
const serialized = reconciling.toData();
|
|
91
91
|
expect(serialized.appliedEntries ?? []).toHaveLength(0);
|
|
92
92
|
});
|
|
93
|
+
it("prunes committed entries from memory", () => {
|
|
94
|
+
const reconciling = createTestReconcilingDatabase();
|
|
95
|
+
// Apply multiple committed entries
|
|
96
|
+
reconciling.apply({
|
|
97
|
+
id: 30,
|
|
98
|
+
name: "createPositionNameEntity",
|
|
99
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "First" },
|
|
100
|
+
time: 100,
|
|
101
|
+
});
|
|
102
|
+
reconciling.apply({
|
|
103
|
+
id: 31,
|
|
104
|
+
name: "createPositionNameEntity",
|
|
105
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Second" },
|
|
106
|
+
time: 200,
|
|
107
|
+
});
|
|
108
|
+
reconciling.apply({
|
|
109
|
+
id: 32,
|
|
110
|
+
name: "createPositionNameEntity",
|
|
111
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Third" },
|
|
112
|
+
time: 300,
|
|
113
|
+
});
|
|
114
|
+
// All entities should be created
|
|
115
|
+
expect(readEntityNames(reconciling)).toEqual(["First", "Second", "Third"]);
|
|
116
|
+
// But no entries should be kept in memory since they're all committed
|
|
117
|
+
const serialized = reconciling.toData();
|
|
118
|
+
expect(serialized.appliedEntries ?? []).toHaveLength(0);
|
|
119
|
+
});
|
|
120
|
+
it("keeps transient entries but prunes committed ones", () => {
|
|
121
|
+
const reconciling = createTestReconcilingDatabase();
|
|
122
|
+
// Apply committed entry
|
|
123
|
+
reconciling.apply({
|
|
124
|
+
id: 40,
|
|
125
|
+
name: "createPositionNameEntity",
|
|
126
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "Committed" },
|
|
127
|
+
time: 100,
|
|
128
|
+
});
|
|
129
|
+
// Apply transient entry
|
|
130
|
+
reconciling.apply({
|
|
131
|
+
id: 41,
|
|
132
|
+
name: "createPositionNameEntity",
|
|
133
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Transient" },
|
|
134
|
+
time: -200,
|
|
135
|
+
});
|
|
136
|
+
expect(readEntityNames(reconciling)).toEqual(["Committed", "Transient"]);
|
|
137
|
+
// Only the transient entry should be serialized
|
|
138
|
+
const serialized = reconciling.toData();
|
|
139
|
+
expect(serialized.appliedEntries).toHaveLength(1);
|
|
140
|
+
expect(serialized.appliedEntries?.[0]?.id).toBe(41);
|
|
141
|
+
});
|
|
142
|
+
it("removes transient entry from queue when cancelled", () => {
|
|
143
|
+
const reconciling = createTestReconcilingDatabase();
|
|
144
|
+
// Apply a transient entry
|
|
145
|
+
reconciling.apply({
|
|
146
|
+
id: 50,
|
|
147
|
+
name: "createPositionNameEntity",
|
|
148
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "InProgress" },
|
|
149
|
+
time: -100,
|
|
150
|
+
});
|
|
151
|
+
// Verify the transient entry is in the queue
|
|
152
|
+
const serializedBefore = reconciling.toData();
|
|
153
|
+
expect(serializedBefore.appliedEntries).toHaveLength(1);
|
|
154
|
+
expect(serializedBefore.appliedEntries?.[0]?.id).toBe(50);
|
|
155
|
+
expect(readEntityNames(reconciling)).toEqual(["InProgress"]);
|
|
156
|
+
// Cancel the transient entry (simulating an error in sequential transaction)
|
|
157
|
+
reconciling.apply({
|
|
158
|
+
id: 50,
|
|
159
|
+
name: "createPositionNameEntity",
|
|
160
|
+
args: undefined,
|
|
161
|
+
time: 0,
|
|
162
|
+
});
|
|
163
|
+
// Verify the entry is removed from the queue
|
|
164
|
+
const serializedAfter = reconciling.toData();
|
|
165
|
+
expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
|
|
166
|
+
// Verify the entity state is rolled back
|
|
167
|
+
expect(readEntityNames(reconciling)).toEqual([]);
|
|
168
|
+
});
|
|
169
|
+
it("removes multiple transient updates when sequential transaction is cancelled", () => {
|
|
170
|
+
const reconciling = createTestReconcilingDatabase();
|
|
171
|
+
// Simulate sequential transaction with multiple yields (updates)
|
|
172
|
+
// Each yield replaces the previous transient state
|
|
173
|
+
reconciling.apply({
|
|
174
|
+
id: 60,
|
|
175
|
+
name: "createPositionNameEntity",
|
|
176
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "Update1" },
|
|
177
|
+
time: -100,
|
|
178
|
+
});
|
|
179
|
+
reconciling.apply({
|
|
180
|
+
id: 60,
|
|
181
|
+
name: "createPositionNameEntity",
|
|
182
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Update2" },
|
|
183
|
+
time: -101,
|
|
184
|
+
});
|
|
185
|
+
reconciling.apply({
|
|
186
|
+
id: 60,
|
|
187
|
+
name: "createPositionNameEntity",
|
|
188
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Update3" },
|
|
189
|
+
time: -102,
|
|
190
|
+
});
|
|
191
|
+
// Verify the latest transient state exists
|
|
192
|
+
const serializedBefore = reconciling.toData();
|
|
193
|
+
expect(serializedBefore.appliedEntries).toHaveLength(1);
|
|
194
|
+
expect(serializedBefore.appliedEntries?.[0]?.id).toBe(60);
|
|
195
|
+
expect(serializedBefore.appliedEntries?.[0]?.args?.name).toBe("Update3");
|
|
196
|
+
expect(readEntityNames(reconciling)).toEqual(["Update3"]);
|
|
197
|
+
// Cancel (simulating error during sequential transaction)
|
|
198
|
+
reconciling.apply({
|
|
199
|
+
id: 60,
|
|
200
|
+
name: "createPositionNameEntity",
|
|
201
|
+
args: undefined,
|
|
202
|
+
time: 0,
|
|
203
|
+
});
|
|
204
|
+
// Verify complete removal from queue
|
|
205
|
+
const serializedAfter = reconciling.toData();
|
|
206
|
+
expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
|
|
207
|
+
// Verify all state is rolled back
|
|
208
|
+
expect(readEntityNames(reconciling)).toEqual([]);
|
|
209
|
+
});
|
|
210
|
+
it("should correctly handle inserting at the end without rolling back the new entry", () => {
|
|
211
|
+
const reconciling = createTestReconcilingDatabase();
|
|
212
|
+
// Create two committed entries
|
|
213
|
+
reconciling.apply({
|
|
214
|
+
id: 70,
|
|
215
|
+
name: "createPositionNameEntity",
|
|
216
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "First" },
|
|
217
|
+
time: 100,
|
|
218
|
+
});
|
|
219
|
+
reconciling.apply({
|
|
220
|
+
id: 71,
|
|
221
|
+
name: "createPositionNameEntity",
|
|
222
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Second" },
|
|
223
|
+
time: 200,
|
|
224
|
+
});
|
|
225
|
+
// Now insert a new entry at the end (time > 200)
|
|
226
|
+
reconciling.apply({
|
|
227
|
+
id: 72,
|
|
228
|
+
name: "createPositionNameEntity",
|
|
229
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Third" },
|
|
230
|
+
time: 300,
|
|
231
|
+
});
|
|
232
|
+
// All three should exist in order
|
|
233
|
+
expect(readEntityNames(reconciling)).toEqual(["First", "Second", "Third"]);
|
|
234
|
+
});
|
|
235
|
+
it("should correctly handle inserting in the middle by rolling back only affected entries", () => {
|
|
236
|
+
const reconciling = createTestReconcilingDatabase();
|
|
237
|
+
// Create entries with times 100 and 300
|
|
238
|
+
reconciling.apply({
|
|
239
|
+
id: 80,
|
|
240
|
+
name: "createPositionNameEntity",
|
|
241
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "Early" },
|
|
242
|
+
time: 100,
|
|
243
|
+
});
|
|
244
|
+
reconciling.apply({
|
|
245
|
+
id: 81,
|
|
246
|
+
name: "createPositionNameEntity",
|
|
247
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Late" },
|
|
248
|
+
time: 300,
|
|
249
|
+
});
|
|
250
|
+
expect(readEntityNames(reconciling)).toEqual(["Early", "Late"]);
|
|
251
|
+
// Now insert an entry in the middle with time 200
|
|
252
|
+
// This should cause "Late" to be rolled back and replayed
|
|
253
|
+
reconciling.apply({
|
|
254
|
+
id: 82,
|
|
255
|
+
name: "createPositionNameEntity",
|
|
256
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Middle" },
|
|
257
|
+
time: 200,
|
|
258
|
+
});
|
|
259
|
+
// Should be in time order
|
|
260
|
+
expect(readEntityNames(reconciling)).toEqual(["Early", "Middle", "Late"]);
|
|
261
|
+
});
|
|
262
|
+
it("should not attempt to rollback a newly inserted entry that has no result yet", () => {
|
|
263
|
+
const reconciling = createTestReconcilingDatabase();
|
|
264
|
+
// Track how many times each transaction is executed
|
|
265
|
+
const executionLog = [];
|
|
266
|
+
// Use updatePositionNameEntity which we can track
|
|
267
|
+
const entities = [];
|
|
268
|
+
// Create first entity
|
|
269
|
+
const result1 = reconciling.apply({
|
|
270
|
+
id: 90,
|
|
271
|
+
name: "createPositionNameEntity",
|
|
272
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "Entity1" },
|
|
273
|
+
time: 100,
|
|
274
|
+
});
|
|
275
|
+
entities.push(result1.value);
|
|
276
|
+
// Create second entity
|
|
277
|
+
const result2 = reconciling.apply({
|
|
278
|
+
id: 91,
|
|
279
|
+
name: "createPositionNameEntity",
|
|
280
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Entity2" },
|
|
281
|
+
time: 200,
|
|
282
|
+
});
|
|
283
|
+
entities.push(result2.value);
|
|
284
|
+
// Verify both exist
|
|
285
|
+
expect(readEntityNames(reconciling)).toEqual(["Entity1", "Entity2"]);
|
|
286
|
+
// Now create a third entity with time after both
|
|
287
|
+
// The bug would be: we try to rollback this new entry before it has a result
|
|
288
|
+
const result3 = reconciling.apply({
|
|
289
|
+
id: 92,
|
|
290
|
+
name: "createPositionNameEntity",
|
|
291
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Entity3" },
|
|
292
|
+
time: 300,
|
|
293
|
+
});
|
|
294
|
+
entities.push(result3.value);
|
|
295
|
+
// All three should exist
|
|
296
|
+
expect(readEntityNames(reconciling)).toEqual(["Entity1", "Entity2", "Entity3"]);
|
|
297
|
+
// Verify the entities actually have the correct data
|
|
298
|
+
const entity1Data = reconciling.read(entities[0]);
|
|
299
|
+
const entity2Data = reconciling.read(entities[1]);
|
|
300
|
+
const entity3Data = reconciling.read(entities[2]);
|
|
301
|
+
expect(entity1Data?.name).toBe("Entity1");
|
|
302
|
+
expect(entity2Data?.name).toBe("Entity2");
|
|
303
|
+
expect(entity3Data?.name).toBe("Entity3");
|
|
304
|
+
});
|
|
305
|
+
it("should handle replacing an entry that moves forward in the queue", () => {
|
|
306
|
+
const reconciling = createTestReconcilingDatabase();
|
|
307
|
+
// Create transient entry at time -100
|
|
308
|
+
reconciling.apply({
|
|
309
|
+
id: 100,
|
|
310
|
+
name: "createPositionNameEntity",
|
|
311
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "Transient" },
|
|
312
|
+
time: -100,
|
|
313
|
+
});
|
|
314
|
+
// Create committed entry at time 50 (earlier than transient absolute time)
|
|
315
|
+
reconciling.apply({
|
|
316
|
+
id: 101,
|
|
317
|
+
name: "createPositionNameEntity",
|
|
318
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Early" },
|
|
319
|
+
time: 50,
|
|
320
|
+
});
|
|
321
|
+
expect(readEntityNames(reconciling)).toEqual(["Early", "Transient"]);
|
|
322
|
+
// Now commit the transient entry with time 200 (should move it forward)
|
|
323
|
+
reconciling.apply({
|
|
324
|
+
id: 100,
|
|
325
|
+
name: "createPositionNameEntity",
|
|
326
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "TransientCommitted" },
|
|
327
|
+
time: 200,
|
|
328
|
+
});
|
|
329
|
+
expect(readEntityNames(reconciling)).toEqual(["Early", "TransientCommitted"]);
|
|
330
|
+
});
|
|
331
|
+
it("should handle replacing an entry that moves backward in the queue", () => {
|
|
332
|
+
const reconciling = createTestReconcilingDatabase();
|
|
333
|
+
// Create committed entry at time 200
|
|
334
|
+
reconciling.apply({
|
|
335
|
+
id: 110,
|
|
336
|
+
name: "createPositionNameEntity",
|
|
337
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "Late" },
|
|
338
|
+
time: 200,
|
|
339
|
+
});
|
|
340
|
+
// Create another committed entry at time 300
|
|
341
|
+
reconciling.apply({
|
|
342
|
+
id: 111,
|
|
343
|
+
name: "createPositionNameEntity",
|
|
344
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "Latest" },
|
|
345
|
+
time: 300,
|
|
346
|
+
});
|
|
347
|
+
expect(readEntityNames(reconciling)).toEqual(["Late", "Latest"]);
|
|
348
|
+
// Now update the second entry to have an earlier time (moves backward)
|
|
349
|
+
reconciling.apply({
|
|
350
|
+
id: 111,
|
|
351
|
+
name: "createPositionNameEntity",
|
|
352
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "LatestUpdated" },
|
|
353
|
+
time: 150,
|
|
354
|
+
});
|
|
355
|
+
expect(readEntityNames(reconciling)).toEqual(["LatestUpdated", "Late"]);
|
|
356
|
+
});
|
|
357
|
+
it("verifies correct rollback-then-insert-then-replay order", () => {
|
|
358
|
+
const reconciling = createTestReconcilingDatabase();
|
|
359
|
+
// This test verifies that the rollback happens BEFORE insertion
|
|
360
|
+
// The logic is now:
|
|
361
|
+
// 1. rollbackRange(insertIndex) - rollback affected entries BEFORE inserting
|
|
362
|
+
// 2. splice(insertIndex, 0, newEntry) - insert the new entry
|
|
363
|
+
// 3. replayRange(insertIndex) - replay from insertion point including new entry
|
|
364
|
+
// Create two entries
|
|
365
|
+
reconciling.apply({
|
|
366
|
+
id: 120,
|
|
367
|
+
name: "createPositionNameEntity",
|
|
368
|
+
args: { position: { x: 1, y: 1, z: 1 }, name: "A" },
|
|
369
|
+
time: 100,
|
|
370
|
+
});
|
|
371
|
+
reconciling.apply({
|
|
372
|
+
id: 121,
|
|
373
|
+
name: "createPositionNameEntity",
|
|
374
|
+
args: { position: { x: 2, y: 2, z: 2 }, name: "B" },
|
|
375
|
+
time: 200,
|
|
376
|
+
});
|
|
377
|
+
// Insert at the end - now correctly:
|
|
378
|
+
// 1. rollbackRange(2) - nothing to rollback (at end of current array)
|
|
379
|
+
// 2. splice(2, 0, newEntry) - insert at position 2
|
|
380
|
+
// 3. replayRange(2) - replay the new entry only
|
|
381
|
+
reconciling.apply({
|
|
382
|
+
id: 122,
|
|
383
|
+
name: "createPositionNameEntity",
|
|
384
|
+
args: { position: { x: 3, y: 3, z: 3 }, name: "C" },
|
|
385
|
+
time: 300,
|
|
386
|
+
});
|
|
387
|
+
// Verify correct final state
|
|
388
|
+
expect(readEntityNames(reconciling)).toEqual(["A", "B", "C"]);
|
|
389
|
+
});
|
|
93
390
|
});
|
|
94
391
|
//# sourceMappingURL=create-reconciling-database.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-reconciling-database.test.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-reconciling-database.test.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replicate.js","sourceRoot":"","sources":["../../../src/ecs/database/replicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;WAgBW;AAcX,MAAM,CAAC,MAAM,SAAS,GAAG,CAOrB,QAAgC,EAChC,MAA0B,EAC1B,QAA8F,EAC/E,EAAE;IAEjB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqD,CAAC;IAElF,SAAS,kBAAkB,CAAC,eAAkF;QAC1G,IAAI,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"replicate.js","sourceRoot":"","sources":["../../../src/ecs/database/replicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;WAgBW;AAcX,MAAM,CAAC,MAAM,SAAS,GAAG,CAOrB,QAAgC,EAChC,MAA0B,EAC1B,QAA8F,EAC/E,EAAE;IAEjB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqD,CAAC;IAElF,SAAS,kBAAkB,CAAC,eAAkF;QAC1G,IAAI,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,UAA0E,CAAC,CAAC;YACrI,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,eAAe,CAAC;IAC3B,CAAC;IAAA,CAAC;IAEF,0EAA0E;IAC1E,oDAAoD;IACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAqB,EAAE,CAAC;QACrE,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAsD,CAAC,CAAC,CAAC;QACjH,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACzC,MAAM,CAAC,SAAqC,CAAC,IAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzF,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAiC,EAAE,EAAE;QACvE,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YAC/D,MAAM,oBAAoB,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,SAAS;gBACT,MAAM,CAAC,MAAM,CAAC,oBAAqB,CAAC,CAAC;gBACrC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAqB,CAAC,CAAC;YAC9D,CAAC;iBACI,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAC1C,SAAS;gBACT,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAE,CAAC;gBACtD,MAAM,eAAe,GAAG,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACrE,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAa,CAAC,CAAC;gBAC9D,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;gBAC7C,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;YACxD,CAAC;iBACI,CAAC;gBACF,SAAS;gBACT,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAa,CAAC,CAAC;gBACnD,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { TransactionResult } from "./transactional-store.js";
|
|
1
|
+
import { TransactionResult, TransactionWriteOperation } from "./transactional-store.js";
|
|
2
2
|
/**
|
|
3
3
|
* Determines if two adjacent transaction results should be coalesced.
|
|
4
4
|
* Transactions are coalesced when they have structurally equal coalesce values,
|
|
5
5
|
* and neither has coalesce: false.
|
|
6
6
|
*/
|
|
7
7
|
export declare function shouldCoalesceTransactions(previous: TransactionResult<any>, current: TransactionResult<any>): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Coalesces arrays of write operations, potentially merging and removing redundant operations.
|
|
10
|
+
*/
|
|
11
|
+
export declare function coalesceWriteOperations(operations: TransactionWriteOperation<any>[]): TransactionWriteOperation<any>[];
|
|
8
12
|
/**
|
|
9
13
|
* Coalesces two adjacent transaction results into a single combined transaction.
|
|
10
14
|
* The current transaction's operations are applied after the previous transaction's operations.
|