UNPKG

@graffy/common

Version:

Common libraries that used by various Graffy modules.

143 lines (120 loc) 3.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); exports.__esModule = true; exports.graph = graph; exports.page = page; exports.link = link; exports.scalar = scalar; var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter")); var _now = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/date/now")); var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys")); var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort")); var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array")); var _graph = require("../graph"); var _path = require("../path"); var _node = require("../node"); var _encode = require("../encode"); function makeGraph(key, value, version) { if (typeof value === 'function') { // This is a page or a link waiting for a version. return value(key, version); } else if ((0, _isArray.default)(value)) { var _context; // Convert the KV-tuple format to a graph return { key: key, version: version, children: (0, _sort.default)(_context = (0, _map.default)(value).call(value, function (_ref) { var k = _ref.key, name = _ref.name, v = _ref.value, children = _ref.children, path = _ref.path; return makeGraph(name || (0, _encode.encodeKey)(k), children || path && link(path) || v && scalar(v), version); })).call(_context, function (a, b) { return a.key <= b.key ? -1 : 1; }) }; } else if (value === null) { // This is a single key known to be missing. return { key: key, end: key, version: version }; } else if (typeof value === 'object' && value) { var _context2, _context3; return { key: key, version: version, children: (0, _map.default)(_context2 = (0, _sort.default)(_context3 = (0, _keys.default)(value)).call(_context3)).call(_context2, function (k) { return makeGraph(k, value[k], version); }) }; } else { return { key: key, version: version, value: value }; } } function graph(obj, version) { if (version === void 0) { version = (0, _now.default)(); } // console.log('makeGraph called with', obj); if (!obj) return obj; return makeGraph('', obj, version).children; } function page(obj, key, end) { if (key === void 0) { key = ''; } if (end === void 0) { end = "\uFFFF"; } return function (outerKey, version) { var _context4, _context5; var nodes = graph(obj, version); var gaps = (0, _filter.default)(_context4 = (0, _graph.merge)([{ key: key, end: end, version: version }], (0, _map.default)(_context5 = (0, _keys.default)(obj)).call(_context5, function (key) { return { key: key, value: 1, version: version }; }))).call(_context4, function (node) { return (0, _node.isRange)(node); }); var children = (0, _graph.merge)(nodes, gaps); return { key: outerKey, version: version, children: children }; }; } function link(rawPath) { var path = (0, _path.makePath)(rawPath); return function (key, version) { return { key: key, version: version, path: path }; }; } function scalar(value) { return function (key, version) { return { key: key, version: version, value: value }; }; }