@agentshouse/mdruntime 0.1.0-caee7332d2235 → 0.1.0-caf080a9a9c60
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 +19 -16
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +318 -0
- package/dist/act-lanes.d.ts +29 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +177 -0
- package/dist/actions.d.ts +25 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +261 -0
- package/dist/adapter.d.ts +162 -122
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +7 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +40 -41
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +30 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +309 -113
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +10 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -94
- package/dist/change.d.ts +32 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +14 -3
- 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 +33 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -21
- package/dist/collection.d.ts +29 -22
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +47 -354
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +724 -0
- package/dist/connection.d.ts +7 -137
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -3623
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +1 -4
- package/dist/conversation-live.d.ts +138 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +249 -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 +66 -49
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +962 -799
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +153 -0
- package/dist/durability.d.ts +19 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -29
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +7 -122
- 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 +20 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +103 -45
- package/dist/identity.d.ts +0 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -6
- package/dist/index.d.ts +39 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +539 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +279 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +33 -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 +50 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +17 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +272 -118
- package/dist/messages.d.ts +49 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +150 -0
- package/dist/model.d.ts +8 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -23
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +156 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +15 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +98 -14
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +59 -0
- package/dist/outcome.d.ts +47 -9
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +56 -2
- package/dist/overlay.d.ts +7 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +69 -169
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +3 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +10 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +233 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +285 -0
- package/dist/query.d.ts +21 -207
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -493
- package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +11 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +465 -0
- package/dist/reach.d.ts +20 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +306 -111
- package/dist/react.d.ts +15 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/{chat/read.d.ts → read.d.ts} +2 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/{chat/read.js → read.js} +4 -0
- package/dist/readiness.d.ts +13 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -83
- package/dist/recovery.d.ts +5 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +65 -8
- package/dist/refresh.d.ts +18 -15
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -79
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +50 -39
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +319 -208
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +28 -11
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +194 -117
- 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 +31 -31
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -125
- package/dist/runtime.d.ts +36 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +43 -50
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +661 -228
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +413 -0
- package/dist/search.d.ts +12 -95
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -266
- 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 +4 -9
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +61 -120
- package/dist/shown.d.ts +32 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -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 +21 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +80 -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/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 +68 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +171 -0
- package/dist/source.d.ts +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +4 -5
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -7
- 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 +430 -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 +111 -166
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +158 -797
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -0
- 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 +540 -0
- package/dist/tables.d.ts +412 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +737 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +1 -1
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +31 -20
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +1 -16
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -79
- package/dist/wire.d.ts +72 -8
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +24 -5
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/earlier.d.ts +0 -10
- package/dist/chat/earlier.d.ts.map +0 -1
- package/dist/chat/earlier.js +0 -54
- package/dist/chat/input.d.ts +0 -9
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -99
- package/dist/chat/kit.d.ts +0 -61
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -27
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -99
- package/dist/chat/markdown.d.ts +0 -21
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -246
- package/dist/chat/message.d.ts +0 -6
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -192
- package/dist/chat/messages.d.ts +0 -22
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -171
- package/dist/chat/name.d.ts +0 -6
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -11
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -17
- package/dist/chat/overlay.d.ts +0 -31
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -97
- package/dist/chat/parts.d.ts +0 -57
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -119
- package/dist/chat/pieces.d.ts +0 -62
- package/dist/chat/pieces.d.ts.map +0 -1
- package/dist/chat/pieces.js +0 -1110
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -63
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -630
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -69
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/ready.d.ts +0 -34
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- package/dist/chat/steady.d.ts +0 -3
- package/dist/chat/steady.d.ts.map +0 -1
- package/dist/chat/steady.js +0 -26
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -302
- package/dist/chat.d.ts +0 -14
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/read-side.d.ts +0 -27
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -826
package/dist/room-draft.js
CHANGED
|
@@ -1,60 +1,69 @@
|
|
|
1
|
-
import { apply, equalValue, frontmatterValue, parse, serialize, } from '@agentshouse/mdmodel';
|
|
1
|
+
import { apply, create, equalValue, frontmatterValue, parse, serialize, } from '@agentshouse/mdmodel';
|
|
2
|
+
import { governing } from './collection.js';
|
|
2
3
|
import { runtimeError } from './failure.js';
|
|
3
|
-
import {
|
|
4
|
+
import { sha256 } from './digest.js';
|
|
4
5
|
import { binaryLocalId } from './identity.js';
|
|
5
6
|
import { normalize } from './paths.js';
|
|
6
|
-
export function returnedBy(
|
|
7
|
-
return { kind, code:
|
|
7
|
+
export function returnedBy() {
|
|
8
|
+
return { kind: 'withdrawn', code: 'withdrawn', fields: {}, retryable: false };
|
|
8
9
|
}
|
|
9
10
|
export function staleWrite(current) {
|
|
10
|
-
return { outcome: 'stale',
|
|
11
|
+
return { outcome: 'stale', current };
|
|
11
12
|
}
|
|
12
|
-
function malformed() {
|
|
13
|
-
throw runtimeError('room-draft-malformed');
|
|
13
|
+
function malformed(at, needs) {
|
|
14
|
+
throw runtimeError('room-draft-malformed', at === undefined ? 'room-draft-malformed' : `room-draft-malformed at ${at}: ${needs}`);
|
|
14
15
|
}
|
|
15
16
|
function plain(value) {
|
|
16
17
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
17
18
|
}
|
|
18
|
-
function text(value) {
|
|
19
|
-
return typeof value === 'string' ? value : malformed();
|
|
19
|
+
function text(value, at) {
|
|
20
|
+
return typeof value === 'string' ? value : malformed(at, 'text');
|
|
20
21
|
}
|
|
21
|
-
function optionalText(value) {
|
|
22
|
-
return value === undefined ? undefined : text(value);
|
|
22
|
+
function optionalText(value, at) {
|
|
23
|
+
return value === undefined ? undefined : text(value, at);
|
|
23
24
|
}
|
|
24
|
-
function markdownBase(value) {
|
|
25
|
-
return value === null ? null : optionalText(value);
|
|
25
|
+
function markdownBase(value, at) {
|
|
26
|
+
return value === null ? null : optionalText(value, at);
|
|
26
27
|
}
|
|
27
|
-
function entries(value, each) {
|
|
28
|
+
function entries(value, at, each) {
|
|
28
29
|
if (!plain(value))
|
|
29
|
-
malformed();
|
|
30
|
+
malformed(at, 'an object of named values');
|
|
30
31
|
const read = {};
|
|
31
32
|
for (const [name, item] of Object.entries(value))
|
|
32
|
-
read[name] = each(item);
|
|
33
|
+
read[name] = each(item, `${at}.${name}`);
|
|
33
34
|
return read;
|
|
34
35
|
}
|
|
35
|
-
function
|
|
36
|
+
function frontmatter(item, at) {
|
|
37
|
+
return frontmatterValue(item) ? item : malformed(at, 'a frontmatter value');
|
|
38
|
+
}
|
|
39
|
+
function fieldValue(value, at) {
|
|
36
40
|
if (value === null)
|
|
37
41
|
return null;
|
|
38
42
|
if (!plain(value) || !Object.hasOwn(value, 'value') || !frontmatterValue(value.value)) {
|
|
39
|
-
malformed();
|
|
43
|
+
malformed(at, '{ value } with a frontmatter value, or null where the document lacks it');
|
|
40
44
|
}
|
|
41
45
|
return { value: value.value };
|
|
42
46
|
}
|
|
43
|
-
function textPart(value) {
|
|
47
|
+
function textPart(value, at) {
|
|
44
48
|
if (!plain(value))
|
|
45
|
-
malformed();
|
|
46
|
-
const base = optionalText(value.base);
|
|
47
|
-
return { value: text(value.value), ...(base === undefined ? {} : { base }) };
|
|
49
|
+
malformed(at, '{ value, base }');
|
|
50
|
+
const base = optionalText(value.base, `${at}.base`);
|
|
51
|
+
return { value: text(value.value, `${at}.value`), ...(base === undefined ? {} : { base }) };
|
|
48
52
|
}
|
|
49
|
-
function creationOf(value) {
|
|
53
|
+
function creationOf(value, at) {
|
|
50
54
|
if (!plain(value))
|
|
51
|
-
malformed();
|
|
55
|
+
malformed(at, '{ type, fields, sections }, or { markdown }');
|
|
52
56
|
if (Object.hasOwn(value, 'markdown'))
|
|
53
|
-
return { markdown: text(value.markdown) };
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
return { markdown: text(value.markdown, `${at}.markdown`) };
|
|
58
|
+
if (typeof value.type !== 'string')
|
|
59
|
+
malformed(`${at}.type`, 'a type name, or markdown in place of type, fields and sections');
|
|
60
|
+
return {
|
|
61
|
+
type: value.type,
|
|
62
|
+
fields: entries(value.fields, `${at}.fields`, frontmatter),
|
|
63
|
+
sections: entries(value.sections, `${at}.sections`, text),
|
|
64
|
+
};
|
|
56
65
|
}
|
|
57
|
-
const PART_NAMES =
|
|
66
|
+
const PART_NAMES = [
|
|
58
67
|
'fields',
|
|
59
68
|
'sections',
|
|
60
69
|
'preamble',
|
|
@@ -63,47 +72,57 @@ const PART_NAMES = new Set([
|
|
|
63
72
|
'move',
|
|
64
73
|
'removal',
|
|
65
74
|
'file',
|
|
66
|
-
]
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
];
|
|
76
|
+
const NAMED_PARTS = `a part named ${PART_NAMES.slice(0, -1).join(', ')} or ${PART_NAMES.slice(-1).join('')}`;
|
|
77
|
+
export function readParts(value, path) {
|
|
78
|
+
if (!plain(value))
|
|
79
|
+
malformed(path, 'an object of parts');
|
|
80
|
+
const unknown = Object.keys(value).find((name) => !PART_NAMES.includes(name));
|
|
81
|
+
if (unknown !== undefined)
|
|
82
|
+
malformed(`${path} ${unknown}`, NAMED_PARTS);
|
|
70
83
|
const parts = {};
|
|
71
84
|
if (value.fields !== undefined) {
|
|
72
|
-
parts.fields = entries(value.fields, (item) => {
|
|
85
|
+
parts.fields = entries(value.fields, `${path} fields`, (item, at) => {
|
|
73
86
|
if (!plain(item) || !Object.hasOwn(item, 'value') || !frontmatterValue(item.value)) {
|
|
74
|
-
malformed();
|
|
87
|
+
malformed(at, '{ value, base } with a frontmatter value');
|
|
75
88
|
}
|
|
76
89
|
return item.base === undefined
|
|
77
90
|
? { value: item.value }
|
|
78
|
-
: { value: item.value, base: fieldValue(item.base) };
|
|
91
|
+
: { value: item.value, base: fieldValue(item.base, `${at}.base`) };
|
|
79
92
|
});
|
|
80
93
|
}
|
|
81
94
|
if (value.sections !== undefined)
|
|
82
|
-
parts.sections = entries(value.sections, textPart);
|
|
95
|
+
parts.sections = entries(value.sections, `${path} sections`, textPart);
|
|
83
96
|
if (value.preamble !== undefined)
|
|
84
|
-
parts.preamble = textPart(value.preamble);
|
|
97
|
+
parts.preamble = textPart(value.preamble, `${path} preamble`);
|
|
85
98
|
if (value.markdown !== undefined)
|
|
86
|
-
parts.markdown = textPart(value.markdown);
|
|
99
|
+
parts.markdown = textPart(value.markdown, `${path} markdown`);
|
|
87
100
|
if (value.creation !== undefined)
|
|
88
|
-
parts.creation = creationOf(value.creation);
|
|
101
|
+
parts.creation = creationOf(value.creation, `${path} creation`);
|
|
89
102
|
if (value.move !== undefined) {
|
|
90
103
|
if (!plain(value.move))
|
|
91
|
-
malformed();
|
|
92
|
-
const base = markdownBase(value.move.base);
|
|
93
|
-
|
|
104
|
+
malformed(`${path} move`, '{ to, room, base }');
|
|
105
|
+
const base = markdownBase(value.move.base, `${path} move.base`);
|
|
106
|
+
const room = optionalText(value.move.room, `${path} move.room`);
|
|
107
|
+
parts.move = {
|
|
108
|
+
to: text(value.move.to, `${path} move.to`),
|
|
109
|
+
...(room === undefined ? {} : { room }),
|
|
110
|
+
...(base === undefined ? {} : { base }),
|
|
111
|
+
};
|
|
94
112
|
}
|
|
95
113
|
if (value.removal !== undefined) {
|
|
96
114
|
if (!plain(value.removal))
|
|
97
|
-
malformed();
|
|
98
|
-
const base = markdownBase(value.removal.base);
|
|
115
|
+
malformed(`${path} removal`, '{ base }');
|
|
116
|
+
const base = markdownBase(value.removal.base, `${path} removal.base`);
|
|
99
117
|
parts.removal = base === undefined ? {} : { base };
|
|
100
118
|
}
|
|
101
119
|
if (value.file !== undefined) {
|
|
102
120
|
if (!plain(value.file) || !(value.file.blob instanceof Blob))
|
|
103
|
-
malformed();
|
|
121
|
+
malformed(`${path} file`, '{ blob, base } with a Blob');
|
|
104
122
|
if (Object.keys(value).length > 1)
|
|
105
123
|
throw runtimeError('room-draft-file-exclusive');
|
|
106
|
-
|
|
124
|
+
const base = markdownBase(value.file.base, `${path} file.base`);
|
|
125
|
+
parts.file = base === undefined ? { blob: value.file.blob } : { blob: value.file.blob, base };
|
|
107
126
|
}
|
|
108
127
|
return parts;
|
|
109
128
|
}
|
|
@@ -120,11 +139,51 @@ function kept(prior, base) {
|
|
|
120
139
|
throw runtimeError('room-draft-base-missing');
|
|
121
140
|
return base;
|
|
122
141
|
}
|
|
142
|
+
function movePart(current, move) {
|
|
143
|
+
return {
|
|
144
|
+
to: move.to,
|
|
145
|
+
...(move.room === undefined ? {} : { room: move.room }),
|
|
146
|
+
base: kept(current, move.base),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
123
149
|
function editsText(parts) {
|
|
124
150
|
return (parts.preamble !== undefined ||
|
|
125
151
|
named(parts.fields).length > 0 ||
|
|
126
152
|
named(parts.sections).length > 0);
|
|
127
153
|
}
|
|
154
|
+
function partNames(parts) {
|
|
155
|
+
const names = [];
|
|
156
|
+
for (const [name, part] of Object.entries(parts)) {
|
|
157
|
+
if (name === 'preamble' || name === 'markdown')
|
|
158
|
+
names.push(name);
|
|
159
|
+
else if ((name === 'fields' || name === 'sections') && plain(part))
|
|
160
|
+
names.push(...Object.keys(part).map((one) => `${name}/${one}`));
|
|
161
|
+
else
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
return names.sort().join('\u0000');
|
|
165
|
+
}
|
|
166
|
+
function withBaseOf(prior, part) {
|
|
167
|
+
return plain(part) && plain(prior) && Object.hasOwn(prior, 'base')
|
|
168
|
+
? { ...part, base: prior.base }
|
|
169
|
+
: part;
|
|
170
|
+
}
|
|
171
|
+
export function gatheredParts(earlier, later) {
|
|
172
|
+
if (!plain(earlier) || !plain(later))
|
|
173
|
+
return null;
|
|
174
|
+
const named = partNames(earlier);
|
|
175
|
+
if (named === null || named !== partNames(later))
|
|
176
|
+
return null;
|
|
177
|
+
return Object.fromEntries(Object.entries(later).map(([name, part]) => [
|
|
178
|
+
name,
|
|
179
|
+
name === 'fields' || name === 'sections'
|
|
180
|
+
? Object.fromEntries(Object.entries(part).map(([one, value]) => [
|
|
181
|
+
one,
|
|
182
|
+
withBaseOf(earlier[name][one], value),
|
|
183
|
+
]))
|
|
184
|
+
: withBaseOf(earlier[name], part),
|
|
185
|
+
]));
|
|
186
|
+
}
|
|
128
187
|
export function held(current, parts, file) {
|
|
129
188
|
if (parts.markdown !== undefined && editsText(parts)) {
|
|
130
189
|
throw runtimeError('room-draft-markdown-exclusive');
|
|
@@ -144,9 +203,7 @@ export function held(current, parts, file) {
|
|
|
144
203
|
}
|
|
145
204
|
return {
|
|
146
205
|
file: current.file,
|
|
147
|
-
...(parts.move === undefined
|
|
148
|
-
? {}
|
|
149
|
-
: { move: { to: parts.move.to, base: kept(current.move, parts.move.base) } }),
|
|
206
|
+
...(parts.move === undefined ? {} : { move: movePart(current.move, parts.move) }),
|
|
150
207
|
...(parts.removal === undefined
|
|
151
208
|
? {}
|
|
152
209
|
: { removal: { base: kept(current.removal, parts.removal.base) } }),
|
|
@@ -181,9 +238,8 @@ export function held(current, parts, file) {
|
|
|
181
238
|
}
|
|
182
239
|
if (parts.creation !== undefined)
|
|
183
240
|
next.creation = parts.creation;
|
|
184
|
-
if (parts.move !== undefined)
|
|
185
|
-
next.move =
|
|
186
|
-
}
|
|
241
|
+
if (parts.move !== undefined)
|
|
242
|
+
next.move = movePart(current?.move, parts.move);
|
|
187
243
|
if (parts.removal !== undefined) {
|
|
188
244
|
next.removal = { base: kept(current?.removal, parts.removal.base) };
|
|
189
245
|
}
|
|
@@ -200,8 +256,10 @@ export function underneath(parts, path, visible) {
|
|
|
200
256
|
const markdown = visible?.documents[path] ?? null;
|
|
201
257
|
const document = visible?.collection.document(path);
|
|
202
258
|
const report = {};
|
|
259
|
+
const unread = document?.type !== undefined &&
|
|
260
|
+
governing(visible.collection.composition, path).status === 'unavailable';
|
|
203
261
|
const fields = {};
|
|
204
|
-
for (const [name, part] of named(parts.fields)) {
|
|
262
|
+
for (const [name, part] of unread ? [] : named(parts.fields)) {
|
|
205
263
|
const current = document !== undefined && Object.hasOwn(document.fields, name)
|
|
206
264
|
? { value: document.fields[name] }
|
|
207
265
|
: null;
|
|
@@ -211,7 +269,7 @@ export function underneath(parts, path, visible) {
|
|
|
211
269
|
if (Object.keys(fields).length > 0)
|
|
212
270
|
report.fields = fields;
|
|
213
271
|
const sections = {};
|
|
214
|
-
for (const [name, part] of named(parts.sections)) {
|
|
272
|
+
for (const [name, part] of unread ? [] : named(parts.sections)) {
|
|
215
273
|
const current = document !== undefined && Object.hasOwn(document.sections, name)
|
|
216
274
|
? document.sections[name]
|
|
217
275
|
: null;
|
|
@@ -221,8 +279,9 @@ export function underneath(parts, path, visible) {
|
|
|
221
279
|
if (Object.keys(sections).length > 0)
|
|
222
280
|
report.sections = sections;
|
|
223
281
|
const preamble = document?.preamble ?? null;
|
|
224
|
-
if (parts.preamble !== undefined && preamble !== parts.preamble.base)
|
|
282
|
+
if (!unread && parts.preamble !== undefined && preamble !== parts.preamble.base) {
|
|
225
283
|
report.preamble = preamble;
|
|
284
|
+
}
|
|
226
285
|
if (parts.markdown !== undefined && markdown !== parts.markdown.base)
|
|
227
286
|
report.markdown = markdown;
|
|
228
287
|
if (parts.creation !== undefined && markdown !== null)
|
|
@@ -240,29 +299,32 @@ export function underneath(parts, path, visible) {
|
|
|
240
299
|
}
|
|
241
300
|
const UNTYPED_MEDIA_TYPE = 'application/octet-stream';
|
|
242
301
|
export async function heldFile(blob, base) {
|
|
243
|
-
const bytes = await blob.arrayBuffer();
|
|
244
302
|
return {
|
|
245
|
-
blob,
|
|
246
303
|
localId: binaryLocalId(),
|
|
247
|
-
|
|
304
|
+
...(blob instanceof File ? { name: blob.name } : {}),
|
|
305
|
+
byteLength: blob.size,
|
|
248
306
|
mediaType: blob.type === '' ? UNTYPED_MEDIA_TYPE : blob.type,
|
|
249
|
-
sha256:
|
|
307
|
+
sha256: await sha256(blob),
|
|
250
308
|
base,
|
|
251
309
|
};
|
|
252
310
|
}
|
|
253
311
|
export function binaryBase(visible, path) {
|
|
254
|
-
|
|
312
|
+
const binary = visible?.binaries[path];
|
|
313
|
+
if (binary === undefined)
|
|
314
|
+
return null;
|
|
315
|
+
return visible?.revisions[path] ?? (binary.state === 'pending' ? binary.localId : null);
|
|
255
316
|
}
|
|
256
|
-
export function changedParts(path,
|
|
317
|
+
export function changedParts(path, parts, visible) {
|
|
318
|
+
const report = underneath(parts, path, visible);
|
|
319
|
+
const made = parts.file?.base === null;
|
|
257
320
|
return [
|
|
258
|
-
...(report.creation === undefined ? [] : [{ path, part: 'creation' }]),
|
|
259
321
|
...named(report.fields).map(([name]) => ({ path, part: 'field', name })),
|
|
260
322
|
...named(report.sections).map(([name]) => ({ path, part: 'section', name })),
|
|
261
323
|
...(report.preamble === undefined ? [] : [{ path, part: 'preamble' }]),
|
|
262
324
|
...(report.markdown === undefined ? [] : [{ path, part: 'markdown' }]),
|
|
263
325
|
...(report.move === undefined ? [] : [{ path, part: 'move' }]),
|
|
264
326
|
...(report.removal === undefined ? [] : [{ path, part: 'removal' }]),
|
|
265
|
-
...(report.file === undefined ? [] : [{ path, part: 'file' }]),
|
|
327
|
+
...(report.file === undefined || made ? [] : [{ path, part: 'file' }]),
|
|
266
328
|
];
|
|
267
329
|
}
|
|
268
330
|
function joined(existing, returned) {
|
|
@@ -272,33 +334,45 @@ function joined(existing, returned) {
|
|
|
272
334
|
merged[name] = part;
|
|
273
335
|
return Object.keys(merged).length === 0 ? undefined : merged;
|
|
274
336
|
}
|
|
275
|
-
function
|
|
337
|
+
export function lineEnded(text) {
|
|
276
338
|
return text === '' || text.endsWith('\n') ? text : `${text}\n`;
|
|
277
339
|
}
|
|
278
|
-
function
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
value: part.value,
|
|
286
|
-
prior: undefined,
|
|
287
|
-
})));
|
|
288
|
-
return next.outcome === 'applied' ? serialize(next.document) : malformed();
|
|
340
|
+
function written(start, changes, definition) {
|
|
341
|
+
const next = apply(start, changes, definition);
|
|
342
|
+
return next.outcome === 'applied' ? next.document : malformed();
|
|
343
|
+
}
|
|
344
|
+
function empty(definition) {
|
|
345
|
+
const parsed = parse('', '', definition);
|
|
346
|
+
return parsed.ok ? parsed.document : malformed();
|
|
289
347
|
}
|
|
290
|
-
export function partsAfter(markdown, parts) {
|
|
348
|
+
export function partsAfter(markdown, parts, definitions) {
|
|
291
349
|
const fields = named(parts.fields);
|
|
350
|
+
const sections = named(parts.sections);
|
|
351
|
+
if (fields.length === 0 && sections.length === 0 && parts.preamble === undefined)
|
|
352
|
+
return markdown;
|
|
353
|
+
const whole = parse(markdown, '', definitions);
|
|
354
|
+
const type = whole.ok ? whole.document.type : undefined;
|
|
355
|
+
const definition = definitions?.(type);
|
|
356
|
+
if (type !== undefined && definition === undefined)
|
|
357
|
+
return null;
|
|
358
|
+
const valued = fields.length === 0
|
|
359
|
+
? empty(definition)
|
|
360
|
+
: written(create(type, definition), fields.map(([name, part]) => ({
|
|
361
|
+
kind: 'field',
|
|
362
|
+
name,
|
|
363
|
+
value: part.value,
|
|
364
|
+
prior: undefined,
|
|
365
|
+
})), definition);
|
|
366
|
+
const head = parts.preamble === undefined
|
|
367
|
+
? valued
|
|
368
|
+
: written(valued, [{ kind: 'preamble', value: lineEnded(parts.preamble.value), prior: valued.preamble }], definition);
|
|
292
369
|
const pieces = [
|
|
293
|
-
...(fields.length === 0 ? [] : [
|
|
294
|
-
...(
|
|
295
|
-
...named(parts.sections).map(([name, part]) => `## ${name}\n${part.value}`),
|
|
370
|
+
...(fields.length === 0 && parts.preamble === undefined ? [] : [serialize(head)]),
|
|
371
|
+
...sections.map(([name, part]) => serialize(written(empty(definition), [{ kind: 'section', name, value: lineEnded(part.value), prior: undefined }], definition))),
|
|
296
372
|
];
|
|
297
|
-
|
|
298
|
-
return markdown;
|
|
299
|
-
return `${ended(markdown)}\n${pieces.map(ended).join('')}`;
|
|
373
|
+
return `${lineEnded(markdown)}\n${pieces.join('')}`;
|
|
300
374
|
}
|
|
301
|
-
export function returnedInto(existing, returned) {
|
|
375
|
+
export function returnedInto(existing, returned, definitions) {
|
|
302
376
|
if (existing === undefined)
|
|
303
377
|
return returned;
|
|
304
378
|
const next = { ...existing };
|
|
@@ -318,7 +392,9 @@ export function returnedInto(existing, returned) {
|
|
|
318
392
|
delete next.fields;
|
|
319
393
|
delete next.sections;
|
|
320
394
|
delete next.preamble;
|
|
321
|
-
const value = partsAfter(whole.value, existing.markdown === undefined ? existing : returned);
|
|
395
|
+
const value = partsAfter(whole.value, existing.markdown === undefined ? existing : returned, definitions);
|
|
396
|
+
if (value === null)
|
|
397
|
+
return null;
|
|
322
398
|
next.markdown = { value, base: whole.base };
|
|
323
399
|
}
|
|
324
400
|
const creation = existing.creation ?? returned.creation;
|
|
@@ -339,6 +415,36 @@ export function moveTarget(move) {
|
|
|
339
415
|
const to = normalize(move.to);
|
|
340
416
|
return to === null || to === '' ? move.to : to;
|
|
341
417
|
}
|
|
418
|
+
export function readSavedParts(named) {
|
|
419
|
+
const read = named.map(({ path, parts }) => ({ path, parts: readParts(parts, path) }));
|
|
420
|
+
read.forEach(({ path }, at) => {
|
|
421
|
+
if (path === '' || normalize(path) !== path)
|
|
422
|
+
malformed(path, 'a path inside the Room, such as notes/a.md');
|
|
423
|
+
if (read.findIndex((one) => one.path === path) !== at)
|
|
424
|
+
malformed(path, 'each path once in one save');
|
|
425
|
+
});
|
|
426
|
+
return read;
|
|
427
|
+
}
|
|
428
|
+
export function partsChanges(named) {
|
|
429
|
+
const changes = [];
|
|
430
|
+
const preconditions = [];
|
|
431
|
+
for (const { path, parts } of readSavedParts(named)) {
|
|
432
|
+
const parted = held(undefined, parts);
|
|
433
|
+
const made = changesOf(path, parted);
|
|
434
|
+
changes.push(...made.changes);
|
|
435
|
+
preconditions.push(...made.bases);
|
|
436
|
+
for (const change of made.changes) {
|
|
437
|
+
if (change.kind === 'create')
|
|
438
|
+
preconditions.push({ kind: 'absent', path });
|
|
439
|
+
if (change.kind === 'move')
|
|
440
|
+
preconditions.push({ kind: 'absent', path: change.to });
|
|
441
|
+
}
|
|
442
|
+
const revision = parted.markdown?.base ?? parted.move?.base ?? parted.removal?.base;
|
|
443
|
+
if (typeof revision === 'string')
|
|
444
|
+
preconditions.push({ kind: 'revision', path, revision });
|
|
445
|
+
}
|
|
446
|
+
return { changes, preconditions };
|
|
447
|
+
}
|
|
342
448
|
export function changesOf(path, parts) {
|
|
343
449
|
const changes = [];
|
|
344
450
|
const bases = [];
|
|
@@ -358,23 +464,23 @@ export function changesOf(path, parts) {
|
|
|
358
464
|
bases.push({ kind: 'field', path, name, value: part.base?.value });
|
|
359
465
|
}
|
|
360
466
|
for (const [name, part] of named(parts.sections)) {
|
|
361
|
-
changes.push({ kind: 'section', path, name, value: part.value });
|
|
467
|
+
changes.push({ kind: 'section', path, name, value: lineEnded(part.value) });
|
|
362
468
|
bases.push({ kind: 'section', path, name, value: part.base });
|
|
363
469
|
}
|
|
364
470
|
if (parts.preamble !== undefined) {
|
|
365
|
-
changes.push({ kind: 'preamble', path, value: parts.preamble.value });
|
|
471
|
+
changes.push({ kind: 'preamble', path, value: lineEnded(parts.preamble.value) });
|
|
366
472
|
bases.push({ kind: 'preamble', path, value: parts.preamble.base });
|
|
367
473
|
}
|
|
368
474
|
if (parts.markdown !== undefined) {
|
|
369
475
|
changes.push({ kind: 'replace', path, content: parts.markdown.value });
|
|
370
476
|
}
|
|
371
477
|
if (parts.file !== undefined && parts.removal === undefined) {
|
|
372
|
-
const { base, ...file } = parts.file;
|
|
478
|
+
const { base, name: _name, ...file } = parts.file;
|
|
373
479
|
const at = parts.move === undefined ? path : moveTarget(parts.move);
|
|
374
480
|
if (base !== null && at !== path)
|
|
375
481
|
changes.push({ kind: 'move', path, to: at });
|
|
376
482
|
changes.push({ kind: 'binary', path: at, ...file });
|
|
377
|
-
if (base === null
|
|
483
|
+
if (base === null)
|
|
378
484
|
bases.push({ kind: 'absent', path: at });
|
|
379
485
|
return { changes, bases };
|
|
380
486
|
}
|
|
@@ -386,35 +492,6 @@ export function changesOf(path, parts) {
|
|
|
386
492
|
changes.push({ kind: 'remove', path });
|
|
387
493
|
return { changes, bases };
|
|
388
494
|
}
|
|
389
|
-
function rebased(before, after) {
|
|
390
|
-
return before === undefined ? after : { ...after, base: before.base };
|
|
391
|
-
}
|
|
392
|
-
function rebasedAll(before, after) {
|
|
393
|
-
return {
|
|
394
|
-
...before,
|
|
395
|
-
...Object.fromEntries(Object.entries(after).map(([name, part]) => [name, rebased(before?.[name], part)])),
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
export function joinedDraft(carried, saved) {
|
|
399
|
-
const draft = saved.find((item) => item.path === carried.path);
|
|
400
|
-
if (draft === undefined)
|
|
401
|
-
return carried;
|
|
402
|
-
const held = carried.parts;
|
|
403
|
-
const next = draft.parts;
|
|
404
|
-
return {
|
|
405
|
-
path: carried.path,
|
|
406
|
-
parts: {
|
|
407
|
-
...held,
|
|
408
|
-
...next,
|
|
409
|
-
...(next.fields === undefined ? {} : { fields: rebasedAll(held.fields, next.fields) }),
|
|
410
|
-
...(next.sections === undefined
|
|
411
|
-
? {}
|
|
412
|
-
: { sections: rebasedAll(held.sections, next.sections) }),
|
|
413
|
-
...(next.preamble === undefined ? {} : { preamble: rebased(held.preamble, next.preamble) }),
|
|
414
|
-
...(next.markdown === undefined ? {} : { markdown: rebased(held.markdown, next.markdown) }),
|
|
415
|
-
},
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
495
|
export function withdrawnDrafts(drafts, changes) {
|
|
419
496
|
return drafts.flatMap((draft) => {
|
|
420
497
|
const file = draft.parts.file;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ChangeSet } from './change-set.js';
|
|
2
|
+
import { type VisibleLayer } from './replica.js';
|
|
3
|
+
import { type RoomDraft, type RoomDraftWrite } from './room-draft.js';
|
|
4
|
+
import type { Runtime } from './runtime.js';
|
|
5
|
+
import type { Store } from './store.js';
|
|
6
|
+
export type RoomDraftSurface = {
|
|
7
|
+
list(): Promise<readonly RoomDraft[]>;
|
|
8
|
+
read(room: string, path: string): Promise<RoomDraft | null>;
|
|
9
|
+
write(room: string, path: string, revision: string | null, parts: unknown, next?: string): Promise<RoomDraftWrite>;
|
|
10
|
+
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
11
|
+
};
|
|
12
|
+
export type PresentationSurface = {
|
|
13
|
+
read(app: string): Promise<unknown>;
|
|
14
|
+
write(app: string, value: unknown): Promise<void>;
|
|
15
|
+
edit(app: string, members: Readonly<Record<string, unknown>>): Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export declare function visibleOf(store: Store, locator: string, paths: readonly string[]): Promise<VisibleLayer | undefined>;
|
|
18
|
+
export declare function publishRoomDrafts({ store, socket }: Runtime, waitingOnly: boolean, touched?: ChangeSet['documents'] | null): Promise<void>;
|
|
19
|
+
export declare function emitPresentation({ store, socket }: Runtime, app: string): Promise<void>;
|
|
20
|
+
export declare function roomDraftSurface(runtime: Runtime): RoomDraftSurface;
|
|
21
|
+
export declare function presentationSurface(runtime: Runtime): PresentationSurface;
|
|
22
|
+
export declare function watchRoomDrafts({ store, socket }: Runtime, deliver: (value: unknown) => void): () => void;
|
|
23
|
+
export declare function watchPresentation({ store, socket }: Runtime, app: string, deliver: (value: unknown) => void): () => void;
|
|
24
|
+
//# sourceMappingURL=room-drafts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-drafts.d.ts","sourceRoot":"","sources":["../src/room-drafts.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5D,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAQL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E,CAAC;AAMF,wBAAsB,SAAS,CAC7B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAMnC;AA0CD,wBAAgB,iBAAiB,CAC/B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAC1B,WAAW,EAAE,OAAO,EACpB,OAAO,GAAE,SAAS,CAAC,WAAW,CAAC,GAAG,IAAW,GAC5C,OAAO,CAAC,IAAI,CAAC,CAuBf;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvF;AAoDD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAkDnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CA8BzE;AAED,wBAAgB,eAAe,CAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,MAAM,IAAI,CAiBZ;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,MAAM,IAAI,CASZ"}
|