@adobe/data 0.9.69 → 0.9.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/cache/functions/hashing/blob-to-hash.js +59 -11
  2. package/dist/cache/functions/hashing/blob-to-hash.js.map +1 -1
  3. package/dist/cache/functions/hashing/hashing.test.js +59 -0
  4. package/dist/cache/functions/hashing/hashing.test.js.map +1 -1
  5. package/dist/ecs/database/concurrency/concurrency-strategy.d.ts +10 -10
  6. package/dist/ecs/database/concurrency/immediate-concurrency.d.ts +3 -3
  7. package/dist/ecs/database/concurrency/immediate-concurrency.js +9 -9
  8. package/dist/ecs/database/concurrency/immediate-concurrency.js.map +1 -1
  9. package/dist/ecs/database/concurrency/roll-forward-concurrency.js +4 -4
  10. package/dist/ecs/database/concurrency/roll-forward-concurrency.js.map +1 -1
  11. package/dist/ecs/database/database.d.ts +5 -5
  12. package/dist/ecs/database/observed/create-observed-database.js +5 -5
  13. package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
  14. package/dist/ecs/database/public/create-transaction-dispatcher.d.ts +4 -4
  15. package/dist/ecs/database/public/create-transaction-dispatcher.js +15 -15
  16. package/dist/ecs/database/public/create-transaction-dispatcher.js.map +1 -1
  17. package/dist/ecs/database/reconciling/create-rebase-replay-applier.js +3 -3
  18. package/dist/ecs/database/reconciling/create-rebase-replay-applier.js.map +1 -1
  19. package/dist/ecs/database/transactional-store/coalesce-actions.js +2 -2
  20. package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -1
  21. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +57 -57
  22. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
  23. package/dist/ecs/database/transactional-store/create-transactional-store.js +13 -13
  24. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  25. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +51 -51
  26. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  27. package/dist/ecs/database/transactional-store/transaction-options.d.ts +3 -3
  28. package/dist/ecs/database/transactional-store/transactional-store.d.ts +4 -4
  29. package/dist/ecs/entity/is-ephemeral.d.ts +3 -0
  30. package/dist/ecs/entity/is-ephemeral.js +4 -1
  31. package/dist/ecs/entity/is-ephemeral.js.map +1 -1
  32. package/dist/ecs/entity/is-ephemeral.test.js +22 -5
  33. package/dist/ecs/entity/is-ephemeral.test.js.map +1 -1
  34. package/dist/ecs/entity/public.d.ts +1 -1
  35. package/dist/ecs/entity/public.js +1 -1
  36. package/dist/ecs/entity/public.js.map +1 -1
  37. package/dist/ecs/optional-components.d.ts +3 -1
  38. package/dist/ecs/persistence-service/create-storage-persistence-service.js +1 -1
  39. package/dist/ecs/persistence-service/create-storage-persistence-service.js.map +1 -1
  40. package/dist/ecs/store/archetype-row.d.ts +16 -0
  41. package/dist/ecs/store/archetype-row.js +2 -0
  42. package/dist/ecs/store/archetype-row.js.map +1 -0
  43. package/dist/ecs/store/core/create-core.js +15 -10
  44. package/dist/ecs/store/core/create-core.js.map +1 -1
  45. package/dist/ecs/store/index.d.ts +1 -0
  46. package/dist/ecs/store/index.js.map +1 -1
  47. package/dist/ecs/store/public/create-store.js +5 -5
  48. package/dist/ecs/store/public/create-store.js.map +1 -1
  49. package/dist/ecs/store/store.js +6 -0
  50. package/dist/ecs/store/store.js.map +1 -1
  51. package/dist/ecs/undo-redo-service/create-undo-redo-service.js +1 -1
  52. package/dist/ecs/undo-redo-service/create-undo-redo-service.js.map +1 -1
  53. package/dist/observe/with-batch.js +7 -6
  54. package/dist/observe/with-batch.js.map +1 -1
  55. package/dist/observe/with-batch.test.js +11 -0
  56. package/dist/observe/with-batch.test.js.map +1 -1
  57. package/dist/observe/with-deduplicate-data.js +4 -2
  58. package/dist/observe/with-deduplicate-data.js.map +1 -1
  59. package/dist/observe/with-deduplicate-data.test.d.ts +1 -0
  60. package/dist/observe/with-deduplicate-data.test.js +39 -0
  61. package/dist/observe/with-deduplicate-data.test.js.map +1 -0
  62. package/dist/observe/with-filter.d.ts +4 -3
  63. package/dist/observe/with-filter.js +3 -2
  64. package/dist/observe/with-filter.js.map +1 -1
  65. package/dist/observe/with-filter.type-test.d.ts +1 -0
  66. package/dist/observe/with-filter.type-test.js +14 -0
  67. package/dist/observe/with-filter.type-test.js.map +1 -0
  68. package/dist/schema/schema.d.ts +2 -0
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/dist/typed-buffer/register-typed-buffer-codecs.js +4 -4
  71. package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -1
  72. package/dist/typed-buffer/structs/index.d.ts +1 -0
  73. package/dist/typed-buffer/structs/index.js +1 -0
  74. package/dist/typed-buffer/structs/index.js.map +1 -1
  75. package/package.json +2 -1
  76. package/references/data-lit/package.json +1 -1
  77. package/references/data-lit/src/hooks/use-drag-transaction.ts +2 -2
  78. package/references/data-lit/src/hooks/use-pointer-observe.ts +2 -2
  79. package/references/data-lit-tictactoe/package.json +1 -1
  80. package/references/data-react/package.json +1 -1
  81. package/references/data-react-hello/package.json +1 -1
  82. package/references/data-react-pixie/package.json +1 -1
