Last active
August 3, 2021 22:21
-
-
Save josephg/0522c4aec5021cc1dddb60e778828dbe to your computer and use it in GitHub Desktop.
automerge output flat
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| CACHE = { | |
| _root: { | |
| text: { | |
| elems: [ | |
| { | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '2@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'a' | |
| }, | |
| { | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '3@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'b' | |
| }, | |
| { | |
| elemId: '4@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '4@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'c' | |
| } | |
| ] | |
| } | |
| }, | |
| '1@3cb54fecd444446cbe579bd128017c42': { | |
| elems: [ | |
| { | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '2@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'a' | |
| }, | |
| { | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '3@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'b' | |
| }, | |
| { | |
| elemId: '4@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '4@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'c' | |
| } | |
| ] | |
| } | |
| } | |
| CONFLICTS = { | |
| text: { | |
| '1@3cb54fecd444446cbe579bd128017c42': { | |
| elems: [ | |
| { | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '2@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'a' | |
| }, | |
| { | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '3@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'b' | |
| }, | |
| { | |
| elemId: '4@3cb54fecd444446cbe579bd128017c42', | |
| pred: [ '4@3cb54fecd444446cbe579bd128017c42' ], | |
| value: 'c' | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| STATE = { | |
| seq: 4, | |
| maxOp: 4, | |
| requests: [], | |
| clock: { '3cb54fecd444446cbe579bd128017c42': 4 }, | |
| deps: [], | |
| backendState: { | |
| state: { | |
| opSet: { | |
| states: { | |
| '3cb54fecd444446cbe579bd128017c42': [ | |
| 'c76f124cc443e45a653e763f5356776f1aae8e540520d645f597cf91660bb129', | |
| '4d493936bf6224f93aabd0d2266f57af1b9607acdb032bc78dbfa16398985818', | |
| '4191aa7393bc40d1c2155f0002b1510129e79b478be1f833235b0e6d94871efb', | |
| 'a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e' | |
| ] | |
| }, | |
| history: [ | |
| 'c76f124cc443e45a653e763f5356776f1aae8e540520d645f597cf91660bb129', | |
| '4d493936bf6224f93aabd0d2266f57af1b9607acdb032bc78dbfa16398985818', | |
| '4191aa7393bc40d1c2155f0002b1510129e79b478be1f833235b0e6d94871efb', | |
| 'a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e' | |
| ], | |
| byObject: { | |
| _root: { | |
| _keys: { | |
| text: [ | |
| { | |
| obj: '_root', | |
| key: 'text', | |
| action: 'makeText', | |
| insert: false, | |
| pred: [], | |
| opId: '1@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ] | |
| } | |
| }, | |
| '1@3cb54fecd444446cbe579bd128017c42': { | |
| _init: { | |
| obj: '_root', | |
| key: 'text', | |
| action: 'makeText', | |
| insert: false, | |
| pred: [], | |
| opId: '1@3cb54fecd444446cbe579bd128017c42' | |
| }, | |
| _inbound: [ | |
| { | |
| obj: '_root', | |
| key: 'text', | |
| action: 'makeText', | |
| insert: false, | |
| pred: [], | |
| opId: '1@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ], | |
| _keys: { | |
| '2@3cb54fecd444446cbe579bd128017c42': [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '_head', | |
| action: 'set', | |
| insert: true, | |
| value: 'a', | |
| pred: [], | |
| opId: '2@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ], | |
| '3@3cb54fecd444446cbe579bd128017c42': [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'b', | |
| pred: [], | |
| opId: '3@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ], | |
| '4@3cb54fecd444446cbe579bd128017c42': [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'c', | |
| pred: [], | |
| opId: '4@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ] | |
| }, | |
| _elemIds: { | |
| length: 3, | |
| _nodes: { | |
| null: { | |
| key: null, | |
| value: null, | |
| level: 2, | |
| prevKey: [], | |
| nextKey: [ | |
| '2@3cb54fecd444446cbe579bd128017c42', | |
| '2@3cb54fecd444446cbe579bd128017c42' | |
| ], | |
| prevCount: [], | |
| nextCount: [ 1, 1 ] | |
| }, | |
| '2@3cb54fecd444446cbe579bd128017c42': { | |
| key: '2@3cb54fecd444446cbe579bd128017c42', | |
| value: 'a', | |
| level: 2, | |
| prevKey: [ null, null ], | |
| nextKey: [ | |
| '3@3cb54fecd444446cbe579bd128017c42', | |
| '4@3cb54fecd444446cbe579bd128017c42' | |
| ], | |
| prevCount: [ 1, 1 ], | |
| nextCount: [ 1, 2 ] | |
| }, | |
| '3@3cb54fecd444446cbe579bd128017c42': { | |
| key: '3@3cb54fecd444446cbe579bd128017c42', | |
| value: 'b', | |
| level: 1, | |
| prevKey: [ '2@3cb54fecd444446cbe579bd128017c42' ], | |
| nextKey: [ '4@3cb54fecd444446cbe579bd128017c42' ], | |
| prevCount: [ 1 ], | |
| nextCount: [ 1 ] | |
| }, | |
| '4@3cb54fecd444446cbe579bd128017c42': { | |
| key: '4@3cb54fecd444446cbe579bd128017c42', | |
| value: 'c', | |
| level: 2, | |
| prevKey: [ | |
| '3@3cb54fecd444446cbe579bd128017c42', | |
| '2@3cb54fecd444446cbe579bd128017c42' | |
| ], | |
| nextKey: [ null, null ], | |
| prevCount: [ 1, 2 ], | |
| nextCount: [ 1, 1 ] | |
| } | |
| }, | |
| _randomSource: { next: [Function: next] } | |
| }, | |
| _following: { | |
| _head: [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '_head', | |
| action: 'set', | |
| insert: true, | |
| value: 'a', | |
| pred: [], | |
| opId: '2@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ], | |
| '2@3cb54fecd444446cbe579bd128017c42': [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'b', | |
| pred: [], | |
| opId: '3@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ], | |
| '3@3cb54fecd444446cbe579bd128017c42': [ | |
| { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'c', | |
| pred: [], | |
| opId: '4@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| ] | |
| }, | |
| _insertion: { | |
| '2@3cb54fecd444446cbe579bd128017c42': { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '_head', | |
| action: 'set', | |
| insert: true, | |
| value: 'a', | |
| pred: [], | |
| opId: '2@3cb54fecd444446cbe579bd128017c42' | |
| }, | |
| '3@3cb54fecd444446cbe579bd128017c42': { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '2@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'b', | |
| pred: [], | |
| opId: '3@3cb54fecd444446cbe579bd128017c42' | |
| }, | |
| '4@3cb54fecd444446cbe579bd128017c42': { | |
| obj: '1@3cb54fecd444446cbe579bd128017c42', | |
| elemId: '3@3cb54fecd444446cbe579bd128017c42', | |
| action: 'set', | |
| insert: true, | |
| value: 'c', | |
| pred: [], | |
| opId: '4@3cb54fecd444446cbe579bd128017c42' | |
| } | |
| } | |
| } | |
| }, | |
| hashes: { | |
| c76f124cc443e45a653e763f5356776f1aae8e540520d645f597cf91660bb129: { | |
| actor: '3cb54fecd444446cbe579bd128017c42', | |
| seq: 1, | |
| startOp: 1, | |
| change: Uint8Array(75) [ | |
| 133, 111, 74, 131, 199, 111, 18, 76, 1, 65, 0, 16, | |
| 60, 181, 79, 236, 212, 68, 68, 108, 190, 87, 155, 209, | |
| 40, 1, 124, 66, 1, 1, 230, 199, 157, 133, 6, 14, | |
| 73, 110, 105, 116, 105, 97, 108, 105, 122, 97, 116, 105, | |
| 111, 110, 0, 5, 21, 6, 52, 1, 66, 2, 86, 2, | |
| 112, 2, 127, 4, 116, 101, 120, 116, 1, 127, 4, 127, | |
| 0, 127, 0 | |
| ], | |
| maxOpId: 1, | |
| depsPast: [], | |
| depsFuture: [ | |
| '4d493936bf6224f93aabd0d2266f57af1b9607acdb032bc78dbfa16398985818' | |
| ] | |
| }, | |
| '4d493936bf6224f93aabd0d2266f57af1b9607acdb032bc78dbfa16398985818': { | |
| actor: '3cb54fecd444446cbe579bd128017c42', | |
| seq: 2, | |
| startOp: 2, | |
| change: Uint8Array(101) [ | |
| 133, 111, 74, 131, 77, 73, 57, 54, 1, 91, 1, 199, | |
| 111, 18, 76, 196, 67, 228, 90, 101, 62, 118, 63, 83, | |
| 86, 119, 111, 26, 174, 142, 84, 5, 32, 214, 69, 245, | |
| 151, 207, 145, 102, 11, 177, 41, 16, 60, 181, 79, 236, | |
| 212, 68, 68, 108, 190, 87, 155, 209, 40, 1, 124, 66, | |
| 2, 2, 230, 199, 157, 133, 6, 0, 0, 8, 1, 2, | |
| 2, 2, 19, 2, 52, 2, 66, 2, 86, 2, 87, 1, | |
| 112, 2, 127, 0, 127, 1, 127, 0, 0, 1, 127, 1, | |
| 127, 22, 97, 127, | |
| ... 1 more item | |
| ], | |
| maxOpId: 2, | |
| depsPast: [ | |
| 'c76f124cc443e45a653e763f5356776f1aae8e540520d645f597cf91660bb129' | |
| ], | |
| depsFuture: [ | |
| '4191aa7393bc40d1c2155f0002b1510129e79b478be1f833235b0e6d94871efb' | |
| ] | |
| }, | |
| '4191aa7393bc40d1c2155f0002b1510129e79b478be1f833235b0e6d94871efb': { | |
| actor: '3cb54fecd444446cbe579bd128017c42', | |
| seq: 3, | |
| startOp: 3, | |
| change: Uint8Array(105) [ | |
| 133, 111, 74, 131, 65, 145, 170, 115, 1, 95, 1, 77, | |
| 73, 57, 54, 191, 98, 36, 249, 58, 171, 208, 210, 38, | |
| 111, 87, 175, 27, 150, 7, 172, 219, 3, 43, 199, 141, | |
| 191, 161, 99, 152, 152, 88, 24, 16, 60, 181, 79, 236, | |
| 212, 68, 68, 108, 190, 87, 155, 209, 40, 1, 124, 66, | |
| 3, 3, 230, 199, 157, 133, 6, 0, 0, 9, 1, 2, | |
| 2, 2, 17, 2, 19, 2, 52, 2, 66, 2, 86, 2, | |
| 87, 1, 112, 2, 127, 0, 127, 1, 127, 0, 127, 2, | |
| 0, 1, 127, 1, | |
| ... 5 more items | |
| ], | |
| maxOpId: 3, | |
| depsPast: [ | |
| '4d493936bf6224f93aabd0d2266f57af1b9607acdb032bc78dbfa16398985818' | |
| ], | |
| depsFuture: [ | |
| 'a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e' | |
| ] | |
| }, | |
| a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e: { | |
| actor: '3cb54fecd444446cbe579bd128017c42', | |
| seq: 4, | |
| startOp: 4, | |
| change: Uint8Array(105) [ | |
| 133, 111, 74, 131, 167, 103, 37, 61, 1, 95, 1, 65, | |
| 145, 170, 115, 147, 188, 64, 209, 194, 21, 95, 0, 2, | |
| 177, 81, 1, 41, 231, 155, 71, 139, 225, 248, 51, 35, | |
| 91, 14, 109, 148, 135, 30, 251, 16, 60, 181, 79, 236, | |
| 212, 68, 68, 108, 190, 87, 155, 209, 40, 1, 124, 66, | |
| 4, 4, 230, 199, 157, 133, 6, 0, 0, 9, 1, 2, | |
| 2, 2, 17, 2, 19, 2, 52, 2, 66, 2, 86, 2, | |
| 87, 1, 112, 2, 127, 0, 127, 1, 127, 0, 127, 3, | |
| 0, 1, 127, 1, | |
| ... 5 more items | |
| ], | |
| maxOpId: 4, | |
| depsPast: [ | |
| '4191aa7393bc40d1c2155f0002b1510129e79b478be1f833235b0e6d94871efb' | |
| ], | |
| depsFuture: [] | |
| } | |
| }, | |
| deps: [ | |
| 'a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e' | |
| ], | |
| maxOp: 4, | |
| queue: [] | |
| }, | |
| objectIds: {} | |
| }, | |
| heads: [ | |
| 'a767253de1aa18b15d0d40c124f97a72f9a4cdb397e1e8719b3b88381624139e' | |
| ] | |
| }, | |
| lastLocalChange: Uint8Array(105) [ | |
| 133, 111, 74, 131, 167, 103, 37, 61, 1, 95, 1, 65, | |
| 145, 170, 115, 147, 188, 64, 209, 194, 21, 95, 0, 2, | |
| 177, 81, 1, 41, 231, 155, 71, 139, 225, 248, 51, 35, | |
| 91, 14, 109, 148, 135, 30, 251, 16, 60, 181, 79, 236, | |
| 212, 68, 68, 108, 190, 87, 155, 209, 40, 1, 124, 66, | |
| 4, 4, 230, 199, 157, 133, 6, 0, 0, 9, 1, 2, | |
| 2, 2, 17, 2, 19, 2, 52, 2, 66, 2, 86, 2, | |
| 87, 1, 112, 2, 127, 0, 127, 1, 127, 0, 127, 3, | |
| 0, 1, 127, 1, | |
| ... 5 more items | |
| ] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const automerge = require('automerge') | |
| const constants = require('automerge/frontend/constants') | |
| const consoleLib = require('console') | |
| globalThis.console = new consoleLib.Console({ | |
| stdout: process.stdout, stderr: process.stderr, | |
| inspectOptions: {depth: null} | |
| }) | |
| let state = automerge.from({text: new automerge.Text("")}) | |
| state = automerge.change(state, doc => { | |
| doc.text.insertAt(0, 'a') | |
| }) | |
| state = automerge.change(state, doc => { | |
| doc.text.insertAt(1, 'b') | |
| }) | |
| state = automerge.change(state, doc => { | |
| doc.text.insertAt(2, 'c') | |
| }) | |
| const flatten = obj => { | |
| if (obj == null || typeof obj !== 'object') return obj | |
| else if (obj.toJS) return flatten(obj.toJS()) | |
| //else if (obj instanceof Uint8Array) return `[Uint8Array (${obj.byteLength})]` | |
| else if (obj instanceof Uint8Array) return obj | |
| else if (Array.isArray(obj)) return obj.map(flatten) | |
| else return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, flatten(v)])) | |
| } | |
| // console.log(flatten(state[constants.STATE])) | |
| console.log('CACHE =', flatten(state[constants.CACHE])) | |
| console.log('CONFLICTS =', flatten(state[constants.CONFLICTS])) | |
| console.log('STATE =', flatten(state[constants.STATE])) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment