-
-
Notifications
You must be signed in to change notification settings - Fork 642
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support yjs in dexie-cloud-addon #2045
Open
dfahlander
wants to merge
78
commits into
master
Choose a base branch
from
support-yjs-dexie-cloud
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Still need to think it through. Might need to find a better way than iterating all updates in entire DB periodically.
Could not take latest as it generates double types. Found out we needed version 9.3.1 exactly.
* Renamed updTable to updatesTable * Renamed id / rowId to parentId
* To lookup whether a certain document is open and find it
* updates * awareness * sync * websocket
Move all yjs related modules to an yjs directory
* updatesTable is not meaningful outside of client * server need to know the parent table to verify access * parent table + yDoc prop combined forms the same uniqueness as updatesTable.
* After login, or when user is accepted to a new realm, all Y docs in the user's realms are downloaded in full over a binary stream from new endpoint in dexie-cloud-server with the ability to continue where it left off in case network would break in the middle. * This is nescessary because clients only subscribe to updates on their current realms. When new access is given to user, it cannot just get the latest updates from last revision but need to fully download all the docs on the new realm. * With non-YJS changes we are currently baking in the same flow in the ordinary sync, but for YJS we can safely do the downloading outside the normal sync API as the changes are omnidempotent and the CRDT types does not depend on an exact revision being in place.
* Downloading of y documents from dexie-cloud didn't work properly * Didn't create dexie-cloud-syncer on updates table until after a long time * Garbage collecting yDocs didn't work properly when dexie-cloud addon had been syncing.
…essages to server
Closed
…-hooks Setting the three of them on the same alpha version
+ Clone state of provided Y.Doc into updates table + strip away physical Y.Doc property before storing to DB + throw when trying to replace an Y.Doc property on an existing object. + runtime type check of yDoc props. + new unit tests of the above
* Run it 10 seconds after Dexie instance created * Then run it every 5 minutes. * And don't update the timestamp lastCompressed unless anything actually could be compressed. Because otherwise we might starve the WAL log by writing every 5 minutes despite nothing is happening from the user's perspective.
…s integration isn't used.
…he same client, and destroy doc if it is open.
…rying it out first like this.
…hat are never synced to server)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.