merge with upstream
This commit is contained in:
commit
b73a720fdc
@ -169,6 +169,24 @@ export class Doc extends Observable {
|
|||||||
return this.get(name, YXmlFragment)
|
return this.get(name, YXmlFragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts the entire document into a js object, recursively traversing each yjs type
|
||||||
|
*
|
||||||
|
* @return {Object<string, any>}
|
||||||
|
*/
|
||||||
|
toJSON () {
|
||||||
|
/**
|
||||||
|
* @type {Object<string, any>}
|
||||||
|
*/
|
||||||
|
const doc = {}
|
||||||
|
|
||||||
|
for (const [k, v] of this.share.entries()) {
|
||||||
|
doc[k] = v.toJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
return doc
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emit `destroy` event and unregister all event handlers.
|
* Emit `destroy` event and unregister all event handlers.
|
||||||
*/
|
*/
|
||||||
|
@ -30,3 +30,30 @@ export const testGetTypeEmptyId = tc => {
|
|||||||
t.assert(doc2.getText().toString() === 'hi')
|
t.assert(doc2.getText().toString() === 'hi')
|
||||||
t.assert(doc2.getText('').toString() === 'hi')
|
t.assert(doc2.getText('').toString() === 'hi')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {t.TestCase} tc
|
||||||
|
*/
|
||||||
|
export const testToJSON = tc => {
|
||||||
|
const doc = new Y.Doc()
|
||||||
|
t.compare(doc.toJSON(), {}, 'doc.toJSON yields empty object')
|
||||||
|
|
||||||
|
const arr = doc.getArray('array')
|
||||||
|
arr.push(['test1'])
|
||||||
|
|
||||||
|
const map = doc.getMap('map')
|
||||||
|
map.set('k1', 'v1')
|
||||||
|
const map2 = new Y.Map()
|
||||||
|
map.set('k2', map2)
|
||||||
|
map2.set('m2k1', 'm2v1')
|
||||||
|
|
||||||
|
t.compare(doc.toJSON(), {
|
||||||
|
array: ['test1'],
|
||||||
|
map: {
|
||||||
|
k1: 'v1',
|
||||||
|
k2: {
|
||||||
|
m2k1: 'm2v1'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 'doc.toJSON has array and recursive map')
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
import * as array from './y-array.tests.js'
|
|
||||||
import * as map from './y-map.tests.js'
|
import * as map from './y-map.tests.js'
|
||||||
|
import * as array from './y-array.tests.js'
|
||||||
import * as text from './y-text.tests.js'
|
import * as text from './y-text.tests.js'
|
||||||
import * as xml from './y-xml.tests.js'
|
import * as xml from './y-xml.tests.js'
|
||||||
import * as encoding from './encoding.tests.js'
|
import * as encoding from './encoding.tests.js'
|
||||||
@ -16,7 +16,7 @@ if (isBrowser) {
|
|||||||
log.createVConsole(document.body)
|
log.createVConsole(document.body)
|
||||||
}
|
}
|
||||||
runTests({
|
runTests({
|
||||||
map, array, text, xml, doc, encoding, undoredo, compatibility
|
doc, map, array, text, xml, encoding, undoredo, compatibility
|
||||||
}).then(success => {
|
}).then(success => {
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
if (isNode) {
|
if (isNode) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user