@@ -1,23 +1,71 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ // Performance assumptions
3
+ // -----------------------
4
+ // Blobs hashed here are frequently NOT fully in memory (disk- or
5
+ // stream-backed), so each `reader.read()` is genuine I/O latency, not a
6
+ // microtask hop over resident bytes. This makes the path I/O-bound, and the
7
+ // design optimizes for overlapping those waits across concurrent calls:
8
+ //
9
+ // - A single WASM hasher instance is reused for every call (instantiation
10
+ // is not free, and we don't want one per call).
11
+ // - Concurrency is achieved via hash-wasm's resumable save()/load() rather
12
+ // than a pool of instances: each call keeps its own `state` and only
13
+ // touches the shared instance in synchronous critical sections, so calls
14
+ // interleave at `read()` without serializing or corrupting each other.
15
+ //
16
+ // The trade-off is a save()/load() pair per chunk (cheap for SHA-256). If
17
+ // blobs were instead known to be fully in memory, this would be compute-bound,
18
+ // the I/O overlap would buy nothing, and buffering then hashing synchronously
19
+ // (one init→update→digest block, no await) would suffice.
20
+ //
21
+ // Note on the "single global hasher" decision: even compute-bound, extra
22
+ // instances would NOT help on this thread. WASM has no threads of its own and
23
+ // hasher.update() is synchronous, so on one JS thread only one hash advances
24
+ // at a time regardless of how many instances exist — a pool buys nothing here.
25
+ // Servicing multiple CPU-bound hashes truly in parallel requires Web Workers,
26
+ // each with its OWN instance on its OWN thread. That is the only thing a second
27
+ // instance is ever good for, and it lives at the worker boundary, not here. So
28
+ // within this thread, one global hasher is strictly correct and loses nothing.
2
29
  import { createSHA256 } from "hash-wasm";
