@adobe/data 0.9.60 → 0.9.62
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 +9 -2
- package/dist/ecs/archetype/archetype.js.map +1 -1
- package/dist/ecs/archetype/create-archetype.js +5 -2
- package/dist/ecs/archetype/create-archetype.js.map +1 -1
- package/dist/ecs/database/combine-plugins.d.ts +5 -1
- package/dist/ecs/database/combine-plugins.js +3 -3
- package/dist/ecs/database/combine-plugins.js.map +1 -1
- package/dist/ecs/database/concurrency/concurrency-strategy.d.ts +86 -0
- package/dist/ecs/database/concurrency/concurrency-strategy.js +3 -0
- package/dist/ecs/database/concurrency/concurrency-strategy.js.map +1 -0
- package/dist/ecs/database/concurrency/immediate-concurrency.d.ts +22 -0
- package/dist/ecs/database/concurrency/immediate-concurrency.js +74 -0
- package/dist/ecs/database/concurrency/immediate-concurrency.js.map +1 -0
- package/dist/ecs/database/concurrency/index.d.ts +4 -0
- package/dist/ecs/database/concurrency/index.js +5 -0
- package/dist/ecs/database/concurrency/index.js.map +1 -0
- package/dist/ecs/database/concurrency/rebase-replay-concurrency.d.ts +20 -0
- package/dist/ecs/database/concurrency/rebase-replay-concurrency.js +34 -0
- package/dist/ecs/database/concurrency/rebase-replay-concurrency.js.map +1 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.d.ts +33 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.js +115 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.js.map +1 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.test.d.ts +1 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.test.js +136 -0
- package/dist/ecs/database/concurrency/roll-forward-concurrency.test.js.map +1 -0
- package/dist/ecs/database/create-plugin.d.ts +17 -14
- package/dist/ecs/database/create-plugin.js +2 -1
- package/dist/ecs/database/create-plugin.js.map +1 -1
- package/dist/ecs/database/database.d.ts +61 -11
- package/dist/ecs/database/database.index.performance.test.d.ts +1 -0
- package/dist/ecs/database/database.index.performance.test.js +417 -0
- package/dist/ecs/database/database.index.performance.test.js.map +1 -0
- package/dist/ecs/database/database.index.test.d.ts +1 -0
- package/dist/ecs/database/database.index.test.js +1142 -0
- package/dist/ecs/database/database.index.test.js.map +1 -0
- package/dist/ecs/database/database.index.type-test.d.ts +1 -0
- package/dist/ecs/database/database.index.type-test.js +275 -0
- package/dist/ecs/database/database.index.type-test.js.map +1 -0
- package/dist/ecs/database/database.js.map +1 -1
- package/dist/ecs/database/database.reset.test.js +2 -1
- package/dist/ecs/database/database.reset.test.js.map +1 -1
- package/dist/ecs/database/deep-extends-chain.type-test.d.ts +256 -256
- package/dist/ecs/database/index-api-proof.type-test.d.ts +1 -0
- package/dist/ecs/database/index-api-proof.type-test.js +88 -0
- package/dist/ecs/database/index-api-proof.type-test.js.map +1 -0
- package/dist/ecs/database/index-registry/create-index-registry.d.ts +53 -0
- package/dist/ecs/database/index-registry/create-index-registry.js +174 -0
- package/dist/ecs/database/index-registry/create-index-registry.js.map +1 -0
- package/dist/ecs/database/index-registry/create-index.d.ts +60 -0
- package/dist/ecs/database/index-registry/create-index.js +539 -0
- package/dist/ecs/database/index-registry/create-index.js.map +1 -0
- package/dist/ecs/database/index-registry/index.d.ts +4 -0
- package/dist/ecs/database/index-registry/index.js +4 -0
- package/dist/ecs/database/index-registry/index.js.map +1 -0
- package/dist/ecs/database/index.d.ts +1 -0
- package/dist/ecs/database/index.js +1 -0
- package/dist/ecs/database/index.js.map +1 -1
- package/dist/ecs/database/observe-index-entities.d.ts +26 -0
- package/dist/ecs/database/observe-index-entities.js +66 -0
- package/dist/ecs/database/observe-index-entities.js.map +1 -0
- package/dist/ecs/database/observed/create-observed-database.js +1 -1
- package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
- package/dist/ecs/database/observed/observed-database.d.ts +1 -1
- package/dist/ecs/database/public/create-database.d.ts +12 -27
- package/dist/ecs/database/public/create-database.js +252 -10
- package/dist/ecs/database/public/create-database.js.map +1 -1
- package/dist/ecs/database/public/create-database.test.js +8 -7
- package/dist/ecs/database/public/create-database.test.js.map +1 -1
- package/dist/ecs/database/public/create-transaction-dispatcher.d.ts +4 -2
- package/dist/ecs/database/public/create-transaction-dispatcher.js +2 -8
- package/dist/ecs/database/public/create-transaction-dispatcher.js.map +1 -1
- package/dist/ecs/database/reconciling/create-rebase-replay-applier.d.ts +26 -0
- package/dist/ecs/database/reconciling/create-rebase-replay-applier.js +121 -0
- package/dist/ecs/database/reconciling/create-rebase-replay-applier.js.map +1 -0
- package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +11 -0
- package/dist/ecs/database/reconciling/create-reconciling-database.js +28 -137
- package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
- package/dist/ecs/database/transactional-store/transactional-store.d.ts +4 -3
- package/dist/ecs/entity-location-table/create-entity-location-table.js +2 -2
- package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
- package/dist/ecs/entity-location-table/entity-location-table.d.ts +7 -1
- package/dist/ecs/plugins/scheduler/scheduler.d.ts +1 -0
- package/dist/ecs/store/core/core.d.ts +7 -1
- package/dist/ecs/store/core/create-core.js +3 -3
- package/dist/ecs/store/core/create-core.js.map +1 -1
- package/dist/ecs/store/index-types.d.ts +142 -0
- package/dist/ecs/store/index-types.js +3 -0
- package/dist/ecs/store/index-types.js.map +1 -0
- package/dist/ecs/store/public/create-store.js +206 -4
- package/dist/ecs/store/public/create-store.js.map +1 -1
- package/dist/ecs/store/public/create-store.test.js +25 -0
- package/dist/ecs/store/public/create-store.test.js.map +1 -1
- package/dist/ecs/store/store.d.ts +38 -14
- package/dist/ecs/store/store.js +5 -4
- package/dist/ecs/store/store.js.map +1 -1
- package/dist/ecs/store/transaction-functions.d.ts +4 -3
- package/dist/schema/fractional-index/between-n.d.ts +2 -0
- package/dist/schema/fractional-index/between-n.js +34 -0
- package/dist/schema/fractional-index/between-n.js.map +1 -0
- package/dist/schema/fractional-index/between-n.test.d.ts +1 -0
- package/dist/schema/fractional-index/between-n.test.js +36 -0
- package/dist/schema/fractional-index/between-n.test.js.map +1 -0
- package/dist/schema/fractional-index/between.d.ts +2 -0
- package/dist/schema/fractional-index/between.js +3 -0
- package/dist/schema/fractional-index/between.js.map +1 -0
- package/dist/schema/fractional-index/between.test.d.ts +1 -0
- package/dist/schema/fractional-index/between.test.js +68 -0
- package/dist/schema/fractional-index/between.test.js.map +1 -0
- package/dist/schema/fractional-index/decrement-integer.d.ts +1 -0
- package/dist/schema/fractional-index/decrement-integer.js +32 -0
- package/dist/schema/fractional-index/decrement-integer.js.map +1 -0
- package/dist/schema/fractional-index/decrement-integer.test.d.ts +1 -0
- package/dist/schema/fractional-index/decrement-integer.test.js +31 -0
- package/dist/schema/fractional-index/decrement-integer.test.js.map +1 -0
- package/dist/schema/fractional-index/digits.d.ts +1 -0
- package/dist/schema/fractional-index/digits.js +3 -0
- package/dist/schema/fractional-index/digits.js.map +1 -0
- package/dist/schema/fractional-index/fractional-index.d.ts +4 -0
- package/dist/schema/fractional-index/fractional-index.js +2 -0
- package/dist/schema/fractional-index/fractional-index.js.map +1 -0
- package/dist/schema/fractional-index/increment-integer.d.ts +1 -0
- package/dist/schema/fractional-index/increment-integer.js +32 -0
- package/dist/schema/fractional-index/increment-integer.js.map +1 -0
- package/dist/schema/fractional-index/increment-integer.test.d.ts +1 -0
- package/dist/schema/fractional-index/increment-integer.test.js +34 -0
- package/dist/schema/fractional-index/increment-integer.test.js.map +1 -0
- package/dist/schema/fractional-index/initial.d.ts +2 -0
- package/dist/schema/fractional-index/initial.js +2 -0
- package/dist/schema/fractional-index/initial.js.map +1 -0
- package/dist/schema/fractional-index/integer-length.d.ts +1 -0
- package/dist/schema/fractional-index/integer-length.js +9 -0
- package/dist/schema/fractional-index/integer-length.js.map +1 -0
- package/dist/schema/fractional-index/integer-part.d.ts +1 -0
- package/dist/schema/fractional-index/integer-part.js +9 -0
- package/dist/schema/fractional-index/integer-part.js.map +1 -0
- package/dist/schema/fractional-index/key-between.d.ts +2 -0
- package/dist/schema/fractional-index/key-between.js +39 -0
- package/dist/schema/fractional-index/key-between.js.map +1 -0
- package/dist/schema/fractional-index/midpoint.d.ts +1 -0
- package/dist/schema/fractional-index/midpoint.js +23 -0
- package/dist/schema/fractional-index/midpoint.js.map +1 -0
- package/dist/schema/fractional-index/midpoint.test.d.ts +1 -0
- package/dist/schema/fractional-index/midpoint.test.js +83 -0
- package/dist/schema/fractional-index/midpoint.test.js.map +1 -0
- package/dist/schema/fractional-index/public.d.ts +4 -0
- package/dist/schema/fractional-index/public.js +6 -0
- package/dist/schema/fractional-index/public.js.map +1 -0
- package/dist/schema/fractional-index/schema.d.ts +4 -0
- package/dist/schema/fractional-index/schema.js +5 -0
- package/dist/schema/fractional-index/schema.js.map +1 -0
- package/dist/schema/fractional-index/smallest-integer.d.ts +1 -0
- package/dist/schema/fractional-index/smallest-integer.js +3 -0
- package/dist/schema/fractional-index/smallest-integer.js.map +1 -0
- package/dist/schema/fractional-index/validate-integer.d.ts +1 -0
- package/dist/schema/fractional-index/validate-integer.js +7 -0
- package/dist/schema/fractional-index/validate-integer.js.map +1 -0
- package/dist/schema/fractional-index/validate-order-key.d.ts +1 -0
- package/dist/schema/fractional-index/validate-order-key.js +11 -0
- package/dist/schema/fractional-index/validate-order-key.js.map +1 -0
- package/dist/schema/guid/create.d.ts +2 -0
- package/dist/schema/guid/create.js +10 -0
- package/dist/schema/guid/create.js.map +1 -0
- package/dist/schema/guid/create.test.d.ts +1 -0
- package/dist/schema/guid/create.test.js +39 -0
- package/dist/schema/guid/create.test.js.map +1 -0
- package/dist/schema/guid/equals.d.ts +2 -0
- package/dist/schema/guid/equals.js +3 -0
- package/dist/schema/guid/equals.js.map +1 -0
- package/dist/schema/guid/equals.test.d.ts +1 -0
- package/dist/schema/guid/equals.test.js +30 -0
- package/dist/schema/guid/equals.test.js.map +1 -0
- package/dist/schema/guid/from-uuid.d.ts +2 -0
- package/dist/schema/guid/from-uuid.js +15 -0
- package/dist/schema/guid/from-uuid.js.map +1 -0
- package/dist/schema/guid/from-uuid.test.d.ts +1 -0
- package/dist/schema/guid/from-uuid.test.js +39 -0
- package/dist/schema/guid/from-uuid.test.js.map +1 -0
- package/dist/schema/guid/guid.performance.test.d.ts +1 -0
- package/dist/schema/guid/guid.performance.test.js +297 -0
- package/dist/schema/guid/guid.performance.test.js.map +1 -0
- package/dist/schema/guid/index.d.ts +4 -0
- package/dist/schema/guid/index.js +3 -0
- package/dist/schema/guid/index.js.map +1 -0
- package/dist/schema/guid/layout.d.ts +1 -0
- package/dist/schema/guid/layout.js +5 -0
- package/dist/schema/guid/layout.js.map +1 -0
- package/dist/schema/guid/nil.d.ts +2 -0
- package/dist/schema/guid/nil.js +3 -0
- package/dist/schema/guid/nil.js.map +1 -0
- package/dist/schema/guid/public.d.ts +8 -0
- package/dist/schema/guid/public.js +10 -0
- package/dist/schema/guid/public.js.map +1 -0
- package/dist/schema/guid/schema.d.ts +12 -0
- package/dist/schema/guid/schema.js +10 -0
- package/dist/schema/guid/schema.js.map +1 -0
- package/dist/schema/guid/schema.test.d.ts +1 -0
- package/dist/schema/guid/schema.test.js +35 -0
- package/dist/schema/guid/schema.test.js.map +1 -0
- package/dist/schema/guid/to-unserializable-key.d.ts +2 -0
- package/dist/schema/guid/to-unserializable-key.js +10 -0
- package/dist/schema/guid/to-unserializable-key.js.map +1 -0
- package/dist/schema/guid/to-uuid.d.ts +2 -0
- package/dist/schema/guid/to-uuid.js +15 -0
- package/dist/schema/guid/to-uuid.js.map +1 -0
- package/dist/schema/guid/to-uuid.test.d.ts +1 -0
- package/dist/schema/guid/to-uuid.test.js +31 -0
- package/dist/schema/guid/to-uuid.test.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/table/select-rows.d.ts +7 -4
- package/dist/table/select-rows.js.map +1 -1
- package/dist/test-setup.js +2 -2
- package/dist/test-setup.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/references/data-lit/package.json +1 -1
- package/references/data-lit-tictactoe/package.json +1 -1
- package/references/data-react/package.json +1 -1
- package/references/data-react-hello/package.json +1 -1
- package/references/data-react-pixie/package.json +1 -1
|
@@ -1,155 +1,46 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
import { applyOperations } from "../transactional-store/apply-operations.js";
|
|
3
|
-
import { ReconcilingEntryOps } from "./reconciling-entry.js";
|
|
4
2
|
import { createObservedDatabase } from "../observed/create-observed-database.js";
|
|
3
|
+
import { createRebaseReplayApplier } from "./create-rebase-replay-applier.js";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a database that wraps `store` with the rebase-replay reconciliation
|
|
6
|
+
* protocol on top of an observed database.
|
|
7
|
+
*
|
|
8
|
+
* Prefer {@link createRebaseReplayConcurrency} when building a new database
|
|
9
|
+
* via {@link createDatabase} — it plugs into the concurrency-strategy seam
|
|
10
|
+
* and composes cleanly with the rest of the database construction path.
|
|
11
|
+
*
|
|
12
|
+
* This function is kept for direct use (e.g. tests, lower-level tooling)
|
|
13
|
+
* where the full `Database` surface is not needed.
|
|
14
|
+
*/
|
|
5
15
|
export function createReconcilingDatabase(store, transactionDeclarations) {
|
|
6
16
|
const transactionDeclarationsRef = {
|
|
7
17
|
...transactionDeclarations,
|
|
8
18
|
};
|
|
9
19
|
const observedDatabase = createObservedDatabase(store);
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const rollbackEntryResult = (entry) => {
|
|
13
|
-
if (entry.result) {
|
|
14
|
-
execute(t => applyOperations(t, entry.result.undo), { transient: true, userId: undefined });
|
|
15
|
-
entry.result = undefined;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
const rollbackAllTransients = () => {
|
|
19
|
-
for (let i = reconcilingEntries.length - 1; i >= 0; i--) {
|
|
20
|
-
rollbackEntryResult(reconcilingEntries[i]);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Splice a transient entry out of the queue by compound (userId, id) key.
|
|
25
|
-
* IMPORTANT: must only be called when all transients are already rolled back
|
|
26
|
-
* (i.e. after rollbackAllTransients()). Calling it while entries are still
|
|
27
|
-
* applied would undo a non-top entry mid-stack, corrupting the freelist.
|
|
28
|
-
*/
|
|
29
|
-
const spliceTransientEntry = (id, userId) => {
|
|
30
|
-
const index = reconcilingEntries.findIndex(entry => entry.id === id && entry.userId === userId);
|
|
31
|
-
if (index === -1) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
reconcilingEntries.splice(index, 1);
|
|
35
|
-
return true;
|
|
36
|
-
};
|
|
37
|
-
const executeEntry = (entry) => {
|
|
38
|
-
const result = execute(t => entry.transaction(t, entry.args), { transient: true, userId: entry.userId });
|
|
39
|
-
// Only store result if it actually made changes (not a no-op).
|
|
40
|
-
// A no-op transaction has empty redo/undo operations.
|
|
41
|
-
const isNoOp = result.redo.length === 0 && result.undo.length === 0;
|
|
42
|
-
entry.result = isNoOp ? undefined : result;
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
const replayAllTransients = () => {
|
|
46
|
-
let lastResult;
|
|
47
|
-
for (const entry of reconcilingEntries) {
|
|
48
|
-
lastResult = executeEntry(entry);
|
|
49
|
-
}
|
|
50
|
-
return lastResult;
|
|
51
|
-
};
|
|
52
|
-
const applyEnvelope = (envelope) => {
|
|
53
|
-
const transaction = transactionDeclarationsRef[envelope.name];
|
|
54
|
-
if (!transaction) {
|
|
55
|
-
throw new Error(`Unknown transaction: ${envelope.name}`);
|
|
56
|
-
}
|
|
57
|
-
const { id, userId, time, args } = envelope;
|
|
58
|
-
const transactionFn = transaction;
|
|
59
|
-
// Handle cancellation: remove any transient entry for this (userId, id).
|
|
60
|
-
if (time === 0) {
|
|
61
|
-
const index = reconcilingEntries.findIndex(entry => entry.id === id && entry.userId === userId);
|
|
62
|
-
if (index === -1) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
rollbackAllTransients();
|
|
66
|
-
reconcilingEntries.splice(index, 1);
|
|
67
|
-
replayAllTransients();
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
// Handle transient application (negative time).
|
|
71
|
-
if (time < 0) {
|
|
72
|
-
// Roll everything back before touching the queue so each undo is
|
|
73
|
-
// applied in reverse stack order (avoids mid-stack partial undos
|
|
74
|
-
// that would corrupt the freelist).
|
|
75
|
-
rollbackAllTransients();
|
|
76
|
-
spliceTransientEntry(id, userId);
|
|
77
|
-
// Create and insert the new transient entry.
|
|
78
|
-
const entry = {
|
|
79
|
-
id,
|
|
80
|
-
userId,
|
|
81
|
-
name: envelope.name,
|
|
82
|
-
transaction: transactionFn,
|
|
83
|
-
args,
|
|
84
|
-
time,
|
|
85
|
-
result: undefined,
|
|
86
|
-
};
|
|
87
|
-
const insertIndex = ReconcilingEntryOps.findInsertIndex(reconcilingEntries, entry);
|
|
88
|
-
reconcilingEntries.splice(insertIndex, 0, entry);
|
|
89
|
-
// Rebuild transient state from scratch to respect time ordering.
|
|
90
|
-
const result = replayAllTransients();
|
|
91
|
-
// If the new entry produced no store changes (no-op), remove it
|
|
92
|
-
// from the queue immediately. It will never receive a server
|
|
93
|
-
// promotion and would otherwise sit in the queue uselessly.
|
|
94
|
-
if (entry.result === undefined) {
|
|
95
|
-
const idx = reconcilingEntries.indexOf(entry);
|
|
96
|
-
if (idx !== -1)
|
|
97
|
-
reconcilingEntries.splice(idx, 1);
|
|
98
|
-
}
|
|
99
|
-
return result;
|
|
100
|
-
}
|
|
101
|
-
// Handle committed application (positive time): rebase the entire
|
|
102
|
-
// transient queue around it so deterministic id allocation matches
|
|
103
|
-
// every other peer's view.
|
|
104
|
-
// 1. Roll back all transients in reverse stack order (avoids
|
|
105
|
-
// mid-stack partial undos that corrupt the freelist).
|
|
106
|
-
// 2. Splice out the matching transient (already rolled back).
|
|
107
|
-
// 3. Apply the committed envelope once (non-transient).
|
|
108
|
-
// 4. Replay the surviving transients on top.
|
|
109
|
-
// This guarantees the freelist / nextIndex snapshot at step 3 is
|
|
110
|
-
// identical on every peer, regardless of what local transients were
|
|
111
|
-
// pending when the broadcast arrived.
|
|
112
|
-
rollbackAllTransients();
|
|
113
|
-
spliceTransientEntry(id, userId);
|
|
114
|
-
const result = execute(t => transactionFn(t, args), { transient: false, userId });
|
|
115
|
-
replayAllTransients();
|
|
116
|
-
return result;
|
|
117
|
-
};
|
|
118
|
-
const cancelEntry = (id, userId) => {
|
|
119
|
-
const index = reconcilingEntries.findIndex(entry => entry.id === id && entry.userId === userId);
|
|
120
|
-
if (index === -1) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
rollbackAllTransients();
|
|
124
|
-
reconcilingEntries.splice(index, 1);
|
|
125
|
-
replayAllTransients();
|
|
126
|
-
};
|
|
127
|
-
const resetReconciling = () => {
|
|
128
|
-
reconcilingEntries.length = 0;
|
|
129
|
-
observedDatabase.reset();
|
|
130
|
-
};
|
|
20
|
+
const getTransaction = (name) => transactionDeclarationsRef[name];
|
|
21
|
+
const applier = createRebaseReplayApplier(observedDatabase.execute, getTransaction);
|
|
131
22
|
const reconcilingDatabase = {
|
|
132
|
-
...
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
23
|
+
...observedDatabase,
|
|
24
|
+
reset: () => {
|
|
25
|
+
applier.onReset();
|
|
26
|
+
observedDatabase.reset();
|
|
27
|
+
},
|
|
137
28
|
toData: () => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
29
|
+
// Detach the snapshot from live buffers: replayAllTransients below
|
|
30
|
+
// mutates them and would otherwise corrupt the returned snapshot.
|
|
31
|
+
applier.rollbackAllTransients();
|
|
32
|
+
const data = observedDatabase.toData(true);
|
|
33
|
+
applier.replayAllTransients();
|
|
141
34
|
return data;
|
|
142
35
|
},
|
|
143
36
|
fromData: (data) => {
|
|
144
|
-
|
|
145
|
-
replayAllTransients();
|
|
37
|
+
observedDatabase.fromData(data);
|
|
38
|
+
applier.replayAllTransients();
|
|
146
39
|
},
|
|
147
|
-
apply:
|
|
148
|
-
cancel:
|
|
40
|
+
apply: applier.apply,
|
|
41
|
+
cancel: applier.cancel,
|
|
149
42
|
extend: (plugin) => {
|
|
150
|
-
// Extend the underlying observed database (which extends transactionalStore -> store)
|
|
151
43
|
observedDatabase.extend(plugin);
|
|
152
|
-
// Extend our transaction declarations
|
|
153
44
|
if (plugin.transactions) {
|
|
154
45
|
Object.assign(transactionDeclarationsRef, plugin.transactions);
|
|
155
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-reconciling-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.ts"],"names":[],"mappings":"AAAA,uDAAuD;
|
|
1
|
+
{"version":3,"file":"create-reconciling-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/reconciling/create-reconciling-database.ts"],"names":[],"mappings":"AAAA,uDAAuD;AASvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAI9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAMrC,KAAqB,EACrB,uBAA2B;IAE3B,MAAM,0BAA0B,GAAqC;QACjE,GAAG,uBAAuB;KAC7B,CAAC;IAEF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CACnC,0BAAuG,CAAC,IAAI,CAAC,CAAC;IAEnH,MAAM,OAAO,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEpF,MAAM,mBAAmB,GAAqC;QAC1D,GAAG,gBAAgB;QACnB,KAAK,EAAE,GAAG,EAAE;YACR,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACT,mEAAmE;YACnE,kEAAkE;YAClE,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE;YACxB,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,EAAE,OAAO,CAAC,KAAkD;QACjE,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,CAAC,MAAW,EAAE,EAAE;YACpB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,mBAA0B,CAAC;QACtC,CAAC;KACJ,CAAC;IAEF,OAAO,mBAAmB,CAAC;AAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-transactional-store.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAMhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gEAAgE;AAChE,MAAM,MAAM,GAAY,cAAc,CAAC;AAUvC,MAAM,UAAU,wBAAwB,CAKpC,KAAqB;IAGrB,2DAA2D;IAC3D,IAAI,4BAA4B,GAAmC,EAAE,CAAC;IACtE,IAAI,cAAc,GAAmC,EAAE,CAAC;IACxD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;QACnC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;IACzD,CAAC,CAAC;IACF,MAAM,OAAO,GAAG;QACZ,QAAQ,EAAE,IAAI,GAAG,EAAwC;QACzD,UAAU,EAAE,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"create-transactional-store.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { StringKeyof } from "../../../types/types.js";
|
|
|
8
8
|
import { ArchetypeComponents } from "../../store/archetype-components.js";
|
|
9
9
|
import { FromSchemas } from "../../../schema/from-schemas.js";
|
|
10
10
|
import { Undoable } from "../undoable.js";
|
|
11
|
+
import { IndexDeclarations } from "../../store/index-types.js";
|
|
11
12
|
/**
|
|
12
13
|
* The first argument passed to every transaction function. Extends the full
|
|
13
14
|
* store read/write surface with `userId` — the identifier of the peer or user
|
|
@@ -17,10 +18,10 @@ import { Undoable } from "../undoable.js";
|
|
|
17
18
|
*
|
|
18
19
|
* `userId` is `undefined` in local-only (no-sync) databases.
|
|
19
20
|
*/
|
|
20
|
-
export type TransactionContext<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C
|
|
21
|
+
export type TransactionContext<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, IX extends IndexDeclarations<C> = {}> = Store<C, R, A, IX> & {
|
|
21
22
|
readonly userId: number | string | undefined;
|
|
22
23
|
};
|
|
23
|
-
export interface TransactionalStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never> extends ReadonlyStore<C, R, A> {
|
|
24
|
+
export interface TransactionalStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never, IX extends IndexDeclarations<C> = {}> extends ReadonlyStore<C, R, A, IX> {
|
|
24
25
|
/**
|
|
25
26
|
* Execute a transaction on the store.
|
|
26
27
|
* The transactionFunction must NOT directly mutate archetype rows as those changes would not be captured.
|
|
@@ -62,6 +63,6 @@ export interface TransactionResult<C = unknown> {
|
|
|
62
63
|
readonly redo: TransactionWriteOperation<C>[];
|
|
63
64
|
readonly undo: TransactionWriteOperation<C>[];
|
|
64
65
|
readonly changedEntities: Map<Entity, EntityUpdateValues<C> | null>;
|
|
65
|
-
readonly changedComponents: Set<
|
|
66
|
+
readonly changedComponents: Set<string>;
|
|
66
67
|
readonly changedArchetypes: Set<ArchetypeId>;
|
|
67
68
|
}
|
|
@@ -83,8 +83,8 @@ const createPositiveEntityLocationTable = (initialCapacity = 16) => {
|
|
|
83
83
|
freeListHead = -1;
|
|
84
84
|
nextIndex = 0;
|
|
85
85
|
},
|
|
86
|
-
toData: () => ({
|
|
87
|
-
entities,
|
|
86
|
+
toData: (copy = false) => ({
|
|
87
|
+
entities: copy ? entities.slice() : entities,
|
|
88
88
|
freeListHead,
|
|
89
89
|
nextIndex,
|
|
90
90
|
capacity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-entity-location-table.js","sourceRoot":"","sources":["../../../src/ecs/entity-location-table/create-entity-location-table.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-entity-location-table.js","sourceRoot":"","sources":["../../../src/ecs/entity-location-table/create-entity-location-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ export interface EntityLocationTable {
|
|
|
7
7
|
locate: (entity: Entity) => EntityLocation | null;
|
|
8
8
|
/** Wipe all entity records. O(1). Next allocate starts from entity 0 again. */
|
|
9
9
|
reset: () => void;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Serialize the table. When `copy` is true the backing `entities` buffer is
|
|
12
|
+
* detached (sliced) so the snapshot survives later mutation of the live
|
|
13
|
+
* table; otherwise the snapshot references the live buffer (faster, but only
|
|
14
|
+
* valid until the next mutation).
|
|
15
|
+
*/
|
|
16
|
+
toData: (copy?: boolean) => unknown;
|
|
11
17
|
fromData: (data: unknown) => void;
|
|
12
18
|
}
|
|
@@ -30,7 +30,13 @@ export interface ReadonlyCore<C extends Components = never> {
|
|
|
30
30
|
read<T extends RequiredComponents>(entity: Entity, minArchetype: ReadonlyArchetype<T> | Archetype<T>): Readonly<T> & EntityReadValues<C> | null;
|
|
31
31
|
read(entity: Entity): EntityReadValues<C> | null;
|
|
32
32
|
get<K extends StringKeyof<C>>(entity: Entity, component: K): C[K] | undefined;
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Serialize the core. When `copy` is true the snapshot is detached from the
|
|
35
|
+
* live store (column and entity buffers are copied) so it survives later
|
|
36
|
+
* mutation; otherwise it references live buffers — faster, but only valid
|
|
37
|
+
* until the next mutation. See {@link Store.toData} bug notes.
|
|
38
|
+
*/
|
|
39
|
+
toData(copy?: boolean): unknown;
|
|
34
40
|
}
|
|
35
41
|
/**
|
|
36
42
|
* This is the main interface for the low level ECS Core.
|
|
@@ -171,10 +171,10 @@ export function createCore(newComponentSchemas) {
|
|
|
171
171
|
update: updateEntity,
|
|
172
172
|
compact,
|
|
173
173
|
reset: resetCore,
|
|
174
|
-
toData: () => ({
|
|
174
|
+
toData: (copy = false) => ({
|
|
175
175
|
componentSchemas,
|
|
176
|
-
entityLocationTableData: persistentLocationTable.toData(),
|
|
177
|
-
archetypesData: archetypes.map(archetype => archetype.toData())
|
|
176
|
+
entityLocationTableData: persistentLocationTable.toData(copy),
|
|
177
|
+
archetypesData: archetypes.map(archetype => archetype.toData(copy))
|
|
178
178
|
}),
|
|
179
179
|
fromData: (data) => {
|
|
180
180
|
Object.assign(componentSchemas, data.componentSchemas);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { StringKeyof } from "../../types/types.js";
|
|
2
|
+
import type { Entity } from "../entity/entity.js";
|
|
3
|
+
import type { Observe } from "../../observe/index.js";
|
|
4
|
+
import { Components } from "./components.js";
|
|
5
|
+
/**
|
|
6
|
+
* If `T` is an array type, the element type; otherwise `T` unchanged.
|
|
7
|
+
*
|
|
8
|
+
* Multi-value indexes auto-fan-out array values into per-element bucket
|
|
9
|
+
* entries at insert time. The lookup methods therefore take the element
|
|
10
|
+
* type, not the array — a query like `find("joe")` against a
|
|
11
|
+
* `Task { assigned: string[] }` is exactly what users want, and an array
|
|
12
|
+
* as a single opaque key is virtually never useful (order-dependent, not
|
|
13
|
+
* a natural query shape).
|
|
14
|
+
*/
|
|
15
|
+
type ElementOf<T> = T extends readonly (infer E)[] ? E : T;
|
|
16
|
+
/**
|
|
17
|
+
* Per-slot extractor in a compound `key` declaration. Either:
|
|
18
|
+
* - a `StringKeyof<C>` — read the value of that column directly, or
|
|
19
|
+
* - a function — derive the slot's value from the index's read components.
|
|
20
|
+
*/
|
|
21
|
+
export type IndexKeySlot<C extends Components> = StringKeyof<C> | ((...args: any[]) => unknown);
|
|
22
|
+
/**
|
|
23
|
+
* The four shapes a `key` declaration can take. Drives the `find` / `get`
|
|
24
|
+
* argument type via {@link FindArg}.
|
|
25
|
+
*
|
|
26
|
+
* - `string` — read this one column. `find` takes a scalar.
|
|
27
|
+
* - `readonly string[]` — read each of these columns. `find` takes
|
|
28
|
+
* `{ col1: ..., col2: ... }` keyed by the column names themselves.
|
|
29
|
+
* - `(...args) => Value` — derive the bucket key from the components.
|
|
30
|
+
* `find` takes whatever the function returns (or its element type
|
|
31
|
+
* when the return is an array — multi-value fan-out).
|
|
32
|
+
* - slot map — name each part of a compound key; values are either
|
|
33
|
+
* column-name strings (identity) or extractor functions. `find`
|
|
34
|
+
* takes an object keyed by the slot names.
|
|
35
|
+
*/
|
|
36
|
+
export type IndexKey<C extends Components> = StringKeyof<C> | readonly StringKeyof<C>[] | ((...args: any[]) => unknown) | {
|
|
37
|
+
readonly [slot: string]: IndexKeySlot<C>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Within-bucket ordering. `by` declares the columns to read into the
|
|
41
|
+
* per-entity sort cache; `compare` (optional) is the comparator over
|
|
42
|
+
* `Pick<C, by[number]>`. When `compare` is omitted, the default is
|
|
43
|
+
* ascending across `by` from left to right with positional tie-break
|
|
44
|
+
* (`JS <` / `>` per column).
|
|
45
|
+
*
|
|
46
|
+
* `compare` is method shorthand for the same `IX & XIX` variance reason
|
|
47
|
+
* that `compute` was previously: `Store.extend`'s result intersects index
|
|
48
|
+
* declarations, which would otherwise trip `strictFunctionTypes` over
|
|
49
|
+
* contravariant parameter positions.
|
|
50
|
+
*/
|
|
51
|
+
export type IndexOrder<C extends Components, By extends readonly StringKeyof<C>[] = readonly StringKeyof<C>[]> = {
|
|
52
|
+
readonly by: By;
|
|
53
|
+
compare?(a: Pick<C, By[number]>, b: Pick<C, By[number]>): number;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Type-level declaration of an index.
|
|
57
|
+
*
|
|
58
|
+
* - `key` is the only required field. Its shape drives the bucket layout
|
|
59
|
+
* and the lookup argument type of `find` / `get` / `findRange`.
|
|
60
|
+
* - `order` (optional) maintains sorted iteration within each bucket.
|
|
61
|
+
* - `unique` (optional) — when true, at most one entity may hold each
|
|
62
|
+
* bucket key; `get(arg)` is exposed and returns `Entity | null`.
|
|
63
|
+
* - `components` (optional) — names the columns extractor functions
|
|
64
|
+
* read. Only needed when at least one function reads a column not
|
|
65
|
+
* implied by a string-identity key entry.
|
|
66
|
+
*
|
|
67
|
+
* See `packages/data/src/ecs/README.md` for the full pattern catalogue.
|
|
68
|
+
*/
|
|
69
|
+
export type Index<C extends Components = any, K extends IndexKey<C> = IndexKey<C>, O extends IndexOrder<C, any> | undefined = IndexOrder<C, any> | undefined, U extends boolean = boolean> = {
|
|
70
|
+
readonly key: K;
|
|
71
|
+
readonly order?: O;
|
|
72
|
+
readonly unique?: U;
|
|
73
|
+
readonly components?: readonly StringKeyof<C>[];
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Resolve a slot's contributed `find` field type. Strings are identity
|
|
77
|
+
* reads on the named column; functions yield their return type (element
|
|
78
|
+
* type if the return is an array).
|
|
79
|
+
*/
|
|
80
|
+
type SlotFindType<C extends Components, V> = V extends StringKeyof<C> ? ElementOf<C[V]> : V extends (...args: any[]) => infer R ? ElementOf<R> : never;
|
|
81
|
+
/** Argument type of `find` / `get` derived from the `key` shape. */
|
|
82
|
+
type FindArg<C extends Components, K> = K extends StringKeyof<C> ? ElementOf<C[K]> : K extends readonly StringKeyof<C>[] ? {
|
|
83
|
+
readonly [P in K[number]]: ElementOf<C[P]>;
|
|
84
|
+
} : K extends (...args: any[]) => infer R ? ElementOf<R> : K extends Record<string, IndexKeySlot<C>> ? {
|
|
85
|
+
readonly [Slot in keyof K]: SlotFindType<C, K[Slot]>;
|
|
86
|
+
} : never;
|
|
87
|
+
/** Comparison-operator filter on a scalar bucket-key value. */
|
|
88
|
+
type OperatorFilter<T> = {
|
|
89
|
+
readonly "=="?: T;
|
|
90
|
+
readonly "!="?: T;
|
|
91
|
+
readonly "<"?: T;
|
|
92
|
+
readonly "<="?: T;
|
|
93
|
+
readonly ">"?: T;
|
|
94
|
+
readonly ">="?: T;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* `findRange` argument: each field of the find argument may be either an
|
|
98
|
+
* equality value or a `<,<=,>,>=,==,!=` operator filter. For scalar keys
|
|
99
|
+
* the entire argument may itself be an operator filter.
|
|
100
|
+
*/
|
|
101
|
+
type RangeArg<T> = T extends object ? {
|
|
102
|
+
readonly [P in keyof T]?: T[P] | OperatorFilter<T[P]>;
|
|
103
|
+
} : T | OperatorFilter<T>;
|
|
104
|
+
export declare namespace Index {
|
|
105
|
+
/** Public lookup handle exposed on `db.indexes.<name>` and `t.indexes.<name>`. */
|
|
106
|
+
type Handle<C extends Components, I extends Index<C, any, any, any>> = I extends Index<C, infer K, any, infer U> ? {
|
|
107
|
+
find(arg: FindArg<C, K>): readonly Entity[];
|
|
108
|
+
findRange(arg: RangeArg<FindArg<C, K>>): readonly Entity[];
|
|
109
|
+
/**
|
|
110
|
+
* Reactive view of `find(arg)`. Emits the current sorted
|
|
111
|
+
* bucket synchronously on subscribe, then again — on a
|
|
112
|
+
* microtask after a committed transaction — whenever the
|
|
113
|
+
* observed bucket's membership *or order* changes. Unlike
|
|
114
|
+
* pairing `observe.select` with `find`, a sort-key-only
|
|
115
|
+
* reorder is never silently swallowed.
|
|
116
|
+
*/
|
|
117
|
+
observe(arg: FindArg<C, K>): Observe<readonly Entity[]>;
|
|
118
|
+
} & (U extends true ? {
|
|
119
|
+
get(arg: FindArg<C, K>): Entity | null;
|
|
120
|
+
} : {}) : never;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Plugin-level / store-level map of indexes. Keys are user-chosen index
|
|
124
|
+
* names; values are `Index` declarations whose `key` references real
|
|
125
|
+
* columns of `C`.
|
|
126
|
+
*
|
|
127
|
+
* The structural shape is inlined (rather than `Index<C, any, any, any>`) so
|
|
128
|
+
* that the per-entry `key`/`order` fields are actually constrained at the
|
|
129
|
+
* declaration site. With `Index<C, any, any, any>` the wildcard `any`
|
|
130
|
+
* generics widen `key` past `IndexKey<C>`, so a typo like `{ key: "bogus" }`
|
|
131
|
+
* silently passes the constraint. Inlining `key: IndexKey<C>` here makes
|
|
132
|
+
* the typo a type error at the plugin descriptor.
|
|
133
|
+
*/
|
|
134
|
+
export type IndexDeclarations<C extends Components = any> = {
|
|
135
|
+
readonly [name: string]: {
|
|
136
|
+
readonly key: IndexKey<C>;
|
|
137
|
+
readonly order?: IndexOrder<C>;
|
|
138
|
+
readonly unique?: boolean;
|
|
139
|
+
readonly components?: readonly StringKeyof<C>[];
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-types.js","sourceRoot":"","sources":["../../../src/ecs/store/index-types.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
|