UNPKG

gun-flint

Version:

Micro-framework for building Gun adapters

124 lines (90 loc) 4.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _baseAdapter = require('./base-adapter'); var _baseAdapter2 = _interopRequireDefault(_baseAdapter); var _util = require('./../util'); var _util2 = _interopRequireDefault(_util); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var KeyValAdapter = function (_BaseAdapter) { (0, _inherits3.default)(KeyValAdapter, _BaseAdapter); function KeyValAdapter() { (0, _classCallCheck3.default)(this, KeyValAdapter); return (0, _possibleConstructorReturn3.default)(this, (KeyValAdapter.__proto__ || (0, _getPrototypeOf2.default)(KeyValAdapter)).apply(this, arguments)); } (0, _createClass3.default)(KeyValAdapter, [{ key: 'read', /** * @param {Array|Object} result - An array of objects (= records) like so * { * key: 'uuid for the node' * nodeKey: 'node value's name' * val: 'Value' * rel: 'Relationship (if referring to another node) * state: 'conflict resolution value' * } * @param {Function} callback - Call once read finished * @return {void} */ value: function read(result, done) { if (result) { var key = result instanceof Array && result.length ? result[0].key : result.key; result = _util2.default.gunify(key, result); } done(null, result); } /** * @param {Object} delta - A delta for the current node * @param {Function} callback - Called once write finished * @return {void} */ }, { key: 'write', value: function write(delta, done) { var _this2 = this; var keys = (0, _keys2.default)(delta); // Batch together key:val writes var batch = []; // Iterate through each node in the delta keys.forEach(function (key) { var nodeDelta = delta[key]; var conflictState = nodeDelta._['>']; // Iterate through each field in the node delta (0, _keys2.default)(nodeDelta).map(function (field) { // Ignore meta info if (field !== '_') { var state = conflictState[field]; // base node var node = { state: state, field: field, key: key }; // Add rel or val if (_this2.Gun.obj.is(nodeDelta[field])) { node.rel = nodeDelta[field]['#']; } else { node.val = nodeDelta[field]; } batch.push(node); } }); }, this); // Write batch if (batch.length) { this._put(batch, done); } } }]); return KeyValAdapter; }(_baseAdapter2.default); exports.default = KeyValAdapter;