implement update logging
This commit is contained in:
		
							parent
							
								
									22aef63d8a
								
							
						
					
					
						commit
						072947c0bb
					
				@ -65,6 +65,8 @@ export {
 | 
			
		||||
  encodeSnapshotV2,
 | 
			
		||||
  decodeStateVector,
 | 
			
		||||
  decodeStateVectorV2,
 | 
			
		||||
  logUpdate,
 | 
			
		||||
  logUpdateV2,
 | 
			
		||||
  isDeleted,
 | 
			
		||||
  isParentOf,
 | 
			
		||||
  equalSnapshots,
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@
 | 
			
		||||
import * as binary from 'lib0/binary.js'
 | 
			
		||||
import * as decoding from 'lib0/decoding.js'
 | 
			
		||||
import * as encoding from 'lib0/encoding.js'
 | 
			
		||||
import * as logging from 'lib0/logging.js'
 | 
			
		||||
import {
 | 
			
		||||
  createID,
 | 
			
		||||
  readItemContent,
 | 
			
		||||
@ -82,6 +83,26 @@ export class LazyStructReader {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Uint8Array} update
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
export const logUpdate = update => logUpdateV2(update, UpdateDecoderV1)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Uint8Array} update
 | 
			
		||||
 * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
export const logUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {
 | 
			
		||||
  const structs = []
 | 
			
		||||
  const lazyDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)))
 | 
			
		||||
  for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {
 | 
			
		||||
    structs.push(curr)
 | 
			
		||||
  }
 | 
			
		||||
  logging.print(structs)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class LazyStructWriter {
 | 
			
		||||
  /**
 | 
			
		||||
   * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder
 | 
			
		||||
 | 
			
		||||
@ -57,7 +57,11 @@ export const testMergeUpdatesWrongOrder = tc => {
 | 
			
		||||
  ])
 | 
			
		||||
 | 
			
		||||
  const targetState = Y.encodeStateAsUpdate(ydoc)
 | 
			
		||||
  t.info('Target State: ')
 | 
			
		||||
  Y.logUpdate(targetState)
 | 
			
		||||
  ;[wrongOrder, overlapping, separated].forEach((updates, i) => {
 | 
			
		||||
    t.info('State $' + i + ':')
 | 
			
		||||
    Y.logUpdate(updates)
 | 
			
		||||
    const merged = new Y.Doc()
 | 
			
		||||
    Y.applyUpdate(merged, updates)
 | 
			
		||||
    t.compareArrays(merged.getArray().toArray(), array.toArray())
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user