edytor 1.0.0-rc.3 → 2.0.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/README.md +21 -39
- package/dist/block/block.svelte.d.ts +11 -84
- package/dist/block/block.svelte.js +30 -134
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +11 -9
- package/dist/block/inlineBlock.svelte.js +18 -21
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.js +7 -7
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +4 -17
- package/dist/cloudflare/DocumentRoom.js +3 -5
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +25 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +3 -32
- package/dist/cloudflare/room/storage.js +33 -108
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/awarenessSelection.d.ts +22 -1
- package/dist/collaboration/awarenessSelection.js +42 -0
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +42 -56
- package/dist/components/Block.svelte.d.ts +7 -5
- package/dist/components/Content.svelte +1 -5
- package/dist/components/Edytor.svelte +82 -99
- package/dist/components/Edytor.svelte.d.ts +16 -13
- package/dist/components/InlineBlock.svelte +1 -1
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +2 -5
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +18 -13
- package/dist/crdt/data.js +49 -71
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +8 -5
- package/dist/crdt/doc/reads.js +49 -50
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +32 -115
- package/dist/crdt/document.js +216 -302
- package/dist/crdt/edytor-doc.d.ts +689 -90
- package/dist/crdt/edytor-doc.js +74 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +32 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +8 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/props.d.ts +32 -0
- package/dist/crdt/props.js +172 -0
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/dnd/autoScroll.js +1 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
- package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
- package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
- package/dist/dnd/placement.d.ts +200 -0
- package/dist/dnd/placement.js +426 -0
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +46 -63
- package/dist/edytor.svelte.js +126 -181
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -181
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +64 -78
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +45 -67
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +14 -1
- package/dist/events/onPaste.js +51 -76
- package/dist/index.d.ts +11 -15
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +83 -320
- package/dist/labels.js +181 -408
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
- package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +18 -16
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +45 -38
- package/dist/plugins/chrome.js +59 -36
- package/dist/plugins/code/CodeHeader.svelte +8 -38
- package/dist/plugins/code/CodePlugin.svelte +53 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +16 -125
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
- package/dist/plugins/code/code.css +5 -117
- package/dist/plugins/code/header.svelte.d.ts +2 -11
- package/dist/plugins/code/header.svelte.js +11 -38
- package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
- package/dist/plugins/code/languageMenu.svelte.js +30 -160
- package/dist/plugins/code/languages.d.ts +9 -22
- package/dist/plugins/code/languages.js +39 -128
- package/dist/plugins/columns/ColumnResize.svelte +16 -27
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/gaps.d.ts +7 -5
- package/dist/plugins/columns/gaps.js +11 -6
- package/dist/plugins/columns/resize.svelte.d.ts +17 -54
- package/dist/plugins/columns/resize.svelte.js +80 -173
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
- package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +16 -130
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
- package/dist/plugins/equation/EquationPlugin.svelte +109 -172
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.css +7 -0
- package/dist/plugins/equation/equation.svelte.d.ts +37 -24
- package/dist/plugins/equation/equation.svelte.js +20 -94
- package/dist/plugins/equation/katex.js +6 -9
- package/dist/plugins/fileDrop.d.ts +28 -0
- package/dist/plugins/fileDrop.js +116 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +6 -167
- package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
- package/dist/plugins/image/ImagePlugin.svelte +71 -151
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -36
- package/dist/plugins/image/controls.svelte.js +43 -212
- package/dist/plugins/image/image.css +17 -0
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +30 -26
- package/dist/plugins/index.js +28 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +10 -9
- package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
- package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
- package/dist/plugins/marquee/marquee.js +4 -21
- package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
- package/dist/plugins/marquee/marqueePlugin.js +16 -15
- package/dist/plugins/media/AudioPlugin.svelte +13 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
- package/dist/plugins/media/EmbedPlugin.svelte +82 -86
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +45 -113
- package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
- package/dist/plugins/media/MediaEmpty.svelte +51 -90
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +200 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
- package/dist/plugins/media/UploadPreview.svelte +32 -0
- package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
- package/dist/plugins/media/VideoPlugin.svelte +14 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
- package/dist/plugins/media/empty.svelte.d.ts +47 -46
- package/dist/plugins/media/empty.svelte.js +67 -60
- package/dist/plugins/media/media.d.ts +97 -44
- package/dist/plugins/media/media.js +77 -99
- package/dist/plugins/media/upload.css +23 -0
- package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
- package/dist/plugins/media/urlPaste.svelte.js +32 -102
- package/dist/plugins/mention/MentionPlugin.svelte +84 -126
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
- package/dist/plugins/mention/mention.css +6 -0
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
- package/dist/plugins/pageLink/pageLink.css +6 -0
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +13 -20
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.js +2 -2
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
- package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/richtext/richtext.css +6 -0
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +40 -124
- package/dist/plugins/table/TablePlugin.svelte +106 -168
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +38 -141
- package/dist/plugins/table/chrome.svelte.js +340 -589
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +16 -152
- package/dist/plugins/table/table.d.ts +15 -14
- package/dist/plugins/table/table.js +22 -16
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
- package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
- package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +55 -24
- package/dist/plugins/uploads.svelte.js +123 -50
- package/dist/plugins.d.ts +187 -66
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +8 -10
- package/dist/selection/pointer.svelte.js +32 -73
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +224 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +3 -8
- package/dist/selection/visibility.js +7 -5
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +43 -39
- package/dist/session/attempt.js +62 -55
- package/dist/session/bindings.js +117 -145
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +208 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +16 -21
- package/dist/session/inputRules.d.ts +6 -3
- package/dist/session/inputRules.js +78 -83
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +43 -10
- package/dist/session/moves.js +101 -59
- package/dist/session/navigation.d.ts +10 -2
- package/dist/session/navigation.js +140 -172
- package/dist/session/ports.d.ts +2 -7
- package/dist/session/props.d.ts +25 -25
- package/dist/session/props.js +62 -159
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +5 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +42 -47
- package/dist/session/uploads.d.ts +29 -0
- package/dist/session/uploads.js +10 -0
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +2 -2
- package/dist/surface/lines.js +1 -1
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +52 -72
- package/dist/surface/overlay.d.ts +41 -3
- package/dist/surface/overlay.js +92 -37
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +272 -106
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -554
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -61
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -93
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
- package/dist/plugins/image/empty.svelte.d.ts +0 -56
- package/dist/plugins/image/empty.svelte.js +0 -83
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
- package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/labels.d.ts +0 -9
- package/dist/plugins/richtext/labels.js +0 -7
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/table/dragPreview.d.ts +0 -29
- package/dist/plugins/table/dragPreview.js +0 -103
- package/dist/plugins/toolbar/LinkCard.svelte +0 -122
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
- package/dist/plugins/toolbar/Toolbar.svelte +0 -349
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
- /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
- /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* ```
|
|
9
9
|
* varuint GENERATION | varuint messageType | payload
|
|
10
|
-
* GENERATION = PROTOCOL_VERSION * 1000 + SCHEMA_VERSION (
|
|
10
|
+
* GENERATION = PROTOCOL_VERSION * 1000 + SCHEMA_VERSION (14006 at schema 6)
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* The word names the whole generation — engine and wire (the protocol,
|
|
@@ -35,47 +35,27 @@ export declare const generationWord: (schema: number) => number;
|
|
|
35
35
|
export declare const GENERATION: number;
|
|
36
36
|
/**
|
|
37
37
|
* Storage-generation prefix for the v14 IndexedDB databases: one database
|
|
38
|
-
* per schema generation
|
|
39
|
-
*
|
|
38
|
+
* per schema generation, so an earlier generation's store is left as it
|
|
39
|
+
* was beside its successor (and never read).
|
|
40
40
|
*/
|
|
41
|
-
export declare const GENERATION_PREFIX
|
|
42
|
-
/** The prefix of the IndexedDB databases of schema generations 1 to 4. */
|
|
43
|
-
export declare const PREVIOUS_GENERATION_PREFIX = "edytor-v14:";
|
|
41
|
+
export declare const GENERATION_PREFIX: string;
|
|
44
42
|
/** The IndexedDB name a v14 provider uses for logical document `name`. */
|
|
45
43
|
export declare const generationDbName: (name: string) => string;
|
|
46
44
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* a compressed snapshot starts with gzip's `1f 8b`, a v2 update with
|
|
51
|
-
* `00`). Update rows stay v1 in both: a keystroke's update is smaller in
|
|
52
|
-
* v1 (24 bytes against 28, a one-character delete 13 against 24).
|
|
45
|
+
* Record written to the `custom` store marking a DB as this generation's.
|
|
46
|
+
* Every row of a container holds an update in the engine's one encoding;
|
|
47
|
+
* a snapshot row may be gzip-compressed (`crdt/storage.ts`).
|
|
53
48
|
*/
|
|
54
|
-
export type StorageFormat = 'v1' | 'v2';
|
|
55
|
-
/** Record written to the `custom` store marking a DB as this generation's. */
|
|
56
49
|
export type GenerationRecord = {
|
|
57
50
|
engine: 'yjs-v14';
|
|
58
51
|
protocol: number;
|
|
59
52
|
schema: number;
|
|
60
|
-
/** Absent: `'v1'` (written before the v2 snapshots). */
|
|
61
|
-
storage?: StorageFormat;
|
|
62
53
|
};
|
|
63
54
|
export declare const GENERATION_KEY = "generation";
|
|
64
|
-
/** This generation's
|
|
55
|
+
/** This generation's record. */
|
|
65
56
|
export declare const GENERATION_RECORD: GenerationRecord;
|
|
66
|
-
/**
|
|
67
|
-
export declare const STORAGE_FORMAT: StorageFormat;
|
|
68
|
-
/** The record this build stamps a container with (its generation and its storage format). */
|
|
69
|
-
export declare const STORED_GENERATION_RECORD: GenerationRecord;
|
|
70
|
-
/**
|
|
71
|
-
* Is `v` this generation's container record? A record without `schema` was
|
|
72
|
-
* written before the schema joined the generation, by builds that spoke
|
|
73
|
-
* schema 1 only — it is a schema-1 record. A storage format this build
|
|
74
|
-
* does not read (a later one) is another generation's.
|
|
75
|
-
*/
|
|
57
|
+
/** Is `v` this generation's container record? Any other is refused, never read. */
|
|
76
58
|
export declare const isGenerationRecord: (v: unknown) => v is GenerationRecord;
|
|
77
|
-
/** The storage format of a container record ({@link isGenerationRecord} first). */
|
|
78
|
-
export declare const storageOf: (record: GenerationRecord) => StorageFormat;
|
|
79
59
|
export declare class GenerationMismatchError extends Error {
|
|
80
60
|
readonly dbName: string;
|
|
81
61
|
readonly found: unknown;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* ```
|
|
9
9
|
* varuint GENERATION | varuint messageType | payload
|
|
10
|
-
* GENERATION = PROTOCOL_VERSION * 1000 + SCHEMA_VERSION (
|
|
10
|
+
* GENERATION = PROTOCOL_VERSION * 1000 + SCHEMA_VERSION (14006 at schema 6)
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* The word names the whole generation — engine and wire (the protocol,
|
|
@@ -36,47 +36,30 @@ export const generationWord = (schema) => PROTOCOL_VERSION * 1000 + schema;
|
|
|
36
36
|
export const GENERATION = generationWord(SCHEMA_VERSION);
|
|
37
37
|
/**
|
|
38
38
|
* Storage-generation prefix for the v14 IndexedDB databases: one database
|
|
39
|
-
* per schema generation
|
|
40
|
-
*
|
|
39
|
+
* per schema generation, so an earlier generation's store is left as it
|
|
40
|
+
* was beside its successor (and never read).
|
|
41
41
|
*/
|
|
42
|
-
export const GENERATION_PREFIX =
|
|
43
|
-
/** The prefix of the IndexedDB databases of schema generations 1 to 4. */
|
|
44
|
-
export const PREVIOUS_GENERATION_PREFIX = 'edytor-v14:';
|
|
42
|
+
export const GENERATION_PREFIX = `edytor-v14-g${SCHEMA_VERSION}:`;
|
|
45
43
|
/** The IndexedDB name a v14 provider uses for logical document `name`. */
|
|
46
44
|
export const generationDbName = (name) => GENERATION_PREFIX + name;
|
|
47
45
|
export const GENERATION_KEY = 'generation';
|
|
48
|
-
/** This generation's
|
|
46
|
+
/** This generation's record. */
|
|
49
47
|
export const GENERATION_RECORD = {
|
|
50
48
|
engine: 'yjs-v14',
|
|
51
49
|
protocol: PROTOCOL_VERSION,
|
|
52
50
|
schema: SCHEMA_VERSION
|
|
53
51
|
};
|
|
54
|
-
/**
|
|
55
|
-
export const STORAGE_FORMAT = 'v2';
|
|
56
|
-
/** The record this build stamps a container with (its generation and its storage format). */
|
|
57
|
-
export const STORED_GENERATION_RECORD = {
|
|
58
|
-
...GENERATION_RECORD,
|
|
59
|
-
storage: STORAGE_FORMAT
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* Is `v` this generation's container record? A record without `schema` was
|
|
63
|
-
* written before the schema joined the generation, by builds that spoke
|
|
64
|
-
* schema 1 only — it is a schema-1 record. A storage format this build
|
|
65
|
-
* does not read (a later one) is another generation's.
|
|
66
|
-
*/
|
|
52
|
+
/** Is `v` this generation's container record? Any other is refused, never read. */
|
|
67
53
|
export const isGenerationRecord = (v) => typeof v === 'object' &&
|
|
68
54
|
v !== null &&
|
|
69
55
|
v.engine === GENERATION_RECORD.engine &&
|
|
70
56
|
v.protocol === GENERATION_RECORD.protocol &&
|
|
71
|
-
|
|
72
|
-
[undefined, 'v1', 'v2'].includes(v.storage);
|
|
73
|
-
/** The storage format of a container record ({@link isGenerationRecord} first). */
|
|
74
|
-
export const storageOf = (record) => record.storage ?? 'v1';
|
|
57
|
+
v.schema === SCHEMA_VERSION;
|
|
75
58
|
export class GenerationMismatchError extends Error {
|
|
76
59
|
dbName;
|
|
77
60
|
found;
|
|
78
61
|
constructor(dbName, found) {
|
|
79
|
-
super(`Stored document "${dbName}" is not a v14 document generation of this schema (found ${JSON.stringify(found)}). It is never applied —
|
|
62
|
+
super(`Stored document "${dbName}" is not a v14 document generation of this schema (found ${JSON.stringify(found)}). It is never applied — re-import the document from JSON.`);
|
|
80
63
|
this.dbName = dbName;
|
|
81
64
|
this.found = found;
|
|
82
65
|
this.name = 'GenerationMismatchError';
|
|
@@ -7,38 +7,28 @@
|
|
|
7
7
|
* (`applyRemote`) and are stamped with a non-null `remoteApplyOrigin` so
|
|
8
8
|
* echo suppression + undo exclusion keep working.
|
|
9
9
|
*
|
|
10
|
-
* Wire format (y-protocols' layout;
|
|
11
|
-
* schema generation
|
|
10
|
+
* Wire format (y-protocols' layout; every update in the engine's one
|
|
11
|
+
* encoding, the columnar one upstream calls v2, since schema generation 6):
|
|
12
12
|
*
|
|
13
13
|
* ```
|
|
14
14
|
* varuint messageType | payload
|
|
15
15
|
* messageType 0 (SyncStep1): varuint8array stateVector
|
|
16
|
-
* messageType 1 (SyncStep2): varuint8array update
|
|
17
|
-
* messageType 2 (Update): varuint8array update
|
|
16
|
+
* messageType 1 (SyncStep2): varuint8array update
|
|
17
|
+
* messageType 2 (Update): varuint8array update
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* relayed as it is. A receiver converts a SyncStep2 to v1
|
|
27
|
-
* ({@link step2Update}) and applies it through the one inbound path. That does NOT mean v13 and v14 peers are interchangeable — the
|
|
28
|
-
* provider layer (`providers/*`) wraps every message in the protocol-version
|
|
29
|
-
* envelope (`protocols/envelope.ts`) so engines that do not speak v14 never
|
|
30
|
-
* reach `readSyncMessage`.
|
|
20
|
+
* What the engine emits on `doc.on('update')` is relayed as it is, and a
|
|
21
|
+
* SyncStep2 is applied through the same inbound path as an Update. That
|
|
22
|
+
* does NOT mean v13 and v14 peers are interchangeable — the provider layer
|
|
23
|
+
* (`providers/*`) wraps every message in the protocol-version envelope
|
|
24
|
+
* (`protocols/envelope.ts`) so engines that do not speak v14 never reach
|
|
25
|
+
* {@link applyRemote}.
|
|
31
26
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* exist for harnesses/custom transports; the shipped providers do not
|
|
38
|
-
* route room traffic through them.
|
|
39
|
-
* - The path the providers use lives in `providers/room.ts`:
|
|
40
|
-
* `applyRemote` + per-type dispatch, so a refused payload never mutates
|
|
41
|
-
* the live doc and an unknown type is a reported drop, not a throw.
|
|
27
|
+
* One inbound path: every payload a client or a server receives applies
|
|
28
|
+
* through `applyRemote`, which refuses a forged schema stamp before
|
|
29
|
+
* anything integrates; the providers dispatch by message type in
|
|
30
|
+
* `providers/room.ts` (an unknown type is a reported drop), the room in
|
|
31
|
+
* `cloudflare/room/admission.ts`.
|
|
42
32
|
*
|
|
43
33
|
* Engine functions are injected (`bindSync(Y)`): `src/lib` never
|
|
44
34
|
* runtime-imports the vendored `.js` (see `engine-api.ts`), so the caller
|
|
@@ -68,12 +58,7 @@ export declare const bindSync: (Y: EngineApi) => {
|
|
|
68
58
|
remoteApplyOrigin: symbol;
|
|
69
59
|
writeSyncStep1: (encoder: encoding.Encoder, doc: YDoc) => void;
|
|
70
60
|
writeSyncStep2: (encoder: encoding.Encoder, doc: YDoc, encodedStateVector?: Uint8Array) => void;
|
|
71
|
-
step2Update: (payload: Uint8Array) => Uint8Array;
|
|
72
|
-
readSyncStep1: (decoder: decoding.Decoder, encoder: encoding.Encoder, doc: YDoc) => void;
|
|
73
|
-
readSyncStep2: (decoder: decoding.Decoder, doc: YDoc, transactionOrigin: unknown, errorHandler?: (error: Error) => unknown) => void;
|
|
74
61
|
writeUpdate: (encoder: encoding.Encoder, update: Uint8Array) => void;
|
|
75
|
-
readUpdate: (decoder: decoding.Decoder, doc: YDoc, transactionOrigin: unknown, errorHandler?: (error: Error) => unknown) => void;
|
|
76
|
-
readSyncMessage: (decoder: decoding.Decoder, encoder: encoding.Encoder, doc: YDoc, transactionOrigin: unknown, errorHandler?: (error: Error) => unknown) => number;
|
|
77
62
|
applyRemote: (doc: YDoc, update: Uint8Array, transactionOrigin: unknown, errorHandler?: (error: Error) => unknown) => {
|
|
78
63
|
applied: boolean;
|
|
79
64
|
problem: SchemaProblem | null;
|
|
@@ -7,38 +7,28 @@
|
|
|
7
7
|
* (`applyRemote`) and are stamped with a non-null `remoteApplyOrigin` so
|
|
8
8
|
* echo suppression + undo exclusion keep working.
|
|
9
9
|
*
|
|
10
|
-
* Wire format (y-protocols' layout;
|
|
11
|
-
* schema generation
|
|
10
|
+
* Wire format (y-protocols' layout; every update in the engine's one
|
|
11
|
+
* encoding, the columnar one upstream calls v2, since schema generation 6):
|
|
12
12
|
*
|
|
13
13
|
* ```
|
|
14
14
|
* varuint messageType | payload
|
|
15
15
|
* messageType 0 (SyncStep1): varuint8array stateVector
|
|
16
|
-
* messageType 1 (SyncStep2): varuint8array update
|
|
17
|
-
* messageType 2 (Update): varuint8array update
|
|
16
|
+
* messageType 1 (SyncStep2): varuint8array update
|
|
17
|
+
* messageType 2 (Update): varuint8array update
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* relayed as it is. A receiver converts a SyncStep2 to v1
|
|
27
|
-
* ({@link step2Update}) and applies it through the one inbound path. That does NOT mean v13 and v14 peers are interchangeable — the
|
|
28
|
-
* provider layer (`providers/*`) wraps every message in the protocol-version
|
|
29
|
-
* envelope (`protocols/envelope.ts`) so engines that do not speak v14 never
|
|
30
|
-
* reach `readSyncMessage`.
|
|
20
|
+
* What the engine emits on `doc.on('update')` is relayed as it is, and a
|
|
21
|
+
* SyncStep2 is applied through the same inbound path as an Update. That
|
|
22
|
+
* does NOT mean v13 and v14 peers are interchangeable — the provider layer
|
|
23
|
+
* (`providers/*`) wraps every message in the protocol-version envelope
|
|
24
|
+
* (`protocols/envelope.ts`) so engines that do not speak v14 never reach
|
|
25
|
+
* {@link applyRemote}.
|
|
31
26
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* exist for harnesses/custom transports; the shipped providers do not
|
|
38
|
-
* route room traffic through them.
|
|
39
|
-
* - The path the providers use lives in `providers/room.ts`:
|
|
40
|
-
* `applyRemote` + per-type dispatch, so a refused payload never mutates
|
|
41
|
-
* the live doc and an unknown type is a reported drop, not a throw.
|
|
27
|
+
* One inbound path: every payload a client or a server receives applies
|
|
28
|
+
* through `applyRemote`, which refuses a forged schema stamp before
|
|
29
|
+
* anything integrates; the providers dispatch by message type in
|
|
30
|
+
* `providers/room.ts` (an unknown type is a reported drop), the room in
|
|
31
|
+
* `cloudflare/room/admission.ts`.
|
|
42
32
|
*
|
|
43
33
|
* Engine functions are injected (`bindSync(Y)`): `src/lib` never
|
|
44
34
|
* runtime-imports the vendored `.js` (see `engine-api.ts`), so the caller
|
|
@@ -55,7 +45,7 @@ import { asEngineDoc, attrItems } from '../structs.js';
|
|
|
55
45
|
* is optional). Remote integration MUST always arrive under a non-null,
|
|
56
46
|
* non-tracked origin:
|
|
57
47
|
*
|
|
58
|
-
* - history capture (`document.history
|
|
48
|
+
* - history capture (`document.history`, edytor's undo manager) keeps
|
|
59
49
|
* untracked, non-local transactions out of the local undo stack — a
|
|
60
50
|
* `null` origin is ambiguous (it is also the untyped-local marker), so
|
|
61
51
|
* an explicit marker documents intent for `doc.on('update')`
|
|
@@ -73,6 +63,12 @@ const defaultRemoteApplyOrigin = () => Symbol('edytor-remote-apply');
|
|
|
73
63
|
export const messageYjsSyncStep1 = 0;
|
|
74
64
|
export const messageYjsSyncStep2 = 1;
|
|
75
65
|
export const messageYjsUpdate = 2;
|
|
66
|
+
/** An inbound update that could not be read or applied: its handler hears it, the console shows it. */
|
|
67
|
+
const reportUpdateError = (error, errorHandler) => {
|
|
68
|
+
if (errorHandler != null)
|
|
69
|
+
errorHandler(error);
|
|
70
|
+
console.error('Caught error while handling a Yjs update', error);
|
|
71
|
+
};
|
|
76
72
|
/**
|
|
77
73
|
* Bind the sync protocol to a concrete engine module (the vendored v14 `Y`).
|
|
78
74
|
*/
|
|
@@ -85,29 +81,7 @@ export const bindSync = (Y) => {
|
|
|
85
81
|
};
|
|
86
82
|
const writeSyncStep2 = (encoder, doc, encodedStateVector) => {
|
|
87
83
|
encoding.writeVarUint(encoder, messageYjsSyncStep2);
|
|
88
|
-
encoding.writeVarUint8Array(encoder, Y.
|
|
89
|
-
};
|
|
90
|
-
/** A SyncStep2 payload (v2) as the v1 update every inbound path applies. */
|
|
91
|
-
const step2Update = (payload) => Y.convertUpdateFormatV2ToV1(payload);
|
|
92
|
-
/** Read SyncStep1 message and reply with SyncStep2. */
|
|
93
|
-
const readSyncStep1 = (decoder, encoder, doc) => writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder));
|
|
94
|
-
/**
|
|
95
|
-
* Read and apply structs + delete set to a doc — through the same
|
|
96
|
-
* inbound refusal as the providers ({@link applyRemote}), which report
|
|
97
|
-
* a refused stamp; this raw reader reports only decode/apply errors.
|
|
98
|
-
*/
|
|
99
|
-
const readSyncStep2 = (decoder, doc, transactionOrigin, errorHandler) => {
|
|
100
|
-
let update;
|
|
101
|
-
try {
|
|
102
|
-
update = step2Update(decoding.readVarUint8Array(decoder));
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (errorHandler != null)
|
|
106
|
-
errorHandler(error);
|
|
107
|
-
console.error('Caught error while handling a Yjs update', error);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
applyRemote(doc, update, transactionOrigin, errorHandler);
|
|
84
|
+
encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector));
|
|
111
85
|
};
|
|
112
86
|
/**
|
|
113
87
|
* The state-vector coverage test of the join rule: does the encoded
|
|
@@ -125,10 +99,6 @@ export const bindSync = (Y) => {
|
|
|
125
99
|
encoding.writeVarUint(encoder, messageYjsUpdate);
|
|
126
100
|
encoding.writeVarUint8Array(encoder, update);
|
|
127
101
|
};
|
|
128
|
-
/** Read and apply an Update (v1) through the inbound refusal. */
|
|
129
|
-
const readUpdate = (decoder, doc, transactionOrigin, errorHandler) => {
|
|
130
|
-
applyRemote(doc, decoding.readVarUint8Array(decoder), transactionOrigin, errorHandler);
|
|
131
|
-
};
|
|
132
102
|
/**
|
|
133
103
|
* Inbound refusal: the schema problem `parts` (decoded updates,
|
|
134
104
|
* judged together) would write, or `null`. The frame already proved its
|
|
@@ -193,7 +163,7 @@ export const bindSync = (Y) => {
|
|
|
193
163
|
/** What the engine holds pending on `doc` (structs and deletes waiting for a dependency). */
|
|
194
164
|
const held = (doc) => {
|
|
195
165
|
const pending = [doc.store.pendingStructs?.update, doc.store.pendingDs];
|
|
196
|
-
return pending.flatMap((bytes) => (bytes ? [Y.
|
|
166
|
+
return pending.flatMap((bytes) => (bytes ? [Y.decodeUpdate(bytes)] : []));
|
|
197
167
|
};
|
|
198
168
|
/**
|
|
199
169
|
* Apply one inbound update (SyncStep2 / Update payload) to the live doc
|
|
@@ -230,9 +200,7 @@ export const bindSync = (Y) => {
|
|
|
230
200
|
: { applied: true, problem: null, discarded };
|
|
231
201
|
}
|
|
232
202
|
catch (error) {
|
|
233
|
-
|
|
234
|
-
errorHandler(error);
|
|
235
|
-
console.error('Caught error while handling a Yjs update', error);
|
|
203
|
+
reportUpdateError(error, errorHandler);
|
|
236
204
|
return { applied: false, problem: null };
|
|
237
205
|
}
|
|
238
206
|
};
|
|
@@ -248,12 +216,12 @@ export const bindSync = (Y) => {
|
|
|
248
216
|
* vector alone ignores the second field; a body without it acknowledges
|
|
249
217
|
* no deletes.
|
|
250
218
|
*/
|
|
251
|
-
const writeSaved = (encoder, doc, deletes, unstored = doc.store.pendingDs && Y.
|
|
219
|
+
const writeSaved = (encoder, doc, deletes, unstored = doc.store.pendingDs && Y.decodeUpdate(doc.store.pendingDs).ds) => {
|
|
252
220
|
encoding.writeVarUint8Array(encoder, Y.encodeStateVector(doc));
|
|
253
221
|
const held = deletes && unstored ? Y.diffIdSet(deletes, unstored) : deletes;
|
|
254
222
|
if (!held || held.isEmpty())
|
|
255
223
|
return;
|
|
256
|
-
const body = new Y.
|
|
224
|
+
const body = new Y.UpdateEncoder();
|
|
257
225
|
encoding.writeVarUint(body.restEncoder, 0); // no structs
|
|
258
226
|
Y.writeIdSet(body, held);
|
|
259
227
|
encoding.writeVarUint8Array(encoder, body.toUint8Array());
|
|
@@ -265,31 +233,6 @@ export const bindSync = (Y) => {
|
|
|
265
233
|
? Y.decodeUpdate(decoding.readVarUint8Array(decoder)).ds
|
|
266
234
|
: null
|
|
267
235
|
});
|
|
268
|
-
/**
|
|
269
|
-
* Read a sync message from `decoder`; writes any reply (SyncStep2) into
|
|
270
|
-
* `encoder`. Returns the decoded message type. Callers MUST gate the
|
|
271
|
-
* protocol-version envelope before invoking this (see `envelope.ts`).
|
|
272
|
-
* RAW: payloads apply through the inbound refusal (unreported) and an
|
|
273
|
-
* unknown message type THROWS — the shipped providers dispatch through
|
|
274
|
-
* `providers/room.ts` (`applyRemote` + reported drops) instead.
|
|
275
|
-
*/
|
|
276
|
-
const readSyncMessage = (decoder, encoder, doc, transactionOrigin, errorHandler) => {
|
|
277
|
-
const messageType = decoding.readVarUint(decoder);
|
|
278
|
-
switch (messageType) {
|
|
279
|
-
case messageYjsSyncStep1:
|
|
280
|
-
readSyncStep1(decoder, encoder, doc);
|
|
281
|
-
break;
|
|
282
|
-
case messageYjsSyncStep2:
|
|
283
|
-
readSyncStep2(decoder, doc, transactionOrigin, errorHandler);
|
|
284
|
-
break;
|
|
285
|
-
case messageYjsUpdate:
|
|
286
|
-
readUpdate(decoder, doc, transactionOrigin, errorHandler);
|
|
287
|
-
break;
|
|
288
|
-
default:
|
|
289
|
-
throw new Error('Unknown message type');
|
|
290
|
-
}
|
|
291
|
-
return messageType;
|
|
292
|
-
};
|
|
293
236
|
return {
|
|
294
237
|
messageYjsSyncStep1,
|
|
295
238
|
messageYjsSyncStep2,
|
|
@@ -297,12 +240,7 @@ export const bindSync = (Y) => {
|
|
|
297
240
|
remoteApplyOrigin,
|
|
298
241
|
writeSyncStep1,
|
|
299
242
|
writeSyncStep2,
|
|
300
|
-
step2Update,
|
|
301
|
-
readSyncStep1,
|
|
302
|
-
readSyncStep2,
|
|
303
243
|
writeUpdate,
|
|
304
|
-
readUpdate,
|
|
305
|
-
readSyncMessage,
|
|
306
244
|
applyRemote,
|
|
307
245
|
lacks,
|
|
308
246
|
writeSaved,
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { type ProviderStack } from './index.js';
|
|
1
|
+
import { type PrefetchOptions, type ProviderStack } from './index.js';
|
|
2
2
|
export declare const providers: ProviderStack;
|
|
3
|
+
/** {@link prefetchWith} over the one stack. */
|
|
4
|
+
export declare const prefetch: (options: PrefetchOptions) => Promise<import("./index.js").PrefetchResult>;
|
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
* `instanceof` holds whichever entry point a consumer imported it from.
|
|
6
6
|
*/
|
|
7
7
|
import { Y } from '../engine.js';
|
|
8
|
-
import { bindProviders } from './index.js';
|
|
8
|
+
import { bindProviders, prefetchWith } from './index.js';
|
|
9
9
|
export const providers = bindProviders(Y);
|
|
10
|
+
/** {@link prefetchWith} over the one stack. */
|
|
11
|
+
export const prefetch = (options) => prefetchWith(Y, providers, options);
|
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
export declare const UPDATES = "updates";
|
|
2
2
|
export declare const CUSTOM = "custom";
|
|
3
|
-
/**
|
|
3
|
+
/** A request's result, as a promise (its failure as an `Error`). */
|
|
4
|
+
export declare const rtop: <T>(request: IDBRequest<T>) => Promise<T>;
|
|
5
|
+
/** The stores `names` of one read-write transaction on `db`. */
|
|
6
|
+
export declare const storesOf: (db: IDBDatabase, names: string[]) => IDBObjectStore[];
|
|
7
|
+
/** The greatest key of `store` (`null` when it is empty). */
|
|
8
|
+
export declare const lastKey: (store: IDBObjectStore) => Promise<IDBValidKey | null>;
|
|
9
|
+
/** Open (creating when absent) a container with its two stores; it closes when another version opens. */
|
|
4
10
|
export declare const openContainer: (dbName: string) => Promise<IDBDatabase>;
|
|
5
11
|
/** A row is the update's bytes in a buffer of their own. */
|
|
6
12
|
export declare const encodeRow: (update: Uint8Array) => ArrayBuffer;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* makes it smaller). Update rows stay v1 `ArrayBuffer`s. A build from
|
|
12
|
-
* before the v2 snapshots reads such a row as no update at all (`decodeRow` throws),
|
|
13
|
-
* so it fails to load the store instead of misreading it.
|
|
14
|
-
*/
|
|
15
|
-
export type SnapshotRow = {
|
|
16
|
-
v2: ArrayBuffer;
|
|
17
|
-
};
|
|
18
|
-
export declare const snapshotRow: (updateV2: Uint8Array) => Promise<SnapshotRow>;
|
|
19
|
-
/** A stored row as the update to apply: `{ v2 }` for a snapshot row (inflated). */
|
|
20
|
-
export declare const readRow: (row: unknown) => Promise<Uint8Array | {
|
|
21
|
-
v2: Uint8Array;
|
|
22
|
-
}>;
|
|
13
|
+
/** A snapshot row: the document's state, gzip-compressed where that makes it smaller. */
|
|
14
|
+
export declare const snapshotRow: (update: Uint8Array) => Promise<ArrayBuffer>;
|
|
15
|
+
/** A stored row as the update to apply (a compressed snapshot inflated). */
|
|
16
|
+
export declare const readRow: (row: unknown) => Promise<Uint8Array>;
|
|
23
17
|
/**
|
|
24
18
|
* The one verify-or-stamp rule: a container carrying this generation's
|
|
25
19
|
* record passes; an EMPTY container without a record is stamped; anything
|
|
@@ -1,38 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The v14 IndexedDB container — one owner for the store names, the row
|
|
3
|
-
* codec (
|
|
4
|
-
*
|
|
3
|
+
* codec (every row an update in the engine's one encoding, a snapshot
|
|
4
|
+
* gzip-compressed where that makes it smaller), the open, the non-creating
|
|
5
|
+
* probe and the ONE verify-or-stamp rule. Rows are append-only for every
|
|
5
6
|
* writer (a provider's compaction appends its snapshot before deleting the
|
|
6
7
|
* rows it subsumes).
|
|
7
8
|
*/
|
|
8
|
-
import
|
|
9
|
-
import { GENERATION_KEY, GenerationMismatchError, isGenerationRecord, STORED_GENERATION_RECORD } from '../protocols/envelope.js';
|
|
9
|
+
import { GENERATION_KEY, GenerationMismatchError, GENERATION_RECORD, isGenerationRecord } from '../protocols/envelope.js';
|
|
10
10
|
import { gunzip, packed } from '../storage.js';
|
|
11
11
|
export const UPDATES = 'updates';
|
|
12
12
|
export const CUSTOM = 'custom';
|
|
13
|
-
/**
|
|
14
|
-
export const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
throw new TypeError('Stored Yjs update is not binary data');
|
|
13
|
+
/** A request's result, as a promise (its failure as an `Error`). */
|
|
14
|
+
export const rtop = (request) => new Promise((resolve, reject) => {
|
|
15
|
+
request.onerror = () => reject(new Error(String(request.error)));
|
|
16
|
+
request.onsuccess = () => resolve(request.result);
|
|
17
|
+
});
|
|
18
|
+
/** The stores `names` of one read-write transaction on `db`. */
|
|
19
|
+
export const storesOf = (db, names) => {
|
|
20
|
+
const transaction = db.transaction(names, 'readwrite');
|
|
21
|
+
return names.map((name) => transaction.objectStore(name));
|
|
23
22
|
};
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/** The greatest key of `store` (`null` when it is empty). */
|
|
24
|
+
export const lastKey = (store) => rtop(store.openKeyCursor(null, 'prev')).then((cursor) => cursor?.key ?? null);
|
|
25
|
+
/** Open (creating when absent) a container with its two stores; it closes when another version opens. */
|
|
26
|
+
export const openContainer = (dbName) => new Promise((resolve, reject) => {
|
|
27
|
+
const request = indexedDB.open(dbName);
|
|
28
|
+
request.onupgradeneeded = () => {
|
|
29
|
+
request.result.createObjectStore(UPDATES, { autoIncrement: true });
|
|
30
|
+
request.result.createObjectStore(CUSTOM);
|
|
31
|
+
};
|
|
32
|
+
request.onerror = () => reject(request.error);
|
|
33
|
+
request.onsuccess = () => {
|
|
34
|
+
const db = request.result;
|
|
35
|
+
db.onversionchange = () => db.close();
|
|
36
|
+
resolve(db);
|
|
37
|
+
};
|
|
26
38
|
});
|
|
27
|
-
/** A
|
|
39
|
+
/** A row is the update's bytes in a buffer of their own. */
|
|
40
|
+
export const encodeRow = (update) => update.slice().buffer;
|
|
41
|
+
/** A snapshot row: the document's state, gzip-compressed where that makes it smaller. */
|
|
42
|
+
export const snapshotRow = async (update) => encodeRow(await packed(update));
|
|
43
|
+
/** A stored row as the update to apply (a compressed snapshot inflated). */
|
|
28
44
|
export const readRow = async (row) => {
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
throw new TypeError('Stored snapshot is not binary data');
|
|
33
|
-
return { v2: await gunzip(new Uint8Array(bytes)) };
|
|
34
|
-
}
|
|
35
|
-
return decodeRow(row);
|
|
45
|
+
if (!(row instanceof ArrayBuffer))
|
|
46
|
+
throw new TypeError('Stored Yjs update is not binary data');
|
|
47
|
+
return gunzip(new Uint8Array(row));
|
|
36
48
|
};
|
|
37
49
|
/**
|
|
38
50
|
* The one verify-or-stamp rule: a container carrying this generation's
|
|
@@ -41,9 +53,9 @@ export const readRow = async (row) => {
|
|
|
41
53
|
* {@link GenerationMismatchError} — nothing inside a row is inspected.
|
|
42
54
|
*/
|
|
43
55
|
export const verifyOrStamp = async (name, updates, custom) => {
|
|
44
|
-
const found = await
|
|
45
|
-
if (found === undefined && (await
|
|
46
|
-
await
|
|
56
|
+
const found = await rtop(custom.get(GENERATION_KEY));
|
|
57
|
+
if (found === undefined && (await rtop(updates.count())) === 0) {
|
|
58
|
+
await rtop(custom.put({ ...GENERATION_RECORD }, GENERATION_KEY));
|
|
47
59
|
}
|
|
48
60
|
else if (!isGenerationRecord(found)) {
|
|
49
61
|
throw new GenerationMismatchError(name, found);
|
|
@@ -127,9 +127,6 @@ export type LastUpdatedOptions = WebsocketTarget & {
|
|
|
127
127
|
};
|
|
128
128
|
export type ProviderStack = ReturnType<typeof bindProviders>;
|
|
129
129
|
export declare const bindProviders: (Y: EngineApi) => {
|
|
130
|
-
prefetch: (options: PrefetchOptions) => Promise<PrefetchResult>;
|
|
131
|
-
lastUpdated: (options: LastUpdatedOptions) => Promise<number | null>;
|
|
132
|
-
documentSnapshot: (options: LastUpdatedOptions) => Promise<JSONDoc | null>;
|
|
133
130
|
IndexeddbPersistence: {
|
|
134
131
|
new (name: string, doc: YDoc, options?: import("./indexeddb.js").IndexeddbPersistenceOptions): {
|
|
135
132
|
doc: YDoc;
|
|
@@ -153,7 +150,7 @@ export declare const bindProviders: (Y: EngineApi) => {
|
|
|
153
150
|
bcconnected: boolean;
|
|
154
151
|
disableBc: boolean;
|
|
155
152
|
_ownsAwareness: boolean;
|
|
156
|
-
_bcSubscriber: (data: ArrayBuffer, origin: unknown) => void;
|
|
153
|
+
_bcSubscriber: (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
|
|
157
154
|
_awarenessUpdateHandler: (updates: {
|
|
158
155
|
added: number[];
|
|
159
156
|
updated: number[];
|
|
@@ -225,7 +222,7 @@ export declare const bindProviders: (Y: EngineApi) => {
|
|
|
225
222
|
bcChannel: string;
|
|
226
223
|
bcconnected: boolean;
|
|
227
224
|
disableBc: boolean;
|
|
228
|
-
_bcSubscriber: (data: ArrayBuffer, origin: unknown) => void;
|
|
225
|
+
_bcSubscriber: (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
|
|
229
226
|
_fromTab: {};
|
|
230
227
|
wsUnsuccessfulReconnects: number;
|
|
231
228
|
wsLastMessageReceived: number;
|
|
@@ -292,9 +289,40 @@ export declare const bindProviders: (Y: EngineApi) => {
|
|
|
292
289
|
_dbsize: number;
|
|
293
290
|
_destroyed: boolean;
|
|
294
291
|
}, forceStore?: boolean) => Promise<undefined>;
|
|
295
|
-
clearDocument: (name: string) => Promise<
|
|
292
|
+
clearDocument: (name: string) => Promise<void>;
|
|
296
293
|
PREFERRED_TRIM_SIZE: number;
|
|
297
294
|
createIndexeddbSync: (name: string) => EdytorSync;
|
|
298
295
|
createWebsocketSync: (options: WebsocketSyncOptions) => WebsocketSync;
|
|
299
296
|
};
|
|
300
297
|
export type { IndexeddbProvider };
|
|
298
|
+
/**
|
|
299
|
+
* `[serverUrl (no trailing slash), room]` of a target, the room id checked.
|
|
300
|
+
* The target is `{ server, room }`; the names before them are refused, in
|
|
301
|
+
* a message that names the `caller` it was passed to.
|
|
302
|
+
*/
|
|
303
|
+
export declare const targetOf: (caller: string, options: WebsocketTarget) => [string, string];
|
|
304
|
+
/**
|
|
305
|
+
* Keep a document fresh without opening it: load its local store
|
|
306
|
+
* (the one `createWebsocketSync` keeps, `edytor:<server>/<room>` unless
|
|
307
|
+
* `persistName` names another), dial the room once, take what it lacks
|
|
308
|
+
* and hand it what the store holds that the room lacks, wait until the
|
|
309
|
+
* room stored it, then close. Resolves with whether the room sent
|
|
310
|
+
* anything new; rejects with the room's refusal (`SyncRefusedError`),
|
|
311
|
+
* after `timeout`, or where there is no IndexedDB. Over the provider
|
|
312
|
+
* classes of `stack` (bound to `Y`).
|
|
313
|
+
*/
|
|
314
|
+
export declare const prefetchWith: (Y: EngineApi, stack: ProviderStack, options: PrefetchOptions) => Promise<PrefetchResult>;
|
|
315
|
+
/**
|
|
316
|
+
* When the room last stored a change (ms since the epoch), or `null`:
|
|
317
|
+
* `?lastUpdated`, answered without opening the document. Compare it with
|
|
318
|
+
* when a document was last fetched to decide whether to `prefetch` it.
|
|
319
|
+
* Throws on an HTTP error (`403` refused, `401` expired).
|
|
320
|
+
*/
|
|
321
|
+
export declare const lastUpdated: (options: LastUpdatedOptions) => Promise<number | null>;
|
|
322
|
+
/**
|
|
323
|
+
* The room's document as JSON, or `null` when it stores nothing yet:
|
|
324
|
+
* `?snapshot`, answered from the room's live document. Show it while a
|
|
325
|
+
* view's own copy hydrates: `<Edytor snapshot>`. Throws on an HTTP error
|
|
326
|
+
* (`403` refused, `401` expired).
|
|
327
|
+
*/
|
|
328
|
+
export declare const documentSnapshot: (options: LastUpdatedOptions) => Promise<JSONDoc | null>;
|