@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
package/dist/record-paging.js
CHANGED
|
@@ -55,8 +55,14 @@ function gunzip(bytes) {
|
|
|
55
55
|
* the body. Verbatim so the substrate and SDK name the same fields. */
|
|
56
56
|
export const TAG_FIELD = 'type';
|
|
57
57
|
export const BODY_FIELD = 'params';
|
|
58
|
-
/** Root container keys the record store occupies on a document
|
|
58
|
+
/** Root container keys the record store occupies on a document, and the one
|
|
59
|
+
* `meta` entry that is not paging bookkeeping. Fixed names rather than a
|
|
60
|
+
* document's configurable `rootKey`: a record store is one shape wherever it
|
|
61
|
+
* is written, so the encoding it is written in cannot change where a reader
|
|
62
|
+
* looks for it. */
|
|
59
63
|
export const META_KEY = 'meta';
|
|
64
|
+
export const SCHEMA_VERSION_KEY = 'schema_version';
|
|
65
|
+
export const HEADER_KEY = 'header';
|
|
60
66
|
export const RECORDS_KEY = 'instances';
|
|
61
67
|
export const ORDER_KEY = 'instance_order';
|
|
62
68
|
/** Prefix on the `meta` key marking ONE root map paged (`meta` holds
|
|
@@ -140,9 +146,27 @@ export const PAGE_TAG = '__page__';
|
|
|
140
146
|
* call, so no record can be mistaken for a page or a tombstone whatever it
|
|
141
147
|
* holds. */
|
|
142
148
|
export const RESERVED_KEY_PREFIX = 'brass:';
|
|
143
|
-
/** Whether `key`
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
/** Whether `key` in the root map `rootKey` is a paged marker
|
|
150
|
+
* (`PAGED_ROOT_PREFIX`). `meta` is a root an app reads and writes like any
|
|
151
|
+
* other (an import keeps `schema_version` there), so the markers are hidden
|
|
152
|
+
* from every read of it and refused on write: an app that copies or clears
|
|
153
|
+
* `meta` generically would otherwise delete one, and every reader after that
|
|
154
|
+
* takes the unpaged path over a map holding pages, seeing the store's
|
|
155
|
+
* `brass:` keys in place of its records. A `paged:` key in any other root is
|
|
156
|
+
* an ordinary record key. */
|
|
157
|
+
export function isPagedMarkerEntry(rootKey, key) {
|
|
158
|
+
return rootCarriesMarkers(rootKey) && key.startsWith(PAGED_ROOT_PREFIX);
|
|
159
|
+
}
|
|
160
|
+
/** Whether the root map `rootKey` is the one the paged markers are kept in,
|
|
161
|
+
* so a reader can skip the per-key test on every other root. */
|
|
162
|
+
export function rootCarriesMarkers(rootKey) {
|
|
163
|
+
return rootKey === META_KEY;
|
|
164
|
+
}
|
|
165
|
+
/** Whether `key` names one of the platform's own entries rather than a record:
|
|
166
|
+
* the store's bookkeeping under `RESERVED_KEY_PREFIX` in any root, and, when
|
|
167
|
+
* the root is named, a paged marker in `meta`. */
|
|
168
|
+
export function isReservedKey(key, rootKey = null) {
|
|
169
|
+
return key.startsWith(RESERVED_KEY_PREFIX) || isPagedMarkerEntry(rootKey, key);
|
|
146
170
|
}
|
|
147
171
|
/** The one key a reader cannot carry as an ordinary object property.
|
|
148
172
|
*
|
|
@@ -163,12 +187,16 @@ const UNCARRIABLE_RECORD_KEY = '__proto__';
|
|
|
163
187
|
* is from the key alone. The alternative, escaping, would put the escape on
|
|
164
188
|
* the read of every key of every map, paged or not, and a store that pages
|
|
165
189
|
* later cannot escape what it already holds. */
|
|
166
|
-
export function assertUsableRecordKey(key) {
|
|
190
|
+
export function assertUsableRecordKey(key, rootKey = null) {
|
|
167
191
|
if (key === UNCARRIABLE_RECORD_KEY) {
|
|
168
192
|
throw new Error(`Key "${key}" is reserved: a record key cannot be ` +
|
|
169
193
|
`"${UNCARRIABLE_RECORD_KEY}", which names an object's prototype ` +
|
|
170
194
|
`rather than one of its entries.`);
|
|
171
195
|
}
|
|
196
|
+
if (isPagedMarkerEntry(rootKey, key)) {
|
|
197
|
+
throw new Error(`Key "${key}" is reserved: a key in "${META_KEY}" cannot start with ` +
|
|
198
|
+
`"${PAGED_ROOT_PREFIX}", which marks how a collection is stored.`);
|
|
199
|
+
}
|
|
172
200
|
if (!isReservedKey(key))
|
|
173
201
|
return;
|
|
174
202
|
throw new Error(`Key "${key}" is reserved: a record key cannot start with ` +
|
|
@@ -213,12 +241,25 @@ export function repackRecord(packed, value) {
|
|
|
213
241
|
record[BODY_FIELD],
|
|
214
242
|
];
|
|
215
243
|
}
|
|
216
|
-
/**
|
|
217
|
-
*
|
|
244
|
+
/**
|
|
245
|
+
* The stored value a tag and a body carry: the body itself when there is no
|
|
246
|
+
* tag, else the `{ type, params }` pair a typed record was split into.
|
|
247
|
+
*
|
|
248
|
+
* A null tag is not an absent field, it is the statement that this record was
|
|
249
|
+
* never split: a map holds whatever its writer assigned and an app's own value
|
|
250
|
+
* has no tag to take off it. Every reader that rebuilds a value from the two
|
|
251
|
+
* comes through here, because a reader that built the pair unconditionally
|
|
252
|
+
* would hand an app `{ type: null, params: 5 }` where the same record read out
|
|
253
|
+
* of a CRDT document is `5`, which is the encoding showing through.
|
|
254
|
+
*/
|
|
255
|
+
export function recordValueOf(tag, body) {
|
|
256
|
+
if (tag === null)
|
|
257
|
+
return body;
|
|
258
|
+
return { [TAG_FIELD]: tag, [BODY_FIELD]: body };
|
|
259
|
+
}
|
|
260
|
+
/** The stored value a page triple carries. See `recordValueOf`. */
|
|
218
261
|
export function unpackRecord(packed) {
|
|
219
|
-
|
|
220
|
-
return packed[2];
|
|
221
|
-
return { [TAG_FIELD]: packed[1], [BODY_FIELD]: packed[2] };
|
|
262
|
+
return recordValueOf(packed[1], packed[2]);
|
|
222
263
|
}
|
|
223
264
|
/** The tag + body a page triple names, for a reader that walks the two
|
|
224
265
|
* separately, or null when the triple packs a whole value that is not a
|
|
@@ -311,30 +352,54 @@ export function encodeRecordForPage(tag, body) {
|
|
|
311
352
|
* records; the split exists only so the writer frees each parsed body
|
|
312
353
|
* first. */
|
|
313
354
|
export function encodePageFromEncoded(encoded, keys) {
|
|
355
|
+
const bytes = encodePageBytes(encoded, keys);
|
|
356
|
+
return {
|
|
357
|
+
body: strFromU8(bytes.body, true),
|
|
358
|
+
keys: strFromU8(bytes.keys, true),
|
|
359
|
+
chars: bytes.chars,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/** Encode a page to the gzip bytes `encodePageFromEncoded` widens into
|
|
363
|
+
* strings. Byte-identical either way, so a page written into a container and
|
|
364
|
+
* a page written into a byte store hold the same compressed run. */
|
|
365
|
+
export function encodePageBytes(encoded, keys) {
|
|
314
366
|
const body = '[' + encoded.join(',') + ']';
|
|
315
367
|
return {
|
|
316
|
-
body:
|
|
317
|
-
keys:
|
|
368
|
+
body: gzipJsonBytes(body),
|
|
369
|
+
keys: gzipJsonBytes(JSON.stringify(keys)),
|
|
318
370
|
chars: body.length,
|
|
319
371
|
};
|
|
320
372
|
}
|
|
321
|
-
|
|
322
|
-
|
|
373
|
+
/** Gzip a JSON string to raw bytes. The latin1 string a page container stores
|
|
374
|
+
* is these bytes widened; a store that holds bytes directly keeps them as
|
|
375
|
+
* they are, so one compressor serves both. */
|
|
376
|
+
export function gzipJsonBytes(json) {
|
|
377
|
+
return gzip(strToU8(json));
|
|
323
378
|
}
|
|
324
|
-
/**
|
|
379
|
+
/** Gunzip bytes holding UTF-8 text. */
|
|
380
|
+
export function gunzipText(bytes) {
|
|
381
|
+
return strFromU8(gunzip(bytes));
|
|
382
|
+
}
|
|
383
|
+
/** Parse gzipped JSON bytes as an array. Returns null for anything that does
|
|
325
384
|
* not decompress to a JSON array, so a reader tolerates a corrupt or stray
|
|
326
385
|
* page rather than throwing. */
|
|
327
|
-
function
|
|
328
|
-
if (typeof value !== 'string')
|
|
329
|
-
return null;
|
|
386
|
+
export function decodeGzippedJsonArray(bytes) {
|
|
330
387
|
try {
|
|
331
|
-
const parsed = JSON.parse(strFromU8(gunzip(
|
|
388
|
+
const parsed = JSON.parse(strFromU8(gunzip(bytes)));
|
|
332
389
|
return Array.isArray(parsed) ? parsed : null;
|
|
333
390
|
}
|
|
334
391
|
catch {
|
|
335
392
|
return null;
|
|
336
393
|
}
|
|
337
394
|
}
|
|
395
|
+
/** Parse one of a page's stored strings. Returns null for anything that does
|
|
396
|
+
* not decompress to a JSON array, so a reader tolerates a corrupt or stray
|
|
397
|
+
* page rather than throwing. */
|
|
398
|
+
function decodePageField(value) {
|
|
399
|
+
if (typeof value !== 'string')
|
|
400
|
+
return null;
|
|
401
|
+
return decodeGzippedJsonArray(strToU8(value, true));
|
|
402
|
+
}
|
|
338
403
|
/** The record keys a page holds, from the page's own `keys` string. Reading
|
|
339
404
|
* this field alone is what makes learning a store's key locations cost the
|
|
340
405
|
* keys rather than every record body. */
|
|
@@ -342,8 +407,45 @@ export function decodePageKeys(keysField) {
|
|
|
342
407
|
const parsed = decodePageField(keysField);
|
|
343
408
|
if (parsed === null)
|
|
344
409
|
return [];
|
|
410
|
+
return keyStrings(parsed);
|
|
411
|
+
}
|
|
412
|
+
/** The record keys a page holds, from the gzipped bytes of its key list. The
|
|
413
|
+
* same answer `decodePageKeys` gives for a container-stored page. */
|
|
414
|
+
export function decodePageKeyBytes(keysBytes) {
|
|
415
|
+
const parsed = decodeGzippedJsonArray(keysBytes);
|
|
416
|
+
if (parsed === null)
|
|
417
|
+
return [];
|
|
418
|
+
return keyStrings(parsed);
|
|
419
|
+
}
|
|
420
|
+
function keyStrings(parsed) {
|
|
345
421
|
return parsed.filter((k) => typeof k === 'string');
|
|
346
422
|
}
|
|
423
|
+
/** Zip a page's decoded key list and `[tag, body]` pairs back into triples. A
|
|
424
|
+
* key with no pair (or a pair with no key) is dropped: the two arrays are
|
|
425
|
+
* written together and index each other, so a length mismatch means a page
|
|
426
|
+
* nothing can read as records. */
|
|
427
|
+
function zipPageRecords(keys, pairs) {
|
|
428
|
+
const out = [];
|
|
429
|
+
for (let i = 0; i < keys.length && i < pairs.length; i += 1) {
|
|
430
|
+
const pair = pairs[i];
|
|
431
|
+
if (!Array.isArray(pair))
|
|
432
|
+
continue;
|
|
433
|
+
if (typeof pair[0] !== 'string' && pair[0] !== null)
|
|
434
|
+
continue;
|
|
435
|
+
out.push([keys[i], pair[0], pair[1]]);
|
|
436
|
+
}
|
|
437
|
+
return out;
|
|
438
|
+
}
|
|
439
|
+
/** A page's records from the gzipped bytes of its two stored strings. */
|
|
440
|
+
export function decodePageRecordBytes(keysBytes, bodyBytes) {
|
|
441
|
+
const keys = decodePageKeyBytes(keysBytes);
|
|
442
|
+
if (keys.length === 0)
|
|
443
|
+
return [];
|
|
444
|
+
const pairs = decodeGzippedJsonArray(bodyBytes);
|
|
445
|
+
if (pairs === null)
|
|
446
|
+
return [];
|
|
447
|
+
return zipPageRecords(keys, pairs);
|
|
448
|
+
}
|
|
347
449
|
/** A page's records, zipped back into `[key, tag, body]` triples from the two
|
|
348
450
|
* strings the page stores. A key with no body (or a body with no key) is
|
|
349
451
|
* dropped: the two arrays are written together and index each other, so a
|
|
@@ -358,16 +460,7 @@ export function decodePageRecords(page) {
|
|
|
358
460
|
const pairs = decodePageField(fields[BODY_FIELD]);
|
|
359
461
|
if (pairs === null)
|
|
360
462
|
return [];
|
|
361
|
-
|
|
362
|
-
for (let i = 0; i < keys.length && i < pairs.length; i += 1) {
|
|
363
|
-
const pair = pairs[i];
|
|
364
|
-
if (!Array.isArray(pair))
|
|
365
|
-
continue;
|
|
366
|
-
if (typeof pair[0] !== 'string' && pair[0] !== null)
|
|
367
|
-
continue;
|
|
368
|
-
out.push([keys[i], pair[0], pair[1]]);
|
|
369
|
-
}
|
|
370
|
-
return out;
|
|
463
|
+
return zipPageRecords(keys, pairs);
|
|
371
464
|
}
|
|
372
465
|
// How many bodies to weigh when estimating a population's record width. A
|
|
373
466
|
// stride across the whole population rather than a prefix: a population is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-paging.js","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record-paging.js","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,oCAAoC;AACpC,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,uBAAuB;AACvB,6EAA6E;AAC7E,qEAAqE;AACrE,4BAA4B;AAC5B,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,iCAAiC;AACjC,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,6BAA6B;AAE7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAgBlE,IAAI,UAA0C,CAAC;AAE/C,SAAS,WAAW;IAClB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GACR,UAGD,CAAC,OAAO,CAAC;YACV,UAAU;gBACP,IAAI,EAAE,gBAAgB,EAAE,CAAC,WAAW,CAA6B;oBAClE,IAAI,CAAC;QACT,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,IAAI,CAAC,KAAiB;IAC7B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,MAAM,CAAC,KAAiB;IAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;wEACwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC;;;;oBAIoB;AACpB,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6BqC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,GAAG,iBAAiB,GAAG,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED;;;;;;;;6EAQ6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC;;;2DAG2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC;;;;;;;;;aASa;AACb,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C;;;;;;;8BAO8B;AAC9B,MAAM,UAAU,kBAAkB,CAAC,OAAsB,EAAE,GAAW;IACpE,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC1E,CAAC;AAED;iEACiE;AACjE,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,OAAO,OAAO,KAAK,QAAQ,CAAC;AAC9B,CAAC;AAED;;mDAEmD;AACnD,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,UAAyB,IAAI;IACtE,OAAO,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;yCAUyC;AACzC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C;;;;;;iDAMiD;AACjD,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,UAAyB,IAAI;IAE7B,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,wCAAwC;YACjD,IAAI,sBAAsB,uCAAuC;YACjE,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,4BAA4B,QAAQ,sBAAsB;YACnE,IAAI,iBAAiB,4CAA4C,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO;IAChC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,gDAAgD;QACzD,IAAI,mBAAmB,8CAA8C;QACrE,uBAAuB,CAC1B,CAAC;AACJ,CAAC;AAED;;;2CAG2C;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEzD;;;;;;;;mBAQmB;AACnB,MAAM,gBAAgB,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEpD;;;yEAGyE;AACzE,MAAM,UAAU,cAAc,CAAI,GAAW,EAAE,KAAQ;IACrD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;;;oEAIoE;AACpE,MAAM,UAAU,YAAY,CAC1B,MAA6B,EAC7B,KAAc;IAEd,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO;QACL,MAAM,CAAC,CAAC,CAAC;QACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC;KACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,GAAkB,EAAE,IAAa;IAC7D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;qCASqC;AACrC,MAAM,UAAU,gBAAgB,CAC9B,MAA6B;IAE7B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,GAAG,cAAc,GAAG,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,GAAG,gBAAgB,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;wDAewD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,OAAO,GAAG,mBAAmB,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;AACnD,CAAC;AAED;;0EAE0E;AAC1E,MAAM,UAAU,mBAAmB,CACjC,GAAW;IAEX,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AASD;;;;;;;;;;kBAUkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAatC;;;8EAG8E;AAC9E,MAAM,UAAU,UAAU,CAAI,OAA0B;IACtD,OAAO,qBAAqB,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;;;wEAIwE;AACxE,MAAM,UAAU,mBAAmB,CAAI,GAAkB,EAAE,IAAO;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;aAGa;AACb,MAAM,UAAU,qBAAqB,CACnC,OAAiB,EACjB,IAAc;IAEd,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC;AAUD;;qEAEqE;AACrE,MAAM,UAAU,eAAe,CAC7B,OAAiB,EACjB,IAAc;IAEd,MAAM,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED;;+CAE+C;AAC/C,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;iCAEiC;AACjC,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;iCAEiC;AACjC,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;0CAE0C;AAC1C,MAAM,UAAU,cAAc,CAAC,SAAkB;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;sEACsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,SAAqB;IACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED;;;mCAGmC;AACnC,SAAS,cAAc,CACrB,IAAuB,EACvB,KAAyB;IAEzB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAS;QAC9D,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CACnC,SAAqB,EACrB,SAAqB;IAErB,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED;;;gEAGgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;;;;;;;0DAY0D;AAC1D,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,MAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IACtE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;YACvE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;YAC5D,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,CAAC;AAED;;8CAE8C;AAC9C,MAAM,UAAU,cAAc,CAAC,YAAqB;IAClD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;4CAO4C;AAC5C,MAAM,UAAU,YAAY,CAC1B,WAAmB,EACnB,YAAqB;IAErB,IAAI,WAAW,IAAI,mBAAmB;QAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;kBAEkB;AAClB,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,GAAG,GAAI,KAAiC,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;kDACkD;AAClD,MAAM,UAAU,iBAAiB,CAC/B,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CA6B8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEvD,6EAA6E;AAC7E,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,IAAY,EACZ,OAAe;IAEf,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,GAAG,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACpD,CAAC;AAuBD;;wDAEwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACnE,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;uCAOuC;AACvC,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,SAAS;QACT,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;QAC7C,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC;KAC5C,CAAC;AACJ,CAAC;AASD;;;;8DAI8D;AAC9D,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,OAAsB;IAEtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACvC,CAAC;IACR,IAAI,GAAG,GAAG,IAA+B,CAAC;IAC1C,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1E,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAI,KAAiC,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAe,EACf,GAAW,EACX,IAAa,EACb,OAAsB;IAEtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO;QACL,GAAG,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAChD,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC;AAeD;;;;;;;;;yBASyB;AACzB,MAAM,UAAU,kBAAkB,CAChC,MAA+B,EAC/B,KAAc,EACd,IAAyB;IAEzB,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,8CAA8C;IAC9C,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,sCAAsC;IACtC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;oBACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;oBAC7B,MAAM,EAAE,KAAK;iBACd,CAAC;gBACF,IAAI,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM;QACV,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAClB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,6EAA6E;IAC7E,mEAAmE;IACnE,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IACD,2EAA2E;IAC3E,sEAAsE;IACtE,uEAAuE;IACvE,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,QAAQ;IACR,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YAAE,SAAS;QACrE,IAAI,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare function isReservedRootName(name: string): boolean;
|
|
2
|
+
/** The part of an input status `markRead` reads. */
|
|
3
|
+
export interface MarkReadStatus {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
readonly changed: ReadonlyArray<{
|
|
6
|
+
readonly doc_id: string;
|
|
7
|
+
readonly change: string;
|
|
8
|
+
readonly updated_at?: string;
|
|
9
|
+
}>;
|
|
10
|
+
/** Each input at the version the status reports. An input `markRead`
|
|
11
|
+
* records from the status is recorded at this version. */
|
|
12
|
+
readonly inputs?: ReadonlyArray<{
|
|
13
|
+
readonly doc_id: string;
|
|
14
|
+
readonly updated_at: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
/** A document `markRead` records as read: a copy this app opened, recorded at
|
|
18
|
+
* the `updatedAt` it was opened at. */
|
|
19
|
+
export interface MarkReadHandle {
|
|
20
|
+
readonly id: string | null;
|
|
21
|
+
readonly updatedAt: string | null;
|
|
22
|
+
readonly status: {
|
|
23
|
+
readonly pending: boolean;
|
|
24
|
+
} | null;
|
|
25
|
+
}
|
|
26
|
+
/** A file `markRead` records as read from the status that reported it: an
|
|
27
|
+
* entry of its `files` or `changed`, recorded at the version the status
|
|
28
|
+
* reports. */
|
|
29
|
+
export interface MarkReadEntry {
|
|
30
|
+
readonly doc_id: string;
|
|
31
|
+
}
|
|
32
|
+
/** What `markRead` records, and whether it joins the Undo step. */
|
|
33
|
+
export interface MarkReadOptions {
|
|
34
|
+
/** The files to record. Defaults to every file the status lists as added
|
|
35
|
+
* or modified. */
|
|
36
|
+
readonly files?: ReadonlyArray<MarkReadHandle | MarkReadEntry>;
|
|
37
|
+
/** `false` keeps the marks off the Undo stack. Defaults to `true`. */
|
|
38
|
+
readonly undoable?: boolean;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAuBA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AA2ID,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH;+DAC2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F;AAED;wCACwC;AACxC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD;AAED;;eAEe;AACf,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B;uBACmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;IAC/D,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// The SDK's side of a document's references and read marks: the root names
|
|
2
|
+
// it keeps from apps, the mark that acknowledges a removed input, and the
|
|
3
|
+
// provisional post that follows an acknowledged change. The shapes and write
|
|
4
|
+
// rules are the platform contract's, through the SDK's copy in `inputs.ts`.
|
|
5
|
+
import { inputReadMarkAfter, isInputLineId, parseInputReadEntryKey, } from './inputs.js';
|
|
6
|
+
/**
|
|
7
|
+
* Root names the platform keeps for itself, the two input roots among them.
|
|
8
|
+
* They are refused as names an app passes to `doc.map` / `doc.list` /
|
|
9
|
+
* `doc.text`, and every app-visible enumeration of a document's roots leaves
|
|
10
|
+
* them out.
|
|
11
|
+
*/
|
|
12
|
+
const RESERVED_ROOT_PREFIX = '__brass_';
|
|
13
|
+
export function isReservedRootName(name) {
|
|
14
|
+
return name.startsWith(RESERVED_ROOT_PREFIX);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
* Posts each key's provisional entry once every op carrying its latest change
|
|
19
|
+
* is acknowledged with a seq. A later change to a key replaces the post an
|
|
20
|
+
* earlier one was waiting to make, and a refused op cancels the post it
|
|
21
|
+
* carried. A post's outcome never reaches the document: the platform
|
|
22
|
+
* projects the key from the document itself either way.
|
|
23
|
+
*/
|
|
24
|
+
export class ProvisionalInputsTracker {
|
|
25
|
+
_poster = null;
|
|
26
|
+
_onAnswer = null;
|
|
27
|
+
// One commit can change several keys, so one op can carry several posts.
|
|
28
|
+
_byOp = new Map();
|
|
29
|
+
_byKey = new Map();
|
|
30
|
+
// The post each key last sent, which a retry of an earlier one defers to.
|
|
31
|
+
_sent = new Map();
|
|
32
|
+
setPoster(poster) {
|
|
33
|
+
this._poster = poster;
|
|
34
|
+
}
|
|
35
|
+
/** Hears each answer a post receives: the key's row revision after it. */
|
|
36
|
+
onAnswer(listener) {
|
|
37
|
+
this._onAnswer = listener;
|
|
38
|
+
}
|
|
39
|
+
/** Wait for the ops a commit shipped, then post `state` for `key`. */
|
|
40
|
+
register(key, lineId, state, clientOpIds) {
|
|
41
|
+
if (this._poster === null || !isInputLineId(lineId) || clientOpIds.length === 0)
|
|
42
|
+
return;
|
|
43
|
+
this._drop(this._byKey.get(key));
|
|
44
|
+
const pending = { key, lineId, state, awaiting: new Set(clientOpIds), seq: 0 };
|
|
45
|
+
this._byKey.set(key, pending);
|
|
46
|
+
for (const id of clientOpIds) {
|
|
47
|
+
const posts = this._byOp.get(id) ?? new Set();
|
|
48
|
+
posts.add(pending);
|
|
49
|
+
this._byOp.set(id, posts);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
acked(clientOpId, seq) {
|
|
53
|
+
const posts = this._byOp.get(clientOpId);
|
|
54
|
+
if (posts === undefined)
|
|
55
|
+
return;
|
|
56
|
+
this._byOp.delete(clientOpId);
|
|
57
|
+
for (const pending of posts)
|
|
58
|
+
this._ackedFor(pending, clientOpId, seq);
|
|
59
|
+
}
|
|
60
|
+
_ackedFor(pending, clientOpId, seq) {
|
|
61
|
+
if (seq === undefined) {
|
|
62
|
+
this._drop(pending);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
pending.awaiting.delete(clientOpId);
|
|
66
|
+
pending.seq = Math.max(pending.seq, seq);
|
|
67
|
+
if (pending.awaiting.size > 0)
|
|
68
|
+
return;
|
|
69
|
+
this._drop(pending);
|
|
70
|
+
const poster = this._poster;
|
|
71
|
+
if (poster === null || pending.seq < 1)
|
|
72
|
+
return;
|
|
73
|
+
const post = {
|
|
74
|
+
key: pending.key,
|
|
75
|
+
body: {
|
|
76
|
+
branch_id: pending.lineId,
|
|
77
|
+
op_seq: pending.seq,
|
|
78
|
+
refs: pending.state.refs,
|
|
79
|
+
read: pending.state.read,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
this._sent.set(post.key, post);
|
|
83
|
+
const superseded = () => this._sent.get(post.key) !== post;
|
|
84
|
+
try {
|
|
85
|
+
void poster(post, { superseded })
|
|
86
|
+
.then((answer) => {
|
|
87
|
+
if (!superseded())
|
|
88
|
+
this._sent.delete(post.key);
|
|
89
|
+
if (answer !== null && answer.key === post.key)
|
|
90
|
+
this._onAnswer?.(answer);
|
|
91
|
+
})
|
|
92
|
+
.catch(() => undefined);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// The post is best-effort; the document already holds the change.
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
failed(clientOpId) {
|
|
99
|
+
for (const pending of this._byOp.get(clientOpId) ?? [])
|
|
100
|
+
this._drop(pending);
|
|
101
|
+
}
|
|
102
|
+
clear() {
|
|
103
|
+
this._byOp.clear();
|
|
104
|
+
this._byKey.clear();
|
|
105
|
+
this._sent.clear();
|
|
106
|
+
}
|
|
107
|
+
_drop(pending) {
|
|
108
|
+
if (pending === undefined)
|
|
109
|
+
return;
|
|
110
|
+
for (const id of pending.awaiting) {
|
|
111
|
+
const posts = this._byOp.get(id);
|
|
112
|
+
posts?.delete(pending);
|
|
113
|
+
if (posts?.size === 0)
|
|
114
|
+
this._byOp.delete(id);
|
|
115
|
+
}
|
|
116
|
+
pending.awaiting.clear();
|
|
117
|
+
if (this._byKey.get(pending.key) === pending)
|
|
118
|
+
this._byKey.delete(pending.key);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** @internal The latest mark this copy holds for `docId` under `key`, or null. */
|
|
122
|
+
export function latestReadMark(readRoot, key, docId) {
|
|
123
|
+
let latest = null;
|
|
124
|
+
for (const [entryKey, value] of Object.entries(readRoot)) {
|
|
125
|
+
if (value !== true)
|
|
126
|
+
continue;
|
|
127
|
+
const parsed = parseInputReadEntryKey(entryKey);
|
|
128
|
+
if (parsed?.key !== key || parsed.docId !== docId)
|
|
129
|
+
continue;
|
|
130
|
+
if (latest === null || inputReadMarkAfter(parsed.mark, latest))
|
|
131
|
+
latest = parsed.mark;
|
|
132
|
+
}
|
|
133
|
+
return latest;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-lane.d.ts","sourceRoot":"","sources":["../src/request-lane.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACzD;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAwC5D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// A bounded queue for one kind of read. At most `limit` requests run at once
|
|
2
|
+
// and the rest wait in order. Calls with the same key that arrive while one
|
|
3
|
+
// for that key is still WAITING share it, since nothing has been sent yet and
|
|
4
|
+
// the answer it brings back is as fresh as a request of their own would be.
|
|
5
|
+
// A call arriving after its key's request has started sends its own, so a
|
|
6
|
+
// read that follows a write never answers with what the server held before.
|
|
7
|
+
export function createRequestLane(limit) {
|
|
8
|
+
const queue = [];
|
|
9
|
+
const waiting = new Map();
|
|
10
|
+
let running = 0;
|
|
11
|
+
const pump = () => {
|
|
12
|
+
while (running < limit && queue.length > 0) {
|
|
13
|
+
const key = queue.shift();
|
|
14
|
+
const entry = waiting.get(key);
|
|
15
|
+
waiting.delete(key);
|
|
16
|
+
running += 1;
|
|
17
|
+
let sent;
|
|
18
|
+
try {
|
|
19
|
+
sent = entry.send();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
sent = Promise.reject(err);
|
|
23
|
+
}
|
|
24
|
+
sent.then(entry.resolve, entry.reject).finally(() => {
|
|
25
|
+
running -= 1;
|
|
26
|
+
pump();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
run(key, send) {
|
|
32
|
+
const pending = waiting.get(key);
|
|
33
|
+
if (pending !== undefined)
|
|
34
|
+
return pending.promise;
|
|
35
|
+
let resolve;
|
|
36
|
+
let reject;
|
|
37
|
+
const promise = new Promise((res, rej) => {
|
|
38
|
+
resolve = res;
|
|
39
|
+
reject = rej;
|
|
40
|
+
});
|
|
41
|
+
waiting.set(key, { send, promise, resolve, reject });
|
|
42
|
+
queue.push(key);
|
|
43
|
+
pump();
|
|
44
|
+
return promise;
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=request-lane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-lane.js","sourceRoot":"","sources":["../src/request-lane.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAa5E,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,OAAO,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,IAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClD,OAAO,IAAI,CAAC,CAAC;gBACb,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,CAAI,GAAW,EAAE,IAAsB;YACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,OAAqB,CAAC;YAChE,IAAI,OAAkC,CAAC;YACvC,IAAI,MAA+B,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAChD,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM,GAAG,GAAG,CAAC;YACf,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,EAAE,CAAC;YACP,OAAO,OAAqB,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|