complete refactor of update mechanism to allow encoding of pending updates - #263

This commit is contained in:
Kevin Jahns
2021-01-28 20:28:30 +01:00
parent 304812fb07
commit 7edbb2485f
5 changed files with 284 additions and 224 deletions

View File

@@ -336,9 +336,8 @@ export const compare = users => {
const userXmlValues = users.map(u => u.get('xml', Y.YXmlElement).toString())
const userTextValues = users.map(u => u.getText('text').toDelta())
for (const u of users) {
t.assert(u.store.pendingDeleteReaders.length === 0)
t.assert(u.store.pendingStack.length === 0)
t.assert(u.store.pendingClientsStructRefs.size === 0)
t.assert(u.store.pendingDs === null)
t.assert(u.store.pendingStructs === null)
}
// Test Array iterator
t.compare(users[0].getArray('array').toArray(), Array.from(users[0].getArray('array')))

View File

@@ -52,17 +52,17 @@ const encDoc = {
mergeUpdates: (updates) => {
const ydoc = new Y.Doc()
updates.forEach(update => {
Y.applyUpdate(ydoc, update)
Y.applyUpdateV2(ydoc, update)
})
return Y.encodeStateAsUpdate(ydoc)
return Y.encodeStateAsUpdateV2(ydoc)
},
encodeStateAsUpdate: Y.encodeStateAsUpdate,
applyUpdate: Y.applyUpdate,
logUpdate: Y.logUpdate,
encodeStateAsUpdate: Y.encodeStateAsUpdateV2,
applyUpdate: Y.applyUpdateV2,
logUpdate: Y.logUpdateV2,
parseUpdateMeta: Y.parseUpdateMetaV2,
encodeStateVectorFromUpdate: Y.encodeStateVectorFromUpdateV2,
encodeStateVector: Y.encodeStateVector,
updateEventName: 'update',
encodeStateVector: Y.encodeStateVectorV2,
updateEventName: 'updateV2',
description: 'Merge via Y.Doc'
}
@@ -131,13 +131,13 @@ const checkUpdateCases = (ydoc, updates, enc) => {
// Case 5: overlapping with many duplicates
cases.push(enc.mergeUpdates(cases))
const targetState = enc.encodeStateAsUpdate(ydoc)
t.info('Target State: ')
enc.logUpdate(targetState)
// const targetState = enc.encodeStateAsUpdate(ydoc)
// t.info('Target State: ')
// enc.logUpdate(targetState)
cases.forEach((updates, i) => {
t.info('State Case $' + i + ':')
enc.logUpdate(updates)
// t.info('State Case $' + i + ':')
// enc.logUpdate(updates)
const merged = new Y.Doc()
enc.applyUpdate(merged, updates)
t.compareArrays(merged.getArray().toArray(), ydoc.getArray().toArray())