@brass-build/client 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +124 -45
- package/CHANGELOG.md +80 -4
- package/README.md +666 -179
- package/dist/api-fetch.d.ts +8 -0
- package/dist/api-fetch.d.ts.map +1 -1
- package/dist/api-fetch.js +35 -8
- package/dist/api-fetch.js.map +1 -1
- package/dist/batched-get.d.ts +11 -0
- package/dist/batched-get.d.ts.map +1 -0
- package/dist/batched-get.js +92 -0
- package/dist/batched-get.js.map +1 -0
- package/dist/call-service.d.ts +4 -0
- package/dist/call-service.d.ts.map +1 -1
- package/dist/call-service.js +66 -3
- package/dist/call-service.js.map +1 -1
- package/dist/client.d.ts +48 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +918 -115
- package/dist/client.js.map +1 -1
- package/dist/document-checkpoints.d.ts +25 -2
- package/dist/document-checkpoints.d.ts.map +1 -1
- package/dist/document-checkpoints.js +258 -61
- package/dist/document-checkpoints.js.map +1 -1
- package/dist/document-commands.d.ts.map +1 -1
- package/dist/document-commands.js +5 -3
- package/dist/document-commands.js.map +1 -1
- package/dist/document-contents.d.ts +10 -0
- package/dist/document-contents.d.ts.map +1 -1
- package/dist/document-contents.js +23 -1
- package/dist/document-contents.js.map +1 -1
- package/dist/document-set-subscription.d.ts +56 -0
- package/dist/document-set-subscription.d.ts.map +1 -0
- package/dist/document-set-subscription.js +240 -0
- package/dist/document-set-subscription.js.map +1 -0
- package/dist/document-signals.d.ts +6 -0
- package/dist/document-signals.d.ts.map +1 -1
- package/dist/document-signals.js +31 -1
- package/dist/document-signals.js.map +1 -1
- package/dist/document-streams.d.ts +36 -2
- package/dist/document-streams.d.ts.map +1 -1
- package/dist/document-streams.js +69 -18
- package/dist/document-streams.js.map +1 -1
- package/dist/document-thumbnail-capture.d.ts +12 -2
- package/dist/document-thumbnail-capture.d.ts.map +1 -1
- package/dist/document-thumbnail-capture.js +103 -27
- package/dist/document-thumbnail-capture.js.map +1 -1
- package/dist/documents-namespace.d.ts +92 -10
- package/dist/documents-namespace.d.ts.map +1 -1
- package/dist/documents-namespace.js +285 -39
- package/dist/documents-namespace.js.map +1 -1
- package/dist/documents.d.ts +173 -8
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +1778 -310
- package/dist/documents.js.map +1 -1
- package/dist/errors.d.ts +3 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/fetch-retry.d.ts +1 -0
- package/dist/fetch-retry.d.ts.map +1 -1
- package/dist/fetch-retry.js +2 -0
- package/dist/fetch-retry.js.map +1 -1
- package/dist/file-choice.d.ts +2 -0
- package/dist/file-choice.d.ts.map +1 -0
- package/dist/file-choice.js +27 -0
- package/dist/file-choice.js.map +1 -0
- package/dist/guest-link.d.ts +18 -1
- package/dist/guest-link.d.ts.map +1 -1
- package/dist/guest-link.js +329 -1
- package/dist/guest-link.js.map +1 -1
- package/dist/handle-types.d.ts +67 -5
- package/dist/handle-types.d.ts.map +1 -1
- package/dist/handles.d.ts +15 -19
- package/dist/handles.d.ts.map +1 -1
- package/dist/handles.js +231 -76
- package/dist/handles.js.map +1 -1
- package/dist/hosted-ui.d.ts +61 -0
- package/dist/hosted-ui.d.ts.map +1 -1
- package/dist/hosted-ui.js +94 -42
- package/dist/hosted-ui.js.map +1 -1
- package/dist/import-contract.d.ts +74 -0
- package/dist/import-contract.d.ts.map +1 -0
- package/dist/import-contract.js +163 -0
- package/dist/import-contract.js.map +1 -0
- package/dist/import-guest.d.ts +9 -0
- package/dist/import-guest.d.ts.map +1 -0
- package/dist/import-guest.js +155 -0
- package/dist/import-guest.js.map +1 -0
- package/dist/import-report.d.ts +17 -0
- package/dist/import-report.d.ts.map +1 -0
- package/dist/import-report.js +7 -0
- package/dist/import-report.js.map +1 -0
- package/dist/importer-wait.d.ts +2 -0
- package/dist/importer-wait.d.ts.map +1 -0
- package/dist/importer-wait.js +5 -0
- package/dist/importer-wait.js.map +1 -0
- package/dist/importer.d.ts +18 -4
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +322 -105
- package/dist/importer.js.map +1 -1
- package/dist/in-development.d.ts +2 -0
- package/dist/in-development.d.ts.map +1 -0
- package/dist/in-development.js +10 -0
- package/dist/in-development.js.map +1 -0
- package/dist/index.d.ts +16 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -8
- package/dist/index.js.map +1 -1
- package/dist/init-keys.d.ts +1 -1
- package/dist/init-keys.d.ts.map +1 -1
- package/dist/init-keys.js +6 -1
- package/dist/init-keys.js.map +1 -1
- package/dist/input-documents.d.ts +67 -0
- package/dist/input-documents.d.ts.map +1 -0
- package/dist/input-documents.js +693 -0
- package/dist/input-documents.js.map +1 -0
- package/dist/inputs-status.d.ts +80 -0
- package/dist/inputs-status.d.ts.map +1 -0
- package/dist/inputs-status.js +460 -0
- package/dist/inputs-status.js.map +1 -0
- package/dist/inputs.d.ts +2 -0
- package/dist/inputs.d.ts.map +1 -0
- package/dist/inputs.js +793 -0
- package/dist/inputs.js.map +1 -0
- package/dist/internal.d.ts +6 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -1
- package/dist/internal.js.map +1 -1
- package/dist/join-content.d.ts +33 -0
- package/dist/join-content.d.ts.map +1 -0
- package/dist/join-content.js +114 -0
- package/dist/join-content.js.map +1 -0
- package/dist/join-stamp.d.ts +3 -0
- package/dist/join-stamp.d.ts.map +1 -0
- package/dist/join-stamp.js +12 -0
- package/dist/join-stamp.js.map +1 -0
- package/dist/manifest-drift.d.ts +9 -0
- package/dist/manifest-drift.d.ts.map +1 -0
- package/dist/manifest-drift.js +46 -0
- package/dist/manifest-drift.js.map +1 -0
- package/dist/open-document.d.ts +109 -2
- package/dist/open-document.d.ts.map +1 -1
- package/dist/open-document.js +1822 -811
- package/dist/open-document.js.map +1 -1
- package/dist/page-restore.d.ts +12 -0
- package/dist/page-restore.d.ts.map +1 -0
- package/dist/page-restore.js +23 -0
- package/dist/page-restore.js.map +1 -0
- package/dist/placement.d.ts +13 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +34 -0
- package/dist/placement.js.map +1 -0
- package/dist/presence.d.ts +1 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +16 -4
- package/dist/presence.js.map +1 -1
- package/dist/read-only-document.d.ts +87 -0
- package/dist/read-only-document.d.ts.map +1 -0
- package/dist/read-only-document.js +4 -0
- package/dist/read-only-document.js.map +1 -0
- package/dist/record-paging.d.ts +63 -6
- package/dist/record-paging.d.ts.map +1 -1
- package/dist/record-paging.js +122 -29
- package/dist/record-paging.js.map +1 -1
- package/dist/references.d.ts +40 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +135 -0
- package/dist/references.js.map +1 -0
- package/dist/request-lane.d.ts +5 -0
- package/dist/request-lane.d.ts.map +1 -0
- package/dist/request-lane.js +48 -0
- package/dist/request-lane.js.map +1 -0
- package/dist/sealed-arrow.d.ts +170 -0
- package/dist/sealed-arrow.d.ts.map +1 -0
- package/dist/sealed-arrow.js +769 -0
- package/dist/sealed-arrow.js.map +1 -0
- package/dist/sealed-cache.d.ts +21 -0
- package/dist/sealed-cache.d.ts.map +1 -0
- package/dist/sealed-cache.js +247 -0
- package/dist/sealed-cache.js.map +1 -0
- package/dist/sealed-encode.d.ts +87 -0
- package/dist/sealed-encode.d.ts.map +1 -0
- package/dist/sealed-encode.js +876 -0
- package/dist/sealed-encode.js.map +1 -0
- package/dist/sealed-handles.d.ts +45 -0
- package/dist/sealed-handles.d.ts.map +1 -0
- package/dist/sealed-handles.js +408 -0
- package/dist/sealed-handles.js.map +1 -0
- package/dist/sealed-store.d.ts +242 -0
- package/dist/sealed-store.d.ts.map +1 -0
- package/dist/sealed-store.js +1155 -0
- package/dist/sealed-store.js.map +1 -0
- package/dist/serializer.d.ts +6 -15
- package/dist/serializer.d.ts.map +1 -1
- package/dist/session-toolbar.d.ts +20 -5
- package/dist/session-toolbar.d.ts.map +1 -1
- package/dist/session-toolbar.js +419 -67
- package/dist/session-toolbar.js.map +1 -1
- package/dist/session.d.ts +38 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +562 -79
- package/dist/session.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +74 -0
- package/dist/sha256.js.map +1 -0
- package/dist/stable-handles.d.ts +19 -0
- package/dist/stable-handles.d.ts.map +1 -0
- package/dist/stable-handles.js +193 -0
- package/dist/stable-handles.js.map +1 -0
- package/dist/staged-seal.d.ts +2 -0
- package/dist/staged-seal.d.ts.map +1 -0
- package/dist/staged-seal.js +76 -0
- package/dist/staged-seal.js.map +1 -0
- package/dist/subscriber-delivery.d.ts +8 -0
- package/dist/subscriber-delivery.d.ts.map +1 -0
- package/dist/subscriber-delivery.js +31 -0
- package/dist/subscriber-delivery.js.map +1 -0
- package/dist/tail-op-import.d.ts +10 -0
- package/dist/tail-op-import.d.ts.map +1 -0
- package/dist/tail-op-import.js +33 -0
- package/dist/tail-op-import.js.map +1 -0
- package/dist/topic-lifecycle.d.ts +6 -0
- package/dist/topic-lifecycle.d.ts.map +1 -1
- package/dist/topic-lifecycle.js +32 -2
- package/dist/topic-lifecycle.js.map +1 -1
- package/dist/trial-replace-dialog.d.ts +10 -0
- package/dist/trial-replace-dialog.d.ts.map +1 -0
- package/dist/trial-replace-dialog.js +153 -0
- package/dist/trial-replace-dialog.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/undo.d.ts +60 -5
- package/dist/undo.d.ts.map +1 -1
- package/dist/undo.js +344 -75
- package/dist/undo.js.map +1 -1
- package/dist/version-bar.d.ts +1 -0
- package/dist/version-bar.d.ts.map +1 -1
- package/dist/version-bar.js +2 -1
- package/dist/version-bar.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/dist/ws-client.d.ts +21 -0
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +192 -8
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-frame-limit.d.ts +1 -0
- package/dist/ws-frame-limit.d.ts.map +1 -1
- package/dist/ws-frame-limit.js.map +1 -1
- package/docs/app-manifest.md +121 -17
- package/docs/custom-chrome.md +24 -16
- package/docs/hosted-ui-advanced.md +38 -6
- package/docs/imported-documents.md +104 -51
- package/docs/presence.md +16 -4
- package/docs/schemas.md +8 -5
- package/docs/services.md +6 -6
- package/docs/streams.md +139 -150
- package/docs/text-fields.md +26 -19
- package/package.json +5 -2
- package/src/api-fetch.ts +53 -3
- package/src/auth-flow.ts +1 -1
- package/src/batched-get.ts +117 -0
- package/src/call-service.ts +78 -3
- package/src/client.ts +1022 -112
- package/src/document-checkpoints.ts +307 -65
- package/src/document-commands.ts +5 -5
- package/src/document-contents.ts +27 -1
- package/src/document-set-subscription.ts +274 -0
- package/src/document-signals.ts +47 -5
- package/src/document-streams.ts +85 -16
- package/src/document-thumbnail-capture.ts +118 -32
- package/src/documents-namespace.ts +539 -84
- package/src/documents.ts +2017 -348
- package/src/errors.ts +17 -6
- package/src/fetch-retry.ts +5 -0
- package/src/file-choice.ts +26 -0
- package/src/guest-link.ts +362 -1
- package/src/handle-types.ts +73 -47
- package/src/handles.ts +253 -83
- package/src/hosted-ui.ts +211 -50
- package/src/import-contract.ts +227 -0
- package/src/import-guest.ts +193 -0
- package/src/import-report.ts +24 -0
- package/src/importer-wait.ts +4 -0
- package/src/importer.ts +386 -131
- package/src/in-development.ts +10 -0
- package/src/index.ts +76 -16
- package/src/init-keys.ts +6 -1
- package/src/input-documents.ts +819 -0
- package/src/inputs-status.ts +598 -0
- package/src/inputs.ts +1090 -0
- package/src/internal.ts +7 -0
- package/src/join-content.ts +135 -0
- package/src/join-stamp.ts +12 -0
- package/src/manifest-drift.ts +54 -0
- package/src/open-document.ts +2346 -930
- package/src/page-restore.ts +38 -0
- package/src/placement.ts +54 -0
- package/src/presence.ts +21 -5
- package/src/read-only-document.ts +133 -0
- package/src/record-paging.ts +147 -25
- package/src/references.ts +207 -0
- package/src/request-lane.ts +59 -0
- package/src/sealed-arrow.ts +843 -0
- package/src/sealed-cache.ts +267 -0
- package/src/sealed-encode.ts +1015 -0
- package/src/sealed-handles.ts +486 -0
- package/src/sealed-store.ts +1330 -0
- package/src/serializer.ts +8 -20
- package/src/session-toolbar.ts +463 -72
- package/src/session.ts +740 -99
- package/src/sha256.ts +65 -0
- package/src/stable-handles.ts +235 -0
- package/src/staged-seal.ts +90 -0
- package/src/subscriber-delivery.ts +37 -0
- package/src/tail-op-import.ts +30 -0
- package/src/topic-lifecycle.ts +38 -2
- package/src/trial-replace-dialog.ts +163 -0
- package/src/types.ts +6 -6
- package/src/undo.ts +386 -73
- package/src/version-bar.ts +5 -1
- package/src/version.ts +1 -1
- package/src/ws-client.ts +208 -16
- package/src/ws-frame-limit.ts +1 -0
|
@@ -3,68 +3,100 @@
|
|
|
3
3
|
// burst of local edits settles. Both also seal the undo step, unifying
|
|
4
4
|
// "checkpoint" and "undo boundary": a deliberate save, an auto-seal on
|
|
5
5
|
// idle, and a modeler's pointerUp all produce the same Ctrl-Z boundary.
|
|
6
|
+
//
|
|
7
|
+
// The undo seal happens on every call. One writer serves both paths and
|
|
8
|
+
// writes a marker per call; calls made while a write is in flight share the
|
|
9
|
+
// next one, anchored at the state when it writes, which holds every call it
|
|
10
|
+
// covers. So an app can call `createCheckpoint` at the end of every user
|
|
11
|
+
// action without waiting on the network or handling a refusal.
|
|
6
12
|
// Default auto-checkpoint debounce: sealed this long after the last
|
|
7
13
|
// local edit, so every app gets a version-history timeline without
|
|
8
|
-
// writing checkpoint code.
|
|
9
|
-
// against snapshot-blob churn. Override or disable (0) via
|
|
14
|
+
// writing checkpoint code. Override or disable (0) via
|
|
10
15
|
// `doc.setAutoCheckpointIntervalMs(...)`.
|
|
11
16
|
const AUTO_CHECKPOINT_DEFAULT_MS = 60_000;
|
|
17
|
+
// Retry delay after a failed write, doubling per consecutive failure up to
|
|
18
|
+
// the ceiling. Calls made meanwhile join the retried write.
|
|
19
|
+
export const RETRY_BASE_MS = 5_000;
|
|
20
|
+
const RETRY_CEILING_MS = 10 * 60_000;
|
|
21
|
+
// A refusal the next attempt may not meet: a network failure, a timeout, a
|
|
22
|
+
// rate limit, or a server fault. Anything else (no edit access, a missing
|
|
23
|
+
// document) answers the same way however often it is asked.
|
|
24
|
+
function isRetryable(err) {
|
|
25
|
+
const status = err?.status;
|
|
26
|
+
if (typeof status !== 'number')
|
|
27
|
+
return true;
|
|
28
|
+
return status === 408 || status === 429 || status >= 500;
|
|
29
|
+
}
|
|
30
|
+
function rejectAll(waiters, err) {
|
|
31
|
+
for (const w of waiters)
|
|
32
|
+
w.reject(err);
|
|
33
|
+
}
|
|
34
|
+
function resolveAll(waiters, checkpoint) {
|
|
35
|
+
for (const w of waiters)
|
|
36
|
+
w.resolve(checkpoint);
|
|
37
|
+
}
|
|
12
38
|
export class CheckpointScheduler {
|
|
13
39
|
host;
|
|
14
40
|
// Injected checkpoint-create hook (the Document owns no HTTP client).
|
|
15
|
-
// `null` on offline / test paths; a manual `create` then
|
|
41
|
+
// `null` on offline / test paths; a manual `create` then rejects.
|
|
16
42
|
_creator = null;
|
|
17
|
-
// Debounce timer
|
|
18
|
-
// `_lastSeq` skips a fire that would clobber a manual checkpoint at
|
|
19
|
-
// the same seq.
|
|
43
|
+
// Debounce timer. `_autoIntervalMs === 0` disables it.
|
|
20
44
|
_autoTimer = null;
|
|
21
45
|
_autoIntervalMs = AUTO_CHECKPOINT_DEFAULT_MS;
|
|
22
|
-
|
|
46
|
+
// Calls waiting for the next marker, and whether the debounce wants one.
|
|
47
|
+
_waiters = [];
|
|
48
|
+
_autoWanted = false;
|
|
49
|
+
// The frame the newest request took, which becomes the picture of the
|
|
50
|
+
// marker that covers it. Taken with the batch, like the waiters.
|
|
51
|
+
_frame = null;
|
|
52
|
+
// The newest marker written, so a write at the same seq resolves to it
|
|
53
|
+
// instead of writing again. The server Put is last-write-wins, so a
|
|
54
|
+
// second write there would only replace one entry with an identical one.
|
|
55
|
+
_last = null;
|
|
56
|
+
// Earliest time the next write may start, and the timer that starts it.
|
|
57
|
+
_nextWriteAt = 0;
|
|
58
|
+
_flushTimer = null;
|
|
59
|
+
_flushing = false;
|
|
60
|
+
_failures = 0;
|
|
61
|
+
// Bumped when the Document detaches, so a write in progress across a close
|
|
62
|
+
// stops touching the queue the close already settled.
|
|
63
|
+
_epoch = 0;
|
|
23
64
|
constructor(host) {
|
|
24
65
|
this.host = host;
|
|
25
66
|
}
|
|
26
67
|
setCreator(creator) {
|
|
27
68
|
this._creator = creator;
|
|
28
69
|
}
|
|
29
|
-
// Seal
|
|
30
|
-
|
|
70
|
+
// Seal the undo step now and resolve to the marker that covers this call.
|
|
71
|
+
create() {
|
|
31
72
|
if (!this.host.isAttached()) {
|
|
32
|
-
|
|
73
|
+
return Promise.reject(new Error('Document is closed'));
|
|
33
74
|
}
|
|
34
75
|
if (this.host.docId() === null) {
|
|
35
|
-
|
|
76
|
+
return Promise.reject(new Error('createCheckpoint: Document has no server identity'));
|
|
36
77
|
}
|
|
37
78
|
if (this._creator === null) {
|
|
38
|
-
|
|
79
|
+
return Promise.reject(new Error('createCheckpoint: no creator attached. Opened via the SDK factory?'));
|
|
39
80
|
}
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
// folding into the pre-checkpoint one.
|
|
81
|
+
// Synchronous, so a mutate after this call starts the next undo step
|
|
82
|
+
// however long the marker takes.
|
|
43
83
|
this.host.sealUndoStep();
|
|
44
|
-
//
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
throw new Error('createCheckpoint: the document has changes that are not saved yet');
|
|
61
|
-
}
|
|
62
|
-
const result = await this._creator();
|
|
63
|
-
// Record the seq so a pending auto-checkpoint at the same version
|
|
64
|
-
// skips its fire. The server Put is unconditional (last-write-wins),
|
|
65
|
-
// so without this an idle period right after a manual save would
|
|
66
|
-
// replace the manual entry with an auto one.
|
|
67
|
-
this._lastSeq = result.version;
|
|
84
|
+
// Nothing since the newest marker: it already restores this state.
|
|
85
|
+
const last = this._last;
|
|
86
|
+
if (last !== null &&
|
|
87
|
+
!this.host.hasUnsavedOps() &&
|
|
88
|
+
last.version === this.host.currentSeq()) {
|
|
89
|
+
return Promise.resolve(last);
|
|
90
|
+
}
|
|
91
|
+
this._frame = this.host.captureFrame();
|
|
92
|
+
const result = new Promise((resolve, reject) => {
|
|
93
|
+
this._waiters.push({ resolve, reject });
|
|
94
|
+
});
|
|
95
|
+
// Apps call this at the end of every action without awaiting it. A
|
|
96
|
+
// rejection still reaches a caller that awaits; one that does not is not
|
|
97
|
+
// reported as unhandled.
|
|
98
|
+
result.catch(() => { });
|
|
99
|
+
this._schedule();
|
|
68
100
|
return result;
|
|
69
101
|
}
|
|
70
102
|
// Configure the auto-checkpoint debounce; `0` disables. Returns the
|
|
@@ -95,48 +127,213 @@ export class CheckpointScheduler {
|
|
|
95
127
|
}
|
|
96
128
|
this._autoTimer = setTimeout(() => {
|
|
97
129
|
this._autoTimer = null;
|
|
98
|
-
|
|
130
|
+
this._fireAuto();
|
|
99
131
|
}, this._autoIntervalMs);
|
|
100
132
|
}
|
|
101
|
-
// Cancel a pending auto-checkpoint
|
|
133
|
+
// Cancel a pending auto-checkpoint.
|
|
102
134
|
cancelAuto() {
|
|
103
135
|
if (this._autoTimer !== null) {
|
|
104
136
|
clearTimeout(this._autoTimer);
|
|
105
137
|
this._autoTimer = null;
|
|
106
138
|
}
|
|
107
139
|
}
|
|
108
|
-
|
|
140
|
+
// The Document is closing or being parked. Calls still waiting get one
|
|
141
|
+
// marker now, outside the spacing, when every local op is acked; otherwise
|
|
142
|
+
// they reject, since no marker can cover writes the server does not have.
|
|
143
|
+
// Must run while the host still answers `currentSeq`.
|
|
144
|
+
detach() {
|
|
145
|
+
this.cancelAuto();
|
|
146
|
+
if (this._flushTimer !== null) {
|
|
147
|
+
clearTimeout(this._flushTimer);
|
|
148
|
+
this._flushTimer = null;
|
|
149
|
+
}
|
|
150
|
+
this._epoch += 1;
|
|
151
|
+
this._flushing = false;
|
|
152
|
+
this._autoWanted = false;
|
|
153
|
+
const batch = this._waiters;
|
|
154
|
+
this._waiters = [];
|
|
155
|
+
const frame = this._frame;
|
|
156
|
+
this._frame = null;
|
|
157
|
+
if (batch.length === 0)
|
|
158
|
+
return;
|
|
159
|
+
const seq = this.host.currentSeq();
|
|
160
|
+
const creator = this._creator;
|
|
161
|
+
if (creator === null || seq === null || this.host.hasUnsavedOps()) {
|
|
162
|
+
rejectAll(batch, new Error('Document is closed'));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (this._last !== null && this._last.version === seq) {
|
|
166
|
+
resolveAll(batch, this._last);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
creator({ version: seq }).then((checkpoint) => {
|
|
170
|
+
this._last = checkpoint;
|
|
171
|
+
this._picture(frame, checkpoint.version);
|
|
172
|
+
resolveAll(batch, checkpoint);
|
|
173
|
+
}, (err) => rejectAll(batch, err));
|
|
174
|
+
}
|
|
175
|
+
_fireAuto() {
|
|
109
176
|
if (!this.host.isAutoAllowed())
|
|
110
177
|
return;
|
|
111
178
|
if (this._creator === null)
|
|
112
179
|
return;
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
180
|
+
// Seal undo now so the user gets the Ctrl-Z boundary at their idle
|
|
181
|
+
// point whether or not a marker is written. An edit to another stream
|
|
182
|
+
// of the document leaves `currentSeq` where it was, so the check below
|
|
183
|
+
// can skip the marker after such an edit, and the step still seals.
|
|
184
|
+
this.host.sealUndoStep();
|
|
185
|
+
// Already marked at this exact version with nothing local outstanding:
|
|
186
|
+
// the newest marker already restores this state.
|
|
187
|
+
if (!this.host.hasUnsavedOps() &&
|
|
188
|
+
this._last !== null &&
|
|
189
|
+
this._last.version === this.host.currentSeq()) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this._frame = this.host.captureFrame();
|
|
193
|
+
this._autoWanted = true;
|
|
194
|
+
this._schedule();
|
|
195
|
+
}
|
|
196
|
+
_wanted() {
|
|
197
|
+
return this._waiters.length > 0 || this._autoWanted;
|
|
198
|
+
}
|
|
199
|
+
_schedule() {
|
|
200
|
+
if (this._flushing || this._flushTimer !== null)
|
|
119
201
|
return;
|
|
120
|
-
if (!this.
|
|
202
|
+
if (!this._wanted())
|
|
121
203
|
return;
|
|
204
|
+
const wait = this._nextWriteAt - Date.now();
|
|
205
|
+
if (wait <= 0) {
|
|
206
|
+
// Calls made in the same task still join: the write takes its batch
|
|
207
|
+
// only after awaiting the acks.
|
|
208
|
+
void this._flush();
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
this._flushTimer = setTimeout(() => {
|
|
212
|
+
this._flushTimer = null;
|
|
213
|
+
void this._flush();
|
|
214
|
+
}, wait);
|
|
215
|
+
}
|
|
216
|
+
_noteFailure() {
|
|
217
|
+
this._failures += 1;
|
|
218
|
+
const delay = Math.min(RETRY_BASE_MS * 2 ** (this._failures - 1), RETRY_CEILING_MS);
|
|
219
|
+
this._nextWriteAt = Date.now() + delay;
|
|
220
|
+
}
|
|
221
|
+
async _flush() {
|
|
222
|
+
if (!this._wanted())
|
|
223
|
+
return;
|
|
224
|
+
const epoch = this._epoch;
|
|
225
|
+
this._flushing = true;
|
|
226
|
+
try {
|
|
227
|
+
await this._write(epoch);
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
if (epoch === this._epoch) {
|
|
231
|
+
this._flushing = false;
|
|
232
|
+
this._schedule();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async _write(epoch) {
|
|
237
|
+
// The anchor is a SERVER seq, and an op the app just committed holds one
|
|
238
|
+
// only once it is acked, so a marker written with writes outstanding
|
|
239
|
+
// would sit below the work the calls it covers are saving, and restoring
|
|
240
|
+
// it would lose them. Wait for the acks, then confirm synchronously that
|
|
241
|
+
// nothing was committed between the wait ending and the anchor being
|
|
242
|
+
// read.
|
|
243
|
+
for (;;) {
|
|
244
|
+
const saved = await this.host.whenLocalOpsSaved();
|
|
245
|
+
if (epoch !== this._epoch)
|
|
246
|
+
return;
|
|
247
|
+
if (!saved) {
|
|
248
|
+
// Writing anyway would produce a marker that looks like a saved
|
|
249
|
+
// version and restores to a state missing the work. The calls it
|
|
250
|
+
// would have covered are told instead; the debounce retries on the
|
|
251
|
+
// next local edit.
|
|
252
|
+
const batch = this._waiters;
|
|
253
|
+
this._waiters = [];
|
|
254
|
+
this._autoWanted = false;
|
|
255
|
+
this._frame = null;
|
|
256
|
+
this._noteFailure();
|
|
257
|
+
rejectAll(batch, new Error('createCheckpoint: the document has changes that are not saved yet'));
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
if (!this.host.hasUnsavedOps())
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
122
263
|
const seq = this.host.currentSeq();
|
|
123
|
-
|
|
264
|
+
const creator = this._creator;
|
|
265
|
+
if (creator === null || seq === null) {
|
|
266
|
+
const batch = this._waiters;
|
|
267
|
+
this._waiters = [];
|
|
268
|
+
this._autoWanted = false;
|
|
269
|
+
this._frame = null;
|
|
270
|
+
rejectAll(batch, new Error(creator === null
|
|
271
|
+
? 'createCheckpoint: no creator attached'
|
|
272
|
+
: 'createCheckpoint: the document has no resolved version yet'));
|
|
124
273
|
return;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
274
|
+
}
|
|
275
|
+
if (this._autoWanted && this._waiters.length === 0) {
|
|
276
|
+
// An auto marker alone is dropped once the document has moved into a
|
|
277
|
+
// history checkout.
|
|
278
|
+
if (!this.host.isAutoAllowed()) {
|
|
279
|
+
this._autoWanted = false;
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Every call queued up to this point is covered by a marker at `seq`;
|
|
284
|
+
// a call after it waits for the next one.
|
|
285
|
+
const batch = this._waiters;
|
|
286
|
+
const autoOnly = batch.length === 0;
|
|
287
|
+
this._waiters = [];
|
|
288
|
+
this._autoWanted = false;
|
|
289
|
+
const frame = this._frame;
|
|
290
|
+
this._frame = null;
|
|
291
|
+
if (this._last !== null && this._last.version === seq) {
|
|
292
|
+
resolveAll(batch, this._last);
|
|
128
293
|
return;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.host.sealUndoStep();
|
|
294
|
+
}
|
|
295
|
+
let checkpoint;
|
|
132
296
|
try {
|
|
133
|
-
|
|
134
|
-
this._lastSeq = result.version;
|
|
297
|
+
checkpoint = await creator({ version: seq });
|
|
135
298
|
}
|
|
136
|
-
catch {
|
|
137
|
-
|
|
138
|
-
|
|
299
|
+
catch (err) {
|
|
300
|
+
if (epoch !== this._epoch) {
|
|
301
|
+
rejectAll(batch, new Error('Document is closed'));
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
this._noteFailure();
|
|
305
|
+
// An auto marker is best-effort, and the next local edit asks again.
|
|
306
|
+
if (autoOnly)
|
|
307
|
+
return;
|
|
308
|
+
if (isRetryable(err)) {
|
|
309
|
+
// Still owed a marker: the next write covers these calls too, and
|
|
310
|
+
// takes this frame unless a newer call has taken one since.
|
|
311
|
+
this._waiters = batch.concat(this._waiters);
|
|
312
|
+
this._frame ??= frame;
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
rejectAll(batch, err);
|
|
316
|
+
}
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
this._failures = 0;
|
|
320
|
+
if (this._last === null || checkpoint.version >= this._last.version) {
|
|
321
|
+
this._last = checkpoint;
|
|
139
322
|
}
|
|
323
|
+
this._picture(frame, checkpoint.version);
|
|
324
|
+
resolveAll(batch, checkpoint);
|
|
325
|
+
}
|
|
326
|
+
// Upload the frame the newest covered call took as the marker's picture,
|
|
327
|
+
// under the marker's own version, so the history pairs each entry with a
|
|
328
|
+
// picture of exactly that state. Best-effort: a marker without one keeps
|
|
329
|
+
// the picture the debounced capture leaves.
|
|
330
|
+
_picture(frame, version) {
|
|
331
|
+
if (frame === null)
|
|
332
|
+
return;
|
|
333
|
+
void frame.then((taken) => {
|
|
334
|
+
if (taken !== null)
|
|
335
|
+
this.host.uploadFrame(taken, version);
|
|
336
|
+
});
|
|
140
337
|
}
|
|
141
338
|
}
|
|
142
339
|
//# sourceMappingURL=document-checkpoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-checkpoints.js","sourceRoot":"","sources":["../src/document-checkpoints.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;
|
|
1
|
+
{"version":3,"file":"document-checkpoints.js","sourceRoot":"","sources":["../src/document-checkpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-commands.d.ts","sourceRoot":"","sources":["../src/document-commands.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAGzC,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,qBAAqB,CAAA;KAAE,GAC1C,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAK1C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAMxD,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1B,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"document-commands.d.ts","sourceRoot":"","sources":["../src/document-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,7 +218,6 @@ export class CommandMenu {
|
|
|
218
218
|
if (this._builtinCommands !== null)
|
|
219
219
|
return this._builtinCommands;
|
|
220
220
|
const hasHostedUi = () => this._hostedUi !== null;
|
|
221
|
-
const editable = () => !this.host.readOnly() && this.host.isLive();
|
|
222
221
|
const list = [
|
|
223
222
|
this._buildCommand('history', DOC_COMMAND_LABELS.history, 'document', DOC_COMMAND_SURFACES.history, hasHostedUi, async () => {
|
|
224
223
|
const hosted = this._hostedUi;
|
|
@@ -292,10 +291,13 @@ export class CommandMenu {
|
|
|
292
291
|
this.host.setName(newName);
|
|
293
292
|
}
|
|
294
293
|
}),
|
|
295
|
-
this._buildCommand('undo', DOC_COMMAND_LABELS.undo, 'edit', DOC_COMMAND_SURFACES.undo,
|
|
294
|
+
this._buildCommand('undo', DOC_COMMAND_LABELS.undo, 'edit', DOC_COMMAND_SURFACES.undo,
|
|
295
|
+
// `canUndo` carries the read-only gate per stream: the document can
|
|
296
|
+
// be read-only while a stream of it takes writes and holds the step.
|
|
297
|
+
() => this.host.isLive() && this.host.canUndo(), () => {
|
|
296
298
|
this.host.undo();
|
|
297
299
|
}),
|
|
298
|
-
this._buildCommand('redo', DOC_COMMAND_LABELS.redo, 'edit', DOC_COMMAND_SURFACES.redo, () =>
|
|
300
|
+
this._buildCommand('redo', DOC_COMMAND_LABELS.redo, 'edit', DOC_COMMAND_SURFACES.redo, () => this.host.isLive() && this.host.canRedo(), () => {
|
|
299
301
|
this.host.redo();
|
|
300
302
|
}),
|
|
301
303
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-commands.js","sourceRoot":"","sources":["../src/document-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-commands.js","sourceRoot":"","sources":["../src/document-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { JoinContent } from './join-content.js';
|
|
1
2
|
/** A document's root containers, each read whole, keyed as the document
|
|
2
3
|
* keys them. A map root reads back as the object an app sees through
|
|
3
4
|
* `doc.map(key)`, a list as its items, a text root as its string. The JSON
|
|
@@ -12,4 +13,13 @@ export type DocumentContents = Record<string, unknown>;
|
|
|
12
13
|
* and presigned entries are resolved to bytes.
|
|
13
14
|
*/
|
|
14
15
|
export declare function readDocumentContents(snapshot: Uint8Array | null, ops: readonly Uint8Array[]): DocumentContents;
|
|
16
|
+
/**
|
|
17
|
+
* Read every root of a join's decoded content.
|
|
18
|
+
*
|
|
19
|
+
* Frozen content is read as it stands, with no CRDT engine: it carries no tail
|
|
20
|
+
* (the conversion that would give it one is the platform's). CRDT content and
|
|
21
|
+
* a document with no snapshot are materialised with `ops`, as
|
|
22
|
+
* `readDocumentContents` does.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readJoinContents(content: JoinContent, ops: readonly Uint8Array[]): DocumentContents;
|
|
15
25
|
//# sourceMappingURL=document-contents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-contents.d.ts","sourceRoot":"","sources":["../src/document-contents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"document-contents.d.ts","sourceRoot":"","sources":["../src/document-contents.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUrD;;;0EAG0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,GAAG,IAAI,EAC3B,GAAG,EAAE,SAAS,UAAU,EAAE,GACzB,gBAAgB,CAKlB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,SAAS,UAAU,EAAE,GACzB,gBAAgB,CAQlB"}
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
// and not `ensureWasmReady`: its caller holds the bytes already, which means
|
|
26
26
|
// something upstream has opened a document and readied the runtime.
|
|
27
27
|
import { LoroDoc } from './wasm-runtime.js';
|
|
28
|
+
import { isReservedRootName } from './references.js';
|
|
29
|
+
import { importTailOp } from './tail-op-import.js';
|
|
28
30
|
import { META_KEY, flattenPagedLookup, isPagedMarker, pagedRootKey, } from './record-paging.js';
|
|
29
31
|
/**
|
|
30
32
|
* Materialise a document from a join's bytes and read every root.
|
|
@@ -39,9 +41,26 @@ export function readDocumentContents(snapshot, ops) {
|
|
|
39
41
|
if (snapshot !== null)
|
|
40
42
|
doc.import(snapshot);
|
|
41
43
|
for (const op of ops)
|
|
42
|
-
doc
|
|
44
|
+
importTailOp(doc, op);
|
|
43
45
|
return readRoots(doc);
|
|
44
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Read every root of a join's decoded content.
|
|
49
|
+
*
|
|
50
|
+
* Frozen content is read as it stands, with no CRDT engine: it carries no tail
|
|
51
|
+
* (the conversion that would give it one is the platform's). CRDT content and
|
|
52
|
+
* a document with no snapshot are materialised with `ops`, as
|
|
53
|
+
* `readDocumentContents` does.
|
|
54
|
+
*/
|
|
55
|
+
export function readJoinContents(content, ops) {
|
|
56
|
+
if (content.kind === 'frozen') {
|
|
57
|
+
if (ops.length > 0) {
|
|
58
|
+
throw new Error('Frozen content arrived with changes above it, so it is not the whole document.');
|
|
59
|
+
}
|
|
60
|
+
return content.content.toJSON();
|
|
61
|
+
}
|
|
62
|
+
return readDocumentContents(content.kind === 'crdt' ? content.bytes : null, ops);
|
|
63
|
+
}
|
|
45
64
|
// A root container id is `cid:root-<name>:<Type>`; the name arrives as the
|
|
46
65
|
// key, so only the type suffix is read.
|
|
47
66
|
function containerType(containerId) {
|
|
@@ -52,6 +71,9 @@ function readRoots(doc) {
|
|
|
52
71
|
// Root ids only, so the enumeration converts nothing: each root below
|
|
53
72
|
// decides its own read.
|
|
54
73
|
for (const [key, containerId] of Object.entries(doc.getShallowValue())) {
|
|
74
|
+
// The document's references and read marks are not content.
|
|
75
|
+
if (isReservedRootName(key))
|
|
76
|
+
continue;
|
|
55
77
|
switch (containerType(String(containerId))) {
|
|
56
78
|
case 'Map':
|
|
57
79
|
contents[key] = readMapRoot(doc, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-contents.js","sourceRoot":"","sources":["../src/document-contents.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,qCAAqC;AACrC,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,8CAA8C;AAE9C,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,oEAAoE;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"document-contents.js","sourceRoot":"","sources":["../src/document-contents.ts"],"names":[],"mappings":"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"}
|