30
+ let hasherPromise;
3
31
  export async function blobToHash(blob) {
4
- const hasher = await createSHA256();
5
- hasher.init();
6
- // Encode MIME type as UTF-16LE
7
- const tCodes = new Uint16Array(blob.type.length);
8
- for (let i = 0; i < blob.type.length; i++) {
9
- tCodes[i] = blob.type.charCodeAt(i);
32
+ if (hasherPromise === undefined) {
33
+ hasherPromise = createSHA256();
34
+ // Allow a later call to retry if instantiation failed, rather than
35
+ // poisoning the module with a permanently-rejected promise.
36
+ hasherPromise.catch(() => {
37
+ hasherPromise = undefined;
38
+ });
10
39
  }
11
- hasher.update(new Uint8Array(tCodes.buffer));
40
+ const hasher = await hasherPromise;
41
+ // One shared WASM instance serves all concurrent calls. The instance is
42
+ // touched only in synchronous init→…→save / load→update→save sequences,
43
+ // never held across an `await`, so each call carries its own `state` and
44
+ // their `reader.read()` I/O waits overlap freely without corrupting one
45
+ // another. See hash-wasm save()/load() resumable hashing.
46
+ hasher.init();
47
+ hasher.update(mimeTypeBytes(blob.type));
48
+ let state = hasher.save();
12
49
  const reader = blob.stream().getReader();
13
50
  let done = false;
14
51
  while (!done) {
15
- const result = await reader.read();
16
- done = result.done === true;
17
- if (!done && result.value != null) {
18
- hasher.update(result.value);
52
+ const chunk = await reader.read();
53
+ done = chunk.done === true;
54
+ if (!done && chunk.value != null) {
55
+ hasher.load(state);
56
+ hasher.update(chunk.value);
57
+ state = hasher.save();
19
58
  }
20
59
  }
60
+ hasher.load(state);
21
61
  return hasher.digest("hex");
22
62
  }
63
+ function mimeTypeBytes(type) {
64
+ // Encode MIME type as UTF-16LE
65
+ const codes = new Uint16Array(type.length);
66
+ for (let i = 0; i < type.length; i++) {
67
+ codes[i] = type.charCodeAt(i);
68
+ }
69
+ return new Uint8Array(codes.buffer);
70
+ }
23
71
  //# sourceMappingURL=blob-to-hash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blob-to-hash.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/blob-to-hash.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IACzC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,+BAA+B;IAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"blob-to-hash.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/blob-to-hash.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,0BAA0B;AAC1B,0BAA0B;AAC1B,iEAAiE;AACjE,wEAAwE;AACxE,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,oDAAoD;AACpD,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,8EAA8E;AAC9E,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,OAAO,EAAgB,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,IAAI,aAA2C,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IACzC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,GAAG,YAAY,EAAE,CAAC;QAC/B,mEAAmE;QACnE,4DAA4D;QAC5D,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;IAEnC,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,+BAA+B;IAC/B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -2,6 +2,35 @@
2
2
  import { blobToHash } from "./blob-to-hash.js";
3
3
  import { jsonToHash } from "./json-to-hash.js";
4
4
  import { describe, expect, it } from "vitest";
5
+ const bytes = (s) => new TextEncoder().encode(s);
6
+ // Lets all pending microtasks (and the WASM-instantiation promise) settle, so
7
+ // each in-flight blobToHash call advances to its next `await reader.read()`.
8
+ const flush = () => new Promise((resolve) => setTimeout(resolve, 0));
9
+ // A stand-in Blob whose stream yields `chunks` one `read()` at a time, but only
10
+ // when the test releases each gate. This hands the test control of the exact
11
+ // interleaving across concurrent calls — impossible with a real in-memory Blob,
12
+ // whose reads resolve on their own schedule.
13
+ function gatedBlob(type, chunks) {
14
+ const gates = [];
15
+ let i = 0;
16
+ const reader = {
17
+ read: () => new Promise((resolve) => {
18
+ gates.push(() => resolve(i < chunks.length
19
+ ? { done: false, value: chunks[i++] }
20
+ : { done: true, value: undefined }));
21
+ }),
22
+ };
23
+ return {
24
+ // Case 1 cast: this implements the only members blobToHash reads off a
25
+ // Blob — `type` and `stream().getReader().read()`.
26
+ blob: { type, stream: () => ({ getReader: () => reader }) },
27
+ releaseNext: () => {
28
+ const gate = gates.shift();
29
+ gate?.();
30
+ return gate !== undefined;
31
+ },
32
+ };
33
+ }
5
34
  describe("test hashing", () => {
6
35
  describe("blobToHash", () => {
7
36
  it("should avoid collisions based on content and type", async () => {
@@ -100,6 +129,36 @@ describe("test hashing", () => {
100
129
  expect(hash).toMatch(/^[a-f0-9]{64}$/);
101
130
  }
102
131
  });
132
+ it("interleaved concurrent reads match serial hashes", async () => {
133
+ const inputs = [
134
+ { type: "text/plain", chunks: ["alpha-", "one-", "end"] },
135
+ { type: "application/octet-stream", chunks: ["BETA-", "two-", "END"] },
136
+ { type: "", chunks: ["g", "amma", "!!!"] },
137
+ ];
138
+ // Oracle: hash each input serially. SHA-256 is over the byte stream, so a
139
+ // real Blob of the concatenated chunks yields the same digest the gated
140
+ // blob must produce regardless of chunk boundaries.
141
+ const oracle = [];
142
+ for (const { type, chunks } of inputs) {
143
+ oracle.push(await blobToHash(new Blob(chunks, { type })));
144
+ }
145
+ // Concurrent: start every call, then drive the gates round-robin so the
146
+ // calls interleave between chunks — the exact pattern that corrupts a
147
+ // naively shared hasher.
148
+ const gated = inputs.map(({ type, chunks }) => gatedBlob(type, chunks.map(bytes)));
149
+ const results = gated.map((g) => blobToHash(g.blob));
150
+ let progressed = true;
151
+ while (progressed) {
152
+ await flush();
153
+ progressed = false;
154
+ for (const g of gated) {
155
+ if (g.releaseNext())
156
+ progressed = true;
157
+ }
158
+ }
159
+ await flush();
160
+ expect(await Promise.all(results)).toEqual(oracle);
161
+ });
103
162
  });
104
163
  describe("jsonToHash", () => {
105
164
  it("should avoid collisions", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"hashing.test.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/hashing.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hashing.test.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/hashing.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAc,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAErE,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,KAAK,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpF,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,6CAA6C;AAC7C,SAAS,SAAS,CAAC,IAAY,EAAE,MAAoB;IACnD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,GAAG,EAAE,CACT,IAAI,OAAO,CAAuC,CAAC,OAAO,EAAE,EAAE;YAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CACd,OAAO,CACL,CAAC,GAAG,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;gBACrC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CACrC,CACF,CAAC;QACJ,CAAC,CAAC;KACL,CAAC;IACF,OAAO;QACL,uEAAuE;QACvE,mDAAmD;QACnD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAqB;QAC9E,WAAW,EAAE,GAAY,EAAE;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,EAAE,EAAE,CAAC;YACT,OAAO,IAAI,KAAK,SAAS,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,KAAK,GAAG;gBACZ,IAAI,IAAI,CAAC;oBACP,IAAI,UAAU,CAAC;wBACb,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;qBAC7D,CAAC;iBACH,CAAC;gBACF,IAAI,IAAI,CAAC;oBACP,IAAI,UAAU,CAAC;wBACb,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;qBAC7D,CAAC;iBACH,CAAC;gBACF,IAAI,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACd,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aACvC,CAAC;YACF,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG;gBACZ,IAAI,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aAC5D,CAAC;YACF,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,YAAY,GAAG;gBACnB,mEAAmE;gBACnE,8BAA8B;gBAC9B,+BAA+B;gBAC/B,+BAA+B;gBAC/B,qEAAqE;aACtE,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,YAAY,GAAG;gBACnB,2BAA2B;gBAC3B,kCAAkC;gBAClC,+BAA+B;aAChC,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,YAAY,GAAG,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC;YAC3E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,gBAAgB,GAAG;gBACvB,mFAAmF;gBACnF,uDAAuD;gBACvD,oFAAoF;aACrF,CAAC;YACF,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,KAAK,GAAG;gBACZ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;aACnD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG;gBACb,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;gBACzD,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;gBACtE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;aAC3C,CAAC;YAEF,0EAA0E;YAC1E,wEAAwE;YACxE,oDAAoD;YACpD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,wEAAwE;YACxE,sEAAsE;YACtE,yBAAyB;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAErD,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,OAAO,UAAU,EAAE,CAAC;gBAClB,MAAM,KAAK,EAAE,CAAC;gBACd,UAAU,GAAG,KAAK,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,IAAI,CAAC,CAAC,WAAW,EAAE;wBAAE,UAAU,GAAG,IAAI,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,MAAM,KAAK,EAAE,CAAC;YAEd,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG;gBACb,KAAK;gBACL,EAAE,CAAC,EAAE,CAAC,EAAE;gBACR,EAAE;gBACF,EAAE;gBACF,EAAE,CAAC,EAAE,CAAC,EAAE;gBACR,IAAI;gBACJ,EAAE;gBACF,EAAE,KAAK,EAAE,OAAO,EAAE;aACnB,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG;gBACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;gBAC1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;gBAC1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;aAC3B,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -15,12 +15,12 @@ import type { TransactionEnvelope } from "../reconciling/reconciling-database.js
15
15
  * (e.g. a collaborative-editing layer that manages its own replay buffer).
16
16
  *
17
17
  * - `createRebaseReplayConcurrency(userId)` — commits apply locally as
18
- * transients and wait for the sync server's echoed committed envelope to
18
+ * intermediate steps and wait for the sync server's echoed committed envelope to
19
19
  * promote them. Full rollback-and-replay queue, cross-peer id-determinism.
20
20
  */
21
21
  export interface ConcurrencyStrategy {
22
22
  /**
23
- * When true, the dispatcher applies "commit" intents as transients
23
+ * When true, the dispatcher applies "commit" intents as intermediate steps
24
24
  * (negative time) and waits for a server echo to promote them.
25
25
  * When false, commits apply immediately with positive time.
26
26
  */
@@ -37,18 +37,18 @@ export interface ConcurrencyStrategy {
37
37
  */
38
38
  readonly apply: (envelope: TransactionEnvelope) => TransactionResult<unknown> | undefined;
39
39
  /**
40
- * Cancel a pending transient by compound (userId, id) key.
41
- * No-op for strategies that have no transient queue.
40
+ * Cancel a pending intermediate step by compound (userId, id) key.
41
+ * No-op for strategies that have no intermediate queue.
42
42
  */
43
43
  readonly cancel: (id: number, userId?: number | string) => void;
44
44
  /**
45
45
  * Called by `db.reset()` before the store is cleared.
46
- * Strategies with a transient queue should clear it here.
46
+ * Strategies with an intermediate queue should clear it here.
47
47
  */
48
48
  readonly onReset: () => void;
49
49
  /**
50
50
  * Called immediately before `db.toData()` serializes the store.
51
- * Strategies with a transient queue should roll back transients here so
51
+ * Strategies with an intermediate queue should roll back intermediate steps here so
52
52
  * the snapshot contains only committed state.
53
53
  *
54
54
  * When this hook (together with `onAfterToData`) is present, `db.toData()`
@@ -60,13 +60,13 @@ export interface ConcurrencyStrategy {
60
60
  /**
61
61
  * Called immediately after `db.toData()` serializes the store.
62
62
  * Strategies that roll back in `onBeforeToData` should replay here to
63
- * restore the in-progress transient state.
63
+ * restore the in-progress intermediate state.
64
64
  */
65
65
  readonly onAfterToData?: () => void;
66
66
  /**
67
67
  * Called immediately after `db.fromData()` loads a snapshot into the
68
- * store. Strategies with a transient queue should replay pending
69
- * transients here so in-progress work is visible after a data load.
68
+ * store. Strategies with an intermediate queue should replay pending
69
+ * intermediate steps here so in-progress work is visible after a data load.
70
70
  */
71
71
  readonly onAfterFromData?: () => void;
72
72
  }
@@ -81,6 +81,6 @@ export interface ConcurrencyStrategy {
81
81
  * returning undefined when the name has not yet been registered via extend.
82
82
  */
83
83
  export type ConcurrencyStrategyFactory = (execute: (fn: (ctx: TransactionContext<any, any, any>) => void | Entity, options?: {
84
- transient?: boolean;
84
+ intermediate?: boolean;
85
85
  userId?: number | string;
86
86
  }) => TransactionResult<unknown>, getTransaction: (name: string) => ((ctx: TransactionContext<any, any, any>, args: unknown) => void | Entity) | undefined) => ConcurrencyStrategy;
@@ -1,6 +1,6 @@
1
1
  import type { ConcurrencyStrategyFactory } from "./concurrency-strategy.js";
2
2
  /**
3
- * Lighter-weight concurrency strategy that applies commits and transients
3
+ * Lighter-weight concurrency strategy that applies commits and intermediate steps
4
4
  * immediately with no global rollback-and-replay cycle.
5
5
  *
6
6
  * Key differences from {@link createRebaseReplayConcurrency}:
@@ -13,10 +13,10 @@ import type { ConcurrencyStrategyFactory } from "./concurrency-strategy.js";
13
13
  * concurrent edits — use this only when there is a single writer or
14
14
  * when an external layer manages replay (e.g. a collaborative-editing
15
15
  * wrapper).
16
- * - Async generator transients are still supported: each yield applies
16
+ * - Async generator intermediate steps are still supported: each yield applies
17
17
  * the intermediate state immediately and rolls it back when the next
18
18
  * yield or the final commit arrives. Cancel rolls back the last
19
- * applied transient for that transaction. Transients from different
19
+ * applied intermediate step for that transaction. Intermediate steps from different
20
20
  * concurrent transactions do NOT interact (no cross-transaction rebase).
21
21
  */
22
22
  export declare const createImmediateConcurrency: () => ConcurrencyStrategyFactory;
@@ -1,7 +1,7 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import { applyOperations } from "../transactional-store/apply-operations.js";
3
3
  /**
4
- * Lighter-weight concurrency strategy that applies commits and transients
4
+ * Lighter-weight concurrency strategy that applies commits and intermediate steps
5
5
  * immediately with no global rollback-and-replay cycle.
6
6
  *
7
7
  * Key differences from {@link createRebaseReplayConcurrency}:
@@ -14,23 +14,23 @@ import { applyOperations } from "../transactional-store/apply-operations.js";
14
14
  * concurrent edits — use this only when there is a single writer or
15
15
  * when an external layer manages replay (e.g. a collaborative-editing
16
16
  * wrapper).
17
- * - Async generator transients are still supported: each yield applies
17
+ * - Async generator intermediate steps are still supported: each yield applies
18
18
  * the intermediate state immediately and rolls it back when the next
19
19
  * yield or the final commit arrives. Cancel rolls back the last
20
- * applied transient for that transaction. Transients from different
20
+ * applied intermediate step for that transaction. Intermediate steps from different
21
21
  * concurrent transactions do NOT interact (no cross-transaction rebase).
22
22
  */
23
23
  export const createImmediateConcurrency = () => (execute, getTransaction) => {
24
- // Per-transaction store of the last-applied transient result, keyed
25
- // by compound `"userId:id"`. Used to roll back a transient when a
26
- // newer transient, commit, or cancel arrives for the same transaction.
24
+ // Per-transaction store of the last-applied intermediate result, keyed
25
+ // by compound `"userId:id"`. Used to roll back an intermediate step when a
26
+ // newer intermediate step, commit, or cancel arrives for the same transaction.
27
27
  const pending = new Map();
28
28
  const key = (id, userId) => `${userId}:${id}`;
29
29
  const rollbackPending = (id, userId) => {
30
30
  const k = key(id, userId);
31
31
  const prior = pending.get(k);
32
32
  if (prior) {
33
- execute(t => applyOperations(t, prior.undo), { transient: true, userId: undefined });
33
+ execute(t => applyOperations(t, prior.undo), { intermediate: true, userId: undefined });
34
34
  pending.delete(k);
35
35
  }
36
36
  };
@@ -49,7 +49,7 @@ export const createImmediateConcurrency = () => (execute, getTransaction) => {
49
49
  const fn = getTransaction(envelope.name);
50
50
  if (!fn)
51
51
  throw new Error(`Unknown transaction: ${envelope.name}`);
52
- const result = execute(t => fn(t, args), { transient: true, userId });
52
+ const result = execute(t => fn(t, args), { intermediate: true, userId });
53
53
  const isNoOp = result.redo.length === 0 && result.undo.length === 0;
54
54
  if (!isNoOp)
55
55
  pending.set(key(id, userId), result);
@@ -61,7 +61,7 @@ export const createImmediateConcurrency = () => (execute, getTransaction) => {
61
61
  const fn = getTransaction(envelope.name);
62
62
  if (!fn)
63
63
  throw new Error(`Unknown transaction: ${envelope.name}`);
64
- return execute(t => fn(t, args), { transient: false, userId });
64
+ return execute(t => fn(t, args), { intermediate: false, userId });
65
65
  },
66
66
  cancel(id, userId) {
67
67
  rollbackPending(id, userId);
@@ -1 +1 @@
1
- {"version":3,"file":"immediate-concurrency.js","sourceRoot":"","sources":["../../../../src/ecs/database/concurrency/immediate-concurrency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"immediate-concurrency.js","sourceRoot":"","sources":["../../../../src/ecs/database/concurrency/immediate-concurrency.ts"],"names":[],"mappings":"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"}
@@ -36,14 +36,14 @@ export const createRollForwardConcurrency = (userId) => (execute, getTransaction
36
36
  const indexOfEntry = (id, entryUserId) => pending.findIndex(e => e.id === id && e.userId === entryUserId);
37
37
  const rollbackAll = () => {
38
38
  for (let i = pending.length - 1; i >= 0; i--) {
39
- execute(t => applyOperations(t, pending[i].undo), { transient: true, userId: undefined });
39
+ execute(t => applyOperations(t, pending[i].undo), { intermediate: true, userId: undefined });
40
40
  }
41
41
  };
42
42
  // Roll-forward: re-apply each pending entry's captured post-image
43
43
  // tuples and recapture fresh undo against the (possibly changed) base.
44
44
  const replayAll = () => {
45
45
  for (const entry of pending) {
46
- const result = execute(t => applyOperations(t, entry.redo), { transient: true, userId: entry.userId });
46
+ const result = execute(t => applyOperations(t, entry.redo), { intermediate: true, userId: entry.userId });
47
47
  entry.undo = result.undo;
48
48
  }
49
49
  };
@@ -54,7 +54,7 @@ export const createRollForwardConcurrency = (userId) => (execute, getTransaction
54
54
  const fn = getTransaction(envelope.name);
55
55
  if (!fn)
56
56
  throw new Error(`Unknown transaction: ${envelope.name}`);
57
- return execute(t => fn(t, envelope.args), { transient: envelope.time < 0, userId: envelope.userId });
57
+ return execute(t => fn(t, envelope.args), { intermediate: envelope.time < 0, userId: envelope.userId });
58
58
  };
59
59
  const removeAndRebuild = (id, entryUserId) => {
60
60
  const idx = indexOfEntry(id, entryUserId);
@@ -74,7 +74,7 @@ export const createRollForwardConcurrency = (userId) => (execute, getTransaction
74
74
  removeAndRebuild(id, envelopeUserId);
75
75
  return undefined;
76
76
  }
77
- // Optimistic local transient: roll back, drop any prior version
77
+ // Optimistic local intermediate: roll back, drop any prior version
78
78
  // of this transaction, replay the survivors, then run the fn on
79
79
  // top and capture its post-image tuples.
80
80
  if (time < 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"roll-forward-concurrency.js","sourceRoot":"","sources":["../../../../src/ecs/database/concurrency/roll-forward-concurrency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roll-forward-concurrency.js","sourceRoot":"","sources":["../../../../src/ecs/database/concurrency/roll-forward-concurrency.ts"],"names":[],"mappings":"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"}
@@ -120,18 +120,18 @@ export interface Database<C extends Components = {}, R extends ResourceComponent
120
120
  * transaction wrappers (`db.transactions.X(args)`). Replays inside the
121
121
  * reconciler and inbound `db.apply()` calls do NOT fire it. The
122
122
  * `intent` reflects the wrapper's decision regardless of whether the
123
- * envelope was applied locally as a transient (deferred-commit / sync
123
+ * envelope was applied locally as an intermediate step (deferred-commit / sync
124
124
  * mode) or as a commit (local-only mode).
125
125
  *
126
126
  * Sync services route forwarding by `intent`:
127
- * - `"commit"` → propose to the server (reliable)
128
- * - `"transient"` → relay to peers (lossy)
129
- * - `"cancel"` → cancel a pending transient (reliable)
127
+ * - `"commit"` → propose to the server (reliable)
128
+ * - `"intermediate"` → relay to peers (lossy)
129
+ * - `"cancel"` → cancel a pending intermediate step (reliable)
130
130
  */
131
131
  readonly envelopes: Observe<{
132
132
  envelope: TransactionEnvelope;
133
133
  result: TransactionResult<C> | undefined;
134
- intent: "commit" | "transient" | "cancel";
134
+ intent: "commit" | "intermediate" | "cancel";
135
135
  }>;
136
136
  entity<T extends RequiredComponents>(id: Entity, minArchetype?: ReadonlyArchetype<T> | Archetype<T>): Observe<Readonly<T> & EntityReadValues<C> | null>;
137
137
  entity(id: Entity): Observe<EntityReadValues<C> | null>;
@@ -88,9 +88,9 @@ export function createObservedDatabase(store) {
88
88
  const observeArchetype = (archetype) => addToMapSet(archetype, archetypeObservers);
89
89
  const observeComponent = mapEntries(store.componentSchemas, ([component]) => addToMapSet(component, componentObservers));
90
90
  const resourceArchetypeComponents = (resource) => {
91
- const isEphemeral = store.componentSchemas[resource]?.ephemeral;
92
- return isEphemeral
93
- ? ["id", resource, "ephemeral"]
91
+ const isNonPersistent = store.componentSchemas[resource]?.nonPersistent ?? store.componentSchemas[resource]?.ephemeral;
92
+ return isNonPersistent
93
+ ? ["id", resource, "nonPersistent"]
94
94
  : ["id", resource];
95
95
  };
96
96
  const observeResource = Object.fromEntries(Object.entries(store.resources).map(([resource]) => {
@@ -128,8 +128,8 @@ export function createObservedDatabase(store) {
128
128
  updateValues
129
129
  ];
130
130
  })),
131
- transient: false,
132
- ephemeral: false,
131
+ intermediate: false,
132
+ persistent: true,
133
133
  value: undefined,
134
134
  undo: [],
135
135
  redo: [],
@@ -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,9 +6,9 @@ import { TransactionResult } from "../transactional-store/index.js";
6
6
  * commit and an async-generator yield apply locally with `time < 0`. The
7
7
  * intent records the wrapper's reason for emitting the envelope so a sync
8
8
  * service can route each one correctly without re-deriving it from the time
9
- * sign.
9
+ * sign. `"intermediate"` means a non-final step in an async sequence.
10
10
  */
11
- export type TransactionIntent = "commit" | "transient" | "cancel";
11
+ export type TransactionIntent = "commit" | "intermediate" | "cancel";
12
12
  export type TransactionEnvelopeEvent = {
13
13
  readonly envelope: TransactionEnvelope;
14
14
  readonly result: TransactionResult<unknown> | undefined;
@@ -29,10 +29,10 @@ export type DispatcherTarget = (envelope: TransactionEnvelope<string>) => Transa
29
29
  *
30
30
  * - The per-database transaction id counter.
31
31
  * - Resolving the `args` argument shape (plain value, promise, or
32
- * async-generator factory) into a sequence of `applyTransient` /
32
+ * async-generator factory) into a sequence of `applyIntermediate` /
33
33
  * `applyCommit` / `cancelPending` calls.
34
34
  * - Whether a "commit" intent should be applied as a positive-time commit
35
- * (local-only mode) or a negative-time transient pending server echo
35
+ * (local-only mode) or a negative-time intermediate step pending server echo
36
36
  * (sync mode). Decided once at construction by the presence of
37
37
  * `sync` — never mutated at runtime.
38
38
  * - Stamping `userId` onto every envelope (sync mode only).
@@ -19,38 +19,38 @@ export const createTransactionDispatcher = (apply, options) => {
19
19
  };
20
20
  const wrap = (name) => (args) => {
21
21
  const transactionId = nextTransactionId++;
22
- let hasTransient = false;
23
- const applyTransient = (payload) => {
24
- hasTransient = true;
25
- dispatchEnvelope({ id: transactionId, userId, name, args: payload, time: -Date.now() }, "transient");
22
+ let hasIntermediate = false;
23
+ const applyIntermediate = (payload) => {
24
+ hasIntermediate = true;
25
+ dispatchEnvelope({ id: transactionId, userId, name, args: payload, time: -Date.now() }, "intermediate");
26
26
  };
27
27
  const applyCommit = (payload) => {
28
- // In sync mode the commit is applied locally as a transient
28
+ // In sync mode the commit is applied locally as an intermediate step
29
29
  // and the server's echoed `committed` envelope will promote it.
30
30
  // In local-only mode it commits immediately with positive time.
31
31
  const time = deferredCommit ? -Date.now() : Date.now();
32
32
  const result = dispatchEnvelope({ id: transactionId, userId, name, args: payload, time }, "commit");
33
- // Only mark a pending transient if the envelope was effective (not
33
+ // Only mark a pending intermediate if the envelope was effective (not
34
34
  // a no-op). A no-op envelope is suppressed by dispatchEnvelope and
35
35
  // will never receive a server promotion, so we must not set
36
- // hasTransient — doing so would cause a spurious cancel later.
36
+ // hasIntermediate — doing so would cause a spurious cancel later.
37
37
  const effective = result === undefined || result.redo.length > 0 || result.undo.length > 0;
38
- hasTransient = deferredCommit && effective;
38
+ hasIntermediate = deferredCommit && effective;
39
39
  return result?.value;
40
40
  };
41
41
  const cancelPending = () => {
42
- if (!hasTransient)
42
+ if (!hasIntermediate)
43
43
  return;
44
44
  dispatchEnvelope({ id: transactionId, userId, name, args: undefined, time: 0 }, "cancel");
45
- hasTransient = false;
45
+ hasIntermediate = false;
46
46
  };
47
- return runTransaction(args, applyTransient, applyCommit, cancelPending);
47
+ return runTransaction(args, applyIntermediate, applyCommit, cancelPending);
48
48
  };
49
49
  return { wrap, envelopes };
50
50
  };
51
51
  /**
52
52
  * Resolves the `args` shape passed to `db.transactions.X(args)` into the
53
- * appropriate `applyTransient` / `applyCommit` / `cancelPending` sequence.
53
+ * appropriate `applyIntermediate` / `applyCommit` / `cancelPending` sequence.
54
54
  *
55
55
  * Three argument shapes are supported:
56
56
  *
@@ -58,14 +58,14 @@ export const createTransactionDispatcher = (apply, options) => {
58
58
  * - Function returning a `Promise`: `applyCommit(await promise)`, with
59
59
  * `cancelPending` on rejection.
60
60
  * - Function returning an `AsyncGenerator`: each yielded value becomes an
61
- * `applyTransient`; on `done`, the final yielded value (or the explicit
61
+ * `applyIntermediate`; on `done`, the final yielded value (or the explicit
62
62
  * return value if defined) becomes `applyCommit`. If no value was ever
63
63
  * yielded and none returned, `cancelPending` runs instead. A thrown
64
64
  * iterator results in `cancelPending` plus a rejected promise — this is
65
65
  * how never-ending transactions (e.g. presence streams) cleanly tear
66
66
  * down without promoting their last sample to a commit.
67
67
  */
68
- const runTransaction = (args, applyTransient, applyCommit, cancelPending) => {
68
+ const runTransaction = (args, applyIntermediate, applyCommit, cancelPending) => {
69
69
  if (typeof args !== "function") {
70
70
  return applyCommit(args);
71
71
  }
@@ -78,7 +78,7 @@ const runTransaction = (args, applyTransient, applyCommit, cancelPending) => {
78
78
  let iteration = await providerResult.next();
79
79
  while (!iteration.done) {
80
80
  lastArgs = iteration.value;
81
- applyTransient(iteration.value);
81
+ applyIntermediate(iteration.value);
82
82
  iteration = await providerResult.next();
83
83
  }
84
84
  const finalArgs = iteration.value !== undefined ? iteration.value : lastArgs;