ueberdosis / hocuspocus

The CRDT Yjs WebSocket backend for conflict-free real-time collaboration in your app.
https://tiptap.dev/docs/hocuspocus/introduction
MIT License
1.34k stars 128 forks source link

Root shared objects have AbstractType type on the server #853

Closed andevdokimov closed 1 month ago

andevdokimov commented 2 months ago

Description Shared objects inside the yDoc.shared have AbstractType and it does seem impossible to figure out the exact type (YMap/YArray etc).

Steps to reproduce the bug

Say, on client side I have yDoc. Then I create two shared root objects:
const yMap = yDoc.getMap('testMap');
// fill yMap with some data
const yArray = yDoc.getArray('testArray');
// fill yArray with some data

Then when you inspect dDoc.share on the server side, this map will have two items of AbstractType type

Is this kind of expected or bug? If this is expected, then how to understand the particular type of the root objects?

Thanks.

ilya2204 commented 1 month ago

As far as I know, this is the behavior of yjs. Until someone explicitly calls getMap/getArray in the document, the document will not contain information about a specific type.

janthurau commented 1 month ago

yes! that's expected behaviour of yjs. this might help: https://discuss.yjs.dev/t/getting-the-ytype-of-any-yobject/187