in frontend/index.js [34:68]
function updateRootObject(doc, updated, state) {
let newDoc = updated._root
if (!newDoc) {
newDoc = cloneRootObject(doc[CACHE]._root)
updated._root = newDoc
}
Object.defineProperty(newDoc, OPTIONS, {value: doc[OPTIONS]})
Object.defineProperty(newDoc, CACHE, {value: updated})
Object.defineProperty(newDoc, STATE, {value: state})
if (doc[OPTIONS].freeze) {
for (let objectId of Object.keys(updated)) {
if (updated[objectId] instanceof Table) {
updated[objectId]._freeze()
} else if (updated[objectId] instanceof Text) {
Object.freeze(updated[objectId].elems)
Object.freeze(updated[objectId])
} else {
Object.freeze(updated[objectId])
Object.freeze(updated[objectId][CONFLICTS])
}
}
}
for (let objectId of Object.keys(doc[CACHE])) {
if (!updated[objectId]) {
updated[objectId] = doc[CACHE][objectId]
}
}
if (doc[OPTIONS].freeze) {
Object.freeze(updated)
}
return newDoc
}