UNPKG

graph-crdt

Version:
47 lines (36 loc) 1.19 kB
"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; }