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 86 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.
@dfahlander dfahlander mentioned this pull request Oct 11, 2024
David Fahlander added 28 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.
…affected the new unsyncedProps feature made it skip eager sync in other situations.
…r app:

* Upgraded Typescript tp 5.6.3
* Separate serverRevision from yServerRevision
* Remove serverRev from YSyncState node in Y-tables and use yServerRevision in PersistedSyncState instead because it will always be same for all tables and only updated after a full sync.
* Handle situation when server has dropped historical Y-updates and the client was on an ancient yServerRevision - re-download all y docs and get the local changes merged in.
* Server may ask us to send a doc-open request any time. Respond to it by triggering a local signal that makes us send that request, making sure to be notified on changes eagerly.
* Bugfix docCache in the case when add is called twice to overwrite existing value, the previous doc might be deleted later on and that must not affect the new instance. Therefore we check on the delete that the stored doc is the same as the intended deletion.
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