@agentshouse/mdruntime 0.1.0-cb2e390ee7b89 → 0.1.0-cb4f25b82f4b6
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 +23 -19
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +299 -0
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +26 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +302 -0
- package/dist/adapter.d.ts +163 -125
- 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 +13 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -89
- 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 +36 -24
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +118 -23
- package/dist/collection.d.ts +29 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +48 -290
- 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 -134
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +107 -3606
- 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 +143 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +254 -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 +73 -49
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1010 -794
- 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 +150 -0
- package/dist/durability.d.ts +20 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +9 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -28
- 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 +21 -11
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +113 -49
- 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 +530 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +277 -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 +32 -0
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +49 -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 -8
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +273 -121
- package/dist/messages.d.ts +56 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +158 -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 +153 -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 +17 -3
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +107 -17
- 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 +53 -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 +123 -182
- 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 +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -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 +227 -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 +282 -0
- package/dist/query.d.ts +21 -203
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -491
- 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 +450 -0
- package/dist/reach.d.ts +20 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +341 -111
- package/dist/react.d.ts +16 -4
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +35 -15
- 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 +14 -18
- 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 -60
- 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 +49 -36
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +320 -196
- 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 -118
- 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 -30
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -120
- package/dist/runtime.d.ts +34 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +43 -49
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +776 -275
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +410 -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 +6 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +75 -104
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +302 -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 +28 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +103 -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 +67 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +164 -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 +214 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +438 -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 -164
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +159 -754
- package/dist/stored.d.ts +157 -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 +220 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +535 -0
- package/dist/tables.d.ts +415 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +761 -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 +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +51 -21
- 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 +9 -16
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +11 -75
- package/dist/wire.d.ts +89 -9
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +29 -6
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
- 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 -20
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -188
- 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 -155
- 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/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 -635
- 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/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/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/read-side.d.ts +0 -25
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -761
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function createRoomHeld() {
|
|
2
|
+
const rooms = new Map();
|
|
3
|
+
return {
|
|
4
|
+
of: (locator, key) => rooms.get(locator)?.get(key),
|
|
5
|
+
hold(locator, key, value) {
|
|
6
|
+
const room = rooms.get(locator) ?? new Map();
|
|
7
|
+
room.set(key, value);
|
|
8
|
+
rooms.set(locator, room);
|
|
9
|
+
},
|
|
10
|
+
drop(locator, key) {
|
|
11
|
+
rooms.get(locator)?.delete(key);
|
|
12
|
+
},
|
|
13
|
+
forget(locator) {
|
|
14
|
+
rooms.delete(locator);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RuntimeDatabase } from '../tables.js';
|
|
2
|
+
export type Space = {
|
|
3
|
+
full(): boolean;
|
|
4
|
+
fill(): boolean;
|
|
5
|
+
probing(): boolean;
|
|
6
|
+
probeEachMinute(): void;
|
|
7
|
+
probe(): Promise<void>;
|
|
8
|
+
stop(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function createSpace(database: RuntimeDatabase, freed: () => void): Space;
|
|
11
|
+
//# sourceMappingURL=space.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/store/space.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,OAAO,CAAC;IAChB,OAAO,IAAI,OAAO,CAAC;IACnB,eAAe,IAAI,IAAI,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;CACd,CAAC;AAEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,KAAK,CA0C/E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export function createSpace(database, freed) {
|
|
2
|
+
let full = false;
|
|
3
|
+
let probing = null;
|
|
4
|
+
let testing = null;
|
|
5
|
+
function probe() {
|
|
6
|
+
testing ??= database.ask({ kind: 'space.probe' }).then(() => {
|
|
7
|
+
testing = null;
|
|
8
|
+
if (full) {
|
|
9
|
+
full = false;
|
|
10
|
+
if (probing !== null)
|
|
11
|
+
clearInterval(probing);
|
|
12
|
+
probing = null;
|
|
13
|
+
freed();
|
|
14
|
+
}
|
|
15
|
+
}, () => {
|
|
16
|
+
testing = null;
|
|
17
|
+
});
|
|
18
|
+
return testing;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
full: () => full,
|
|
22
|
+
fill() {
|
|
23
|
+
if (full)
|
|
24
|
+
return false;
|
|
25
|
+
full = true;
|
|
26
|
+
return true;
|
|
27
|
+
},
|
|
28
|
+
probing: () => probing !== null,
|
|
29
|
+
probeEachMinute() {
|
|
30
|
+
// A device whose storage filled after its install tries a write each minute, so space freed elsewhere ends its read-only mode without a Retry.
|
|
31
|
+
probing = setInterval(() => {
|
|
32
|
+
void probe();
|
|
33
|
+
}, 60_000);
|
|
34
|
+
},
|
|
35
|
+
probe,
|
|
36
|
+
stop() {
|
|
37
|
+
if (probing !== null)
|
|
38
|
+
clearInterval(probing);
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Watcher = {
|
|
2
|
+
held(): boolean;
|
|
3
|
+
stop(): void;
|
|
4
|
+
answer(value: unknown): void;
|
|
5
|
+
};
|
|
6
|
+
export type Watching = 'all' | 'waiting' | 'ready';
|
|
7
|
+
type Watchers = {
|
|
8
|
+
publication(work: () => Promise<void>): Promise<void>;
|
|
9
|
+
owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
|
|
10
|
+
watch(topic: string, notify: (value: unknown) => void): Watcher;
|
|
11
|
+
watching(topic: string, which?: Watching): readonly Watcher[];
|
|
12
|
+
tell(topic: string, value: unknown): void;
|
|
13
|
+
close(): void;
|
|
14
|
+
};
|
|
15
|
+
export declare function createWatchers(unpublished: (error: unknown) => void): Watchers;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=watchers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchers.d.ts","sourceRoot":"","sources":["../../src/store/watchers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;AAMnD,KAAK,QAAQ,GAAG;IACd,WAAW,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EACL,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,OAAO,EAAE,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CA6D9E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function createWatchers(unpublished) {
|
|
2
|
+
let published = Promise.resolve();
|
|
3
|
+
const topics = new Map();
|
|
4
|
+
const owed = new Map();
|
|
5
|
+
function publication(work) {
|
|
6
|
+
published = published.then(work).catch(unpublished);
|
|
7
|
+
return published;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
publication,
|
|
11
|
+
owing(topic, add, work) {
|
|
12
|
+
const held = owed.get(topic);
|
|
13
|
+
if (held !== undefined) {
|
|
14
|
+
held.value = add(held.value);
|
|
15
|
+
return held.shown;
|
|
16
|
+
}
|
|
17
|
+
const owing = { value: add(undefined), shown: Promise.resolve() };
|
|
18
|
+
owed.set(topic, owing);
|
|
19
|
+
owing.shown = publication(async () => {
|
|
20
|
+
owed.delete(topic);
|
|
21
|
+
await work(owing.value);
|
|
22
|
+
});
|
|
23
|
+
return owing.shown;
|
|
24
|
+
},
|
|
25
|
+
watch(topic, notify) {
|
|
26
|
+
const held = topics.get(topic) ?? new Set();
|
|
27
|
+
topics.set(topic, held);
|
|
28
|
+
const watcher = {
|
|
29
|
+
ready: false,
|
|
30
|
+
held: () => topics.get(topic)?.has(watcher) === true,
|
|
31
|
+
stop() {
|
|
32
|
+
const on = topics.get(topic);
|
|
33
|
+
on?.delete(watcher);
|
|
34
|
+
if (on?.size === 0)
|
|
35
|
+
topics.delete(topic);
|
|
36
|
+
},
|
|
37
|
+
answer(value) {
|
|
38
|
+
watcher.ready = true;
|
|
39
|
+
notify(value);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
held.add(watcher);
|
|
43
|
+
return watcher;
|
|
44
|
+
},
|
|
45
|
+
watching(topic, which = 'all') {
|
|
46
|
+
return [...(topics.get(topic) ?? [])].filter(({ ready }) => which === 'all' || ready === (which === 'ready'));
|
|
47
|
+
},
|
|
48
|
+
tell(topic, value) {
|
|
49
|
+
for (const watcher of topics.get(topic) ?? [])
|
|
50
|
+
watcher.answer(value);
|
|
51
|
+
},
|
|
52
|
+
close() {
|
|
53
|
+
topics.clear();
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Composition } from '../collection.js';
|
|
2
|
+
import type { RefreshedPage, RuntimeStore } from './records.js';
|
|
3
|
+
export type InstallHold = {
|
|
4
|
+
take(): void;
|
|
5
|
+
release(): void;
|
|
6
|
+
};
|
|
7
|
+
type Writes = {
|
|
8
|
+
exclusive<T>(work: () => Promise<T>): Promise<T>;
|
|
9
|
+
gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
|
|
10
|
+
written(): Promise<unknown>;
|
|
11
|
+
startingWrite<T>(work: () => Promise<T>): Promise<T>;
|
|
12
|
+
finishingWrite<T>(work: () => Promise<T>): Promise<T>;
|
|
13
|
+
ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
|
|
14
|
+
rederive(local: RuntimeStore, key: number, composition: Composition): Promise<{
|
|
15
|
+
readonly done: boolean;
|
|
16
|
+
readonly text: number;
|
|
17
|
+
}>;
|
|
18
|
+
refreshPage(local: RuntimeStore, key: number, composition: Composition, page: RefreshedPage): Promise<void>;
|
|
19
|
+
stageBytes(): number;
|
|
20
|
+
deriveBytes(): number;
|
|
21
|
+
};
|
|
22
|
+
export declare function createWrites(): Writes;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=writes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../src/store/writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA8BhE,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC;AAE5D,KAAK,MAAM,GAAG;IACZ,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,CAAC,EAAE,CAAC,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,EACzC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,CACN,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,WAAW,CACT,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,UAAU,IAAI,MAAM,CAAC;IACrB,WAAW,IAAI,MAAM,CAAC;CACvB,CAAC;AAcF,wBAAgB,YAAY,IAAI,MAAM,CAqHrC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { yielded } from '../turn.js';
|
|
2
|
+
const DERIVE_BYTES = 1 << 23;
|
|
3
|
+
const DERIVE_FLOOR = 1 << 18;
|
|
4
|
+
// An index build aims at this much database work, so a Save, a query or the next part's progress waits behind at most one short build.
|
|
5
|
+
const DERIVE_AIM_MS = 250;
|
|
6
|
+
// A build past its floor of text stops after a second and a half of work, its full-text writes included, so a Room whose text costs ten times the usual holds a Save, a query or the next part's progress behind no longer build.
|
|
7
|
+
const DERIVE_LONGEST_MS = 1_500;
|
|
8
|
+
const STAGE_BYTES = 1 << 20;
|
|
9
|
+
const STAGE_FLOOR = 1 << 16;
|
|
10
|
+
// A batch aims at this much database work, so a Save or a query waits behind at most one short write.
|
|
11
|
+
const STAGE_AIM_MS = 50;
|
|
12
|
+
async function timed(budget, work) {
|
|
13
|
+
const started = performance.now();
|
|
14
|
+
const done = await work();
|
|
15
|
+
const spent = performance.now() - started;
|
|
16
|
+
if (spent < budget.aim / 2)
|
|
17
|
+
budget.bytes = Math.min(budget.ceiling, Math.round(budget.bytes * 1.5));
|
|
18
|
+
else if (spent > budget.aim * 2) {
|
|
19
|
+
budget.bytes = Math.max(budget.floor, Math.round(budget.bytes / 1.5));
|
|
20
|
+
}
|
|
21
|
+
return done;
|
|
22
|
+
}
|
|
23
|
+
export function createWrites() {
|
|
24
|
+
let mutations = Promise.resolve();
|
|
25
|
+
let gathering = null;
|
|
26
|
+
const stageBudget = {
|
|
27
|
+
bytes: STAGE_FLOOR * 4,
|
|
28
|
+
floor: STAGE_FLOOR,
|
|
29
|
+
ceiling: STAGE_BYTES,
|
|
30
|
+
aim: STAGE_AIM_MS,
|
|
31
|
+
};
|
|
32
|
+
const deriveBudget = {
|
|
33
|
+
bytes: DERIVE_FLOOR * 4,
|
|
34
|
+
floor: DERIVE_FLOOR,
|
|
35
|
+
ceiling: DERIVE_BYTES,
|
|
36
|
+
aim: DERIVE_AIM_MS,
|
|
37
|
+
};
|
|
38
|
+
const installTurns = { busy: false, ahead: 0, finishing: [], starting: [] };
|
|
39
|
+
function exclusive(work) {
|
|
40
|
+
gathering = null;
|
|
41
|
+
const next = mutations.then(work, work);
|
|
42
|
+
mutations = next.then(() => undefined, () => undefined);
|
|
43
|
+
return next;
|
|
44
|
+
}
|
|
45
|
+
function gathered(key, input, merge, work) {
|
|
46
|
+
const tail = gathering;
|
|
47
|
+
if (tail !== null && tail.key === key) {
|
|
48
|
+
const merged = merge(tail.input, input);
|
|
49
|
+
if (merged !== null) {
|
|
50
|
+
tail.input = merged;
|
|
51
|
+
return tail.done;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const entry = { key, input, done: Promise.resolve() };
|
|
55
|
+
entry.done = exclusive(() => {
|
|
56
|
+
if (gathering === entry)
|
|
57
|
+
gathering = null;
|
|
58
|
+
return work(entry.input);
|
|
59
|
+
});
|
|
60
|
+
gathering = entry;
|
|
61
|
+
return entry.done;
|
|
62
|
+
}
|
|
63
|
+
function nextInstallTurn() {
|
|
64
|
+
if (installTurns.busy || installTurns.ahead > 0)
|
|
65
|
+
return;
|
|
66
|
+
const turn = installTurns.finishing.shift() ?? installTurns.starting.shift();
|
|
67
|
+
if (turn === undefined)
|
|
68
|
+
return;
|
|
69
|
+
installTurns.busy = true;
|
|
70
|
+
turn();
|
|
71
|
+
}
|
|
72
|
+
function installTurn(queue, work) {
|
|
73
|
+
return new Promise((resolve, reject) => {
|
|
74
|
+
queue.push(() => void exclusive(work)
|
|
75
|
+
.then(resolve, reject)
|
|
76
|
+
.finally(() => {
|
|
77
|
+
installTurns.busy = false;
|
|
78
|
+
nextInstallTurn();
|
|
79
|
+
}));
|
|
80
|
+
nextInstallTurn();
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function resumeInstall() {
|
|
84
|
+
if (installTurns.ahead > 0)
|
|
85
|
+
return;
|
|
86
|
+
void yielded().then(nextInstallTurn);
|
|
87
|
+
}
|
|
88
|
+
async function ahead(work) {
|
|
89
|
+
let taken = false;
|
|
90
|
+
const hold = {
|
|
91
|
+
take() {
|
|
92
|
+
if (taken)
|
|
93
|
+
return;
|
|
94
|
+
taken = true;
|
|
95
|
+
installTurns.ahead += 1;
|
|
96
|
+
},
|
|
97
|
+
release() {
|
|
98
|
+
if (!taken)
|
|
99
|
+
return;
|
|
100
|
+
taken = false;
|
|
101
|
+
installTurns.ahead -= 1;
|
|
102
|
+
resumeInstall();
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
hold.take();
|
|
106
|
+
try {
|
|
107
|
+
return await work(hold);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
hold.release();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
exclusive,
|
|
115
|
+
gathered,
|
|
116
|
+
written: () => mutations,
|
|
117
|
+
startingWrite: (work) => installTurn(installTurns.starting, work),
|
|
118
|
+
finishingWrite: (work) => installTurn(installTurns.finishing, work),
|
|
119
|
+
ahead,
|
|
120
|
+
rederive: (local, key, composition) => timed(deriveBudget, () => local.rederive(key, composition, deriveBudget.bytes, DERIVE_LONGEST_MS, DERIVE_FLOOR)),
|
|
121
|
+
refreshPage: (local, key, composition, page) => timed(stageBudget, () => local.refresh(key, composition, page)),
|
|
122
|
+
stageBytes: () => stageBudget.bytes,
|
|
123
|
+
deriveBytes: () => deriveBudget.bytes,
|
|
124
|
+
};
|
|
125
|
+
}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,175 +1,122 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import type { TypedPath } from './adapter.js';
|
|
2
|
+
import { schemaTypes } from './attached-model.js';
|
|
3
|
+
import { type Cell } from './cell.js';
|
|
4
4
|
import type { ChangeBatch } from './change.js';
|
|
5
|
-
import {
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
transfer: string;
|
|
34
|
-
selection: string;
|
|
35
|
-
from: string;
|
|
36
|
-
last: string;
|
|
37
|
-
pageToken: string | null;
|
|
38
|
-
models: {
|
|
39
|
-
collection: ModelState;
|
|
40
|
-
selection: ModelState;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
export type PendingState = {
|
|
44
|
-
readonly drafts: readonly SavedDraft[];
|
|
45
|
-
readonly submission: Submission;
|
|
46
|
-
readonly lost: boolean;
|
|
47
|
-
readonly upload?: unknown;
|
|
48
|
-
readonly accepted?: string;
|
|
49
|
-
};
|
|
50
|
-
export type TargetRecord = {
|
|
51
|
-
established: boolean;
|
|
52
|
-
};
|
|
53
|
-
export type QueueRecord = {
|
|
54
|
-
locator: string;
|
|
55
|
-
pending: readonly {
|
|
56
|
-
batch: ChangeBatch;
|
|
57
|
-
state: PendingState;
|
|
58
|
-
}[];
|
|
59
|
-
};
|
|
60
|
-
export type PresentationRecord = {
|
|
61
|
-
app: string;
|
|
62
|
-
value: unknown;
|
|
63
|
-
};
|
|
64
|
-
export type HeldConversation = {
|
|
65
|
-
conversation: string;
|
|
66
|
-
read: string | null | undefined;
|
|
67
|
-
partial: boolean;
|
|
68
|
-
};
|
|
69
|
-
export type MessageWindow = {
|
|
70
|
-
messages: AcceptedMessage[];
|
|
71
|
-
more: boolean;
|
|
5
|
+
import type { ChangeSet } from './change-set.js';
|
|
6
|
+
import type { Composition } from './collection.js';
|
|
7
|
+
import type { ReadinessWatch } from './preparation.js';
|
|
8
|
+
import type { Persistence } from './readiness.js';
|
|
9
|
+
import type { Retries } from './retried.js';
|
|
10
|
+
import type { Listing } from './listing.js';
|
|
11
|
+
import type { Seeded } from './seed.js';
|
|
12
|
+
import type { ModelState } from './model.js';
|
|
13
|
+
import { type OpenedFiles } from './opened.js';
|
|
14
|
+
import { type HeldReplica, type ReplicaRecord } from './replica.js';
|
|
15
|
+
import type { RoomDraftRecord } from './room-draft.js';
|
|
16
|
+
import { type SyncStatus } from './status.js';
|
|
17
|
+
import type { RuntimeDatabase } from './tables.js';
|
|
18
|
+
import { type Installs } from './store/installs.js';
|
|
19
|
+
import { type HeldCover, type HeldStatus, type PendingState, type RuntimeStore } from './store/records.js';
|
|
20
|
+
import { type ReadinessQueue } from './store/readiness.js';
|
|
21
|
+
import { type RoomHeld } from './store/room-held.js';
|
|
22
|
+
import { type Space } from './store/space.js';
|
|
23
|
+
import { type Watcher, type Watching } from './store/watchers.js';
|
|
24
|
+
import { createWrites, type InstallHold } from './store/writes.js';
|
|
25
|
+
export type { RoomInstall } from './store/installs.js';
|
|
26
|
+
export type { AuthoredWrite, ChatDraftRecord, ChatSubmission, ConversationFact, CoveredRoom, Facts, HeldConversation, HeldCover, PendingState, RefreshedPage, RuntimeStore, StagedPage, TransferRecord, } from './store/records.js';
|
|
27
|
+
export type { InstallHold } from './store/writes.js';
|
|
28
|
+
export type { CommittedWrite, QueryRoom, RoomCommit, RuntimeDatabase, StoredEntry, StoredFile, View, } from './tables.js';
|
|
29
|
+
export type Stored = {
|
|
30
|
+
readonly record: ReplicaRecord;
|
|
31
|
+
readonly indexed: boolean;
|
|
32
|
+
readonly documents: number;
|
|
72
33
|
};
|
|
73
|
-
export type
|
|
74
|
-
|
|
75
|
-
messages: readonly AcceptedMessage[];
|
|
76
|
-
read?: {
|
|
77
|
-
at: string | null;
|
|
78
|
-
partial: boolean;
|
|
79
|
-
};
|
|
34
|
+
export type Held = HeldReplica & {
|
|
35
|
+
readonly states: ReadonlyMap<string, PendingState>;
|
|
80
36
|
};
|
|
81
|
-
export type
|
|
82
|
-
readonly
|
|
83
|
-
readonly
|
|
84
|
-
readonly
|
|
85
|
-
readonly turn: string | null;
|
|
37
|
+
export type Work = {
|
|
38
|
+
readonly replica: Held | undefined;
|
|
39
|
+
readonly queue: readonly ChangeBatch[];
|
|
40
|
+
readonly states: ReadonlyMap<string, PendingState>;
|
|
86
41
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
revision: string;
|
|
92
|
-
submitted?: readonly ChatSubmission[];
|
|
93
|
-
moves?: readonly string[];
|
|
42
|
+
type LandedAhead = Readonly<Record<string, string | undefined>>;
|
|
43
|
+
type AttachedFile = {
|
|
44
|
+
readonly revision: string;
|
|
45
|
+
readonly mediaType: string;
|
|
94
46
|
};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
47
|
+
type Seeds = {
|
|
48
|
+
of(key: string): Seeded | undefined;
|
|
49
|
+
keep(key: string, seed: Seeded): void;
|
|
50
|
+
drop(key: string): void;
|
|
99
51
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
52
|
+
type Device = {
|
|
53
|
+
readonly persistence: Persistence;
|
|
54
|
+
readonly storageLoss: string | null;
|
|
55
|
+
readonly heldWhenOpened: boolean;
|
|
56
|
+
readonly preparing: boolean;
|
|
57
|
+
readonly sweeping: boolean;
|
|
58
|
+
readonly unpreparedDemand: ReadonlySet<string>;
|
|
59
|
+
readonly unpreparable: ReadonlySet<string>;
|
|
60
|
+
readonly establishing: ReadonlySet<string>;
|
|
61
|
+
readonly status: SyncStatus;
|
|
62
|
+
readonly roomsShown: Listing | null;
|
|
104
63
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
64
|
+
type StoreOptions = {
|
|
65
|
+
readonly database: RuntimeDatabase;
|
|
66
|
+
readonly roomTypes: Parameters<typeof schemaTypes>[1];
|
|
67
|
+
readonly builtIn: ModelState;
|
|
68
|
+
readonly typedPaths: readonly TypedPath[];
|
|
69
|
+
readonly persistence: Persistence;
|
|
70
|
+
readonly retries: Retries;
|
|
71
|
+
lost(locator: string): boolean;
|
|
72
|
+
opening(records: RuntimeStore): Promise<RuntimeStore>;
|
|
73
|
+
unpublished(error: unknown): void;
|
|
74
|
+
changed(set: ChangeSet): Promise<void>;
|
|
75
|
+
deliverReadiness(owed: readonly ReadinessWatch[]): Promise<void>;
|
|
76
|
+
spaceFreed(): void;
|
|
112
77
|
};
|
|
113
|
-
export type
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
staged(record: TransferRecord): Promise<StagedLayer>;
|
|
155
|
-
stage(record: TransferRecord, page: StagedLayer): Promise<void>;
|
|
156
|
-
abandon(locator: string): Promise<void>;
|
|
157
|
-
receivedHeads(): Promise<readonly KeptReceipt[]>;
|
|
158
|
-
receivedParts(key: string, count: number): Promise<readonly unknown[]>;
|
|
159
|
-
keepReceived(key: string, head: unknown, part?: {
|
|
160
|
-
index: number;
|
|
161
|
-
value: unknown;
|
|
162
|
-
}): Promise<void>;
|
|
163
|
-
dropReceived(keys: readonly string[]): Promise<void>;
|
|
164
|
-
generation(): Promise<string | null>;
|
|
165
|
-
rememberGeneration(value: string): Promise<void>;
|
|
78
|
+
export type Store = {
|
|
79
|
+
readonly device: Cell<Device>;
|
|
80
|
+
readonly space: Space;
|
|
81
|
+
readonly readiness: ReadinessQueue<ReadinessWatch>;
|
|
82
|
+
ask: RuntimeDatabase['ask'];
|
|
83
|
+
changed(set: ChangeSet): Promise<void>;
|
|
84
|
+
open(): Promise<RuntimeStore>;
|
|
85
|
+
durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;
|
|
86
|
+
exclusive<T>(work: () => Promise<T>): Promise<T>;
|
|
87
|
+
gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
|
|
88
|
+
written(): Promise<unknown>;
|
|
89
|
+
startingWrite<T>(work: () => Promise<T>): Promise<T>;
|
|
90
|
+
finishingWrite<T>(work: () => Promise<T>): Promise<T>;
|
|
91
|
+
ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
|
|
92
|
+
rederive: ReturnType<typeof createWrites>['rederive'];
|
|
93
|
+
refreshPage: ReturnType<typeof createWrites>['refreshPage'];
|
|
94
|
+
stageBytes(): number;
|
|
95
|
+
deriveBytes(): number;
|
|
96
|
+
rooms(locators?: readonly string[]): Promise<ReadonlyMap<string, Stored>>;
|
|
97
|
+
record(locator: string): Promise<ReplicaRecord | undefined>;
|
|
98
|
+
work(locator: string): Promise<Work>;
|
|
99
|
+
replica(locator: string): Promise<Held | undefined>;
|
|
100
|
+
covering(): Promise<HeldCover>;
|
|
101
|
+
status(): Promise<HeldStatus>;
|
|
102
|
+
queued(): Promise<readonly string[]>;
|
|
103
|
+
drafts(locator?: string, paths?: readonly string[]): Promise<readonly RoomDraftRecord[]>;
|
|
104
|
+
draft(locator: string, path: string): Promise<RoomDraftRecord | undefined>;
|
|
105
|
+
composed(record: Pick<ReplicaRecord, 'model' | 'declaration'>): Composition;
|
|
106
|
+
publication(work: () => Promise<void>): Promise<void>;
|
|
107
|
+
owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
|
|
108
|
+
watch(topic: string, notify: (value: unknown) => void): Watcher;
|
|
109
|
+
watching(topic: string, which?: Watching): readonly Watcher[];
|
|
110
|
+
tell(topic: string, value: unknown): void;
|
|
111
|
+
readonly installs: Installs;
|
|
112
|
+
readonly seeds: Seeds;
|
|
113
|
+
readonly landed: RoomHeld<LandedAhead>;
|
|
114
|
+
readonly attached: RoomHeld<AttachedFile>;
|
|
115
|
+
readonly opened: OpenedFiles;
|
|
116
|
+
part(file: string, part: number): Promise<Uint8Array | null>;
|
|
117
|
+
prepareAgain(locator?: string): void;
|
|
118
|
+
forget(locator: string): void;
|
|
166
119
|
close(): void;
|
|
167
120
|
};
|
|
168
|
-
export declare function
|
|
169
|
-
export declare function authoredBy(holder: string): Promise<boolean>;
|
|
170
|
-
export declare function authoredBinding(): Promise<string | null>;
|
|
171
|
-
export declare function bindAuthored(binding: string): Promise<void>;
|
|
172
|
-
export declare function removeRuntimeStore(holder?: string): Promise<boolean>;
|
|
173
|
-
export declare function openDatabase(name: string, version: number, upgrade: (opening: IDBOpenDBRequest, oldVersion: number) => void): Promise<IDBDatabase>;
|
|
174
|
-
export declare function openRuntimeStore(fenced: (locator: string) => boolean): Promise<RuntimeStore>;
|
|
121
|
+
export declare function createStore(options: StoreOptions): Store;
|
|
175
122
|
//# sourceMappingURL=store.d.ts.map
|