@agentshouse/mdruntime 0.1.0-c97456d63baba → 0.1.0-c9b1e59e5baeb
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/AGENTS.md +221 -221
- package/README.md +8 -8
- package/dist/adapter.d.ts +35 -6
- package/dist/adapter.d.ts.map +1 -1
- package/dist/bootstrap.d.ts +2 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +5 -1
- package/dist/change-set.d.ts +5 -2
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +8 -2
- package/dist/chat/earlier.d.ts +10 -0
- package/dist/chat/earlier.d.ts.map +1 -0
- package/dist/chat/earlier.js +54 -0
- package/dist/chat/kit.js +1 -1
- package/dist/chat/list.d.ts +2 -1
- package/dist/chat/list.d.ts.map +1 -1
- package/dist/chat/list.js +40 -4
- package/dist/chat/markdown.d.ts +1 -0
- package/dist/chat/markdown.d.ts.map +1 -1
- package/dist/chat/markdown.js +78 -20
- package/dist/chat/message.d.ts.map +1 -1
- package/dist/chat/message.js +9 -2
- package/dist/chat/messages.d.ts.map +1 -1
- package/dist/chat/messages.js +36 -16
- package/dist/chat/overlay.d.ts +1 -0
- package/dist/chat/overlay.d.ts.map +1 -1
- package/dist/chat/overlay.js +10 -0
- package/dist/chat/pieces.d.ts +62 -0
- package/dist/chat/pieces.d.ts.map +1 -0
- package/dist/chat/pieces.js +1110 -0
- package/dist/chat/provider.d.ts +1 -0
- package/dist/chat/provider.d.ts.map +1 -1
- package/dist/chat/provider.js +22 -14
- package/dist/chat/question.d.ts +1 -1
- package/dist/chat/question.d.ts.map +1 -1
- package/dist/chat/question.js +7 -18
- package/dist/chat/ready.d.ts +1 -1
- package/dist/chat/ready.d.ts.map +1 -1
- package/dist/chat/ready.js +1 -1
- package/dist/chat/steady.d.ts +3 -0
- package/dist/chat/steady.d.ts.map +1 -0
- package/dist/chat/steady.js +26 -0
- package/dist/chat/style.js +1 -1
- package/dist/chat.d.ts +2 -2
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/client.d.ts +6 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -5
- package/dist/collection.d.ts +4 -3
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +128 -63
- package/dist/connection.d.ts +13 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +506 -228
- package/dist/conversation.d.ts +11 -0
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +195 -41
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +3 -2
- package/dist/host.d.ts +9 -7
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +58 -9
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/memory.d.ts +7 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +24 -11
- package/dist/observation.d.ts +2 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +9 -3
- package/dist/outcome.d.ts +8 -2
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +3 -0
- package/dist/overlay.d.ts +5 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +197 -132
- package/dist/query.d.ts +27 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +36 -7
- package/dist/reach.d.ts +1 -2
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +17 -4
- package/dist/react.d.ts +3 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -17
- package/dist/read-side.d.ts +3 -1
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +256 -69
- package/dist/reads.d.ts +11 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +98 -0
- package/dist/refresh.d.ts +4 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +39 -14
- package/dist/replica.d.ts +11 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +79 -41
- package/dist/room-draft.d.ts +12 -0
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +11 -12
- package/dist/rows.d.ts +3 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +8 -1
- package/dist/save.d.ts +4 -2
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +195 -111
- package/dist/search.d.ts +27 -6
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +89 -7
- package/dist/seed.d.ts +16 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +75 -0
- package/dist/shared.d.ts +4 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +63 -33
- package/dist/store.d.ts +20 -4
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +404 -317
- package/dist/turn.d.ts +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +26 -7
- package/dist/windows.d.ts +26 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +93 -0
- package/dist/wire.d.ts +16 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +4 -0
- package/package.json +2 -2
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
package/dist/overlay.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { apply, parse, serialize } from '@agentshouse/mdmodel';
|
|
2
|
-
import {
|
|
1
|
+
import { apply, frontmatterValue, parse, serialize, } from '@agentshouse/mdmodel';
|
|
2
|
+
import { differences, drafted, patching, settling } from './shared.js';
|
|
3
|
+
import { ROW_WEIGHT } from './turn.js';
|
|
3
4
|
export function acceptedBinaries(files) {
|
|
4
5
|
return Object.fromEntries(Object.entries(files).map(([path, file]) => [path, { state: 'accepted', ...file }]));
|
|
5
6
|
}
|
|
@@ -23,10 +24,13 @@ export function sameChange(left, right) {
|
|
|
23
24
|
left.author?.name === right.author?.name);
|
|
24
25
|
}
|
|
25
26
|
const EMPTY_FRONTMATTER = '---\n---\n';
|
|
27
|
+
function isPart(change) {
|
|
28
|
+
return change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble';
|
|
29
|
+
}
|
|
26
30
|
function at(path, name) {
|
|
27
31
|
return `${path} ${name}`;
|
|
28
32
|
}
|
|
29
|
-
function priorsOf(preconditions) {
|
|
33
|
+
function* priorsOf(preconditions) {
|
|
30
34
|
const fields = new Map();
|
|
31
35
|
const sections = new Map();
|
|
32
36
|
const preambles = new Map();
|
|
@@ -40,6 +44,7 @@ function priorsOf(preconditions) {
|
|
|
40
44
|
if (precondition.kind === 'preamble') {
|
|
41
45
|
preambles.set(precondition.path, precondition.value);
|
|
42
46
|
}
|
|
47
|
+
yield ROW_WEIGHT;
|
|
43
48
|
}
|
|
44
49
|
return {
|
|
45
50
|
field: (path, name) => fields.get(at(path, name)),
|
|
@@ -55,51 +60,50 @@ function compose(fields, sections) {
|
|
|
55
60
|
const opened = parse(skeleton);
|
|
56
61
|
if (!opened.ok)
|
|
57
62
|
return skeleton;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const next = apply(document, { kind: 'field', name, value, prior: undefined });
|
|
61
|
-
if (next.outcome === 'applied')
|
|
62
|
-
document = next.document;
|
|
63
|
-
}
|
|
64
|
-
return serialize(document);
|
|
63
|
+
const next = apply(opened.document, Object.entries(fields).flatMap(([name, value]) => frontmatterValue(value) ? [{ kind: 'field', name, value, prior: undefined }] : []));
|
|
64
|
+
return serialize(next.outcome === 'applied' ? next.document : opened.document);
|
|
65
65
|
}
|
|
66
|
-
function edited(
|
|
67
|
-
if (change.kind === 'field')
|
|
68
|
-
return
|
|
66
|
+
function edited(change, priors) {
|
|
67
|
+
if (change.kind === 'field')
|
|
68
|
+
return {
|
|
69
69
|
kind: 'field',
|
|
70
70
|
name: change.name,
|
|
71
71
|
value: change.value,
|
|
72
72
|
prior: priors.field(change.path, change.name),
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
kind: 'preamble',
|
|
78
|
-
value: change.value,
|
|
79
|
-
prior: priors.preamble(change.path),
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if (change.kind !== 'section')
|
|
83
|
-
return null;
|
|
84
|
-
return apply(document, {
|
|
73
|
+
};
|
|
74
|
+
if (change.kind === 'preamble')
|
|
75
|
+
return { kind: 'preamble', value: change.value, prior: priors.preamble(change.path) };
|
|
76
|
+
return {
|
|
85
77
|
kind: 'section',
|
|
86
78
|
name: change.name,
|
|
87
79
|
value: change.value,
|
|
88
80
|
prior: priors.section(change.path, change.name),
|
|
89
|
-
}
|
|
81
|
+
};
|
|
90
82
|
}
|
|
91
|
-
function edit(staged,
|
|
92
|
-
const
|
|
83
|
+
function edit(staged, changes, priors) {
|
|
84
|
+
const path = changes[0].path;
|
|
85
|
+
delete staged.revisions[path];
|
|
86
|
+
const text = staged.documents[path];
|
|
93
87
|
if (text === undefined)
|
|
94
|
-
return
|
|
95
|
-
const parsed = parse(text,
|
|
88
|
+
return changes.length;
|
|
89
|
+
const parsed = parse(text, path);
|
|
96
90
|
if (!parsed.ok)
|
|
97
|
-
return
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
91
|
+
return changes.length;
|
|
92
|
+
const wanted = changes.map((change) => edited(change, priors));
|
|
93
|
+
const first = apply(parsed.document, wanted);
|
|
94
|
+
if (first.outcome === 'refuse')
|
|
95
|
+
return changes.length;
|
|
96
|
+
if (first.outcome === 'applied') {
|
|
97
|
+
staged.documents[path] = serialize(first.document);
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
const stale = new Set(first.stale);
|
|
101
|
+
const kept = wanted.filter((_, at) => !stale.has(at));
|
|
102
|
+
const rest = apply(parsed.document, kept);
|
|
103
|
+
if (rest.outcome !== 'applied')
|
|
104
|
+
return changes.length;
|
|
105
|
+
staged.documents[path] = serialize(rest.document);
|
|
106
|
+
return first.stale.length;
|
|
103
107
|
}
|
|
104
108
|
function relocate(staged, from, to) {
|
|
105
109
|
const text = staged.documents[from];
|
|
@@ -119,29 +123,32 @@ function relocate(staged, from, to) {
|
|
|
119
123
|
}
|
|
120
124
|
function moveHead(heads, from, to) {
|
|
121
125
|
const revision = heads.revisions[from];
|
|
126
|
+
const fileId = heads.fileIds[from];
|
|
122
127
|
const change = heads.changes[from];
|
|
123
128
|
delete heads.revisions[from];
|
|
129
|
+
delete heads.fileIds[from];
|
|
124
130
|
delete heads.changes[from];
|
|
131
|
+
delete heads.fileIds[to];
|
|
125
132
|
delete heads.changes[to];
|
|
126
133
|
if (revision !== undefined)
|
|
127
134
|
heads.revisions[to] = revision;
|
|
135
|
+
if (fileId !== undefined)
|
|
136
|
+
heads.fileIds[to] = fileId;
|
|
128
137
|
if (change !== undefined)
|
|
129
138
|
heads.changes[to] = change;
|
|
130
139
|
}
|
|
131
140
|
function erase(staged, path) {
|
|
132
141
|
delete staged.documents[path];
|
|
133
142
|
delete staged.revisions[path];
|
|
143
|
+
delete staged.fileIds[path];
|
|
134
144
|
delete staged.changes[path];
|
|
135
145
|
delete staged.binaries[path];
|
|
136
146
|
}
|
|
137
|
-
function stage(staged, change
|
|
138
|
-
if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {
|
|
139
|
-
delete staged.revisions[change.path];
|
|
140
|
-
return edit(staged, change, priors);
|
|
141
|
-
}
|
|
147
|
+
function stage(staged, change) {
|
|
142
148
|
if (change.kind === 'create') {
|
|
143
149
|
staged.documents[change.path] =
|
|
144
150
|
'content' in change ? change.content : compose(change.fields, change.sections);
|
|
151
|
+
delete staged.fileIds[change.path];
|
|
145
152
|
delete staged.changes[change.path];
|
|
146
153
|
return true;
|
|
147
154
|
}
|
|
@@ -172,129 +179,187 @@ function stage(staged, change, priors) {
|
|
|
172
179
|
erase(staged, change.path);
|
|
173
180
|
return true;
|
|
174
181
|
}
|
|
175
|
-
export function
|
|
182
|
+
export function* overlaying(base, queue, unapplied) {
|
|
176
183
|
const staged = {
|
|
177
184
|
documents: drafted(base.documents),
|
|
178
185
|
binaries: drafted(base.binaries),
|
|
179
186
|
revisions: drafted(base.revisions),
|
|
187
|
+
fileIds: drafted(base.fileIds),
|
|
180
188
|
changes: drafted(base.changes),
|
|
181
189
|
};
|
|
182
190
|
for (const batch of queue) {
|
|
183
|
-
const priors = priorsOf(batch.preconditions);
|
|
184
|
-
for (
|
|
185
|
-
|
|
191
|
+
const priors = yield* priorsOf(batch.preconditions);
|
|
192
|
+
for (let index = 0; index < batch.changes.length; index += 1) {
|
|
193
|
+
const change = batch.changes[index];
|
|
194
|
+
if (!isPart(change)) {
|
|
195
|
+
if (!stage(staged, change))
|
|
196
|
+
unapplied?.();
|
|
197
|
+
yield ROW_WEIGHT;
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const run = [change];
|
|
201
|
+
while (index + 1 < batch.changes.length) {
|
|
202
|
+
const next = batch.changes[index + 1];
|
|
203
|
+
if (!isPart(next) || next.path !== change.path)
|
|
204
|
+
break;
|
|
205
|
+
run.push(next);
|
|
206
|
+
index += 1;
|
|
207
|
+
}
|
|
208
|
+
const text = staged.documents[change.path] ?? '';
|
|
209
|
+
for (let left = edit(staged, run, priors); left > 0; left -= 1)
|
|
186
210
|
unapplied?.();
|
|
211
|
+
yield ROW_WEIGHT + text.length;
|
|
187
212
|
}
|
|
188
213
|
}
|
|
189
214
|
return {
|
|
190
|
-
documents:
|
|
191
|
-
binaries:
|
|
192
|
-
revisions:
|
|
193
|
-
|
|
215
|
+
documents: yield* settling(staged.documents),
|
|
216
|
+
binaries: yield* settling(staged.binaries),
|
|
217
|
+
revisions: yield* settling(staged.revisions),
|
|
218
|
+
fileIds: yield* settling(staged.fileIds),
|
|
219
|
+
changes: yield* settling(staged.changes),
|
|
194
220
|
};
|
|
195
221
|
}
|
|
196
|
-
function pathsOf(batch) {
|
|
197
|
-
|
|
222
|
+
function* pathsOf(batch) {
|
|
223
|
+
const paths = new Set();
|
|
224
|
+
for (const change of batch.changes) {
|
|
225
|
+
paths.add(change.path);
|
|
226
|
+
if (change.kind === 'move')
|
|
227
|
+
paths.add(change.to);
|
|
228
|
+
yield ROW_WEIGHT;
|
|
229
|
+
}
|
|
230
|
+
return paths;
|
|
198
231
|
}
|
|
199
|
-
export function
|
|
200
|
-
return (
|
|
201
|
-
|
|
232
|
+
export function* sameText(left, right) {
|
|
233
|
+
return ((yield* differences(left.documents, right.documents)).size === 0 &&
|
|
234
|
+
(yield* differences(left.binaries, right.binaries, sameBinary)).size === 0);
|
|
202
235
|
}
|
|
203
|
-
export function changedPaths(left, right) {
|
|
236
|
+
export function* changedPaths(left, right) {
|
|
204
237
|
return new Set([
|
|
205
|
-
...
|
|
206
|
-
...
|
|
207
|
-
...
|
|
208
|
-
...
|
|
238
|
+
...(yield* differences(left.documents, right.documents)),
|
|
239
|
+
...(yield* differences(left.revisions, right.revisions)),
|
|
240
|
+
...(yield* differences(left.fileIds, right.fileIds)),
|
|
241
|
+
...(yield* differences(left.changes, right.changes, sameChange)),
|
|
242
|
+
...(yield* differences(left.binaries, right.binaries, sameBinary)),
|
|
209
243
|
]);
|
|
210
244
|
}
|
|
211
|
-
function
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
245
|
+
function* sameItems(left, right) {
|
|
246
|
+
if (left.length !== right.length)
|
|
247
|
+
return false;
|
|
248
|
+
for (let index = 0; index < left.length; index += 1) {
|
|
249
|
+
const item = JSON.stringify(left[index]);
|
|
250
|
+
if (item !== JSON.stringify(right[index]))
|
|
251
|
+
return false;
|
|
252
|
+
yield ROW_WEIGHT + item.length;
|
|
253
|
+
}
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
function* sameBatch(left, right) {
|
|
257
|
+
if (left === right)
|
|
258
|
+
return true;
|
|
259
|
+
const { changes, preconditions, ...rest } = left;
|
|
260
|
+
const { changes: others, preconditions: priors, ...held } = right;
|
|
261
|
+
return (JSON.stringify(rest) === JSON.stringify(held) &&
|
|
262
|
+
(yield* sameItems(changes, others)) &&
|
|
263
|
+
(yield* sameItems(preconditions, priors)));
|
|
264
|
+
}
|
|
265
|
+
function* replayHeads(base, batch) {
|
|
266
|
+
const heads = {
|
|
267
|
+
revisions: drafted(base.revisions),
|
|
268
|
+
fileIds: drafted(base.fileIds),
|
|
269
|
+
changes: drafted(base.changes),
|
|
270
|
+
};
|
|
271
|
+
for (const change of batch.changes) {
|
|
272
|
+
if (change.kind === 'remove') {
|
|
273
|
+
delete heads.revisions[change.path];
|
|
274
|
+
delete heads.fileIds[change.path];
|
|
275
|
+
delete heads.changes[change.path];
|
|
276
|
+
}
|
|
277
|
+
else if (change.kind === 'create') {
|
|
278
|
+
delete heads.fileIds[change.path];
|
|
279
|
+
delete heads.changes[change.path];
|
|
280
|
+
}
|
|
281
|
+
else if (change.kind === 'replace' ||
|
|
282
|
+
change.kind === 'field' ||
|
|
283
|
+
change.kind === 'section' ||
|
|
284
|
+
change.kind === 'preamble') {
|
|
285
|
+
delete heads.revisions[change.path];
|
|
235
286
|
}
|
|
287
|
+
else if (change.kind === 'binary') {
|
|
288
|
+
delete heads.revisions[change.path];
|
|
289
|
+
delete heads.changes[change.path];
|
|
290
|
+
}
|
|
291
|
+
else if (change.kind === 'move') {
|
|
292
|
+
moveHead(heads, change.path, change.to);
|
|
293
|
+
}
|
|
294
|
+
yield ROW_WEIGHT;
|
|
236
295
|
}
|
|
237
|
-
return {
|
|
296
|
+
return {
|
|
297
|
+
revisions: yield* settling(heads.revisions),
|
|
298
|
+
fileIds: yield* settling(heads.fileIds),
|
|
299
|
+
changes: yield* settling(heads.changes),
|
|
300
|
+
};
|
|
238
301
|
}
|
|
239
|
-
|
|
240
|
-
const
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
302
|
+
function* repatched(held, paths, value) {
|
|
303
|
+
const set = [];
|
|
304
|
+
const removed = [];
|
|
305
|
+
for (const path of paths) {
|
|
306
|
+
const found = value(path);
|
|
307
|
+
if (found === undefined)
|
|
308
|
+
removed.push(path);
|
|
309
|
+
else
|
|
310
|
+
set.push([path, found]);
|
|
311
|
+
yield ROW_WEIGHT;
|
|
312
|
+
}
|
|
313
|
+
return yield* patching(held, set, removed);
|
|
314
|
+
}
|
|
315
|
+
export function* overlayChanged(base, batch, previousBase, previousBatch, previousVisible) {
|
|
316
|
+
const same = yield* sameBatch(batch, previousBatch);
|
|
317
|
+
if (same && (yield* sameText(base, previousBase))) {
|
|
245
318
|
return {
|
|
246
319
|
documents: previousVisible.documents,
|
|
247
320
|
binaries: previousVisible.binaries,
|
|
248
|
-
...replayHeads(base,
|
|
321
|
+
...(yield* replayHeads(base, batch)),
|
|
249
322
|
};
|
|
250
323
|
}
|
|
251
|
-
const affected = new Set(changedPaths(base, previousBase));
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
324
|
+
const affected = new Set(yield* changedPaths(base, previousBase));
|
|
325
|
+
const touched = yield* pathsOf(batch);
|
|
326
|
+
let replayed = !same;
|
|
327
|
+
if (replayed)
|
|
328
|
+
for (const path of yield* pathsOf(previousBatch))
|
|
329
|
+
affected.add(path);
|
|
330
|
+
for (const path of touched) {
|
|
331
|
+
if (affected.has(path))
|
|
332
|
+
replayed = true;
|
|
333
|
+
yield ROW_WEIGHT;
|
|
258
334
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const touched = pathsOf(batch);
|
|
269
|
-
if (!touched.some((path) => affected.has(path)))
|
|
270
|
-
continue;
|
|
271
|
-
for (const path of touched) {
|
|
272
|
-
if (affected.has(path))
|
|
273
|
-
continue;
|
|
274
|
-
affected.add(path);
|
|
275
|
-
expanded = true;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
const documents = {};
|
|
280
|
-
const revisions = {};
|
|
281
|
-
const changes = {};
|
|
282
|
-
const binaries = {};
|
|
283
|
-
for (const path of affected) {
|
|
335
|
+
const restricted = {
|
|
336
|
+
documents: {},
|
|
337
|
+
revisions: {},
|
|
338
|
+
fileIds: {},
|
|
339
|
+
changes: {},
|
|
340
|
+
binaries: {},
|
|
341
|
+
};
|
|
342
|
+
for (const path of replayed ? touched : []) {
|
|
343
|
+
affected.add(path);
|
|
284
344
|
if (base.documents[path] !== undefined)
|
|
285
|
-
documents[path] = base.documents[path];
|
|
345
|
+
restricted.documents[path] = base.documents[path];
|
|
286
346
|
if (base.revisions[path] !== undefined)
|
|
287
|
-
revisions[path] = base.revisions[path];
|
|
347
|
+
restricted.revisions[path] = base.revisions[path];
|
|
348
|
+
if (base.fileIds[path] !== undefined)
|
|
349
|
+
restricted.fileIds[path] = base.fileIds[path];
|
|
288
350
|
if (base.changes[path] !== undefined)
|
|
289
|
-
changes[path] = base.changes[path];
|
|
351
|
+
restricted.changes[path] = base.changes[path];
|
|
290
352
|
if (base.binaries[path] !== undefined)
|
|
291
|
-
binaries[path] = base.binaries[path];
|
|
353
|
+
restricted.binaries[path] = base.binaries[path];
|
|
354
|
+
yield ROW_WEIGHT;
|
|
292
355
|
}
|
|
293
|
-
const staged =
|
|
356
|
+
const staged = replayed ? yield* overlaying(restricted, [batch]) : base;
|
|
357
|
+
const from = (path) => (touched.has(path) ? staged : base);
|
|
294
358
|
return {
|
|
295
|
-
documents:
|
|
296
|
-
revisions:
|
|
297
|
-
|
|
298
|
-
|
|
359
|
+
documents: yield* repatched(previousVisible.documents, affected, (path) => from(path).documents[path]),
|
|
360
|
+
revisions: yield* repatched(previousVisible.revisions, affected, (path) => from(path).revisions[path]),
|
|
361
|
+
fileIds: yield* repatched(previousVisible.fileIds, affected, (path) => from(path).fileIds[path]),
|
|
362
|
+
changes: yield* repatched(previousVisible.changes, affected, (path) => from(path).changes[path]),
|
|
363
|
+
binaries: yield* repatched(previousVisible.binaries, affected, (path) => from(path).binaries[path]),
|
|
299
364
|
};
|
|
300
365
|
}
|
package/dist/query.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export type Filter = {
|
|
|
38
38
|
types?: readonly string[];
|
|
39
39
|
where?: Where;
|
|
40
40
|
pathPrefix?: string;
|
|
41
|
+
folder?: string;
|
|
42
|
+
paths?: readonly string[];
|
|
41
43
|
hop?: Related & {
|
|
42
44
|
field: string;
|
|
43
45
|
};
|
|
@@ -45,7 +47,7 @@ export type Filter = {
|
|
|
45
47
|
field?: string;
|
|
46
48
|
};
|
|
47
49
|
};
|
|
48
|
-
export type Key = 'room' | 'path' | 'type' | {
|
|
50
|
+
export type Key = 'room' | 'path' | 'type' | 'folder' | {
|
|
49
51
|
field: string;
|
|
50
52
|
};
|
|
51
53
|
export type Select = 'all' | {
|
|
@@ -55,6 +57,7 @@ export type Select = 'all' | {
|
|
|
55
57
|
markdown?: true;
|
|
56
58
|
backlinks?: true;
|
|
57
59
|
change?: true;
|
|
60
|
+
fileId?: true;
|
|
58
61
|
};
|
|
59
62
|
export type OrderOptions = {
|
|
60
63
|
nulls?: 'first' | 'last';
|
|
@@ -70,6 +73,8 @@ export type DocumentQuery = Filter & {
|
|
|
70
73
|
direction?: Direction;
|
|
71
74
|
} & OrderOptions)[];
|
|
72
75
|
limit?: number;
|
|
76
|
+
after?: string;
|
|
77
|
+
total?: true;
|
|
73
78
|
};
|
|
74
79
|
export type GroupQuery = Filter & {
|
|
75
80
|
groupBy: readonly Exclude<Key, 'path'>[];
|
|
@@ -78,6 +83,8 @@ export type GroupQuery = Filter & {
|
|
|
78
83
|
direction?: Direction;
|
|
79
84
|
}[];
|
|
80
85
|
limit?: number;
|
|
86
|
+
after?: string;
|
|
87
|
+
total?: true;
|
|
81
88
|
};
|
|
82
89
|
export type LocalQuery = DocumentQuery | GroupQuery;
|
|
83
90
|
export type Backlink = {
|
|
@@ -95,6 +102,7 @@ export type QueryDocument = {
|
|
|
95
102
|
markdown?: string;
|
|
96
103
|
backlinks?: readonly Backlink[];
|
|
97
104
|
change?: HeadChange | null;
|
|
105
|
+
fileId?: string | null;
|
|
98
106
|
binaryFile?: BinaryFileRecord;
|
|
99
107
|
};
|
|
100
108
|
export type QueryGroup = {
|
|
@@ -121,9 +129,13 @@ export type PendingResult = {
|
|
|
121
129
|
};
|
|
122
130
|
export type DocumentRows = {
|
|
123
131
|
documents: readonly QueryDocument[];
|
|
132
|
+
next?: string;
|
|
133
|
+
total?: number;
|
|
124
134
|
};
|
|
125
135
|
export type GroupRows = {
|
|
126
136
|
groups: readonly QueryGroup[];
|
|
137
|
+
next?: string;
|
|
138
|
+
total?: number;
|
|
127
139
|
};
|
|
128
140
|
export type QueryRows = DocumentRows | GroupRows;
|
|
129
141
|
export type DocumentResult = DocumentRows & {
|
|
@@ -187,6 +199,8 @@ export type KeyPlan = {
|
|
|
187
199
|
of: 'path';
|
|
188
200
|
} | {
|
|
189
201
|
of: 'type';
|
|
202
|
+
} | {
|
|
203
|
+
of: 'folder';
|
|
190
204
|
} | {
|
|
191
205
|
of: 'field';
|
|
192
206
|
field: string;
|
|
@@ -199,6 +213,7 @@ export type DocumentShape = {
|
|
|
199
213
|
markdown: boolean;
|
|
200
214
|
backlinks: boolean;
|
|
201
215
|
change: boolean;
|
|
216
|
+
fileId: boolean;
|
|
202
217
|
orderBy: readonly {
|
|
203
218
|
key: KeyPlan;
|
|
204
219
|
options: OrderOptions & {
|
|
@@ -218,10 +233,17 @@ export type PlanReach = {
|
|
|
218
233
|
rooms: readonly string[];
|
|
219
234
|
documents: readonly string[];
|
|
220
235
|
};
|
|
236
|
+
export type Continuation = {
|
|
237
|
+
text: string;
|
|
238
|
+
values: readonly unknown[] | null;
|
|
239
|
+
};
|
|
221
240
|
export type Plan = {
|
|
241
|
+
key: string;
|
|
222
242
|
rooms: readonly string[] | null;
|
|
223
243
|
reach: PlanReach | null;
|
|
224
244
|
root: Scope;
|
|
245
|
+
folder: string | null;
|
|
246
|
+
paths: readonly string[] | null;
|
|
225
247
|
hop: (Scope & {
|
|
226
248
|
field: string;
|
|
227
249
|
}) | null;
|
|
@@ -230,6 +252,8 @@ export type Plan = {
|
|
|
230
252
|
}) | null;
|
|
231
253
|
shape: DocumentShape | GroupShape;
|
|
232
254
|
limit: number | null;
|
|
255
|
+
after: Continuation | null;
|
|
256
|
+
total: boolean;
|
|
233
257
|
};
|
|
234
258
|
export declare class QueryError extends Error {
|
|
235
259
|
readonly code: QueryErrorCode;
|
|
@@ -240,9 +264,11 @@ type Entries = Readonly<Record<string, unknown>>;
|
|
|
240
264
|
export declare function invalid(at: string, problem: string): never;
|
|
241
265
|
export declare function plain(value: unknown): value is Entries;
|
|
242
266
|
export declare function known(value: Entries, allowed: readonly string[], at: string): void;
|
|
267
|
+
export declare function flag(input: unknown, at: string): boolean;
|
|
243
268
|
export declare function planOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
244
269
|
export declare function limitOf(input: unknown): number | null;
|
|
245
270
|
export declare function filterOf(input: unknown, facts: HeldRooms, reach?: PlanReach | null): Plan;
|
|
271
|
+
export declare function queryKey(query: unknown): string;
|
|
246
272
|
export declare function identityOf(plan: Plan): string;
|
|
247
273
|
export {};
|
|
248
274
|
//# sourceMappingURL=query.d.ts.map
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|