UNPKG

json-prism

Version:

Immutable Prisms, i.e. Taking a Multifoci Json Path to Immutability, or A sentient item has some ability to communicate, either by sharing its emotions, broadcasting its thoughts telepathically, or speaking aloud.

78 lines (62 loc) 2.42 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _regeneratorRuntime2 = require("@babel/runtime/regenerator"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _marked = /*#__PURE__*/ _regeneratorRuntime2.mark(versioner); var _require = require('../../../../utils/trace'), show = _require.show, aLine = _require.aLine; var incrementer = function incrementer(previous) { return function () { var by = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return previous === undefined ? 0 : by ? previous + by : previous; }; }; function versioner(context) { var patchVersion, incrementVersion, currentVersion, controls, _ref, _ref$forward, forward, _ref$step, step, _ref$backward, backward; return _regenerator["default"].wrap(function versioner$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: patchVersion = incrementer()(); // unit incrementVersion = incrementer(patchVersion); // sensible default and a marker where this was put to use, partitionByVersioner marker currentVersion = incrementVersion(1); case 3: if (!true) { _context.next = 15; break; } show({ currentVersion: currentVersion }); _context.next = 7; return currentVersion; case 7: controls = _context.sent; show({ controls: controls === undefined ? 'null' : controls }); _ref = controls || {}, _ref$forward = _ref.forward, forward = _ref$forward === void 0 ? true : _ref$forward, _ref$step = _ref.step, step = _ref$step === void 0 ? 1 : _ref$step, _ref$backward = _ref.backward, backward = _ref$backward === void 0 ? false : _ref$backward; // @TODO test backward stepping show({ forward: forward, step: step, backward: backward }); currentVersion = backward ? incrementer(currentVersion)(-step) : incrementer(currentVersion)(step); show({ nextVersionToBeYielded: currentVersion }); _context.next = 3; break; case 15: case "end": return _context.stop(); } } }, _marked); } module.exports = { versioner: versioner };