merge with upstream
This commit is contained in:
		
						commit
						b73a720fdc
					
				@ -169,6 +169,24 @@ export class Doc extends Observable {
 | 
			
		||||
    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.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
@ -30,3 +30,30 @@ export const testGetTypeEmptyId = tc => {
 | 
			
		||||
  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 array from './y-array.tests.js'
 | 
			
		||||
import * as text from './y-text.tests.js'
 | 
			
		||||
import * as xml from './y-xml.tests.js'
 | 
			
		||||
import * as encoding from './encoding.tests.js'
 | 
			
		||||
@ -16,7 +16,7 @@ if (isBrowser) {
 | 
			
		||||
  log.createVConsole(document.body)
 | 
			
		||||
}
 | 
			
		||||
runTests({
 | 
			
		||||
  map, array, text, xml, doc, encoding, undoredo, compatibility
 | 
			
		||||
  doc, map, array, text, xml, encoding, undoredo, compatibility
 | 
			
		||||
}).then(success => {
 | 
			
		||||
  /* istanbul ignore next */
 | 
			
		||||
  if (isNode) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user