graph-crdt
Version:
A Delta State Graph CRDT variant
47 lines (36 loc) • 1.19 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _stringify = require("babel-runtime/core-js/json/stringify");
var _stringify2 = _interopRequireDefault(_stringify);
exports.conflict = conflict;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Utilities for deterministically merging node attributes.
*
* @private
* @module graph-crdt/src/union
*/
/**
* Deterministically resolves merge conflicts
* on JSON-compatible data.
*
* @param {Object} field1 - Current state field metadata.
* @param {Object} field2 - Update field metadata.
* @returns {Object} - The greater value, or if they're
* equal, the current state.
*/
function conflict(field1, field2) {
/** Turn the values into comparable strings. */
var string = {
current: (0, _stringify2.default)(field1.value),
update: (0, _stringify2.default)(field2.value)
};
/** Are the values equal? */
var equal = string.current === string.update;
/** Is our current value greater? */
var greater = string.current > string.update;
/** Return the winning value. */
return equal || greater ? field1 : field2;
}