Merge branch 'relm-us-ydoctojson' into main
This commit is contained in:
		
						commit
						dc136ff56a
					
				@ -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