@agentshouse/mdruntime 0.1.0-ca68e8b4bbebc → 0.1.0-ca6edc1abd618

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 (221) hide show
  1. package/README.md +18 -15
  2. package/dist/adapter.d.ts +70 -36
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +5 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +21 -4
  7. package/dist/binary.d.ts +0 -5
  8. package/dist/binary.d.ts.map +1 -1
  9. package/dist/binary.js +1 -1
  10. package/dist/bootstrap.d.ts +25 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +150 -85
  13. package/dist/chain.d.ts +11 -0
  14. package/dist/chain.d.ts.map +1 -0
  15. package/dist/chain.js +64 -0
  16. package/dist/change-set.d.ts +9 -16
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +11 -89
  19. package/dist/change.d.ts +31 -1
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/change.js +10 -1
  22. package/dist/client.d.ts +13 -5
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +37 -6
  25. package/dist/collection.d.ts +6 -19
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +31 -289
  28. package/dist/compile.d.ts +16 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +721 -0
  31. package/dist/connection.d.ts +22 -12
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +2485 -1036
  34. package/dist/conversation.d.ts +16 -3
  35. package/dist/conversation.d.ts.map +1 -1
  36. package/dist/conversation.js +238 -96
  37. package/dist/digest.d.ts +7 -0
  38. package/dist/digest.d.ts.map +1 -0
  39. package/dist/digest.js +113 -0
  40. package/dist/durability.d.ts +3 -5
  41. package/dist/durability.d.ts.map +1 -1
  42. package/dist/durability.js +5 -0
  43. package/dist/entry.d.ts +3 -1
  44. package/dist/entry.d.ts.map +1 -1
  45. package/dist/entry.js +18 -23
  46. package/dist/file.d.ts +2 -10
  47. package/dist/file.d.ts.map +1 -1
  48. package/dist/file.js +3 -120
  49. package/dist/fulltext.d.ts +27 -0
  50. package/dist/fulltext.d.ts.map +1 -0
  51. package/dist/fulltext.js +368 -0
  52. package/dist/host.d.ts +4 -7
  53. package/dist/host.d.ts.map +1 -1
  54. package/dist/host.js +51 -18
  55. package/dist/identity.d.ts +0 -1
  56. package/dist/identity.d.ts.map +1 -1
  57. package/dist/identity.js +0 -3
  58. package/dist/index.d.ts +13 -10
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +4 -1
  61. package/dist/live.d.ts +22 -0
  62. package/dist/live.d.ts.map +1 -0
  63. package/dist/live.js +123 -0
  64. package/dist/memory.d.ts +4 -3
  65. package/dist/memory.d.ts.map +1 -1
  66. package/dist/memory.js +32 -26
  67. package/dist/messages.d.ts +28 -0
  68. package/dist/messages.d.ts.map +1 -0
  69. package/dist/messages.js +90 -0
  70. package/dist/model.d.ts.map +1 -1
  71. package/dist/model.js +1 -1
  72. package/dist/name.d.ts +4 -0
  73. package/dist/name.d.ts.map +1 -0
  74. package/dist/name.js +122 -0
  75. package/dist/observation.d.ts +14 -0
  76. package/dist/observation.d.ts.map +1 -1
  77. package/dist/observation.js +93 -3
  78. package/dist/opened.d.ts +22 -0
  79. package/dist/opened.d.ts.map +1 -0
  80. package/dist/opened.js +107 -0
  81. package/dist/outcome.d.ts +34 -4
  82. package/dist/outcome.d.ts.map +1 -1
  83. package/dist/outcome.js +25 -0
  84. package/dist/overlay.d.ts +2 -5
  85. package/dist/overlay.d.ts.map +1 -1
  86. package/dist/overlay.js +87 -172
  87. package/dist/query.d.ts +26 -2
  88. package/dist/query.d.ts.map +1 -1
  89. package/dist/query.js +41 -6
  90. package/dist/reach.d.ts +5 -3
  91. package/dist/reach.d.ts.map +1 -1
  92. package/dist/reach.js +167 -59
  93. package/dist/react.d.ts +1 -2
  94. package/dist/react.d.ts.map +1 -1
  95. package/dist/react.js +2 -14
  96. package/dist/readiness.d.ts +20 -9
  97. package/dist/readiness.d.ts.map +1 -1
  98. package/dist/readiness.js +6 -6
  99. package/dist/reads.d.ts.map +1 -1
  100. package/dist/reads.js +4 -2
  101. package/dist/recovery.d.ts +2 -2
  102. package/dist/recovery.d.ts.map +1 -1
  103. package/dist/recovery.js +8 -7
  104. package/dist/refresh.d.ts +15 -14
  105. package/dist/refresh.d.ts.map +1 -1
  106. package/dist/refresh.js +113 -56
  107. package/dist/replica.d.ts +56 -33
  108. package/dist/replica.d.ts.map +1 -1
  109. package/dist/replica.js +297 -188
  110. package/dist/room-draft.d.ts +4 -1
  111. package/dist/room-draft.d.ts.map +1 -1
  112. package/dist/room-draft.js +62 -22
  113. package/dist/rows.d.ts +29 -30
  114. package/dist/rows.d.ts.map +1 -1
  115. package/dist/rows.js +113 -64
  116. package/dist/save.d.ts +51 -14
  117. package/dist/save.d.ts.map +1 -1
  118. package/dist/save.js +518 -180
  119. package/dist/search.d.ts +23 -42
  120. package/dist/search.d.ts.map +1 -1
  121. package/dist/search.js +28 -182
  122. package/dist/seed.d.ts.map +1 -1
  123. package/dist/seed.js +18 -4
  124. package/dist/shared.d.ts +8 -3
  125. package/dist/shared.d.ts.map +1 -1
  126. package/dist/shared.js +129 -66
  127. package/dist/store.d.ts +89 -89
  128. package/dist/store.d.ts.map +1 -1
  129. package/dist/store.js +329 -669
  130. package/dist/stored.d.ts +145 -0
  131. package/dist/stored.d.ts.map +1 -0
  132. package/dist/stored.js +567 -0
  133. package/dist/tables.d.ts +354 -0
  134. package/dist/tables.d.ts.map +1 -0
  135. package/dist/tables.js +624 -0
  136. package/dist/turn.d.ts +5 -3
  137. package/dist/turn.d.ts.map +1 -1
  138. package/dist/turn.js +51 -21
  139. package/dist/validation.d.ts +30 -0
  140. package/dist/validation.d.ts.map +1 -0
  141. package/dist/validation.js +162 -0
  142. package/dist/windows.d.ts +22 -0
  143. package/dist/windows.d.ts.map +1 -0
  144. package/dist/windows.js +89 -0
  145. package/dist/wire.d.ts +29 -1
  146. package/dist/wire.d.ts.map +1 -1
  147. package/dist/wire.js +8 -1
  148. package/dist/words.d.ts +19 -0
  149. package/dist/words.d.ts.map +1 -0
  150. package/dist/words.js +150 -0
  151. package/package.json +18 -19
  152. package/AGENTS.md +0 -299
  153. package/dist/acquisition.d.ts +0 -14
  154. package/dist/acquisition.d.ts.map +0 -1
  155. package/dist/acquisition.js +0 -24
  156. package/dist/chat/acts.d.ts +0 -33
  157. package/dist/chat/acts.d.ts.map +0 -1
  158. package/dist/chat/acts.js +0 -36
  159. package/dist/chat/context.d.ts +0 -3
  160. package/dist/chat/context.d.ts.map +0 -1
  161. package/dist/chat/context.js +0 -10
  162. package/dist/chat/input.d.ts +0 -9
  163. package/dist/chat/input.d.ts.map +0 -1
  164. package/dist/chat/input.js +0 -99
  165. package/dist/chat/kit.d.ts +0 -61
  166. package/dist/chat/kit.d.ts.map +0 -1
  167. package/dist/chat/kit.js +0 -123
  168. package/dist/chat/lasting.d.ts +0 -6
  169. package/dist/chat/lasting.d.ts.map +0 -1
  170. package/dist/chat/lasting.js +0 -19
  171. package/dist/chat/list.d.ts +0 -27
  172. package/dist/chat/list.d.ts.map +0 -1
  173. package/dist/chat/list.js +0 -63
  174. package/dist/chat/markdown.d.ts +0 -20
  175. package/dist/chat/markdown.d.ts.map +0 -1
  176. package/dist/chat/markdown.js +0 -188
  177. package/dist/chat/message.d.ts +0 -6
  178. package/dist/chat/message.d.ts.map +0 -1
  179. package/dist/chat/message.js +0 -192
  180. package/dist/chat/messages.d.ts +0 -22
  181. package/dist/chat/messages.d.ts.map +0 -1
  182. package/dist/chat/messages.js +0 -155
  183. package/dist/chat/name.d.ts +0 -6
  184. package/dist/chat/name.d.ts.map +0 -1
  185. package/dist/chat/name.js +0 -37
  186. package/dist/chat/opened.d.ts +0 -11
  187. package/dist/chat/opened.d.ts.map +0 -1
  188. package/dist/chat/opened.js +0 -17
  189. package/dist/chat/overlay.d.ts +0 -31
  190. package/dist/chat/overlay.d.ts.map +0 -1
  191. package/dist/chat/overlay.js +0 -97
  192. package/dist/chat/parts.d.ts +0 -57
  193. package/dist/chat/parts.d.ts.map +0 -1
  194. package/dist/chat/parts.js +0 -119
  195. package/dist/chat/process.d.ts +0 -20
  196. package/dist/chat/process.d.ts.map +0 -1
  197. package/dist/chat/process.js +0 -32
  198. package/dist/chat/provider.d.ts +0 -63
  199. package/dist/chat/provider.d.ts.map +0 -1
  200. package/dist/chat/provider.js +0 -629
  201. package/dist/chat/question.d.ts +0 -9
  202. package/dist/chat/question.d.ts.map +0 -1
  203. package/dist/chat/question.js +0 -80
  204. package/dist/chat/questions.d.ts +0 -31
  205. package/dist/chat/questions.d.ts.map +0 -1
  206. package/dist/chat/questions.js +0 -111
  207. package/dist/chat/read.d.ts +0 -5
  208. package/dist/chat/read.d.ts.map +0 -1
  209. package/dist/chat/read.js +0 -13
  210. package/dist/chat/ready.d.ts +0 -34
  211. package/dist/chat/ready.d.ts.map +0 -1
  212. package/dist/chat/ready.js +0 -91
  213. package/dist/chat/style.d.ts +0 -4
  214. package/dist/chat/style.d.ts.map +0 -1
  215. package/dist/chat/style.js +0 -302
  216. package/dist/chat.d.ts +0 -14
  217. package/dist/chat.d.ts.map +0 -1
  218. package/dist/chat.js +0 -8
  219. package/dist/read-side.d.ts +0 -25
  220. package/dist/read-side.d.ts.map +0 -1
  221. package/dist/read-side.js +0 -642
