@agentshouse/mdruntime 0.1.0-cf1e7fdb9c600 → 0.1.0-cf281e8224a5d
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/README.md +9 -9
- package/dist/acceptance.d.ts +6 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +385 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +251 -0
- package/dist/adapter.d.ts +24 -25
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +3 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +21 -56
- package/dist/bootstrap.d.ts +8 -4
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +207 -76
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/change.d.ts +1 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +4 -2
- package/dist/chat-types.d.ts +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +18 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -2
- package/dist/compile.d.ts +5 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +202 -80
- package/dist/connection.d.ts +5 -141
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +101 -5280
- package/dist/conversation-live.d.ts +136 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +248 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +29 -35
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +838 -840
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +175 -0
- package/dist/durability.d.ts +15 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +4 -3
- package/dist/expectation.d.ts +4 -2
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +33 -11
- package/dist/figures.d.ts +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +11 -4
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +20 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/install.d.ts +56 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +554 -0
- package/dist/job.d.ts +20 -1
- package/dist/job.d.ts.map +1 -1
- package/dist/job.js +26 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +268 -0
- package/dist/listing.d.ts +53 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +176 -0
- package/dist/live.d.ts +4 -4
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +52 -16
- package/dist/locks.d.ts +9 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +61 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +61 -0
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +3 -3
- package/dist/memory.d.ts +3 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +45 -6
- package/dist/messages.d.ts +25 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +89 -16
- package/dist/model.d.ts +1 -7
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -6
- package/dist/models.d.ts +14 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +195 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +12 -17
- package/dist/opened.js +3 -3
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +57 -0
- package/dist/outcome.d.ts +4 -1
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +3 -0
- package/dist/overlay.d.ts +1 -0
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +11 -0
- package/dist/parts.d.ts +60 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +126 -0
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +226 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +272 -0
- package/dist/query.d.ts +10 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/questions.d.ts +34 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +122 -0
- package/dist/reach.d.ts +8 -6
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +159 -100
- package/dist/react.d.ts +11 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +10 -1
- package/dist/read.d.ts +7 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +17 -0
- package/dist/readiness.d.ts +0 -1
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +37 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +171 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +9 -1
- package/dist/refresh.d.ts +1 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +8 -20
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +55 -0
- package/dist/replica.d.ts +7 -7
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +51 -19
- package/dist/room-draft.d.ts +2 -4
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +3 -3
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +217 -0
- package/dist/rows.d.ts +14 -5
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +50 -58
- package/dist/runtime.d.ts +43 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +5 -1
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +21 -20
- package/dist/saves.d.ts +70 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +1005 -0
- package/dist/seed.d.ts +11 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +71 -1
- package/dist/shared.d.ts +1 -6
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +13 -95
- package/dist/shown.d.ts +31 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +292 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +20 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +77 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/rooms.d.ts +44 -0
- package/dist/socket/rooms.d.ts.map +1 -0
- package/dist/socket/rooms.js +90 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +70 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +175 -0
- package/dist/source.d.ts +61 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +0 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -6
- package/dist/store/fences.d.ts +16 -0
- package/dist/store/fences.d.ts.map +1 -0
- package/dist/store/fences.js +26 -0
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +431 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +107 -153
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +143 -396
- package/dist/stored.d.ts +59 -65
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +255 -149
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +532 -0
- package/dist/tables.d.ts +114 -51
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +209 -57
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +4 -4
- package/dist/wire.d.ts +16 -1
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +6 -0
- package/package.json +2 -2
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
package/dist/compile.js
CHANGED
|
@@ -3,11 +3,11 @@ import { binaryRecord } from './binary.js';
|
|
|
3
3
|
import { documentKey, pathOfKey, roomOfKey } from './rows.js';
|
|
4
4
|
import { FROM_START, MAXIMUM_WINDOW } from './windows.js';
|
|
5
5
|
const { all, any, exists, fragment, grouped, joined, listed } = sql;
|
|
6
|
-
const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
|
|
6
|
+
export const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
|
|
7
7
|
function located(alias) {
|
|
8
8
|
return fragment(`(SELECT k.locator FROM replica_keys k WHERE k.key = ${alias}.key)`);
|
|
9
9
|
}
|
|
10
|
-
function within(alias, path) {
|
|
10
|
+
export function within(alias, path) {
|
|
11
11
|
return fragment(`(${alias}.path = ? OR (${alias}.path >= ? AND ${alias}.path < ?))`, [
|
|
12
12
|
path,
|
|
13
13
|
`${path}/`,
|
|
@@ -116,7 +116,18 @@ const GROUP_TIES = {
|
|
|
116
116
|
locale: undefined,
|
|
117
117
|
localeOptions: undefined,
|
|
118
118
|
};
|
|
119
|
-
|
|
119
|
+
const GREATEST = { ...GROUP_ORDER, direction: 'desc', nulls: 'last' };
|
|
120
|
+
const TIMES = {
|
|
121
|
+
created: { value: 'd.created', instant: 'd.created_instant' },
|
|
122
|
+
updated: { value: "(d.change ->> '$.time')", instant: 'd.changed_instant' },
|
|
123
|
+
};
|
|
124
|
+
function subfolderOf(column, prefix) {
|
|
125
|
+
const root = prefix ?? '';
|
|
126
|
+
const base = root === '' ? '' : `${root}/`;
|
|
127
|
+
const rest = `substr(${column}, length(?) + 1)`;
|
|
128
|
+
return fragment(`(CASE WHEN ${column} = ? THEN NULL WHEN instr(${rest}, '/') = 0 THEN ${column} ELSE ? || substr(${rest}, 1, instr(${rest}, '/') - 1) END)`, [root, base, base, base, base]);
|
|
129
|
+
}
|
|
130
|
+
function keyTerm(key, ordering, index, prefix) {
|
|
120
131
|
if (key.of === 'field') {
|
|
121
132
|
const alias = `o${index}`;
|
|
122
133
|
return {
|
|
@@ -133,13 +144,37 @@ function keyTerm(key, ordering, index) {
|
|
|
133
144
|
], ''),
|
|
134
145
|
};
|
|
135
146
|
}
|
|
147
|
+
if (key.of === 'size') {
|
|
148
|
+
return {
|
|
149
|
+
term: {
|
|
150
|
+
ordering,
|
|
151
|
+
kind: fragment("(CASE WHEN d.bytes IS NULL THEN 'null' ELSE 'number' END)"),
|
|
152
|
+
value: fragment('d.bytes'),
|
|
153
|
+
},
|
|
154
|
+
join: null,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (key.of === 'created' || key.of === 'updated') {
|
|
158
|
+
const { value, instant } = TIMES[key.of];
|
|
159
|
+
return {
|
|
160
|
+
term: {
|
|
161
|
+
ordering,
|
|
162
|
+
kind: fragment(`(CASE WHEN ${value} IS NULL THEN 'null' ELSE 'string' END)`),
|
|
163
|
+
value: fragment(value),
|
|
164
|
+
instant: fragment(instant),
|
|
165
|
+
},
|
|
166
|
+
join: null,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
136
169
|
const expression = key.of === 'room'
|
|
137
170
|
? located('d')
|
|
138
171
|
: key.of === 'path'
|
|
139
172
|
? fragment('d.path')
|
|
140
173
|
: key.of === 'type'
|
|
141
174
|
? fragment('d.type')
|
|
142
|
-
:
|
|
175
|
+
: key.of === 'subfolder'
|
|
176
|
+
? subfolderOf('d.folder', prefix)
|
|
177
|
+
: fragment('d.folder');
|
|
143
178
|
return {
|
|
144
179
|
term: {
|
|
145
180
|
ordering,
|
|
@@ -160,16 +195,17 @@ function decoded(kind, value) {
|
|
|
160
195
|
return JSON.parse(value);
|
|
161
196
|
return null;
|
|
162
197
|
}
|
|
198
|
+
function sortedOf(kind, value, instant) {
|
|
199
|
+
return sql.sortValue(kind, decoded(kind, value), instant);
|
|
200
|
+
}
|
|
163
201
|
function sortedValue(row, index) {
|
|
164
|
-
|
|
165
|
-
return sql.sortValue(kind, decoded(kind, row[`v${index}`]), row[`i${index}`]);
|
|
202
|
+
return sortedOf(row[`k${index}`], row[`v${index}`], row[`i${index}`]);
|
|
166
203
|
}
|
|
167
204
|
function decodedKey(key, row, index) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return
|
|
171
|
-
|
|
172
|
-
return row[`v${index}`] ?? null;
|
|
205
|
+
const kind = row[`k${index}`];
|
|
206
|
+
if (key.of === 'field' && (kind === null || kind === undefined))
|
|
207
|
+
return undefined;
|
|
208
|
+
return sortedValue(row, index);
|
|
173
209
|
}
|
|
174
210
|
function instantOf(term) {
|
|
175
211
|
return term.instant ?? fragment('NULL');
|
|
@@ -277,12 +313,11 @@ function sectionsOf(sections, names) {
|
|
|
277
313
|
function documentOf(shape, room, row, linked) {
|
|
278
314
|
const path = row.path;
|
|
279
315
|
const type = row.type;
|
|
280
|
-
const fileId = row.file_id
|
|
281
|
-
const revision = row.revision
|
|
282
|
-
const content = row.content ?? null;
|
|
283
|
-
const unheld = Number(row.unheld) === 1 ? { textHeld: false } : {};
|
|
316
|
+
const fileId = row.file_id;
|
|
317
|
+
const revision = row.revision;
|
|
284
318
|
if (type === null) {
|
|
285
319
|
const binary = row.binary === null ? null : JSON.parse(row.binary);
|
|
320
|
+
const content = row.content ?? null;
|
|
286
321
|
return {
|
|
287
322
|
room,
|
|
288
323
|
path,
|
|
@@ -292,12 +327,13 @@ function documentOf(shape, room, row, linked) {
|
|
|
292
327
|
binaryFile: binaryRecord(path, binary, revision ?? undefined),
|
|
293
328
|
}),
|
|
294
329
|
...(shape.markdown && content !== null ? { markdown: content } : {}),
|
|
295
|
-
...
|
|
330
|
+
...(shape.change ? { change: changeOf(row) } : {}),
|
|
296
331
|
...(shape.fileId ? { fileId } : {}),
|
|
297
332
|
...(shape.revision ? { revision } : {}),
|
|
333
|
+
...heldFacts(shape, row),
|
|
298
334
|
};
|
|
299
335
|
}
|
|
300
|
-
const read =
|
|
336
|
+
const read = shape.sections !== null || shape.preamble ? parse(row.content, path) : null;
|
|
301
337
|
const body = read?.ok === true ? read.document : null;
|
|
302
338
|
const fields = JSON.parse(row.fields ?? '{}');
|
|
303
339
|
return {
|
|
@@ -315,16 +351,21 @@ function documentOf(shape, room, row, linked) {
|
|
|
315
351
|
? {}
|
|
316
352
|
: { sections: sectionsOf(body.sections, shape.sections) }),
|
|
317
353
|
...(shape.preamble && body !== null ? { preamble: body.preamble } : {}),
|
|
318
|
-
...(shape.markdown
|
|
319
|
-
...unheld,
|
|
354
|
+
...(shape.markdown ? { markdown: row.content } : {}),
|
|
320
355
|
...(shape.backlinks ? { backlinks: linked.get(documentKey(room, path)) ?? [] } : {}),
|
|
321
|
-
...(shape.change
|
|
322
|
-
? {
|
|
323
|
-
change: row.change === null ? null : JSON.parse(row.change),
|
|
324
|
-
}
|
|
325
|
-
: {}),
|
|
356
|
+
...(shape.change ? { change: changeOf(row) } : {}),
|
|
326
357
|
...(shape.fileId ? { fileId } : {}),
|
|
327
358
|
...(shape.revision ? { revision } : {}),
|
|
359
|
+
...heldFacts(shape, row),
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
function changeOf(row) {
|
|
363
|
+
return row.change === null ? null : JSON.parse(row.change);
|
|
364
|
+
}
|
|
365
|
+
function heldFacts(shape, row) {
|
|
366
|
+
return {
|
|
367
|
+
...(shape.size ? { size: row.bytes === null ? null : Number(row.bytes) } : {}),
|
|
368
|
+
...(shape.created ? { created: row.created } : {}),
|
|
328
369
|
};
|
|
329
370
|
}
|
|
330
371
|
function backlinksOf(connection, bound, rows) {
|
|
@@ -336,8 +377,8 @@ function backlinksOf(connection, bound, rows) {
|
|
|
336
377
|
held.push(row.path);
|
|
337
378
|
byKey.set(key, held);
|
|
338
379
|
}
|
|
380
|
+
const reach = reached(bound, 's');
|
|
339
381
|
for (const [key, targets] of byKey) {
|
|
340
|
-
const reach = reached(bound, 's');
|
|
341
382
|
const room = bound.rooms.find((one) => one.key === key).locator;
|
|
342
383
|
const found = connection.rows(`SELECT target, path, type, field FROM (SELECT l.target, s.path, s.type, l.field, ROW_NUMBER() OVER (PARTITION BY l.target ORDER BY s.path, l.field) AS rank FROM (SELECT DISTINCT doc, target, field FROM replica_links WHERE key = ? AND kind = 'field' AND target IN (SELECT value FROM json_each(?))) l JOIN replica_entries s ON s.id = l.doc AND ${VISIBLE('s')} WHERE ${reach.sql}) WHERE rank <= ? ORDER BY target, path, field`, [key, JSON.stringify(targets), ...reach.bind, MAXIMUM_WINDOW]);
|
|
343
384
|
for (const row of found) {
|
|
@@ -350,28 +391,25 @@ function backlinksOf(connection, bound, rows) {
|
|
|
350
391
|
return linked;
|
|
351
392
|
}
|
|
352
393
|
function documents(connection, bound, plan, shape, budget) {
|
|
353
|
-
const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index));
|
|
394
|
+
const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index, plan.root.pathPrefix));
|
|
354
395
|
const filter = filtered(bound, plan);
|
|
355
396
|
const cursor = plan.after?.values ?? null;
|
|
356
397
|
const room = located('d');
|
|
357
|
-
const
|
|
398
|
+
const after = cursor === null
|
|
358
399
|
? null
|
|
359
400
|
: (() => {
|
|
360
401
|
const key = cursor[shape.orderBy.length];
|
|
361
|
-
return any([
|
|
402
|
+
return sql.following(terms.map(({ term }, index) => sql.beyond(bound.collate, term, cursor[index])), any([
|
|
362
403
|
fragment(`${room.sql} > ?`, [...room.bind, roomOfKey(key)]),
|
|
363
404
|
fragment(`${room.sql} = ? AND d.path > ?`, [
|
|
364
405
|
...room.bind,
|
|
365
406
|
roomOfKey(key),
|
|
366
407
|
pathOfKey(key),
|
|
367
408
|
]),
|
|
368
|
-
]);
|
|
409
|
+
]));
|
|
369
410
|
})();
|
|
370
|
-
const after = cursor === null || tie === null
|
|
371
|
-
? null
|
|
372
|
-
: sql.following(terms.map(({ term }, index) => sql.beyond(bound.collate, term, cursor[index])), tie);
|
|
373
411
|
const selected = joined([
|
|
374
|
-
fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id, d.
|
|
412
|
+
fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id, d.bytes, d.created'),
|
|
375
413
|
...terms.map(({ term }, index) => joined([
|
|
376
414
|
fragment(`, ${term.kind.sql} AS k${index}`, term.kind.bind),
|
|
377
415
|
fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
|
|
@@ -440,16 +478,18 @@ function withContent(connection, rows, budget) {
|
|
|
440
478
|
.map((row) => [row.id, row.content]));
|
|
441
479
|
return kept.map((row) => ({ ...row, content: held.get(row.id) ?? null }));
|
|
442
480
|
}
|
|
443
|
-
function storedFolders(bound, plan) {
|
|
481
|
+
function storedFolders(bound, plan, subfolder) {
|
|
444
482
|
if (plan.paths !== null || plan.fileIds !== null)
|
|
445
483
|
return null;
|
|
446
484
|
if (plan.hop !== null || plan.backlinks !== null)
|
|
447
485
|
return null;
|
|
486
|
+
if (subfolder && plan.folder !== null)
|
|
487
|
+
return null;
|
|
448
488
|
const whole = bound.rooms.filter(({ locator }) => bound.reach === null || bound.reach.rooms.includes(locator));
|
|
449
489
|
if (whole.length === 0)
|
|
450
490
|
return null;
|
|
451
491
|
const keys = whole.map(({ key }) => key);
|
|
452
|
-
const prefix = plan.root.pathPrefix;
|
|
492
|
+
const prefix = plan.root.pathPrefix ?? '';
|
|
453
493
|
const outside = (bound.reach?.areas ?? []).flatMap((area) => {
|
|
454
494
|
const key = bound.keys.get(area.room);
|
|
455
495
|
if (key === undefined)
|
|
@@ -457,27 +497,51 @@ function storedFolders(bound, plan) {
|
|
|
457
497
|
const fence = fenced('f', key, area, true);
|
|
458
498
|
return [fragment(`NOT ${grouped(fence).sql}`, fence.bind)];
|
|
459
499
|
});
|
|
500
|
+
const under = prefix === ''
|
|
501
|
+
? subfolder
|
|
502
|
+
? [fragment("f.path <> ''")]
|
|
503
|
+
: []
|
|
504
|
+
: [
|
|
505
|
+
subfolder
|
|
506
|
+
? fragment('(f.path >= ? AND f.path < ?)', [`${prefix}/`, `${prefix}0`])
|
|
507
|
+
: within('f', prefix),
|
|
508
|
+
];
|
|
460
509
|
return all([
|
|
461
510
|
fragment(`f.key IN ${listed(keys).sql} AND f.layer = 0 AND f.present = 1`, keys),
|
|
462
511
|
...outside,
|
|
463
|
-
...
|
|
464
|
-
|
|
465
|
-
: [
|
|
466
|
-
fragment('(f.path = ? OR (f.path >= ? AND f.path < ?))', [
|
|
467
|
-
prefix,
|
|
468
|
-
`${prefix}/`,
|
|
469
|
-
`${prefix}0`,
|
|
470
|
-
]),
|
|
471
|
-
]),
|
|
512
|
+
...under,
|
|
513
|
+
...(plan.outside ?? []).map((folder) => fragment(`NOT ${within('f', folder).sql}`, within('f', folder).bind)),
|
|
472
514
|
...(plan.folder === null ? [] : [fragment('f.path = ?', [plan.folder])]),
|
|
473
515
|
]);
|
|
474
516
|
}
|
|
517
|
+
const SIZES = [
|
|
518
|
+
'CASE WHEN d.binary IS NULL THEN 1 ELSE 0 END AS dn',
|
|
519
|
+
'CASE WHEN d.binary IS NULL THEN d.bytes ELSE 0 END AS ds',
|
|
520
|
+
'CASE WHEN d.binary IS NULL THEN 0 ELSE 1 END AS fn',
|
|
521
|
+
'CASE WHEN d.binary IS NULL THEN 0 ELSE d.bytes END AS fs',
|
|
522
|
+
];
|
|
523
|
+
const LATEST = "d.changed_instant || ' ' || (d.change ->> '$.time') AS u";
|
|
524
|
+
function greatestTerm(ordering) {
|
|
525
|
+
return { ordering, kind: fragment('gk'), value: fragment('gv'), instant: fragment('gi') };
|
|
526
|
+
}
|
|
527
|
+
function latestOf(held) {
|
|
528
|
+
if (typeof held !== 'string')
|
|
529
|
+
return null;
|
|
530
|
+
return held.slice(held.indexOf(' ') + 1);
|
|
531
|
+
}
|
|
475
532
|
function groups(connection, bound, plan, shape) {
|
|
533
|
+
const prefix = plan.root.pathPrefix;
|
|
476
534
|
const keyed = shape.groupBy.map((key, index) => {
|
|
477
|
-
const { term, join } = keyTerm(key, GROUP_ORDER, index);
|
|
535
|
+
const { term, join } = keyTerm(key, GROUP_ORDER, index, prefix);
|
|
478
536
|
const kind = fragment(`COALESCE(${term.kind.sql}, 'null')`, term.kind.bind);
|
|
479
537
|
return { term: { ...term, kind }, join };
|
|
480
538
|
});
|
|
539
|
+
const ordering = shape.orderBy.map(({ by }) => by);
|
|
540
|
+
const sized = shape.size || ordering.includes('size');
|
|
541
|
+
const dated = shape.updated || ordering.includes('updated');
|
|
542
|
+
const greatest = shape.greatest === null
|
|
543
|
+
? null
|
|
544
|
+
: keyTerm({ of: 'field', field: shape.greatest }, GREATEST, keyed.length, prefix);
|
|
481
545
|
const filter = filtered(bound, plan);
|
|
482
546
|
const inner = joined([
|
|
483
547
|
fragment('SELECT '),
|
|
@@ -486,57 +550,107 @@ function groups(connection, bound, plan, shape) {
|
|
|
486
550
|
fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
|
|
487
551
|
fragment(`, ${instantOf(term).sql} AS i${index}`, instantOf(term).bind),
|
|
488
552
|
], '')), ', '),
|
|
489
|
-
fragment(', 1 AS n
|
|
490
|
-
...
|
|
553
|
+
fragment(['', '1 AS n', ...(sized ? SIZES : []), ...(dated ? [LATEST] : [])].join(', ')),
|
|
554
|
+
...(greatest === null
|
|
555
|
+
? []
|
|
556
|
+
: [
|
|
557
|
+
fragment(`, ${greatest.term.kind.sql} AS gk`, greatest.term.kind.bind),
|
|
558
|
+
fragment(`, ${greatest.term.value.sql} AS gv`, greatest.term.value.bind),
|
|
559
|
+
fragment(`, ${instantOf(greatest.term).sql} AS gi`, instantOf(greatest.term).bind),
|
|
560
|
+
]),
|
|
561
|
+
fragment(' FROM replica_entries d'),
|
|
562
|
+
...[...keyed, ...(greatest === null ? [] : [greatest])].flatMap(({ join }) => join === null ? [] : [fragment(' '), join]),
|
|
491
563
|
fragment(' WHERE '),
|
|
492
564
|
filter,
|
|
493
565
|
], '');
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
566
|
+
const only = shape.groupBy.length === 1 ? shape.groupBy[0].of : null;
|
|
567
|
+
const subfolder = only === 'subfolder';
|
|
568
|
+
const folders = only === 'folder' || subfolder ? storedFolders(bound, plan, subfolder) : null;
|
|
569
|
+
const folderKey = subfolder ? subfolderOf('f.path', prefix) : fragment('f.path');
|
|
570
|
+
const zeros = [
|
|
571
|
+
...(sized ? ['0', '0', '0', '0'] : []),
|
|
572
|
+
...(dated ? ['NULL'] : []),
|
|
573
|
+
...(greatest === null ? [] : ['NULL', 'NULL', 'NULL']),
|
|
574
|
+
];
|
|
497
575
|
const source = folders === null
|
|
498
576
|
? inner
|
|
499
577
|
: joined([
|
|
500
578
|
inner,
|
|
501
|
-
fragment(
|
|
579
|
+
fragment(` UNION ALL SELECT 'string' AS k0, ${folderKey.sql} AS v0, NULL AS i0, 0 AS n${zeros.map((one) => `, ${one}`).join('')} FROM replica_folders f WHERE `, folderKey.bind),
|
|
502
580
|
folders,
|
|
503
581
|
], '');
|
|
504
|
-
const columns = keyed
|
|
505
|
-
.map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`)
|
|
506
|
-
.join(', ');
|
|
507
582
|
const held = keyed
|
|
508
583
|
.map((_, index) => `k${index}, i${index}, CASE WHEN i${index} IS NULL THEN v${index} END`)
|
|
509
584
|
.join(', ');
|
|
510
|
-
const
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
585
|
+
const ranked = greatest === null
|
|
586
|
+
? source
|
|
587
|
+
: joined([
|
|
588
|
+
fragment(`SELECT *, ROW_NUMBER() OVER (PARTITION BY ${held} ORDER BY `),
|
|
589
|
+
sql.sorted(bound.collate, greatestTerm(GREATEST)),
|
|
590
|
+
fragment(', gv) AS gr FROM ('),
|
|
591
|
+
source,
|
|
592
|
+
fragment(')'),
|
|
593
|
+
], '');
|
|
594
|
+
const columns = [
|
|
595
|
+
...keyed.map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`),
|
|
596
|
+
'sum(n) AS n',
|
|
597
|
+
...(sized ? ['sum(dn) AS dn', 'sum(ds) AS ds', 'sum(fn) AS fn', 'sum(fs) AS fs'] : []),
|
|
598
|
+
...(dated ? ['max(u) AS u'] : []),
|
|
599
|
+
...(greatest === null
|
|
600
|
+
? []
|
|
601
|
+
: ['gk', 'gv', 'gi'].map((column) => `min(CASE WHEN gr = 1 THEN ${column} END) AS ${column}`)),
|
|
602
|
+
].join(', ');
|
|
603
|
+
const outer = (index, order) => ({
|
|
604
|
+
ordering: order,
|
|
517
605
|
kind: fragment(`k${index}`),
|
|
518
606
|
value: fragment(`v${index}`),
|
|
519
607
|
});
|
|
520
|
-
const
|
|
521
|
-
|
|
522
|
-
|
|
608
|
+
const termOf = (by, order) => {
|
|
609
|
+
if (by === 'count')
|
|
610
|
+
return { ordering: order, kind: fragment("'number'"), value: fragment('n') };
|
|
611
|
+
if (by === 'size') {
|
|
612
|
+
return { ordering: order, kind: fragment("'number'"), value: fragment('(ds + fs)') };
|
|
613
|
+
}
|
|
614
|
+
if (by === 'updated') {
|
|
615
|
+
return {
|
|
616
|
+
ordering: order,
|
|
617
|
+
kind: fragment("(CASE WHEN u IS NULL THEN 'null' ELSE 'string' END)"),
|
|
618
|
+
value: fragment("substr(u, instr(u, ' ') + 1)"),
|
|
619
|
+
instant: fragment("substr(u, 1, instr(u, ' ') - 1)"),
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
if (by === 'greatest')
|
|
623
|
+
return greatestTerm(order);
|
|
624
|
+
return { ...outer(by, order), instant: fragment(`i${by}`) };
|
|
625
|
+
};
|
|
626
|
+
const valueOf = (row, by) => {
|
|
627
|
+
if (by === 'count')
|
|
628
|
+
return Number(row.n);
|
|
629
|
+
if (by === 'size')
|
|
630
|
+
return Number(row.ds) + Number(row.fs);
|
|
631
|
+
if (by === 'updated') {
|
|
632
|
+
const text = latestOf(row.u);
|
|
633
|
+
return text === null ? null : sql.sortValue('string', text, row.u.split(' ')[0]);
|
|
634
|
+
}
|
|
635
|
+
if (by === 'greatest')
|
|
636
|
+
return sortedOf(row.gk, row.gv, row.gi);
|
|
637
|
+
return sortedValue(row, by);
|
|
638
|
+
};
|
|
639
|
+
const ordered = shape.orderBy.map(({ by, direction, nulls }) => termOf(by, { ...GROUP_ORDER, direction, nulls: nulls ?? GROUP_ORDER.nulls }));
|
|
523
640
|
const ties = keyed.flatMap((_, index) => [
|
|
524
641
|
{ ...outer(index, GROUP_TIES), total: true },
|
|
525
642
|
{ ordering: GROUP_TIES, kind: fragment("'string'"), value: fragment(`k${index}`) },
|
|
526
643
|
]);
|
|
527
644
|
const cursor = plan.after?.values ?? null;
|
|
528
|
-
const
|
|
645
|
+
const after = cursor === null
|
|
529
646
|
? null
|
|
530
|
-
:
|
|
531
|
-
value,
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
.slice(0, -1)
|
|
538
|
-
.map((term, index) => sql.beyond(bound.collate, term, tieValues[index])), sql.beyond(bound.collate, ties.at(-1), tieValues.at(-1)).beyond));
|
|
539
|
-
const grouping = joined([fragment(`SELECT ${columns}, sum(n) AS n FROM (`), source, fragment(`) GROUP BY ${held}`)], '');
|
|
647
|
+
: (() => {
|
|
648
|
+
const tieValues = cursor[shape.orderBy.length].flatMap((value) => [value, heldKind(value ?? null)]);
|
|
649
|
+
return sql.following(ordered.map((term, index) => sql.beyond(bound.collate, term, cursor[index])), sql.following(ties
|
|
650
|
+
.slice(0, -1)
|
|
651
|
+
.map((term, index) => sql.beyond(bound.collate, term, tieValues[index])), sql.beyond(bound.collate, ties.at(-1), tieValues.at(-1)).beyond));
|
|
652
|
+
})();
|
|
653
|
+
const grouping = joined([fragment(`SELECT ${columns} FROM (`), ranked, fragment(`) GROUP BY ${held}`)], '');
|
|
540
654
|
const windowed = joined([
|
|
541
655
|
fragment('SELECT * FROM ('),
|
|
542
656
|
grouping,
|
|
@@ -549,16 +663,24 @@ function groups(connection, bound, plan, shape) {
|
|
|
549
663
|
const rows = connection.rows(windowed.sql, windowed.bind);
|
|
550
664
|
const kept = plan.limit === null ? rows : rows.slice(0, plan.limit);
|
|
551
665
|
const keyOf = (row) => keyed.map((_, index) => decoded(row[`k${index}`], row[`v${index}`]));
|
|
552
|
-
const found = kept.map((row) => ({
|
|
666
|
+
const found = kept.map((row) => ({
|
|
667
|
+
key: keyOf(row),
|
|
668
|
+
count: Number(row.n),
|
|
669
|
+
...(shape.size
|
|
670
|
+
? {
|
|
671
|
+
documents: { count: Number(row.dn), size: Number(row.ds) },
|
|
672
|
+
files: { count: Number(row.fn), size: Number(row.fs) },
|
|
673
|
+
}
|
|
674
|
+
: {}),
|
|
675
|
+
...(shape.updated ? { updated: latestOf(row.u) } : {}),
|
|
676
|
+
...(shape.greatest === null ? {} : { greatest: decoded(row.gk, row.gv) }),
|
|
677
|
+
}));
|
|
553
678
|
const last = kept.at(-1);
|
|
554
679
|
const next = plan.limit === null || rows.length <= plan.limit
|
|
555
680
|
? undefined
|
|
556
681
|
: last === undefined
|
|
557
682
|
? (plan.after?.text ?? FROM_START)
|
|
558
|
-
: cursorOf([
|
|
559
|
-
...shape.orderBy.map(({ by }) => by === 'count' ? Number(last.n) : sortedValue(last, by)),
|
|
560
|
-
keyOf(last),
|
|
561
|
-
]);
|
|
683
|
+
: cursorOf([...shape.orderBy.map(({ by }) => valueOf(last, by)), keyOf(last)]);
|
|
562
684
|
const total = plan.total
|
|
563
685
|
? Number(connection.rows(joined([fragment('SELECT count(*) AS held FROM ('), grouping, fragment(')')], '').sql, grouping.bind)[0].held)
|
|
564
686
|
: undefined;
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,53 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type TypesResult } from './model.js';
|
|
3
|
-
import { type Observation } from './observation.js';
|
|
4
|
-
import { type DocumentResult, type GroupResult, type PendingResult } from './query.js';
|
|
5
|
-
import { type EntrySeed } from './seed.js';
|
|
6
|
-
import { type SearchRequest, type SearchResult } from './search.js';
|
|
7
|
-
import { type Adapter, type Authorization, type Member, type ProviderRefusal, type ServiceMode } from './adapter.js';
|
|
8
|
-
import { type ChatDraftSurface, type ConversationAgent, type ConversationEntry, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
|
|
9
|
-
import { type WrittenBy } from './change.js';
|
|
10
|
-
import type { Open } from './open.js';
|
|
11
|
-
import { type AttachAnswer, type BinaryLinkAnswer, type CallResult, type HeldBinaryAnswer, type HeldShownAnswer, type HistoryAnswer, type QueueEntry, type Resolution } from './outcome.js';
|
|
12
|
-
import { type Recovery } from './recovery.js';
|
|
13
|
-
import { type SaveRefusal } from './save.js';
|
|
14
|
-
import { type RoomDraft, type RoomDraftParts, type RoomDraftWrite } from './room-draft.js';
|
|
15
|
-
import { type SyncStatus } from './status.js';
|
|
1
|
+
import type { Adapter, Authorization } from './adapter.js';
|
|
16
2
|
import { type RuntimeShell } from './durability.js';
|
|
17
|
-
import { type
|
|
18
|
-
import type
|
|
19
|
-
import { type
|
|
20
|
-
export type AppTypedSelection = {
|
|
21
|
-
roots: readonly string[];
|
|
22
|
-
model: TypesResult;
|
|
23
|
-
};
|
|
24
|
-
export type AppRoom = {
|
|
25
|
-
name: string;
|
|
26
|
-
locator: string;
|
|
27
|
-
handle: string;
|
|
28
|
-
operations: import('./adapter.js').OperationScopes;
|
|
29
|
-
replica: import('./adapter.js').ReplicaAdmission;
|
|
30
|
-
model: TypesResult;
|
|
31
|
-
typedSelection: AppTypedSelection | null;
|
|
32
|
-
providerOwnedPaths: readonly string[];
|
|
33
|
-
roomVersion: string | null;
|
|
34
|
-
documents: number;
|
|
35
|
-
synchronizationAvailable: boolean;
|
|
36
|
-
refusal: ProviderRefusal | null;
|
|
37
|
-
locked: boolean;
|
|
38
|
-
};
|
|
39
|
-
export type RoomSchemas = {
|
|
40
|
-
collection: TypesResult;
|
|
41
|
-
typedSelection: TypesResult | null;
|
|
42
|
-
};
|
|
43
|
-
type RefusalReason = 'missing-required-guarantee' | 'revoked-authorization';
|
|
44
|
-
export type ConnectionRefusalCode = Open<RefusalReason>;
|
|
45
|
-
export type ConnectionRefusal = {
|
|
46
|
-
code: ConnectionRefusalCode;
|
|
47
|
-
retryable: boolean;
|
|
48
|
-
reauthorizationOffered: boolean;
|
|
49
|
-
refusal: ProviderRefusal | null;
|
|
50
|
-
};
|
|
3
|
+
import { type Recovery } from './recovery.js';
|
|
4
|
+
import { type RuntimeDatabase } from './store.js';
|
|
5
|
+
import { type ComposedRuntime } from './surface.js';
|
|
51
6
|
export type MdRuntimeOptions = {
|
|
52
7
|
adapter: Adapter;
|
|
53
8
|
shell: RuntimeShell;
|
|
@@ -56,98 +11,7 @@ export type MdRuntimeOptions = {
|
|
|
56
11
|
signal?: AbortSignal;
|
|
57
12
|
recovery?: Recovery;
|
|
58
13
|
usableWhenHeld?: readonly string[];
|
|
59
|
-
|
|
60
|
-
export type SaveResult = {
|
|
61
|
-
outcome: 'saved';
|
|
62
|
-
identifier: string;
|
|
63
|
-
} | ({
|
|
64
|
-
outcome: 'refused';
|
|
65
|
-
} & SaveRefusal);
|
|
66
|
-
export type SavedRoomDraft = {
|
|
67
|
-
readonly path: string;
|
|
68
|
-
readonly revision: string;
|
|
69
|
-
};
|
|
70
|
-
export type SavedParts = {
|
|
71
|
-
readonly path: string;
|
|
72
|
-
readonly parts: RoomDraftParts;
|
|
73
|
-
};
|
|
74
|
-
export type RoomDraftSurface = {
|
|
75
|
-
list(): Promise<readonly RoomDraft[]>;
|
|
76
|
-
read(room: string, path: string): Promise<RoomDraft | null>;
|
|
77
|
-
write(room: string, path: string, revision: string | null, parts: unknown, next?: string): Promise<RoomDraftWrite>;
|
|
78
|
-
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
79
|
-
};
|
|
80
|
-
export type PresentationSurface = {
|
|
81
|
-
read(app: string): Promise<unknown>;
|
|
82
|
-
write(app: string, value: unknown): Promise<void>;
|
|
83
|
-
edit(app: string, members: Readonly<Record<string, unknown>>): Promise<void>;
|
|
84
|
-
};
|
|
85
|
-
export type BinaryFileSurface = {
|
|
86
|
-
read(room: string, path: string, revision?: string): Promise<HeldBinaryAnswer>;
|
|
87
|
-
link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
|
|
88
|
-
show(room: string, path: string, revision?: string): Promise<HeldShownAnswer>;
|
|
89
|
-
attach(room: string, file: File): Promise<AttachAnswer>;
|
|
90
|
-
part(file: string, part: number): Promise<Uint8Array | null>;
|
|
91
|
-
};
|
|
92
|
-
export type HistoryQuery = {
|
|
93
|
-
revision?: string;
|
|
94
|
-
pageToken?: string;
|
|
95
|
-
};
|
|
96
|
-
export type MdRuntime = {
|
|
97
|
-
loaded(): Promise<void>;
|
|
98
|
-
rooms(): Promise<readonly AppRoom[]>;
|
|
99
|
-
query: {
|
|
100
|
-
(query: DocumentQuery): Promise<DocumentResult | PendingResult>;
|
|
101
|
-
(query: GroupQuery): Promise<GroupResult | PendingResult>;
|
|
102
|
-
};
|
|
103
|
-
search(request: SearchRequest): Promise<SearchResult>;
|
|
104
|
-
types(locator: string): RoomSchemas;
|
|
105
|
-
roomDraft: RoomDraftSurface;
|
|
106
|
-
conversation: ConversationSurface;
|
|
107
|
-
chatDraft: ChatDraftSurface;
|
|
108
|
-
presentation: PresentationSurface;
|
|
109
|
-
save(room: string, roomDrafts: readonly SavedRoomDraft[], writtenBy?: WrittenBy): Promise<SaveResult>;
|
|
110
|
-
saveParts(room: string, parts: readonly SavedParts[], writtenBy?: WrittenBy): Promise<SaveResult>;
|
|
111
|
-
history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryAnswer>;
|
|
112
|
-
resolve(room: string, path: string, destination: string): Promise<Resolution>;
|
|
113
|
-
binaryFile: BinaryFileSurface;
|
|
114
|
-
call(name: string, input: unknown): Promise<CallResult>;
|
|
115
|
-
reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
|
|
116
|
-
log(): string;
|
|
117
|
-
persistence(): boolean;
|
|
118
|
-
retry(): Promise<void>;
|
|
119
|
-
cleanUp(): Promise<number>;
|
|
120
|
-
observe: {
|
|
121
|
-
(topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
|
|
122
|
-
(topic: 'readiness'): Promise<Observation<Readiness>>;
|
|
123
|
-
(topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
|
|
124
|
-
(topic: 'storage-loss'): Promise<Observation<string | null>>;
|
|
125
|
-
(topic: 'sync-status'): Promise<Observation<SyncStatus>>;
|
|
126
|
-
(topic: 'service-mode'): Promise<Observation<ServiceMode>>;
|
|
127
|
-
(topic: 'member'): Promise<Observation<Member | null>>;
|
|
128
|
-
(topic: 'authority-changes'): Promise<Observation<number>>;
|
|
129
|
-
(topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult | PendingResult>>;
|
|
130
|
-
(topic: 'query', query: GroupQuery): Promise<Observation<GroupResult | PendingResult>>;
|
|
131
|
-
(topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
|
|
132
|
-
(topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
|
|
133
|
-
(topic: 'presentation', app: string): Promise<Observation<unknown>>;
|
|
134
|
-
(topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
|
|
135
|
-
(topic: 'conversations'): Promise<Observation<readonly ConversationEntry[]>>;
|
|
136
|
-
(topic: 'agents'): Promise<Observation<readonly ConversationAgent[]>>;
|
|
137
|
-
};
|
|
138
|
-
reauthorize(): Promise<void>;
|
|
139
|
-
};
|
|
140
|
-
export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents';
|
|
141
|
-
export type ReadinessPort = {
|
|
142
|
-
readonly target: string;
|
|
143
|
-
readonly code: CodeAvailability;
|
|
144
|
-
};
|
|
145
|
-
export type ComposedRuntime = RuntimeView & {
|
|
146
|
-
seed(entry: EntrySeed): void;
|
|
147
|
-
stop(): Promise<void>;
|
|
148
|
-
persisted(answer: Persistence): void;
|
|
149
|
-
within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
|
|
14
|
+
build?: string;
|
|
150
15
|
};
|
|
151
16
|
export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
|
|
152
|
-
export {};
|
|
153
17
|
//# sourceMappingURL=connection.d.ts.map
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAG/E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAUrE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK9D,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA+FzE"}
|