UNPKG

@walletpack/core

Version:

> TODO: description

108 lines (85 loc) 3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.mathematicalVersion = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var mathematicalVersion = function mathematicalVersion(version) { if (!version || version === '0') return 0; var parts = version.replace(/[.]/g, '_').replace(/[m]/g, '').split('_'); if (parts.length !== 3) throw new Error("Migration error, invalid version"); var total = 0; parts.map(function (v, i) { var multiplier = i === 0 ? 100 : i === 1 ? 10 : 1; total += parseFloat(v) * multiplier; }); return total; }; exports.mathematicalVersion = mathematicalVersion; var fnToVersion = function fnToVersion(fnName) { return fnName.replace(/[m]/g, '').replace(/[_]/g, '.'); }; var _default = /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee(scatter, migrators) { var lastVersion, nextVersions, i; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: scatter.meta.regenerateVersion(); if (!scatter.isEncrypted()) { _context.next = 3; break; } return _context.abrupt("return", false); case 3: if (scatter.meta.needsUpdating()) { _context.next = 5; break; } return _context.abrupt("return", false); case 5: lastVersion = mathematicalVersion(scatter.meta.lastVersion); nextVersions = Object.keys(migrators).filter(function (v) { return mathematicalVersion(v) > lastVersion; }).sort(function (a, b) { return mathematicalVersion(a) - mathematicalVersion(b); }); if (!nextVersions.length) { _context.next = 16; break; } i = 0; case 9: if (!(i < nextVersions.length)) { _context.next = 15; break; } _context.next = 12; return migrators[nextVersions[i]](scatter); case 12: i++; _context.next = 9; break; case 15: scatter.meta.lastVersion = fnToVersion(nextVersions[nextVersions.length - 1]); case 16: return _context.abrupt("return", nextVersions.length > 0); case 17: case "end": return _context.stop(); } } }, _callee); })); return function (_x, _x2) { return _ref.apply(this, arguments); }; }(); exports["default"] = _default;