Skip to content
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
wants to merge 78 commits into
base: master
Choose a base branch
from
Open

Conversation

dfahlander
Copy link
Collaborator

No description provided.

dfahlander and others added 30 commits June 10, 2024 19:39
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.
David Fahlander added 8 commits October 7, 2024 11:27
* 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.
@dfahlander dfahlander mentioned this pull request Oct 11, 2024
David Fahlander added 20 commits October 11, 2024 08:25
…-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.
…he same client, and destroy doc if it is open.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant