The following code
const sharedDoc = new Y.Doc()
sharedDoc.getMap('sharedMap')
sharedDoc.getArray('sharedArray')
sharedDoc.get('sharedText',Y.Text)
sharedDoc.get('sharedXmlElement',Y.XmlElement)
sharedDoc.get('sharedXmlFragment',Y.XmlFragment)
sharedDoc.get('sharedXmlText',Y.XmlText)
// sharedDoc.get('sharedDoc',Y.Doc) // is not allowed
//console.log('sharedDoc',sharedDoc)
const Persistence = new IndexeddbPersistence('Yjs-Test-TopLevel-Content',sharedDoc)
Persistence.on('synced', async () => {
console.log('persisted')
const sharedDoc = new Y.Doc()
const Persistence = new IndexeddbPersistence('Yjs-Test-TopLevel-Content',sharedDoc)
Persistence.on('synced', async () => {
console.log('loaded')
console.log('sharedDoc.share',sharedDoc.share)
})
})
(run in a browser) shows that all the top-level “shared types” will not be persisted.
However, if these top-level entries contain some (dummy) data, persistence works as intended:
const sharedDoc = new Y.Doc()
sharedDoc.getMap('sharedMap').set('Dummy',true)
sharedDoc.getArray('sharedArray').insert(0,['Dummy'])
sharedDoc.get('sharedText',Y.Text).insert(0,'Dummy')
sharedDoc.get('sharedXmlElement',Y.XmlElement).setAttribute('Dummy','Dummy')
sharedDoc.get('sharedXmlFragment',Y.XmlFragment).insert(0,[new Y.XmlText()])
sharedDoc.get('sharedXmlText',Y.XmlText).insert(0,'Dummy')
// sharedDoc.get('sharedDoc',Y.Doc) // is not allowed
//console.log('sharedDoc',sharedDoc)
const Persistence = new IndexeddbPersistence('Yjs-Test-TopLevel-Content',sharedDoc)
Persistence.on('synced', async () => {
console.log('persisted')
const sharedDoc = new Y.Doc()
const Persistence = new IndexeddbPersistence('Yjs-Test-TopLevel-Content',sharedDoc)
Persistence.on('synced', async () => {
console.log('loaded')
console.log('sharedDoc.share',sharedDoc.share)
})
})
Is this really the intended behaviour?