package/dist/replica.js CHANGED
@@ -1,208 +1,198 @@
1
1
  import { equalValue, parse } from '@agentshouse/mdmodel';
2
2
  import { immutable, landing } from './change.js';
3
- import { changedCleanly, collectionOf, unreadable, validateCollection, } from './collection.js';
4
- import { acceptedBinaries, overlay, overlayChanged, sameLayerText, } from './overlay.js';
5
- import { providerRewritten } from './save.js';
6
- import { drafted, patched, settled, shared } from './shared.js';
7
- export function compositionOf(record) {
3
+ import { collectionOf } from './collection.js';
4
+ import { acceptedBinaries, overlaying } from './overlay.js';
5
+ import { effectiveIn, rewriting } from './save.js';
6
+ import { ROW_WEIGHT } from './turn.js';
7
+ export function compositionOf(record, builtIn) {
8
8
  return {
9
9
  model: record.model,
10
10
  selection: record.typedSelection === null
11
11
  ? null
12
- : { roots: record.typedSelection.roots, model: record.selectionModel },
13
- };
14
- }
15
- function held(record) {
16
- const documents = shared(record.documents);
17
- const binaries = shared(record.binaries);
18
- const revisions = shared(record.revisions);
19
- const fileIds = shared(record.fileIds);
20
- const changes = shared(record.changes);
21
- const written = shared(record.written);
22
- return documents === record.documents &&
23
- binaries === record.binaries &&
24
- revisions === record.revisions &&
25
- fileIds === record.fileIds &&
26
- changes === record.changes &&
27
- written === record.written
28
- ? record
29
- : { ...record, documents, binaries, revisions, fileIds, changes, written };
30
- }
31
- export function confirmedOf(record, previous) {
32
- const kept = held(record);
33
- return {
34
- record: kept,
35
- collection: collectionOf(kept.documents, compositionOf(kept), previous?.collection),
12
+ : { roots: record.typedSelection.roots, model: builtIn },
36
13
  };
37
14
  }
38
15
  export function sameMembership(record, other) {
39
16
  return (JSON.stringify(record.typedSelection?.roots ?? null) ===
40
17
  JSON.stringify(other.typedSelection?.roots ?? null));
41
18
  }
42
- function cleanly(record, previous) {
43
- if (previous === undefined)
44
- return false;
45
- const before = previous.record;
46
- return changedCleanly({ text: record.documents, binaries: record.binaries }, { text: before.documents, binaries: before.binaries, composition: compositionOf(before) }, compositionOf(record));
19
+ export function storedRecord(record) {
20
+ const { key: _key, ...stored } = record;
21
+ return JSON.stringify(stored);
47
22
  }
48
- export function readStaged(staged, previous) {
49
- const record = held(staged);
50
- const textChanged = previous === undefined || !sameLayerText(record, previous.record);
51
- const modeled = record.model.status !== 'unavailable' || record.selectionModel.status !== 'unavailable';
52
- if (modeled &&
53
- (textChanged ||
54
- record.model !== previous?.record.model ||
55
- record.selectionModel !== previous?.record.selectionModel) &&
56
- !cleanly(record, previous)) {
57
- const verdict = validateCollection(record.documents, Object.keys(record.binaries), compositionOf(record));
58
- if (verdict.verdict === 'refuse' && verdict.rule !== 'model-unavailable') {
59
- return { kind: 'refused', refusal: verdict };
60
- }
61
- if (verdict.verdict === 'refuse') {
62
- const refused = unreadable(record.documents, previous?.record.documents);
63
- if (refused !== null)
64
- return refused;
65
- }
66
- }
67
- else if (textChanged) {
68
- const refused = unreadable(record.documents, previous?.record.documents);
69
- if (refused !== null)
70
- return refused;
23
+ const PROBES = new Set([
24
+ 'then',
25
+ 'toJSON',
26
+ 'constructor',
27
+ 'valueOf',
28
+ 'toString',
29
+ ]);
30
+ class UnreadPath extends Error {
31
+ constructor(path) {
32
+ super(`the replica slice holds no row for ${path}`);
71
33
  }
72
- return { kind: 'staged', confirmed: confirmedOf(record, previous) };
73
34
  }
74
- export function readReclassified(record, previous) {
75
- const verdict = validateCollection(record.documents, Object.keys(record.binaries), compositionOf(record));
76
- if (verdict.verdict !== 'refuse')
77
- return { kind: 'staged', confirmed: confirmedOf(record, previous) };
78
- return verdict.rule === 'model-unavailable'
79
- ? { kind: 'deferred' }
80
- : { kind: 'refused', refusal: verdict };
35
+ function strict(values, held) {
36
+ const guard = (property) => {
37
+ if (typeof property === 'string' && !held.has(property) && !PROBES.has(property)) {
38
+ throw new UnreadPath(property);
39
+ }
40
+ };
41
+ return new Proxy(values, {
42
+ get(target, property, receiver) {
43
+ guard(property);
44
+ return Reflect.get(target, property, receiver);
45
+ },
46
+ has(target, property) {
47
+ guard(property);
48
+ return Reflect.has(target, property);
49
+ },
50
+ getOwnPropertyDescriptor(target, property) {
51
+ guard(property);
52
+ return Reflect.getOwnPropertyDescriptor(target, property);
53
+ },
54
+ });
81
55
  }
82
- function returnedBinaries(held, submitted, accepted) {
83
- const binaries = drafted(held);
84
- for (const change of submitted.changes) {
85
- if (change.kind !== 'move')
86
- continue;
87
- const moved = binaries[change.path];
88
- if (moved === undefined || accepted.revisions[change.to] === undefined)
89
- continue;
90
- binaries[change.to] = moved;
91
- delete binaries[change.path];
56
+ export function* slicing(entries, paths) {
57
+ const held = new Set(paths);
58
+ for (const entry of entries)
59
+ held.add(entry.path);
60
+ const documents = {};
61
+ const binaries = {};
62
+ const revisions = {};
63
+ const fileIds = {};
64
+ const changes = {};
65
+ const written = {};
66
+ for (const entry of entries) {
67
+ if (entry.binary !== null)
68
+ binaries[entry.path] = entry.binary;
69
+ else if (entry.content !== null)
70
+ documents[entry.path] = entry.content;
71
+ if (entry.revision !== null)
72
+ revisions[entry.path] = entry.revision;
73
+ if (entry.fileId !== null)
74
+ fileIds[entry.path] = entry.fileId;
75
+ if (entry.change !== null)
76
+ changes[entry.path] = entry.change;
77
+ if (entry.written !== null)
78
+ written[entry.path] = entry.written;
79
+ yield ROW_WEIGHT;
92
80
  }
93
- Object.assign(binaries, acceptedBinaries(accepted.binaryFiles ?? {}));
94
- for (const path of accepted.removals)
95
- delete binaries[path];
96
- return settled(binaries);
81
+ return {
82
+ documents: strict(documents, held),
83
+ binaries: strict(binaries, held),
84
+ revisions: strict(revisions, held),
85
+ fileIds: strict(fileIds, held),
86
+ changes: strict(changes, held),
87
+ written: strict(written, held),
88
+ held,
89
+ };
97
90
  }
98
- export function applyReturned(confirmed, submitted, accepted, roomVersion, writtenAt) {
99
- const { documents, revisions, fileIds, changes, removals } = accepted;
100
- const nextDocuments = drafted(confirmed.record.documents);
101
- const nextRevisions = drafted(confirmed.record.revisions);
102
- const nextFileIds = drafted(confirmed.record.fileIds);
103
- const nextChanges = drafted(confirmed.record.changes);
104
- const nextWritten = drafted(confirmed.record.written);
105
- Object.assign(nextDocuments, documents);
106
- Object.assign(nextRevisions, revisions);
107
- for (const path of Object.keys({ ...documents, ...revisions }))
108
- delete nextFileIds[path];
109
- Object.assign(nextFileIds, fileIds);
110
- for (const path of Object.keys(documents))
111
- nextWritten[path] = writtenAt;
112
- for (const [path, revision] of Object.entries(revisions)) {
113
- if (confirmed.record.revisions[path] !== revision)
114
- delete nextChanges[path];
91
+ export function entryAt(layer, path) {
92
+ const content = layer.documents[path];
93
+ const binary = layer.binaries[path];
94
+ if (content === undefined && binary === undefined)
95
+ return null;
96
+ return {
97
+ path,
98
+ content: content ?? null,
99
+ binary: binary ?? null,
100
+ revision: layer.revisions[path] ?? null,
101
+ fileId: layer.fileIds[path] ?? null,
102
+ change: layer.changes[path] ?? null,
103
+ written: layer.written?.[path] ?? null,
104
+ };
105
+ }
106
+ export function* slicingWith(slice, set, removed) {
107
+ const entries = new Map();
108
+ for (const path of slice.held) {
109
+ const entry = entryAt(slice, path);
110
+ if (entry !== null)
111
+ entries.set(path, { ...entry, type: null });
112
+ yield ROW_WEIGHT;
115
113
  }
116
- Object.assign(nextChanges, changes);
117
- for (const path of removals) {
118
- delete nextDocuments[path];
119
- delete nextRevisions[path];
120
- delete nextFileIds[path];
121
- delete nextChanges[path];
122
- delete nextWritten[path];
114
+ for (const path of removed)
115
+ entries.delete(path);
116
+ for (const entry of set)
117
+ entries.set(entry.path, { ...entry, type: null });
118
+ return yield* slicing([...entries.values()], [...slice.held, ...set.map(({ path }) => path), ...removed]);
119
+ }
120
+ function changePaths(change) {
121
+ return change.kind === 'move' ? [change.path, change.to] : [change.path];
122
+ }
123
+ export function touchedBy(queue) {
124
+ const paths = new Set();
125
+ for (const batch of queue) {
126
+ for (const change of batch.changes)
127
+ for (const path of changePaths(change))
128
+ paths.add(path);
129
+ for (const precondition of batch.preconditions)
130
+ paths.add(precondition.path);
131
+ for (const move of batch.between?.moves ?? [])
132
+ paths.add(move.path);
123
133
  }
124
- return readStaged({
125
- ...confirmed.record,
126
- roomVersion,
127
- documents: settled(nextDocuments),
128
- revisions: settled(nextRevisions),
129
- fileIds: settled(nextFileIds),
130
- changes: settled(nextChanges),
131
- written: settled(nextWritten),
132
- binaries: returnedBinaries(confirmed.record.binaries, submitted, accepted),
133
- }, confirmed);
134
+ return paths;
134
135
  }
135
- function predicted(confirmed, batches, previous) {
136
- const composition = compositionOf(confirmed.record);
137
- let layer = confirmed.record;
138
- const replay = [];
139
- const prior = new Map(previous?.replay.map((step) => [step.id, step]) ?? []);
140
- for (const batch of batches) {
141
- const before = layer;
142
- const old = prior.get(batch.id);
143
- const hasMove = batch.changes.some((change) => change.kind === 'move');
144
- const reuseRewrite = old?.collection !== undefined &&
145
- sameLayerText(before, old.before) &&
146
- old.collection.composition.model === composition.model &&
147
- old.collection.composition.selection?.model === composition.selection?.model &&
148
- JSON.stringify(old.collection.composition.selection?.roots) ===
149
- JSON.stringify(composition.selection?.roots);
150
- const collection = hasMove
151
- ? reuseRewrite
152
- ? old.collection
153
- : collectionOf(before.documents, composition, old?.collection ?? confirmed.collection)
154
- : undefined;
155
- const effective = collection === undefined
156
- ? batch
157
- : reuseRewrite
158
- ? old.effective
159
- : providerRewritten(batch, { ...before, collection });
160
- layer =
161
- old === undefined
162
- ? overlay(before, [effective])
163
- : overlayChanged(before, [effective], old.before, [old.effective], old.after);
164
- replay.push({
165
- id: batch.id,
166
- before,
167
- after: layer,
168
- effective,
169
- ...(collection === undefined ? {} : { collection }),
170
- });
136
+ export function movedBy(queue, locator) {
137
+ const paths = new Set();
138
+ for (const batch of queue) {
139
+ if (!rewriting(batch, locator))
140
+ continue;
141
+ for (const change of batch.changes)
142
+ if (change.kind === 'move')
143
+ paths.add(change.path);
144
+ if (batch.between?.source.room === locator) {
145
+ for (const move of batch.between.moves)
146
+ paths.add(move.path);
147
+ }
171
148
  }
172
- return { layer, replay };
149
+ return paths;
173
150
  }
174
- export function replicaOf(confirmed, queue, previous) {
175
- const batches = Object.freeze(queue.map(immutable));
176
- if (batches.length === 0) {
177
- return {
178
- confirmed,
179
- queue: batches,
180
- visible: {
181
- documents: confirmed.record.documents,
182
- binaries: confirmed.record.binaries,
183
- revisions: confirmed.record.revisions,
184
- fileIds: confirmed.record.fileIds,
185
- changes: confirmed.record.changes,
186
- collection: confirmed.collection,
187
- },
188
- replay: [],
189
- };
151
+ export function* replaying(confirmed, queue, locator, composition) {
152
+ let layer = confirmed;
153
+ const touched = new Set();
154
+ for (const batch of queue) {
155
+ const effective = rewriting(batch, locator)
156
+ ? yield* effectiveIn(batch, locator, {
157
+ ...layer,
158
+ collection: collectionOf(layer.documents, composition),
159
+ })
160
+ : batch;
161
+ for (const change of effective.changes)
162
+ for (const path of changePaths(change))
163
+ touched.add(path);
164
+ layer = yield* overlaying(layer, [effective]);
165
+ yield ROW_WEIGHT;
190
166
  }
191
- const { layer, replay } = predicted(confirmed, batches, previous);
192
167
  return {
193
- confirmed,
194
- queue: batches,
195
- replay,
196
- visible: {
197
- ...layer,
198
- collection: collectionOf(layer.documents, compositionOf(confirmed.record), previous?.visible.collection ?? confirmed.collection),
199
- },
168
+ visible: { ...layer, collection: collectionOf(layer.documents, composition) },
169
+ touched,
200
170
  };
201
171
  }
172
+ export function* overlayOf(visible, touched) {
173
+ const rows = [];
174
+ for (const path of touched) {
175
+ yield ROW_WEIGHT;
176
+ const entry = entryAt(visible, path);
177
+ rows.push(entry === null
178
+ ? {
179
+ path,
180
+ present: false,
181
+ content: null,
182
+ binary: null,
183
+ revision: null,
184
+ fileId: null,
185
+ change: null,
186
+ written: null,
187
+ }
188
+ : { ...entry, written: null, present: true });
189
+ }
190
+ return rows;
191
+ }
202
192
  function present(layer, path) {
203
193
  return layer.documents[path] !== undefined || layer.binaries[path] !== undefined;
204
194
  }
205
- function holds(layer, preconditions) {
195
+ export function holds(layer, preconditions) {
206
196
  const parsed = new Map();
207
197
  const documentAt = (path) => {
208
198
  if (!parsed.has(path)) {
@@ -267,15 +257,19 @@ function effects(change) {
267
257
  { kind: 'present', path: change.to },
268
258
  ];
269
259
  }
270
- if (change.kind === 'binary')
260
+ if (change.kind === 'binary' || change.kind === 'arrival')
271
261
  return [{ kind: 'present', path }];
272
262
  return [{ kind: 'absent', path }];
273
263
  }
274
264
  export function landed(batch, confirmed, current = {}) {
275
- const layer = {
276
- ...confirmed.record,
277
- documents: patched(confirmed.record.documents, Object.entries(current)),
278
- };
265
+ const documents = new Proxy(confirmed.documents, {
266
+ get(target, property, receiver) {
267
+ if (typeof property === 'string' && Object.hasOwn(current, property))
268
+ return current[property];
269
+ return Reflect.get(target, property, receiver);
270
+ },
271
+ });
272
+ const layer = { ...confirmed, documents };
279
273
  return batch.changes.every((change, index) => {
280
274
  if (change.kind === 'replace' || (change.kind === 'create' && 'content' in change)) {
281
275
  const at = landing(batch.changes, index, change.path);
@@ -293,32 +287,147 @@ export function landed(batch, confirmed, current = {}) {
293
287
  });
294
288
  });
295
289
  }
296
- export function withdrawals(confirmed, queue, withdrawable, local) {
290
+ function founded(batch, layer) {
291
+ let changed = false;
292
+ const preconditions = batch.preconditions.map((precondition) => {
293
+ if (precondition.kind !== 'content')
294
+ return precondition;
295
+ const revision = layer.revisions[precondition.path];
296
+ if (revision === undefined || layer.documents[precondition.path] !== precondition.content) {
297
+ return precondition;
298
+ }
299
+ changed = true;
300
+ return { kind: 'revision', path: precondition.path, revision };
301
+ });
302
+ return changed ? immutable({ ...batch, preconditions }) : batch;
303
+ }
304
+ export function* standing(confirmed, queue, withdrawable, local, locator, composition) {
297
305
  if (!queue.some(withdrawable))
298
- return [];
299
- const composition = compositionOf(confirmed.record);
300
- let layer = confirmed.record;
306
+ return { withdrawn: [], kept: queue };
307
+ let layer = confirmed;
301
308
  const withdrawn = [];
309
+ const kept = [];
302
310
  for (const batch of queue) {
303
311
  if (withdrawable(batch) && !holds(layer, batch.preconditions)) {
304
312
  withdrawn.push(batch);
305
313
  continue;
306
314
  }
307
- const effective = batch.changes.some((change) => change.kind === 'move')
308
- ? providerRewritten(batch, {
315
+ const effective = rewriting(batch, locator)
316
+ ? yield* effectiveIn(batch, locator, {
309
317
  ...layer,
310
318
  collection: collectionOf(layer.documents, composition),
311
319
  })
312
320
  : batch;
313
321
  let unapplied = false;
314
- const next = overlay(layer, [effective], () => {
322
+ const next = yield* overlaying(layer, [effective], () => {
315
323
  unapplied = true;
316
324
  });
317
325
  if (local && unapplied) {
318
326
  withdrawn.push(batch);
319
327
  continue;
320
328
  }
329
+ kept.push(local || !withdrawable(batch) ? batch : founded(batch, layer));
321
330
  layer = next;
322
331
  }
323
- return withdrawn;
332
+ return { withdrawn, kept };
333
+ }
334
+ export function returnedPaths(submitted, accepted) {
335
+ const paths = new Set([
336
+ ...Object.keys(accepted.documents),
337
+ ...Object.keys(accepted.revisions),
338
+ ...Object.keys(accepted.fileIds ?? {}),
339
+ ...Object.keys(accepted.changes),
340
+ ...Object.keys(accepted.binaryFiles ?? {}),
341
+ ...accepted.removals,
342
+ ]);
343
+ for (const change of submitted.changes) {
344
+ if (change.kind === 'move') {
345
+ paths.add(change.path);
346
+ paths.add(change.to);
347
+ }
348
+ if (change.kind === 'arrival')
349
+ paths.add(change.path);
350
+ }
351
+ return paths;
352
+ }
353
+ export function* returning(confirmed, submitted, accepted, writtenAt) {
354
+ const documents = new Map();
355
+ const binaries = new Map();
356
+ const revisions = new Map();
357
+ const fileIds = new Map();
358
+ const changes = new Map();
359
+ const written = new Map();
360
+ const read = (changed, held, path) => (changed.has(path) ? changed.get(path) : held[path]);
361
+ for (const [path, content] of Object.entries(accepted.documents)) {
362
+ yield ROW_WEIGHT;
363
+ documents.set(path, content);
364
+ fileIds.set(path, undefined);
365
+ written.set(path, writtenAt);
366
+ }
367
+ for (const [path, revision] of Object.entries(accepted.revisions)) {
368
+ yield ROW_WEIGHT;
369
+ revisions.set(path, revision);
370
+ fileIds.set(path, undefined);
371
+ if (confirmed.revisions[path] !== revision)
372
+ changes.set(path, undefined);
373
+ }
374
+ for (const [path, fileId] of Object.entries(accepted.fileIds ?? {}))
375
+ fileIds.set(path, fileId);
376
+ for (const [path, change] of Object.entries(accepted.changes))
377
+ changes.set(path, change);
378
+ for (const path of accepted.removals) {
379
+ documents.set(path, undefined);
380
+ revisions.set(path, undefined);
381
+ fileIds.set(path, undefined);
382
+ changes.set(path, undefined);
383
+ written.set(path, undefined);
384
+ }
385
+ for (const change of submitted.changes) {
386
+ if (change.kind === 'arrival' && 'binary' in change) {
387
+ if (accepted.revisions[change.path] !== undefined) {
388
+ binaries.set(change.path, { state: 'accepted', ...change.binary });
389
+ }
390
+ continue;
391
+ }
392
+ if (change.kind !== 'move')
393
+ continue;
394
+ const moved = read(binaries, confirmed.binaries, change.path);
395
+ if (moved === undefined || accepted.revisions[change.to] === undefined)
396
+ continue;
397
+ binaries.set(change.to, moved);
398
+ binaries.set(change.path, undefined);
399
+ }
400
+ for (const [path, binary] of acceptedBinaries(accepted.binaryFiles ?? {}))
401
+ binaries.set(path, binary);
402
+ for (const path of accepted.removals)
403
+ binaries.set(path, undefined);
404
+ const paths = new Set([
405
+ ...documents.keys(),
406
+ ...binaries.keys(),
407
+ ...revisions.keys(),
408
+ ...fileIds.keys(),
409
+ ...changes.keys(),
410
+ ...written.keys(),
411
+ ]);
412
+ const set = [];
413
+ const removed = [];
414
+ for (const path of paths) {
415
+ yield ROW_WEIGHT;
416
+ const content = read(documents, confirmed.documents, path);
417
+ const binary = read(binaries, confirmed.binaries, path);
418
+ if (content === undefined && binary === undefined) {
419
+ removed.push(path);
420
+ continue;
421
+ }
422
+ set.push({
423
+ path,
424
+ content: binary === undefined ? (content ?? null) : null,
425
+ binary: binary ?? null,
426
+ revision: read(revisions, confirmed.revisions, path) ?? null,
427
+ fileId: read(fileIds, confirmed.fileIds, path) ?? null,
428
+ change: read(changes, confirmed.changes, path) ?? null,
429
+ written: read(written, confirmed.written, path) ?? null,
430
+ });
431
+ }
432
+ return { set, removed };
324
433
  }
@@ -32,6 +32,7 @@ export type RoomDraftParts = {
32
32
  readonly creation?: RoomDraftCreation;
33
33
  readonly move?: {
34
34
  readonly to: string;
35
+ readonly room?: string;
35
36
  readonly base?: string | null;
36
37
  };
37
38
  readonly removal?: {
@@ -42,8 +43,8 @@ export type RoomDraftParts = {
42
43
  };
43
44
  };
44
45
  export type HeldFile = {
45
- readonly blob: Blob;
46
46
  readonly localId: string;
47
+ readonly name?: string;
47
48
  readonly byteLength: number;
48
49
  readonly mediaType: string;
49
50
  readonly sha256: string;
@@ -69,6 +70,7 @@ type HeldParts = {
69
70
  readonly creation?: RoomDraftCreation;
70
71
  readonly move?: {
71
72
  readonly to: string;
73
+ readonly room?: string;
72
74
  readonly base: string | null;
73
75
  };
74
76
  readonly removal?: {
@@ -125,6 +127,7 @@ export type SavedDraft = {
125
127
  readonly parts: HeldParts;
126
128
  };
127
129
  export declare function readParts(value: unknown): RoomDraftParts;
130
+ export declare function gatheredParts(earlier: unknown, later: unknown): unknown;
128
131
  export declare function held(current: HeldParts | undefined, parts: RoomDraftParts, file?: HeldFile): HeldParts;
129
132
  export declare function underneath(parts: HeldParts, path: string, visible: VisibleLayer | undefined): ChangedUnderneath;
130
133
  export declare function heldFile(blob: Blob, base: string | null): Promise<HeldFile>;
@@ -1 +1 @@
1
- {"version":3,"file":"room-draft.d.ts","sourceRoot":"","sources":["../src/room-draft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room-draft.d.ts","sourceRoot":"","sources":["../src/room-draft.ts"],"names":[],"mappings":"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"}