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
JavaScript
;
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
};