From 2d69d44046709ae77bb366911ed34390a7d56459 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Tue, 22 Oct 2019 16:21:27 -0500 Subject: [PATCH] SFJS 0.3.69 --- Gruntfile.js | 1 - dist/javascripts/compiled.js | 8986 +++++++++++++++++------------- dist/javascripts/compiled.min.js | 2 +- package-lock.json | 126 +- package.json | 2 +- 5 files changed, 5041 insertions(+), 4076 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 04b158bd6..2a10c782f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -166,7 +166,6 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-sass'); - grunt.loadNpmTasks('grunt-ng-annotate'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-babel'); grunt.loadNpmTasks('grunt-browserify'); diff --git a/dist/javascripts/compiled.js b/dist/javascripts/compiled.js index 5aaa73202..e40eb9a0f 100644 --- a/dist/javascripts/compiled.js +++ b/dist/javascripts/compiled.js @@ -844,22 +844,41 @@ k)-899497514);j=k;k=e;e=g<<30|g>>>2;g=h;h=c}b[0]=b[0]+h|0;b[1]=b[1]+g|0;b[2]=b[2 Object.defineProperty(exports, "__esModule", { value: true }); +exports.StandardFile = exports.SFItemTransformer = exports.SFCryptoWeb = exports.SFCryptoJS = exports.SFAbstractCrypto = exports.SFItemHistoryEntry = exports.SFItemHistory = exports.SFHistorySession = exports.SFPrivileges = exports.SFPredicate = exports.SFItemParams = exports.SFItem = exports.SFSyncManager = exports.SFStorageManager = exports.SFSingletonManager = exports.SFSessionHistoryManager = exports.SFPrivilegesManager = exports.SFModelManager = exports.SFMigrationManager = exports.SFHttpManager = exports.SFAuthManager = exports.SFAlertManager = void 0; -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var SFAlertManager = exports.SFAlertManager = function () { +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var SFAlertManager = +/*#__PURE__*/ +function () { function SFAlertManager() { _classCallCheck(this, SFAlertManager); } @@ -867,7 +886,9 @@ var SFAlertManager = exports.SFAlertManager = function () { _createClass(SFAlertManager, [{ key: "alert", value: function () { - var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(params) { + var _alert = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee(params) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { @@ -882,11 +903,11 @@ var SFAlertManager = exports.SFAlertManager = function () { return _context.stop(); } } - }, _callee, this); + }, _callee); })); function alert(_x) { - return _ref.apply(this, arguments); + return _alert.apply(this, arguments); } return alert; @@ -894,7 +915,9 @@ var SFAlertManager = exports.SFAlertManager = function () { }, { key: "confirm", value: function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(params) { + var _confirm = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee2(params) { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { @@ -912,11 +935,11 @@ var SFAlertManager = exports.SFAlertManager = function () { return _context2.stop(); } } - }, _callee2, this); + }, _callee2); })); function confirm(_x2) { - return _ref2.apply(this, arguments); + return _confirm.apply(this, arguments); } return confirm; @@ -926,20 +949,22 @@ var SFAlertManager = exports.SFAlertManager = function () { return SFAlertManager; }(); +exports.SFAlertManager = SFAlertManager; ; -var SFAuthManager = exports.SFAuthManager = function () { + +var SFAuthManager = +/*#__PURE__*/ +function () { function SFAuthManager(storageManager, httpManager, alertManager, timeout) { _classCallCheck(this, SFAuthManager); SFAuthManager.DidSignOutEvent = "DidSignOutEvent"; SFAuthManager.WillSignInEvent = "WillSignInEvent"; SFAuthManager.DidSignInEvent = "DidSignInEvent"; - this.httpManager = httpManager; this.storageManager = storageManager; this.alertManager = alertManager || new SFAlertManager(); this.$timeout = timeout || setTimeout.bind(window); - this.eventHandlers = []; } @@ -964,7 +989,6 @@ var SFAuthManager = exports.SFAuthManager = function () { try { for (var _iterator = this.eventHandlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var handler = _step.value; - handler(event, data || {}); } } catch (err) { @@ -972,8 +996,8 @@ var SFAuthManager = exports.SFAuthManager = function () { _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); } } finally { if (_didIteratorError) { @@ -985,7 +1009,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "saveKeys", value: function () { - var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(keys) { + var _saveKeys = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3(keys) { return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { @@ -1007,7 +1033,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function saveKeys(_x3) { - return _ref3.apply(this, arguments); + return _saveKeys.apply(this, arguments); } return saveKeys; @@ -1015,7 +1041,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "signout", value: function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(clearAllData) { + var _signout = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee4(clearAllData) { var _this = this; return regeneratorRuntime.wrap(function _callee4$(_context4) { @@ -1046,7 +1074,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function signout(_x4) { - return _ref4.apply(this, arguments); + return _signout.apply(this, arguments); } return signout; @@ -1054,7 +1082,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "keys", value: function () { - var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var _keys = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee5() { var mk; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { @@ -1102,7 +1132,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function keys() { - return _ref5.apply(this, arguments); + return _keys.apply(this, arguments); } return keys; @@ -1110,7 +1140,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "getAuthParams", value: function () { - var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _getAuthParams = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee6() { var data; return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { @@ -1126,7 +1158,6 @@ var SFAuthManager = exports.SFAuthManager = function () { case 3: data = _context6.sent; - this._authParams = JSON.parse(data); case 5: @@ -1153,7 +1184,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function getAuthParams() { - return _ref6.apply(this, arguments); + return _getAuthParams.apply(this, arguments); } return getAuthParams; @@ -1161,7 +1192,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "defaultProtocolVersion", value: function () { - var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _defaultProtocolVersion = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee7() { var keys; return regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { @@ -1192,7 +1225,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function defaultProtocolVersion() { - return _ref7.apply(this, arguments); + return _defaultProtocolVersion.apply(this, arguments); } return defaultProtocolVersion; @@ -1200,7 +1233,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "protocolVersion", value: function () { - var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var _protocolVersion = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee8() { var authParams; return regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { @@ -1231,7 +1266,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function protocolVersion() { - return _ref8.apply(this, arguments); + return _protocolVersion.apply(this, arguments); } return protocolVersion; @@ -1239,7 +1274,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "getAuthParamsForEmail", value: function () { - var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(url, email, extraParams) { + var _getAuthParamsForEmail = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee9(url, email, extraParams) { var _this2 = this; var params; @@ -1247,18 +1284,26 @@ var SFAuthManager = exports.SFAuthManager = function () { while (1) { switch (_context9.prev = _context9.next) { case 0: - params = _.merge({ email: email }, extraParams); - + params = _.merge({ + email: email + }, extraParams); params['api'] = SFHttpManager.getApiVersion(); return _context9.abrupt("return", new Promise(function (resolve, reject) { var requestUrl = url + "/auth/params"; + _this2.httpManager.getAbsolute(requestUrl, params, function (response) { resolve(response); }, function (response) { console.error("Error getting auth params", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to sign in. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to sign in. Please try again." + } + }; } + resolve(response); }); })); @@ -1268,11 +1313,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context9.stop(); } } - }, _callee9, this); + }, _callee9); })); function getAuthParamsForEmail(_x5, _x6, _x7) { - return _ref9.apply(this, arguments); + return _getAuthParamsForEmail.apply(this, arguments); } return getAuthParamsForEmail; @@ -1301,15 +1346,21 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "login", value: function () { - var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(url, email, password, strictSignin, extraParams) { + var _login = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee12(url, email, password, strictSignin, extraParams) { var _this3 = this; return regeneratorRuntime.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: - return _context12.abrupt("return", new Promise(function () { - var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(resolve, reject) { + return _context12.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee11(resolve, reject) { var existingKeys, authParams, message, _message, abort, _message2, minimum, _message3, latestVersion, _message4, keys, requestUrl, params; return regeneratorRuntime.wrap(function _callee11$(_context11) { @@ -1327,7 +1378,11 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Cannot log in because already signed in." } }); + resolve({ + error: { + message: "Cannot log in because already signed in." + } + }); return _context11.abrupt("return"); case 6: @@ -1336,11 +1391,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Login already in progress." } }); + resolve({ + error: { + message: "Login already in progress." + } + }); return _context11.abrupt("return"); case 9: - _this3.lock(); _this3.notifyEvent(SFAuthManager.WillSignInEvent); @@ -1350,8 +1408,6 @@ var SFAuthManager = exports.SFAuthManager = function () { case 13: authParams = _context11.sent; - - // SF3 requires a unique identifier in the auth params authParams.identifier = email; @@ -1361,6 +1417,7 @@ var SFAuthManager = exports.SFAuthManager = function () { } _this3.unlockAndResolve(resolve, authParams); + return _context11.abrupt("return"); case 18: @@ -1369,7 +1426,12 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _this3.unlockAndResolve(resolve, { error: { message: "Invalid email or password." } }); + _this3.unlockAndResolve(resolve, { + error: { + message: "Invalid email or password." + } + }); + return _context11.abrupt("return"); case 21: @@ -1385,7 +1447,13 @@ var SFAuthManager = exports.SFAuthManager = function () { // The user has a very old account type, which is no longer supported by this client message = "The protocol version associated with your account is outdated and no longer supported by this application. Please visit standardnotes.org/help/security for more information."; } - _this3.unlockAndResolve(resolve, { error: { message: message } }); + + _this3.unlockAndResolve(resolve, { + error: { + message: message + } + }); + return _context11.abrupt("return"); case 25: @@ -1394,15 +1462,18 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _message = "The encryption version for your account, " + authParams.version + ", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."; + _message = "The encryption version for your account, ".concat(authParams.version, ", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."); abort = false; _context11.next = 30; return _this3.alertManager.confirm({ title: "Update Needed", text: _message, confirmButtonText: "Sign In" - }).catch(function () { - _this3.unlockAndResolve(resolve, { error: {} }); + })["catch"](function () { + _this3.unlockAndResolve(resolve, { + error: {} + }); + abort = true; }); @@ -1422,7 +1493,12 @@ var SFAuthManager = exports.SFAuthManager = function () { _message2 = "Your account was created on a platform with higher security capabilities than this browser supports. " + "If we attempted to generate your login keys here, it would take hours. " + "Please use a browser with more up to date security capabilities, like Google Chrome or Firefox, to log in."; - _this3.unlockAndResolve(resolve, { error: { message: _message2 } }); + _this3.unlockAndResolve(resolve, { + error: { + message: _message2 + } + }); + return _context11.abrupt("return"); case 36: @@ -1435,7 +1511,12 @@ var SFAuthManager = exports.SFAuthManager = function () { _message3 = "Unable to login due to insecure password parameters. Please visit standardnotes.org/help/security for more information."; - _this3.unlockAndResolve(resolve, { error: { message: _message3 } }); + _this3.unlockAndResolve(resolve, { + error: { + message: _message3 + } + }); + return _context11.abrupt("return"); case 41: @@ -1452,9 +1533,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _message4 = "Strict sign in refused server sign in parameters. The latest security version is " + latestVersion + ", but your account is reported to have version " + authParams.version + ". If you'd like to proceed with sign in anyway, please disable strict sign in and try again."; + _message4 = "Strict sign in refused server sign in parameters. The latest security version is ".concat(latestVersion, ", but your account is reported to have version ").concat(authParams.version, ". If you'd like to proceed with sign in anyway, please disable strict sign in and try again."); + + _this3.unlockAndResolve(resolve, { + error: { + message: _message4 + } + }); - _this3.unlockAndResolve(resolve, { error: { message: _message4 } }); return _context11.abrupt("return"); case 47: @@ -1464,13 +1550,18 @@ var SFAuthManager = exports.SFAuthManager = function () { case 49: keys = _context11.sent; requestUrl = url + "/auth/sign_in"; - params = _.merge({ password: keys.pw, email: email }, extraParams); - - + params = _.merge({ + password: keys.pw, + email: email + }, extraParams); params['api'] = SFHttpManager.getApiVersion(); - _this3.httpManager.postAbsolute(requestUrl, params, function () { - var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(response) { + _this3.httpManager.postAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee10(response) { return regeneratorRuntime.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { @@ -1480,6 +1571,7 @@ var SFAuthManager = exports.SFAuthManager = function () { case 2: _this3.notifyEvent(SFAuthManager.DidSignInEvent); + _this3.$timeout(function () { return _this3.unlockAndResolve(resolve, response); }); @@ -1489,17 +1581,23 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context10.stop(); } } - }, _callee10, _this3); + }, _callee10); })); return function (_x15) { - return _ref12.apply(this, arguments); + return _ref2.apply(this, arguments); }; }(), function (response) { console.error("Error logging in", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to sign in. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to sign in. Please try again." + } + }; } + _this3.$timeout(function () { return _this3.unlockAndResolve(resolve, response); }); @@ -1510,11 +1608,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context11.stop(); } } - }, _callee11, _this3); + }, _callee11); })); return function (_x13, _x14) { - return _ref11.apply(this, arguments); + return _ref.apply(this, arguments); }; }())); @@ -1523,11 +1621,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context12.stop(); } } - }, _callee12, this); + }, _callee12); })); function login(_x8, _x9, _x10, _x11, _x12) { - return _ref10.apply(this, arguments); + return _login.apply(this, arguments); } return login; @@ -1537,8 +1635,12 @@ var SFAuthManager = exports.SFAuthManager = function () { value: function register(url, email, password) { var _this4 = this; - return new Promise(function () { - var _ref13 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(resolve, reject) { + return new Promise( + /*#__PURE__*/ + function () { + var _ref3 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee14(resolve, reject) { var results, keys, authParams, requestUrl, params; return regeneratorRuntime.wrap(function _callee14$(_context14) { while (1) { @@ -1549,11 +1651,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Register already in progress." } }); + resolve({ + error: { + message: "Register already in progress." + } + }); return _context14.abrupt("return"); case 3: - _this4.lock(); _context14.next = 6; @@ -1564,12 +1669,18 @@ var SFAuthManager = exports.SFAuthManager = function () { keys = results.keys; authParams = results.authParams; requestUrl = url + "/auth"; - params = _.merge({ password: keys.pw, email: email }, authParams); - + params = _.merge({ + password: keys.pw, + email: email + }, authParams); params['api'] = SFHttpManager.getApiVersion(); - _this4.httpManager.postAbsolute(requestUrl, params, function () { - var _ref14 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(response) { + _this4.httpManager.postAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref4 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee13(response) { return regeneratorRuntime.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { @@ -1585,17 +1696,23 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context13.stop(); } } - }, _callee13, _this4); + }, _callee13); })); return function (_x18) { - return _ref14.apply(this, arguments); + return _ref4.apply(this, arguments); }; }(), function (response) { console.error("Registration error", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to register. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to register. Please try again." + } + }; } + _this4.unlockAndResolve(resolve, response); }); @@ -1604,26 +1721,32 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context14.stop(); } } - }, _callee14, _this4); + }, _callee14); })); return function (_x16, _x17) { - return _ref13.apply(this, arguments); + return _ref3.apply(this, arguments); }; }()); } }, { key: "changePassword", value: function () { - var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(url, email, current_server_pw, newKeys, newAuthParams) { + var _changePassword = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee17(url, email, current_server_pw, newKeys, newAuthParams) { var _this5 = this; return regeneratorRuntime.wrap(function _callee17$(_context17) { while (1) { switch (_context17.prev = _context17.next) { case 0: - return _context17.abrupt("return", new Promise(function () { - var _ref16 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(resolve, reject) { + return _context17.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref5 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee16(resolve, reject) { var newServerPw, requestUrl, params; return regeneratorRuntime.wrap(function _callee16$(_context16) { while (1) { @@ -1634,21 +1757,30 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Change password already in progress." } }); + resolve({ + error: { + message: "Change password already in progress." + } + }); return _context16.abrupt("return"); case 3: - _this5.lock(); newServerPw = newKeys.pw; requestUrl = url + "/auth/change_pw"; - params = _.merge({ new_password: newServerPw, current_password: current_server_pw }, newAuthParams); - + params = _.merge({ + new_password: newServerPw, + current_password: current_server_pw + }, newAuthParams); params['api'] = SFHttpManager.getApiVersion(); - _this5.httpManager.postAuthenticatedAbsolute(requestUrl, params, function () { - var _ref17 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15(response) { + _this5.httpManager.postAuthenticatedAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref6 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee15(response) { return regeneratorRuntime.wrap(function _callee15$(_context15) { while (1) { switch (_context15.prev = _context15.next) { @@ -1664,16 +1796,21 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context15.stop(); } } - }, _callee15, _this5); + }, _callee15); })); return function (_x26) { - return _ref17.apply(this, arguments); + return _ref6.apply(this, arguments); }; }(), function (response) { - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "Something went wrong while changing your password. Your password was not changed. Please try again." } }; + if (_typeof(response) !== 'object') { + response = { + error: { + message: "Something went wrong while changing your password. Your password was not changed. Please try again." + } + }; } + _this5.unlockAndResolve(resolve, response); }); @@ -1682,11 +1819,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context16.stop(); } } - }, _callee16, _this5); + }, _callee16); })); return function (_x24, _x25) { - return _ref16.apply(this, arguments); + return _ref5.apply(this, arguments); }; }())); @@ -1695,11 +1832,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context17.stop(); } } - }, _callee17, this); + }, _callee17); })); function changePassword(_x19, _x20, _x21, _x22, _x23) { - return _ref15.apply(this, arguments); + return _changePassword.apply(this, arguments); } return changePassword; @@ -1707,7 +1844,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "handleAuthResponse", value: function () { - var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(response, email, url, authParams, keys) { + var _handleAuthResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee18(response, email, url, authParams, keys) { return regeneratorRuntime.wrap(function _callee18$(_context18) { while (1) { switch (_context18.prev = _context18.next) { @@ -1741,7 +1880,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function handleAuthResponse(_x27, _x28, _x29, _x30, _x31) { - return _ref18.apply(this, arguments); + return _handleAuthResponse.apply(this, arguments); } return handleAuthResponse; @@ -1751,9 +1890,13 @@ var SFAuthManager = exports.SFAuthManager = function () { return SFAuthManager; }(); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; +exports.SFAuthManager = SFAuthManager; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var SFHttpManager = exports.SFHttpManager = function () { +var SFHttpManager = +/*#__PURE__*/ +function () { _createClass(SFHttpManager, null, [{ key: "getApiVersion", value: function getApiVersion() { @@ -1778,7 +1921,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "setAuthHeadersForRequest", value: function () { - var _ref19 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee19(request) { + var _setAuthHeadersForRequest = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee19(request) { var token; return regeneratorRuntime.wrap(function _callee19$(_context19) { while (1) { @@ -1803,7 +1948,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function setAuthHeadersForRequest(_x32) { - return _ref19.apply(this, arguments); + return _setAuthHeadersForRequest.apply(this, arguments); } return setAuthHeadersForRequest; @@ -1811,7 +1956,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "postAbsolute", value: function () { - var _ref20 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee20(url, params, onsuccess, onerror) { + var _postAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee20(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee20$(_context20) { while (1) { switch (_context20.prev = _context20.next) { @@ -1827,7 +1974,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function postAbsolute(_x33, _x34, _x35, _x36) { - return _ref20.apply(this, arguments); + return _postAbsolute.apply(this, arguments); } return postAbsolute; @@ -1835,7 +1982,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "postAuthenticatedAbsolute", value: function () { - var _ref21 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee21(url, params, onsuccess, onerror) { + var _postAuthenticatedAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee21(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee21$(_context21) { while (1) { switch (_context21.prev = _context21.next) { @@ -1851,7 +2000,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function postAuthenticatedAbsolute(_x37, _x38, _x39, _x40) { - return _ref21.apply(this, arguments); + return _postAuthenticatedAbsolute.apply(this, arguments); } return postAuthenticatedAbsolute; @@ -1859,7 +2008,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "patchAbsolute", value: function () { - var _ref22 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee22(url, params, onsuccess, onerror) { + var _patchAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee22(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee22$(_context22) { while (1) { switch (_context22.prev = _context22.next) { @@ -1875,7 +2026,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function patchAbsolute(_x41, _x42, _x43, _x44) { - return _ref22.apply(this, arguments); + return _patchAbsolute.apply(this, arguments); } return patchAbsolute; @@ -1883,7 +2034,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "getAbsolute", value: function () { - var _ref23 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee23(url, params, onsuccess, onerror) { + var _getAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee23(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee23$(_context23) { while (1) { switch (_context23.prev = _context23.next) { @@ -1899,7 +2052,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function getAbsolute(_x45, _x46, _x47, _x48) { - return _ref23.apply(this, arguments); + return _getAbsolute.apply(this, arguments); } return getAbsolute; @@ -1907,16 +2060,24 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "httpRequest", value: function () { - var _ref24 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee25(verb, url, params, onsuccess, onerror) { + var _httpRequest = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee25(verb, url, params, onsuccess, onerror) { var _this6 = this; - var authenticated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; + var authenticated, + _args25 = arguments; return regeneratorRuntime.wrap(function _callee25$(_context25) { while (1) { switch (_context25.prev = _context25.next) { case 0: - return _context25.abrupt("return", new Promise(function () { - var _ref25 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee24(resolve, reject) { + authenticated = _args25.length > 5 && _args25[5] !== undefined ? _args25[5] : false; + return _context25.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref7 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee24(resolve, reject) { var xmlhttp; return regeneratorRuntime.wrap(function _callee24$(_context24) { while (1) { @@ -1924,10 +2085,10 @@ var SFHttpManager = exports.SFHttpManager = function () { case 0: xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { var response = xmlhttp.responseText; + if (response) { try { response = JSON.parse(response); @@ -1941,6 +2102,7 @@ var SFHttpManager = exports.SFHttpManager = function () { }); } else { console.error("Request error:", response); + _this6.$timeout(function () { onerror(response, xmlhttp.status); reject(response); @@ -1965,7 +2127,6 @@ var SFHttpManager = exports.SFHttpManager = function () { return _this6.setAuthHeadersForRequest(xmlhttp); case 8: - if (verb == "post" || verb == "patch") { xmlhttp.send(JSON.stringify(params)); } else { @@ -1977,24 +2138,24 @@ var SFHttpManager = exports.SFHttpManager = function () { return _context24.stop(); } } - }, _callee24, _this6); + }, _callee24); })); - return function (_x55, _x56) { - return _ref25.apply(this, arguments); + return function (_x54, _x55) { + return _ref7.apply(this, arguments); }; }())); - case 1: + case 2: case "end": return _context25.stop(); } } - }, _callee25, this); + }, _callee25); })); - function httpRequest(_x50, _x51, _x52, _x53, _x54) { - return _ref24.apply(this, arguments); + function httpRequest(_x49, _x50, _x51, _x52, _x53) { + return _httpRequest.apply(this, arguments); } return httpRequest; @@ -2017,8 +2178,12 @@ var SFHttpManager = exports.SFHttpManager = function () { return SFHttpManager; }(); +exports.SFHttpManager = SFHttpManager; ; -var SFMigrationManager = exports.SFMigrationManager = function () { + +var SFMigrationManager = +/*#__PURE__*/ +function () { function SFMigrationManager(modelManager, syncManager, storageManager, authManager) { var _this7 = this; @@ -2027,26 +2192,25 @@ var SFMigrationManager = exports.SFMigrationManager = function () { this.modelManager = modelManager; this.syncManager = syncManager; this.storageManager = storageManager; - this.completionHandlers = []; - - this.loadMigrations(); - - // The syncManager used to dispatch a param called 'initialSync' in the 'sync:completed' event + this.loadMigrations(); // The syncManager used to dispatch a param called 'initialSync' in the 'sync:completed' event // to let us know of the first sync completion after login. // however it was removed as it was deemed to be unreliable (returned wrong value when a single sync request repeats on completion for pagination) // We'll now use authManager's events instead + var didReceiveSignInEvent = false; var signInHandler = authManager.addEventHandler(function (event) { if (event == SFAuthManager.DidSignInEvent) { didReceiveSignInEvent = true; } }); - this.receivedLocalDataEvent = syncManager.initialDataLoaded(); - - this.syncManager.addEventHandler(function () { - var _ref26 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee26(event, data) { + this.syncManager.addEventHandler( + /*#__PURE__*/ + function () { + var _ref8 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee26(event, data) { var dataLoadedEvent, syncCompleteEvent, completedList, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, migrationName, migration; return regeneratorRuntime.wrap(function _callee26$(_context26) { @@ -2065,9 +2229,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _this7.receivedLocalDataEvent = true; } else if (syncCompleteEvent) { _this7.receivedSyncCompletedEvent = true; - } + } // We want to run pending migrations only after local data has been loaded, and a sync has been completed. - // We want to run pending migrations only after local data has been loaded, and a sync has been completed. if (!(_this7.receivedLocalDataEvent && _this7.receivedSyncCompletedEvent)) { _context26.next = 40; @@ -2081,11 +2244,10 @@ var SFMigrationManager = exports.SFMigrationManager = function () { // Reset our collected state about sign in didReceiveSignInEvent = false; - authManager.removeEventHandler(signInHandler); - - // If initial online sync, clear any completed migrations that occurred while offline, + authManager.removeEventHandler(signInHandler); // If initial online sync, clear any completed migrations that occurred while offline, // so they can run again now that we have updated user items. Only clear migrations that // don't have `runOnlyOnce` set + _context26.next = 10; return _this7.getCompletedMigrations(); @@ -2133,8 +2295,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context26.prev = 31; _context26.prev = 32; - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); } case 34: @@ -2161,11 +2323,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context26.stop(); } } - }, _callee26, _this7, [[14, 27, 31, 39], [32,, 34, 38]]); + }, _callee26, null, [[14, 27, 31, 39], [32,, 34, 38]]); })); - return function (_x57, _x58) { - return _ref26.apply(this, arguments); + return function (_x56, _x57) { + return _ref8.apply(this, arguments); }; }()); } @@ -2183,7 +2345,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "migrationForEncodedName", value: function () { - var _ref27 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee27(name) { + var _migrationForEncodedName = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee27(name) { var decoded; return regeneratorRuntime.wrap(function _callee27$(_context27) { while (1) { @@ -2206,8 +2370,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, _callee27, this); })); - function migrationForEncodedName(_x59) { - return _ref27.apply(this, arguments); + function migrationForEncodedName(_x58) { + return _migrationForEncodedName.apply(this, arguments); } return migrationForEncodedName; @@ -2219,15 +2383,16 @@ var SFMigrationManager = exports.SFMigrationManager = function () { } }, { key: "registeredMigrations", - value: function registeredMigrations() { - // Subclasses should return an array of migrations here. + value: function registeredMigrations() {// Subclasses should return an array of migrations here. // Migrations should have a unique `name`, `content_type`, // and `handler`, which is a function that accepts an array of matching items to migration. } }, { key: "runPendingMigrations", value: function () { - var _ref28 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee28() { + var _runPendingMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee28() { var pending, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, migration, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, item, _iteratorNormalCompletion7, _didIteratorError7, _iteratorError7, _iterator7, _step7, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, _iteratorNormalCompletion6, _didIteratorError6, _iteratorError6, _iterator6, _step6, handler; return regeneratorRuntime.wrap(function _callee28$(_context28) { @@ -2239,17 +2404,15 @@ var SFMigrationManager = exports.SFMigrationManager = function () { case 2: pending = _context28.sent; - - // run in pre loop, keeping in mind that a migration may be run twice: when offline then again when signing in. // we need to reset the items to a new array. _iteratorNormalCompletion3 = true; _didIteratorError3 = false; _iteratorError3 = undefined; _context28.prev = 6; + for (_iterator3 = pending[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { migration = _step3.value; - migration.items = []; } @@ -2266,8 +2429,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 14; _context28.prev = 15; - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); } case 17: @@ -2312,6 +2475,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { migration.items.push(item); } } + _context28.next = 40; break; @@ -2325,8 +2489,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 40; _context28.prev = 41; - if (!_iteratorNormalCompletion7 && _iterator7.return) { - _iterator7.return(); + if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) { + _iterator7["return"](); } case 43: @@ -2364,8 +2528,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 57; _context28.prev = 58; - if (!_iteratorNormalCompletion4 && _iterator4.return) { - _iterator4.return(); + if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { + _iterator4["return"](); } case 60: @@ -2433,8 +2597,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 87; _context28.prev = 88; - if (!_iteratorNormalCompletion5 && _iterator5.return) { - _iterator5.return(); + if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) { + _iterator5["return"](); } case 90: @@ -2459,12 +2623,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _iteratorError6 = undefined; _context28.prev = 98; - for (_iterator6 = this.completionHandlers[Symbol.iterator](); !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { handler = _step6.value; - handler(); } + _context28.next = 106; break; @@ -2478,8 +2641,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 106; _context28.prev = 107; - if (!_iteratorNormalCompletion6 && _iterator6.return) { - _iterator6.return(); + if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) { + _iterator6["return"](); } case 109: @@ -2507,7 +2670,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function runPendingMigrations() { - return _ref28.apply(this, arguments); + return _runPendingMigrations.apply(this, arguments); } return runPendingMigrations; @@ -2515,7 +2678,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "encode", value: function () { - var _ref29 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee29(text) { + var _encode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee29(text) { return regeneratorRuntime.wrap(function _callee29$(_context29) { while (1) { switch (_context29.prev = _context29.next) { @@ -2527,11 +2692,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context29.stop(); } } - }, _callee29, this); + }, _callee29); })); - function encode(_x60) { - return _ref29.apply(this, arguments); + function encode(_x59) { + return _encode.apply(this, arguments); } return encode; @@ -2539,7 +2704,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "decode", value: function () { - var _ref30 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee30(text) { + var _decode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee30(text) { return regeneratorRuntime.wrap(function _callee30$(_context30) { while (1) { switch (_context30.prev = _context30.next) { @@ -2551,11 +2718,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context30.stop(); } } - }, _callee30, this); + }, _callee30); })); - function decode(_x61) { - return _ref30.apply(this, arguments); + function decode(_x60) { + return _decode.apply(this, arguments); } return decode; @@ -2563,7 +2730,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "getCompletedMigrations", value: function () { - var _ref31 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee31() { + var _getCompletedMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee31() { var rawCompleted; return regeneratorRuntime.wrap(function _callee31$(_context31) { while (1) { @@ -2598,7 +2767,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function getCompletedMigrations() { - return _ref31.apply(this, arguments); + return _getCompletedMigrations.apply(this, arguments); } return getCompletedMigrations; @@ -2606,7 +2775,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "getPendingMigrations", value: function () { - var _ref32 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee32() { + var _getPendingMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee32() { var completed, pending, _iteratorNormalCompletion8, _didIteratorError8, _iteratorError8, _iterator8, _step8, migration; return regeneratorRuntime.wrap(function _callee32$(_context32) { @@ -2667,8 +2838,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context32.prev = 28; _context32.prev = 29; - if (!_iteratorNormalCompletion8 && _iterator8.return) { - _iterator8.return(); + if (!_iteratorNormalCompletion8 && _iterator8["return"] != null) { + _iterator8["return"](); } case 31: @@ -2699,7 +2870,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function getPendingMigrations() { - return _ref32.apply(this, arguments); + return _getPendingMigrations.apply(this, arguments); } return getPendingMigrations; @@ -2707,7 +2878,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "markMigrationCompleted", value: function () { - var _ref33 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee33(migration) { + var _markMigrationCompleted = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee33(migration) { var completed; return regeneratorRuntime.wrap(function _callee33$(_context33) { while (1) { @@ -2738,8 +2911,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, _callee33, this); })); - function markMigrationCompleted(_x62) { - return _ref33.apply(this, arguments); + function markMigrationCompleted(_x61) { + return _markMigrationCompleted.apply(this, arguments); } return markMigrationCompleted; @@ -2747,7 +2920,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "runMigration", value: function () { - var _ref34 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee34(migration, items) { + var _runMigration = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee34(migration, items) { var _this8 = this; return regeneratorRuntime.wrap(function _callee34$(_context34) { @@ -2762,9 +2937,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context34.abrupt("return"); case 2: - console.log("Running migration:", migration.name); - migration.running = true; if (!migration.customHandler) { @@ -2786,11 +2959,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context34.stop(); } } - }, _callee34, this); + }, _callee34); })); - function runMigration(_x63, _x64) { - return _ref34.apply(this, arguments); + function runMigration(_x62, _x63) { + return _runMigration.apply(this, arguments); } return runMigration; @@ -2800,8 +2973,12 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return SFMigrationManager; }(); +exports.SFMigrationManager = SFMigrationManager; ; -var SFModelManager = exports.SFModelManager = function () { + +var SFModelManager = +/*#__PURE__*/ +function () { function SFModelManager(timeout) { _classCallCheck(this, SFModelManager); @@ -2812,7 +2989,10 @@ var SFModelManager = exports.SFModelManager = function () { SFModelManager.MappingSourceLocalDirtied = "MappingSourceLocalDirtied"; SFModelManager.MappingSourceComponentRetrieved = "MappingSourceComponentRetrieved"; SFModelManager.MappingSourceDesktopInstalled = "MappingSourceDesktopInstalled"; // When a component is installed by the desktop and some of its values change - SFModelManager.MappingSourceRemoteActionRetrieved = "MappingSourceRemoteActionRetrieved"; /* aciton-based Extensions like note history */ + + SFModelManager.MappingSourceRemoteActionRetrieved = "MappingSourceRemoteActionRetrieved"; + /* aciton-based Extensions like note history */ + SFModelManager.MappingSourceFileImport = "MappingSourceFileImport"; SFModelManager.isMappingSourceRetrieved = function (source) { @@ -2820,7 +3000,6 @@ var SFModelManager = exports.SFModelManager = function () { }; this.$timeout = timeout || setTimeout.bind(window); - this.itemSyncObservers = []; this.items = []; this.itemsHash = {}; @@ -2838,7 +3017,10 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "addModelUuidChangeObserver", value: function addModelUuidChangeObserver(id, callback) { - this.uuidChangeObservers.push({ id: id, callback: callback }); + this.uuidChangeObservers.push({ + id: id, + callback: callback + }); } }, { key: "notifyObserversOfUuidChange", @@ -2862,8 +3044,8 @@ var SFModelManager = exports.SFModelManager = function () { _iteratorError9 = err; } finally { try { - if (!_iteratorNormalCompletion9 && _iterator9.return) { - _iterator9.return(); + if (!_iteratorNormalCompletion9 && _iterator9["return"] != null) { + _iterator9["return"](); } } finally { if (_didIteratorError9) { @@ -2875,7 +3057,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "alternateUUIDForItem", value: function () { - var _ref35 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee35(item) { + var _alternateUUIDForItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee35(item) { var newItem, _iteratorNormalCompletion10, _didIteratorError10, _iteratorError10, _iterator10, _step10, referencingObject; return regeneratorRuntime.wrap(function _callee35$(_context35) { @@ -2889,20 +3073,17 @@ var SFModelManager = exports.SFModelManager = function () { case 3: newItem.uuid = _context35.sent; - - // Update uuids of relationships newItem.informReferencesOfUUIDChange(item.uuid, newItem.uuid); - this.informModelsOfUUIDChangeForItem(newItem, item.uuid, newItem.uuid); + this.informModelsOfUUIDChangeForItem(newItem, item.uuid, newItem.uuid); // the new item should inherit the original's relationships - // the new item should inherit the original's relationships _iteratorNormalCompletion10 = true; _didIteratorError10 = false; _iteratorError10 = undefined; _context35.prev = 9; + for (_iterator10 = item.referencingObjects[Symbol.iterator](); !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) { referencingObject = _step10.value; - referencingObject.setIsNoLongerBeingReferencedBy(item); item.setIsNoLongerBeingReferencedBy(referencingObject); referencingObject.addItemAsRelationship(newItem); @@ -2921,8 +3102,8 @@ var SFModelManager = exports.SFModelManager = function () { _context35.prev = 17; _context35.prev = 18; - if (!_iteratorNormalCompletion10 && _iterator10.return) { - _iterator10.return(); + if (!_iteratorNormalCompletion10 && _iterator10["return"] != null) { + _iterator10["return"](); } case 20: @@ -2942,35 +3123,31 @@ var SFModelManager = exports.SFModelManager = function () { return _context35.finish(17); case 25: - this.setItemsDirty(item.referencingObjects, true); + this.setItemsDirty(item.referencingObjects, true); // Used to set up referencingObjects for new item (so that other items can now properly reference this new item) - // Used to set up referencingObjects for new item (so that other items can now properly reference this new item) this.resolveReferencesForItem(newItem); if (this.loggingEnabled) { console.log(item.uuid, "-->", newItem.uuid); - } + } // Set to deleted, then run through mapping function so that observers can be notified + - // Set to deleted, then run through mapping function so that observers can be notified item.deleted = true; - item.content.references = []; - // Don't set dirty, because we don't need to sync old item. alternating uuid only occurs in two cases: + item.content.references = []; // Don't set dirty, because we don't need to sync old item. alternating uuid only occurs in two cases: // signing in and merging offline data, or when a uuid-conflict occurs. In both cases, the original item never // saves to a server, so doesn't need to be synced. // informModelsOfUUIDChangeForItem may set this object to dirty, but we want to undo that here, so that the item gets deleted // right away through the mapping function. + this.setItemDirty(item, false, false, SFModelManager.MappingSourceLocalSaved); _context35.next = 33; return this.mapResponseItemsToLocalModels([item], SFModelManager.MappingSourceLocalSaved); case 33: - // add new item this.addItem(newItem); this.setItemDirty(newItem, true, true, SFModelManager.MappingSourceLocalSaved); - this.notifyObserversOfUuidChange(item, newItem); - return _context35.abrupt("return", newItem); case 37: @@ -2981,8 +3158,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee35, this, [[9, 13, 17, 25], [18,, 20, 24]]); })); - function alternateUUIDForItem(_x65) { - return _ref35.apply(this, arguments); + function alternateUUIDForItem(_x64) { + return _alternateUUIDForItem.apply(this, arguments); } return alternateUUIDForItem; @@ -2993,7 +3170,6 @@ var SFModelManager = exports.SFModelManager = function () { // some models that only have one-way relationships might be interested to hear that an item has changed its uuid // for example, editors have a one way relationship with notes. When a note changes its UUID, it has no way to inform the editor // to update its relationships - var _iteratorNormalCompletion11 = true; var _didIteratorError11 = false; var _iteratorError11 = undefined; @@ -3001,7 +3177,6 @@ var SFModelManager = exports.SFModelManager = function () { try { for (var _iterator11 = this.items[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) { var model = _step11.value; - model.potentialItemOfInterestHasChangedItsUUID(newItem, oldUUID, newUUID); } } catch (err) { @@ -3009,8 +3184,8 @@ var SFModelManager = exports.SFModelManager = function () { _iteratorError11 = err; } finally { try { - if (!_iteratorNormalCompletion11 && _iterator11.return) { - _iterator11.return(); + if (!_iteratorNormalCompletion11 && _iterator11["return"] != null) { + _iterator11["return"](); } } finally { if (_didIteratorError11) { @@ -3027,12 +3202,18 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModels", value: function () { - var _ref36 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee36(items, source, sourceKey) { + var _mapResponseItemsToLocalModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee36(items, source, sourceKey) { return regeneratorRuntime.wrap(function _callee36$(_context36) { while (1) { switch (_context36.prev = _context36.next) { case 0: - return _context36.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ items: items, source: source, sourceKey: sourceKey })); + return _context36.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ + items: items, + source: source, + sourceKey: sourceKey + })); case 1: case "end": @@ -3042,8 +3223,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee36, this); })); - function mapResponseItemsToLocalModels(_x66, _x67, _x68) { - return _ref36.apply(this, arguments); + function mapResponseItemsToLocalModels(_x65, _x66, _x67) { + return _mapResponseItemsToLocalModels.apply(this, arguments); } return mapResponseItemsToLocalModels; @@ -3051,12 +3232,19 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModelsOmittingFields", value: function () { - var _ref37 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee37(items, omitFields, source, sourceKey) { + var _mapResponseItemsToLocalModelsOmittingFields = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee37(items, omitFields, source, sourceKey) { return regeneratorRuntime.wrap(function _callee37$(_context37) { while (1) { switch (_context37.prev = _context37.next) { case 0: - return _context37.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ items: items, omitFields: omitFields, source: source, sourceKey: sourceKey })); + return _context37.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ + items: items, + omitFields: omitFields, + source: source, + sourceKey: sourceKey + })); case 1: case "end": @@ -3066,8 +3254,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee37, this); })); - function mapResponseItemsToLocalModelsOmittingFields(_x69, _x70, _x71, _x72) { - return _ref37.apply(this, arguments); + function mapResponseItemsToLocalModelsOmittingFields(_x68, _x69, _x70, _x71) { + return _mapResponseItemsToLocalModelsOmittingFields.apply(this, arguments); } return mapResponseItemsToLocalModelsOmittingFields; @@ -3075,115 +3263,108 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModelsWithOptions", value: function () { - var _ref39 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee38(_ref38) { - var items = _ref38.items, - omitFields = _ref38.omitFields, - source = _ref38.source, - sourceKey = _ref38.sourceKey, - options = _ref38.options; - - var models, processedObjects, modelsToNotifyObserversOf, _iteratorNormalCompletion12, _didIteratorError12, _iteratorError12, _iterator12, _step12, json_obj, isMissingContent, isCorrupt, _iteratorNormalCompletion15, _didIteratorError15, _iteratorError15, _iterator15, _step15, key, item, contentType, unknownContentType, isDirtyItemPendingDelete, _iteratorNormalCompletion13, _didIteratorError13, _iteratorError13, _iterator13, _step13, _ref40, _ref41, index, _json_obj, model, missedRefs, _loop, _iteratorNormalCompletion14, _didIteratorError14, _iteratorError14, _iterator14, _step14, ref; + var _mapResponseItemsToLocalModelsWithOptions = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee38(_ref9) { + var items, omitFields, source, sourceKey, options, models, processedObjects, modelsToNotifyObserversOf, _iteratorNormalCompletion12, _didIteratorError12, _iteratorError12, _iterator12, _step12, json_obj, isMissingContent, isCorrupt, _iteratorNormalCompletion15, _didIteratorError15, _iteratorError15, _iterator15, _step15, key, item, contentType, unknownContentType, isDirtyItemPendingDelete, _iteratorNormalCompletion13, _didIteratorError13, _iteratorError13, _iterator13, _step13, _step13$value, index, _json_obj, model, missedRefs, _iteratorNormalCompletion14, _didIteratorError14, _iteratorError14, _loop, _iterator14, _step14; return regeneratorRuntime.wrap(function _callee38$(_context38) { while (1) { switch (_context38.prev = _context38.next) { case 0: - models = [], processedObjects = [], modelsToNotifyObserversOf = []; - - // first loop should add and process items + items = _ref9.items, omitFields = _ref9.omitFields, source = _ref9.source, sourceKey = _ref9.sourceKey, options = _ref9.options; + models = [], processedObjects = [], modelsToNotifyObserversOf = []; // first loop should add and process items _iteratorNormalCompletion12 = true; _didIteratorError12 = false; _iteratorError12 = undefined; - _context38.prev = 4; + _context38.prev = 5; _iterator12 = items[Symbol.iterator](); - case 6: + case 7: if (_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done) { - _context38.next = 57; + _context38.next = 58; break; } json_obj = _step12.value; if (json_obj) { - _context38.next = 10; + _context38.next = 11; break; } - return _context38.abrupt("continue", 54); - - case 10: + return _context38.abrupt("continue", 55); + case 11: // content is missing if it has been sucessfullly decrypted but no content isMissingContent = !json_obj.content && !json_obj.errorDecrypting; isCorrupt = !json_obj.content_type || !json_obj.uuid; if (!((isCorrupt || isMissingContent) && !json_obj.deleted)) { - _context38.next = 15; + _context38.next = 16; break; } // An item that is not deleted should never have empty content console.error("Server response item is corrupt:", json_obj); - return _context38.abrupt("continue", 54); + return _context38.abrupt("continue", 55); - case 15: + case 16: if (!Array.isArray(omitFields)) { - _context38.next = 35; + _context38.next = 36; break; } _iteratorNormalCompletion15 = true; _didIteratorError15 = false; _iteratorError15 = undefined; - _context38.prev = 19; + _context38.prev = 20; for (_iterator15 = omitFields[Symbol.iterator](); !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) { key = _step15.value; - delete json_obj[key]; } - _context38.next = 27; + + _context38.next = 28; break; - case 23: - _context38.prev = 23; - _context38.t0 = _context38["catch"](19); + case 24: + _context38.prev = 24; + _context38.t0 = _context38["catch"](20); _didIteratorError15 = true; _iteratorError15 = _context38.t0; - case 27: - _context38.prev = 27; + case 28: _context38.prev = 28; + _context38.prev = 29; - if (!_iteratorNormalCompletion15 && _iterator15.return) { - _iterator15.return(); + if (!_iteratorNormalCompletion15 && _iterator15["return"] != null) { + _iterator15["return"](); } - case 30: - _context38.prev = 30; + case 31: + _context38.prev = 31; if (!_didIteratorError15) { - _context38.next = 33; + _context38.next = 34; break; } throw _iteratorError15; - case 33: - return _context38.finish(30); - case 34: - return _context38.finish(27); + return _context38.finish(31); case 35: + return _context38.finish(28); + + case 36: item = this.findItem(json_obj.uuid); - if (item) { - item.updateFromJSON(json_obj); - // If an item goes through mapping, it can no longer be a dummy. + item.updateFromJSON(json_obj); // If an item goes through mapping, it can no longer be a dummy. + item.dummy = false; } @@ -3191,22 +3372,22 @@ var SFModelManager = exports.SFModelManager = function () { unknownContentType = this.acceptableContentTypes && !this.acceptableContentTypes.includes(contentType); if (!unknownContentType) { - _context38.next = 41; + _context38.next = 42; break; } - return _context38.abrupt("continue", 54); + return _context38.abrupt("continue", 55); - case 41: + case 42: isDirtyItemPendingDelete = false; if (!(json_obj.deleted == true)) { - _context38.next = 49; + _context38.next = 50; break; } if (!json_obj.dirty) { - _context38.next = 47; + _context38.next = 48; break; } @@ -3214,28 +3395,26 @@ var SFModelManager = exports.SFModelManager = function () { // We need to create this item as usual, but just not add it to individual arrays // i.e add to this.items but not this.notes (so that it can be retrieved with getDirtyItems) isDirtyItemPendingDelete = true; - _context38.next = 49; + _context38.next = 50; break; - case 47: + case 48: if (item) { // We still want to return this item to the caller so they know it was handled. models.push(item); - modelsToNotifyObserversOf.push(item); this.removeItemLocally(item); } - return _context38.abrupt("continue", 54); - case 49: + return _context38.abrupt("continue", 55); + case 50: if (!item) { item = this.createItem(json_obj); } - this.addItem(item, isDirtyItemPendingDelete); + this.addItem(item, isDirtyItemPendingDelete); // Observers do not need to handle items that errored while decrypting. - // Observers do not need to handle items that errored while decrypting. if (!item.errorDecrypting) { modelsToNotifyObserversOf.push(item); } @@ -3243,57 +3422,54 @@ var SFModelManager = exports.SFModelManager = function () { models.push(item); processedObjects.push(json_obj); - case 54: + case 55: _iteratorNormalCompletion12 = true; - _context38.next = 6; + _context38.next = 7; break; - case 57: - _context38.next = 63; + case 58: + _context38.next = 64; break; - case 59: - _context38.prev = 59; - _context38.t1 = _context38["catch"](4); + case 60: + _context38.prev = 60; + _context38.t1 = _context38["catch"](5); _didIteratorError12 = true; _iteratorError12 = _context38.t1; - case 63: - _context38.prev = 63; + case 64: _context38.prev = 64; + _context38.prev = 65; - if (!_iteratorNormalCompletion12 && _iterator12.return) { - _iterator12.return(); + if (!_iteratorNormalCompletion12 && _iterator12["return"] != null) { + _iterator12["return"](); } - case 66: - _context38.prev = 66; + case 67: + _context38.prev = 67; if (!_didIteratorError12) { - _context38.next = 69; + _context38.next = 70; break; } throw _iteratorError12; - case 69: - return _context38.finish(66); - case 70: - return _context38.finish(63); + return _context38.finish(67); case 71: + return _context38.finish(64); + case 72: // second loop should process references _iteratorNormalCompletion13 = true; _didIteratorError13 = false; _iteratorError13 = undefined; - _context38.prev = 74; + _context38.prev = 75; + for (_iterator13 = processedObjects.entries()[Symbol.iterator](); !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) { - _ref40 = _step13.value; - _ref41 = _slicedToArray(_ref40, 2); - index = _ref41[0]; - _json_obj = _ref41[1]; + _step13$value = _slicedToArray(_step13.value, 2), index = _step13$value[0], _json_obj = _step13$value[1]; model = models[index]; if (_json_obj.content) { @@ -3303,114 +3479,112 @@ var SFModelManager = exports.SFModelManager = function () { model.didFinishSyncing(); } - _context38.next = 82; + _context38.next = 83; break; - case 78: - _context38.prev = 78; - _context38.t2 = _context38["catch"](74); + case 79: + _context38.prev = 79; + _context38.t2 = _context38["catch"](75); _didIteratorError13 = true; _iteratorError13 = _context38.t2; - case 82: - _context38.prev = 82; + case 83: _context38.prev = 83; + _context38.prev = 84; - if (!_iteratorNormalCompletion13 && _iterator13.return) { - _iterator13.return(); + if (!_iteratorNormalCompletion13 && _iterator13["return"] != null) { + _iterator13["return"](); } - case 85: - _context38.prev = 85; + case 86: + _context38.prev = 86; if (!_didIteratorError13) { - _context38.next = 88; + _context38.next = 89; break; } throw _iteratorError13; - case 88: - return _context38.finish(85); - case 89: - return _context38.finish(82); + return _context38.finish(86); case 90: - missedRefs = this.popMissedReferenceStructsForObjects(processedObjects); + return _context38.finish(83); - _loop = function _loop(ref) { + case 91: + missedRefs = this.popMissedReferenceStructsForObjects(processedObjects); + _iteratorNormalCompletion14 = true; + _didIteratorError14 = false; + _iteratorError14 = undefined; + _context38.prev = 95; + + _loop = function _loop() { + var ref = _step14.value; var model = models.find(function (candidate) { return candidate.uuid == ref.reference_uuid; - }); - // Model should 100% be defined here, but let's not be too overconfident + }); // Model should 100% be defined here, but let's not be too overconfident + if (model) { var itemWaitingForTheValueInThisCurrentLoop = ref.for_item; itemWaitingForTheValueInThisCurrentLoop.addItemAsRelationship(model); } }; - _iteratorNormalCompletion14 = true; - _didIteratorError14 = false; - _iteratorError14 = undefined; - _context38.prev = 95; - for (_iterator14 = missedRefs[Symbol.iterator](); !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { - ref = _step14.value; - - _loop(ref); + _loop(); } - _context38.next = 103; + _context38.next = 104; break; - case 99: - _context38.prev = 99; + case 100: + _context38.prev = 100; _context38.t3 = _context38["catch"](95); _didIteratorError14 = true; _iteratorError14 = _context38.t3; - case 103: - _context38.prev = 103; + case 104: _context38.prev = 104; + _context38.prev = 105; - if (!_iteratorNormalCompletion14 && _iterator14.return) { - _iterator14.return(); + if (!_iteratorNormalCompletion14 && _iterator14["return"] != null) { + _iterator14["return"](); } - case 106: - _context38.prev = 106; + case 107: + _context38.prev = 107; if (!_didIteratorError14) { - _context38.next = 109; + _context38.next = 110; break; } throw _iteratorError14; - case 109: - return _context38.finish(106); - case 110: - return _context38.finish(103); + return _context38.finish(107); case 111: - _context38.next = 113; + return _context38.finish(104); + + case 112: + _context38.next = 114; return this.notifySyncObserversOfModels(modelsToNotifyObserversOf, source, sourceKey); - case 113: + case 114: return _context38.abrupt("return", models); - case 114: + case 115: case "end": return _context38.stop(); } } - }, _callee38, this, [[4, 59, 63, 71], [19, 23, 27, 35], [28,, 30, 34], [64,, 66, 70], [74, 78, 82, 90], [83,, 85, 89], [95, 99, 103, 111], [104,, 106, 110]]); + }, _callee38, this, [[5, 60, 64, 72], [20, 24, 28, 36], [29,, 31, 35], [65,, 67, 71], [75, 79, 83, 91], [84,, 86, 90], [95, 100, 104, 112], [105,, 107, 111]]); })); - function mapResponseItemsToLocalModelsWithOptions(_x73) { - return _ref39.apply(this, arguments); + function mapResponseItemsToLocalModelsWithOptions(_x72) { + return _mapResponseItemsToLocalModelsWithOptions.apply(this, arguments); } return mapResponseItemsToLocalModelsWithOptions; @@ -3418,7 +3592,7 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "missedReferenceBuildKey", value: function missedReferenceBuildKey(referenceId, objectId) { - return referenceId + ":" + objectId; + return "".concat(referenceId, ":").concat(objectId); } }, { key: "popMissedReferenceStructsForObjects", @@ -3433,67 +3607,28 @@ var SFModelManager = exports.SFModelManager = function () { return item.uuid; }); var genericUuidLength = uuids[0].length; - var keys = Object.keys(this.missedReferences); - var _iteratorNormalCompletion16 = true; - var _didIteratorError16 = false; - var _iteratorError16 = undefined; - try { - for (var _iterator16 = keys[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { - var candidateKey = _step16.value; + for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) { + var candidateKey = _keys2[_i2]; - /* - We used to do string.split to get at the UUID, but surprisingly, - the performance of this was about 20x worse then just getting the substring. - let matches = candidateKey.split(":")[0] == object.uuid; - */ - var matches = uuids.includes(candidateKey.substring(0, genericUuidLength)); - if (matches) { - results.push(this.missedReferences[candidateKey]); - toDelete.push(candidateKey); - } + /* + We used to do string.split to get at the UUID, but surprisingly, + the performance of this was about 20x worse then just getting the substring. + let matches = candidateKey.split(":")[0] == object.uuid; + */ + var matches = uuids.includes(candidateKey.substring(0, genericUuidLength)); + + if (matches) { + results.push(this.missedReferences[candidateKey]); + toDelete.push(candidateKey); } + } // remove from hash - // remove from hash - } catch (err) { - _didIteratorError16 = true; - _iteratorError16 = err; - } finally { - try { - if (!_iteratorNormalCompletion16 && _iterator16.return) { - _iterator16.return(); - } - } finally { - if (_didIteratorError16) { - throw _iteratorError16; - } - } - } - var _iteratorNormalCompletion17 = true; - var _didIteratorError17 = false; - var _iteratorError17 = undefined; - - try { - for (var _iterator17 = toDelete[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) { - var key = _step17.value; - - delete this.missedReferences[key]; - } - } catch (err) { - _didIteratorError17 = true; - _iteratorError17 = err; - } finally { - try { - if (!_iteratorNormalCompletion17 && _iterator17.return) { - _iterator17.return(); - } - } finally { - if (_didIteratorError17) { - throw _iteratorError17; - } - } + for (var _i3 = 0, _toDelete = toDelete; _i3 < _toDelete.length; _i3++) { + var key = _toDelete[_i3]; + delete this.missedReferences[key]; } return results; @@ -3503,15 +3638,13 @@ var SFModelManager = exports.SFModelManager = function () { value: function resolveReferencesForItem(item) { var markReferencesDirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - if (item.errorDecrypting) { return; } - var contentObject = item.contentObject; - - // If another client removes an item's references, this client won't pick up the removal unless + var contentObject = item.contentObject; // If another client removes an item's references, this client won't pick up the removal unless // we remove everything not present in the current list of references + item.updateLocalRelationships(); if (!contentObject.references) { @@ -3525,61 +3658,63 @@ var SFModelManager = exports.SFModelManager = function () { }); var includeBlanks = true; var referencesObjectResults = this.findItems(referencesIds, includeBlanks); - - var _iteratorNormalCompletion18 = true; - var _didIteratorError18 = false; - var _iteratorError18 = undefined; + var _iteratorNormalCompletion16 = true; + var _didIteratorError16 = false; + var _iteratorError16 = undefined; try { - for (var _iterator18 = referencesObjectResults.entries()[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { - var _ref42 = _step18.value; - - var _ref43 = _slicedToArray(_ref42, 2); - - var index = _ref43[0]; - var referencedItem = _ref43[1]; + for (var _iterator16 = referencesObjectResults.entries()[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { + var _step16$value = _slicedToArray(_step16.value, 2), + index = _step16$value[0], + referencedItem = _step16$value[1]; if (referencedItem) { item.addItemAsRelationship(referencedItem); + if (markReferencesDirty) { this.setItemDirty(referencedItem, true); } } else { - var missingRefId = referencesIds[index]; - // Allows mapper to check when missing reference makes it through the loop, + var missingRefId = referencesIds[index]; // Allows mapper to check when missing reference makes it through the loop, // and then runs resolveReferencesForItem again for the original item. + var mappingKey = this.missedReferenceBuildKey(missingRefId, item.uuid); + if (!this.missedReferences[mappingKey]) { - var missedRef = { reference_uuid: missingRefId, for_item: item }; + var missedRef = { + reference_uuid: missingRefId, + for_item: item + }; this.missedReferences[mappingKey] = missedRef; } } } } catch (err) { - _didIteratorError18 = true; - _iteratorError18 = err; + _didIteratorError16 = true; + _iteratorError16 = err; } finally { try { - if (!_iteratorNormalCompletion18 && _iterator18.return) { - _iterator18.return(); + if (!_iteratorNormalCompletion16 && _iterator16["return"] != null) { + _iterator16["return"](); } } finally { - if (_didIteratorError18) { - throw _iteratorError18; + if (_didIteratorError16) { + throw _iteratorError16; } } } } - /* Note that this function is public, and can also be called manually (desktopManager uses it) */ }, { key: "notifySyncObserversOfModels", value: function () { - var _ref44 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee39(models, source, sourceKey) { + var _notifySyncObserversOfModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee39(models, source, sourceKey) { var _this9 = this; - var observers, _loop2, _iteratorNormalCompletion19, _didIteratorError19, _iteratorError19, _iterator19, _step19, observer; + var observers, _iteratorNormalCompletion17, _didIteratorError17, _iteratorError17, _loop2, _iterator17, _step17; return regeneratorRuntime.wrap(function _callee39$(_context40) { while (1) { @@ -3590,24 +3725,31 @@ var SFModelManager = exports.SFModelManager = function () { // sort by priority return a.priority < b.priority ? -1 : 1; }); - _loop2 = /*#__PURE__*/regeneratorRuntime.mark(function _loop2(observer) { - var allRelevantItems, validItems, deletedItems, _iteratorNormalCompletion20, _didIteratorError20, _iteratorError20, _iterator20, _step20, item; + _iteratorNormalCompletion17 = true; + _didIteratorError17 = false; + _iteratorError17 = undefined; + _context40.prev = 4; + _loop2 = + /*#__PURE__*/ + regeneratorRuntime.mark(function _loop2() { + var observer, allRelevantItems, validItems, deletedItems, _iteratorNormalCompletion18, _didIteratorError18, _iteratorError18, _iterator18, _step18, item; return regeneratorRuntime.wrap(function _loop2$(_context39) { while (1) { switch (_context39.prev = _context39.next) { case 0: + observer = _step17.value; allRelevantItems = observer.types.includes("*") ? models : models.filter(function (item) { return observer.types.includes(item.content_type); }); validItems = [], deletedItems = []; - _iteratorNormalCompletion20 = true; - _didIteratorError20 = false; - _iteratorError20 = undefined; - _context39.prev = 5; + _iteratorNormalCompletion18 = true; + _didIteratorError18 = false; + _iteratorError18 = undefined; + _context39.prev = 6; - for (_iterator20 = allRelevantItems[Symbol.iterator](); !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { - item = _step20.value; + for (_iterator18 = allRelevantItems[Symbol.iterator](); !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { + item = _step18.value; if (item.deleted) { deletedItems.push(item); @@ -3616,124 +3758,118 @@ var SFModelManager = exports.SFModelManager = function () { } } - _context39.next = 13; + _context39.next = 14; break; - case 9: - _context39.prev = 9; - _context39.t0 = _context39["catch"](5); - _didIteratorError20 = true; - _iteratorError20 = _context39.t0; + case 10: + _context39.prev = 10; + _context39.t0 = _context39["catch"](6); + _didIteratorError18 = true; + _iteratorError18 = _context39.t0; - case 13: - _context39.prev = 13; + case 14: _context39.prev = 14; + _context39.prev = 15; - if (!_iteratorNormalCompletion20 && _iterator20.return) { - _iterator20.return(); + if (!_iteratorNormalCompletion18 && _iterator18["return"] != null) { + _iterator18["return"](); } - case 16: - _context39.prev = 16; + case 17: + _context39.prev = 17; - if (!_didIteratorError20) { - _context39.next = 19; + if (!_didIteratorError18) { + _context39.next = 20; break; } - throw _iteratorError20; - - case 19: - return _context39.finish(16); + throw _iteratorError18; case 20: - return _context39.finish(13); + return _context39.finish(17); case 21: + return _context39.finish(14); + + case 22: if (!(allRelevantItems.length > 0)) { - _context39.next = 24; + _context39.next = 25; break; } - _context39.next = 24; + _context39.next = 25; return _this9._callSyncObserverCallbackWithTimeout(observer, allRelevantItems, validItems, deletedItems, source, sourceKey); - case 24: + case 25: case "end": return _context39.stop(); } } - }, _loop2, _this9, [[5, 9, 13, 21], [14,, 16, 20]]); + }, _loop2, null, [[6, 10, 14, 22], [15,, 17, 21]]); }); - _iteratorNormalCompletion19 = true; - _didIteratorError19 = false; - _iteratorError19 = undefined; - _context40.prev = 5; - _iterator19 = observers[Symbol.iterator](); + _iterator17 = observers[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done) { - _context40.next = 13; + if (_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done) { + _context40.next = 12; break; } - observer = _step19.value; - return _context40.delegateYield(_loop2(observer), "t0", 10); + return _context40.delegateYield(_loop2(), "t0", 9); - case 10: - _iteratorNormalCompletion19 = true; + case 9: + _iteratorNormalCompletion17 = true; _context40.next = 7; break; - case 13: - _context40.next = 19; + case 12: + _context40.next = 18; break; - case 15: - _context40.prev = 15; - _context40.t1 = _context40["catch"](5); - _didIteratorError19 = true; - _iteratorError19 = _context40.t1; + case 14: + _context40.prev = 14; + _context40.t1 = _context40["catch"](4); + _didIteratorError17 = true; + _iteratorError17 = _context40.t1; - case 19: + case 18: + _context40.prev = 18; _context40.prev = 19; - _context40.prev = 20; - if (!_iteratorNormalCompletion19 && _iterator19.return) { - _iterator19.return(); + if (!_iteratorNormalCompletion17 && _iterator17["return"] != null) { + _iterator17["return"](); } - case 22: - _context40.prev = 22; + case 21: + _context40.prev = 21; - if (!_didIteratorError19) { - _context40.next = 25; + if (!_didIteratorError17) { + _context40.next = 24; break; } - throw _iteratorError19; + throw _iteratorError17; + + case 24: + return _context40.finish(21); case 25: - return _context40.finish(22); + return _context40.finish(18); case 26: - return _context40.finish(19); - - case 27: case "end": return _context40.stop(); } } - }, _callee39, this, [[5, 15, 19, 27], [20,, 22, 26]]); + }, _callee39, this, [[4, 14, 18, 26], [19,, 21, 25]]); })); - function notifySyncObserversOfModels(_x75, _x76, _x77) { - return _ref44.apply(this, arguments); + function notifySyncObserversOfModels(_x73, _x74, _x75) { + return _notifySyncObserversOfModels.apply(this, arguments); } return notifySyncObserversOfModels; }() - /* Rather than running this inline in a for loop, which causes problems and requires all variables to be declared with `let`, we'll do it here so it's more explicit and less confusing. @@ -3742,7 +3878,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "_callSyncObserverCallbackWithTimeout", value: function () { - var _ref45 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee40(observer, allRelevantItems, validItems, deletedItems, source, sourceKey) { + var _callSyncObserverCallbackWithTimeout2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee40(observer, allRelevantItems, validItems, deletedItems, source, sourceKey) { var _this10 = this; return regeneratorRuntime.wrap(function _callee40$(_context41) { @@ -3766,17 +3904,15 @@ var SFModelManager = exports.SFModelManager = function () { return _context41.stop(); } } - }, _callee40, this); + }, _callee40); })); - function _callSyncObserverCallbackWithTimeout(_x78, _x79, _x80, _x81, _x82, _x83) { - return _ref45.apply(this, arguments); + function _callSyncObserverCallbackWithTimeout(_x76, _x77, _x78, _x79, _x80, _x81) { + return _callSyncObserverCallbackWithTimeout2.apply(this, arguments); } return _callSyncObserverCallbackWithTimeout; - }() - - // When a client sets an item as dirty, it means its values has changed, and everyone should know about it. + }() // When a client sets an item as dirty, it means its values has changed, and everyone should know about it. // Particularly extensions. For example, if you edit the title of a note, extensions won't be notified until the save sync completes. // With this, they'll be notified immediately. @@ -3784,40 +3920,38 @@ var SFModelManager = exports.SFModelManager = function () { key: "setItemDirty", value: function setItemDirty(item) { var dirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var updateClientDate = arguments[2]; - var source = arguments[3]; - var sourceKey = arguments[4]; - + var updateClientDate = arguments.length > 2 ? arguments[2] : undefined; + var source = arguments.length > 3 ? arguments[3] : undefined; + var sourceKey = arguments.length > 4 ? arguments[4] : undefined; this.setItemsDirty([item], dirty, updateClientDate, source, sourceKey); } }, { key: "setItemsDirty", value: function setItemsDirty(items) { var dirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var updateClientDate = arguments[2]; - var source = arguments[3]; - var sourceKey = arguments[4]; - var _iteratorNormalCompletion21 = true; - var _didIteratorError21 = false; - var _iteratorError21 = undefined; + var updateClientDate = arguments.length > 2 ? arguments[2] : undefined; + var source = arguments.length > 3 ? arguments[3] : undefined; + var sourceKey = arguments.length > 4 ? arguments[4] : undefined; + var _iteratorNormalCompletion19 = true; + var _didIteratorError19 = false; + var _iteratorError19 = undefined; try { - for (var _iterator21 = items[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { - var item = _step21.value; - + for (var _iterator19 = items[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) { + var item = _step19.value; item.setDirty(dirty, updateClientDate); } } catch (err) { - _didIteratorError21 = true; - _iteratorError21 = err; + _didIteratorError19 = true; + _iteratorError19 = err; } finally { try { - if (!_iteratorNormalCompletion21 && _iterator21.return) { - _iterator21.return(); + if (!_iteratorNormalCompletion19 && _iterator19["return"] != null) { + _iterator19["return"](); } } finally { - if (_didIteratorError21) { - throw _iteratorError21; + if (_didIteratorError19) { + throw _iteratorError19; } } } @@ -3828,6 +3962,7 @@ var SFModelManager = exports.SFModelManager = function () { key: "createItem", value: function createItem(json_obj) { var itemClass = SFModelManager.ContentTypeClassMapping && SFModelManager.ContentTypeClassMapping[json_obj.content_type]; + if (!itemClass) { itemClass = SFItem; } @@ -3835,7 +3970,6 @@ var SFModelManager = exports.SFModelManager = function () { var item = new itemClass(json_obj); return item; } - /* Be sure itemResponse is a generic Javascript object, and not an Item. An Item needs to collapse its properties into its content object before it can be duplicated. @@ -3847,7 +3981,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "createDuplicateItemFromResponseItem", value: function () { - var _ref46 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee41(itemResponse) { + var _createDuplicateItemFromResponseItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee41(itemResponse) { var itemResponseCopy, duplicate; return regeneratorRuntime.wrap(function _callee41$(_context42) { while (1) { @@ -3881,8 +4017,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee41, this); })); - function createDuplicateItemFromResponseItem(_x86) { - return _ref46.apply(this, arguments); + function createDuplicateItemFromResponseItem(_x82) { + return _createDuplicateItemFromResponseItem.apply(this, arguments); } return createDuplicateItemFromResponseItem; @@ -3890,38 +4026,48 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "duplicateItemAndAddAsConflict", value: function duplicateItemAndAddAsConflict(duplicateOf) { - return this.duplicateItemWithCustomContentAndAddAsConflict({ content: duplicateOf.content, duplicateOf: duplicateOf }); + return this.duplicateItemWithCustomContentAndAddAsConflict({ + content: duplicateOf.content, + duplicateOf: duplicateOf + }); } }, { key: "duplicateItemWithCustomContentAndAddAsConflict", - value: function duplicateItemWithCustomContentAndAddAsConflict(_ref47) { - var content = _ref47.content, - duplicateOf = _ref47.duplicateOf; - - var copy = this.duplicateItemWithCustomContent({ content: content, duplicateOf: duplicateOf }); - this.addDuplicatedItemAsConflict({ duplicate: copy, duplicateOf: duplicateOf }); + value: function duplicateItemWithCustomContentAndAddAsConflict(_ref10) { + var content = _ref10.content, + duplicateOf = _ref10.duplicateOf; + var copy = this.duplicateItemWithCustomContent({ + content: content, + duplicateOf: duplicateOf + }); + this.addDuplicatedItemAsConflict({ + duplicate: copy, + duplicateOf: duplicateOf + }); return copy; } }, { key: "addDuplicatedItemAsConflict", - value: function addDuplicatedItemAsConflict(_ref48) { - var duplicate = _ref48.duplicate, - duplicateOf = _ref48.duplicateOf; - + value: function addDuplicatedItemAsConflict(_ref11) { + var duplicate = _ref11.duplicate, + duplicateOf = _ref11.duplicateOf; this.addDuplicatedItem(duplicate, duplicateOf); duplicate.content.conflict_of = duplicateOf.uuid; } }, { key: "duplicateItemWithCustomContent", - value: function duplicateItemWithCustomContent(_ref49) { - var content = _ref49.content, - duplicateOf = _ref49.duplicateOf; - - var copy = new duplicateOf.constructor({ content: content }); + value: function duplicateItemWithCustomContent(_ref12) { + var content = _ref12.content, + duplicateOf = _ref12.duplicateOf; + var copy = new duplicateOf.constructor({ + content: content + }); copy.created_at = duplicateOf.created_at; + if (!copy.content_type) { copy.content_type = duplicateOf.content_type; } + return copy; } }, { @@ -3934,40 +4080,43 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "duplicateItemWithoutAdding", value: function duplicateItemWithoutAdding(item) { - var copy = new item.constructor({ content: item.content }); + var copy = new item.constructor({ + content: item.content + }); copy.created_at = item.created_at; + if (!copy.content_type) { copy.content_type = item.content_type; } + return copy; } }, { key: "addDuplicatedItem", value: function addDuplicatedItem(duplicate, original) { - this.addItem(duplicate); - // the duplicate should inherit the original's relationships - var _iteratorNormalCompletion22 = true; - var _didIteratorError22 = false; - var _iteratorError22 = undefined; + this.addItem(duplicate); // the duplicate should inherit the original's relationships + + var _iteratorNormalCompletion20 = true; + var _didIteratorError20 = false; + var _iteratorError20 = undefined; try { - for (var _iterator22 = original.referencingObjects[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { - var referencingObject = _step22.value; - + for (var _iterator20 = original.referencingObjects[Symbol.iterator](), _step20; !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { + var referencingObject = _step20.value; referencingObject.addItemAsRelationship(duplicate); this.setItemDirty(referencingObject, true); } } catch (err) { - _didIteratorError22 = true; - _iteratorError22 = err; + _didIteratorError20 = true; + _iteratorError20 = err; } finally { try { - if (!_iteratorNormalCompletion22 && _iterator22.return) { - _iterator22.return(); + if (!_iteratorNormalCompletion20 && _iterator20["return"] != null) { + _iterator20["return"](); } } finally { - if (_didIteratorError22) { - throw _iteratorError22; + if (_didIteratorError20) { + throw _iteratorError20; } } } @@ -3979,7 +4128,6 @@ var SFModelManager = exports.SFModelManager = function () { key: "addItem", value: function addItem(item) { var globalOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - this.addItems([item], globalOnly); } }, { @@ -3988,39 +4136,51 @@ var SFModelManager = exports.SFModelManager = function () { var _this11 = this; var globalOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - items.forEach(function (item) { if (!_this11.itemsHash[item.uuid]) { _this11.itemsHash[item.uuid] = item; + _this11.items.push(item); } }); } - /* Notifies observers when an item has been synced or mapped from a remote response */ }, { key: "addItemSyncObserver", value: function addItemSyncObserver(id, types, callback) { - this.addItemSyncObserverWithPriority({ id: id, types: types, callback: callback, priority: 1 }); + this.addItemSyncObserverWithPriority({ + id: id, + types: types, + callback: callback, + priority: 1 + }); } }, { key: "addItemSyncObserverWithPriority", - value: function addItemSyncObserverWithPriority(_ref50) { - var id = _ref50.id, - priority = _ref50.priority, - types = _ref50.types, - callback = _ref50.callback; + value: function addItemSyncObserverWithPriority(_ref13) { + var id = _ref13.id, + priority = _ref13.priority, + types = _ref13.types, + callback = _ref13.callback; if (!Array.isArray(types)) { types = [types]; } - this.itemSyncObservers.push({ id: id, types: types, priority: priority, callback: callback }); + + this.itemSyncObservers.push({ + id: id, + types: types, + priority: priority, + callback: callback + }); } }, { key: "removeItemSyncObserver", value: function removeItemSyncObserver(id) { - _.remove(this.itemSyncObservers, _.find(this.itemSyncObservers, { id: id })); + _.remove(this.itemSyncObservers, _.find(this.itemSyncObservers, { + id: id + })); } }, { key: "getDirtyItems", @@ -4034,27 +4194,26 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "clearDirtyItems", value: function clearDirtyItems(items) { - var _iteratorNormalCompletion23 = true; - var _didIteratorError23 = false; - var _iteratorError23 = undefined; + var _iteratorNormalCompletion21 = true; + var _didIteratorError21 = false; + var _iteratorError21 = undefined; try { - for (var _iterator23 = items[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { - var item = _step23.value; - + for (var _iterator21 = items[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { + var item = _step21.value; item.setDirty(false); } } catch (err) { - _didIteratorError23 = true; - _iteratorError23 = err; + _didIteratorError21 = true; + _iteratorError21 = err; } finally { try { - if (!_iteratorNormalCompletion23 && _iterator23.return) { - _iterator23.return(); + if (!_iteratorNormalCompletion21 && _iterator21["return"] != null) { + _iterator21["return"](); } } finally { - if (_didIteratorError23) { - throw _iteratorError23; + if (_didIteratorError21) { + throw _iteratorError21; } } } @@ -4065,17 +4224,18 @@ var SFModelManager = exports.SFModelManager = function () { // Handle direct relationships // An item with errorDecrypting will not have valid content field if (!item.errorDecrypting) { - var _iteratorNormalCompletion24 = true; - var _didIteratorError24 = false; - var _iteratorError24 = undefined; + var _iteratorNormalCompletion22 = true; + var _didIteratorError22 = false; + var _iteratorError22 = undefined; try { - for (var _iterator24 = item.content.references[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { - var reference = _step24.value; - + for (var _iterator22 = item.content.references[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { + var reference = _step22.value; var relationship = this.findItem(reference.uuid); + if (relationship) { item.removeItemAsRelationship(relationship); + if (relationship.hasRelationshipWithItem(item)) { relationship.removeItemAsRelationship(item); this.setItemDirty(relationship, true); @@ -4083,51 +4243,49 @@ var SFModelManager = exports.SFModelManager = function () { } } } catch (err) { - _didIteratorError24 = true; - _iteratorError24 = err; + _didIteratorError22 = true; + _iteratorError22 = err; } finally { try { - if (!_iteratorNormalCompletion24 && _iterator24.return) { - _iterator24.return(); + if (!_iteratorNormalCompletion22 && _iterator22["return"] != null) { + _iterator22["return"](); } } finally { - if (_didIteratorError24) { - throw _iteratorError24; + if (_didIteratorError22) { + throw _iteratorError22; } } } - } + } // Handle indirect relationships - // Handle indirect relationships - var _iteratorNormalCompletion25 = true; - var _didIteratorError25 = false; - var _iteratorError25 = undefined; + + var _iteratorNormalCompletion23 = true; + var _didIteratorError23 = false; + var _iteratorError23 = undefined; try { - for (var _iterator25 = item.referencingObjects[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { - var object = _step25.value; - + for (var _iterator23 = item.referencingObjects[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { + var object = _step23.value; object.removeItemAsRelationship(item); this.setItemDirty(object, true); } } catch (err) { - _didIteratorError25 = true; - _iteratorError25 = err; + _didIteratorError23 = true; + _iteratorError23 = err; } finally { try { - if (!_iteratorNormalCompletion25 && _iterator25.return) { - _iterator25.return(); + if (!_iteratorNormalCompletion23 && _iterator23["return"] != null) { + _iterator23["return"](); } } finally { - if (_didIteratorError25) { - throw _iteratorError25; + if (_didIteratorError23) { + throw _iteratorError23; } } } item.referencingObjects = []; } - /* Used when changing encryption key */ }, { @@ -4150,15 +4308,18 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "removeItemLocally", value: function () { - var _ref51 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee42(item) { + var _removeItemLocally = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee42(item) { return regeneratorRuntime.wrap(function _callee42$(_context43) { while (1) { switch (_context43.prev = _context43.next) { case 0: - _.remove(this.items, { uuid: item.uuid }); + _.remove(this.items, { + uuid: item.uuid + }); delete this.itemsHash[item.uuid]; - item.isBeingRemovedLocally(); case 3: @@ -4169,13 +4330,12 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee42, this); })); - function removeItemLocally(_x89) { - return _ref51.apply(this, arguments); + function removeItemLocally(_x83) { + return _removeItemLocally.apply(this, arguments); } return removeItemLocally; }() - /* Searching */ }, { @@ -4208,32 +4368,31 @@ var SFModelManager = exports.SFModelManager = function () { key: "findItems", value: function findItems(ids) { var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var results = []; - var _iteratorNormalCompletion26 = true; - var _didIteratorError26 = false; - var _iteratorError26 = undefined; + var _iteratorNormalCompletion24 = true; + var _didIteratorError24 = false; + var _iteratorError24 = undefined; try { - for (var _iterator26 = ids[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) { - var id = _step26.value; - + for (var _iterator24 = ids[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { + var id = _step24.value; var item = this.itemsHash[id]; + if (item || includeBlanks) { results.push(item); } } } catch (err) { - _didIteratorError26 = true; - _iteratorError26 = err; + _didIteratorError24 = true; + _iteratorError24 = err; } finally { try { - if (!_iteratorNormalCompletion26 && _iterator26.return) { - _iterator26.return(); + if (!_iteratorNormalCompletion24 && _iterator24["return"] != null) { + _iterator24["return"](); } } finally { - if (_didIteratorError26) { - throw _iteratorError26; + if (_didIteratorError24) { + throw _iteratorError24; } } } @@ -4254,39 +4413,37 @@ var SFModelManager = exports.SFModelManager = function () { key: "filterItemsWithPredicates", value: function filterItemsWithPredicates(items, predicates) { var results = items.filter(function (item) { - var _iteratorNormalCompletion27 = true; - var _didIteratorError27 = false; - var _iteratorError27 = undefined; + var _iteratorNormalCompletion25 = true; + var _didIteratorError25 = false; + var _iteratorError25 = undefined; try { - for (var _iterator27 = predicates[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) { - var predicate = _step27.value; + for (var _iterator25 = predicates[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { + var predicate = _step25.value; if (!item.satisfiesPredicate(predicate)) { return false; } } } catch (err) { - _didIteratorError27 = true; - _iteratorError27 = err; + _didIteratorError25 = true; + _iteratorError25 = err; } finally { try { - if (!_iteratorNormalCompletion27 && _iterator27.return) { - _iterator27.return(); + if (!_iteratorNormalCompletion25 && _iterator25["return"] != null) { + _iterator25["return"](); } } finally { - if (_didIteratorError27) { - throw _iteratorError27; + if (_didIteratorError25) { + throw _iteratorError25; } } } return true; }); - return results; } - /* Archives */ @@ -4294,32 +4451,33 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "importItems", value: function () { - var _ref52 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee43(externalItems) { - var itemsToBeMapped, localValues, _iteratorNormalCompletion28, _didIteratorError28, _iteratorError28, _iterator28, _step28, itemData, localItem, frozenValue, _iteratorNormalCompletion29, _didIteratorError29, _iteratorError29, _iterator29, _step29, _itemData, _localValues$_itemDat, itemRef, duplicate, items, _iteratorNormalCompletion30, _didIteratorError30, _iteratorError30, _iterator30, _step30, item; + var _importItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee43(externalItems) { + var itemsToBeMapped, localValues, _iteratorNormalCompletion26, _didIteratorError26, _iteratorError26, _iterator26, _step26, itemData, localItem, frozenValue, _iteratorNormalCompletion27, _didIteratorError27, _iteratorError27, _iterator27, _step27, _itemData, _localValues$_itemDat, _frozenValue, itemRef, duplicate, items, _iteratorNormalCompletion28, _didIteratorError28, _iteratorError28, _iterator28, _step28, item; return regeneratorRuntime.wrap(function _callee43$(_context44) { while (1) { switch (_context44.prev = _context44.next) { case 0: - itemsToBeMapped = []; - // Get local values before doing any processing. This way, if a note change below modifies a tag, + itemsToBeMapped = []; // Get local values before doing any processing. This way, if a note change below modifies a tag, // and the tag is going to be iterated on in the same loop, then we don't want this change to be compared // to the local value. localValues = {}; - _iteratorNormalCompletion28 = true; - _didIteratorError28 = false; - _iteratorError28 = undefined; + _iteratorNormalCompletion26 = true; + _didIteratorError26 = false; + _iteratorError26 = undefined; _context44.prev = 5; - _iterator28 = externalItems[Symbol.iterator](); + _iterator26 = externalItems[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done) { + if (_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done) { _context44.next = 18; break; } - itemData = _step28.value; + itemData = _step26.value; localItem = this.findItem(itemData.uuid); if (localItem) { @@ -4332,11 +4490,13 @@ var SFModelManager = exports.SFModelManager = function () { case 13: frozenValue = this.duplicateItemWithoutAdding(localItem); - - localValues[itemData.uuid] = { frozenValue: frozenValue, itemRef: localItem }; + localValues[itemData.uuid] = { + frozenValue: frozenValue, + itemRef: localItem + }; case 15: - _iteratorNormalCompletion28 = true; + _iteratorNormalCompletion26 = true; _context44.next = 7; break; @@ -4347,26 +4507,26 @@ var SFModelManager = exports.SFModelManager = function () { case 20: _context44.prev = 20; _context44.t0 = _context44["catch"](5); - _didIteratorError28 = true; - _iteratorError28 = _context44.t0; + _didIteratorError26 = true; + _iteratorError26 = _context44.t0; case 24: _context44.prev = 24; _context44.prev = 25; - if (!_iteratorNormalCompletion28 && _iterator28.return) { - _iterator28.return(); + if (!_iteratorNormalCompletion26 && _iterator26["return"] != null) { + _iterator26["return"](); } case 27: _context44.prev = 27; - if (!_didIteratorError28) { + if (!_didIteratorError26) { _context44.next = 30; break; } - throw _iteratorError28; + throw _iteratorError26; case 30: return _context44.finish(27); @@ -4375,22 +4535,22 @@ var SFModelManager = exports.SFModelManager = function () { return _context44.finish(24); case 32: - _iteratorNormalCompletion29 = true; - _didIteratorError29 = false; - _iteratorError29 = undefined; + _iteratorNormalCompletion27 = true; + _didIteratorError27 = false; + _iteratorError27 = undefined; _context44.prev = 35; - _iterator29 = externalItems[Symbol.iterator](); + _iterator27 = externalItems[Symbol.iterator](); case 37: - if (_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done) { + if (_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done) { _context44.next = 52; break; } - _itemData = _step29.value; - _localValues$_itemDat = localValues[_itemData.uuid], frozenValue = _localValues$_itemDat.frozenValue, itemRef = _localValues$_itemDat.itemRef; + _itemData = _step27.value; + _localValues$_itemDat = localValues[_itemData.uuid], _frozenValue = _localValues$_itemDat.frozenValue, itemRef = _localValues$_itemDat.itemRef; - if (!(frozenValue && !itemRef.errorDecrypting)) { + if (!(_frozenValue && !itemRef.errorDecrypting)) { _context44.next = 47; break; } @@ -4401,23 +4561,28 @@ var SFModelManager = exports.SFModelManager = function () { case 43: duplicate = _context44.sent; - if (!_itemData.deleted && !frozenValue.isItemContentEqualWith(duplicate)) { + if (!_itemData.deleted && !_frozenValue.isItemContentEqualWith(duplicate)) { // Data differs - this.addDuplicatedItemAsConflict({ duplicate: duplicate, duplicateOf: itemRef }); + this.addDuplicatedItemAsConflict({ + duplicate: duplicate, + duplicateOf: itemRef + }); itemsToBeMapped.push(duplicate); } + _context44.next = 49; break; case 47: // it doesn't exist, push it into items to be mapped itemsToBeMapped.push(_itemData); + if (itemRef && itemRef.errorDecrypting) { itemRef.errorDecrypting = false; } case 49: - _iteratorNormalCompletion29 = true; + _iteratorNormalCompletion27 = true; _context44.next = 37; break; @@ -4428,26 +4593,26 @@ var SFModelManager = exports.SFModelManager = function () { case 54: _context44.prev = 54; _context44.t1 = _context44["catch"](35); - _didIteratorError29 = true; - _iteratorError29 = _context44.t1; + _didIteratorError27 = true; + _iteratorError27 = _context44.t1; case 58: _context44.prev = 58; _context44.prev = 59; - if (!_iteratorNormalCompletion29 && _iterator29.return) { - _iterator29.return(); + if (!_iteratorNormalCompletion27 && _iterator27["return"] != null) { + _iterator27["return"](); } case 61: _context44.prev = 61; - if (!_didIteratorError29) { + if (!_didIteratorError27) { _context44.next = 64; break; } - throw _iteratorError29; + throw _iteratorError27; case 64: return _context44.finish(61); @@ -4461,14 +4626,13 @@ var SFModelManager = exports.SFModelManager = function () { case 68: items = _context44.sent; - _iteratorNormalCompletion30 = true; - _didIteratorError30 = false; - _iteratorError30 = undefined; + _iteratorNormalCompletion28 = true; + _didIteratorError28 = false; + _iteratorError28 = undefined; _context44.prev = 72; - for (_iterator30 = items[Symbol.iterator](); !(_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done); _iteratorNormalCompletion30 = true) { - item = _step30.value; - + for (_iterator28 = items[Symbol.iterator](); !(_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done); _iteratorNormalCompletion28 = true) { + item = _step28.value; this.setItemDirty(item, true, false); item.deleted = false; } @@ -4479,26 +4643,26 @@ var SFModelManager = exports.SFModelManager = function () { case 76: _context44.prev = 76; _context44.t2 = _context44["catch"](72); - _didIteratorError30 = true; - _iteratorError30 = _context44.t2; + _didIteratorError28 = true; + _iteratorError28 = _context44.t2; case 80: _context44.prev = 80; _context44.prev = 81; - if (!_iteratorNormalCompletion30 && _iterator30.return) { - _iterator30.return(); + if (!_iteratorNormalCompletion28 && _iterator28["return"] != null) { + _iterator28["return"](); } case 83: _context44.prev = 83; - if (!_didIteratorError30) { + if (!_didIteratorError28) { _context44.next = 86; break; } - throw _iteratorError30; + throw _iteratorError28; case 86: return _context44.finish(83); @@ -4517,8 +4681,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee43, this, [[5, 20, 24, 32], [25,, 27, 31], [35, 54, 58, 66], [59,, 61, 65], [72, 76, 80, 88], [81,, 83, 87]]); })); - function importItems(_x91) { - return _ref52.apply(this, arguments); + function importItems(_x84) { + return _importItems.apply(this, arguments); } return importItems; @@ -4526,7 +4690,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "getAllItemsJSONData", value: function () { - var _ref53 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee44(keys, authParams, returnNullIfEmpty) { + var _getAllItemsJSONData = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee44(keys, authParams, returnNullIfEmpty) { return regeneratorRuntime.wrap(function _callee44$(_context45) { while (1) { switch (_context45.prev = _context45.next) { @@ -4541,8 +4707,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee44, this); })); - function getAllItemsJSONData(_x92, _x93, _x94) { - return _ref53.apply(this, arguments); + function getAllItemsJSONData(_x85, _x86, _x87) { + return _getAllItemsJSONData.apply(this, arguments); } return getAllItemsJSONData; @@ -4550,7 +4716,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "getJSONDataForItems", value: function () { - var _ref54 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee45(items, keys, authParams, returnNullIfEmpty) { + var _getJSONDataForItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee45(items, keys, authParams, returnNullIfEmpty) { return regeneratorRuntime.wrap(function _callee45$(_context46) { while (1) { switch (_context46.prev = _context46.next) { @@ -4563,14 +4731,18 @@ var SFModelManager = exports.SFModelManager = function () { return null; } - var data = { items: items }; + var data = { + items: items + }; if (keys) { // auth params are only needed when encrypted with a standard file key data["auth_params"] = authParams; } - return JSON.stringify(data, null, 2 /* pretty print */); + return JSON.stringify(data, null, 2 + /* pretty print */ + ); })); case 1: @@ -4578,11 +4750,11 @@ var SFModelManager = exports.SFModelManager = function () { return _context46.stop(); } } - }, _callee45, this); + }, _callee45); })); - function getJSONDataForItems(_x95, _x96, _x97, _x98) { - return _ref54.apply(this, arguments); + function getJSONDataForItems(_x88, _x89, _x90, _x91) { + return _getJSONDataForItems.apply(this, arguments); } return getJSONDataForItems; @@ -4590,7 +4762,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "computeDataIntegrityHash", value: function () { - var _ref55 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee46() { + var _computeDataIntegrityHash = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee46() { var items, dates, string, hash; return regeneratorRuntime.wrap(function _callee46$(_context47) { while (1) { @@ -4614,7 +4788,6 @@ var SFModelManager = exports.SFModelManager = function () { case 10: _context47.prev = 10; _context47.t0 = _context47["catch"](0); - console.error("Error computing data integrity hash", _context47.t0); return _context47.abrupt("return", null); @@ -4627,7 +4800,7 @@ var SFModelManager = exports.SFModelManager = function () { })); function computeDataIntegrityHash() { - return _ref55.apply(this, arguments); + return _computeDataIntegrityHash.apply(this, arguments); } return computeDataIntegrityHash; @@ -4649,42 +4822,37 @@ var SFModelManager = exports.SFModelManager = function () { return SFModelManager; }(); +exports.SFModelManager = SFModelManager; ; -var SFPrivilegesManager = exports.SFPrivilegesManager = function () { + +var SFPrivilegesManager = +/*#__PURE__*/ +function () { function SFPrivilegesManager(modelManager, syncManager, singletonManager) { _classCallCheck(this, SFPrivilegesManager); this.modelManager = modelManager; this.syncManager = syncManager; this.singletonManager = singletonManager; - this.loadPrivileges(); - SFPrivilegesManager.CredentialAccountPassword = "CredentialAccountPassword"; SFPrivilegesManager.CredentialLocalPasscode = "CredentialLocalPasscode"; - SFPrivilegesManager.ActionManageExtensions = "ActionManageExtensions"; SFPrivilegesManager.ActionManageBackups = "ActionManageBackups"; SFPrivilegesManager.ActionViewProtectedNotes = "ActionViewProtectedNotes"; SFPrivilegesManager.ActionManagePrivileges = "ActionManagePrivileges"; SFPrivilegesManager.ActionManagePasscode = "ActionManagePasscode"; SFPrivilegesManager.ActionDeleteNote = "ActionDeleteNote"; - SFPrivilegesManager.SessionExpiresAtKey = "SessionExpiresAtKey"; SFPrivilegesManager.SessionLengthKey = "SessionLengthKey"; - SFPrivilegesManager.SessionLengthNone = 0; SFPrivilegesManager.SessionLengthFiveMinutes = 300; SFPrivilegesManager.SessionLengthOneHour = 3600; SFPrivilegesManager.SessionLengthOneWeek = 604800; - this.availableActions = [SFPrivilegesManager.ActionViewProtectedNotes, SFPrivilegesManager.ActionDeleteNote, SFPrivilegesManager.ActionManagePasscode, SFPrivilegesManager.ActionManageBackups, SFPrivilegesManager.ActionManageExtensions, SFPrivilegesManager.ActionManagePrivileges]; - this.availableCredentials = [SFPrivilegesManager.CredentialAccountPassword, SFPrivilegesManager.CredentialLocalPasscode]; - this.sessionLengths = [SFPrivilegesManager.SessionLengthNone, SFPrivilegesManager.SessionLengthFiveMinutes, SFPrivilegesManager.SessionLengthOneHour, SFPrivilegesManager.SessionLengthOneWeek, SFPrivilegesManager.SessionLengthIndefinite]; } - /* async delegate.isOffline() async delegate.hasLocalPasscode() @@ -4713,8 +4881,10 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "netCredentialsForAction", value: function () { - var _ref56 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee47(action) { - var credentials, netCredentials, _iteratorNormalCompletion31, _didIteratorError31, _iteratorError31, _iterator31, _step31, cred, isOffline, hasLocalPasscode; + var _netCredentialsForAction = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee47(action) { + var credentials, netCredentials, _iteratorNormalCompletion29, _didIteratorError29, _iteratorError29, _iterator29, _step29, cred, isOffline, hasLocalPasscode; return regeneratorRuntime.wrap(function _callee47$(_context48) { while (1) { @@ -4727,19 +4897,19 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { _context48.t0 = action; credentials = _context48.sent.getCredentialsForAction(_context48.t0); netCredentials = []; - _iteratorNormalCompletion31 = true; - _didIteratorError31 = false; - _iteratorError31 = undefined; + _iteratorNormalCompletion29 = true; + _didIteratorError29 = false; + _iteratorError29 = undefined; _context48.prev = 8; - _iterator31 = credentials[Symbol.iterator](); + _iterator29 = credentials[Symbol.iterator](); case 10: - if (_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done) { + if (_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done) { _context48.next = 27; break; } - cred = _step31.value; + cred = _step29.value; if (!(cred == SFPrivilegesManager.CredentialAccountPassword)) { _context48.next = 19; @@ -4755,6 +4925,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { if (!isOffline) { netCredentials.push(cred); } + _context48.next = 24; break; @@ -4775,7 +4946,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { } case 24: - _iteratorNormalCompletion31 = true; + _iteratorNormalCompletion29 = true; _context48.next = 10; break; @@ -4786,26 +4957,26 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 29: _context48.prev = 29; _context48.t1 = _context48["catch"](8); - _didIteratorError31 = true; - _iteratorError31 = _context48.t1; + _didIteratorError29 = true; + _iteratorError29 = _context48.t1; case 33: _context48.prev = 33; _context48.prev = 34; - if (!_iteratorNormalCompletion31 && _iterator31.return) { - _iterator31.return(); + if (!_iteratorNormalCompletion29 && _iterator29["return"] != null) { + _iterator29["return"](); } case 36: _context48.prev = 36; - if (!_didIteratorError31) { + if (!_didIteratorError29) { _context48.next = 39; break; } - throw _iteratorError31; + throw _iteratorError29; case 39: return _context48.finish(36); @@ -4824,8 +4995,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee47, this, [[8, 29, 33, 41], [34,, 36, 40]]); })); - function netCredentialsForAction(_x99) { - return _ref56.apply(this, arguments); + function netCredentialsForAction(_x92) { + return _netCredentialsForAction.apply(this, arguments); } return netCredentialsForAction; @@ -4833,7 +5004,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "loadPrivileges", value: function () { - var _ref57 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee49() { + var _loadPrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee49() { var _this12 = this; return regeneratorRuntime.wrap(function _callee49$(_context50) { @@ -4848,22 +5021,28 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context50.abrupt("return", this.loadPromise); case 2: - this.loadPromise = new Promise(function (resolve, reject) { var privsContentType = SFPrivileges.contentType(); var contentTypePredicate = new SFPredicate("content_type", "=", privsContentType); + _this12.singletonManager.registerSingleton([contentTypePredicate], function (resolvedSingleton) { _this12.privileges = resolvedSingleton; resolve(resolvedSingleton); - }, function () { - var _ref58 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee48(valueCallback) { + }, + /*#__PURE__*/ + function () { + var _ref14 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee48(valueCallback) { var privs; return regeneratorRuntime.wrap(function _callee48$(_context49) { while (1) { switch (_context49.prev = _context49.next) { case 0: // Safe to create. Create and return object. - privs = new SFPrivileges({ content_type: privsContentType }); + privs = new SFPrivileges({ + content_type: privsContentType + }); if (SFJS.crypto.generateUUIDSync) { _context49.next = 4; @@ -4875,8 +5054,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 4: _this12.modelManager.addItem(privs); + _this12.modelManager.setItemDirty(privs, true); + _this12.syncManager.sync(); + valueCallback(privs); resolve(privs); @@ -4885,15 +5067,14 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context49.stop(); } } - }, _callee48, _this12); + }, _callee48); })); - return function (_x100) { - return _ref58.apply(this, arguments); + return function (_x93) { + return _ref14.apply(this, arguments); }; }()); }); - return _context50.abrupt("return", this.loadPromise); case 4: @@ -4905,7 +5086,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function loadPrivileges() { - return _ref57.apply(this, arguments); + return _loadPrivileges.apply(this, arguments); } return loadPrivileges; @@ -4913,7 +5094,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getPrivileges", value: function () { - var _ref59 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee50() { + var _getPrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee50() { return regeneratorRuntime.wrap(function _callee50$(_context51) { while (1) { switch (_context51.prev = _context51.next) { @@ -4937,7 +5120,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getPrivileges() { - return _ref59.apply(this, arguments); + return _getPrivileges.apply(this, arguments); } return getPrivileges; @@ -4946,48 +5129,38 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { key: "displayInfoForCredential", value: function displayInfoForCredential(credential) { var metadata = {}; - metadata[SFPrivilegesManager.CredentialAccountPassword] = { label: "Account Password", prompt: "Please enter your account password." }; - metadata[SFPrivilegesManager.CredentialLocalPasscode] = { label: "Local Passcode", prompt: "Please enter your local passcode." }; - return metadata[credential]; } }, { key: "displayInfoForAction", value: function displayInfoForAction(action) { var metadata = {}; - metadata[SFPrivilegesManager.ActionManageExtensions] = { label: "Manage Extensions" }; - metadata[SFPrivilegesManager.ActionManageBackups] = { label: "Download/Import Backups" }; - metadata[SFPrivilegesManager.ActionViewProtectedNotes] = { label: "View Protected Notes" }; - metadata[SFPrivilegesManager.ActionManagePrivileges] = { label: "Manage Privileges" }; - metadata[SFPrivilegesManager.ActionManagePasscode] = { label: "Manage Passcode" }; - metadata[SFPrivilegesManager.ActionDeleteNote] = { label: "Delete Notes" }; - return metadata[action]; } }, { @@ -5010,7 +5183,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "setSessionLength", value: function () { - var _ref60 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee51(length) { + var _setSessionLength = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee51(length) { var addToNow, expiresAt; return regeneratorRuntime.wrap(function _callee51$(_context52) { while (1) { @@ -5033,8 +5208,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee51, this); })); - function setSessionLength(_x101) { - return _ref60.apply(this, arguments); + function setSessionLength(_x94) { + return _setSessionLength.apply(this, arguments); } return setSessionLength; @@ -5042,7 +5217,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "clearSession", value: function () { - var _ref61 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee52() { + var _clearSession = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee52() { return regeneratorRuntime.wrap(function _callee52$(_context53) { while (1) { switch (_context53.prev = _context53.next) { @@ -5058,7 +5235,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function clearSession() { - return _ref61.apply(this, arguments); + return _clearSession.apply(this, arguments); } return clearSession; @@ -5066,7 +5243,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getSelectedSessionLength", value: function () { - var _ref62 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee53() { + var _getSelectedSessionLength = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee53() { var length; return regeneratorRuntime.wrap(function _callee53$(_context54) { while (1) { @@ -5097,7 +5276,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getSelectedSessionLength() { - return _ref62.apply(this, arguments); + return _getSelectedSessionLength.apply(this, arguments); } return getSelectedSessionLength; @@ -5105,7 +5284,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getSessionExpirey", value: function () { - var _ref63 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee54() { + var _getSessionExpirey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee54() { var expiresAt; return regeneratorRuntime.wrap(function _callee54$(_context55) { while (1) { @@ -5136,7 +5317,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getSessionExpirey() { - return _ref63.apply(this, arguments); + return _getSessionExpirey.apply(this, arguments); } return getSessionExpirey; @@ -5144,7 +5325,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "actionHasPrivilegesConfigured", value: function () { - var _ref64 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee55(action) { + var _actionHasPrivilegesConfigured = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee55(action) { return regeneratorRuntime.wrap(function _callee55$(_context56) { while (1) { switch (_context56.prev = _context56.next) { @@ -5164,8 +5347,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee55, this); })); - function actionHasPrivilegesConfigured(_x102) { - return _ref64.apply(this, arguments); + function actionHasPrivilegesConfigured(_x95) { + return _actionHasPrivilegesConfigured.apply(this, arguments); } return actionHasPrivilegesConfigured; @@ -5173,7 +5356,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "actionRequiresPrivilege", value: function () { - var _ref65 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee56(action) { + var _actionRequiresPrivilege = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee56(action) { var expiresAt, netCredentials; return regeneratorRuntime.wrap(function _callee56$(_context57) { while (1) { @@ -5208,8 +5393,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee56, this); })); - function actionRequiresPrivilege(_x103) { - return _ref65.apply(this, arguments); + function actionRequiresPrivilege(_x96) { + return _actionRequiresPrivilege.apply(this, arguments); } return actionRequiresPrivilege; @@ -5217,7 +5402,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "savePrivileges", value: function () { - var _ref66 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee57() { + var _savePrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee57() { var privs; return regeneratorRuntime.wrap(function _callee57$(_context58) { while (1) { @@ -5228,7 +5415,6 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 2: privs = _context58.sent; - this.modelManager.setItemDirty(privs, true); this.syncManager.sync(); @@ -5241,7 +5427,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function savePrivileges() { - return _ref66.apply(this, arguments); + return _savePrivileges.apply(this, arguments); } return savePrivileges; @@ -5249,8 +5435,10 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "authenticateAction", value: function () { - var _ref67 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee58(action, credentialAuthMapping) { - var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion32, _didIteratorError32, _iteratorError32, _iterator32, _step32, requiredCredential, passesAuth; + var _authenticateAction = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee58(action, credentialAuthMapping) { + var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion30, _didIteratorError30, _iteratorError30, _iterator30, _step30, requiredCredential, passesAuth; return regeneratorRuntime.wrap(function _callee58$(_context59) { while (1) { @@ -5262,19 +5450,19 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 2: requiredCredentials = _context59.sent; successfulCredentials = [], failedCredentials = []; - _iteratorNormalCompletion32 = true; - _didIteratorError32 = false; - _iteratorError32 = undefined; + _iteratorNormalCompletion30 = true; + _didIteratorError30 = false; + _iteratorError30 = undefined; _context59.prev = 7; - _iterator32 = requiredCredentials[Symbol.iterator](); + _iterator30 = requiredCredentials[Symbol.iterator](); case 9: - if (_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done) { + if (_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done) { _context59.next = 18; break; } - requiredCredential = _step32.value; + requiredCredential = _step30.value; _context59.next = 13; return this._verifyAuthenticationParameters(requiredCredential, credentialAuthMapping[requiredCredential]); @@ -5288,7 +5476,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { } case 15: - _iteratorNormalCompletion32 = true; + _iteratorNormalCompletion30 = true; _context59.next = 9; break; @@ -5299,26 +5487,26 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 20: _context59.prev = 20; _context59.t0 = _context59["catch"](7); - _didIteratorError32 = true; - _iteratorError32 = _context59.t0; + _didIteratorError30 = true; + _iteratorError30 = _context59.t0; case 24: _context59.prev = 24; _context59.prev = 25; - if (!_iteratorNormalCompletion32 && _iterator32.return) { - _iterator32.return(); + if (!_iteratorNormalCompletion30 && _iterator30["return"] != null) { + _iterator30["return"](); } case 27: _context59.prev = 27; - if (!_didIteratorError32) { + if (!_didIteratorError30) { _context59.next = 30; break; } - throw _iteratorError32; + throw _iteratorError30; case 30: return _context59.finish(27); @@ -5341,8 +5529,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee58, this, [[7, 20, 24, 32], [25,, 27, 31]]); })); - function authenticateAction(_x104, _x105) { - return _ref67.apply(this, arguments); + function authenticateAction(_x97, _x98) { + return _authenticateAction.apply(this, arguments); } return authenticateAction; @@ -5350,7 +5538,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "_verifyAuthenticationParameters", value: function () { - var _ref68 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee61(credential, value) { + var _verifyAuthenticationParameters2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee61(credential, value) { var _this13 = this; var verifyAccountPassword, verifyLocalPasscode; @@ -5358,8 +5548,12 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { while (1) { switch (_context62.prev = _context62.next) { case 0: - verifyAccountPassword = function () { - var _ref69 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee59(password) { + verifyAccountPassword = + /*#__PURE__*/ + function () { + var _ref15 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee59(password) { return regeneratorRuntime.wrap(function _callee59$(_context60) { while (1) { switch (_context60.prev = _context60.next) { @@ -5371,16 +5565,20 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context60.stop(); } } - }, _callee59, _this13); + }, _callee59); })); - return function verifyAccountPassword(_x108) { - return _ref69.apply(this, arguments); + return function verifyAccountPassword(_x101) { + return _ref15.apply(this, arguments); }; }(); - verifyLocalPasscode = function () { - var _ref70 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee60(passcode) { + verifyLocalPasscode = + /*#__PURE__*/ + function () { + var _ref16 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee60(passcode) { return regeneratorRuntime.wrap(function _callee60$(_context61) { while (1) { switch (_context61.prev = _context61.next) { @@ -5392,11 +5590,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context61.stop(); } } - }, _callee60, _this13); + }, _callee60); })); - return function verifyLocalPasscode(_x109) { - return _ref70.apply(this, arguments); + return function verifyLocalPasscode(_x102) { + return _ref16.apply(this, arguments); }; }(); @@ -5420,11 +5618,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context62.stop(); } } - }, _callee61, this); + }, _callee61); })); - function _verifyAuthenticationParameters(_x106, _x107) { - return _ref68.apply(this, arguments); + function _verifyAuthenticationParameters(_x99, _x100) { + return _verifyAuthenticationParameters2.apply(this, arguments); } return _verifyAuthenticationParameters; @@ -5434,11 +5632,15 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return SFPrivilegesManager; }(); -;var SessionHistoryPersistKey = "sessionHistory_persist"; +exports.SFPrivilegesManager = SFPrivilegesManager; +; +var SessionHistoryPersistKey = "sessionHistory_persist"; var SessionHistoryRevisionsKey = "sessionHistory_revisions"; var SessionHistoryAutoOptimizeKey = "sessionHistory_autoOptimize"; -var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { +var SFSessionHistoryManager = +/*#__PURE__*/ +function () { function SFSessionHistoryManager(modelManager, storageManager, keyRequestHandler, contentTypes, timeout) { var _this14 = this; @@ -5446,23 +5648,22 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { this.modelManager = modelManager; this.storageManager = storageManager; - this.$timeout = timeout || setTimeout.bind(window); + this.$timeout = timeout || setTimeout.bind(window); // Required to persist the encrypted form of SFHistorySession - // Required to persist the encrypted form of SFHistorySession this.keyRequestHandler = keyRequestHandler; - this.loadFromDisk().then(function () { _this14.modelManager.addItemSyncObserver("session-history", contentTypes, function (allItems, validItems, deletedItems, source, sourceKey) { if (source === SFModelManager.MappingSourceLocalDirtied) { return; } - var _iteratorNormalCompletion33 = true; - var _didIteratorError33 = false; - var _iteratorError33 = undefined; + + var _iteratorNormalCompletion31 = true; + var _didIteratorError31 = false; + var _iteratorError31 = undefined; try { - for (var _iterator33 = allItems[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { - var item = _step33.value; + for (var _iterator31 = allItems[Symbol.iterator](), _step31; !(_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done); _iteratorNormalCompletion31 = true) { + var item = _step31.value; try { _this14.addHistoryEntryForItem(item); @@ -5471,16 +5672,16 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { } } } catch (err) { - _didIteratorError33 = true; - _iteratorError33 = err; + _didIteratorError31 = true; + _iteratorError31 = err; } finally { try { - if (!_iteratorNormalCompletion33 && _iterator33.return) { - _iterator33.return(); + if (!_iteratorNormalCompletion31 && _iterator31["return"] != null) { + _iterator31["return"](); } } finally { - if (_didIteratorError33) { - throw _iteratorError33; + if (_didIteratorError31) { + throw _iteratorError31; } } } @@ -5491,7 +5692,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { _createClass(SFSessionHistoryManager, [{ key: "encryptionParams", value: function () { - var _ref71 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee62() { + var _encryptionParams = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee62() { return regeneratorRuntime.wrap(function _callee62$(_context63) { while (1) { switch (_context63.prev = _context63.next) { @@ -5507,7 +5710,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function encryptionParams() { - return _ref71.apply(this, arguments); + return _encryptionParams.apply(this, arguments); } return encryptionParams; @@ -5523,7 +5726,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { updated_at: item.updated_at, content: item.getContentCopy() }; - var entry = this.historySession.addEntryForItem(persistableItemParams); if (this.autoOptimize) { @@ -5538,7 +5740,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { } else { clearTimeout(this.diskTimeout); } - }; + } + + ; this.diskTimeout = this.$timeout(function () { _this15.saveToDisk(); }, 2000); @@ -5552,7 +5756,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "clearHistoryForItem", value: function () { - var _ref72 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee63(item) { + var _clearHistoryForItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee63(item) { return regeneratorRuntime.wrap(function _callee63$(_context64) { while (1) { switch (_context64.prev = _context64.next) { @@ -5568,8 +5774,8 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, _callee63, this); })); - function clearHistoryForItem(_x110) { - return _ref72.apply(this, arguments); + function clearHistoryForItem(_x103) { + return _clearHistoryForItem.apply(this, arguments); } return clearHistoryForItem; @@ -5577,7 +5783,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "clearAllHistory", value: function () { - var _ref73 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee64() { + var _clearAllHistory = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee64() { return regeneratorRuntime.wrap(function _callee64$(_context65) { while (1) { switch (_context65.prev = _context65.next) { @@ -5594,7 +5802,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function clearAllHistory() { - return _ref73.apply(this, arguments); + return _clearAllHistory.apply(this, arguments); } return clearAllHistory; @@ -5602,7 +5810,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "toggleDiskSaving", value: function () { - var _ref74 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee65() { + var _toggleDiskSaving = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee65() { return regeneratorRuntime.wrap(function _callee65$(_context66) { while (1) { switch (_context66.prev = _context66.next) { @@ -5632,7 +5842,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function toggleDiskSaving() { - return _ref74.apply(this, arguments); + return _toggleDiskSaving.apply(this, arguments); } return toggleDiskSaving; @@ -5640,7 +5850,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "saveToDisk", value: function () { - var _ref75 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee66() { + var _saveToDisk = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee66() { var _this16 = this; var encryptionParams, itemParams; @@ -5662,7 +5874,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { case 4: encryptionParams = _context67.sent; itemParams = new SFItemParams(this.historySession, encryptionParams.keys, encryptionParams.auth_params); - itemParams.paramsForSync().then(function (syncParams) { // console.log("Saving to disk", syncParams); _this16.storageManager.setItem(SessionHistoryRevisionsKey, JSON.stringify(syncParams)); @@ -5677,7 +5888,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function saveToDisk() { - return _ref75.apply(this, arguments); + return _saveToDisk.apply(this, arguments); } return saveToDisk; @@ -5685,7 +5896,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "loadFromDisk", value: function () { - var _ref76 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee67() { + var _loadFromDisk = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee67() { var diskValue, historyValue, encryptionParams, historySession, autoOptimizeValue; return regeneratorRuntime.wrap(function _callee67$(_context68) { while (1) { @@ -5723,7 +5936,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { case 14: historySession = new SFHistorySession(historyValue); - this.historySession = historySession; _context68.next = 19; break; @@ -5754,7 +5966,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function loadFromDisk() { - return _ref76.apply(this, arguments); + return _loadFromDisk.apply(this, arguments); } return loadFromDisk; @@ -5762,7 +5974,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "toggleAutoOptimize", value: function () { - var _ref77 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee68() { + var _toggleAutoOptimize = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee68() { return regeneratorRuntime.wrap(function _callee68$(_context69) { while (1) { switch (_context69.prev = _context69.next) { @@ -5784,7 +5998,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function toggleAutoOptimize() { - return _ref77.apply(this, arguments); + return _toggleAutoOptimize.apply(this, arguments); } return toggleAutoOptimize; @@ -5794,22 +6008,26 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { return SFSessionHistoryManager; }(); -; /* - The SingletonManager allows controllers to register an item as a singleton, which means only one instance of that model - should exist, both on the server and on the client. When the SingletonManager detects multiple items matching the singleton predicate, - the oldest ones will be deleted, leaving the newest ones. (See 4/28/18 update. We now choose the earliest created one as the winner.). - (This no longer fully applies, See 4/28/18 update.) We will treat the model most recently arrived from the server as the most recent one. The reason for this is, - if you're offline, a singleton can be created, as in the case of UserPreferneces. Then when you sign in, you'll retrieve your actual user preferences. - In that case, even though the offline singleton has a more recent updated_at, the server retreived value is the one we care more about. - 4/28/18: I'm seeing this issue: if you have the app open in one window, then in another window sign in, and during sign in, - click Refresh (or autorefresh occurs) in the original signed in window, then you will happen to receive from the server the newly created - Extensions singleton, and it will be mistaken (it just looks like a regular retrieved item, since nothing is in saved) for a fresh, latest copy, and replace the current instance. - This has happened to me and many users. - A puzzling issue, but what if instead of resolving singletons by choosing the one most recently modified, we choose the one with the earliest create date? - This way, we don't care when it was modified, but we always, always choose the item that was created first. This way, we always deal with the same item. - */ +exports.SFSessionHistoryManager = SFSessionHistoryManager; +; +/* + The SingletonManager allows controllers to register an item as a singleton, which means only one instance of that model + should exist, both on the server and on the client. When the SingletonManager detects multiple items matching the singleton predicate, + the oldest ones will be deleted, leaving the newest ones. (See 4/28/18 update. We now choose the earliest created one as the winner.). + (This no longer fully applies, See 4/28/18 update.) We will treat the model most recently arrived from the server as the most recent one. The reason for this is, + if you're offline, a singleton can be created, as in the case of UserPreferneces. Then when you sign in, you'll retrieve your actual user preferences. + In that case, even though the offline singleton has a more recent updated_at, the server retreived value is the one we care more about. + 4/28/18: I'm seeing this issue: if you have the app open in one window, then in another window sign in, and during sign in, + click Refresh (or autorefresh occurs) in the original signed in window, then you will happen to receive from the server the newly created + Extensions singleton, and it will be mistaken (it just looks like a regular retrieved item, since nothing is in saved) for a fresh, latest copy, and replace the current instance. + This has happened to me and many users. + A puzzling issue, but what if instead of resolving singletons by choosing the one most recently modified, we choose the one with the earliest create date? + This way, we don't care when it was modified, but we always, always choose the item that was created first. This way, we always deal with the same item. +*/ -var SFSingletonManager = exports.SFSingletonManager = function () { +var SFSingletonManager = +/*#__PURE__*/ +function () { function SFSingletonManager(modelManager, syncManager) { var _this17 = this; @@ -5817,13 +6035,12 @@ var SFSingletonManager = exports.SFSingletonManager = function () { this.syncManager = syncManager; this.modelManager = modelManager; - this.singletonHandlers = []; - - // We use sync observer instead of syncEvent `local-data-incremental-load`, because we want singletons + this.singletonHandlers = []; // We use sync observer instead of syncEvent `local-data-incremental-load`, because we want singletons // to resolve with the first priority, because they generally dictate app state. // If we used local-data-incremental-load, and 1 item was important singleton and 99 were heavy components, // then given the random nature of notifiying observers, the heavy components would spend a lot of time loading first, // here, we priortize ours loading as most important + modelManager.addItemSyncObserverWithPriority({ id: "sf-singleton-manager", types: "*", @@ -5833,63 +6050,64 @@ var SFSingletonManager = exports.SFSingletonManager = function () { if (source === SFModelManager.MappingSourceLocalDirtied) { return; } + _this17.resolveSingletons(modelManager.allNondummyItems, null, true); } }); - syncManager.addEventHandler(function (syncEvent, data) { if (syncEvent == "local-data-loaded") { _this17.resolveSingletons(modelManager.allNondummyItems, null, true); + _this17.initialDataLoaded = true; } else if (syncEvent == "sync:completed") { // Wait for initial data load before handling any sync. If we don't want for initial data load, // then the singleton resolver won't have the proper items to work with to determine whether to resolve or create. if (!_this17.initialDataLoaded) { return; - } - // The reason we also need to consider savedItems in consolidating singletons is in case of sync conflicts, + } // The reason we also need to consider savedItems in consolidating singletons is in case of sync conflicts, // a new item can be created, but is never processed through "retrievedItems" since it is only created locally then saved. - // HOWEVER, by considering savedItems, we are now ruining everything, especially during sign in. A singleton can be created // offline, and upon sign in, will sync all items to the server, and by combining retrievedItems & savedItems, and only choosing // the latest, you are now resolving to the most recent one, which is in the savedItems list and not retrieved items, defeating // the whole purpose of this thing. - // Updated solution: resolveSingletons will now evaluate both of these arrays separately. + + _this17.resolveSingletons(data.retrievedItems, data.savedItems); } }); - /* If an item alternates its uuid on registration, singletonHandlers might need to update their local reference to the object, since the object reference will change on uuid alternation */ + modelManager.addModelUuidChangeObserver("singleton-manager", function (oldModel, newModel) { - var _iteratorNormalCompletion34 = true; - var _didIteratorError34 = false; - var _iteratorError34 = undefined; + var _iteratorNormalCompletion32 = true; + var _didIteratorError32 = false; + var _iteratorError32 = undefined; try { - for (var _iterator34 = _this17.singletonHandlers[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { - var handler = _step34.value; + for (var _iterator32 = _this17.singletonHandlers[Symbol.iterator](), _step32; !(_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done); _iteratorNormalCompletion32 = true) { + var handler = _step32.value; if (handler.singleton && SFPredicate.ItemSatisfiesPredicates(newModel, handler.predicates)) { // Reference is now invalid, calling resolveSingleton should update it handler.singleton = null; + _this17.resolveSingletons([newModel]); } } } catch (err) { - _didIteratorError34 = true; - _iteratorError34 = err; + _didIteratorError32 = true; + _iteratorError32 = err; } finally { try { - if (!_iteratorNormalCompletion34 && _iterator34.return) { - _iterator34.return(); + if (!_iteratorNormalCompletion32 && _iterator32["return"] != null) { + _iterator32["return"](); } } finally { - if (_didIteratorError34) { - throw _iteratorError34; + if (_didIteratorError32) { + throw _iteratorError32; } } } @@ -5917,135 +6135,133 @@ var SFSingletonManager = exports.SFSingletonManager = function () { retrievedItems = retrievedItems || []; savedItems = savedItems || []; + var _iteratorNormalCompletion33 = true; + var _didIteratorError33 = false; + var _iteratorError33 = undefined; - var _loop3 = function _loop3(singletonHandler) { - var predicates = singletonHandler.predicates.slice(); - var retrievedSingletonItems = _this18.modelManager.filterItemsWithPredicates(retrievedItems, predicates); + try { + var _loop3 = function _loop3() { + var singletonHandler = _step33.value; + var predicates = singletonHandler.predicates.slice(); - var handleCreation = function handleCreation() { - if (singletonHandler.createBlock) { - singletonHandler.pendingCreateBlockCallback = true; - singletonHandler.createBlock(function (created) { - singletonHandler.singleton = created; - singletonHandler.pendingCreateBlockCallback = false; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(created); - }); + var retrievedSingletonItems = _this18.modelManager.filterItemsWithPredicates(retrievedItems, predicates); + + var handleCreation = function handleCreation() { + if (singletonHandler.createBlock) { + singletonHandler.pendingCreateBlockCallback = true; + singletonHandler.createBlock(function (created) { + singletonHandler.singleton = created; + singletonHandler.pendingCreateBlockCallback = false; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(created); + }); + } + }; // We only want to consider saved items count to see if it's more than 0, and do nothing else with it. + // This way we know there was some action and things need to be resolved. The saved items will come up + // in filterItemsWithPredicate(this.modelManager.allNondummyItems) and be deleted anyway + + + var savedSingletonItemsCount = _this18.modelManager.filterItemsWithPredicates(savedItems, predicates).length; + + if (retrievedSingletonItems.length > 0 || savedSingletonItemsCount > 0) { + /* + Check local inventory and make sure only 1 similar item exists. If more than 1, delete newest + Note that this local inventory will also contain whatever is in retrievedItems. + */ + var allExtantItemsMatchingPredicate = _this18.modelManager.itemsMatchingPredicates(predicates); + /* + Delete all but the earliest created + */ + + + if (allExtantItemsMatchingPredicate.length >= 2) { + var sorted = allExtantItemsMatchingPredicate.sort(function (a, b) { + /* + If compareFunction(a, b) is less than 0, sort a to an index lower than b, i.e. a comes first. + If compareFunction(a, b) is greater than 0, sort b to an index lower than a, i.e. b comes first. + */ + if (a.errorDecrypting) { + return 1; + } + + if (b.errorDecrypting) { + return -1; + } + + return a.created_at < b.created_at ? -1 : 1; + }); // The item that will be chosen to be kept + + var winningItem = sorted[0]; // Items that will be deleted + // Delete everything but the first one + + var toDelete = sorted.slice(1, sorted.length); + var _iteratorNormalCompletion34 = true; + var _didIteratorError34 = false; + var _iteratorError34 = undefined; + + try { + for (var _iterator34 = toDelete[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { + var d = _step34.value; + + _this18.modelManager.setItemToBeDeleted(d); + } + } catch (err) { + _didIteratorError34 = true; + _iteratorError34 = err; + } finally { + try { + if (!_iteratorNormalCompletion34 && _iterator34["return"] != null) { + _iterator34["return"](); + } + } finally { + if (_didIteratorError34) { + throw _iteratorError34; + } + } + } + + _this18.syncManager.sync(); // Send remaining item to callback + + + singletonHandler.singleton = winningItem; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(winningItem); + } else if (allExtantItemsMatchingPredicate.length == 1) { + var singleton = allExtantItemsMatchingPredicate[0]; + + if (singleton.errorDecrypting) { + // Delete the current singleton and create a new one + _this18.modelManager.setItemToBeDeleted(singleton); + + handleCreation(); + } else if (!singletonHandler.singleton || singletonHandler.singleton !== singleton) { + // Not yet notified interested parties of object + singletonHandler.singleton = singleton; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(singleton); + } + } + } else { + // Retrieved items does not include any items of interest. If we don't have a singleton registered to this handler, + // we need to create one. Only do this on actual sync completetions and not on initial data load. Because we want + // to get the latest from the server before making the decision to create a new item + if (!singletonHandler.singleton && !initialLoad && !singletonHandler.pendingCreateBlockCallback) { + handleCreation(); + } } }; - // We only want to consider saved items count to see if it's more than 0, and do nothing else with it. - // This way we know there was some action and things need to be resolved. The saved items will come up - // in filterItemsWithPredicate(this.modelManager.allNondummyItems) and be deleted anyway - var savedSingletonItemsCount = _this18.modelManager.filterItemsWithPredicates(savedItems, predicates).length; - - if (retrievedSingletonItems.length > 0 || savedSingletonItemsCount > 0) { - /* - Check local inventory and make sure only 1 similar item exists. If more than 1, delete newest - Note that this local inventory will also contain whatever is in retrievedItems. - */ - var allExtantItemsMatchingPredicate = _this18.modelManager.itemsMatchingPredicates(predicates); - - /* - Delete all but the earliest created - */ - if (allExtantItemsMatchingPredicate.length >= 2) { - var sorted = allExtantItemsMatchingPredicate.sort(function (a, b) { - /* - If compareFunction(a, b) is less than 0, sort a to an index lower than b, i.e. a comes first. - If compareFunction(a, b) is greater than 0, sort b to an index lower than a, i.e. b comes first. - */ - - if (a.errorDecrypting) { - return 1; - } - - if (b.errorDecrypting) { - return -1; - } - - return a.created_at < b.created_at ? -1 : 1; - }); - - // The item that will be chosen to be kept - var winningItem = sorted[0]; - - // Items that will be deleted - // Delete everything but the first one - var toDelete = sorted.slice(1, sorted.length); - - var _iteratorNormalCompletion36 = true; - var _didIteratorError36 = false; - var _iteratorError36 = undefined; - - try { - for (var _iterator36 = toDelete[Symbol.iterator](), _step36; !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { - var d = _step36.value; - - _this18.modelManager.setItemToBeDeleted(d); - } - } catch (err) { - _didIteratorError36 = true; - _iteratorError36 = err; - } finally { - try { - if (!_iteratorNormalCompletion36 && _iterator36.return) { - _iterator36.return(); - } - } finally { - if (_didIteratorError36) { - throw _iteratorError36; - } - } - } - - _this18.syncManager.sync(); - - // Send remaining item to callback - singletonHandler.singleton = winningItem; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(winningItem); - } else if (allExtantItemsMatchingPredicate.length == 1) { - var singleton = allExtantItemsMatchingPredicate[0]; - if (singleton.errorDecrypting) { - // Delete the current singleton and create a new one - _this18.modelManager.setItemToBeDeleted(singleton); - handleCreation(); - } else if (!singletonHandler.singleton || singletonHandler.singleton !== singleton) { - // Not yet notified interested parties of object - singletonHandler.singleton = singleton; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(singleton); - } - } - } else { - // Retrieved items does not include any items of interest. If we don't have a singleton registered to this handler, - // we need to create one. Only do this on actual sync completetions and not on initial data load. Because we want - // to get the latest from the server before making the decision to create a new item - if (!singletonHandler.singleton && !initialLoad && !singletonHandler.pendingCreateBlockCallback) { - handleCreation(); - } - } - }; - - var _iteratorNormalCompletion35 = true; - var _didIteratorError35 = false; - var _iteratorError35 = undefined; - - try { - for (var _iterator35 = this.singletonHandlers[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { - var singletonHandler = _step35.value; - - _loop3(singletonHandler); + for (var _iterator33 = this.singletonHandlers[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { + _loop3(); } } catch (err) { - _didIteratorError35 = true; - _iteratorError35 = err; + _didIteratorError33 = true; + _iteratorError33 = err; } finally { try { - if (!_iteratorNormalCompletion35 && _iterator35.return) { - _iterator35.return(); + if (!_iteratorNormalCompletion33 && _iterator33["return"] != null) { + _iterator33["return"](); } } finally { - if (_didIteratorError35) { - throw _iteratorError35; + if (_didIteratorError33) { + throw _iteratorError33; } } } @@ -6055,9 +6271,12 @@ var SFSingletonManager = exports.SFSingletonManager = function () { return SFSingletonManager; }(); +exports.SFSingletonManager = SFSingletonManager; ; // SFStorageManager should be subclassed, and all the methods below overwritten. -var SFStorageManager = exports.SFStorageManager = function () { +var SFStorageManager = +/*#__PURE__*/ +function () { function SFStorageManager() { _classCallCheck(this, SFStorageManager); } @@ -6065,11 +6284,11 @@ var SFStorageManager = exports.SFStorageManager = function () { _createClass(SFStorageManager, [{ key: "setItem", - /* Simple Key/Value Storage */ - value: function () { - var _ref78 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee69(key, value) { + var _setItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee69(key, value) { return regeneratorRuntime.wrap(function _callee69$(_context70) { while (1) { switch (_context70.prev = _context70.next) { @@ -6078,11 +6297,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context70.stop(); } } - }, _callee69, this); + }, _callee69); })); - function setItem(_x111, _x112) { - return _ref78.apply(this, arguments); + function setItem(_x104, _x105) { + return _setItem.apply(this, arguments); } return setItem; @@ -6090,7 +6309,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "getItem", value: function () { - var _ref79 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee70(key) { + var _getItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee70(key) { return regeneratorRuntime.wrap(function _callee70$(_context71) { while (1) { switch (_context71.prev = _context71.next) { @@ -6099,11 +6320,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context71.stop(); } } - }, _callee70, this); + }, _callee70); })); - function getItem(_x113) { - return _ref79.apply(this, arguments); + function getItem(_x106) { + return _getItem.apply(this, arguments); } return getItem; @@ -6111,7 +6332,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "removeItem", value: function () { - var _ref80 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee71(key) { + var _removeItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee71(key) { return regeneratorRuntime.wrap(function _callee71$(_context72) { while (1) { switch (_context72.prev = _context72.next) { @@ -6120,11 +6343,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context72.stop(); } } - }, _callee71, this); + }, _callee71); })); - function removeItem(_x114) { - return _ref80.apply(this, arguments); + function removeItem(_x107) { + return _removeItem.apply(this, arguments); } return removeItem; @@ -6132,7 +6355,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clear", value: function () { - var _ref81 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee72() { + var _clear = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee72() { return regeneratorRuntime.wrap(function _callee72$(_context73) { while (1) { switch (_context73.prev = _context73.next) { @@ -6141,11 +6366,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context73.stop(); } } - }, _callee72, this); + }, _callee72); })); function clear() { - return _ref81.apply(this, arguments); + return _clear.apply(this, arguments); } return clear; @@ -6153,13 +6378,13 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "getAllModels", - /* Model Storage */ - value: function () { - var _ref82 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee73() { + var _getAllModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee73() { return regeneratorRuntime.wrap(function _callee73$(_context74) { while (1) { switch (_context74.prev = _context74.next) { @@ -6168,11 +6393,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context74.stop(); } } - }, _callee73, this); + }, _callee73); })); function getAllModels() { - return _ref82.apply(this, arguments); + return _getAllModels.apply(this, arguments); } return getAllModels; @@ -6180,7 +6405,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "saveModel", value: function () { - var _ref83 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee74(item) { + var _saveModel = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee74(item) { return regeneratorRuntime.wrap(function _callee74$(_context75) { while (1) { switch (_context75.prev = _context75.next) { @@ -6195,8 +6422,8 @@ var SFStorageManager = exports.SFStorageManager = function () { }, _callee74, this); })); - function saveModel(_x115) { - return _ref83.apply(this, arguments); + function saveModel(_x108) { + return _saveModel.apply(this, arguments); } return saveModel; @@ -6204,7 +6431,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "saveModels", value: function () { - var _ref84 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee75(items) { + var _saveModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee75(items) { return regeneratorRuntime.wrap(function _callee75$(_context76) { while (1) { switch (_context76.prev = _context76.next) { @@ -6213,11 +6442,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context76.stop(); } } - }, _callee75, this); + }, _callee75); })); - function saveModels(_x116) { - return _ref84.apply(this, arguments); + function saveModels(_x109) { + return _saveModels.apply(this, arguments); } return saveModels; @@ -6225,7 +6454,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "deleteModel", value: function () { - var _ref85 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee76(item) { + var _deleteModel = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee76(item) { return regeneratorRuntime.wrap(function _callee76$(_context77) { while (1) { switch (_context77.prev = _context77.next) { @@ -6234,11 +6465,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context77.stop(); } } - }, _callee76, this); + }, _callee76); })); - function deleteModel(_x117) { - return _ref85.apply(this, arguments); + function deleteModel(_x110) { + return _deleteModel.apply(this, arguments); } return deleteModel; @@ -6246,7 +6477,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clearAllModels", value: function () { - var _ref86 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee77() { + var _clearAllModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee77() { return regeneratorRuntime.wrap(function _callee77$(_context78) { while (1) { switch (_context78.prev = _context78.next) { @@ -6255,11 +6488,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context78.stop(); } } - }, _callee77, this); + }, _callee77); })); function clearAllModels() { - return _ref86.apply(this, arguments); + return _clearAllModels.apply(this, arguments); } return clearAllModels; @@ -6267,11 +6500,11 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clearAllData", - /* General */ - value: function () { - var _ref87 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee78() { + var _clearAllData = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee78() { return regeneratorRuntime.wrap(function _callee78$(_context79) { while (1) { switch (_context79.prev = _context79.next) { @@ -6287,7 +6520,7 @@ var SFStorageManager = exports.SFStorageManager = function () { })); function clearAllData() { - return _ref87.apply(this, arguments); + return _clearAllData.apply(this, arguments); } return clearAllData; @@ -6297,41 +6530,37 @@ var SFStorageManager = exports.SFStorageManager = function () { return SFStorageManager; }(); +exports.SFStorageManager = SFStorageManager; ; -var SFSyncManager = exports.SFSyncManager = function () { + +var SFSyncManager = +/*#__PURE__*/ +function () { function SFSyncManager(modelManager, storageManager, httpManager, timeout, interval) { _classCallCheck(this, SFSyncManager); SFSyncManager.KeyRequestLoadLocal = "KeyRequestLoadLocal"; SFSyncManager.KeyRequestSaveLocal = "KeyRequestSaveLocal"; SFSyncManager.KeyRequestLoadSaveAccount = "KeyRequestLoadSaveAccount"; - this.httpManager = httpManager; this.modelManager = modelManager; - this.storageManager = storageManager; + this.storageManager = storageManager; // Allows you to set your own interval/timeout function (i.e if you're using angular and want to use $timeout) - // Allows you to set your own interval/timeout function (i.e if you're using angular and want to use $timeout) this.$interval = interval || setInterval.bind(window); this.$timeout = timeout || setTimeout.bind(window); - this.syncStatus = {}; this.syncStatusObservers = []; - this.eventHandlers = []; - - // this.loggingEnabled = true; + this.eventHandlers = []; // this.loggingEnabled = true; this.PerSyncItemUploadLimit = 150; - this.ServerItemDownloadLimit = 150; - - // The number of changed items that constitute a major change + this.ServerItemDownloadLimit = 150; // The number of changed items that constitute a major change // This is used by the desktop app to create backups - this.MajorDataChangeThreshold = 15; - // Sync integrity checking + this.MajorDataChangeThreshold = 15; // Sync integrity checking // If X consective sync requests return mismatching hashes, then we officially enter out-of-sync. - this.MaxDiscordanceBeforeOutOfSync = 5; - // How many consective sync results have had mismatching hashes. This value can never exceed this.MaxDiscordanceBeforeOutOfSync. + this.MaxDiscordanceBeforeOutOfSync = 5; // How many consective sync results have had mismatching hashes. This value can never exceed this.MaxDiscordanceBeforeOutOfSync. + this.syncDiscordance = 0; this.outOfSync = false; } @@ -6339,7 +6568,9 @@ var SFSyncManager = exports.SFSyncManager = function () { _createClass(SFSyncManager, [{ key: "handleServerIntegrityHash", value: function () { - var _ref88 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee79(serverHash) { + var _handleServerIntegrityHash = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee79(serverHash) { var localHash; return regeneratorRuntime.wrap(function _callee79$(_context80) { while (1) { @@ -6373,12 +6604,14 @@ var SFSyncManager = exports.SFSyncManager = function () { } this.syncDiscordance++; + if (this.syncDiscordance >= this.MaxDiscordanceBeforeOutOfSync) { if (!this.outOfSync) { this.outOfSync = true; this.notifyEvent("enter-out-of-sync"); } } + return _context80.abrupt("return", false); case 13: @@ -6387,6 +6620,7 @@ var SFSyncManager = exports.SFSyncManager = function () { this.outOfSync = false; this.notifyEvent("exit-out-of-sync"); } + this.syncDiscordance = 0; return _context80.abrupt("return", true); @@ -6398,8 +6632,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee79, this); })); - function handleServerIntegrityHash(_x118) { - return _ref88.apply(this, arguments); + function handleServerIntegrityHash(_x111) { + return _handleServerIntegrityHash.apply(this, arguments); } return handleServerIntegrityHash; @@ -6414,7 +6648,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getServerURL", value: function () { - var _ref89 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee80() { + var _getServerURL = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee80() { return regeneratorRuntime.wrap(function _callee80$(_context81) { while (1) { switch (_context81.prev = _context81.next) { @@ -6444,7 +6680,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getServerURL() { - return _ref89.apply(this, arguments); + return _getServerURL.apply(this, arguments); } return getServerURL; @@ -6452,7 +6688,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getSyncURL", value: function () { - var _ref90 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee81() { + var _getSyncURL = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee81() { return regeneratorRuntime.wrap(function _callee81$(_context82) { while (1) { switch (_context82.prev = _context82.next) { @@ -6473,7 +6711,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getSyncURL() { - return _ref90.apply(this, arguments); + return _getSyncURL.apply(this, arguments); } return getSyncURL; @@ -6481,7 +6719,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "registerSyncStatusObserver", value: function registerSyncStatusObserver(callback) { - var observer = { key: new Date(), callback: callback }; + var observer = { + key: new Date(), + callback: callback + }; this.syncStatusObservers.push(observer); return observer; } @@ -6524,27 +6765,26 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "notifyEvent", value: function notifyEvent(syncEvent, data) { - var _iteratorNormalCompletion37 = true; - var _didIteratorError37 = false; - var _iteratorError37 = undefined; + var _iteratorNormalCompletion35 = true; + var _didIteratorError35 = false; + var _iteratorError35 = undefined; try { - for (var _iterator37 = this.eventHandlers[Symbol.iterator](), _step37; !(_iteratorNormalCompletion37 = (_step37 = _iterator37.next()).done); _iteratorNormalCompletion37 = true) { - var handler = _step37.value; - + for (var _iterator35 = this.eventHandlers[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { + var handler = _step35.value; handler(syncEvent, data || {}); } } catch (err) { - _didIteratorError37 = true; - _iteratorError37 = err; + _didIteratorError35 = true; + _iteratorError35 = err; } finally { try { - if (!_iteratorNormalCompletion37 && _iterator37.return) { - _iterator37.return(); + if (!_iteratorNormalCompletion35 && _iterator35["return"] != null) { + _iterator35["return"](); } } finally { - if (_didIteratorError37) { - throw _iteratorError37; + if (_didIteratorError35) { + throw _iteratorError35; } } } @@ -6557,7 +6797,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getActiveKeyInfo", value: function () { - var _ref91 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee82(request) { + var _getActiveKeyInfo = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee82(request) { return regeneratorRuntime.wrap(function _callee82$(_context83) { while (1) { switch (_context83.prev = _context83.next) { @@ -6572,8 +6814,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee82, this); })); - function getActiveKeyInfo(_x119) { - return _ref91.apply(this, arguments); + function getActiveKeyInfo(_x112) { + return _getActiveKeyInfo.apply(this, arguments); } return getActiveKeyInfo; @@ -6590,17 +6832,19 @@ var SFSyncManager = exports.SFSyncManager = function () { return items.sort(function (a, b) { var dateResult = new Date(b.updated_at) - new Date(a.updated_at); - var priorityList = _this20.contentTypeLoadPriority; var aPriority = 0, bPriority = 0; + if (priorityList) { aPriority = priorityList.indexOf(a.content_type); bPriority = priorityList.indexOf(b.content_type); + if (aPriority == -1) { // Not found in list, not prioritized. Set it to max value aPriority = priorityList.length; } + if (bPriority == -1) { // Not found in list, not prioritized. Set it to max value bPriority = priorityList.length; @@ -6615,72 +6859,79 @@ var SFSyncManager = exports.SFSyncManager = function () { return -1; } else { return 1; - } + } // aPriority < bPriority means a should come first + - // aPriority < bPriority means a should come first return aPriority < bPriority ? -1 : 1; }); } }, { key: "loadLocalItems", value: function () { - var _ref92 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee84() { + var _loadLocalItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee84() { var _this21 = this; - var _ref93 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - incrementalCallback = _ref93.incrementalCallback, - batchSize = _ref93.batchSize, - options = _ref93.options; + var _ref17, + incrementalCallback, + batchSize, + options, + latency, + _args85 = arguments; - var latency; return regeneratorRuntime.wrap(function _callee84$(_context85) { while (1) { switch (_context85.prev = _context85.next) { case 0: + _ref17 = _args85.length > 0 && _args85[0] !== undefined ? _args85[0] : {}, incrementalCallback = _ref17.incrementalCallback, batchSize = _ref17.batchSize, options = _ref17.options; + if (!(options && options.simulateHighLatency)) { - _context85.next = 4; + _context85.next = 5; break; } latency = options.simulatedLatency || 1000; - _context85.next = 4; + _context85.next = 5; return this._awaitSleep(latency); - case 4: + case 5: if (!this.loadLocalDataPromise) { - _context85.next = 6; + _context85.next = 7; break; } return _context85.abrupt("return", this.loadLocalDataPromise); - case 6: - + case 7: if (!batchSize) { batchSize = 100; } this.loadLocalDataPromise = this.storageManager.getAllModels().then(function (items) { // put most recently updated at beginning, sorted by priority - items = _this21._sortLocalItems(items); + items = _this21._sortLocalItems(items); // Filter out any items that exist in the local model mapping and have a lower dirtied date than the local dirtiedDate. - // Filter out any items that exist in the local model mapping and have a lower dirtied date than the local dirtiedDate. items = items.filter(function (nonDecryptedItem) { var localItem = _this21.modelManager.findItem(nonDecryptedItem.uuid); + if (!localItem) { return true; } return new Date(nonDecryptedItem.dirtiedDate) > localItem.dirtiedDate; - }); + }); // break it up into chunks to make interface more responsive for large item counts - // break it up into chunks to make interface more responsive for large item counts var total = items.length; var current = 0; var processed = []; - var decryptNext = function () { - var _ref94 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee83() { + var decryptNext = + /*#__PURE__*/ + function () { + var _ref18 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee83() { var subitems, processedSubitems; return regeneratorRuntime.wrap(function _callee83$(_context84) { while (1) { @@ -6692,9 +6943,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 3: processedSubitems = _context84.sent; - processed.push(processedSubitems); - current += subitems.length; if (!(current < total)) { @@ -6705,6 +6954,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context84.abrupt("return", new Promise(function (innerResolve, innerReject) { _this21.$timeout(function () { _this21.notifyEvent("local-data-incremental-load"); + incrementalCallback && incrementalCallback(current, total); decryptNext().then(innerResolve); }); @@ -6713,6 +6963,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 10: // Completed _this21._initialDataLoaded = true; + _this21.notifyEvent("local-data-loaded"); case 12: @@ -6720,20 +6971,19 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context84.stop(); } } - }, _callee83, _this21); + }, _callee83); })); return function decryptNext() { - return _ref94.apply(this, arguments); + return _ref18.apply(this, arguments); }; }(); return decryptNext(); }); - return _context85.abrupt("return", this.loadLocalDataPromise); - case 9: + case 10: case "end": return _context85.stop(); } @@ -6742,7 +6992,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function loadLocalItems() { - return _ref92.apply(this, arguments); + return _loadLocalItems.apply(this, arguments); } return loadLocalItems; @@ -6750,7 +7000,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "writeItemsToLocalStorage", value: function () { - var _ref95 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee88(items, offlineOnly) { + var _writeItemsToLocalStorage = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee88(items, offlineOnly) { var _this22 = this; return regeneratorRuntime.wrap(function _callee88$(_context89) { @@ -6765,22 +7017,26 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context89.abrupt("return"); case 2: - return _context89.abrupt("return", new Promise(function () { - var _ref96 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee87(resolve, reject) { - var nonDeletedItems, deletedItems, _iteratorNormalCompletion38, _didIteratorError38, _iteratorError38, _iterator38, _step38, item, info, params; + return _context89.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref19 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee87(resolve, reject) { + var nonDeletedItems, deletedItems, _iteratorNormalCompletion36, _didIteratorError36, _iteratorError36, _iterator36, _step36, item, info, params; return regeneratorRuntime.wrap(function _callee87$(_context88) { while (1) { switch (_context88.prev = _context88.next) { case 0: nonDeletedItems = [], deletedItems = []; - _iteratorNormalCompletion38 = true; - _didIteratorError38 = false; - _iteratorError38 = undefined; + _iteratorNormalCompletion36 = true; + _didIteratorError36 = false; + _iteratorError36 = undefined; _context88.prev = 4; - for (_iterator38 = items[Symbol.iterator](); !(_iteratorNormalCompletion38 = (_step38 = _iterator38.next()).done); _iteratorNormalCompletion38 = true) { - item = _step38.value; + for (_iterator36 = items[Symbol.iterator](); !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { + item = _step36.value; // if the item is deleted and dirty it means we still need to sync it. if (item.deleted === true && !item.dirty) { @@ -6796,26 +7052,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 8: _context88.prev = 8; _context88.t0 = _context88["catch"](4); - _didIteratorError38 = true; - _iteratorError38 = _context88.t0; + _didIteratorError36 = true; + _iteratorError36 = _context88.t0; case 12: _context88.prev = 12; _context88.prev = 13; - if (!_iteratorNormalCompletion38 && _iterator38.return) { - _iterator38.return(); + if (!_iteratorNormalCompletion36 && _iterator36["return"] != null) { + _iterator36["return"](); } case 15: _context88.prev = 15; - if (!_didIteratorError38) { + if (!_didIteratorError36) { _context88.next = 18; break; } - throw _iteratorError38; + throw _iteratorError36; case 18: return _context88.finish(15); @@ -6830,8 +7086,12 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context88.next = 23; - return Promise.all(deletedItems.map(function () { - var _ref97 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee85(deletedItem) { + return Promise.all(deletedItems.map( + /*#__PURE__*/ + function () { + var _ref20 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee85(deletedItem) { return regeneratorRuntime.wrap(function _callee85$(_context86) { while (1) { switch (_context86.prev = _context86.next) { @@ -6843,11 +7103,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context86.stop(); } } - }, _callee85, _this22); + }, _callee85); })); - return function (_x125) { - return _ref97.apply(this, arguments); + return function (_x117) { + return _ref20.apply(this, arguments); }; }())); @@ -6864,8 +7124,12 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context88.next = 29; - return Promise.all(nonDeletedItems.map(function () { - var _ref98 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee86(item) { + return Promise.all(nonDeletedItems.map( + /*#__PURE__*/ + function () { + var _ref21 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee86(item) { var itemParams; return regeneratorRuntime.wrap(function _callee86$(_context87) { while (1) { @@ -6881,6 +7145,7 @@ var SFSyncManager = exports.SFSyncManager = function () { if (offlineOnly) { delete itemParams.dirty; } + return _context87.abrupt("return", itemParams); case 6: @@ -6888,31 +7153,33 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context87.stop(); } } - }, _callee86, _this22); + }, _callee86); })); - return function (_x126) { - return _ref98.apply(this, arguments); + return function (_x118) { + return _ref21.apply(this, arguments); }; - }())).catch(function (e) { + }()))["catch"](function (e) { return reject(e); }); case 29: params = _context88.sent; _context88.next = 32; - return _this22.storageManager.saveModels(params).catch(function (error) { + return _this22.storageManager.saveModels(params)["catch"](function (error) { console.error("Error writing items", error); _this22.syncStatus.localError = error; + _this22.syncStatusDidChange(); + reject(); }); case 32: - // on success if (_this22.syncStatus.localError) { _this22.syncStatus.localError = null; + _this22.syncStatusDidChange(); } @@ -6924,11 +7191,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context88.stop(); } } - }, _callee87, _this22, [[4, 8, 12, 20], [13,, 15, 19]]); + }, _callee87, null, [[4, 8, 12, 20], [13,, 15, 19]]); })); - return function (_x123, _x124) { - return _ref96.apply(this, arguments); + return function (_x115, _x116) { + return _ref19.apply(this, arguments); }; }())); @@ -6937,11 +7204,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context89.stop(); } } - }, _callee88, this); + }, _callee88); })); - function writeItemsToLocalStorage(_x121, _x122) { - return _ref95.apply(this, arguments); + function writeItemsToLocalStorage(_x113, _x114) { + return _writeItemsToLocalStorage.apply(this, arguments); } return writeItemsToLocalStorage; @@ -6949,50 +7216,54 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "syncOffline", value: function () { - var _ref99 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee89(items) { + var _syncOffline = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee89(items) { var _this23 = this; - var _iteratorNormalCompletion39, _didIteratorError39, _iteratorError39, _iterator39, _step39, item; + var _iteratorNormalCompletion37, _didIteratorError37, _iteratorError37, _iterator37, _step37, item; return regeneratorRuntime.wrap(function _callee89$(_context90) { while (1) { switch (_context90.prev = _context90.next) { case 0: // Update all items updated_at to now - _iteratorNormalCompletion39 = true; - _didIteratorError39 = false; - _iteratorError39 = undefined; + _iteratorNormalCompletion37 = true; + _didIteratorError37 = false; + _iteratorError37 = undefined; _context90.prev = 3; - for (_iterator39 = items[Symbol.iterator](); !(_iteratorNormalCompletion39 = (_step39 = _iterator39.next()).done); _iteratorNormalCompletion39 = true) { - item = _step39.value; + + for (_iterator37 = items[Symbol.iterator](); !(_iteratorNormalCompletion37 = (_step37 = _iterator37.next()).done); _iteratorNormalCompletion37 = true) { + item = _step37.value; item.updated_at = new Date(); } + _context90.next = 11; break; case 7: _context90.prev = 7; _context90.t0 = _context90["catch"](3); - _didIteratorError39 = true; - _iteratorError39 = _context90.t0; + _didIteratorError37 = true; + _iteratorError37 = _context90.t0; case 11: _context90.prev = 11; _context90.prev = 12; - if (!_iteratorNormalCompletion39 && _iterator39.return) { - _iterator39.return(); + if (!_iteratorNormalCompletion37 && _iterator37["return"] != null) { + _iterator37["return"](); } case 14: _context90.prev = 14; - if (!_didIteratorError39) { + if (!_didIteratorError37) { _context90.next = 17; break; } - throw _iteratorError39; + throw _iteratorError37; case 17: return _context90.finish(14); @@ -7003,39 +7274,45 @@ var SFSyncManager = exports.SFSyncManager = function () { case 19: return _context90.abrupt("return", this.writeItemsToLocalStorage(items, true).then(function (responseItems) { // delete anything needing to be deleted - var _iteratorNormalCompletion40 = true; - var _didIteratorError40 = false; - var _iteratorError40 = undefined; + var _iteratorNormalCompletion38 = true; + var _didIteratorError38 = false; + var _iteratorError38 = undefined; try { - for (var _iterator40 = items[Symbol.iterator](), _step40; !(_iteratorNormalCompletion40 = (_step40 = _iterator40.next()).done); _iteratorNormalCompletion40 = true) { - var _item = _step40.value; + for (var _iterator38 = items[Symbol.iterator](), _step38; !(_iteratorNormalCompletion38 = (_step38 = _iterator38.next()).done); _iteratorNormalCompletion38 = true) { + var item = _step38.value; - if (_item.deleted) { - _this23.modelManager.removeItemLocally(_item); + if (item.deleted) { + _this23.modelManager.removeItemLocally(item); } } } catch (err) { - _didIteratorError40 = true; - _iteratorError40 = err; + _didIteratorError38 = true; + _iteratorError38 = err; } finally { try { - if (!_iteratorNormalCompletion40 && _iterator40.return) { - _iterator40.return(); + if (!_iteratorNormalCompletion38 && _iterator38["return"] != null) { + _iterator38["return"](); } } finally { - if (_didIteratorError40) { - throw _iteratorError40; + if (_didIteratorError38) { + throw _iteratorError38; } } } - _this23.modelManager.clearDirtyItems(items); - // Required in order for modelManager to notify sync observers + _this23.modelManager.clearDirtyItems(items); // Required in order for modelManager to notify sync observers + + _this23.modelManager.didSyncModelsOffline(items); - _this23.notifyEvent("sync:completed", { savedItems: items }); - return { saved_items: items }; + _this23.notifyEvent("sync:completed", { + savedItems: items + }); + + return { + saved_items: items + }; })); case 20: @@ -7046,13 +7323,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee89, this, [[3, 7, 11, 19], [12,, 14, 18]]); })); - function syncOffline(_x127) { - return _ref99.apply(this, arguments); + function syncOffline(_x119) { + return _syncOffline.apply(this, arguments); } return syncOffline; }() - /* In the case of signing in and merging local data, we alternative UUIDs to avoid overwriting data a user may retrieve that has the same UUID. @@ -7062,8 +7338,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "markAllItemsDirtyAndSaveOffline", value: function () { - var _ref100 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee90(alternateUUIDs) { - var originalItems, _iteratorNormalCompletion41, _didIteratorError41, _iteratorError41, _iterator41, _step41, item, allItems, _iteratorNormalCompletion42, _didIteratorError42, _iteratorError42, _iterator42, _step42, _item2; + var _markAllItemsDirtyAndSaveOffline = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee90(alternateUUIDs) { + var originalItems, _iteratorNormalCompletion39, _didIteratorError39, _iteratorError39, _iterator39, _step39, item, allItems, _iteratorNormalCompletion40, _didIteratorError40, _iteratorError40, _iterator40, _step40, _item; return regeneratorRuntime.wrap(function _callee90$(_context91) { while (1) { @@ -7078,24 +7356,24 @@ var SFSyncManager = exports.SFSyncManager = function () { originalItems = this.modelManager.allNondummyItems.filter(function (item) { return !item.errorDecrypting; }).slice(); - _iteratorNormalCompletion41 = true; - _didIteratorError41 = false; - _iteratorError41 = undefined; + _iteratorNormalCompletion39 = true; + _didIteratorError39 = false; + _iteratorError39 = undefined; _context91.prev = 5; - _iterator41 = originalItems[Symbol.iterator](); + _iterator39 = originalItems[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion41 = (_step41 = _iterator41.next()).done) { + if (_iteratorNormalCompletion39 = (_step39 = _iterator39.next()).done) { _context91.next = 14; break; } - item = _step41.value; + item = _step39.value; _context91.next = 11; return this.modelManager.alternateUUIDForItem(item); case 11: - _iteratorNormalCompletion41 = true; + _iteratorNormalCompletion39 = true; _context91.next = 7; break; @@ -7106,26 +7384,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 16: _context91.prev = 16; _context91.t0 = _context91["catch"](5); - _didIteratorError41 = true; - _iteratorError41 = _context91.t0; + _didIteratorError39 = true; + _iteratorError39 = _context91.t0; case 20: _context91.prev = 20; _context91.prev = 21; - if (!_iteratorNormalCompletion41 && _iterator41.return) { - _iterator41.return(); + if (!_iteratorNormalCompletion39 && _iterator39["return"] != null) { + _iterator39["return"](); } case 23: _context91.prev = 23; - if (!_didIteratorError41) { + if (!_didIteratorError39) { _context91.next = 26; break; } - throw _iteratorError41; + throw _iteratorError39; case 26: return _context91.finish(23); @@ -7135,41 +7413,43 @@ var SFSyncManager = exports.SFSyncManager = function () { case 28: allItems = this.modelManager.allNondummyItems; - _iteratorNormalCompletion42 = true; - _didIteratorError42 = false; - _iteratorError42 = undefined; + _iteratorNormalCompletion40 = true; + _didIteratorError40 = false; + _iteratorError40 = undefined; _context91.prev = 32; - for (_iterator42 = allItems[Symbol.iterator](); !(_iteratorNormalCompletion42 = (_step42 = _iterator42.next()).done); _iteratorNormalCompletion42 = true) { - _item2 = _step42.value; - _item2.setDirty(true); + for (_iterator40 = allItems[Symbol.iterator](); !(_iteratorNormalCompletion40 = (_step40 = _iterator40.next()).done); _iteratorNormalCompletion40 = true) { + _item = _step40.value; + + _item.setDirty(true); } + _context91.next = 40; break; case 36: _context91.prev = 36; _context91.t1 = _context91["catch"](32); - _didIteratorError42 = true; - _iteratorError42 = _context91.t1; + _didIteratorError40 = true; + _iteratorError40 = _context91.t1; case 40: _context91.prev = 40; _context91.prev = 41; - if (!_iteratorNormalCompletion42 && _iterator42.return) { - _iterator42.return(); + if (!_iteratorNormalCompletion40 && _iterator40["return"] != null) { + _iterator40["return"](); } case 43: _context91.prev = 43; - if (!_didIteratorError42) { + if (!_didIteratorError40) { _context91.next = 46; break; } - throw _iteratorError42; + throw _iteratorError40; case 46: return _context91.finish(43); @@ -7188,8 +7468,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee90, this, [[5, 16, 20, 28], [21,, 23, 27], [32, 36, 40, 48], [41,, 43, 47]]); })); - function markAllItemsDirtyAndSaveOffline(_x128) { - return _ref100.apply(this, arguments); + function markAllItemsDirtyAndSaveOffline(_x120) { + return _markAllItemsDirtyAndSaveOffline.apply(this, arguments); } return markAllItemsDirtyAndSaveOffline; @@ -7197,7 +7477,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "setSyncToken", value: function () { - var _ref101 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee91(token) { + var _setSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee91(token) { return regeneratorRuntime.wrap(function _callee91$(_context92) { while (1) { switch (_context92.prev = _context92.next) { @@ -7214,8 +7496,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee91, this); })); - function setSyncToken(_x129) { - return _ref101.apply(this, arguments); + function setSyncToken(_x121) { + return _setSyncToken.apply(this, arguments); } return setSyncToken; @@ -7223,7 +7505,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getSyncToken", value: function () { - var _ref102 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee92() { + var _getSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee92() { return regeneratorRuntime.wrap(function _callee92$(_context93) { while (1) { switch (_context93.prev = _context93.next) { @@ -7251,7 +7535,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getSyncToken() { - return _ref102.apply(this, arguments); + return _getSyncToken.apply(this, arguments); } return getSyncToken; @@ -7259,7 +7543,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "setCursorToken", value: function () { - var _ref103 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee93(token) { + var _setCursorToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee93(token) { return regeneratorRuntime.wrap(function _callee93$(_context94) { while (1) { switch (_context94.prev = _context94.next) { @@ -7290,8 +7576,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee93, this); })); - function setCursorToken(_x130) { - return _ref103.apply(this, arguments); + function setCursorToken(_x122) { + return _setCursorToken.apply(this, arguments); } return setCursorToken; @@ -7299,7 +7585,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getCursorToken", value: function () { - var _ref104 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee94() { + var _getCursorToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee94() { return regeneratorRuntime.wrap(function _callee94$(_context95) { while (1) { switch (_context95.prev = _context95.next) { @@ -7327,7 +7615,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getCursorToken() { - return _ref104.apply(this, arguments); + return _getCursorToken.apply(this, arguments); } return getCursorToken; @@ -7341,28 +7629,28 @@ var SFSyncManager = exports.SFSyncManager = function () { key: "callQueuedCallbacks", value: function callQueuedCallbacks(response) { var allCallbacks = this.queuedCallbacks; + if (allCallbacks.length) { - var _iteratorNormalCompletion43 = true; - var _didIteratorError43 = false; - var _iteratorError43 = undefined; + var _iteratorNormalCompletion41 = true; + var _didIteratorError41 = false; + var _iteratorError41 = undefined; try { - for (var _iterator43 = allCallbacks[Symbol.iterator](), _step43; !(_iteratorNormalCompletion43 = (_step43 = _iterator43.next()).done); _iteratorNormalCompletion43 = true) { - var eachCallback = _step43.value; - + for (var _iterator41 = allCallbacks[Symbol.iterator](), _step41; !(_iteratorNormalCompletion41 = (_step41 = _iterator41.next()).done); _iteratorNormalCompletion41 = true) { + var eachCallback = _step41.value; eachCallback(response); } } catch (err) { - _didIteratorError43 = true; - _iteratorError43 = err; + _didIteratorError41 = true; + _iteratorError41 = err; } finally { try { - if (!_iteratorNormalCompletion43 && _iterator43.return) { - _iterator43.return(); + if (!_iteratorNormalCompletion41 && _iterator41["return"] != null) { + _iterator41["return"](); } } finally { - if (_didIteratorError43) { - throw _iteratorError43; + if (_didIteratorError41) { + throw _iteratorError41; } } } @@ -7376,10 +7664,12 @@ var SFSyncManager = exports.SFSyncManager = function () { if (this.syncStatus.checker) { this.stopCheckingIfSyncIsTakingTooLong(); } + this.syncStatus.checker = this.$interval(function () { // check to see if the ongoing sync is taking too long, alert the user var secondsPassed = (new Date() - this.syncStatus.syncStart) / 1000; var warningThreshold = 5.0; // seconds + if (secondsPassed > warningThreshold) { this.notifyEvent("sync:taking-too-long"); this.stopCheckingIfSyncIsTakingTooLong(); @@ -7394,6 +7684,7 @@ var SFSyncManager = exports.SFSyncManager = function () { } else { clearInterval(this.syncStatus.checker); } + this.syncStatus.checker = null; } }, { @@ -7409,34 +7700,41 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "sync", value: function () { - var _ref105 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee96() { + var _sync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee96() { var _this24 = this; - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var options, + _args97 = arguments; return regeneratorRuntime.wrap(function _callee96$(_context97) { while (1) { switch (_context97.prev = _context97.next) { case 0: + options = _args97.length > 0 && _args97[0] !== undefined ? _args97[0] : {}; + if (!this.syncLocked) { - _context97.next = 3; + _context97.next = 4; break; } console.log("Sync Locked, Returning;"); return _context97.abrupt("return"); - case 3: - return _context97.abrupt("return", new Promise(function () { - var _ref106 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee95(resolve, reject) { - var allDirtyItems, dirtyItemsNotYetSaved, info, isSyncInProgress, initialDataLoaded, isContinuationSync, submitLimit, subItems, params, _iteratorNormalCompletion44, _didIteratorError44, _iteratorError44, _iterator44, _step44, item; + case 4: + return _context97.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref22 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee95(resolve, reject) { + var allDirtyItems, dirtyItemsNotYetSaved, info, isSyncInProgress, initialDataLoaded, isContinuationSync, submitLimit, subItems, params, _iteratorNormalCompletion42, _didIteratorError42, _iteratorError42, _iterator42, _step42, item; return regeneratorRuntime.wrap(function _callee95$(_context96) { while (1) { switch (_context96.prev = _context96.next) { case 0: - if (!options) options = {}; - allDirtyItems = _this24.modelManager.getDirtyItems(); dirtyItemsNotYetSaved = allDirtyItems.filter(function (candidate) { return !_this24.lastDirtyItemsSave || candidate.dirtiedDate > _this24.lastDirtyItemsSave; @@ -7462,21 +7760,24 @@ var SFSyncManager = exports.SFSyncManager = function () { case 13: if (isSyncInProgress) { _this24.queuedCallbacks.push(resolve); + if (_this24.loggingEnabled) { console.warn("Attempting to sync while existing sync is in progress."); } } + if (!initialDataLoaded) { if (_this24.loggingEnabled) { console.warn("(1) Attempting to perform online sync before local data has loaded"); - } - // Resolve right away, as we can't be sure when local data will be called by consumer. + } // Resolve right away, as we can't be sure when local data will be called by consumer. + + resolve(); } + return _context96.abrupt("return"); case 16: - // Set this value immediately after checking it above, to avoid race conditions. _this24.syncStatus.syncOpInProgress = true; @@ -7488,7 +7789,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.abrupt("return", _this24.syncOffline(allDirtyItems).then(function (response) { _this24.syncStatus.syncOpInProgress = false; resolve(response); - }).catch(function (e) { + })["catch"](function (e) { _this24.notifyEvent("sync-exception", e); })); @@ -7502,14 +7803,13 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.abrupt("return"); case 22: - if (_this24.loggingEnabled) { console.log("Syncing online user."); } isContinuationSync = _this24.syncStatus.needsMoreSync; - _this24.syncStatus.syncStart = new Date(); + _this24.beginCheckingIfSyncIsTakingTooLong(); submitLimit = _this24.PerSyncItemUploadLimit; @@ -7525,19 +7825,19 @@ var SFSyncManager = exports.SFSyncManager = function () { if (!isContinuationSync) { _this24.syncStatus.total = allDirtyItems.length; _this24.syncStatus.current = 0; - } - - // If items are marked as dirty during a long running sync request, total isn't updated + } // If items are marked as dirty during a long running sync request, total isn't updated // This happens mostly in the case of large imports and sync conflicts where duplicated items are created + + if (_this24.syncStatus.current > _this24.syncStatus.total) { _this24.syncStatus.total = _this24.syncStatus.current; } - _this24.syncStatusDidChange(); - - // Perform save after you've updated all status signals above. Presync save can take several seconds in some cases. + _this24.syncStatusDidChange(); // Perform save after you've updated all status signals above. Presync save can take several seconds in some cases. // Write to local storage before beginning sync. // This way, if they close the browser before the sync request completes, local changes will not be lost + + _context96.next = 34; return _this24.writeItemsToLocalStorage(dirtyItemsNotYetSaved, false); @@ -7546,24 +7846,23 @@ var SFSyncManager = exports.SFSyncManager = function () { if (options.onPreSyncSave) { options.onPreSyncSave(); - } - - // when doing a sync request that returns items greater than the limit, and thus subsequent syncs are required, + } // when doing a sync request that returns items greater than the limit, and thus subsequent syncs are required, // we want to keep track of all retreived items, then save to local storage only once all items have been retrieved, // so that relationships remain intact // Update 12/18: I don't think we need to do this anymore, since relationships will now retroactively resolve their relationships, // if an item they were looking for hasn't been pulled in yet. + + if (!_this24.allRetreivedItems) { _this24.allRetreivedItems = []; - } + } // We also want to do this for savedItems + - // We also want to do this for savedItems if (!_this24.allSavedItems) { _this24.allSavedItems = []; } params = {}; - params.limit = _this24.ServerItemDownloadLimit; if (options.performIntegrityCheck) { @@ -7591,15 +7890,13 @@ var SFSyncManager = exports.SFSyncManager = function () { _this24.notifyEvent("sync-exception", _context96.t0); case 49: - _iteratorNormalCompletion44 = true; - _didIteratorError44 = false; - _iteratorError44 = undefined; + _iteratorNormalCompletion42 = true; + _didIteratorError42 = false; + _iteratorError42 = undefined; _context96.prev = 52; - - for (_iterator44 = subItems[Symbol.iterator](); !(_iteratorNormalCompletion44 = (_step44 = _iterator44.next()).done); _iteratorNormalCompletion44 = true) { - item = _step44.value; - + for (_iterator42 = subItems[Symbol.iterator](); !(_iteratorNormalCompletion42 = (_step42 = _iterator42.next()).done); _iteratorNormalCompletion42 = true) { + item = _step42.value; // Reset dirty counter to 0, since we're about to sync it. // This means anyone marking the item as dirty after this will cause it so sync again and not be cleared on sync completion. item.dirtyCount = 0; @@ -7611,26 +7908,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 56: _context96.prev = 56; _context96.t1 = _context96["catch"](52); - _didIteratorError44 = true; - _iteratorError44 = _context96.t1; + _didIteratorError42 = true; + _iteratorError42 = _context96.t1; case 60: _context96.prev = 60; _context96.prev = 61; - if (!_iteratorNormalCompletion44 && _iterator44.return) { - _iterator44.return(); + if (!_iteratorNormalCompletion42 && _iterator42["return"] != null) { + _iterator42["return"](); } case 63: _context96.prev = 63; - if (!_didIteratorError44) { + if (!_didIteratorError42) { _context96.next = 66; break; } - throw _iteratorError44; + throw _iteratorError42; case 66: return _context96.finish(63); @@ -7649,10 +7946,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 73: params.cursor_token = _context96.sent; - - params['api'] = SFHttpManager.getApiVersion(); - _context96.prev = 75; _context96.t2 = _this24.httpManager; _context96.next = 79; @@ -7665,10 +7959,12 @@ var SFSyncManager = exports.SFSyncManager = function () { _context96.t5 = function (response) { _this24.handleSyncSuccess(subItems, response, options).then(function () { resolve(response); - }).catch(function (e) { + })["catch"](function (e) { console.log("Caught sync success exception:", e); + _this24.handleSyncError(e, null, allDirtyItems).then(function (errorResponse) { _this24.notifyEvent("sync-exception", e); + resolve(errorResponse); }); }); @@ -7688,7 +7984,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 86: _context96.prev = 86; _context96.t7 = _context96["catch"](75); - console.log("Sync exception caught:", _context96.t7); case 89: @@ -7696,15 +7991,15 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.stop(); } } - }, _callee95, _this24, [[41, 46], [52, 56, 60, 68], [61,, 63, 67], [75, 86]]); + }, _callee95, null, [[41, 46], [52, 56, 60, 68], [61,, 63, 67], [75, 86]]); })); - return function (_x132, _x133) { - return _ref106.apply(this, arguments); + return function (_x123, _x124) { + return _ref22.apply(this, arguments); }; }())); - case 4: + case 5: case "end": return _context97.stop(); } @@ -7713,7 +8008,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function sync() { - return _ref105.apply(this, arguments); + return _sync.apply(this, arguments); } return sync; @@ -7721,7 +8016,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "_awaitSleep", value: function () { - var _ref107 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee97(durationInMs) { + var _awaitSleep2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee97(durationInMs) { return regeneratorRuntime.wrap(function _callee97$(_context98) { while (1) { switch (_context98.prev = _context98.next) { @@ -7738,11 +8035,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context98.stop(); } } - }, _callee97, this); + }, _callee97); })); - function _awaitSleep(_x134) { - return _ref107.apply(this, arguments); + function _awaitSleep(_x125) { + return _awaitSleep2.apply(this, arguments); } return _awaitSleep; @@ -7750,10 +8047,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSyncSuccess", value: function () { - var _ref108 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee98(syncedItems, response, options) { + var _handleSyncSuccess = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee98(syncedItems, response, options) { var _this25 = this; - var latency, allSavedUUIDs, currentRequestSavedUUIDs, itemsToClearAsDirty, _iteratorNormalCompletion45, _didIteratorError45, _iteratorError45, _iterator45, _step45, item, retrieved, omitFields, saved, deprecated_unsaved, conflicts, conflictsNeedSync, matches, cursorToken; + var latency, allSavedUUIDs, currentRequestSavedUUIDs, itemsToClearAsDirty, _iteratorNormalCompletion43, _didIteratorError43, _iteratorError43, _iterator43, _step43, item, retrieved, omitFields, saved, deprecated_unsaved, conflicts, conflictsNeedSync, matches, cursorToken; return regeneratorRuntime.wrap(function _callee98$(_context99) { while (1) { @@ -7769,7 +8068,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return this._awaitSleep(latency); case 4: - this.syncStatus.error = null; if (this.loggingEnabled) { @@ -7782,32 +8080,32 @@ var SFSyncManager = exports.SFSyncManager = function () { currentRequestSavedUUIDs = response.saved_items.map(function (savedResponse) { return savedResponse.uuid; }); - - response.retrieved_items = response.retrieved_items.filter(function (retrievedItem) { var isInPreviousSaved = allSavedUUIDs.includes(retrievedItem.uuid); var isInCurrentSaved = currentRequestSavedUUIDs.includes(retrievedItem.uuid); + if (isInPreviousSaved || isInCurrentSaved) { return false; } var localItem = _this25.modelManager.findItem(retrievedItem.uuid); + if (localItem && localItem.dirty) { return false; } - return true; - }); - // Clear dirty items after we've finish filtering retrieved_items above, since that depends on dirty items. + return true; + }); // Clear dirty items after we've finish filtering retrieved_items above, since that depends on dirty items. // Check to make sure any subItem hasn't been marked as dirty again while a sync was ongoing + itemsToClearAsDirty = []; - _iteratorNormalCompletion45 = true; - _didIteratorError45 = false; - _iteratorError45 = undefined; + _iteratorNormalCompletion43 = true; + _didIteratorError43 = false; + _iteratorError43 = undefined; _context99.prev = 13; - for (_iterator45 = syncedItems[Symbol.iterator](); !(_iteratorNormalCompletion45 = (_step45 = _iterator45.next()).done); _iteratorNormalCompletion45 = true) { - item = _step45.value; + for (_iterator43 = syncedItems[Symbol.iterator](); !(_iteratorNormalCompletion43 = (_step43 = _iterator43.next()).done); _iteratorNormalCompletion43 = true) { + item = _step43.value; if (item.dirtyCount == 0) { // Safe to clear as dirty @@ -7821,26 +8119,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 17: _context99.prev = 17; _context99.t0 = _context99["catch"](13); - _didIteratorError45 = true; - _iteratorError45 = _context99.t0; + _didIteratorError43 = true; + _iteratorError43 = _context99.t0; case 21: _context99.prev = 21; _context99.prev = 22; - if (!_iteratorNormalCompletion45 && _iterator45.return) { - _iterator45.return(); + if (!_iteratorNormalCompletion43 && _iterator43["return"] != null) { + _iterator43["return"](); } case 24: _context99.prev = 24; - if (!_didIteratorError45) { + if (!_didIteratorError43) { _context99.next = 27; break; } - throw _iteratorError45; + throw _iteratorError43; case 27: return _context99.finish(24); @@ -7849,39 +8147,30 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context99.finish(21); case 29: - this.modelManager.clearDirtyItems(itemsToClearAsDirty); - - // Map retrieved items to local data + this.modelManager.clearDirtyItems(itemsToClearAsDirty); // Map retrieved items to local data // Note that deleted items will not be returned + _context99.next = 32; return this.handleItemsResponse(response.retrieved_items, null, SFModelManager.MappingSourceRemoteRetrieved, SFSyncManager.KeyRequestLoadSaveAccount); case 32: retrieved = _context99.sent; - - // Append items to master list of retrieved items for this ongoing sync operation this.allRetreivedItems = this.allRetreivedItems.concat(retrieved); - this.syncStatus.retrievedCount = this.allRetreivedItems.length; - - // Merge only metadata for saved items + this.syncStatus.retrievedCount = this.allRetreivedItems.length; // Merge only metadata for saved items // we write saved items to disk now because it clears their dirty status then saves // if we saved items before completion, we had have to save them as dirty and save them again on success as clean - omitFields = ["content", "auth_hash"]; - // Map saved items to local data + omitFields = ["content", "auth_hash"]; // Map saved items to local data _context99.next = 38; return this.handleItemsResponse(response.saved_items, omitFields, SFModelManager.MappingSourceRemoteSaved, SFSyncManager.KeyRequestLoadSaveAccount); case 38: saved = _context99.sent; - - // Append items to master list of saved items for this ongoing sync operation - this.allSavedItems = this.allSavedItems.concat(saved); + this.allSavedItems = this.allSavedItems.concat(saved); // 'unsaved' is deprecated and replaced with 'conflicts' in newer version. - // 'unsaved' is deprecated and replaced with 'conflicts' in newer version. deprecated_unsaved = response.unsaved; _context99.next = 43; return this.deprecated_handleUnsavedItemsResponse(deprecated_unsaved); @@ -7931,18 +8220,13 @@ var SFSyncManager = exports.SFSyncManager = function () { } case 59: - this.syncStatus.syncOpInProgress = false; this.syncStatus.current += syncedItems.length; + this.syncStatusDidChange(); // set the sync token at the end, so that if any errors happen above, you can resync - this.syncStatusDidChange(); - - // set the sync token at the end, so that if any errors happen above, you can resync this.setSyncToken(response.sync_token); this.setCursorToken(response.cursor_token); - this.stopCheckingIfSyncIsTakingTooLong(); - _context99.next = 67; return this.getCursorToken(); @@ -7967,8 +8251,8 @@ var SFSyncManager = exports.SFSyncManager = function () { } // We'll use the conflict sync as the next sync, so performSyncAgainOnCompletion can be turned off. - this.performSyncAgainOnCompletion = false; - // Include as part of await/resolve chain + this.performSyncAgainOnCompletion = false; // Include as part of await/resolve chain + return _context99.abrupt("return", new Promise(function (resolve, reject) { setTimeout(function () { _this25.sync(options).then(resolve); @@ -7976,12 +8260,10 @@ var SFSyncManager = exports.SFSyncManager = function () { })); case 77: - this.syncStatus.retrievedCount = 0; + this.syncStatus.retrievedCount = 0; // current and total represent what's going up, not what's come down or saved. - // current and total represent what's going up, not what's come down or saved. this.syncStatus.current = 0; this.syncStatus.total = 0; - this.syncStatusDidChange(); if (this.allRetreivedItems.length >= this.majorDataChangeThreshold || saved.length >= this.majorDataChangeThreshold || deprecated_unsaved && deprecated_unsaved.length >= this.majorDataChangeThreshold || conflicts && conflicts.length >= this.majorDataChangeThreshold) { @@ -7989,8 +8271,10 @@ var SFSyncManager = exports.SFSyncManager = function () { } this.callQueuedCallbacks(response); - this.notifyEvent("sync:completed", { retrievedItems: this.allRetreivedItems, savedItems: this.allSavedItems }); - + this.notifyEvent("sync:completed", { + retrievedItems: this.allRetreivedItems, + savedItems: this.allSavedItems + }); this.allRetreivedItems = []; this.allSavedItems = []; @@ -8011,8 +8295,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee98, this, [[13, 17, 21, 29], [22,, 24, 28]]); })); - function handleSyncSuccess(_x135, _x136, _x137) { - return _ref108.apply(this, arguments); + function handleSyncSuccess(_x126, _x127, _x128) { + return _handleSyncSuccess.apply(this, arguments); } return handleSyncSuccess; @@ -8020,7 +8304,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSyncError", value: function () { - var _ref109 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee99(response, statusCode, allDirtyItems) { + var _handleSyncError = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee99(response, statusCode, allDirtyItems) { return regeneratorRuntime.wrap(function _callee99$(_context100) { while (1) { switch (_context100.prev = _context100.next) { @@ -8032,24 +8318,29 @@ var SFSyncManager = exports.SFSyncManager = function () { } if (!response) { - response = { error: { message: "Could not connect to server." } }; + response = { + error: { + message: "Could not connect to server." + } + }; } else if (typeof response == 'string') { - response = { error: { message: response } }; + response = { + error: { + message: response + } + }; } this.syncStatus.syncOpInProgress = false; this.syncStatus.error = response.error; this.syncStatusDidChange(); - this.writeItemsToLocalStorage(allDirtyItems, false); this.modelManager.didSyncModelsOffline(allDirtyItems); - this.stopCheckingIfSyncIsTakingTooLong(); - this.notifyEvent("sync:error", response.error); - - this.callQueuedCallbacks({ error: "Sync error" }); - + this.callQueuedCallbacks({ + error: "Sync error" + }); return _context100.abrupt("return", response); case 12: @@ -8060,8 +8351,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee99, this); })); - function handleSyncError(_x138, _x139, _x140) { - return _ref109.apply(this, arguments); + function handleSyncError(_x129, _x130, _x131) { + return _handleSyncError.apply(this, arguments); } return handleSyncError; @@ -8069,7 +8360,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleItemsResponse", value: function () { - var _ref110 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee100(responseItems, omitFields, source, keyRequest) { + var _handleItemsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee100(responseItems, omitFields, source, keyRequest) { var keys, items, itemsWithErrorStatusChange; return regeneratorRuntime.wrap(function _callee100$(_context101) { while (1) { @@ -8089,14 +8382,12 @@ var SFSyncManager = exports.SFSyncManager = function () { case 7: items = _context101.sent; - - // During the decryption process, items may be marked as "errorDecrypting". If so, we want to be sure // to persist this new state by writing these items back to local storage. When an item's "errorDecrypting" // flag is changed, its "errorDecryptingValueChanged" flag will be set, so we can find these items by filtering (then unsetting) below: itemsWithErrorStatusChange = items.filter(function (item) { - var valueChanged = item.errorDecryptingValueChanged; - // unset after consuming value + var valueChanged = item.errorDecryptingValueChanged; // unset after consuming value + item.errorDecryptingValueChanged = false; return valueChanged; }); @@ -8115,8 +8406,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee100, this); })); - function handleItemsResponse(_x141, _x142, _x143, _x144) { - return _ref110.apply(this, arguments); + function handleItemsResponse(_x132, _x133, _x134, _x135) { + return _handleItemsResponse.apply(this, arguments); } return handleItemsResponse; @@ -8124,7 +8415,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "refreshErroredItems", value: function () { - var _ref111 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee101() { + var _refreshErroredItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee101() { var erroredItems; return regeneratorRuntime.wrap(function _callee101$(_context102) { while (1) { @@ -8150,12 +8443,11 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function refreshErroredItems() { - return _ref111.apply(this, arguments); + return _refreshErroredItems.apply(this, arguments); } return refreshErroredItems; }() - /* The difference between 'unsaved' (deprecated_handleUnsavedItemsResponse) and 'conflicts' (handleConflictsResponse) is that with unsaved items, the local copy is triumphant on the server, and we check the server copy to see if we should @@ -8169,8 +8461,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleConflictsResponse", value: function () { - var _ref112 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee102(conflicts) { - var localValues, _iteratorNormalCompletion46, _didIteratorError46, _iteratorError46, _iterator46, _step46, conflict, serverItemResponse, localItem, frozenContent, itemsNeedingLocalSave, _iteratorNormalCompletion47, _didIteratorError47, _iteratorError47, _iterator47, _step47, _conflict, _localValues$serverIt, itemRef, newItem, tempServerItem, _tempItemWithFrozenValues, frozenContentDiffers, currentContentDiffers, duplicateLocal, duplicateServer, keepLocal, keepServer, IsActiveItemSecondsThreshold, isActivelyBeingEdited, contentExcludingReferencesDiffers, isOnlyReferenceChange, localDuplicate; + var _handleConflictsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee102(conflicts) { + var localValues, _iteratorNormalCompletion44, _didIteratorError44, _iteratorError44, _iterator44, _step44, conflict, serverItemResponse, localItem, frozenContent, itemsNeedingLocalSave, _iteratorNormalCompletion45, _didIteratorError45, _iteratorError45, _iterator45, _step45, _conflict, _serverItemResponse, _localValues$_serverI, _frozenContent, itemRef, newItem, tempServerItem, _tempItemWithFrozenValues, frozenContentDiffers, currentContentDiffers, duplicateLocal, duplicateServer, keepLocal, keepServer, IsActiveItemSecondsThreshold, isActivelyBeingEdited, contentExcludingReferencesDiffers, isOnlyReferenceChange, localDuplicate; return regeneratorRuntime.wrap(function _callee102$(_context103) { while (1) { @@ -8184,28 +8478,27 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("return"); case 2: - if (this.loggingEnabled) { console.log("Handle Conflicted Items:", conflicts); - } - - // Get local values before doing any processing. This way, if a note change below modifies a tag, + } // Get local values before doing any processing. This way, if a note change below modifies a tag, // and the tag is going to be iterated on in the same loop, then we don't want this change to be compared // to the local value. + + localValues = {}; - _iteratorNormalCompletion46 = true; - _didIteratorError46 = false; - _iteratorError46 = undefined; + _iteratorNormalCompletion44 = true; + _didIteratorError44 = false; + _iteratorError44 = undefined; _context103.prev = 7; - _iterator46 = conflicts[Symbol.iterator](); + _iterator44 = conflicts[Symbol.iterator](); case 9: - if (_iteratorNormalCompletion46 = (_step46 = _iterator46.next()).done) { + if (_iteratorNormalCompletion44 = (_step44 = _iterator44.next()).done) { _context103.next = 21; break; } - conflict = _step46.value; + conflict = _step44.value; serverItemResponse = conflict.server_item || conflict.unsaved_item; localItem = this.modelManager.findItem(serverItemResponse.uuid); @@ -8219,11 +8512,13 @@ var SFSyncManager = exports.SFSyncManager = function () { case 16: frozenContent = localItem.getContentCopy(); - - localValues[serverItemResponse.uuid] = { frozenContent: frozenContent, itemRef: localItem }; + localValues[serverItemResponse.uuid] = { + frozenContent: frozenContent, + itemRef: localItem + }; case 18: - _iteratorNormalCompletion46 = true; + _iteratorNormalCompletion44 = true; _context103.next = 9; break; @@ -8234,26 +8529,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 23: _context103.prev = 23; _context103.t0 = _context103["catch"](7); - _didIteratorError46 = true; - _iteratorError46 = _context103.t0; + _didIteratorError44 = true; + _iteratorError44 = _context103.t0; case 27: _context103.prev = 27; _context103.prev = 28; - if (!_iteratorNormalCompletion46 && _iterator46.return) { - _iterator46.return(); + if (!_iteratorNormalCompletion44 && _iterator44["return"] != null) { + _iterator44["return"](); } case 30: _context103.prev = 30; - if (!_didIteratorError46) { + if (!_didIteratorError44) { _context103.next = 33; break; } - throw _iteratorError46; + throw _iteratorError44; case 33: return _context103.finish(30); @@ -8262,28 +8557,26 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.finish(27); case 35: - // Any item that's newly created here or updated will need to be persisted itemsNeedingLocalSave = []; - _iteratorNormalCompletion47 = true; - _didIteratorError47 = false; - _iteratorError47 = undefined; + _iteratorNormalCompletion45 = true; + _didIteratorError45 = false; + _iteratorError45 = undefined; _context103.prev = 39; - _iterator47 = conflicts[Symbol.iterator](); + _iterator45 = conflicts[Symbol.iterator](); case 41: - if (_iteratorNormalCompletion47 = (_step47 = _iterator47.next()).done) { + if (_iteratorNormalCompletion45 = (_step45 = _iterator45.next()).done) { _context103.next = 91; break; } - _conflict = _step47.value; - + _conflict = _step45.value; // if sync_conflict, we receive conflict.server_item. // If uuid_conflict, we receive the value we attempted to save. - serverItemResponse = _conflict.server_item || _conflict.unsaved_item; + _serverItemResponse = _conflict.server_item || _conflict.unsaved_item; _context103.t1 = SFJS.itemTransformer; - _context103.t2 = [serverItemResponse]; + _context103.t2 = [_serverItemResponse]; _context103.next = 48; return this.getActiveKeyInfo(SFSyncManager.KeyRequestLoadSaveAccount); @@ -8293,9 +8586,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.t1.decryptMultipleItems.call(_context103.t1, _context103.t2, _context103.t3); case 51: - _localValues$serverIt = localValues[serverItemResponse.uuid], frozenContent = _localValues$serverIt.frozenContent, itemRef = _localValues$serverIt.itemRef; - - // Could be deleted + _localValues$_serverI = localValues[_serverItemResponse.uuid], _frozenContent = _localValues$_serverI.frozenContent, itemRef = _localValues$_serverI.itemRef; // Could be deleted if (itemRef) { _context103.next = 54; @@ -8305,7 +8596,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("continue", 88); case 54: - // Item ref is always added, since it's value will have changed below, either by mapping, being set to dirty, // or being set undirty by the caller but the caller not saving because they're waiting on us. itemsNeedingLocalSave.push(itemRef); @@ -8320,7 +8610,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 58: newItem = _context103.sent; - itemsNeedingLocalSave.push(newItem); _context103.next = 88; break; @@ -8332,16 +8621,15 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context103.next = 65; - return this.modelManager.createDuplicateItemFromResponseItem(serverItemResponse); + return this.modelManager.createDuplicateItemFromResponseItem(_serverItemResponse); case 65: tempServerItem = _context103.sent; - // Convert to an object simply so we can have access to the `isItemContentEqualWith` function. _tempItemWithFrozenValues = this.modelManager.duplicateItemWithCustomContent({ - content: frozenContent, duplicateOf: itemRef - }); - // if !frozenContentDiffers && currentContentDiffers, it means values have changed as we were looping through conflicts here. + content: _frozenContent, + duplicateOf: itemRef + }); // if !frozenContentDiffers && currentContentDiffers, it means values have changed as we were looping through conflicts here. frozenContentDiffers = !_tempItemWithFrozenValues.isItemContentEqualWith(tempServerItem); currentContentDiffers = !itemRef.isItemContentEqualWith(tempServerItem); @@ -8350,8 +8638,7 @@ var SFSyncManager = exports.SFSyncManager = function () { keepLocal = false; keepServer = false; - - if (serverItemResponse.deleted || itemRef.deleted) { + if (_serverItemResponse.deleted || itemRef.deleted) { keepServer = true; } else if (frozenContentDiffers) { IsActiveItemSecondsThreshold = 20; @@ -8391,17 +8678,15 @@ var SFSyncManager = exports.SFSyncManager = function () { _context103.next = 77; return this.modelManager.duplicateItemWithCustomContentAndAddAsConflict({ - content: frozenContent, + content: _frozenContent, duplicateOf: itemRef }); case 77: localDuplicate = _context103.sent; - itemsNeedingLocalSave.push(localDuplicate); case 79: - if (duplicateServer) { this.modelManager.addDuplicatedItemAsConflict({ duplicate: tempServerItem, @@ -8416,14 +8701,14 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context103.next = 83; - return this.modelManager.mapResponseItemsToLocalModelsOmittingFields([serverItemResponse], null, SFModelManager.MappingSourceRemoteRetrieved); + return this.modelManager.mapResponseItemsToLocalModelsOmittingFields([_serverItemResponse], null, SFModelManager.MappingSourceRemoteRetrieved); case 83: - if (keepLocal) { itemRef.updated_at = tempServerItem.updated_at; itemRef.setDirty(true); } + _context103.next = 88; break; @@ -8432,7 +8717,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("continue", 88); case 88: - _iteratorNormalCompletion47 = true; + _iteratorNormalCompletion45 = true; _context103.next = 41; break; @@ -8443,26 +8728,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 93: _context103.prev = 93; _context103.t4 = _context103["catch"](39); - _didIteratorError47 = true; - _iteratorError47 = _context103.t4; + _didIteratorError45 = true; + _iteratorError45 = _context103.t4; case 97: _context103.prev = 97; _context103.prev = 98; - if (!_iteratorNormalCompletion47 && _iterator47.return) { - _iterator47.return(); + if (!_iteratorNormalCompletion45 && _iterator45["return"] != null) { + _iterator45["return"](); } case 100: _context103.prev = 100; - if (!_didIteratorError47) { + if (!_didIteratorError45) { _context103.next = 103; break; } - throw _iteratorError47; + throw _iteratorError45; case 103: return _context103.finish(100); @@ -8481,20 +8766,20 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee102, this, [[7, 23, 27, 35], [28,, 30, 34], [39, 93, 97, 105], [98,, 100, 104]]); })); - function handleConflictsResponse(_x145) { - return _ref112.apply(this, arguments); + function handleConflictsResponse(_x136) { + return _handleConflictsResponse.apply(this, arguments); } return handleConflictsResponse; - }() - - // Legacy API + }() // Legacy API }, { key: "deprecated_handleUnsavedItemsResponse", value: function () { - var _ref113 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee103(unsaved) { - var _iteratorNormalCompletion48, _didIteratorError48, _iteratorError48, _iterator48, _step48, mapping, itemResponse, item, error, dup; + var _deprecated_handleUnsavedItemsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee103(unsaved) { + var _iteratorNormalCompletion46, _didIteratorError46, _iteratorError46, _iterator46, _step46, mapping, itemResponse, item, error, dup; return regeneratorRuntime.wrap(function _callee103$(_context104) { while (1) { @@ -8508,24 +8793,23 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context104.abrupt("return"); case 2: - if (this.loggingEnabled) { console.log("Handle Unsaved Items:", unsaved); } - _iteratorNormalCompletion48 = true; - _didIteratorError48 = false; - _iteratorError48 = undefined; + _iteratorNormalCompletion46 = true; + _didIteratorError46 = false; + _iteratorError46 = undefined; _context104.prev = 6; - _iterator48 = unsaved[Symbol.iterator](); + _iterator46 = unsaved[Symbol.iterator](); case 8: - if (_iteratorNormalCompletion48 = (_step48 = _iterator48.next()).done) { + if (_iteratorNormalCompletion46 = (_step46 = _iterator46.next()).done) { _context104.next = 35; break; } - mapping = _step48.value; + mapping = _step46.value; itemResponse = mapping.item; _context104.t0 = SFJS.itemTransformer; _context104.t1 = [itemResponse]; @@ -8538,9 +8822,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context104.t0.decryptMultipleItems.call(_context104.t0, _context104.t1, _context104.t2); case 18: - item = this.modelManager.findItem(itemResponse.uuid); - - // Could be deleted + item = this.modelManager.findItem(itemResponse.uuid); // Could be deleted if (item) { _context104.next = 21; @@ -8577,11 +8859,14 @@ var SFSyncManager = exports.SFSyncManager = function () { dup = _context104.sent; if (!itemResponse.deleted && !item.isItemContentEqualWith(dup)) { - this.modelManager.addDuplicatedItemAsConflict({ duplicate: dup, duplicateOf: item }); + this.modelManager.addDuplicatedItemAsConflict({ + duplicate: dup, + duplicateOf: item + }); } case 32: - _iteratorNormalCompletion48 = true; + _iteratorNormalCompletion46 = true; _context104.next = 8; break; @@ -8592,26 +8877,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 37: _context104.prev = 37; _context104.t3 = _context104["catch"](6); - _didIteratorError48 = true; - _iteratorError48 = _context104.t3; + _didIteratorError46 = true; + _iteratorError46 = _context104.t3; case 41: _context104.prev = 41; _context104.prev = 42; - if (!_iteratorNormalCompletion48 && _iterator48.return) { - _iterator48.return(); + if (!_iteratorNormalCompletion46 && _iterator46["return"] != null) { + _iterator46["return"](); } case 44: _context104.prev = 44; - if (!_didIteratorError48) { + if (!_didIteratorError46) { _context104.next = 47; break; } - throw _iteratorError48; + throw _iteratorError46; case 47: return _context104.finish(44); @@ -8627,13 +8912,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee103, this, [[6, 37, 41, 49], [42,, 44, 48]]); })); - function deprecated_handleUnsavedItemsResponse(_x146) { - return _ref113.apply(this, arguments); + function deprecated_handleUnsavedItemsResponse(_x137) { + return _deprecated_handleUnsavedItemsResponse.apply(this, arguments); } return deprecated_handleUnsavedItemsResponse; }() - /* Executes a sync request with a blank sync token and high download limit. It will download all items, but won't do anything with them other than decrypting, creating respective objects, and returning them to caller. (it does not map them nor establish their relationships) @@ -8648,9 +8932,12 @@ var SFSyncManager = exports.SFSyncManager = function () { var _this26 = this; var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - return new Promise(function () { - var _ref114 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee105(resolve, reject) { + return new Promise( + /*#__PURE__*/ + function () { + var _ref23 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee105(resolve, reject) { var params; return regeneratorRuntime.wrap(function _callee105$(_context106) { while (1) { @@ -8673,8 +8960,12 @@ var SFSyncManager = exports.SFSyncManager = function () { _context106.t1 = _context106.sent; _context106.t2 = params; - _context106.t3 = function () { - var _ref115 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee104(response) { + _context106.t3 = + /*#__PURE__*/ + function () { + var _ref24 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee104(response) { var incomingItems, keys; return regeneratorRuntime.wrap(function _callee104$(_context105) { while (1) { @@ -8694,7 +8985,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return SFJS.itemTransformer.decryptMultipleItems(incomingItems, keys); case 7: - options.retrievedItems = options.retrievedItems.concat(incomingItems.map(function (incomingItem) { // Create model classes return _this26.modelManager.createItem(incomingItem); @@ -8713,11 +9003,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context105.stop(); } } - }, _callee104, _this26); + }, _callee104); })); - return function (_x150) { - return _ref115.apply(this, arguments); + return function (_x140) { + return _ref24.apply(this, arguments); }; }(); @@ -8733,7 +9023,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 12: _context106.prev = 12; _context106.t5 = _context106["catch"](1); - console.log("Download all items exception caught:", _context106.t5); reject(_context106.t5); @@ -8742,47 +9031,54 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context106.stop(); } } - }, _callee105, _this26, [[1, 12]]); + }, _callee105, null, [[1, 12]]); })); - return function (_x148, _x149) { - return _ref114.apply(this, arguments); + return function (_x138, _x139) { + return _ref23.apply(this, arguments); }; }()); } }, { key: "resolveOutOfSync", value: function () { - var _ref116 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee107() { + var _resolveOutOfSync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee107() { var _this27 = this; return regeneratorRuntime.wrap(function _callee107$(_context108) { while (1) { switch (_context108.prev = _context108.next) { case 0: - return _context108.abrupt("return", this.stateless_downloadAllItems({ event: "resolve-out-of-sync" }).then(function () { - var _ref117 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee106(downloadedItems) { - var itemsToMap, _iteratorNormalCompletion49, _didIteratorError49, _iteratorError49, _iterator49, _step49, downloadedItem, existingItem, contentDoesntMatch; + return _context108.abrupt("return", this.stateless_downloadAllItems({ + event: "resolve-out-of-sync" + }).then( + /*#__PURE__*/ + function () { + var _ref25 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee106(downloadedItems) { + var itemsToMap, _iteratorNormalCompletion47, _didIteratorError47, _iteratorError47, _iterator47, _step47, downloadedItem, existingItem, contentDoesntMatch; return regeneratorRuntime.wrap(function _callee106$(_context107) { while (1) { switch (_context107.prev = _context107.next) { case 0: itemsToMap = []; - _iteratorNormalCompletion49 = true; - _didIteratorError49 = false; - _iteratorError49 = undefined; + _iteratorNormalCompletion47 = true; + _didIteratorError47 = false; + _iteratorError47 = undefined; _context107.prev = 4; - _iterator49 = downloadedItems[Symbol.iterator](); + _iterator47 = downloadedItems[Symbol.iterator](); case 6: - if (_iteratorNormalCompletion49 = (_step49 = _iterator49.next()).done) { + if (_iteratorNormalCompletion47 = (_step47 = _iterator47.next()).done) { _context107.next = 18; break; } - downloadedItem = _step49.value; - + downloadedItem = _step47.value; // Note that deleted items will not be sent back by the server. existingItem = _this27.modelManager.findItem(downloadedItem.uuid); @@ -8803,13 +9099,12 @@ var SFSyncManager = exports.SFSyncManager = function () { return _this27.modelManager.duplicateItemAndAddAsConflict(existingItem); case 14: - // Map the downloadedItem as authoritive content. If client copy at all differed, we would have created a duplicate of it above and synced it. // This is also neccessary to map the updated_at value from the server itemsToMap.push(downloadedItem); case 15: - _iteratorNormalCompletion49 = true; + _iteratorNormalCompletion47 = true; _context107.next = 6; break; @@ -8820,26 +9115,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 20: _context107.prev = 20; _context107.t0 = _context107["catch"](4); - _didIteratorError49 = true; - _iteratorError49 = _context107.t0; + _didIteratorError47 = true; + _iteratorError47 = _context107.t0; case 24: _context107.prev = 24; _context107.prev = 25; - if (!_iteratorNormalCompletion49 && _iterator49.return) { - _iterator49.return(); + if (!_iteratorNormalCompletion47 && _iterator47["return"] != null) { + _iterator47["return"](); } case 27: _context107.prev = 27; - if (!_didIteratorError49) { + if (!_didIteratorError47) { _context107.next = 30; break; } - throw _iteratorError49; + throw _iteratorError47; case 30: return _context107.finish(27); @@ -8849,25 +9144,30 @@ var SFSyncManager = exports.SFSyncManager = function () { case 32: _context107.next = 34; - return _this27.modelManager.mapResponseItemsToLocalModelsWithOptions({ items: itemsToMap, source: SFModelManager.MappingSourceRemoteRetrieved }); + return _this27.modelManager.mapResponseItemsToLocalModelsWithOptions({ + items: itemsToMap, + source: SFModelManager.MappingSourceRemoteRetrieved + }); case 34: _context107.next = 36; return _this27.writeItemsToLocalStorage(_this27.modelManager.allNondummyItems); case 36: - return _context107.abrupt("return", _this27.sync({ performIntegrityCheck: true })); + return _context107.abrupt("return", _this27.sync({ + performIntegrityCheck: true + })); case 37: case "end": return _context107.stop(); } } - }, _callee106, _this27, [[4, 20, 24, 32], [25,, 27, 31]]); + }, _callee106, null, [[4, 20, 24, 32], [25,, 27, 31]]); })); - return function (_x151) { - return _ref117.apply(this, arguments); + return function (_x141) { + return _ref25.apply(this, arguments); }; }())); @@ -8880,7 +9180,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function resolveOutOfSync() { - return _ref116.apply(this, arguments); + return _resolveOutOfSync.apply(this, arguments); } return resolveOutOfSync; @@ -8888,7 +9188,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSignout", value: function () { - var _ref118 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee108() { + var _handleSignout = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee108() { return regeneratorRuntime.wrap(function _callee108$(_context109) { while (1) { switch (_context109.prev = _context109.next) { @@ -8910,7 +9212,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function handleSignout() { - return _ref118.apply(this, arguments); + return _handleSignout.apply(this, arguments); } return handleSignout; @@ -8918,7 +9220,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "clearSyncToken", value: function () { - var _ref119 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee109() { + var _clearSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee109() { return regeneratorRuntime.wrap(function _callee109$(_context110) { while (1) { switch (_context110.prev = _context110.next) { @@ -8936,13 +9240,11 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function clearSyncToken() { - return _ref119.apply(this, arguments); + return _clearSyncToken.apply(this, arguments); } return clearSyncToken; - }() - - // Only used by unit test + }() // Only used by unit test }, { key: "__setLocalDataNotLoaded", @@ -8956,6 +9258,7 @@ var SFSyncManager = exports.SFSyncManager = function () { if (!this._queuedCallbacks) { this._queuedCallbacks = []; } + return this._queuedCallbacks; } }]); @@ -8963,9 +9266,13 @@ var SFSyncManager = exports.SFSyncManager = function () { return SFSyncManager; }(); -;var dateFormatter; +exports.SFSyncManager = SFSyncManager; +; +var dateFormatter; -var SFItem = exports.SFItem = function () { +var SFItem = +/*#__PURE__*/ +function () { function SFItem() { var json_obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -8985,16 +9292,16 @@ var SFItem = exports.SFItem = function () { if (_typeof(this.content) === 'object' && !this.content.references) { this.content.references = []; } - } - - // On some platforms, syncrounous uuid generation is not available. + } // On some platforms, syncrounous uuid generation is not available. // Those platforms (mobile) must call this function manually. _createClass(SFItem, [{ key: "initUUID", value: function () { - var _ref120 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee110() { + var _initUUID = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee110() { return regeneratorRuntime.wrap(function _callee110$(_context111) { while (1) { switch (_context111.prev = _context111.next) { @@ -9019,7 +9326,7 @@ var SFItem = exports.SFItem = function () { })); function initUUID() { - return _ref120.apply(this, arguments); + return _initUUID.apply(this, arguments); } return initUUID; @@ -9036,50 +9343,30 @@ var SFItem = exports.SFItem = function () { this.uuid = json.uuid; this.enc_item_key = json.enc_item_key; this.auth_hash = json.auth_hash; - this.auth_params = json.auth_params; - - // When updating from server response (as opposed to local json response), these keys will be missing. + this.auth_params = json.auth_params; // When updating from server response (as opposed to local json response), these keys will be missing. // So we only want to update these values if they are explicitly present. + var clientKeys = ["errorDecrypting", "dirty", "dirtyCount", "dirtiedDate", "dummy"]; - var _iteratorNormalCompletion50 = true; - var _didIteratorError50 = false; - var _iteratorError50 = undefined; - try { - for (var _iterator50 = clientKeys[Symbol.iterator](), _step50; !(_iteratorNormalCompletion50 = (_step50 = _iterator50.next()).done); _iteratorNormalCompletion50 = true) { - var key = _step50.value; + for (var _i4 = 0, _clientKeys = clientKeys; _i4 < _clientKeys.length; _i4++) { + var key = _clientKeys[_i4]; - if (json[key] !== undefined) { - this[key] = json[key]; - } - } - } catch (err) { - _didIteratorError50 = true; - _iteratorError50 = err; - } finally { - try { - if (!_iteratorNormalCompletion50 && _iterator50.return) { - _iterator50.return(); - } - } finally { - if (_didIteratorError50) { - throw _iteratorError50; - } + if (json[key] !== undefined) { + this[key] = json[key]; } } if (this.dirtiedDate && typeof this.dirtiedDate === 'string') { this.dirtiedDate = new Date(this.dirtiedDate); - } + } // Check if object has getter for content_type, and if so, skip + - // Check if object has getter for content_type, and if so, skip if (!this.content_type) { this.content_type = json.content_type; - } - - // this.content = json.content will copy it by reference rather than value. So we need to do a deep merge after. + } // this.content = json.content will copy it by reference rather than value. So we need to do a deep merge after. // json.content can still be a string here. We copy it to this.content, then do a deep merge to transfer over all values. + if (json.errorDecrypting) { this.content = json.content; } else { @@ -9089,13 +9376,14 @@ var SFItem = exports.SFItem = function () { } catch (e) { console.log("Error while updating item from json", e); } - } + } // Manually merge top level data instead of wholesale merge + - // Manually merge top level data instead of wholesale merge if (json.created_at) { this.created_at = json.created_at; - } - // Could be null if we're mapping from an extension bridge, where we remove this as its a private property. + } // Could be null if we're mapping from an extension bridge, where we remove this as its a private property. + + if (json.updated_at) { this.updated_at = json.updated_at; } @@ -9111,8 +9399,9 @@ var SFItem = exports.SFItem = function () { } else { this.updated_at = new Date(0); } // Epoch - // Allows the getter to be re-invoked + + this._client_updated_at = null; if (json.content) { @@ -9137,10 +9426,8 @@ var SFItem = exports.SFItem = function () { Since our own structureParams gets a real-time copy of our content, it should be safe to merge the aggregate value back into our own content field. */ var content = this.structureParams(); + SFItem.deepMerge(this.contentObject, content); // Return the content item copy and not our actual value, as we don't want it to be mutated outside our control. - SFItem.deepMerge(this.contentObject, content); - - // Return the content item copy and not our actual value, as we don't want it to be mutated outside our control. return content; } }, { @@ -9148,34 +9435,32 @@ var SFItem = exports.SFItem = function () { value: function structureParams() { return this.getContentCopy(); } - /* Allows the item to handle the case where the item is deleted and the content is null */ }, { key: "handleDeletedContent", - value: function handleDeletedContent() { - // Subclasses can override + value: function handleDeletedContent() {// Subclasses can override } }, { key: "setDirty", value: function setDirty(dirty, updateClientDate) { - this.dirty = dirty; - - // Allows the syncManager to check if an item has been marked dirty after a sync has been started + this.dirty = dirty; // Allows the syncManager to check if an item has been marked dirty after a sync has been started // This prevents it from clearing it as a dirty item after sync completion, if someone else has marked it dirty // again after an ongoing sync. + if (!this.dirtyCount) { this.dirtyCount = 0; } + if (dirty) { this.dirtyCount++; } else { this.dirtyCount = 0; - } - - // Used internally by syncManager to determine if a dirted item needs to be saved offline. + } // Used internally by syncManager to determine if a dirted item needs to be saved offline. // You want to set this in both cases, when dirty is true and false. If it's false, we still need // to save it to disk as an update. + + this.dirtiedDate = new Date(); if (dirty && updateClientDate) { @@ -9188,8 +9473,7 @@ var SFItem = exports.SFItem = function () { } }, { key: "updateLocalRelationships", - value: function updateLocalRelationships() { - // optional override + value: function updateLocalRelationships() {// optional override } }, { key: "addItemAsRelationship", @@ -9212,26 +9496,29 @@ var SFItem = exports.SFItem = function () { value: function removeItemAsRelationship(item) { item.setIsNoLongerBeingReferencedBy(this); this.removeReferenceWithUuid(item.uuid); - } - - // When another object has a relationship with us, we push that object into memory here. + } // When another object has a relationship with us, we push that object into memory here. // We use this so that when `this` is deleted, we're able to update the references of those other objects. }, { key: "setIsBeingReferencedBy", value: function setIsBeingReferencedBy(item) { - if (!_.find(this.referencingObjects, { uuid: item.uuid })) { + if (!_.find(this.referencingObjects, { + uuid: item.uuid + })) { this.referencingObjects.push(item); } } }, { key: "setIsNoLongerBeingReferencedBy", value: function setIsNoLongerBeingReferencedBy(item) { - _.remove(this.referencingObjects, { uuid: item.uuid }); - // Legacy two-way relationships should be handled here + _.remove(this.referencingObjects, { + uuid: item.uuid + }); // Legacy two-way relationships should be handled here + + if (this.hasRelationshipWithItem(item)) { - this.removeReferenceWithUuid(item.uuid); - // We really shouldn't have the authority to set this item as dirty, but it's the only way to save this change. + this.removeReferenceWithUuid(item.uuid); // We really shouldn't have the authority to set this item as dirty, but it's the only way to save this change. + this.setDirty(true); } } @@ -9260,20 +9547,19 @@ var SFItem = exports.SFItem = function () { value: function didFinishSyncing() {} }, { key: "informReferencesOfUUIDChange", - value: function informReferencesOfUUIDChange(oldUUID, newUUID) { - // optional override + value: function informReferencesOfUUIDChange(oldUUID, newUUID) {// optional override } }, { key: "potentialItemOfInterestHasChangedItsUUID", value: function potentialItemOfInterestHasChangedItsUUID(newItem, oldUUID, newUUID) { // optional override - var _iteratorNormalCompletion51 = true; - var _didIteratorError51 = false; - var _iteratorError51 = undefined; + var _iteratorNormalCompletion48 = true; + var _didIteratorError48 = false; + var _iteratorError48 = undefined; try { - for (var _iterator51 = this.content.references[Symbol.iterator](), _step51; !(_iteratorNormalCompletion51 = (_step51 = _iterator51.next()).done); _iteratorNormalCompletion51 = true) { - var reference = _step51.value; + for (var _iterator48 = this.content.references[Symbol.iterator](), _step48; !(_iteratorNormalCompletion48 = (_step48 = _iterator48.next()).done); _iteratorNormalCompletion48 = true) { + var reference = _step48.value; if (reference.uuid == oldUUID) { reference.uuid = newUUID; @@ -9281,16 +9567,16 @@ var SFItem = exports.SFItem = function () { } } } catch (err) { - _didIteratorError51 = true; - _iteratorError51 = err; + _didIteratorError48 = true; + _iteratorError48 = err; } finally { try { - if (!_iteratorNormalCompletion51 && _iterator51.return) { - _iterator51.return(); + if (!_iteratorNormalCompletion48 && _iterator48["return"] != null) { + _iterator48["return"](); } } finally { - if (_didIteratorError51) { - throw _iteratorError51; + if (_didIteratorError48) { + throw _iteratorError48; } } } @@ -9300,7 +9586,6 @@ var SFItem = exports.SFItem = function () { value: function doNotEncrypt() { return false; } - /* App Data */ @@ -9322,9 +9607,11 @@ var SFItem = exports.SFItem = function () { } var data = this.content.appData[domain]; + if (!data) { data = {}; } + data[key] = value; this.content.appData[domain] = data; } @@ -9345,6 +9632,7 @@ var SFItem = exports.SFItem = function () { } var data = this.content.appData[domain]; + if (data) { return data[key]; } else { @@ -9369,7 +9657,6 @@ var SFItem = exports.SFItem = function () { }, { key: "keysToIgnoreWhenCheckingContentEquality", - /* During sync conflicts, when determing whether to create a duplicate for an item, we can omit keys that have no meaningful weight and can be ignored. For example, if one component has active = true and another component has active = false, @@ -9377,9 +9664,7 @@ var SFItem = exports.SFItem = function () { */ value: function keysToIgnoreWhenCheckingContentEquality() { return []; - } - - // Same as above, but keys inside appData[Item.AppDomain] + } // Same as above, but keys inside appData[Item.AppDomain] }, { key: "appDataKeysToIgnoreWhenCheckingContentEquality", @@ -9415,7 +9700,6 @@ var SFItem = exports.SFItem = function () { */ return SFPredicate.ItemSatisfiesPredicate(this, predicate); } - /* Dates */ @@ -9450,6 +9734,7 @@ var SFItem = exports.SFItem = function () { minute: '2-digit' }); } + return dateFormatter.format(date); } else { // IE < 11, Safari <= 9.0. @@ -9461,7 +9746,6 @@ var SFItem = exports.SFItem = function () { }, { key: "contentObject", get: function get() { - if (this.errorDecrypting) { return this.content; } @@ -9500,9 +9784,7 @@ var SFItem = exports.SFItem = function () { key: "locked", get: function get() { return this.getAppDataItem("locked"); - } - - // May be used by clients to display the human readable type for this item. Should be overriden by subclasses. + } // May be used by clients to display the human readable type for this item. Should be overriden by subclasses. }, { key: "displayName", @@ -9514,17 +9796,18 @@ var SFItem = exports.SFItem = function () { get: function get() { if (!this._client_updated_at) { var saved = this.getAppDataItem("client_updated_at"); + if (saved) { this._client_updated_at = new Date(saved); } else { this._client_updated_at = new Date(this.updated_at); } } + return this._client_updated_at; }, set: function set(date) { this._client_updated_at = date; - this.setAppDataItem("client_updated_at", date); } }], [{ @@ -9537,62 +9820,66 @@ var SFItem = exports.SFItem = function () { return srcValue; } } + _.mergeWith(a, b, mergeCopyArrays); + return a; } }, { key: "AreItemContentsEqual", - value: function AreItemContentsEqual(_ref121) { - var leftContent = _ref121.leftContent, - rightContent = _ref121.rightContent, - keysToIgnore = _ref121.keysToIgnore, - appDataKeysToIgnore = _ref121.appDataKeysToIgnore; + value: function AreItemContentsEqual(_ref26) { + var leftContent = _ref26.leftContent, + rightContent = _ref26.rightContent, + keysToIgnore = _ref26.keysToIgnore, + appDataKeysToIgnore = _ref26.appDataKeysToIgnore; var omit = function omit(obj, keys) { if (!obj) { return obj; } - var _iteratorNormalCompletion52 = true; - var _didIteratorError52 = false; - var _iteratorError52 = undefined; + + var _iteratorNormalCompletion49 = true; + var _didIteratorError49 = false; + var _iteratorError49 = undefined; try { - for (var _iterator52 = keys[Symbol.iterator](), _step52; !(_iteratorNormalCompletion52 = (_step52 = _iterator52.next()).done); _iteratorNormalCompletion52 = true) { - var key = _step52.value; - + for (var _iterator49 = keys[Symbol.iterator](), _step49; !(_iteratorNormalCompletion49 = (_step49 = _iterator49.next()).done); _iteratorNormalCompletion49 = true) { + var key = _step49.value; delete obj[key]; } } catch (err) { - _didIteratorError52 = true; - _iteratorError52 = err; + _didIteratorError49 = true; + _iteratorError49 = err; } finally { try { - if (!_iteratorNormalCompletion52 && _iterator52.return) { - _iterator52.return(); + if (!_iteratorNormalCompletion49 && _iterator49["return"] != null) { + _iterator49["return"](); } } finally { - if (_didIteratorError52) { - throw _iteratorError52; + if (_didIteratorError49) { + throw _iteratorError49; } } } return obj; - }; + }; // Create copies of objects before running omit as not to modify source values directly. + - // Create copies of objects before running omit as not to modify source values directly. leftContent = JSON.parse(JSON.stringify(leftContent)); + if (leftContent.appData) { omit(leftContent.appData[SFItem.AppDomain], appDataKeysToIgnore); } - leftContent = omit(leftContent, keysToIgnore); + leftContent = omit(leftContent, keysToIgnore); rightContent = JSON.parse(JSON.stringify(rightContent)); + if (rightContent.appData) { omit(rightContent.appData[SFItem.AppDomain], appDataKeysToIgnore); } - rightContent = omit(rightContent, keysToIgnore); + rightContent = omit(rightContent, keysToIgnore); return JSON.stringify(leftContent) === JSON.stringify(rightContent); } }]); @@ -9600,8 +9887,12 @@ var SFItem = exports.SFItem = function () { return SFItem; }(); +exports.SFItem = SFItem; ; -var SFItemParams = exports.SFItemParams = function () { + +var SFItemParams = +/*#__PURE__*/ +function () { function SFItemParams(item, keys, auth_params) { _classCallCheck(this, SFItemParams); @@ -9621,7 +9912,9 @@ var SFItemParams = exports.SFItemParams = function () { _createClass(SFItemParams, [{ key: "paramsForExportFile", value: function () { - var _ref122 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee111(includeDeleted) { + var _paramsForExportFile = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee111(includeDeleted) { var result; return regeneratorRuntime.wrap(function _callee111$(_context112) { while (1) { @@ -9652,8 +9945,8 @@ var SFItemParams = exports.SFItemParams = function () { }, _callee111, this); })); - function paramsForExportFile(_x153) { - return _ref122.apply(this, arguments); + function paramsForExportFile(_x142) { + return _paramsForExportFile.apply(this, arguments); } return paramsForExportFile; @@ -9661,7 +9954,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForExtension", value: function () { - var _ref123 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee112() { + var _paramsForExtension = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee112() { return regeneratorRuntime.wrap(function _callee112$(_context113) { while (1) { switch (_context113.prev = _context113.next) { @@ -9677,7 +9972,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForExtension() { - return _ref123.apply(this, arguments); + return _paramsForExtension.apply(this, arguments); } return paramsForExtension; @@ -9685,7 +9980,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForLocalStorage", value: function () { - var _ref124 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee113() { + var _paramsForLocalStorage = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee113() { return regeneratorRuntime.wrap(function _callee113$(_context114) { while (1) { switch (_context114.prev = _context114.next) { @@ -9703,7 +10000,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForLocalStorage() { - return _ref124.apply(this, arguments); + return _paramsForLocalStorage.apply(this, arguments); } return paramsForLocalStorage; @@ -9711,7 +10008,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForSync", value: function () { - var _ref125 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee114() { + var _paramsForSync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee114() { return regeneratorRuntime.wrap(function _callee114$(_context115) { while (1) { switch (_context115.prev = _context115.next) { @@ -9727,7 +10026,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForSync() { - return _ref125.apply(this, arguments); + return _paramsForSync.apply(this, arguments); } return paramsForSync; @@ -9735,13 +10034,21 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "__params", value: function () { - var _ref126 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee115() { + var _params = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee115() { var params, doNotEncrypt, encryptedParams; return regeneratorRuntime.wrap(function _callee115$(_context116) { while (1) { switch (_context116.prev = _context116.next) { case 0: - params = { uuid: this.item.uuid, content_type: this.item.content_type, deleted: this.item.deleted, created_at: this.item.created_at, updated_at: this.item.updated_at }; + params = { + uuid: this.item.uuid, + content_type: this.item.content_type, + deleted: this.item.deleted, + created_at: this.item.created_at, + updated_at: this.item.updated_at + }; if (this.item.errorDecrypting) { _context116.next = 23; @@ -9767,6 +10074,7 @@ var SFItemParams = exports.SFItemParams = function () { if (this.auth_params.version !== "001") { params.auth_hash = null; } + _context116.next = 21; break; @@ -9807,7 +10115,6 @@ var SFItemParams = exports.SFItemParams = function () { params.auth_hash = this.item.auth_hash; case 26: - if (this.additionalFields) { _.merge(params, _.pick(this.item, this.additionalFields)); } @@ -9823,7 +10130,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function __params() { - return _ref126.apply(this, arguments); + return _params.apply(this, arguments); } return __params; @@ -9833,18 +10140,21 @@ var SFItemParams = exports.SFItemParams = function () { return SFItemParams; }(); +exports.SFItemParams = SFItemParams; ; -var SFPredicate = exports.SFPredicate = function () { + +var SFPredicate = +/*#__PURE__*/ +function () { function SFPredicate(keypath, operator, value) { _classCallCheck(this, SFPredicate); this.keypath = keypath; this.operator = operator; - this.value = value; - - // Preprocessing to make predicate evaluation faster. + this.value = value; // Preprocessing to make predicate evaluation faster. // Won't recurse forever, but with arbitrarily large input could get stuck. Hope there are input size limits // somewhere else. + if (SFPredicate.IsRecursiveOperator(this.operator)) { this.value = this.value.map(SFPredicate.fromArray); } @@ -9866,59 +10176,60 @@ var SFPredicate = exports.SFPredicate = function () { if (SFPredicate.IsRecursiveOperator(predicate.operator)) { if (predicate.operator === "and") { - var _iteratorNormalCompletion53 = true; - var _didIteratorError53 = false; - var _iteratorError53 = undefined; + var _iteratorNormalCompletion50 = true; + var _didIteratorError50 = false; + var _iteratorError50 = undefined; try { - for (var _iterator53 = predicate.value[Symbol.iterator](), _step53; !(_iteratorNormalCompletion53 = (_step53 = _iterator53.next()).done); _iteratorNormalCompletion53 = true) { - var subPredicate = _step53.value; + for (var _iterator50 = predicate.value[Symbol.iterator](), _step50; !(_iteratorNormalCompletion50 = (_step50 = _iterator50.next()).done); _iteratorNormalCompletion50 = true) { + var subPredicate = _step50.value; if (!this.ObjectSatisfiesPredicate(object, subPredicate)) { return false; } } } catch (err) { - _didIteratorError53 = true; - _iteratorError53 = err; + _didIteratorError50 = true; + _iteratorError50 = err; } finally { try { - if (!_iteratorNormalCompletion53 && _iterator53.return) { - _iterator53.return(); + if (!_iteratorNormalCompletion50 && _iterator50["return"] != null) { + _iterator50["return"](); } } finally { - if (_didIteratorError53) { - throw _iteratorError53; + if (_didIteratorError50) { + throw _iteratorError50; } } } return true; } + if (predicate.operator === "or") { - var _iteratorNormalCompletion54 = true; - var _didIteratorError54 = false; - var _iteratorError54 = undefined; + var _iteratorNormalCompletion51 = true; + var _didIteratorError51 = false; + var _iteratorError51 = undefined; try { - for (var _iterator54 = predicate.value[Symbol.iterator](), _step54; !(_iteratorNormalCompletion54 = (_step54 = _iterator54.next()).done); _iteratorNormalCompletion54 = true) { - var subPredicate = _step54.value; + for (var _iterator51 = predicate.value[Symbol.iterator](), _step51; !(_iteratorNormalCompletion51 = (_step51 = _iterator51.next()).done); _iteratorNormalCompletion51 = true) { + var subPredicate = _step51.value; if (this.ObjectSatisfiesPredicate(object, subPredicate)) { return true; } } } catch (err) { - _didIteratorError54 = true; - _iteratorError54 = err; + _didIteratorError51 = true; + _iteratorError51 = err; } finally { try { - if (!_iteratorNormalCompletion54 && _iterator54.return) { - _iterator54.return(); + if (!_iteratorNormalCompletion51 && _iterator51["return"] != null) { + _iterator51["return"](); } } finally { - if (_didIteratorError54) { - throw _iteratorError54; + if (_didIteratorError51) { + throw _iteratorError51; } } } @@ -9928,6 +10239,7 @@ var SFPredicate = exports.SFPredicate = function () { } var predicateValue = predicate.value; + if (typeof predicateValue == 'string' && predicateValue.includes(".ago")) { predicateValue = this.DateFromString(predicateValue); } @@ -9935,10 +10247,8 @@ var SFPredicate = exports.SFPredicate = function () { var valueAtKeyPath = predicate.keypath.split('.').reduce(function (previous, current) { return previous && previous[current]; }, object); + var falseyValues = [false, "", null, undefined, NaN]; // If the value at keyPath is undefined, either because the property is nonexistent or the value is null. - var falseyValues = [false, "", null, undefined, NaN]; - - // If the value at keyPath is undefined, either because the property is nonexistent or the value is null. if (valueAtKeyPath == undefined) { if (predicate.operator == "!=") { return !falseyValues.includes(predicate.value); @@ -9992,34 +10302,36 @@ var SFPredicate = exports.SFPredicate = function () { } else { // is a predicate array or predicate object var innerPredicate; + if (Array.isArray(predicateValue)) { innerPredicate = SFPredicate.fromArray(predicateValue); } else { innerPredicate = predicateValue; } - var _iteratorNormalCompletion55 = true; - var _didIteratorError55 = false; - var _iteratorError55 = undefined; + + var _iteratorNormalCompletion52 = true; + var _didIteratorError52 = false; + var _iteratorError52 = undefined; try { - for (var _iterator55 = valueAtKeyPath[Symbol.iterator](), _step55; !(_iteratorNormalCompletion55 = (_step55 = _iterator55.next()).done); _iteratorNormalCompletion55 = true) { - var obj = _step55.value; + for (var _iterator52 = valueAtKeyPath[Symbol.iterator](), _step52; !(_iteratorNormalCompletion52 = (_step52 = _iterator52.next()).done); _iteratorNormalCompletion52 = true) { + var obj = _step52.value; if (this.ObjectSatisfiesPredicate(obj, innerPredicate)) { return true; } } } catch (err) { - _didIteratorError55 = true; - _iteratorError55 = err; + _didIteratorError52 = true; + _iteratorError52 = err; } finally { try { - if (!_iteratorNormalCompletion55 && _iterator55.return) { - _iterator55.return(); + if (!_iteratorNormalCompletion52 && _iterator52["return"] != null) { + _iterator52["return"](); } } finally { - if (_didIteratorError55) { - throw _iteratorError55; + if (_didIteratorError52) { + throw _iteratorError52; } } } @@ -10033,34 +10345,35 @@ var SFPredicate = exports.SFPredicate = function () { if (Array.isArray(predicate)) { predicate = SFPredicate.fromArray(predicate); } + return this.ObjectSatisfiesPredicate(item, predicate); } }, { key: "ItemSatisfiesPredicates", value: function ItemSatisfiesPredicates(item, predicates) { - var _iteratorNormalCompletion56 = true; - var _didIteratorError56 = false; - var _iteratorError56 = undefined; + var _iteratorNormalCompletion53 = true; + var _didIteratorError53 = false; + var _iteratorError53 = undefined; try { - for (var _iterator56 = predicates[Symbol.iterator](), _step56; !(_iteratorNormalCompletion56 = (_step56 = _iterator56.next()).done); _iteratorNormalCompletion56 = true) { - var predicate = _step56.value; + for (var _iterator53 = predicates[Symbol.iterator](), _step53; !(_iteratorNormalCompletion53 = (_step53 = _iterator53.next()).done); _iteratorNormalCompletion53 = true) { + var predicate = _step53.value; if (!this.ItemSatisfiesPredicate(item, predicate)) { return false; } } } catch (err) { - _didIteratorError56 = true; - _iteratorError56 = err; + _didIteratorError53 = true; + _iteratorError53 = err; } finally { try { - if (!_iteratorNormalCompletion56 && _iterator56.return) { - _iterator56.return(); + if (!_iteratorNormalCompletion53 && _iterator53["return"] != null) { + _iterator53["return"](); } } finally { - if (_didIteratorError56) { - throw _iteratorError56; + if (_didIteratorError53) { + throw _iteratorError53; } } } @@ -10075,11 +10388,13 @@ var SFPredicate = exports.SFPredicate = function () { var unit = comps[1]; var date = new Date(); var offset = parseInt(comps[0]); + if (unit == "days") { date.setDate(date.getDate() - offset); } else if (unit == "hours") { date.setHours(date.getHours() - offset); } + return date; } }, { @@ -10092,8 +10407,12 @@ var SFPredicate = exports.SFPredicate = function () { return SFPredicate; }(); +exports.SFPredicate = SFPredicate; ; -var SFPrivileges = exports.SFPrivileges = function (_SFItem) { + +var SFPrivileges = +/*#__PURE__*/ +function (_SFItem) { _inherits(SFPrivileges, _SFItem); _createClass(SFPrivileges, null, [{ @@ -10105,13 +10424,16 @@ var SFPrivileges = exports.SFPrivileges = function (_SFItem) { }]); function SFPrivileges(json_obj) { + var _this28; + _classCallCheck(this, SFPrivileges); - var _this28 = _possibleConstructorReturn(this, (SFPrivileges.__proto__ || Object.getPrototypeOf(SFPrivileges)).call(this, json_obj)); + _this28 = _possibleConstructorReturn(this, _getPrototypeOf(SFPrivileges).call(this, json_obj)); if (!_this28.content.desktopPrivileges) { _this28.content.desktopPrivileges = {}; } + return _this28; } @@ -10157,23 +10479,29 @@ var SFPrivileges = exports.SFPrivileges = function (_SFItem) { return SFPrivileges; }(SFItem); -; /* - Important: This is the only object in the session history domain that is persistable. - A history session contains one main content object: - the itemUUIDToItemHistoryMapping. This is a dictionary whose keys are item uuids, - and each value is an SFItemHistory object. - Each SFItemHistory object contains an array called `entires` which contain `SFItemHistory` entries (or subclasses, if the - `SFItemHistory.HistoryEntryClassMapping` class property value is set.) - */ - +exports.SFPrivileges = SFPrivileges; +; +/* + Important: This is the only object in the session history domain that is persistable. + A history session contains one main content object: + the itemUUIDToItemHistoryMapping. This is a dictionary whose keys are item uuids, + and each value is an SFItemHistory object. + Each SFItemHistory object contains an array called `entires` which contain `SFItemHistory` entries (or subclasses, if the + `SFItemHistory.HistoryEntryClassMapping` class property value is set.) +*/ // See default class values at bottom of this file, including `SFHistorySession.LargeItemEntryAmountThreshold`. -var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { +var SFHistorySession = +/*#__PURE__*/ +function (_SFItem2) { _inherits(SFHistorySession, _SFItem2); function SFHistorySession(json_obj) { + var _this29; + _classCallCheck(this, SFHistorySession); + _this29 = _possibleConstructorReturn(this, _getPrototypeOf(SFHistorySession).call(this, json_obj)); /* Our .content params: { @@ -10181,13 +10509,11 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { } */ - var _this29 = _possibleConstructorReturn(this, (SFHistorySession.__proto__ || Object.getPrototypeOf(SFHistorySession)).call(this, json_obj)); - if (!_this29.content.itemUUIDToItemHistoryMapping) { _this29.content.itemUUIDToItemHistoryMapping = {}; - } + } // When initializing from a json_obj, we want to deserialize the item history JSON into SFItemHistory objects. + - // When initializing from a json_obj, we want to deserialize the item history JSON into SFItemHistory objects. var uuids = Object.keys(_this29.content.itemUUIDToItemHistoryMapping); uuids.forEach(function (itemUUID) { var itemHistory = _this29.content.itemUUIDToItemHistoryMapping[itemUUID]; @@ -10207,9 +10533,11 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { key: "historyForItem", value: function historyForItem(item) { var history = this.content.itemUUIDToItemHistoryMapping[item.uuid]; + if (!history) { history = this.content.itemUUIDToItemHistoryMapping[item.uuid] = new SFItemHistory(); } + return history; } }, { @@ -10229,6 +10557,7 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { // for an optimization. An optimization may not remove entries above this threshold. It will determine what it should keep and what it shouldn't. // So, it is possible to have a threshold of 60 but have 600 entries, if the item history deems those worth keeping. var itemHistory = this.historyForItem(item); + if (itemHistory.entries.length > SFHistorySession.LargeItemEntryAmountThreshold) { itemHistory.optimize(); } @@ -10236,15 +10565,16 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { }]); return SFHistorySession; -}(SFItem); - -// See comment in `this.optimizeHistoryForItem` +}(SFItem); // See comment in `this.optimizeHistoryForItem` +exports.SFHistorySession = SFHistorySession; SFHistorySession.LargeItemEntryAmountThreshold = 60; ; // See default class values at bottom of this file, including `SFItemHistory.LargeEntryDeltaThreshold`. -var SFItemHistory = exports.SFItemHistory = function () { +var SFItemHistory = +/*#__PURE__*/ +function () { function SFItemHistory() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -10252,33 +10582,32 @@ var SFItemHistory = exports.SFItemHistory = function () { if (!this.entries) { this.entries = []; - } + } // Deserialize the entries into entry objects. + - // Deserialize the entries into entry objects. if (params.entries) { - var _iteratorNormalCompletion57 = true; - var _didIteratorError57 = false; - var _iteratorError57 = undefined; + var _iteratorNormalCompletion54 = true; + var _didIteratorError54 = false; + var _iteratorError54 = undefined; try { - for (var _iterator57 = params.entries[Symbol.iterator](), _step57; !(_iteratorNormalCompletion57 = (_step57 = _iterator57.next()).done); _iteratorNormalCompletion57 = true) { - var entryParams = _step57.value; - + for (var _iterator54 = params.entries[Symbol.iterator](), _step54; !(_iteratorNormalCompletion54 = (_step54 = _iterator54.next()).done); _iteratorNormalCompletion54 = true) { + var entryParams = _step54.value; var entry = this.createEntryForItem(entryParams.item); entry.setPreviousEntry(this.getLastEntry()); this.entries.push(entry); } } catch (err) { - _didIteratorError57 = true; - _iteratorError57 = err; + _didIteratorError54 = true; + _iteratorError54 = err; } finally { try { - if (!_iteratorNormalCompletion57 && _iterator57.return) { - _iterator57.return(); + if (!_iteratorNormalCompletion54 && _iterator54["return"] != null) { + _iterator54["return"](); } } finally { - if (_didIteratorError57) { - throw _iteratorError57; + if (_didIteratorError54) { + throw _iteratorError54; } } } @@ -10289,9 +10618,11 @@ var SFItemHistory = exports.SFItemHistory = function () { key: "createEntryForItem", value: function createEntryForItem(item) { var historyItemClass = SFItemHistory.HistoryEntryClassMapping && SFItemHistory.HistoryEntryClassMapping[item.content_type]; + if (!historyItemClass) { historyItemClass = SFItemHistoryEntry; } + var entry = new historyItemClass(item); return entry; } @@ -10304,18 +10635,15 @@ var SFItemHistory = exports.SFItemHistory = function () { key: "addHistoryEntryForItem", value: function addHistoryEntryForItem(item) { var prospectiveEntry = this.createEntryForItem(item); - var previousEntry = this.getLastEntry(); - prospectiveEntry.setPreviousEntry(previousEntry); - - // Don't add first revision if text length is 0, as this means it's a new note. + prospectiveEntry.setPreviousEntry(previousEntry); // Don't add first revision if text length is 0, as this means it's a new note. // Actually, nevermind. If we do this, the first character added to a new note // will be displayed as "1 characters loaded". // if(!previousRevision && prospectiveRevision.textCharDiffLength == 0) { // return; // } - // Don't add if text is the same + if (prospectiveEntry.isSameAsEntry(previousEntry)) { return; } @@ -10346,6 +10674,7 @@ var SFItemHistory = exports.SFItemHistory = function () { } else { // Remove if in keep var index = keepEntries.indexOf(entry); + if (index !== -1) { keepEntries.splice(index, 1); } @@ -10354,6 +10683,7 @@ var SFItemHistory = exports.SFItemHistory = function () { if (keep && isEntrySignificant(entry) && entry.operationVector() == -1) { // This is a large negative change. Hang on to the previous entry. var previousEntry = _this30.entries[index - 1]; + if (previousEntry) { keepEntries.push(previousEntry); } @@ -10369,7 +10699,6 @@ var SFItemHistory = exports.SFItemHistory = function () { processEntry(entry, index, significant); } }); - this.entries = this.entries.filter(function (entry, index) { return keepEntries.indexOf(entry) !== -1; }); @@ -10377,24 +10706,24 @@ var SFItemHistory = exports.SFItemHistory = function () { }]); return SFItemHistory; -}(); - -// The amount of characters added or removed that constitute a keepable entry after optimization. +}(); // The amount of characters added or removed that constitute a keepable entry after optimization. +exports.SFItemHistory = SFItemHistory; SFItemHistory.LargeEntryDeltaThreshold = 15; ; -var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { + +var SFItemHistoryEntry = +/*#__PURE__*/ +function () { function SFItemHistoryEntry(item) { _classCallCheck(this, SFItemHistoryEntry); // Whatever values `item` has will be persisted, so be sure that the values are picked beforehand. - this.item = SFItem.deepMerge({}, item); + this.item = SFItem.deepMerge({}, item); // We'll assume a `text` content value to diff on. If it doesn't exist, no problem. - // We'll assume a `text` content value to diff on. If it doesn't exist, no problem. - this.defaultContentKeyToDiffOn = "text"; + this.defaultContentKeyToDiffOn = "text"; // Default value - // Default value this.textCharDiffLength = 0; if (typeof this.item.updated_at == 'string') { @@ -10405,9 +10734,8 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { _createClass(SFItemHistoryEntry, [{ key: "setPreviousEntry", value: function setPreviousEntry(previousEntry) { - this.hasPreviousEntry = previousEntry != null; + this.hasPreviousEntry = previousEntry != null; // we'll try to compute the delta based on an assumed content property of `text`, if it exists. - // we'll try to compute the delta based on an assumed content property of `text`, if it exists. if (this.item.content[this.defaultContentKeyToDiffOn]) { if (previousEntry) { this.textCharDiffLength = this.item.content[this.defaultContentKeyToDiffOn].length - previousEntry.item.content[this.defaultContentKeyToDiffOn].length; @@ -10428,9 +10756,9 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { } else { return 1; } - } + } // Otherwise use a default value of 1 + - // Otherwise use a default value of 1 return 1; } }, { @@ -10438,14 +10766,13 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { value: function deltaSize() { // Up to the subclass to determine how large the delta was, i.e number of characters changed. // But this general class won't be able to determine which property it should diff on, or even its format. - // We can return the `textCharDiffLength` if it's set, otherwise, just return 1; if (this.textCharDiffLength != undefined) { return Math.abs(this.textCharDiffLength); - } - - // Otherwise return 1 here to constitute a basic positive delta. + } // Otherwise return 1 here to constitute a basic positive delta. // The value returned should always be positive. override `operationVector` to return the direction of the delta. + + return 1; } }, { @@ -10464,15 +10791,19 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { return SFItemHistoryEntry; }(); -; /* - Abstract class with default implementations of some crypto functions. - Instantiate an instance of either SFCryptoJS (uses cryptojs) or SFCryptoWeb (uses web crypto) - These subclasses may override some of the functions in this abstract class. - */ +exports.SFItemHistoryEntry = SFItemHistoryEntry; +; +/* + Abstract class with default implementations of some crypto functions. + Instantiate an instance of either SFCryptoJS (uses cryptojs) or SFCryptoWeb (uses web crypto) + These subclasses may override some of the functions in this abstract class. +*/ var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var SFAbstractCrypto = exports.SFAbstractCrypto = function () { +var SFAbstractCrypto = +/*#__PURE__*/ +function () { function SFAbstractCrypto() { _classCallCheck(this, SFAbstractCrypto); @@ -10483,6 +10814,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { key: "generateUUIDSync", value: function generateUUIDSync() { var crypto = globalScope.crypto || globalScope.msCrypto; + if (crypto) { var buf = new Uint32Array(4); crypto.getRandomValues(buf); @@ -10495,9 +10827,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }); } else { var d = new Date().getTime(); + if (globalScope.performance && typeof globalScope.performance.now === "function") { d += performance.now(); //use high-precision timer if available } + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -10509,7 +10843,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateUUID", value: function () { - var _ref127 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee116() { + var _generateUUID = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee116() { return regeneratorRuntime.wrap(function _callee116$(_context117) { while (1) { switch (_context117.prev = _context117.next) { @@ -10525,64 +10861,98 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateUUID() { - return _ref127.apply(this, arguments); + return _generateUUID.apply(this, arguments); } return generateUUID; }() + /* Constant-time string comparison */ + + }, { + key: "timingSafeEqual", + value: function timingSafeEqual(a, b) { + var strA = String(a); + var strB = String(b); + var lenA = strA.length; + var result = 0; + + if (lenA !== strB.length) { + strB = strA; + result = 1; + } + + for (var i = 0; i < lenA; i++) { + result |= strA.charCodeAt(i) ^ strB.charCodeAt(i); + } + + return result === 0; + } }, { key: "decryptText", value: function () { - var _ref128 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee117() { - var _ref129 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - ciphertextToAuth = _ref129.ciphertextToAuth, - contentCiphertext = _ref129.contentCiphertext, - encryptionKey = _ref129.encryptionKey, - iv = _ref129.iv, - authHash = _ref129.authHash, - authKey = _ref129.authKey; + var _decryptText = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee117() { + var _ref27, + ciphertextToAuth, + contentCiphertext, + encryptionKey, + iv, + authHash, + authKey, + requiresAuth, + localAuthHash, + keyData, + ivData, + decrypted, + _args118 = arguments; - var requiresAuth = arguments[1]; - var localAuthHash, keyData, ivData, decrypted; return regeneratorRuntime.wrap(function _callee117$(_context118) { while (1) { switch (_context118.prev = _context118.next) { case 0: + _ref27 = _args118.length > 0 && _args118[0] !== undefined ? _args118[0] : {}, ciphertextToAuth = _ref27.ciphertextToAuth, contentCiphertext = _ref27.contentCiphertext, encryptionKey = _ref27.encryptionKey, iv = _ref27.iv, authHash = _ref27.authHash, authKey = _ref27.authKey; + requiresAuth = _args118.length > 1 ? _args118[1] : undefined; + if (!(requiresAuth && !authHash)) { - _context118.next = 3; + _context118.next = 5; break; } console.error("Auth hash is required."); return _context118.abrupt("return"); - case 3: + case 5: if (!authHash) { - _context118.next = 10; + _context118.next = 12; break; } - _context118.next = 6; + _context118.next = 8; return this.hmac256(ciphertextToAuth, authKey); - case 6: + case 8: localAuthHash = _context118.sent; - if (!(authHash !== localAuthHash)) { - _context118.next = 10; + if (!(this.timingSafeEqual(authHash, localAuthHash) === false)) { + _context118.next = 12; break; } console.error("Auth hash does not match, returning null."); return _context118.abrupt("return", null); - case 10: + case 12: keyData = CryptoJS.enc.Hex.parse(encryptionKey); ivData = CryptoJS.enc.Hex.parse(iv || ""); - decrypted = CryptoJS.AES.decrypt(contentCiphertext, keyData, { iv: ivData, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); + decrypted = CryptoJS.AES.decrypt(contentCiphertext, keyData, { + iv: ivData, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); return _context118.abrupt("return", decrypted.toString(CryptoJS.enc.Utf8)); - case 14: + case 16: case "end": return _context118.stop(); } @@ -10591,7 +10961,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function decryptText() { - return _ref128.apply(this, arguments); + return _decryptText.apply(this, arguments); } return decryptText; @@ -10599,7 +10969,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "encryptText", value: function () { - var _ref130 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee118(text, key, iv) { + var _encryptText = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee118(text, key, iv) { var keyData, ivData, encrypted; return regeneratorRuntime.wrap(function _callee118$(_context119) { while (1) { @@ -10607,7 +10979,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { case 0: keyData = CryptoJS.enc.Hex.parse(key); ivData = CryptoJS.enc.Hex.parse(iv || ""); - encrypted = CryptoJS.AES.encrypt(text, keyData, { iv: ivData, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); + encrypted = CryptoJS.AES.encrypt(text, keyData, { + iv: ivData, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); return _context119.abrupt("return", encrypted.toString()); case 4: @@ -10615,11 +10991,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context119.stop(); } } - }, _callee118, this); + }, _callee118); })); - function encryptText(_x156, _x157, _x158) { - return _ref130.apply(this, arguments); + function encryptText(_x143, _x144, _x145) { + return _encryptText.apply(this, arguments); } return encryptText; @@ -10627,7 +11003,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateRandomKey", value: function () { - var _ref131 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee119(bits) { + var _generateRandomKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee119(bits) { return regeneratorRuntime.wrap(function _callee119$(_context120) { while (1) { switch (_context120.prev = _context120.next) { @@ -10639,11 +11017,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context120.stop(); } } - }, _callee119, this); + }, _callee119); })); - function generateRandomKey(_x159) { - return _ref131.apply(this, arguments); + function generateRandomKey(_x146) { + return _generateRandomKey.apply(this, arguments); } return generateRandomKey; @@ -10651,7 +11029,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateItemEncryptionKey", value: function () { - var _ref132 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee120() { + var _generateItemEncryptionKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee120() { var length, cost, salt, passphrase; return regeneratorRuntime.wrap(function _callee120$(_context121) { while (1) { @@ -10681,7 +11061,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateItemEncryptionKey() { - return _ref132.apply(this, arguments); + return _generateItemEncryptionKey.apply(this, arguments); } return generateItemEncryptionKey; @@ -10689,7 +11069,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "firstHalfOfKey", value: function () { - var _ref133 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee121(key) { + var _firstHalfOfKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee121(key) { return regeneratorRuntime.wrap(function _callee121$(_context122) { while (1) { switch (_context122.prev = _context122.next) { @@ -10701,11 +11083,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context122.stop(); } } - }, _callee121, this); + }, _callee121); })); - function firstHalfOfKey(_x160) { - return _ref133.apply(this, arguments); + function firstHalfOfKey(_x147) { + return _firstHalfOfKey.apply(this, arguments); } return firstHalfOfKey; @@ -10713,7 +11095,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "secondHalfOfKey", value: function () { - var _ref134 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee122(key) { + var _secondHalfOfKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee122(key) { return regeneratorRuntime.wrap(function _callee122$(_context123) { while (1) { switch (_context123.prev = _context123.next) { @@ -10725,11 +11109,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context123.stop(); } } - }, _callee122, this); + }, _callee122); })); - function secondHalfOfKey(_x161) { - return _ref134.apply(this, arguments); + function secondHalfOfKey(_x148) { + return _secondHalfOfKey.apply(this, arguments); } return secondHalfOfKey; @@ -10737,7 +11121,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "base64", value: function () { - var _ref135 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee123(text) { + var _base = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee123(text) { return regeneratorRuntime.wrap(function _callee123$(_context124) { while (1) { switch (_context124.prev = _context124.next) { @@ -10751,11 +11137,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context124.stop(); } } - }, _callee123, this); + }, _callee123); })); - function base64(_x162) { - return _ref135.apply(this, arguments); + function base64(_x149) { + return _base.apply(this, arguments); } return base64; @@ -10763,7 +11149,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "base64Decode", value: function () { - var _ref136 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee124(base64String) { + var _base64Decode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee124(base64String) { return regeneratorRuntime.wrap(function _callee124$(_context125) { while (1) { switch (_context125.prev = _context125.next) { @@ -10775,11 +11163,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context125.stop(); } } - }, _callee124, this); + }, _callee124); })); - function base64Decode(_x163) { - return _ref136.apply(this, arguments); + function base64Decode(_x150) { + return _base64Decode.apply(this, arguments); } return base64Decode; @@ -10787,7 +11175,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "sha256", value: function () { - var _ref137 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee125(text) { + var _sha = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee125(text) { return regeneratorRuntime.wrap(function _callee125$(_context126) { while (1) { switch (_context126.prev = _context126.next) { @@ -10799,11 +11189,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context126.stop(); } } - }, _callee125, this); + }, _callee125); })); - function sha256(_x164) { - return _ref137.apply(this, arguments); + function sha256(_x151) { + return _sha.apply(this, arguments); } return sha256; @@ -10811,7 +11201,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "hmac256", value: function () { - var _ref138 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee126(message, key) { + var _hmac = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee126(message, key) { var keyData, messageData, result; return regeneratorRuntime.wrap(function _callee126$(_context127) { while (1) { @@ -10827,11 +11219,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context127.stop(); } } - }, _callee126, this); + }, _callee126); })); - function hmac256(_x165, _x166) { - return _ref138.apply(this, arguments); + function hmac256(_x152, _x153) { + return _hmac.apply(this, arguments); } return hmac256; @@ -10839,7 +11231,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateSalt", value: function () { - var _ref139 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee127(identifier, version, cost, nonce) { + var _generateSalt = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee127(identifier, version, cost, nonce) { var result; return regeneratorRuntime.wrap(function _callee127$(_context128) { while (1) { @@ -10860,33 +11254,41 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee127, this); })); - function generateSalt(_x167, _x168, _x169, _x170) { - return _ref139.apply(this, arguments); + function generateSalt(_x154, _x155, _x156, _x157) { + return _generateSalt.apply(this, arguments); } return generateSalt; }() - /** Generates two deterministic keys based on one input */ }, { key: "generateSymmetricKeyPair", value: function () { - var _ref140 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee128() { - var _ref141 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - password = _ref141.password, - pw_salt = _ref141.pw_salt, - pw_cost = _ref141.pw_cost; + var _generateSymmetricKeyPair = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee128() { + var _ref28, + password, + pw_salt, + pw_cost, + output, + outputLength, + splitLength, + firstThird, + secondThird, + thirdThird, + _args129 = arguments; - var output, outputLength, splitLength, firstThird, secondThird, thirdThird; return regeneratorRuntime.wrap(function _callee128$(_context129) { while (1) { switch (_context129.prev = _context129.next) { case 0: - _context129.next = 2; + _ref28 = _args129.length > 0 && _args129[0] !== undefined ? _args129[0] : {}, password = _ref28.password, pw_salt = _ref28.pw_salt, pw_cost = _ref28.pw_cost; + _context129.next = 3; return this.pbkdf2(password, pw_salt, pw_cost, this.DefaultPBKDF2Length); - case 2: + case 3: output = _context129.sent; outputLength = output.length; splitLength = outputLength / 3; @@ -10895,7 +11297,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { thirdThird = output.slice(splitLength * 2, splitLength * 3); return _context129.abrupt("return", [firstThird, secondThird, thirdThird]); - case 9: + case 10: case "end": return _context129.stop(); } @@ -10904,7 +11306,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateSymmetricKeyPair() { - return _ref140.apply(this, arguments); + return _generateSymmetricKeyPair.apply(this, arguments); } return generateSymmetricKeyPair; @@ -10912,7 +11314,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "computeEncryptionKeysForUser", value: function () { - var _ref142 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee129(password, authParams) { + var _computeEncryptionKeysForUser = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee129(password, authParams) { var pw_salt; return regeneratorRuntime.wrap(function _callee129$(_context130) { while (1) { @@ -10945,8 +11349,16 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { pw_salt = authParams.pw_salt; case 10: - return _context130.abrupt("return", this.generateSymmetricKeyPair({ password: password, pw_salt: pw_salt, pw_cost: authParams.pw_cost }).then(function (keys) { - var userKeys = { pw: keys[0], mk: keys[1], ak: keys[2] }; + return _context130.abrupt("return", this.generateSymmetricKeyPair({ + password: password, + pw_salt: pw_salt, + pw_cost: authParams.pw_cost + }).then(function (keys) { + var userKeys = { + pw: keys[0], + mk: keys[1], + ak: keys[2] + }; return userKeys; })); @@ -10958,19 +11370,19 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee129, this); })); - function computeEncryptionKeysForUser(_x172, _x173) { - return _ref142.apply(this, arguments); + function computeEncryptionKeysForUser(_x158, _x159) { + return _computeEncryptionKeysForUser.apply(this, arguments); } return computeEncryptionKeysForUser; - }() - - // Unlike computeEncryptionKeysForUser, this method always uses the latest SF Version + }() // Unlike computeEncryptionKeysForUser, this method always uses the latest SF Version }, { key: "generateInitialKeysAndAuthParamsForUser", value: function () { - var _ref143 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee130(identifier, password) { + var _generateInitialKeysAndAuthParamsForUser = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee130(identifier, password) { var version, pw_cost, pw_nonce, pw_salt; return regeneratorRuntime.wrap(function _callee130$(_context131) { while (1) { @@ -10988,10 +11400,26 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { case 7: pw_salt = _context131.sent; - return _context131.abrupt("return", this.generateSymmetricKeyPair({ password: password, pw_salt: pw_salt, pw_cost: pw_cost }).then(function (keys) { - var authParams = { pw_nonce: pw_nonce, pw_cost: pw_cost, identifier: identifier, version: version }; - var userKeys = { pw: keys[0], mk: keys[1], ak: keys[2] }; - return { keys: userKeys, authParams: authParams }; + return _context131.abrupt("return", this.generateSymmetricKeyPair({ + password: password, + pw_salt: pw_salt, + pw_cost: pw_cost + }).then(function (keys) { + var authParams = { + pw_nonce: pw_nonce, + pw_cost: pw_cost, + identifier: identifier, + version: version + }; + var userKeys = { + pw: keys[0], + mk: keys[1], + ak: keys[2] + }; + return { + keys: userKeys, + authParams: authParams + }; })); case 9: @@ -11002,8 +11430,8 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee130, this); })); - function generateInitialKeysAndAuthParamsForUser(_x174, _x175) { - return _ref143.apply(this, arguments); + function generateInitialKeysAndAuthParamsForUser(_x160, _x161) { + return _generateInitialKeysAndAuthParamsForUser.apply(this, arguments); } return generateInitialKeysAndAuthParamsForUser; @@ -11013,20 +11441,26 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return SFAbstractCrypto; }(); +exports.SFAbstractCrypto = SFAbstractCrypto; ; -var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { + +var SFCryptoJS = +/*#__PURE__*/ +function (_SFAbstractCrypto) { _inherits(SFCryptoJS, _SFAbstractCrypto); function SFCryptoJS() { _classCallCheck(this, SFCryptoJS); - return _possibleConstructorReturn(this, (SFCryptoJS.__proto__ || Object.getPrototypeOf(SFCryptoJS)).apply(this, arguments)); + return _possibleConstructorReturn(this, _getPrototypeOf(SFCryptoJS).apply(this, arguments)); } _createClass(SFCryptoJS, [{ key: "pbkdf2", value: function () { - var _ref144 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee131(password, pw_salt, pw_cost, length) { + var _pbkdf = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee131(password, pw_salt, pw_cost, length) { var params; return regeneratorRuntime.wrap(function _callee131$(_context132) { while (1) { @@ -11044,11 +11478,11 @@ var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { return _context132.stop(); } } - }, _callee131, this); + }, _callee131); })); - function pbkdf2(_x176, _x177, _x178, _x179) { - return _ref144.apply(this, arguments); + function pbkdf2(_x162, _x163, _x164, _x165) { + return _pbkdf.apply(this, arguments); } return pbkdf2; @@ -11058,29 +11492,32 @@ var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { return SFCryptoJS; }(SFAbstractCrypto); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; - +exports.SFCryptoJS = SFCryptoJS; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; var subtleCrypto = globalScope.crypto ? globalScope.crypto.subtle : null; -var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { +var SFCryptoWeb = +/*#__PURE__*/ +function (_SFAbstractCrypto2) { _inherits(SFCryptoWeb, _SFAbstractCrypto2); function SFCryptoWeb() { _classCallCheck(this, SFCryptoWeb); - return _possibleConstructorReturn(this, (SFCryptoWeb.__proto__ || Object.getPrototypeOf(SFCryptoWeb)).apply(this, arguments)); + return _possibleConstructorReturn(this, _getPrototypeOf(SFCryptoWeb).apply(this, arguments)); } _createClass(SFCryptoWeb, [{ key: "pbkdf2", - /** Public */ - value: function () { - var _ref145 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee132(password, pw_salt, pw_cost, length) { + var _pbkdf2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee132(password, pw_salt, pw_cost, length) { var key; return regeneratorRuntime.wrap(function _callee132$(_context133) { while (1) { @@ -11111,8 +11548,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee132, this); })); - function pbkdf2(_x180, _x181, _x182, _x183) { - return _ref145.apply(this, arguments); + function pbkdf2(_x166, _x167, _x168, _x169) { + return _pbkdf2.apply(this, arguments); } return pbkdf2; @@ -11120,8 +11557,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "generateRandomKey", value: function () { - var _ref146 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee134(bits) { - var _this33 = this; + var _generateRandomKey2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee134(bits) { + var _this31 = this; var extractable; return regeneratorRuntime.wrap(function _callee134$(_context135) { @@ -11129,16 +11568,23 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { switch (_context135.prev = _context135.next) { case 0: extractable = true; - return _context135.abrupt("return", subtleCrypto.generateKey({ name: "AES-CBC", length: bits }, extractable, ["encrypt", "decrypt"]).then(function (keyObject) { - return subtleCrypto.exportKey("raw", keyObject).then(function () { - var _ref147 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee133(keyData) { + return _context135.abrupt("return", subtleCrypto.generateKey({ + name: "AES-CBC", + length: bits + }, extractable, ["encrypt", "decrypt"]).then(function (keyObject) { + return subtleCrypto.exportKey("raw", keyObject).then( + /*#__PURE__*/ + function () { + var _ref29 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee133(keyData) { var key; return regeneratorRuntime.wrap(function _callee133$(_context134) { while (1) { switch (_context134.prev = _context134.next) { case 0: _context134.next = 2; - return _this33.arrayBufferToHexString(new Uint8Array(keyData)); + return _this31.arrayBufferToHexString(new Uint8Array(keyData)); case 2: key = _context134.sent; @@ -11149,16 +11595,16 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context134.stop(); } } - }, _callee133, _this33); + }, _callee133); })); - return function (_x185) { - return _ref147.apply(this, arguments); + return function (_x171) { + return _ref29.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error("Error exporting key", err); }); - }).catch(function (err) { + })["catch"](function (err) { console.error("Error generating key", err); })); @@ -11167,11 +11613,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context135.stop(); } } - }, _callee134, this); + }, _callee134); })); - function generateRandomKey(_x184) { - return _ref146.apply(this, arguments); + function generateRandomKey(_x170) { + return _generateRandomKey2.apply(this, arguments); } return generateRandomKey; @@ -11179,7 +11625,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "generateItemEncryptionKey", value: function () { - var _ref148 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee135() { + var _generateItemEncryptionKey2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee135() { var length; return regeneratorRuntime.wrap(function _callee135$(_context136) { while (1) { @@ -11200,7 +11648,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { })); function generateItemEncryptionKey() { - return _ref148.apply(this, arguments); + return _generateItemEncryptionKey2.apply(this, arguments); } return generateItemEncryptionKey; @@ -11208,8 +11656,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "encryptText", value: function () { - var _ref149 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee137(text, key, iv) { - var _this34 = this; + var _encryptText2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee137(text, key, iv) { + var _this32 = this; var ivData, alg, keyBuffer, keyData, textData; return regeneratorRuntime.wrap(function _callee137$(_context138) { @@ -11234,7 +11684,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 7: ivData = _context138.t0; - alg = { name: 'AES-CBC', iv: ivData }; + alg = { + name: 'AES-CBC', + iv: ivData + }; _context138.next = 11; return this.hexStringToArrayBuffer(key); @@ -11250,15 +11703,19 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 17: textData = _context138.sent; - return _context138.abrupt("return", crypto.subtle.encrypt(alg, keyData, textData).then(function () { - var _ref150 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee136(result) { + return _context138.abrupt("return", crypto.subtle.encrypt(alg, keyData, textData).then( + /*#__PURE__*/ + function () { + var _ref30 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee136(result) { var cipher; return regeneratorRuntime.wrap(function _callee136$(_context137) { while (1) { switch (_context137.prev = _context137.next) { case 0: _context137.next = 2; - return _this34.arrayBufferToBase64(result); + return _this32.arrayBufferToBase64(result); case 2: cipher = _context137.sent; @@ -11269,11 +11726,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context137.stop(); } } - }, _callee136, _this34); + }, _callee136); })); - return function (_x189) { - return _ref150.apply(this, arguments); + return function (_x175) { + return _ref30.apply(this, arguments); }; }())); @@ -11285,8 +11742,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee137, this); })); - function encryptText(_x186, _x187, _x188) { - return _ref149.apply(this, arguments); + function encryptText(_x172, _x173, _x174) { + return _encryptText2.apply(this, arguments); } return encryptText; @@ -11294,95 +11751,113 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "decryptText", value: function () { - var _ref151 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee139() { - var _this35 = this; + var _decryptText2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee139() { + var _this33 = this; - var _ref152 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - ciphertextToAuth = _ref152.ciphertextToAuth, - contentCiphertext = _ref152.contentCiphertext, - encryptionKey = _ref152.encryptionKey, - iv = _ref152.iv, - authHash = _ref152.authHash, - authKey = _ref152.authKey; + var _ref31, + ciphertextToAuth, + contentCiphertext, + encryptionKey, + iv, + authHash, + authKey, + requiresAuth, + localAuthHash, + ivData, + alg, + keyBuffer, + keyData, + textData, + _args140 = arguments; - var requiresAuth = arguments[1]; - var localAuthHash, ivData, alg, keyBuffer, keyData, textData; return regeneratorRuntime.wrap(function _callee139$(_context140) { while (1) { switch (_context140.prev = _context140.next) { case 0: + _ref31 = _args140.length > 0 && _args140[0] !== undefined ? _args140[0] : {}, ciphertextToAuth = _ref31.ciphertextToAuth, contentCiphertext = _ref31.contentCiphertext, encryptionKey = _ref31.encryptionKey, iv = _ref31.iv, authHash = _ref31.authHash, authKey = _ref31.authKey; + requiresAuth = _args140.length > 1 ? _args140[1] : undefined; + if (!(requiresAuth && !authHash)) { - _context140.next = 3; + _context140.next = 5; break; } console.error("Auth hash is required."); return _context140.abrupt("return"); - case 3: + case 5: if (!authHash) { - _context140.next = 10; + _context140.next = 12; break; } - _context140.next = 6; + _context140.next = 8; return this.hmac256(ciphertextToAuth, authKey); - case 6: + case 8: localAuthHash = _context140.sent; - if (!(authHash !== localAuthHash)) { - _context140.next = 10; + if (!(this.timingSafeEqual(authHash, localAuthHash) === false)) { + _context140.next = 12; break; } - console.error("Auth hash does not match, returning null. " + authHash + " != " + localAuthHash); + console.error("Auth hash does not match, returning null. ".concat(authHash, " != ").concat(localAuthHash)); return _context140.abrupt("return", null); - case 10: + case 12: if (!iv) { - _context140.next = 16; + _context140.next = 18; break; } - _context140.next = 13; + _context140.next = 15; return this.hexStringToArrayBuffer(iv); - case 13: + case 15: _context140.t0 = _context140.sent; - _context140.next = 17; + _context140.next = 19; break; - case 16: + case 18: _context140.t0 = new ArrayBuffer(16); - case 17: + case 19: ivData = _context140.t0; - alg = { name: 'AES-CBC', iv: ivData }; - _context140.next = 21; + alg = { + name: 'AES-CBC', + iv: ivData + }; + _context140.next = 23; return this.hexStringToArrayBuffer(encryptionKey); - case 21: + case 23: keyBuffer = _context140.sent; - _context140.next = 24; + _context140.next = 26; return this.webCryptoImportKey(keyBuffer, alg.name, ["decrypt"]); - case 24: + case 26: keyData = _context140.sent; - _context140.next = 27; + _context140.next = 29; return this.base64ToArrayBuffer(contentCiphertext); - case 27: + case 29: textData = _context140.sent; - return _context140.abrupt("return", crypto.subtle.decrypt(alg, keyData, textData).then(function () { - var _ref153 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee138(result) { + return _context140.abrupt("return", crypto.subtle.decrypt(alg, keyData, textData).then( + /*#__PURE__*/ + function () { + var _ref32 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee138(result) { var decoded; return regeneratorRuntime.wrap(function _callee138$(_context139) { while (1) { switch (_context139.prev = _context139.next) { case 0: _context139.next = 2; - return _this35.arrayBufferToString(result); + return _this33.arrayBufferToString(result); case 2: decoded = _context139.sent; @@ -11393,17 +11868,17 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context139.stop(); } } - }, _callee138, _this35); + }, _callee138); })); - return function (_x191) { - return _ref153.apply(this, arguments); + return function (_x176) { + return _ref32.apply(this, arguments); }; - }()).catch(function (error) { + }())["catch"](function (error) { console.error("Error decrypting:", error); })); - case 29: + case 31: case "end": return _context140.stop(); } @@ -11412,7 +11887,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { })); function decryptText() { - return _ref151.apply(this, arguments); + return _decryptText2.apply(this, arguments); } return decryptText; @@ -11420,8 +11895,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "hmac256", value: function () { - var _ref154 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee141(message, key) { - var _this36 = this; + var _hmac2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee141(message, key) { + var _this34 = this; var keyHexData, keyData, messageData; return regeneratorRuntime.wrap(function _callee141$(_context142) { @@ -11434,7 +11911,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 2: keyHexData = _context142.sent; _context142.next = 5; - return this.webCryptoImportKey(keyHexData, "HMAC", ["sign"], { name: "SHA-256" }); + return this.webCryptoImportKey(keyHexData, "HMAC", ["sign"], { + name: "SHA-256" + }); case 5: keyData = _context142.sent; @@ -11443,15 +11922,21 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 8: messageData = _context142.sent; - return _context142.abrupt("return", crypto.subtle.sign({ name: "HMAC" }, keyData, messageData).then(function () { - var _ref155 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee140(signature) { + return _context142.abrupt("return", crypto.subtle.sign({ + name: "HMAC" + }, keyData, messageData).then( + /*#__PURE__*/ + function () { + var _ref33 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee140(signature) { var hash; return regeneratorRuntime.wrap(function _callee140$(_context141) { while (1) { switch (_context141.prev = _context141.next) { case 0: _context141.next = 2; - return _this36.arrayBufferToHexString(signature); + return _this34.arrayBufferToHexString(signature); case 2: hash = _context141.sent; @@ -11462,13 +11947,13 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context141.stop(); } } - }, _callee140, _this36); + }, _callee140); })); - return function (_x194) { - return _ref155.apply(this, arguments); + return function (_x179) { + return _ref33.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error("Error computing hmac", err); })); @@ -11480,13 +11965,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee141, this); })); - function hmac256(_x192, _x193) { - return _ref154.apply(this, arguments); + function hmac256(_x177, _x178) { + return _hmac2.apply(this, arguments); } return hmac256; }() - /** Internal */ @@ -11494,7 +11978,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "webCryptoImportKey", value: function () { - var _ref156 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee142(input, alg, actions, hash) { + var _webCryptoImportKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee142(input, alg, actions, hash) { var text; return regeneratorRuntime.wrap(function _callee142$(_context143) { while (1) { @@ -11518,9 +12004,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 7: text = _context143.t0; - return _context143.abrupt("return", subtleCrypto.importKey("raw", text, { name: alg, hash: hash }, false, actions).then(function (key) { + return _context143.abrupt("return", subtleCrypto.importKey("raw", text, { + name: alg, + hash: hash + }, false, actions).then(function (key) { return key; - }).catch(function (err) { + })["catch"](function (err) { console.error(err); return null; })); @@ -11533,8 +12022,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee142, this); })); - function webCryptoImportKey(_x195, _x196, _x197, _x198) { - return _ref156.apply(this, arguments); + function webCryptoImportKey(_x180, _x181, _x182, _x183) { + return _webCryptoImportKey.apply(this, arguments); } return webCryptoImportKey; @@ -11542,8 +12031,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "webCryptoDeriveBits", value: function () { - var _ref157 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee144(key, pw_salt, pw_cost, length) { - var _this37 = this; + var _webCryptoDeriveBits = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee144(key, pw_salt, pw_cost, length) { + var _this35 = this; var params; return regeneratorRuntime.wrap(function _callee144$(_context145) { @@ -11556,22 +12047,28 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 2: _context145.t0 = _context145.sent; _context145.t1 = pw_cost; - _context145.t2 = { name: "SHA-512" }; + _context145.t2 = { + name: "SHA-512" + }; params = { "name": "PBKDF2", salt: _context145.t0, iterations: _context145.t1, hash: _context145.t2 }; - return _context145.abrupt("return", subtleCrypto.deriveBits(params, key, length).then(function () { - var _ref158 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee143(bits) { + return _context145.abrupt("return", subtleCrypto.deriveBits(params, key, length).then( + /*#__PURE__*/ + function () { + var _ref34 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee143(bits) { var key; return regeneratorRuntime.wrap(function _callee143$(_context144) { while (1) { switch (_context144.prev = _context144.next) { case 0: _context144.next = 2; - return _this37.arrayBufferToHexString(new Uint8Array(bits)); + return _this35.arrayBufferToHexString(new Uint8Array(bits)); case 2: key = _context144.sent; @@ -11582,13 +12079,13 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context144.stop(); } } - }, _callee143, _this37); + }, _callee143); })); - return function (_x203) { - return _ref158.apply(this, arguments); + return function (_x188) { + return _ref34.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error(err); return null; })); @@ -11601,8 +12098,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee144, this); })); - function webCryptoDeriveBits(_x199, _x200, _x201, _x202) { - return _ref157.apply(this, arguments); + function webCryptoDeriveBits(_x184, _x185, _x186, _x187) { + return _webCryptoDeriveBits.apply(this, arguments); } return webCryptoDeriveBits; @@ -11610,7 +12107,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "stringToArrayBuffer", value: function () { - var _ref159 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee145(string) { + var _stringToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee145(string) { return regeneratorRuntime.wrap(function _callee145$(_context146) { while (1) { switch (_context146.prev = _context146.next) { @@ -11618,9 +12117,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context146.abrupt("return", new Promise(function (resolve, reject) { var blob = new Blob([string]); var f = new FileReader(); + f.onload = function (e) { resolve(e.target.result); }; + f.readAsArrayBuffer(blob); })); @@ -11629,11 +12130,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context146.stop(); } } - }, _callee145, this); + }, _callee145); })); - function stringToArrayBuffer(_x204) { - return _ref159.apply(this, arguments); + function stringToArrayBuffer(_x189) { + return _stringToArrayBuffer.apply(this, arguments); } return stringToArrayBuffer; @@ -11641,7 +12142,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToString", value: function () { - var _ref160 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee146(arrayBuffer) { + var _arrayBufferToString = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee146(arrayBuffer) { return regeneratorRuntime.wrap(function _callee146$(_context147) { while (1) { switch (_context147.prev = _context147.next) { @@ -11649,9 +12152,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context147.abrupt("return", new Promise(function (resolve, reject) { var blob = new Blob([arrayBuffer]); var f = new FileReader(); + f.onload = function (e) { resolve(e.target.result); }; + f.readAsText(blob); })); @@ -11660,11 +12165,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context147.stop(); } } - }, _callee146, this); + }, _callee146); })); - function arrayBufferToString(_x205) { - return _ref160.apply(this, arguments); + function arrayBufferToString(_x190) { + return _arrayBufferToString.apply(this, arguments); } return arrayBufferToString; @@ -11672,7 +12177,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToHexString", value: function () { - var _ref161 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee147(arrayBuffer) { + var _arrayBufferToHexString = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee147(arrayBuffer) { var byteArray, hexString, nextHexByte, i; return regeneratorRuntime.wrap(function _callee147$(_context148) { while (1) { @@ -11681,14 +12188,16 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { byteArray = new Uint8Array(arrayBuffer); hexString = ""; - for (i = 0; i < byteArray.byteLength; i++) { nextHexByte = byteArray[i].toString(16); + if (nextHexByte.length < 2) { nextHexByte = "0" + nextHexByte; } + hexString += nextHexByte; } + return _context148.abrupt("return", hexString); case 4: @@ -11696,11 +12205,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context148.stop(); } } - }, _callee147, this); + }, _callee147); })); - function arrayBufferToHexString(_x206) { - return _ref161.apply(this, arguments); + function arrayBufferToHexString(_x191) { + return _arrayBufferToHexString.apply(this, arguments); } return arrayBufferToHexString; @@ -11708,7 +12217,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "hexStringToArrayBuffer", value: function () { - var _ref162 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee148(hex) { + var _hexStringToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee148(hex) { var bytes, c; return regeneratorRuntime.wrap(function _callee148$(_context149) { while (1) { @@ -11716,18 +12227,20 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 0: for (bytes = [], c = 0; c < hex.length; c += 2) { bytes.push(parseInt(hex.substr(c, 2), 16)); - }return _context149.abrupt("return", new Uint8Array(bytes)); + } + + return _context149.abrupt("return", new Uint8Array(bytes)); case 2: case "end": return _context149.stop(); } } - }, _callee148, this); + }, _callee148); })); - function hexStringToArrayBuffer(_x207) { - return _ref162.apply(this, arguments); + function hexStringToArrayBuffer(_x192) { + return _hexStringToArrayBuffer.apply(this, arguments); } return hexStringToArrayBuffer; @@ -11735,7 +12248,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "base64ToArrayBuffer", value: function () { - var _ref163 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee149(base64) { + var _base64ToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee149(base64) { var binary_string, len, bytes, i; return regeneratorRuntime.wrap(function _callee149$(_context150) { while (1) { @@ -11752,6 +12267,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { for (i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } + return _context150.abrupt("return", bytes.buffer); case 7: @@ -11762,8 +12278,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee149, this); })); - function base64ToArrayBuffer(_x208) { - return _ref163.apply(this, arguments); + function base64ToArrayBuffer(_x193) { + return _base64ToArrayBuffer.apply(this, arguments); } return base64ToArrayBuffer; @@ -11771,18 +12287,24 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToBase64", value: function () { - var _ref164 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee150(buffer) { + var _arrayBufferToBase = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee150(buffer) { return regeneratorRuntime.wrap(function _callee150$(_context151) { while (1) { switch (_context151.prev = _context151.next) { case 0: return _context151.abrupt("return", new Promise(function (resolve, reject) { - var blob = new Blob([buffer], { type: 'application/octet-binary' }); + var blob = new Blob([buffer], { + type: 'application/octet-binary' + }); var reader = new FileReader(); + reader.onload = function (evt) { var dataurl = evt.target.result; resolve(dataurl.substr(dataurl.indexOf(',') + 1)); }; + reader.readAsDataURL(blob); })); @@ -11791,11 +12313,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context151.stop(); } } - }, _callee150, this); + }, _callee150); })); - function arrayBufferToBase64(_x209) { - return _ref164.apply(this, arguments); + function arrayBufferToBase64(_x194) { + return _arrayBufferToBase.apply(this, arguments); } return arrayBufferToBase64; @@ -11805,8 +12327,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return SFCryptoWeb; }(SFAbstractCrypto); +exports.SFCryptoWeb = SFCryptoWeb; ; -var SFItemTransformer = exports.SFItemTransformer = function () { + +var SFItemTransformer = +/*#__PURE__*/ +function () { function SFItemTransformer(crypto) { _classCallCheck(this, SFItemTransformer); @@ -11816,7 +12342,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { _createClass(SFItemTransformer, [{ key: "_private_encryptString", value: function () { - var _ref165 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee151(string, encryptionKey, authKey, uuid, auth_params) { + var _private_encryptString2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee151(string, encryptionKey, authKey, uuid, auth_params) { var fullCiphertext, contentCiphertext, iv, ciphertextToAuth, authHash, authParamsString; return regeneratorRuntime.wrap(function _callee151$(_context152) { while (1) { @@ -11832,7 +12360,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 3: contentCiphertext = _context152.sent; - fullCiphertext = auth_params.version + contentCiphertext; _context152.next = 21; break; @@ -11859,7 +12386,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 19: authParamsString = _context152.sent; - fullCiphertext = [auth_params.version, authHash, uuid, iv, contentCiphertext, authParamsString].join(":"); case 21: @@ -11873,8 +12399,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee151, this); })); - function _private_encryptString(_x210, _x211, _x212, _x213, _x214) { - return _ref165.apply(this, arguments); + function _private_encryptString(_x195, _x196, _x197, _x198, _x199) { + return _private_encryptString2.apply(this, arguments); } return _private_encryptString; @@ -11882,14 +12408,15 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "encryptItem", value: function () { - var _ref166 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee152(item, keys, auth_params) { + var _encryptItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee152(item, keys, auth_params) { var params, item_key, ek, ak, ciphertext, authHash; return regeneratorRuntime.wrap(function _callee152$(_context153) { while (1) { switch (_context153.prev = _context153.next) { case 0: - params = {}; - // encrypt item key + params = {}; // encrypt item key _context153.next = 3; return this.crypto.generateItemEncryptionKey(); @@ -11944,11 +12471,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 25: authHash = _context153.sent; - params.auth_hash = authHash; case 27: - params.content = ciphertext; return _context153.abrupt("return", params); @@ -11960,8 +12485,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee152, this); })); - function encryptItem(_x215, _x216, _x217) { - return _ref166.apply(this, arguments); + function encryptItem(_x200, _x201, _x202) { + return _encryptItem.apply(this, arguments); } return encryptItem; @@ -11970,6 +12495,7 @@ var SFItemTransformer = exports.SFItemTransformer = function () { key: "encryptionComponentsFromString", value: function encryptionComponentsFromString(string, encryptionKey, authKey) { var encryptionVersion = string.substring(0, 3); + if (encryptionVersion === "001") { return { contentCiphertext: string.substring(3, string.length), @@ -11998,7 +12524,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "decryptItem", value: function () { - var _ref167 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee153(item, keys) { + var _decryptItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee153(item, keys) { var encryptedItemKey, requiresAuth, keyParams, item_key, ek, ak, itemParams, content; return regeneratorRuntime.wrap(function _callee153$(_context154) { while (1) { @@ -12046,7 +12574,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context154.abrupt("return"); case 17: - // decrypt encrypted key encryptedItemKey = item.enc_item_key; requiresAuth = true; @@ -12056,9 +12583,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { encryptedItemKey = "001" + encryptedItemKey; requiresAuth = false; } - keyParams = this.encryptionComponentsFromString(encryptedItemKey, keys.mk, keys.ak); - // return if uuid in auth hash does not match item uuid. Signs of tampering. + keyParams = this.encryptionComponentsFromString(encryptedItemKey, keys.mk, keys.ak); // return if uuid in auth hash does not match item uuid. Signs of tampering. if (!(keyParams.uuid && keyParams.uuid !== item.uuid)) { _context154.next = 26; @@ -12066,9 +12592,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { } console.error("Item key params UUID does not match item UUID"); + if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); @@ -12085,9 +12613,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { } console.log("Error decrypting item", item); + if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); @@ -12127,11 +12657,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); case 55: - if (!itemParams.authHash) { // legacy 001 itemParams.authHash = item.auth_hash; @@ -12147,12 +12677,14 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; } else { if (item.errorDecrypting == true) { item.errorDecryptingValueChanged = true; - } - // Content should only be set if it was successfully decrypted, and should otherwise remain unchanged. + } // Content should only be set if it was successfully decrypted, and should otherwise remain unchanged. + + item.errorDecrypting = false; item.content = content; } @@ -12165,8 +12697,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee153, this, [[3, 11], [41, 49]]); })); - function decryptItem(_x218, _x219) { - return _ref167.apply(this, arguments); + function decryptItem(_x203, _x204) { + return _decryptItem.apply(this, arguments); } return decryptItem; @@ -12174,16 +12706,22 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "decryptMultipleItems", value: function () { - var _ref168 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee155(items, keys, throws) { - var _this38 = this; + var _decryptMultipleItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee155(items, keys, _throws) { + var _this36 = this; var decrypt; return regeneratorRuntime.wrap(function _callee155$(_context156) { while (1) { switch (_context156.prev = _context156.next) { case 0: - decrypt = function () { - var _ref169 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee154(item) { + decrypt = + /*#__PURE__*/ + function () { + var _ref35 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee154(item) { var isString; return regeneratorRuntime.wrap(function _callee154$(_context155) { while (1) { @@ -12214,7 +12752,7 @@ var SFItemTransformer = exports.SFItemTransformer = function () { _context155.prev = 6; _context155.next = 9; - return _this38.decryptItem(item, keys); + return _this36.decryptItem(item, keys); case 9: _context155.next = 19; @@ -12227,9 +12765,10 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; - if (!throws) { + if (!_throws) { _context155.next = 17; break; } @@ -12245,11 +12784,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context155.stop(); } } - }, _callee154, _this38, [[6, 11]]); + }, _callee154, null, [[6, 11]]); })); - return function decrypt(_x223) { - return _ref169.apply(this, arguments); + return function decrypt(_x208) { + return _ref35.apply(this, arguments); }; }(); @@ -12262,11 +12801,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context156.stop(); } } - }, _callee155, this); + }, _callee155); })); - function decryptMultipleItems(_x220, _x221, _x222) { - return _ref168.apply(this, arguments); + function decryptMultipleItems(_x205, _x206, _x207) { + return _decryptMultipleItems.apply(this, arguments); } return decryptMultipleItems; @@ -12276,9 +12815,13 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return SFItemTransformer; }(); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; +exports.SFItemTransformer = SFItemTransformer; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var StandardFile = exports.StandardFile = function () { +var StandardFile = +/*#__PURE__*/ +function () { function StandardFile(cryptoInstance) { _classCallCheck(this, StandardFile); @@ -12293,15 +12836,14 @@ var StandardFile = exports.StandardFile = function () { } else { this.crypto = new SFCryptoJS(); } - } + } // This must be placed outside window check, as it's used in native. + - // This must be placed outside window check, as it's used in native. if (cryptoInstance) { this.crypto = cryptoInstance; } this.itemTransformer = new SFItemTransformer(this.crypto); - this.crypto.SFJS = { version: this.version(), defaultPasswordGenerationCost: this.defaultPasswordGenerationCost() @@ -12325,9 +12867,7 @@ var StandardFile = exports.StandardFile = function () { } else { return true; } - } - - // Returns the versions that this library supports technically. + } // Returns the versions that this library supports technically. }, { key: "supportedVersions", @@ -12348,12 +12888,13 @@ var StandardFile = exports.StandardFile = function () { "001": Date.parse("2018-01-01"), "002": Date.parse("2020-01-01") }; - var date = expirationDates[version]; + if (!date) { // No expiration date, is active version return false; } + var expired = new Date() > date; return expired; } @@ -12376,6 +12917,8 @@ var StandardFile = exports.StandardFile = function () { return StandardFile; }(); +exports.StandardFile = StandardFile; + if (globalScope) { // window is for some reason defined in React Native, but throws an exception when you try to set to it try { @@ -65512,22 +66055,41 @@ k)-899497514);j=k;k=e;e=g<<30|g>>>2;g=h;h=c}b[0]=b[0]+h|0;b[1]=b[1]+g|0;b[2]=b[2 Object.defineProperty(exports, "__esModule", { value: true }); +exports.StandardFile = exports.SFItemTransformer = exports.SFCryptoWeb = exports.SFCryptoJS = exports.SFAbstractCrypto = exports.SFItemHistoryEntry = exports.SFItemHistory = exports.SFHistorySession = exports.SFPrivileges = exports.SFPredicate = exports.SFItemParams = exports.SFItem = exports.SFSyncManager = exports.SFStorageManager = exports.SFSingletonManager = exports.SFSessionHistoryManager = exports.SFPrivilegesManager = exports.SFModelManager = exports.SFMigrationManager = exports.SFHttpManager = exports.SFAuthManager = exports.SFAlertManager = void 0; -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var SFAlertManager = exports.SFAlertManager = function () { +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var SFAlertManager = +/*#__PURE__*/ +function () { function SFAlertManager() { _classCallCheck(this, SFAlertManager); } @@ -65535,7 +66097,9 @@ var SFAlertManager = exports.SFAlertManager = function () { _createClass(SFAlertManager, [{ key: "alert", value: function () { - var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(params) { + var _alert = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee(params) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { @@ -65550,11 +66114,11 @@ var SFAlertManager = exports.SFAlertManager = function () { return _context.stop(); } } - }, _callee, this); + }, _callee); })); function alert(_x) { - return _ref.apply(this, arguments); + return _alert.apply(this, arguments); } return alert; @@ -65562,7 +66126,9 @@ var SFAlertManager = exports.SFAlertManager = function () { }, { key: "confirm", value: function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(params) { + var _confirm = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee2(params) { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { @@ -65580,11 +66146,11 @@ var SFAlertManager = exports.SFAlertManager = function () { return _context2.stop(); } } - }, _callee2, this); + }, _callee2); })); function confirm(_x2) { - return _ref2.apply(this, arguments); + return _confirm.apply(this, arguments); } return confirm; @@ -65594,20 +66160,22 @@ var SFAlertManager = exports.SFAlertManager = function () { return SFAlertManager; }(); +exports.SFAlertManager = SFAlertManager; ; -var SFAuthManager = exports.SFAuthManager = function () { + +var SFAuthManager = +/*#__PURE__*/ +function () { function SFAuthManager(storageManager, httpManager, alertManager, timeout) { _classCallCheck(this, SFAuthManager); SFAuthManager.DidSignOutEvent = "DidSignOutEvent"; SFAuthManager.WillSignInEvent = "WillSignInEvent"; SFAuthManager.DidSignInEvent = "DidSignInEvent"; - this.httpManager = httpManager; this.storageManager = storageManager; this.alertManager = alertManager || new SFAlertManager(); this.$timeout = timeout || setTimeout.bind(window); - this.eventHandlers = []; } @@ -65632,7 +66200,6 @@ var SFAuthManager = exports.SFAuthManager = function () { try { for (var _iterator = this.eventHandlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var handler = _step.value; - handler(event, data || {}); } } catch (err) { @@ -65640,8 +66207,8 @@ var SFAuthManager = exports.SFAuthManager = function () { _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); } } finally { if (_didIteratorError) { @@ -65653,7 +66220,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "saveKeys", value: function () { - var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(keys) { + var _saveKeys = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3(keys) { return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { @@ -65675,7 +66244,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function saveKeys(_x3) { - return _ref3.apply(this, arguments); + return _saveKeys.apply(this, arguments); } return saveKeys; @@ -65683,7 +66252,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "signout", value: function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(clearAllData) { + var _signout = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee4(clearAllData) { var _this = this; return regeneratorRuntime.wrap(function _callee4$(_context4) { @@ -65714,7 +66285,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function signout(_x4) { - return _ref4.apply(this, arguments); + return _signout.apply(this, arguments); } return signout; @@ -65722,7 +66293,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "keys", value: function () { - var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var _keys = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee5() { var mk; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { @@ -65770,7 +66343,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function keys() { - return _ref5.apply(this, arguments); + return _keys.apply(this, arguments); } return keys; @@ -65778,7 +66351,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "getAuthParams", value: function () { - var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _getAuthParams = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee6() { var data; return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { @@ -65794,7 +66369,6 @@ var SFAuthManager = exports.SFAuthManager = function () { case 3: data = _context6.sent; - this._authParams = JSON.parse(data); case 5: @@ -65821,7 +66395,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function getAuthParams() { - return _ref6.apply(this, arguments); + return _getAuthParams.apply(this, arguments); } return getAuthParams; @@ -65829,7 +66403,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "defaultProtocolVersion", value: function () { - var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _defaultProtocolVersion = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee7() { var keys; return regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { @@ -65860,7 +66436,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function defaultProtocolVersion() { - return _ref7.apply(this, arguments); + return _defaultProtocolVersion.apply(this, arguments); } return defaultProtocolVersion; @@ -65868,7 +66444,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "protocolVersion", value: function () { - var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var _protocolVersion = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee8() { var authParams; return regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { @@ -65899,7 +66477,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function protocolVersion() { - return _ref8.apply(this, arguments); + return _protocolVersion.apply(this, arguments); } return protocolVersion; @@ -65907,7 +66485,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "getAuthParamsForEmail", value: function () { - var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(url, email, extraParams) { + var _getAuthParamsForEmail = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee9(url, email, extraParams) { var _this2 = this; var params; @@ -65915,18 +66495,26 @@ var SFAuthManager = exports.SFAuthManager = function () { while (1) { switch (_context9.prev = _context9.next) { case 0: - params = _.merge({ email: email }, extraParams); - + params = _.merge({ + email: email + }, extraParams); params['api'] = SFHttpManager.getApiVersion(); return _context9.abrupt("return", new Promise(function (resolve, reject) { var requestUrl = url + "/auth/params"; + _this2.httpManager.getAbsolute(requestUrl, params, function (response) { resolve(response); }, function (response) { console.error("Error getting auth params", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to sign in. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to sign in. Please try again." + } + }; } + resolve(response); }); })); @@ -65936,11 +66524,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context9.stop(); } } - }, _callee9, this); + }, _callee9); })); function getAuthParamsForEmail(_x5, _x6, _x7) { - return _ref9.apply(this, arguments); + return _getAuthParamsForEmail.apply(this, arguments); } return getAuthParamsForEmail; @@ -65969,15 +66557,21 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "login", value: function () { - var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(url, email, password, strictSignin, extraParams) { + var _login = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee12(url, email, password, strictSignin, extraParams) { var _this3 = this; return regeneratorRuntime.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: - return _context12.abrupt("return", new Promise(function () { - var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(resolve, reject) { + return _context12.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee11(resolve, reject) { var existingKeys, authParams, message, _message, abort, _message2, minimum, _message3, latestVersion, _message4, keys, requestUrl, params; return regeneratorRuntime.wrap(function _callee11$(_context11) { @@ -65995,7 +66589,11 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Cannot log in because already signed in." } }); + resolve({ + error: { + message: "Cannot log in because already signed in." + } + }); return _context11.abrupt("return"); case 6: @@ -66004,11 +66602,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Login already in progress." } }); + resolve({ + error: { + message: "Login already in progress." + } + }); return _context11.abrupt("return"); case 9: - _this3.lock(); _this3.notifyEvent(SFAuthManager.WillSignInEvent); @@ -66018,8 +66619,6 @@ var SFAuthManager = exports.SFAuthManager = function () { case 13: authParams = _context11.sent; - - // SF3 requires a unique identifier in the auth params authParams.identifier = email; @@ -66029,6 +66628,7 @@ var SFAuthManager = exports.SFAuthManager = function () { } _this3.unlockAndResolve(resolve, authParams); + return _context11.abrupt("return"); case 18: @@ -66037,7 +66637,12 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _this3.unlockAndResolve(resolve, { error: { message: "Invalid email or password." } }); + _this3.unlockAndResolve(resolve, { + error: { + message: "Invalid email or password." + } + }); + return _context11.abrupt("return"); case 21: @@ -66053,7 +66658,13 @@ var SFAuthManager = exports.SFAuthManager = function () { // The user has a very old account type, which is no longer supported by this client message = "The protocol version associated with your account is outdated and no longer supported by this application. Please visit standardnotes.org/help/security for more information."; } - _this3.unlockAndResolve(resolve, { error: { message: message } }); + + _this3.unlockAndResolve(resolve, { + error: { + message: message + } + }); + return _context11.abrupt("return"); case 25: @@ -66062,15 +66673,18 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _message = "The encryption version for your account, " + authParams.version + ", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."; + _message = "The encryption version for your account, ".concat(authParams.version, ", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."); abort = false; _context11.next = 30; return _this3.alertManager.confirm({ title: "Update Needed", text: _message, confirmButtonText: "Sign In" - }).catch(function () { - _this3.unlockAndResolve(resolve, { error: {} }); + })["catch"](function () { + _this3.unlockAndResolve(resolve, { + error: {} + }); + abort = true; }); @@ -66090,7 +66704,12 @@ var SFAuthManager = exports.SFAuthManager = function () { _message2 = "Your account was created on a platform with higher security capabilities than this browser supports. " + "If we attempted to generate your login keys here, it would take hours. " + "Please use a browser with more up to date security capabilities, like Google Chrome or Firefox, to log in."; - _this3.unlockAndResolve(resolve, { error: { message: _message2 } }); + _this3.unlockAndResolve(resolve, { + error: { + message: _message2 + } + }); + return _context11.abrupt("return"); case 36: @@ -66103,7 +66722,12 @@ var SFAuthManager = exports.SFAuthManager = function () { _message3 = "Unable to login due to insecure password parameters. Please visit standardnotes.org/help/security for more information."; - _this3.unlockAndResolve(resolve, { error: { message: _message3 } }); + _this3.unlockAndResolve(resolve, { + error: { + message: _message3 + } + }); + return _context11.abrupt("return"); case 41: @@ -66120,9 +66744,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - _message4 = "Strict sign in refused server sign in parameters. The latest security version is " + latestVersion + ", but your account is reported to have version " + authParams.version + ". If you'd like to proceed with sign in anyway, please disable strict sign in and try again."; + _message4 = "Strict sign in refused server sign in parameters. The latest security version is ".concat(latestVersion, ", but your account is reported to have version ").concat(authParams.version, ". If you'd like to proceed with sign in anyway, please disable strict sign in and try again."); + + _this3.unlockAndResolve(resolve, { + error: { + message: _message4 + } + }); - _this3.unlockAndResolve(resolve, { error: { message: _message4 } }); return _context11.abrupt("return"); case 47: @@ -66132,13 +66761,18 @@ var SFAuthManager = exports.SFAuthManager = function () { case 49: keys = _context11.sent; requestUrl = url + "/auth/sign_in"; - params = _.merge({ password: keys.pw, email: email }, extraParams); - - + params = _.merge({ + password: keys.pw, + email: email + }, extraParams); params['api'] = SFHttpManager.getApiVersion(); - _this3.httpManager.postAbsolute(requestUrl, params, function () { - var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(response) { + _this3.httpManager.postAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee10(response) { return regeneratorRuntime.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { @@ -66148,6 +66782,7 @@ var SFAuthManager = exports.SFAuthManager = function () { case 2: _this3.notifyEvent(SFAuthManager.DidSignInEvent); + _this3.$timeout(function () { return _this3.unlockAndResolve(resolve, response); }); @@ -66157,17 +66792,23 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context10.stop(); } } - }, _callee10, _this3); + }, _callee10); })); return function (_x15) { - return _ref12.apply(this, arguments); + return _ref2.apply(this, arguments); }; }(), function (response) { console.error("Error logging in", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to sign in. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to sign in. Please try again." + } + }; } + _this3.$timeout(function () { return _this3.unlockAndResolve(resolve, response); }); @@ -66178,11 +66819,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context11.stop(); } } - }, _callee11, _this3); + }, _callee11); })); return function (_x13, _x14) { - return _ref11.apply(this, arguments); + return _ref.apply(this, arguments); }; }())); @@ -66191,11 +66832,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context12.stop(); } } - }, _callee12, this); + }, _callee12); })); function login(_x8, _x9, _x10, _x11, _x12) { - return _ref10.apply(this, arguments); + return _login.apply(this, arguments); } return login; @@ -66205,8 +66846,12 @@ var SFAuthManager = exports.SFAuthManager = function () { value: function register(url, email, password) { var _this4 = this; - return new Promise(function () { - var _ref13 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(resolve, reject) { + return new Promise( + /*#__PURE__*/ + function () { + var _ref3 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee14(resolve, reject) { var results, keys, authParams, requestUrl, params; return regeneratorRuntime.wrap(function _callee14$(_context14) { while (1) { @@ -66217,11 +66862,14 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Register already in progress." } }); + resolve({ + error: { + message: "Register already in progress." + } + }); return _context14.abrupt("return"); case 3: - _this4.lock(); _context14.next = 6; @@ -66232,12 +66880,18 @@ var SFAuthManager = exports.SFAuthManager = function () { keys = results.keys; authParams = results.authParams; requestUrl = url + "/auth"; - params = _.merge({ password: keys.pw, email: email }, authParams); - + params = _.merge({ + password: keys.pw, + email: email + }, authParams); params['api'] = SFHttpManager.getApiVersion(); - _this4.httpManager.postAbsolute(requestUrl, params, function () { - var _ref14 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(response) { + _this4.httpManager.postAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref4 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee13(response) { return regeneratorRuntime.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { @@ -66253,17 +66907,23 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context13.stop(); } } - }, _callee13, _this4); + }, _callee13); })); return function (_x18) { - return _ref14.apply(this, arguments); + return _ref4.apply(this, arguments); }; }(), function (response) { console.error("Registration error", response); - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "A server error occurred while trying to register. Please try again." } }; + + if (_typeof(response) !== 'object') { + response = { + error: { + message: "A server error occurred while trying to register. Please try again." + } + }; } + _this4.unlockAndResolve(resolve, response); }); @@ -66272,26 +66932,32 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context14.stop(); } } - }, _callee14, _this4); + }, _callee14); })); return function (_x16, _x17) { - return _ref13.apply(this, arguments); + return _ref3.apply(this, arguments); }; }()); } }, { key: "changePassword", value: function () { - var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(url, email, current_server_pw, newKeys, newAuthParams) { + var _changePassword = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee17(url, email, current_server_pw, newKeys, newAuthParams) { var _this5 = this; return regeneratorRuntime.wrap(function _callee17$(_context17) { while (1) { switch (_context17.prev = _context17.next) { case 0: - return _context17.abrupt("return", new Promise(function () { - var _ref16 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(resolve, reject) { + return _context17.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref5 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee16(resolve, reject) { var newServerPw, requestUrl, params; return regeneratorRuntime.wrap(function _callee16$(_context16) { while (1) { @@ -66302,21 +66968,30 @@ var SFAuthManager = exports.SFAuthManager = function () { break; } - resolve({ error: { message: "Change password already in progress." } }); + resolve({ + error: { + message: "Change password already in progress." + } + }); return _context16.abrupt("return"); case 3: - _this5.lock(); newServerPw = newKeys.pw; requestUrl = url + "/auth/change_pw"; - params = _.merge({ new_password: newServerPw, current_password: current_server_pw }, newAuthParams); - + params = _.merge({ + new_password: newServerPw, + current_password: current_server_pw + }, newAuthParams); params['api'] = SFHttpManager.getApiVersion(); - _this5.httpManager.postAuthenticatedAbsolute(requestUrl, params, function () { - var _ref17 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15(response) { + _this5.httpManager.postAuthenticatedAbsolute(requestUrl, params, + /*#__PURE__*/ + function () { + var _ref6 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee15(response) { return regeneratorRuntime.wrap(function _callee15$(_context15) { while (1) { switch (_context15.prev = _context15.next) { @@ -66332,16 +67007,21 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context15.stop(); } } - }, _callee15, _this5); + }, _callee15); })); return function (_x26) { - return _ref17.apply(this, arguments); + return _ref6.apply(this, arguments); }; }(), function (response) { - if ((typeof response === "undefined" ? "undefined" : _typeof(response)) !== 'object') { - response = { error: { message: "Something went wrong while changing your password. Your password was not changed. Please try again." } }; + if (_typeof(response) !== 'object') { + response = { + error: { + message: "Something went wrong while changing your password. Your password was not changed. Please try again." + } + }; } + _this5.unlockAndResolve(resolve, response); }); @@ -66350,11 +67030,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context16.stop(); } } - }, _callee16, _this5); + }, _callee16); })); return function (_x24, _x25) { - return _ref16.apply(this, arguments); + return _ref5.apply(this, arguments); }; }())); @@ -66363,11 +67043,11 @@ var SFAuthManager = exports.SFAuthManager = function () { return _context17.stop(); } } - }, _callee17, this); + }, _callee17); })); function changePassword(_x19, _x20, _x21, _x22, _x23) { - return _ref15.apply(this, arguments); + return _changePassword.apply(this, arguments); } return changePassword; @@ -66375,7 +67055,9 @@ var SFAuthManager = exports.SFAuthManager = function () { }, { key: "handleAuthResponse", value: function () { - var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(response, email, url, authParams, keys) { + var _handleAuthResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee18(response, email, url, authParams, keys) { return regeneratorRuntime.wrap(function _callee18$(_context18) { while (1) { switch (_context18.prev = _context18.next) { @@ -66409,7 +67091,7 @@ var SFAuthManager = exports.SFAuthManager = function () { })); function handleAuthResponse(_x27, _x28, _x29, _x30, _x31) { - return _ref18.apply(this, arguments); + return _handleAuthResponse.apply(this, arguments); } return handleAuthResponse; @@ -66419,9 +67101,13 @@ var SFAuthManager = exports.SFAuthManager = function () { return SFAuthManager; }(); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; +exports.SFAuthManager = SFAuthManager; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var SFHttpManager = exports.SFHttpManager = function () { +var SFHttpManager = +/*#__PURE__*/ +function () { _createClass(SFHttpManager, null, [{ key: "getApiVersion", value: function getApiVersion() { @@ -66446,7 +67132,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "setAuthHeadersForRequest", value: function () { - var _ref19 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee19(request) { + var _setAuthHeadersForRequest = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee19(request) { var token; return regeneratorRuntime.wrap(function _callee19$(_context19) { while (1) { @@ -66471,7 +67159,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function setAuthHeadersForRequest(_x32) { - return _ref19.apply(this, arguments); + return _setAuthHeadersForRequest.apply(this, arguments); } return setAuthHeadersForRequest; @@ -66479,7 +67167,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "postAbsolute", value: function () { - var _ref20 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee20(url, params, onsuccess, onerror) { + var _postAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee20(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee20$(_context20) { while (1) { switch (_context20.prev = _context20.next) { @@ -66495,7 +67185,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function postAbsolute(_x33, _x34, _x35, _x36) { - return _ref20.apply(this, arguments); + return _postAbsolute.apply(this, arguments); } return postAbsolute; @@ -66503,7 +67193,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "postAuthenticatedAbsolute", value: function () { - var _ref21 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee21(url, params, onsuccess, onerror) { + var _postAuthenticatedAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee21(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee21$(_context21) { while (1) { switch (_context21.prev = _context21.next) { @@ -66519,7 +67211,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function postAuthenticatedAbsolute(_x37, _x38, _x39, _x40) { - return _ref21.apply(this, arguments); + return _postAuthenticatedAbsolute.apply(this, arguments); } return postAuthenticatedAbsolute; @@ -66527,7 +67219,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "patchAbsolute", value: function () { - var _ref22 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee22(url, params, onsuccess, onerror) { + var _patchAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee22(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee22$(_context22) { while (1) { switch (_context22.prev = _context22.next) { @@ -66543,7 +67237,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function patchAbsolute(_x41, _x42, _x43, _x44) { - return _ref22.apply(this, arguments); + return _patchAbsolute.apply(this, arguments); } return patchAbsolute; @@ -66551,7 +67245,9 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "getAbsolute", value: function () { - var _ref23 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee23(url, params, onsuccess, onerror) { + var _getAbsolute = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee23(url, params, onsuccess, onerror) { return regeneratorRuntime.wrap(function _callee23$(_context23) { while (1) { switch (_context23.prev = _context23.next) { @@ -66567,7 +67263,7 @@ var SFHttpManager = exports.SFHttpManager = function () { })); function getAbsolute(_x45, _x46, _x47, _x48) { - return _ref23.apply(this, arguments); + return _getAbsolute.apply(this, arguments); } return getAbsolute; @@ -66575,16 +67271,24 @@ var SFHttpManager = exports.SFHttpManager = function () { }, { key: "httpRequest", value: function () { - var _ref24 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee25(verb, url, params, onsuccess, onerror) { + var _httpRequest = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee25(verb, url, params, onsuccess, onerror) { var _this6 = this; - var authenticated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; + var authenticated, + _args25 = arguments; return regeneratorRuntime.wrap(function _callee25$(_context25) { while (1) { switch (_context25.prev = _context25.next) { case 0: - return _context25.abrupt("return", new Promise(function () { - var _ref25 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee24(resolve, reject) { + authenticated = _args25.length > 5 && _args25[5] !== undefined ? _args25[5] : false; + return _context25.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref7 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee24(resolve, reject) { var xmlhttp; return regeneratorRuntime.wrap(function _callee24$(_context24) { while (1) { @@ -66592,10 +67296,10 @@ var SFHttpManager = exports.SFHttpManager = function () { case 0: xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { var response = xmlhttp.responseText; + if (response) { try { response = JSON.parse(response); @@ -66609,6 +67313,7 @@ var SFHttpManager = exports.SFHttpManager = function () { }); } else { console.error("Request error:", response); + _this6.$timeout(function () { onerror(response, xmlhttp.status); reject(response); @@ -66633,7 +67338,6 @@ var SFHttpManager = exports.SFHttpManager = function () { return _this6.setAuthHeadersForRequest(xmlhttp); case 8: - if (verb == "post" || verb == "patch") { xmlhttp.send(JSON.stringify(params)); } else { @@ -66645,24 +67349,24 @@ var SFHttpManager = exports.SFHttpManager = function () { return _context24.stop(); } } - }, _callee24, _this6); + }, _callee24); })); - return function (_x55, _x56) { - return _ref25.apply(this, arguments); + return function (_x54, _x55) { + return _ref7.apply(this, arguments); }; }())); - case 1: + case 2: case "end": return _context25.stop(); } } - }, _callee25, this); + }, _callee25); })); - function httpRequest(_x50, _x51, _x52, _x53, _x54) { - return _ref24.apply(this, arguments); + function httpRequest(_x49, _x50, _x51, _x52, _x53) { + return _httpRequest.apply(this, arguments); } return httpRequest; @@ -66685,8 +67389,12 @@ var SFHttpManager = exports.SFHttpManager = function () { return SFHttpManager; }(); +exports.SFHttpManager = SFHttpManager; ; -var SFMigrationManager = exports.SFMigrationManager = function () { + +var SFMigrationManager = +/*#__PURE__*/ +function () { function SFMigrationManager(modelManager, syncManager, storageManager, authManager) { var _this7 = this; @@ -66695,26 +67403,25 @@ var SFMigrationManager = exports.SFMigrationManager = function () { this.modelManager = modelManager; this.syncManager = syncManager; this.storageManager = storageManager; - this.completionHandlers = []; - - this.loadMigrations(); - - // The syncManager used to dispatch a param called 'initialSync' in the 'sync:completed' event + this.loadMigrations(); // The syncManager used to dispatch a param called 'initialSync' in the 'sync:completed' event // to let us know of the first sync completion after login. // however it was removed as it was deemed to be unreliable (returned wrong value when a single sync request repeats on completion for pagination) // We'll now use authManager's events instead + var didReceiveSignInEvent = false; var signInHandler = authManager.addEventHandler(function (event) { if (event == SFAuthManager.DidSignInEvent) { didReceiveSignInEvent = true; } }); - this.receivedLocalDataEvent = syncManager.initialDataLoaded(); - - this.syncManager.addEventHandler(function () { - var _ref26 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee26(event, data) { + this.syncManager.addEventHandler( + /*#__PURE__*/ + function () { + var _ref8 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee26(event, data) { var dataLoadedEvent, syncCompleteEvent, completedList, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, migrationName, migration; return regeneratorRuntime.wrap(function _callee26$(_context26) { @@ -66733,9 +67440,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _this7.receivedLocalDataEvent = true; } else if (syncCompleteEvent) { _this7.receivedSyncCompletedEvent = true; - } + } // We want to run pending migrations only after local data has been loaded, and a sync has been completed. - // We want to run pending migrations only after local data has been loaded, and a sync has been completed. if (!(_this7.receivedLocalDataEvent && _this7.receivedSyncCompletedEvent)) { _context26.next = 40; @@ -66749,11 +67455,10 @@ var SFMigrationManager = exports.SFMigrationManager = function () { // Reset our collected state about sign in didReceiveSignInEvent = false; - authManager.removeEventHandler(signInHandler); - - // If initial online sync, clear any completed migrations that occurred while offline, + authManager.removeEventHandler(signInHandler); // If initial online sync, clear any completed migrations that occurred while offline, // so they can run again now that we have updated user items. Only clear migrations that // don't have `runOnlyOnce` set + _context26.next = 10; return _this7.getCompletedMigrations(); @@ -66801,8 +67506,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context26.prev = 31; _context26.prev = 32; - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); } case 34: @@ -66829,11 +67534,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context26.stop(); } } - }, _callee26, _this7, [[14, 27, 31, 39], [32,, 34, 38]]); + }, _callee26, null, [[14, 27, 31, 39], [32,, 34, 38]]); })); - return function (_x57, _x58) { - return _ref26.apply(this, arguments); + return function (_x56, _x57) { + return _ref8.apply(this, arguments); }; }()); } @@ -66851,7 +67556,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "migrationForEncodedName", value: function () { - var _ref27 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee27(name) { + var _migrationForEncodedName = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee27(name) { var decoded; return regeneratorRuntime.wrap(function _callee27$(_context27) { while (1) { @@ -66874,8 +67581,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, _callee27, this); })); - function migrationForEncodedName(_x59) { - return _ref27.apply(this, arguments); + function migrationForEncodedName(_x58) { + return _migrationForEncodedName.apply(this, arguments); } return migrationForEncodedName; @@ -66887,15 +67594,16 @@ var SFMigrationManager = exports.SFMigrationManager = function () { } }, { key: "registeredMigrations", - value: function registeredMigrations() { - // Subclasses should return an array of migrations here. + value: function registeredMigrations() {// Subclasses should return an array of migrations here. // Migrations should have a unique `name`, `content_type`, // and `handler`, which is a function that accepts an array of matching items to migration. } }, { key: "runPendingMigrations", value: function () { - var _ref28 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee28() { + var _runPendingMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee28() { var pending, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, migration, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, item, _iteratorNormalCompletion7, _didIteratorError7, _iteratorError7, _iterator7, _step7, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, _iteratorNormalCompletion6, _didIteratorError6, _iteratorError6, _iterator6, _step6, handler; return regeneratorRuntime.wrap(function _callee28$(_context28) { @@ -66907,17 +67615,15 @@ var SFMigrationManager = exports.SFMigrationManager = function () { case 2: pending = _context28.sent; - - // run in pre loop, keeping in mind that a migration may be run twice: when offline then again when signing in. // we need to reset the items to a new array. _iteratorNormalCompletion3 = true; _didIteratorError3 = false; _iteratorError3 = undefined; _context28.prev = 6; + for (_iterator3 = pending[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { migration = _step3.value; - migration.items = []; } @@ -66934,8 +67640,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 14; _context28.prev = 15; - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); } case 17: @@ -66980,6 +67686,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { migration.items.push(item); } } + _context28.next = 40; break; @@ -66993,8 +67700,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 40; _context28.prev = 41; - if (!_iteratorNormalCompletion7 && _iterator7.return) { - _iterator7.return(); + if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) { + _iterator7["return"](); } case 43: @@ -67032,8 +67739,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 57; _context28.prev = 58; - if (!_iteratorNormalCompletion4 && _iterator4.return) { - _iterator4.return(); + if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { + _iterator4["return"](); } case 60: @@ -67101,8 +67808,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 87; _context28.prev = 88; - if (!_iteratorNormalCompletion5 && _iterator5.return) { - _iterator5.return(); + if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) { + _iterator5["return"](); } case 90: @@ -67127,12 +67834,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _iteratorError6 = undefined; _context28.prev = 98; - for (_iterator6 = this.completionHandlers[Symbol.iterator](); !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { handler = _step6.value; - handler(); } + _context28.next = 106; break; @@ -67146,8 +67852,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context28.prev = 106; _context28.prev = 107; - if (!_iteratorNormalCompletion6 && _iterator6.return) { - _iterator6.return(); + if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) { + _iterator6["return"](); } case 109: @@ -67175,7 +67881,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function runPendingMigrations() { - return _ref28.apply(this, arguments); + return _runPendingMigrations.apply(this, arguments); } return runPendingMigrations; @@ -67183,7 +67889,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "encode", value: function () { - var _ref29 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee29(text) { + var _encode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee29(text) { return regeneratorRuntime.wrap(function _callee29$(_context29) { while (1) { switch (_context29.prev = _context29.next) { @@ -67195,11 +67903,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context29.stop(); } } - }, _callee29, this); + }, _callee29); })); - function encode(_x60) { - return _ref29.apply(this, arguments); + function encode(_x59) { + return _encode.apply(this, arguments); } return encode; @@ -67207,7 +67915,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "decode", value: function () { - var _ref30 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee30(text) { + var _decode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee30(text) { return regeneratorRuntime.wrap(function _callee30$(_context30) { while (1) { switch (_context30.prev = _context30.next) { @@ -67219,11 +67929,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context30.stop(); } } - }, _callee30, this); + }, _callee30); })); - function decode(_x61) { - return _ref30.apply(this, arguments); + function decode(_x60) { + return _decode.apply(this, arguments); } return decode; @@ -67231,7 +67941,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "getCompletedMigrations", value: function () { - var _ref31 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee31() { + var _getCompletedMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee31() { var rawCompleted; return regeneratorRuntime.wrap(function _callee31$(_context31) { while (1) { @@ -67266,7 +67978,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function getCompletedMigrations() { - return _ref31.apply(this, arguments); + return _getCompletedMigrations.apply(this, arguments); } return getCompletedMigrations; @@ -67274,7 +67986,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "getPendingMigrations", value: function () { - var _ref32 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee32() { + var _getPendingMigrations = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee32() { var completed, pending, _iteratorNormalCompletion8, _didIteratorError8, _iteratorError8, _iterator8, _step8, migration; return regeneratorRuntime.wrap(function _callee32$(_context32) { @@ -67335,8 +68049,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { _context32.prev = 28; _context32.prev = 29; - if (!_iteratorNormalCompletion8 && _iterator8.return) { - _iterator8.return(); + if (!_iteratorNormalCompletion8 && _iterator8["return"] != null) { + _iterator8["return"](); } case 31: @@ -67367,7 +68081,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { })); function getPendingMigrations() { - return _ref32.apply(this, arguments); + return _getPendingMigrations.apply(this, arguments); } return getPendingMigrations; @@ -67375,7 +68089,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "markMigrationCompleted", value: function () { - var _ref33 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee33(migration) { + var _markMigrationCompleted = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee33(migration) { var completed; return regeneratorRuntime.wrap(function _callee33$(_context33) { while (1) { @@ -67406,8 +68122,8 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, _callee33, this); })); - function markMigrationCompleted(_x62) { - return _ref33.apply(this, arguments); + function markMigrationCompleted(_x61) { + return _markMigrationCompleted.apply(this, arguments); } return markMigrationCompleted; @@ -67415,7 +68131,9 @@ var SFMigrationManager = exports.SFMigrationManager = function () { }, { key: "runMigration", value: function () { - var _ref34 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee34(migration, items) { + var _runMigration = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee34(migration, items) { var _this8 = this; return regeneratorRuntime.wrap(function _callee34$(_context34) { @@ -67430,9 +68148,7 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context34.abrupt("return"); case 2: - console.log("Running migration:", migration.name); - migration.running = true; if (!migration.customHandler) { @@ -67454,11 +68170,11 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return _context34.stop(); } } - }, _callee34, this); + }, _callee34); })); - function runMigration(_x63, _x64) { - return _ref34.apply(this, arguments); + function runMigration(_x62, _x63) { + return _runMigration.apply(this, arguments); } return runMigration; @@ -67468,8 +68184,12 @@ var SFMigrationManager = exports.SFMigrationManager = function () { return SFMigrationManager; }(); +exports.SFMigrationManager = SFMigrationManager; ; -var SFModelManager = exports.SFModelManager = function () { + +var SFModelManager = +/*#__PURE__*/ +function () { function SFModelManager(timeout) { _classCallCheck(this, SFModelManager); @@ -67480,7 +68200,10 @@ var SFModelManager = exports.SFModelManager = function () { SFModelManager.MappingSourceLocalDirtied = "MappingSourceLocalDirtied"; SFModelManager.MappingSourceComponentRetrieved = "MappingSourceComponentRetrieved"; SFModelManager.MappingSourceDesktopInstalled = "MappingSourceDesktopInstalled"; // When a component is installed by the desktop and some of its values change - SFModelManager.MappingSourceRemoteActionRetrieved = "MappingSourceRemoteActionRetrieved"; /* aciton-based Extensions like note history */ + + SFModelManager.MappingSourceRemoteActionRetrieved = "MappingSourceRemoteActionRetrieved"; + /* aciton-based Extensions like note history */ + SFModelManager.MappingSourceFileImport = "MappingSourceFileImport"; SFModelManager.isMappingSourceRetrieved = function (source) { @@ -67488,7 +68211,6 @@ var SFModelManager = exports.SFModelManager = function () { }; this.$timeout = timeout || setTimeout.bind(window); - this.itemSyncObservers = []; this.items = []; this.itemsHash = {}; @@ -67506,7 +68228,10 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "addModelUuidChangeObserver", value: function addModelUuidChangeObserver(id, callback) { - this.uuidChangeObservers.push({ id: id, callback: callback }); + this.uuidChangeObservers.push({ + id: id, + callback: callback + }); } }, { key: "notifyObserversOfUuidChange", @@ -67530,8 +68255,8 @@ var SFModelManager = exports.SFModelManager = function () { _iteratorError9 = err; } finally { try { - if (!_iteratorNormalCompletion9 && _iterator9.return) { - _iterator9.return(); + if (!_iteratorNormalCompletion9 && _iterator9["return"] != null) { + _iterator9["return"](); } } finally { if (_didIteratorError9) { @@ -67543,7 +68268,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "alternateUUIDForItem", value: function () { - var _ref35 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee35(item) { + var _alternateUUIDForItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee35(item) { var newItem, _iteratorNormalCompletion10, _didIteratorError10, _iteratorError10, _iterator10, _step10, referencingObject; return regeneratorRuntime.wrap(function _callee35$(_context35) { @@ -67557,20 +68284,17 @@ var SFModelManager = exports.SFModelManager = function () { case 3: newItem.uuid = _context35.sent; - - // Update uuids of relationships newItem.informReferencesOfUUIDChange(item.uuid, newItem.uuid); - this.informModelsOfUUIDChangeForItem(newItem, item.uuid, newItem.uuid); + this.informModelsOfUUIDChangeForItem(newItem, item.uuid, newItem.uuid); // the new item should inherit the original's relationships - // the new item should inherit the original's relationships _iteratorNormalCompletion10 = true; _didIteratorError10 = false; _iteratorError10 = undefined; _context35.prev = 9; + for (_iterator10 = item.referencingObjects[Symbol.iterator](); !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) { referencingObject = _step10.value; - referencingObject.setIsNoLongerBeingReferencedBy(item); item.setIsNoLongerBeingReferencedBy(referencingObject); referencingObject.addItemAsRelationship(newItem); @@ -67589,8 +68313,8 @@ var SFModelManager = exports.SFModelManager = function () { _context35.prev = 17; _context35.prev = 18; - if (!_iteratorNormalCompletion10 && _iterator10.return) { - _iterator10.return(); + if (!_iteratorNormalCompletion10 && _iterator10["return"] != null) { + _iterator10["return"](); } case 20: @@ -67610,35 +68334,31 @@ var SFModelManager = exports.SFModelManager = function () { return _context35.finish(17); case 25: - this.setItemsDirty(item.referencingObjects, true); + this.setItemsDirty(item.referencingObjects, true); // Used to set up referencingObjects for new item (so that other items can now properly reference this new item) - // Used to set up referencingObjects for new item (so that other items can now properly reference this new item) this.resolveReferencesForItem(newItem); if (this.loggingEnabled) { console.log(item.uuid, "-->", newItem.uuid); - } + } // Set to deleted, then run through mapping function so that observers can be notified + - // Set to deleted, then run through mapping function so that observers can be notified item.deleted = true; - item.content.references = []; - // Don't set dirty, because we don't need to sync old item. alternating uuid only occurs in two cases: + item.content.references = []; // Don't set dirty, because we don't need to sync old item. alternating uuid only occurs in two cases: // signing in and merging offline data, or when a uuid-conflict occurs. In both cases, the original item never // saves to a server, so doesn't need to be synced. // informModelsOfUUIDChangeForItem may set this object to dirty, but we want to undo that here, so that the item gets deleted // right away through the mapping function. + this.setItemDirty(item, false, false, SFModelManager.MappingSourceLocalSaved); _context35.next = 33; return this.mapResponseItemsToLocalModels([item], SFModelManager.MappingSourceLocalSaved); case 33: - // add new item this.addItem(newItem); this.setItemDirty(newItem, true, true, SFModelManager.MappingSourceLocalSaved); - this.notifyObserversOfUuidChange(item, newItem); - return _context35.abrupt("return", newItem); case 37: @@ -67649,8 +68369,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee35, this, [[9, 13, 17, 25], [18,, 20, 24]]); })); - function alternateUUIDForItem(_x65) { - return _ref35.apply(this, arguments); + function alternateUUIDForItem(_x64) { + return _alternateUUIDForItem.apply(this, arguments); } return alternateUUIDForItem; @@ -67661,7 +68381,6 @@ var SFModelManager = exports.SFModelManager = function () { // some models that only have one-way relationships might be interested to hear that an item has changed its uuid // for example, editors have a one way relationship with notes. When a note changes its UUID, it has no way to inform the editor // to update its relationships - var _iteratorNormalCompletion11 = true; var _didIteratorError11 = false; var _iteratorError11 = undefined; @@ -67669,7 +68388,6 @@ var SFModelManager = exports.SFModelManager = function () { try { for (var _iterator11 = this.items[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) { var model = _step11.value; - model.potentialItemOfInterestHasChangedItsUUID(newItem, oldUUID, newUUID); } } catch (err) { @@ -67677,8 +68395,8 @@ var SFModelManager = exports.SFModelManager = function () { _iteratorError11 = err; } finally { try { - if (!_iteratorNormalCompletion11 && _iterator11.return) { - _iterator11.return(); + if (!_iteratorNormalCompletion11 && _iterator11["return"] != null) { + _iterator11["return"](); } } finally { if (_didIteratorError11) { @@ -67695,12 +68413,18 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModels", value: function () { - var _ref36 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee36(items, source, sourceKey) { + var _mapResponseItemsToLocalModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee36(items, source, sourceKey) { return regeneratorRuntime.wrap(function _callee36$(_context36) { while (1) { switch (_context36.prev = _context36.next) { case 0: - return _context36.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ items: items, source: source, sourceKey: sourceKey })); + return _context36.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ + items: items, + source: source, + sourceKey: sourceKey + })); case 1: case "end": @@ -67710,8 +68434,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee36, this); })); - function mapResponseItemsToLocalModels(_x66, _x67, _x68) { - return _ref36.apply(this, arguments); + function mapResponseItemsToLocalModels(_x65, _x66, _x67) { + return _mapResponseItemsToLocalModels.apply(this, arguments); } return mapResponseItemsToLocalModels; @@ -67719,12 +68443,19 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModelsOmittingFields", value: function () { - var _ref37 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee37(items, omitFields, source, sourceKey) { + var _mapResponseItemsToLocalModelsOmittingFields = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee37(items, omitFields, source, sourceKey) { return regeneratorRuntime.wrap(function _callee37$(_context37) { while (1) { switch (_context37.prev = _context37.next) { case 0: - return _context37.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ items: items, omitFields: omitFields, source: source, sourceKey: sourceKey })); + return _context37.abrupt("return", this.mapResponseItemsToLocalModelsWithOptions({ + items: items, + omitFields: omitFields, + source: source, + sourceKey: sourceKey + })); case 1: case "end": @@ -67734,8 +68465,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee37, this); })); - function mapResponseItemsToLocalModelsOmittingFields(_x69, _x70, _x71, _x72) { - return _ref37.apply(this, arguments); + function mapResponseItemsToLocalModelsOmittingFields(_x68, _x69, _x70, _x71) { + return _mapResponseItemsToLocalModelsOmittingFields.apply(this, arguments); } return mapResponseItemsToLocalModelsOmittingFields; @@ -67743,115 +68474,108 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "mapResponseItemsToLocalModelsWithOptions", value: function () { - var _ref39 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee38(_ref38) { - var items = _ref38.items, - omitFields = _ref38.omitFields, - source = _ref38.source, - sourceKey = _ref38.sourceKey, - options = _ref38.options; - - var models, processedObjects, modelsToNotifyObserversOf, _iteratorNormalCompletion12, _didIteratorError12, _iteratorError12, _iterator12, _step12, json_obj, isMissingContent, isCorrupt, _iteratorNormalCompletion15, _didIteratorError15, _iteratorError15, _iterator15, _step15, key, item, contentType, unknownContentType, isDirtyItemPendingDelete, _iteratorNormalCompletion13, _didIteratorError13, _iteratorError13, _iterator13, _step13, _ref40, _ref41, index, _json_obj, model, missedRefs, _loop, _iteratorNormalCompletion14, _didIteratorError14, _iteratorError14, _iterator14, _step14, ref; + var _mapResponseItemsToLocalModelsWithOptions = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee38(_ref9) { + var items, omitFields, source, sourceKey, options, models, processedObjects, modelsToNotifyObserversOf, _iteratorNormalCompletion12, _didIteratorError12, _iteratorError12, _iterator12, _step12, json_obj, isMissingContent, isCorrupt, _iteratorNormalCompletion15, _didIteratorError15, _iteratorError15, _iterator15, _step15, key, item, contentType, unknownContentType, isDirtyItemPendingDelete, _iteratorNormalCompletion13, _didIteratorError13, _iteratorError13, _iterator13, _step13, _step13$value, index, _json_obj, model, missedRefs, _iteratorNormalCompletion14, _didIteratorError14, _iteratorError14, _loop, _iterator14, _step14; return regeneratorRuntime.wrap(function _callee38$(_context38) { while (1) { switch (_context38.prev = _context38.next) { case 0: - models = [], processedObjects = [], modelsToNotifyObserversOf = []; - - // first loop should add and process items + items = _ref9.items, omitFields = _ref9.omitFields, source = _ref9.source, sourceKey = _ref9.sourceKey, options = _ref9.options; + models = [], processedObjects = [], modelsToNotifyObserversOf = []; // first loop should add and process items _iteratorNormalCompletion12 = true; _didIteratorError12 = false; _iteratorError12 = undefined; - _context38.prev = 4; + _context38.prev = 5; _iterator12 = items[Symbol.iterator](); - case 6: + case 7: if (_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done) { - _context38.next = 57; + _context38.next = 58; break; } json_obj = _step12.value; if (json_obj) { - _context38.next = 10; + _context38.next = 11; break; } - return _context38.abrupt("continue", 54); - - case 10: + return _context38.abrupt("continue", 55); + case 11: // content is missing if it has been sucessfullly decrypted but no content isMissingContent = !json_obj.content && !json_obj.errorDecrypting; isCorrupt = !json_obj.content_type || !json_obj.uuid; if (!((isCorrupt || isMissingContent) && !json_obj.deleted)) { - _context38.next = 15; + _context38.next = 16; break; } // An item that is not deleted should never have empty content console.error("Server response item is corrupt:", json_obj); - return _context38.abrupt("continue", 54); + return _context38.abrupt("continue", 55); - case 15: + case 16: if (!Array.isArray(omitFields)) { - _context38.next = 35; + _context38.next = 36; break; } _iteratorNormalCompletion15 = true; _didIteratorError15 = false; _iteratorError15 = undefined; - _context38.prev = 19; + _context38.prev = 20; for (_iterator15 = omitFields[Symbol.iterator](); !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) { key = _step15.value; - delete json_obj[key]; } - _context38.next = 27; + + _context38.next = 28; break; - case 23: - _context38.prev = 23; - _context38.t0 = _context38["catch"](19); + case 24: + _context38.prev = 24; + _context38.t0 = _context38["catch"](20); _didIteratorError15 = true; _iteratorError15 = _context38.t0; - case 27: - _context38.prev = 27; + case 28: _context38.prev = 28; + _context38.prev = 29; - if (!_iteratorNormalCompletion15 && _iterator15.return) { - _iterator15.return(); + if (!_iteratorNormalCompletion15 && _iterator15["return"] != null) { + _iterator15["return"](); } - case 30: - _context38.prev = 30; + case 31: + _context38.prev = 31; if (!_didIteratorError15) { - _context38.next = 33; + _context38.next = 34; break; } throw _iteratorError15; - case 33: - return _context38.finish(30); - case 34: - return _context38.finish(27); + return _context38.finish(31); case 35: + return _context38.finish(28); + + case 36: item = this.findItem(json_obj.uuid); - if (item) { - item.updateFromJSON(json_obj); - // If an item goes through mapping, it can no longer be a dummy. + item.updateFromJSON(json_obj); // If an item goes through mapping, it can no longer be a dummy. + item.dummy = false; } @@ -67859,22 +68583,22 @@ var SFModelManager = exports.SFModelManager = function () { unknownContentType = this.acceptableContentTypes && !this.acceptableContentTypes.includes(contentType); if (!unknownContentType) { - _context38.next = 41; + _context38.next = 42; break; } - return _context38.abrupt("continue", 54); + return _context38.abrupt("continue", 55); - case 41: + case 42: isDirtyItemPendingDelete = false; if (!(json_obj.deleted == true)) { - _context38.next = 49; + _context38.next = 50; break; } if (!json_obj.dirty) { - _context38.next = 47; + _context38.next = 48; break; } @@ -67882,28 +68606,26 @@ var SFModelManager = exports.SFModelManager = function () { // We need to create this item as usual, but just not add it to individual arrays // i.e add to this.items but not this.notes (so that it can be retrieved with getDirtyItems) isDirtyItemPendingDelete = true; - _context38.next = 49; + _context38.next = 50; break; - case 47: + case 48: if (item) { // We still want to return this item to the caller so they know it was handled. models.push(item); - modelsToNotifyObserversOf.push(item); this.removeItemLocally(item); } - return _context38.abrupt("continue", 54); - case 49: + return _context38.abrupt("continue", 55); + case 50: if (!item) { item = this.createItem(json_obj); } - this.addItem(item, isDirtyItemPendingDelete); + this.addItem(item, isDirtyItemPendingDelete); // Observers do not need to handle items that errored while decrypting. - // Observers do not need to handle items that errored while decrypting. if (!item.errorDecrypting) { modelsToNotifyObserversOf.push(item); } @@ -67911,57 +68633,54 @@ var SFModelManager = exports.SFModelManager = function () { models.push(item); processedObjects.push(json_obj); - case 54: + case 55: _iteratorNormalCompletion12 = true; - _context38.next = 6; + _context38.next = 7; break; - case 57: - _context38.next = 63; + case 58: + _context38.next = 64; break; - case 59: - _context38.prev = 59; - _context38.t1 = _context38["catch"](4); + case 60: + _context38.prev = 60; + _context38.t1 = _context38["catch"](5); _didIteratorError12 = true; _iteratorError12 = _context38.t1; - case 63: - _context38.prev = 63; + case 64: _context38.prev = 64; + _context38.prev = 65; - if (!_iteratorNormalCompletion12 && _iterator12.return) { - _iterator12.return(); + if (!_iteratorNormalCompletion12 && _iterator12["return"] != null) { + _iterator12["return"](); } - case 66: - _context38.prev = 66; + case 67: + _context38.prev = 67; if (!_didIteratorError12) { - _context38.next = 69; + _context38.next = 70; break; } throw _iteratorError12; - case 69: - return _context38.finish(66); - case 70: - return _context38.finish(63); + return _context38.finish(67); case 71: + return _context38.finish(64); + case 72: // second loop should process references _iteratorNormalCompletion13 = true; _didIteratorError13 = false; _iteratorError13 = undefined; - _context38.prev = 74; + _context38.prev = 75; + for (_iterator13 = processedObjects.entries()[Symbol.iterator](); !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) { - _ref40 = _step13.value; - _ref41 = _slicedToArray(_ref40, 2); - index = _ref41[0]; - _json_obj = _ref41[1]; + _step13$value = _slicedToArray(_step13.value, 2), index = _step13$value[0], _json_obj = _step13$value[1]; model = models[index]; if (_json_obj.content) { @@ -67971,114 +68690,112 @@ var SFModelManager = exports.SFModelManager = function () { model.didFinishSyncing(); } - _context38.next = 82; + _context38.next = 83; break; - case 78: - _context38.prev = 78; - _context38.t2 = _context38["catch"](74); + case 79: + _context38.prev = 79; + _context38.t2 = _context38["catch"](75); _didIteratorError13 = true; _iteratorError13 = _context38.t2; - case 82: - _context38.prev = 82; + case 83: _context38.prev = 83; + _context38.prev = 84; - if (!_iteratorNormalCompletion13 && _iterator13.return) { - _iterator13.return(); + if (!_iteratorNormalCompletion13 && _iterator13["return"] != null) { + _iterator13["return"](); } - case 85: - _context38.prev = 85; + case 86: + _context38.prev = 86; if (!_didIteratorError13) { - _context38.next = 88; + _context38.next = 89; break; } throw _iteratorError13; - case 88: - return _context38.finish(85); - case 89: - return _context38.finish(82); + return _context38.finish(86); case 90: - missedRefs = this.popMissedReferenceStructsForObjects(processedObjects); + return _context38.finish(83); - _loop = function _loop(ref) { + case 91: + missedRefs = this.popMissedReferenceStructsForObjects(processedObjects); + _iteratorNormalCompletion14 = true; + _didIteratorError14 = false; + _iteratorError14 = undefined; + _context38.prev = 95; + + _loop = function _loop() { + var ref = _step14.value; var model = models.find(function (candidate) { return candidate.uuid == ref.reference_uuid; - }); - // Model should 100% be defined here, but let's not be too overconfident + }); // Model should 100% be defined here, but let's not be too overconfident + if (model) { var itemWaitingForTheValueInThisCurrentLoop = ref.for_item; itemWaitingForTheValueInThisCurrentLoop.addItemAsRelationship(model); } }; - _iteratorNormalCompletion14 = true; - _didIteratorError14 = false; - _iteratorError14 = undefined; - _context38.prev = 95; - for (_iterator14 = missedRefs[Symbol.iterator](); !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { - ref = _step14.value; - - _loop(ref); + _loop(); } - _context38.next = 103; + _context38.next = 104; break; - case 99: - _context38.prev = 99; + case 100: + _context38.prev = 100; _context38.t3 = _context38["catch"](95); _didIteratorError14 = true; _iteratorError14 = _context38.t3; - case 103: - _context38.prev = 103; + case 104: _context38.prev = 104; + _context38.prev = 105; - if (!_iteratorNormalCompletion14 && _iterator14.return) { - _iterator14.return(); + if (!_iteratorNormalCompletion14 && _iterator14["return"] != null) { + _iterator14["return"](); } - case 106: - _context38.prev = 106; + case 107: + _context38.prev = 107; if (!_didIteratorError14) { - _context38.next = 109; + _context38.next = 110; break; } throw _iteratorError14; - case 109: - return _context38.finish(106); - case 110: - return _context38.finish(103); + return _context38.finish(107); case 111: - _context38.next = 113; + return _context38.finish(104); + + case 112: + _context38.next = 114; return this.notifySyncObserversOfModels(modelsToNotifyObserversOf, source, sourceKey); - case 113: + case 114: return _context38.abrupt("return", models); - case 114: + case 115: case "end": return _context38.stop(); } } - }, _callee38, this, [[4, 59, 63, 71], [19, 23, 27, 35], [28,, 30, 34], [64,, 66, 70], [74, 78, 82, 90], [83,, 85, 89], [95, 99, 103, 111], [104,, 106, 110]]); + }, _callee38, this, [[5, 60, 64, 72], [20, 24, 28, 36], [29,, 31, 35], [65,, 67, 71], [75, 79, 83, 91], [84,, 86, 90], [95, 100, 104, 112], [105,, 107, 111]]); })); - function mapResponseItemsToLocalModelsWithOptions(_x73) { - return _ref39.apply(this, arguments); + function mapResponseItemsToLocalModelsWithOptions(_x72) { + return _mapResponseItemsToLocalModelsWithOptions.apply(this, arguments); } return mapResponseItemsToLocalModelsWithOptions; @@ -68086,7 +68803,7 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "missedReferenceBuildKey", value: function missedReferenceBuildKey(referenceId, objectId) { - return referenceId + ":" + objectId; + return "".concat(referenceId, ":").concat(objectId); } }, { key: "popMissedReferenceStructsForObjects", @@ -68101,67 +68818,28 @@ var SFModelManager = exports.SFModelManager = function () { return item.uuid; }); var genericUuidLength = uuids[0].length; - var keys = Object.keys(this.missedReferences); - var _iteratorNormalCompletion16 = true; - var _didIteratorError16 = false; - var _iteratorError16 = undefined; - try { - for (var _iterator16 = keys[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { - var candidateKey = _step16.value; + for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) { + var candidateKey = _keys2[_i2]; - /* - We used to do string.split to get at the UUID, but surprisingly, - the performance of this was about 20x worse then just getting the substring. - let matches = candidateKey.split(":")[0] == object.uuid; - */ - var matches = uuids.includes(candidateKey.substring(0, genericUuidLength)); - if (matches) { - results.push(this.missedReferences[candidateKey]); - toDelete.push(candidateKey); - } + /* + We used to do string.split to get at the UUID, but surprisingly, + the performance of this was about 20x worse then just getting the substring. + let matches = candidateKey.split(":")[0] == object.uuid; + */ + var matches = uuids.includes(candidateKey.substring(0, genericUuidLength)); + + if (matches) { + results.push(this.missedReferences[candidateKey]); + toDelete.push(candidateKey); } + } // remove from hash - // remove from hash - } catch (err) { - _didIteratorError16 = true; - _iteratorError16 = err; - } finally { - try { - if (!_iteratorNormalCompletion16 && _iterator16.return) { - _iterator16.return(); - } - } finally { - if (_didIteratorError16) { - throw _iteratorError16; - } - } - } - var _iteratorNormalCompletion17 = true; - var _didIteratorError17 = false; - var _iteratorError17 = undefined; - - try { - for (var _iterator17 = toDelete[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) { - var key = _step17.value; - - delete this.missedReferences[key]; - } - } catch (err) { - _didIteratorError17 = true; - _iteratorError17 = err; - } finally { - try { - if (!_iteratorNormalCompletion17 && _iterator17.return) { - _iterator17.return(); - } - } finally { - if (_didIteratorError17) { - throw _iteratorError17; - } - } + for (var _i3 = 0, _toDelete = toDelete; _i3 < _toDelete.length; _i3++) { + var key = _toDelete[_i3]; + delete this.missedReferences[key]; } return results; @@ -68171,15 +68849,13 @@ var SFModelManager = exports.SFModelManager = function () { value: function resolveReferencesForItem(item) { var markReferencesDirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - if (item.errorDecrypting) { return; } - var contentObject = item.contentObject; - - // If another client removes an item's references, this client won't pick up the removal unless + var contentObject = item.contentObject; // If another client removes an item's references, this client won't pick up the removal unless // we remove everything not present in the current list of references + item.updateLocalRelationships(); if (!contentObject.references) { @@ -68193,61 +68869,63 @@ var SFModelManager = exports.SFModelManager = function () { }); var includeBlanks = true; var referencesObjectResults = this.findItems(referencesIds, includeBlanks); - - var _iteratorNormalCompletion18 = true; - var _didIteratorError18 = false; - var _iteratorError18 = undefined; + var _iteratorNormalCompletion16 = true; + var _didIteratorError16 = false; + var _iteratorError16 = undefined; try { - for (var _iterator18 = referencesObjectResults.entries()[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { - var _ref42 = _step18.value; - - var _ref43 = _slicedToArray(_ref42, 2); - - var index = _ref43[0]; - var referencedItem = _ref43[1]; + for (var _iterator16 = referencesObjectResults.entries()[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { + var _step16$value = _slicedToArray(_step16.value, 2), + index = _step16$value[0], + referencedItem = _step16$value[1]; if (referencedItem) { item.addItemAsRelationship(referencedItem); + if (markReferencesDirty) { this.setItemDirty(referencedItem, true); } } else { - var missingRefId = referencesIds[index]; - // Allows mapper to check when missing reference makes it through the loop, + var missingRefId = referencesIds[index]; // Allows mapper to check when missing reference makes it through the loop, // and then runs resolveReferencesForItem again for the original item. + var mappingKey = this.missedReferenceBuildKey(missingRefId, item.uuid); + if (!this.missedReferences[mappingKey]) { - var missedRef = { reference_uuid: missingRefId, for_item: item }; + var missedRef = { + reference_uuid: missingRefId, + for_item: item + }; this.missedReferences[mappingKey] = missedRef; } } } } catch (err) { - _didIteratorError18 = true; - _iteratorError18 = err; + _didIteratorError16 = true; + _iteratorError16 = err; } finally { try { - if (!_iteratorNormalCompletion18 && _iterator18.return) { - _iterator18.return(); + if (!_iteratorNormalCompletion16 && _iterator16["return"] != null) { + _iterator16["return"](); } } finally { - if (_didIteratorError18) { - throw _iteratorError18; + if (_didIteratorError16) { + throw _iteratorError16; } } } } - /* Note that this function is public, and can also be called manually (desktopManager uses it) */ }, { key: "notifySyncObserversOfModels", value: function () { - var _ref44 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee39(models, source, sourceKey) { + var _notifySyncObserversOfModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee39(models, source, sourceKey) { var _this9 = this; - var observers, _loop2, _iteratorNormalCompletion19, _didIteratorError19, _iteratorError19, _iterator19, _step19, observer; + var observers, _iteratorNormalCompletion17, _didIteratorError17, _iteratorError17, _loop2, _iterator17, _step17; return regeneratorRuntime.wrap(function _callee39$(_context40) { while (1) { @@ -68258,24 +68936,31 @@ var SFModelManager = exports.SFModelManager = function () { // sort by priority return a.priority < b.priority ? -1 : 1; }); - _loop2 = /*#__PURE__*/regeneratorRuntime.mark(function _loop2(observer) { - var allRelevantItems, validItems, deletedItems, _iteratorNormalCompletion20, _didIteratorError20, _iteratorError20, _iterator20, _step20, item; + _iteratorNormalCompletion17 = true; + _didIteratorError17 = false; + _iteratorError17 = undefined; + _context40.prev = 4; + _loop2 = + /*#__PURE__*/ + regeneratorRuntime.mark(function _loop2() { + var observer, allRelevantItems, validItems, deletedItems, _iteratorNormalCompletion18, _didIteratorError18, _iteratorError18, _iterator18, _step18, item; return regeneratorRuntime.wrap(function _loop2$(_context39) { while (1) { switch (_context39.prev = _context39.next) { case 0: + observer = _step17.value; allRelevantItems = observer.types.includes("*") ? models : models.filter(function (item) { return observer.types.includes(item.content_type); }); validItems = [], deletedItems = []; - _iteratorNormalCompletion20 = true; - _didIteratorError20 = false; - _iteratorError20 = undefined; - _context39.prev = 5; + _iteratorNormalCompletion18 = true; + _didIteratorError18 = false; + _iteratorError18 = undefined; + _context39.prev = 6; - for (_iterator20 = allRelevantItems[Symbol.iterator](); !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { - item = _step20.value; + for (_iterator18 = allRelevantItems[Symbol.iterator](); !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { + item = _step18.value; if (item.deleted) { deletedItems.push(item); @@ -68284,124 +68969,118 @@ var SFModelManager = exports.SFModelManager = function () { } } - _context39.next = 13; + _context39.next = 14; break; - case 9: - _context39.prev = 9; - _context39.t0 = _context39["catch"](5); - _didIteratorError20 = true; - _iteratorError20 = _context39.t0; + case 10: + _context39.prev = 10; + _context39.t0 = _context39["catch"](6); + _didIteratorError18 = true; + _iteratorError18 = _context39.t0; - case 13: - _context39.prev = 13; + case 14: _context39.prev = 14; + _context39.prev = 15; - if (!_iteratorNormalCompletion20 && _iterator20.return) { - _iterator20.return(); + if (!_iteratorNormalCompletion18 && _iterator18["return"] != null) { + _iterator18["return"](); } - case 16: - _context39.prev = 16; + case 17: + _context39.prev = 17; - if (!_didIteratorError20) { - _context39.next = 19; + if (!_didIteratorError18) { + _context39.next = 20; break; } - throw _iteratorError20; - - case 19: - return _context39.finish(16); + throw _iteratorError18; case 20: - return _context39.finish(13); + return _context39.finish(17); case 21: + return _context39.finish(14); + + case 22: if (!(allRelevantItems.length > 0)) { - _context39.next = 24; + _context39.next = 25; break; } - _context39.next = 24; + _context39.next = 25; return _this9._callSyncObserverCallbackWithTimeout(observer, allRelevantItems, validItems, deletedItems, source, sourceKey); - case 24: + case 25: case "end": return _context39.stop(); } } - }, _loop2, _this9, [[5, 9, 13, 21], [14,, 16, 20]]); + }, _loop2, null, [[6, 10, 14, 22], [15,, 17, 21]]); }); - _iteratorNormalCompletion19 = true; - _didIteratorError19 = false; - _iteratorError19 = undefined; - _context40.prev = 5; - _iterator19 = observers[Symbol.iterator](); + _iterator17 = observers[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done) { - _context40.next = 13; + if (_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done) { + _context40.next = 12; break; } - observer = _step19.value; - return _context40.delegateYield(_loop2(observer), "t0", 10); + return _context40.delegateYield(_loop2(), "t0", 9); - case 10: - _iteratorNormalCompletion19 = true; + case 9: + _iteratorNormalCompletion17 = true; _context40.next = 7; break; - case 13: - _context40.next = 19; + case 12: + _context40.next = 18; break; - case 15: - _context40.prev = 15; - _context40.t1 = _context40["catch"](5); - _didIteratorError19 = true; - _iteratorError19 = _context40.t1; + case 14: + _context40.prev = 14; + _context40.t1 = _context40["catch"](4); + _didIteratorError17 = true; + _iteratorError17 = _context40.t1; - case 19: + case 18: + _context40.prev = 18; _context40.prev = 19; - _context40.prev = 20; - if (!_iteratorNormalCompletion19 && _iterator19.return) { - _iterator19.return(); + if (!_iteratorNormalCompletion17 && _iterator17["return"] != null) { + _iterator17["return"](); } - case 22: - _context40.prev = 22; + case 21: + _context40.prev = 21; - if (!_didIteratorError19) { - _context40.next = 25; + if (!_didIteratorError17) { + _context40.next = 24; break; } - throw _iteratorError19; + throw _iteratorError17; + + case 24: + return _context40.finish(21); case 25: - return _context40.finish(22); + return _context40.finish(18); case 26: - return _context40.finish(19); - - case 27: case "end": return _context40.stop(); } } - }, _callee39, this, [[5, 15, 19, 27], [20,, 22, 26]]); + }, _callee39, this, [[4, 14, 18, 26], [19,, 21, 25]]); })); - function notifySyncObserversOfModels(_x75, _x76, _x77) { - return _ref44.apply(this, arguments); + function notifySyncObserversOfModels(_x73, _x74, _x75) { + return _notifySyncObserversOfModels.apply(this, arguments); } return notifySyncObserversOfModels; }() - /* Rather than running this inline in a for loop, which causes problems and requires all variables to be declared with `let`, we'll do it here so it's more explicit and less confusing. @@ -68410,7 +69089,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "_callSyncObserverCallbackWithTimeout", value: function () { - var _ref45 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee40(observer, allRelevantItems, validItems, deletedItems, source, sourceKey) { + var _callSyncObserverCallbackWithTimeout2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee40(observer, allRelevantItems, validItems, deletedItems, source, sourceKey) { var _this10 = this; return regeneratorRuntime.wrap(function _callee40$(_context41) { @@ -68434,17 +69115,15 @@ var SFModelManager = exports.SFModelManager = function () { return _context41.stop(); } } - }, _callee40, this); + }, _callee40); })); - function _callSyncObserverCallbackWithTimeout(_x78, _x79, _x80, _x81, _x82, _x83) { - return _ref45.apply(this, arguments); + function _callSyncObserverCallbackWithTimeout(_x76, _x77, _x78, _x79, _x80, _x81) { + return _callSyncObserverCallbackWithTimeout2.apply(this, arguments); } return _callSyncObserverCallbackWithTimeout; - }() - - // When a client sets an item as dirty, it means its values has changed, and everyone should know about it. + }() // When a client sets an item as dirty, it means its values has changed, and everyone should know about it. // Particularly extensions. For example, if you edit the title of a note, extensions won't be notified until the save sync completes. // With this, they'll be notified immediately. @@ -68452,40 +69131,38 @@ var SFModelManager = exports.SFModelManager = function () { key: "setItemDirty", value: function setItemDirty(item) { var dirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var updateClientDate = arguments[2]; - var source = arguments[3]; - var sourceKey = arguments[4]; - + var updateClientDate = arguments.length > 2 ? arguments[2] : undefined; + var source = arguments.length > 3 ? arguments[3] : undefined; + var sourceKey = arguments.length > 4 ? arguments[4] : undefined; this.setItemsDirty([item], dirty, updateClientDate, source, sourceKey); } }, { key: "setItemsDirty", value: function setItemsDirty(items) { var dirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var updateClientDate = arguments[2]; - var source = arguments[3]; - var sourceKey = arguments[4]; - var _iteratorNormalCompletion21 = true; - var _didIteratorError21 = false; - var _iteratorError21 = undefined; + var updateClientDate = arguments.length > 2 ? arguments[2] : undefined; + var source = arguments.length > 3 ? arguments[3] : undefined; + var sourceKey = arguments.length > 4 ? arguments[4] : undefined; + var _iteratorNormalCompletion19 = true; + var _didIteratorError19 = false; + var _iteratorError19 = undefined; try { - for (var _iterator21 = items[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { - var item = _step21.value; - + for (var _iterator19 = items[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) { + var item = _step19.value; item.setDirty(dirty, updateClientDate); } } catch (err) { - _didIteratorError21 = true; - _iteratorError21 = err; + _didIteratorError19 = true; + _iteratorError19 = err; } finally { try { - if (!_iteratorNormalCompletion21 && _iterator21.return) { - _iterator21.return(); + if (!_iteratorNormalCompletion19 && _iterator19["return"] != null) { + _iterator19["return"](); } } finally { - if (_didIteratorError21) { - throw _iteratorError21; + if (_didIteratorError19) { + throw _iteratorError19; } } } @@ -68496,6 +69173,7 @@ var SFModelManager = exports.SFModelManager = function () { key: "createItem", value: function createItem(json_obj) { var itemClass = SFModelManager.ContentTypeClassMapping && SFModelManager.ContentTypeClassMapping[json_obj.content_type]; + if (!itemClass) { itemClass = SFItem; } @@ -68503,7 +69181,6 @@ var SFModelManager = exports.SFModelManager = function () { var item = new itemClass(json_obj); return item; } - /* Be sure itemResponse is a generic Javascript object, and not an Item. An Item needs to collapse its properties into its content object before it can be duplicated. @@ -68515,7 +69192,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "createDuplicateItemFromResponseItem", value: function () { - var _ref46 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee41(itemResponse) { + var _createDuplicateItemFromResponseItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee41(itemResponse) { var itemResponseCopy, duplicate; return regeneratorRuntime.wrap(function _callee41$(_context42) { while (1) { @@ -68549,8 +69228,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee41, this); })); - function createDuplicateItemFromResponseItem(_x86) { - return _ref46.apply(this, arguments); + function createDuplicateItemFromResponseItem(_x82) { + return _createDuplicateItemFromResponseItem.apply(this, arguments); } return createDuplicateItemFromResponseItem; @@ -68558,38 +69237,48 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "duplicateItemAndAddAsConflict", value: function duplicateItemAndAddAsConflict(duplicateOf) { - return this.duplicateItemWithCustomContentAndAddAsConflict({ content: duplicateOf.content, duplicateOf: duplicateOf }); + return this.duplicateItemWithCustomContentAndAddAsConflict({ + content: duplicateOf.content, + duplicateOf: duplicateOf + }); } }, { key: "duplicateItemWithCustomContentAndAddAsConflict", - value: function duplicateItemWithCustomContentAndAddAsConflict(_ref47) { - var content = _ref47.content, - duplicateOf = _ref47.duplicateOf; - - var copy = this.duplicateItemWithCustomContent({ content: content, duplicateOf: duplicateOf }); - this.addDuplicatedItemAsConflict({ duplicate: copy, duplicateOf: duplicateOf }); + value: function duplicateItemWithCustomContentAndAddAsConflict(_ref10) { + var content = _ref10.content, + duplicateOf = _ref10.duplicateOf; + var copy = this.duplicateItemWithCustomContent({ + content: content, + duplicateOf: duplicateOf + }); + this.addDuplicatedItemAsConflict({ + duplicate: copy, + duplicateOf: duplicateOf + }); return copy; } }, { key: "addDuplicatedItemAsConflict", - value: function addDuplicatedItemAsConflict(_ref48) { - var duplicate = _ref48.duplicate, - duplicateOf = _ref48.duplicateOf; - + value: function addDuplicatedItemAsConflict(_ref11) { + var duplicate = _ref11.duplicate, + duplicateOf = _ref11.duplicateOf; this.addDuplicatedItem(duplicate, duplicateOf); duplicate.content.conflict_of = duplicateOf.uuid; } }, { key: "duplicateItemWithCustomContent", - value: function duplicateItemWithCustomContent(_ref49) { - var content = _ref49.content, - duplicateOf = _ref49.duplicateOf; - - var copy = new duplicateOf.constructor({ content: content }); + value: function duplicateItemWithCustomContent(_ref12) { + var content = _ref12.content, + duplicateOf = _ref12.duplicateOf; + var copy = new duplicateOf.constructor({ + content: content + }); copy.created_at = duplicateOf.created_at; + if (!copy.content_type) { copy.content_type = duplicateOf.content_type; } + return copy; } }, { @@ -68602,40 +69291,43 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "duplicateItemWithoutAdding", value: function duplicateItemWithoutAdding(item) { - var copy = new item.constructor({ content: item.content }); + var copy = new item.constructor({ + content: item.content + }); copy.created_at = item.created_at; + if (!copy.content_type) { copy.content_type = item.content_type; } + return copy; } }, { key: "addDuplicatedItem", value: function addDuplicatedItem(duplicate, original) { - this.addItem(duplicate); - // the duplicate should inherit the original's relationships - var _iteratorNormalCompletion22 = true; - var _didIteratorError22 = false; - var _iteratorError22 = undefined; + this.addItem(duplicate); // the duplicate should inherit the original's relationships + + var _iteratorNormalCompletion20 = true; + var _didIteratorError20 = false; + var _iteratorError20 = undefined; try { - for (var _iterator22 = original.referencingObjects[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { - var referencingObject = _step22.value; - + for (var _iterator20 = original.referencingObjects[Symbol.iterator](), _step20; !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { + var referencingObject = _step20.value; referencingObject.addItemAsRelationship(duplicate); this.setItemDirty(referencingObject, true); } } catch (err) { - _didIteratorError22 = true; - _iteratorError22 = err; + _didIteratorError20 = true; + _iteratorError20 = err; } finally { try { - if (!_iteratorNormalCompletion22 && _iterator22.return) { - _iterator22.return(); + if (!_iteratorNormalCompletion20 && _iterator20["return"] != null) { + _iterator20["return"](); } } finally { - if (_didIteratorError22) { - throw _iteratorError22; + if (_didIteratorError20) { + throw _iteratorError20; } } } @@ -68647,7 +69339,6 @@ var SFModelManager = exports.SFModelManager = function () { key: "addItem", value: function addItem(item) { var globalOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - this.addItems([item], globalOnly); } }, { @@ -68656,39 +69347,51 @@ var SFModelManager = exports.SFModelManager = function () { var _this11 = this; var globalOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - items.forEach(function (item) { if (!_this11.itemsHash[item.uuid]) { _this11.itemsHash[item.uuid] = item; + _this11.items.push(item); } }); } - /* Notifies observers when an item has been synced or mapped from a remote response */ }, { key: "addItemSyncObserver", value: function addItemSyncObserver(id, types, callback) { - this.addItemSyncObserverWithPriority({ id: id, types: types, callback: callback, priority: 1 }); + this.addItemSyncObserverWithPriority({ + id: id, + types: types, + callback: callback, + priority: 1 + }); } }, { key: "addItemSyncObserverWithPriority", - value: function addItemSyncObserverWithPriority(_ref50) { - var id = _ref50.id, - priority = _ref50.priority, - types = _ref50.types, - callback = _ref50.callback; + value: function addItemSyncObserverWithPriority(_ref13) { + var id = _ref13.id, + priority = _ref13.priority, + types = _ref13.types, + callback = _ref13.callback; if (!Array.isArray(types)) { types = [types]; } - this.itemSyncObservers.push({ id: id, types: types, priority: priority, callback: callback }); + + this.itemSyncObservers.push({ + id: id, + types: types, + priority: priority, + callback: callback + }); } }, { key: "removeItemSyncObserver", value: function removeItemSyncObserver(id) { - _.remove(this.itemSyncObservers, _.find(this.itemSyncObservers, { id: id })); + _.remove(this.itemSyncObservers, _.find(this.itemSyncObservers, { + id: id + })); } }, { key: "getDirtyItems", @@ -68702,27 +69405,26 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "clearDirtyItems", value: function clearDirtyItems(items) { - var _iteratorNormalCompletion23 = true; - var _didIteratorError23 = false; - var _iteratorError23 = undefined; + var _iteratorNormalCompletion21 = true; + var _didIteratorError21 = false; + var _iteratorError21 = undefined; try { - for (var _iterator23 = items[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { - var item = _step23.value; - + for (var _iterator21 = items[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { + var item = _step21.value; item.setDirty(false); } } catch (err) { - _didIteratorError23 = true; - _iteratorError23 = err; + _didIteratorError21 = true; + _iteratorError21 = err; } finally { try { - if (!_iteratorNormalCompletion23 && _iterator23.return) { - _iterator23.return(); + if (!_iteratorNormalCompletion21 && _iterator21["return"] != null) { + _iterator21["return"](); } } finally { - if (_didIteratorError23) { - throw _iteratorError23; + if (_didIteratorError21) { + throw _iteratorError21; } } } @@ -68733,17 +69435,18 @@ var SFModelManager = exports.SFModelManager = function () { // Handle direct relationships // An item with errorDecrypting will not have valid content field if (!item.errorDecrypting) { - var _iteratorNormalCompletion24 = true; - var _didIteratorError24 = false; - var _iteratorError24 = undefined; + var _iteratorNormalCompletion22 = true; + var _didIteratorError22 = false; + var _iteratorError22 = undefined; try { - for (var _iterator24 = item.content.references[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { - var reference = _step24.value; - + for (var _iterator22 = item.content.references[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { + var reference = _step22.value; var relationship = this.findItem(reference.uuid); + if (relationship) { item.removeItemAsRelationship(relationship); + if (relationship.hasRelationshipWithItem(item)) { relationship.removeItemAsRelationship(item); this.setItemDirty(relationship, true); @@ -68751,51 +69454,49 @@ var SFModelManager = exports.SFModelManager = function () { } } } catch (err) { - _didIteratorError24 = true; - _iteratorError24 = err; + _didIteratorError22 = true; + _iteratorError22 = err; } finally { try { - if (!_iteratorNormalCompletion24 && _iterator24.return) { - _iterator24.return(); + if (!_iteratorNormalCompletion22 && _iterator22["return"] != null) { + _iterator22["return"](); } } finally { - if (_didIteratorError24) { - throw _iteratorError24; + if (_didIteratorError22) { + throw _iteratorError22; } } } - } + } // Handle indirect relationships - // Handle indirect relationships - var _iteratorNormalCompletion25 = true; - var _didIteratorError25 = false; - var _iteratorError25 = undefined; + + var _iteratorNormalCompletion23 = true; + var _didIteratorError23 = false; + var _iteratorError23 = undefined; try { - for (var _iterator25 = item.referencingObjects[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { - var object = _step25.value; - + for (var _iterator23 = item.referencingObjects[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { + var object = _step23.value; object.removeItemAsRelationship(item); this.setItemDirty(object, true); } } catch (err) { - _didIteratorError25 = true; - _iteratorError25 = err; + _didIteratorError23 = true; + _iteratorError23 = err; } finally { try { - if (!_iteratorNormalCompletion25 && _iterator25.return) { - _iterator25.return(); + if (!_iteratorNormalCompletion23 && _iterator23["return"] != null) { + _iterator23["return"](); } } finally { - if (_didIteratorError25) { - throw _iteratorError25; + if (_didIteratorError23) { + throw _iteratorError23; } } } item.referencingObjects = []; } - /* Used when changing encryption key */ }, { @@ -68818,15 +69519,18 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "removeItemLocally", value: function () { - var _ref51 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee42(item) { + var _removeItemLocally = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee42(item) { return regeneratorRuntime.wrap(function _callee42$(_context43) { while (1) { switch (_context43.prev = _context43.next) { case 0: - _.remove(this.items, { uuid: item.uuid }); + _.remove(this.items, { + uuid: item.uuid + }); delete this.itemsHash[item.uuid]; - item.isBeingRemovedLocally(); case 3: @@ -68837,13 +69541,12 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee42, this); })); - function removeItemLocally(_x89) { - return _ref51.apply(this, arguments); + function removeItemLocally(_x83) { + return _removeItemLocally.apply(this, arguments); } return removeItemLocally; }() - /* Searching */ }, { @@ -68876,32 +69579,31 @@ var SFModelManager = exports.SFModelManager = function () { key: "findItems", value: function findItems(ids) { var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var results = []; - var _iteratorNormalCompletion26 = true; - var _didIteratorError26 = false; - var _iteratorError26 = undefined; + var _iteratorNormalCompletion24 = true; + var _didIteratorError24 = false; + var _iteratorError24 = undefined; try { - for (var _iterator26 = ids[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) { - var id = _step26.value; - + for (var _iterator24 = ids[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { + var id = _step24.value; var item = this.itemsHash[id]; + if (item || includeBlanks) { results.push(item); } } } catch (err) { - _didIteratorError26 = true; - _iteratorError26 = err; + _didIteratorError24 = true; + _iteratorError24 = err; } finally { try { - if (!_iteratorNormalCompletion26 && _iterator26.return) { - _iterator26.return(); + if (!_iteratorNormalCompletion24 && _iterator24["return"] != null) { + _iterator24["return"](); } } finally { - if (_didIteratorError26) { - throw _iteratorError26; + if (_didIteratorError24) { + throw _iteratorError24; } } } @@ -68922,39 +69624,37 @@ var SFModelManager = exports.SFModelManager = function () { key: "filterItemsWithPredicates", value: function filterItemsWithPredicates(items, predicates) { var results = items.filter(function (item) { - var _iteratorNormalCompletion27 = true; - var _didIteratorError27 = false; - var _iteratorError27 = undefined; + var _iteratorNormalCompletion25 = true; + var _didIteratorError25 = false; + var _iteratorError25 = undefined; try { - for (var _iterator27 = predicates[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) { - var predicate = _step27.value; + for (var _iterator25 = predicates[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { + var predicate = _step25.value; if (!item.satisfiesPredicate(predicate)) { return false; } } } catch (err) { - _didIteratorError27 = true; - _iteratorError27 = err; + _didIteratorError25 = true; + _iteratorError25 = err; } finally { try { - if (!_iteratorNormalCompletion27 && _iterator27.return) { - _iterator27.return(); + if (!_iteratorNormalCompletion25 && _iterator25["return"] != null) { + _iterator25["return"](); } } finally { - if (_didIteratorError27) { - throw _iteratorError27; + if (_didIteratorError25) { + throw _iteratorError25; } } } return true; }); - return results; } - /* Archives */ @@ -68962,32 +69662,33 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "importItems", value: function () { - var _ref52 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee43(externalItems) { - var itemsToBeMapped, localValues, _iteratorNormalCompletion28, _didIteratorError28, _iteratorError28, _iterator28, _step28, itemData, localItem, frozenValue, _iteratorNormalCompletion29, _didIteratorError29, _iteratorError29, _iterator29, _step29, _itemData, _localValues$_itemDat, itemRef, duplicate, items, _iteratorNormalCompletion30, _didIteratorError30, _iteratorError30, _iterator30, _step30, item; + var _importItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee43(externalItems) { + var itemsToBeMapped, localValues, _iteratorNormalCompletion26, _didIteratorError26, _iteratorError26, _iterator26, _step26, itemData, localItem, frozenValue, _iteratorNormalCompletion27, _didIteratorError27, _iteratorError27, _iterator27, _step27, _itemData, _localValues$_itemDat, _frozenValue, itemRef, duplicate, items, _iteratorNormalCompletion28, _didIteratorError28, _iteratorError28, _iterator28, _step28, item; return regeneratorRuntime.wrap(function _callee43$(_context44) { while (1) { switch (_context44.prev = _context44.next) { case 0: - itemsToBeMapped = []; - // Get local values before doing any processing. This way, if a note change below modifies a tag, + itemsToBeMapped = []; // Get local values before doing any processing. This way, if a note change below modifies a tag, // and the tag is going to be iterated on in the same loop, then we don't want this change to be compared // to the local value. localValues = {}; - _iteratorNormalCompletion28 = true; - _didIteratorError28 = false; - _iteratorError28 = undefined; + _iteratorNormalCompletion26 = true; + _didIteratorError26 = false; + _iteratorError26 = undefined; _context44.prev = 5; - _iterator28 = externalItems[Symbol.iterator](); + _iterator26 = externalItems[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done) { + if (_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done) { _context44.next = 18; break; } - itemData = _step28.value; + itemData = _step26.value; localItem = this.findItem(itemData.uuid); if (localItem) { @@ -69000,11 +69701,13 @@ var SFModelManager = exports.SFModelManager = function () { case 13: frozenValue = this.duplicateItemWithoutAdding(localItem); - - localValues[itemData.uuid] = { frozenValue: frozenValue, itemRef: localItem }; + localValues[itemData.uuid] = { + frozenValue: frozenValue, + itemRef: localItem + }; case 15: - _iteratorNormalCompletion28 = true; + _iteratorNormalCompletion26 = true; _context44.next = 7; break; @@ -69015,26 +69718,26 @@ var SFModelManager = exports.SFModelManager = function () { case 20: _context44.prev = 20; _context44.t0 = _context44["catch"](5); - _didIteratorError28 = true; - _iteratorError28 = _context44.t0; + _didIteratorError26 = true; + _iteratorError26 = _context44.t0; case 24: _context44.prev = 24; _context44.prev = 25; - if (!_iteratorNormalCompletion28 && _iterator28.return) { - _iterator28.return(); + if (!_iteratorNormalCompletion26 && _iterator26["return"] != null) { + _iterator26["return"](); } case 27: _context44.prev = 27; - if (!_didIteratorError28) { + if (!_didIteratorError26) { _context44.next = 30; break; } - throw _iteratorError28; + throw _iteratorError26; case 30: return _context44.finish(27); @@ -69043,22 +69746,22 @@ var SFModelManager = exports.SFModelManager = function () { return _context44.finish(24); case 32: - _iteratorNormalCompletion29 = true; - _didIteratorError29 = false; - _iteratorError29 = undefined; + _iteratorNormalCompletion27 = true; + _didIteratorError27 = false; + _iteratorError27 = undefined; _context44.prev = 35; - _iterator29 = externalItems[Symbol.iterator](); + _iterator27 = externalItems[Symbol.iterator](); case 37: - if (_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done) { + if (_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done) { _context44.next = 52; break; } - _itemData = _step29.value; - _localValues$_itemDat = localValues[_itemData.uuid], frozenValue = _localValues$_itemDat.frozenValue, itemRef = _localValues$_itemDat.itemRef; + _itemData = _step27.value; + _localValues$_itemDat = localValues[_itemData.uuid], _frozenValue = _localValues$_itemDat.frozenValue, itemRef = _localValues$_itemDat.itemRef; - if (!(frozenValue && !itemRef.errorDecrypting)) { + if (!(_frozenValue && !itemRef.errorDecrypting)) { _context44.next = 47; break; } @@ -69069,23 +69772,28 @@ var SFModelManager = exports.SFModelManager = function () { case 43: duplicate = _context44.sent; - if (!_itemData.deleted && !frozenValue.isItemContentEqualWith(duplicate)) { + if (!_itemData.deleted && !_frozenValue.isItemContentEqualWith(duplicate)) { // Data differs - this.addDuplicatedItemAsConflict({ duplicate: duplicate, duplicateOf: itemRef }); + this.addDuplicatedItemAsConflict({ + duplicate: duplicate, + duplicateOf: itemRef + }); itemsToBeMapped.push(duplicate); } + _context44.next = 49; break; case 47: // it doesn't exist, push it into items to be mapped itemsToBeMapped.push(_itemData); + if (itemRef && itemRef.errorDecrypting) { itemRef.errorDecrypting = false; } case 49: - _iteratorNormalCompletion29 = true; + _iteratorNormalCompletion27 = true; _context44.next = 37; break; @@ -69096,26 +69804,26 @@ var SFModelManager = exports.SFModelManager = function () { case 54: _context44.prev = 54; _context44.t1 = _context44["catch"](35); - _didIteratorError29 = true; - _iteratorError29 = _context44.t1; + _didIteratorError27 = true; + _iteratorError27 = _context44.t1; case 58: _context44.prev = 58; _context44.prev = 59; - if (!_iteratorNormalCompletion29 && _iterator29.return) { - _iterator29.return(); + if (!_iteratorNormalCompletion27 && _iterator27["return"] != null) { + _iterator27["return"](); } case 61: _context44.prev = 61; - if (!_didIteratorError29) { + if (!_didIteratorError27) { _context44.next = 64; break; } - throw _iteratorError29; + throw _iteratorError27; case 64: return _context44.finish(61); @@ -69129,14 +69837,13 @@ var SFModelManager = exports.SFModelManager = function () { case 68: items = _context44.sent; - _iteratorNormalCompletion30 = true; - _didIteratorError30 = false; - _iteratorError30 = undefined; + _iteratorNormalCompletion28 = true; + _didIteratorError28 = false; + _iteratorError28 = undefined; _context44.prev = 72; - for (_iterator30 = items[Symbol.iterator](); !(_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done); _iteratorNormalCompletion30 = true) { - item = _step30.value; - + for (_iterator28 = items[Symbol.iterator](); !(_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done); _iteratorNormalCompletion28 = true) { + item = _step28.value; this.setItemDirty(item, true, false); item.deleted = false; } @@ -69147,26 +69854,26 @@ var SFModelManager = exports.SFModelManager = function () { case 76: _context44.prev = 76; _context44.t2 = _context44["catch"](72); - _didIteratorError30 = true; - _iteratorError30 = _context44.t2; + _didIteratorError28 = true; + _iteratorError28 = _context44.t2; case 80: _context44.prev = 80; _context44.prev = 81; - if (!_iteratorNormalCompletion30 && _iterator30.return) { - _iterator30.return(); + if (!_iteratorNormalCompletion28 && _iterator28["return"] != null) { + _iterator28["return"](); } case 83: _context44.prev = 83; - if (!_didIteratorError30) { + if (!_didIteratorError28) { _context44.next = 86; break; } - throw _iteratorError30; + throw _iteratorError28; case 86: return _context44.finish(83); @@ -69185,8 +69892,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee43, this, [[5, 20, 24, 32], [25,, 27, 31], [35, 54, 58, 66], [59,, 61, 65], [72, 76, 80, 88], [81,, 83, 87]]); })); - function importItems(_x91) { - return _ref52.apply(this, arguments); + function importItems(_x84) { + return _importItems.apply(this, arguments); } return importItems; @@ -69194,7 +69901,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "getAllItemsJSONData", value: function () { - var _ref53 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee44(keys, authParams, returnNullIfEmpty) { + var _getAllItemsJSONData = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee44(keys, authParams, returnNullIfEmpty) { return regeneratorRuntime.wrap(function _callee44$(_context45) { while (1) { switch (_context45.prev = _context45.next) { @@ -69209,8 +69918,8 @@ var SFModelManager = exports.SFModelManager = function () { }, _callee44, this); })); - function getAllItemsJSONData(_x92, _x93, _x94) { - return _ref53.apply(this, arguments); + function getAllItemsJSONData(_x85, _x86, _x87) { + return _getAllItemsJSONData.apply(this, arguments); } return getAllItemsJSONData; @@ -69218,7 +69927,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "getJSONDataForItems", value: function () { - var _ref54 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee45(items, keys, authParams, returnNullIfEmpty) { + var _getJSONDataForItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee45(items, keys, authParams, returnNullIfEmpty) { return regeneratorRuntime.wrap(function _callee45$(_context46) { while (1) { switch (_context46.prev = _context46.next) { @@ -69231,14 +69942,18 @@ var SFModelManager = exports.SFModelManager = function () { return null; } - var data = { items: items }; + var data = { + items: items + }; if (keys) { // auth params are only needed when encrypted with a standard file key data["auth_params"] = authParams; } - return JSON.stringify(data, null, 2 /* pretty print */); + return JSON.stringify(data, null, 2 + /* pretty print */ + ); })); case 1: @@ -69246,11 +69961,11 @@ var SFModelManager = exports.SFModelManager = function () { return _context46.stop(); } } - }, _callee45, this); + }, _callee45); })); - function getJSONDataForItems(_x95, _x96, _x97, _x98) { - return _ref54.apply(this, arguments); + function getJSONDataForItems(_x88, _x89, _x90, _x91) { + return _getJSONDataForItems.apply(this, arguments); } return getJSONDataForItems; @@ -69258,7 +69973,9 @@ var SFModelManager = exports.SFModelManager = function () { }, { key: "computeDataIntegrityHash", value: function () { - var _ref55 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee46() { + var _computeDataIntegrityHash = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee46() { var items, dates, string, hash; return regeneratorRuntime.wrap(function _callee46$(_context47) { while (1) { @@ -69282,7 +69999,6 @@ var SFModelManager = exports.SFModelManager = function () { case 10: _context47.prev = 10; _context47.t0 = _context47["catch"](0); - console.error("Error computing data integrity hash", _context47.t0); return _context47.abrupt("return", null); @@ -69295,7 +70011,7 @@ var SFModelManager = exports.SFModelManager = function () { })); function computeDataIntegrityHash() { - return _ref55.apply(this, arguments); + return _computeDataIntegrityHash.apply(this, arguments); } return computeDataIntegrityHash; @@ -69317,42 +70033,37 @@ var SFModelManager = exports.SFModelManager = function () { return SFModelManager; }(); +exports.SFModelManager = SFModelManager; ; -var SFPrivilegesManager = exports.SFPrivilegesManager = function () { + +var SFPrivilegesManager = +/*#__PURE__*/ +function () { function SFPrivilegesManager(modelManager, syncManager, singletonManager) { _classCallCheck(this, SFPrivilegesManager); this.modelManager = modelManager; this.syncManager = syncManager; this.singletonManager = singletonManager; - this.loadPrivileges(); - SFPrivilegesManager.CredentialAccountPassword = "CredentialAccountPassword"; SFPrivilegesManager.CredentialLocalPasscode = "CredentialLocalPasscode"; - SFPrivilegesManager.ActionManageExtensions = "ActionManageExtensions"; SFPrivilegesManager.ActionManageBackups = "ActionManageBackups"; SFPrivilegesManager.ActionViewProtectedNotes = "ActionViewProtectedNotes"; SFPrivilegesManager.ActionManagePrivileges = "ActionManagePrivileges"; SFPrivilegesManager.ActionManagePasscode = "ActionManagePasscode"; SFPrivilegesManager.ActionDeleteNote = "ActionDeleteNote"; - SFPrivilegesManager.SessionExpiresAtKey = "SessionExpiresAtKey"; SFPrivilegesManager.SessionLengthKey = "SessionLengthKey"; - SFPrivilegesManager.SessionLengthNone = 0; SFPrivilegesManager.SessionLengthFiveMinutes = 300; SFPrivilegesManager.SessionLengthOneHour = 3600; SFPrivilegesManager.SessionLengthOneWeek = 604800; - this.availableActions = [SFPrivilegesManager.ActionViewProtectedNotes, SFPrivilegesManager.ActionDeleteNote, SFPrivilegesManager.ActionManagePasscode, SFPrivilegesManager.ActionManageBackups, SFPrivilegesManager.ActionManageExtensions, SFPrivilegesManager.ActionManagePrivileges]; - this.availableCredentials = [SFPrivilegesManager.CredentialAccountPassword, SFPrivilegesManager.CredentialLocalPasscode]; - this.sessionLengths = [SFPrivilegesManager.SessionLengthNone, SFPrivilegesManager.SessionLengthFiveMinutes, SFPrivilegesManager.SessionLengthOneHour, SFPrivilegesManager.SessionLengthOneWeek, SFPrivilegesManager.SessionLengthIndefinite]; } - /* async delegate.isOffline() async delegate.hasLocalPasscode() @@ -69381,8 +70092,10 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "netCredentialsForAction", value: function () { - var _ref56 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee47(action) { - var credentials, netCredentials, _iteratorNormalCompletion31, _didIteratorError31, _iteratorError31, _iterator31, _step31, cred, isOffline, hasLocalPasscode; + var _netCredentialsForAction = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee47(action) { + var credentials, netCredentials, _iteratorNormalCompletion29, _didIteratorError29, _iteratorError29, _iterator29, _step29, cred, isOffline, hasLocalPasscode; return regeneratorRuntime.wrap(function _callee47$(_context48) { while (1) { @@ -69395,19 +70108,19 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { _context48.t0 = action; credentials = _context48.sent.getCredentialsForAction(_context48.t0); netCredentials = []; - _iteratorNormalCompletion31 = true; - _didIteratorError31 = false; - _iteratorError31 = undefined; + _iteratorNormalCompletion29 = true; + _didIteratorError29 = false; + _iteratorError29 = undefined; _context48.prev = 8; - _iterator31 = credentials[Symbol.iterator](); + _iterator29 = credentials[Symbol.iterator](); case 10: - if (_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done) { + if (_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done) { _context48.next = 27; break; } - cred = _step31.value; + cred = _step29.value; if (!(cred == SFPrivilegesManager.CredentialAccountPassword)) { _context48.next = 19; @@ -69423,6 +70136,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { if (!isOffline) { netCredentials.push(cred); } + _context48.next = 24; break; @@ -69443,7 +70157,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { } case 24: - _iteratorNormalCompletion31 = true; + _iteratorNormalCompletion29 = true; _context48.next = 10; break; @@ -69454,26 +70168,26 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 29: _context48.prev = 29; _context48.t1 = _context48["catch"](8); - _didIteratorError31 = true; - _iteratorError31 = _context48.t1; + _didIteratorError29 = true; + _iteratorError29 = _context48.t1; case 33: _context48.prev = 33; _context48.prev = 34; - if (!_iteratorNormalCompletion31 && _iterator31.return) { - _iterator31.return(); + if (!_iteratorNormalCompletion29 && _iterator29["return"] != null) { + _iterator29["return"](); } case 36: _context48.prev = 36; - if (!_didIteratorError31) { + if (!_didIteratorError29) { _context48.next = 39; break; } - throw _iteratorError31; + throw _iteratorError29; case 39: return _context48.finish(36); @@ -69492,8 +70206,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee47, this, [[8, 29, 33, 41], [34,, 36, 40]]); })); - function netCredentialsForAction(_x99) { - return _ref56.apply(this, arguments); + function netCredentialsForAction(_x92) { + return _netCredentialsForAction.apply(this, arguments); } return netCredentialsForAction; @@ -69501,7 +70215,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "loadPrivileges", value: function () { - var _ref57 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee49() { + var _loadPrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee49() { var _this12 = this; return regeneratorRuntime.wrap(function _callee49$(_context50) { @@ -69516,22 +70232,28 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context50.abrupt("return", this.loadPromise); case 2: - this.loadPromise = new Promise(function (resolve, reject) { var privsContentType = SFPrivileges.contentType(); var contentTypePredicate = new SFPredicate("content_type", "=", privsContentType); + _this12.singletonManager.registerSingleton([contentTypePredicate], function (resolvedSingleton) { _this12.privileges = resolvedSingleton; resolve(resolvedSingleton); - }, function () { - var _ref58 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee48(valueCallback) { + }, + /*#__PURE__*/ + function () { + var _ref14 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee48(valueCallback) { var privs; return regeneratorRuntime.wrap(function _callee48$(_context49) { while (1) { switch (_context49.prev = _context49.next) { case 0: // Safe to create. Create and return object. - privs = new SFPrivileges({ content_type: privsContentType }); + privs = new SFPrivileges({ + content_type: privsContentType + }); if (SFJS.crypto.generateUUIDSync) { _context49.next = 4; @@ -69543,8 +70265,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 4: _this12.modelManager.addItem(privs); + _this12.modelManager.setItemDirty(privs, true); + _this12.syncManager.sync(); + valueCallback(privs); resolve(privs); @@ -69553,15 +70278,14 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context49.stop(); } } - }, _callee48, _this12); + }, _callee48); })); - return function (_x100) { - return _ref58.apply(this, arguments); + return function (_x93) { + return _ref14.apply(this, arguments); }; }()); }); - return _context50.abrupt("return", this.loadPromise); case 4: @@ -69573,7 +70297,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function loadPrivileges() { - return _ref57.apply(this, arguments); + return _loadPrivileges.apply(this, arguments); } return loadPrivileges; @@ -69581,7 +70305,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getPrivileges", value: function () { - var _ref59 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee50() { + var _getPrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee50() { return regeneratorRuntime.wrap(function _callee50$(_context51) { while (1) { switch (_context51.prev = _context51.next) { @@ -69605,7 +70331,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getPrivileges() { - return _ref59.apply(this, arguments); + return _getPrivileges.apply(this, arguments); } return getPrivileges; @@ -69614,48 +70340,38 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { key: "displayInfoForCredential", value: function displayInfoForCredential(credential) { var metadata = {}; - metadata[SFPrivilegesManager.CredentialAccountPassword] = { label: "Account Password", prompt: "Please enter your account password." }; - metadata[SFPrivilegesManager.CredentialLocalPasscode] = { label: "Local Passcode", prompt: "Please enter your local passcode." }; - return metadata[credential]; } }, { key: "displayInfoForAction", value: function displayInfoForAction(action) { var metadata = {}; - metadata[SFPrivilegesManager.ActionManageExtensions] = { label: "Manage Extensions" }; - metadata[SFPrivilegesManager.ActionManageBackups] = { label: "Download/Import Backups" }; - metadata[SFPrivilegesManager.ActionViewProtectedNotes] = { label: "View Protected Notes" }; - metadata[SFPrivilegesManager.ActionManagePrivileges] = { label: "Manage Privileges" }; - metadata[SFPrivilegesManager.ActionManagePasscode] = { label: "Manage Passcode" }; - metadata[SFPrivilegesManager.ActionDeleteNote] = { label: "Delete Notes" }; - return metadata[action]; } }, { @@ -69678,7 +70394,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "setSessionLength", value: function () { - var _ref60 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee51(length) { + var _setSessionLength = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee51(length) { var addToNow, expiresAt; return regeneratorRuntime.wrap(function _callee51$(_context52) { while (1) { @@ -69701,8 +70419,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee51, this); })); - function setSessionLength(_x101) { - return _ref60.apply(this, arguments); + function setSessionLength(_x94) { + return _setSessionLength.apply(this, arguments); } return setSessionLength; @@ -69710,7 +70428,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "clearSession", value: function () { - var _ref61 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee52() { + var _clearSession = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee52() { return regeneratorRuntime.wrap(function _callee52$(_context53) { while (1) { switch (_context53.prev = _context53.next) { @@ -69726,7 +70446,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function clearSession() { - return _ref61.apply(this, arguments); + return _clearSession.apply(this, arguments); } return clearSession; @@ -69734,7 +70454,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getSelectedSessionLength", value: function () { - var _ref62 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee53() { + var _getSelectedSessionLength = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee53() { var length; return regeneratorRuntime.wrap(function _callee53$(_context54) { while (1) { @@ -69765,7 +70487,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getSelectedSessionLength() { - return _ref62.apply(this, arguments); + return _getSelectedSessionLength.apply(this, arguments); } return getSelectedSessionLength; @@ -69773,7 +70495,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "getSessionExpirey", value: function () { - var _ref63 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee54() { + var _getSessionExpirey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee54() { var expiresAt; return regeneratorRuntime.wrap(function _callee54$(_context55) { while (1) { @@ -69804,7 +70528,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function getSessionExpirey() { - return _ref63.apply(this, arguments); + return _getSessionExpirey.apply(this, arguments); } return getSessionExpirey; @@ -69812,7 +70536,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "actionHasPrivilegesConfigured", value: function () { - var _ref64 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee55(action) { + var _actionHasPrivilegesConfigured = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee55(action) { return regeneratorRuntime.wrap(function _callee55$(_context56) { while (1) { switch (_context56.prev = _context56.next) { @@ -69832,8 +70558,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee55, this); })); - function actionHasPrivilegesConfigured(_x102) { - return _ref64.apply(this, arguments); + function actionHasPrivilegesConfigured(_x95) { + return _actionHasPrivilegesConfigured.apply(this, arguments); } return actionHasPrivilegesConfigured; @@ -69841,7 +70567,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "actionRequiresPrivilege", value: function () { - var _ref65 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee56(action) { + var _actionRequiresPrivilege = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee56(action) { var expiresAt, netCredentials; return regeneratorRuntime.wrap(function _callee56$(_context57) { while (1) { @@ -69876,8 +70604,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee56, this); })); - function actionRequiresPrivilege(_x103) { - return _ref65.apply(this, arguments); + function actionRequiresPrivilege(_x96) { + return _actionRequiresPrivilege.apply(this, arguments); } return actionRequiresPrivilege; @@ -69885,7 +70613,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "savePrivileges", value: function () { - var _ref66 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee57() { + var _savePrivileges = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee57() { var privs; return regeneratorRuntime.wrap(function _callee57$(_context58) { while (1) { @@ -69896,7 +70626,6 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 2: privs = _context58.sent; - this.modelManager.setItemDirty(privs, true); this.syncManager.sync(); @@ -69909,7 +70638,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { })); function savePrivileges() { - return _ref66.apply(this, arguments); + return _savePrivileges.apply(this, arguments); } return savePrivileges; @@ -69917,8 +70646,10 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "authenticateAction", value: function () { - var _ref67 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee58(action, credentialAuthMapping) { - var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion32, _didIteratorError32, _iteratorError32, _iterator32, _step32, requiredCredential, passesAuth; + var _authenticateAction = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee58(action, credentialAuthMapping) { + var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion30, _didIteratorError30, _iteratorError30, _iterator30, _step30, requiredCredential, passesAuth; return regeneratorRuntime.wrap(function _callee58$(_context59) { while (1) { @@ -69930,19 +70661,19 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 2: requiredCredentials = _context59.sent; successfulCredentials = [], failedCredentials = []; - _iteratorNormalCompletion32 = true; - _didIteratorError32 = false; - _iteratorError32 = undefined; + _iteratorNormalCompletion30 = true; + _didIteratorError30 = false; + _iteratorError30 = undefined; _context59.prev = 7; - _iterator32 = requiredCredentials[Symbol.iterator](); + _iterator30 = requiredCredentials[Symbol.iterator](); case 9: - if (_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done) { + if (_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done) { _context59.next = 18; break; } - requiredCredential = _step32.value; + requiredCredential = _step30.value; _context59.next = 13; return this._verifyAuthenticationParameters(requiredCredential, credentialAuthMapping[requiredCredential]); @@ -69956,7 +70687,7 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { } case 15: - _iteratorNormalCompletion32 = true; + _iteratorNormalCompletion30 = true; _context59.next = 9; break; @@ -69967,26 +70698,26 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { case 20: _context59.prev = 20; _context59.t0 = _context59["catch"](7); - _didIteratorError32 = true; - _iteratorError32 = _context59.t0; + _didIteratorError30 = true; + _iteratorError30 = _context59.t0; case 24: _context59.prev = 24; _context59.prev = 25; - if (!_iteratorNormalCompletion32 && _iterator32.return) { - _iterator32.return(); + if (!_iteratorNormalCompletion30 && _iterator30["return"] != null) { + _iterator30["return"](); } case 27: _context59.prev = 27; - if (!_didIteratorError32) { + if (!_didIteratorError30) { _context59.next = 30; break; } - throw _iteratorError32; + throw _iteratorError30; case 30: return _context59.finish(27); @@ -70009,8 +70740,8 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, _callee58, this, [[7, 20, 24, 32], [25,, 27, 31]]); })); - function authenticateAction(_x104, _x105) { - return _ref67.apply(this, arguments); + function authenticateAction(_x97, _x98) { + return _authenticateAction.apply(this, arguments); } return authenticateAction; @@ -70018,7 +70749,9 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { }, { key: "_verifyAuthenticationParameters", value: function () { - var _ref68 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee61(credential, value) { + var _verifyAuthenticationParameters2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee61(credential, value) { var _this13 = this; var verifyAccountPassword, verifyLocalPasscode; @@ -70026,8 +70759,12 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { while (1) { switch (_context62.prev = _context62.next) { case 0: - verifyAccountPassword = function () { - var _ref69 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee59(password) { + verifyAccountPassword = + /*#__PURE__*/ + function () { + var _ref15 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee59(password) { return regeneratorRuntime.wrap(function _callee59$(_context60) { while (1) { switch (_context60.prev = _context60.next) { @@ -70039,16 +70776,20 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context60.stop(); } } - }, _callee59, _this13); + }, _callee59); })); - return function verifyAccountPassword(_x108) { - return _ref69.apply(this, arguments); + return function verifyAccountPassword(_x101) { + return _ref15.apply(this, arguments); }; }(); - verifyLocalPasscode = function () { - var _ref70 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee60(passcode) { + verifyLocalPasscode = + /*#__PURE__*/ + function () { + var _ref16 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee60(passcode) { return regeneratorRuntime.wrap(function _callee60$(_context61) { while (1) { switch (_context61.prev = _context61.next) { @@ -70060,11 +70801,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context61.stop(); } } - }, _callee60, _this13); + }, _callee60); })); - return function verifyLocalPasscode(_x109) { - return _ref70.apply(this, arguments); + return function verifyLocalPasscode(_x102) { + return _ref16.apply(this, arguments); }; }(); @@ -70088,11 +70829,11 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return _context62.stop(); } } - }, _callee61, this); + }, _callee61); })); - function _verifyAuthenticationParameters(_x106, _x107) { - return _ref68.apply(this, arguments); + function _verifyAuthenticationParameters(_x99, _x100) { + return _verifyAuthenticationParameters2.apply(this, arguments); } return _verifyAuthenticationParameters; @@ -70102,11 +70843,15 @@ var SFPrivilegesManager = exports.SFPrivilegesManager = function () { return SFPrivilegesManager; }(); -;var SessionHistoryPersistKey = "sessionHistory_persist"; +exports.SFPrivilegesManager = SFPrivilegesManager; +; +var SessionHistoryPersistKey = "sessionHistory_persist"; var SessionHistoryRevisionsKey = "sessionHistory_revisions"; var SessionHistoryAutoOptimizeKey = "sessionHistory_autoOptimize"; -var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { +var SFSessionHistoryManager = +/*#__PURE__*/ +function () { function SFSessionHistoryManager(modelManager, storageManager, keyRequestHandler, contentTypes, timeout) { var _this14 = this; @@ -70114,23 +70859,22 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { this.modelManager = modelManager; this.storageManager = storageManager; - this.$timeout = timeout || setTimeout.bind(window); + this.$timeout = timeout || setTimeout.bind(window); // Required to persist the encrypted form of SFHistorySession - // Required to persist the encrypted form of SFHistorySession this.keyRequestHandler = keyRequestHandler; - this.loadFromDisk().then(function () { _this14.modelManager.addItemSyncObserver("session-history", contentTypes, function (allItems, validItems, deletedItems, source, sourceKey) { if (source === SFModelManager.MappingSourceLocalDirtied) { return; } - var _iteratorNormalCompletion33 = true; - var _didIteratorError33 = false; - var _iteratorError33 = undefined; + + var _iteratorNormalCompletion31 = true; + var _didIteratorError31 = false; + var _iteratorError31 = undefined; try { - for (var _iterator33 = allItems[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { - var item = _step33.value; + for (var _iterator31 = allItems[Symbol.iterator](), _step31; !(_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done); _iteratorNormalCompletion31 = true) { + var item = _step31.value; try { _this14.addHistoryEntryForItem(item); @@ -70139,16 +70883,16 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { } } } catch (err) { - _didIteratorError33 = true; - _iteratorError33 = err; + _didIteratorError31 = true; + _iteratorError31 = err; } finally { try { - if (!_iteratorNormalCompletion33 && _iterator33.return) { - _iterator33.return(); + if (!_iteratorNormalCompletion31 && _iterator31["return"] != null) { + _iterator31["return"](); } } finally { - if (_didIteratorError33) { - throw _iteratorError33; + if (_didIteratorError31) { + throw _iteratorError31; } } } @@ -70159,7 +70903,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { _createClass(SFSessionHistoryManager, [{ key: "encryptionParams", value: function () { - var _ref71 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee62() { + var _encryptionParams = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee62() { return regeneratorRuntime.wrap(function _callee62$(_context63) { while (1) { switch (_context63.prev = _context63.next) { @@ -70175,7 +70921,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function encryptionParams() { - return _ref71.apply(this, arguments); + return _encryptionParams.apply(this, arguments); } return encryptionParams; @@ -70191,7 +70937,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { updated_at: item.updated_at, content: item.getContentCopy() }; - var entry = this.historySession.addEntryForItem(persistableItemParams); if (this.autoOptimize) { @@ -70206,7 +70951,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { } else { clearTimeout(this.diskTimeout); } - }; + } + + ; this.diskTimeout = this.$timeout(function () { _this15.saveToDisk(); }, 2000); @@ -70220,7 +70967,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "clearHistoryForItem", value: function () { - var _ref72 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee63(item) { + var _clearHistoryForItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee63(item) { return regeneratorRuntime.wrap(function _callee63$(_context64) { while (1) { switch (_context64.prev = _context64.next) { @@ -70236,8 +70985,8 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, _callee63, this); })); - function clearHistoryForItem(_x110) { - return _ref72.apply(this, arguments); + function clearHistoryForItem(_x103) { + return _clearHistoryForItem.apply(this, arguments); } return clearHistoryForItem; @@ -70245,7 +70994,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "clearAllHistory", value: function () { - var _ref73 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee64() { + var _clearAllHistory = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee64() { return regeneratorRuntime.wrap(function _callee64$(_context65) { while (1) { switch (_context65.prev = _context65.next) { @@ -70262,7 +71013,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function clearAllHistory() { - return _ref73.apply(this, arguments); + return _clearAllHistory.apply(this, arguments); } return clearAllHistory; @@ -70270,7 +71021,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "toggleDiskSaving", value: function () { - var _ref74 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee65() { + var _toggleDiskSaving = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee65() { return regeneratorRuntime.wrap(function _callee65$(_context66) { while (1) { switch (_context66.prev = _context66.next) { @@ -70300,7 +71053,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function toggleDiskSaving() { - return _ref74.apply(this, arguments); + return _toggleDiskSaving.apply(this, arguments); } return toggleDiskSaving; @@ -70308,7 +71061,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "saveToDisk", value: function () { - var _ref75 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee66() { + var _saveToDisk = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee66() { var _this16 = this; var encryptionParams, itemParams; @@ -70330,7 +71085,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { case 4: encryptionParams = _context67.sent; itemParams = new SFItemParams(this.historySession, encryptionParams.keys, encryptionParams.auth_params); - itemParams.paramsForSync().then(function (syncParams) { // console.log("Saving to disk", syncParams); _this16.storageManager.setItem(SessionHistoryRevisionsKey, JSON.stringify(syncParams)); @@ -70345,7 +71099,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function saveToDisk() { - return _ref75.apply(this, arguments); + return _saveToDisk.apply(this, arguments); } return saveToDisk; @@ -70353,7 +71107,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "loadFromDisk", value: function () { - var _ref76 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee67() { + var _loadFromDisk = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee67() { var diskValue, historyValue, encryptionParams, historySession, autoOptimizeValue; return regeneratorRuntime.wrap(function _callee67$(_context68) { while (1) { @@ -70391,7 +71147,6 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { case 14: historySession = new SFHistorySession(historyValue); - this.historySession = historySession; _context68.next = 19; break; @@ -70422,7 +71177,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function loadFromDisk() { - return _ref76.apply(this, arguments); + return _loadFromDisk.apply(this, arguments); } return loadFromDisk; @@ -70430,7 +71185,9 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { }, { key: "toggleAutoOptimize", value: function () { - var _ref77 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee68() { + var _toggleAutoOptimize = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee68() { return regeneratorRuntime.wrap(function _callee68$(_context69) { while (1) { switch (_context69.prev = _context69.next) { @@ -70452,7 +71209,7 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { })); function toggleAutoOptimize() { - return _ref77.apply(this, arguments); + return _toggleAutoOptimize.apply(this, arguments); } return toggleAutoOptimize; @@ -70462,22 +71219,26 @@ var SFSessionHistoryManager = exports.SFSessionHistoryManager = function () { return SFSessionHistoryManager; }(); -; /* - The SingletonManager allows controllers to register an item as a singleton, which means only one instance of that model - should exist, both on the server and on the client. When the SingletonManager detects multiple items matching the singleton predicate, - the oldest ones will be deleted, leaving the newest ones. (See 4/28/18 update. We now choose the earliest created one as the winner.). - (This no longer fully applies, See 4/28/18 update.) We will treat the model most recently arrived from the server as the most recent one. The reason for this is, - if you're offline, a singleton can be created, as in the case of UserPreferneces. Then when you sign in, you'll retrieve your actual user preferences. - In that case, even though the offline singleton has a more recent updated_at, the server retreived value is the one we care more about. - 4/28/18: I'm seeing this issue: if you have the app open in one window, then in another window sign in, and during sign in, - click Refresh (or autorefresh occurs) in the original signed in window, then you will happen to receive from the server the newly created - Extensions singleton, and it will be mistaken (it just looks like a regular retrieved item, since nothing is in saved) for a fresh, latest copy, and replace the current instance. - This has happened to me and many users. - A puzzling issue, but what if instead of resolving singletons by choosing the one most recently modified, we choose the one with the earliest create date? - This way, we don't care when it was modified, but we always, always choose the item that was created first. This way, we always deal with the same item. - */ +exports.SFSessionHistoryManager = SFSessionHistoryManager; +; +/* + The SingletonManager allows controllers to register an item as a singleton, which means only one instance of that model + should exist, both on the server and on the client. When the SingletonManager detects multiple items matching the singleton predicate, + the oldest ones will be deleted, leaving the newest ones. (See 4/28/18 update. We now choose the earliest created one as the winner.). + (This no longer fully applies, See 4/28/18 update.) We will treat the model most recently arrived from the server as the most recent one. The reason for this is, + if you're offline, a singleton can be created, as in the case of UserPreferneces. Then when you sign in, you'll retrieve your actual user preferences. + In that case, even though the offline singleton has a more recent updated_at, the server retreived value is the one we care more about. + 4/28/18: I'm seeing this issue: if you have the app open in one window, then in another window sign in, and during sign in, + click Refresh (or autorefresh occurs) in the original signed in window, then you will happen to receive from the server the newly created + Extensions singleton, and it will be mistaken (it just looks like a regular retrieved item, since nothing is in saved) for a fresh, latest copy, and replace the current instance. + This has happened to me and many users. + A puzzling issue, but what if instead of resolving singletons by choosing the one most recently modified, we choose the one with the earliest create date? + This way, we don't care when it was modified, but we always, always choose the item that was created first. This way, we always deal with the same item. +*/ -var SFSingletonManager = exports.SFSingletonManager = function () { +var SFSingletonManager = +/*#__PURE__*/ +function () { function SFSingletonManager(modelManager, syncManager) { var _this17 = this; @@ -70485,13 +71246,12 @@ var SFSingletonManager = exports.SFSingletonManager = function () { this.syncManager = syncManager; this.modelManager = modelManager; - this.singletonHandlers = []; - - // We use sync observer instead of syncEvent `local-data-incremental-load`, because we want singletons + this.singletonHandlers = []; // We use sync observer instead of syncEvent `local-data-incremental-load`, because we want singletons // to resolve with the first priority, because they generally dictate app state. // If we used local-data-incremental-load, and 1 item was important singleton and 99 were heavy components, // then given the random nature of notifiying observers, the heavy components would spend a lot of time loading first, // here, we priortize ours loading as most important + modelManager.addItemSyncObserverWithPriority({ id: "sf-singleton-manager", types: "*", @@ -70501,63 +71261,64 @@ var SFSingletonManager = exports.SFSingletonManager = function () { if (source === SFModelManager.MappingSourceLocalDirtied) { return; } + _this17.resolveSingletons(modelManager.allNondummyItems, null, true); } }); - syncManager.addEventHandler(function (syncEvent, data) { if (syncEvent == "local-data-loaded") { _this17.resolveSingletons(modelManager.allNondummyItems, null, true); + _this17.initialDataLoaded = true; } else if (syncEvent == "sync:completed") { // Wait for initial data load before handling any sync. If we don't want for initial data load, // then the singleton resolver won't have the proper items to work with to determine whether to resolve or create. if (!_this17.initialDataLoaded) { return; - } - // The reason we also need to consider savedItems in consolidating singletons is in case of sync conflicts, + } // The reason we also need to consider savedItems in consolidating singletons is in case of sync conflicts, // a new item can be created, but is never processed through "retrievedItems" since it is only created locally then saved. - // HOWEVER, by considering savedItems, we are now ruining everything, especially during sign in. A singleton can be created // offline, and upon sign in, will sync all items to the server, and by combining retrievedItems & savedItems, and only choosing // the latest, you are now resolving to the most recent one, which is in the savedItems list and not retrieved items, defeating // the whole purpose of this thing. - // Updated solution: resolveSingletons will now evaluate both of these arrays separately. + + _this17.resolveSingletons(data.retrievedItems, data.savedItems); } }); - /* If an item alternates its uuid on registration, singletonHandlers might need to update their local reference to the object, since the object reference will change on uuid alternation */ + modelManager.addModelUuidChangeObserver("singleton-manager", function (oldModel, newModel) { - var _iteratorNormalCompletion34 = true; - var _didIteratorError34 = false; - var _iteratorError34 = undefined; + var _iteratorNormalCompletion32 = true; + var _didIteratorError32 = false; + var _iteratorError32 = undefined; try { - for (var _iterator34 = _this17.singletonHandlers[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { - var handler = _step34.value; + for (var _iterator32 = _this17.singletonHandlers[Symbol.iterator](), _step32; !(_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done); _iteratorNormalCompletion32 = true) { + var handler = _step32.value; if (handler.singleton && SFPredicate.ItemSatisfiesPredicates(newModel, handler.predicates)) { // Reference is now invalid, calling resolveSingleton should update it handler.singleton = null; + _this17.resolveSingletons([newModel]); } } } catch (err) { - _didIteratorError34 = true; - _iteratorError34 = err; + _didIteratorError32 = true; + _iteratorError32 = err; } finally { try { - if (!_iteratorNormalCompletion34 && _iterator34.return) { - _iterator34.return(); + if (!_iteratorNormalCompletion32 && _iterator32["return"] != null) { + _iterator32["return"](); } } finally { - if (_didIteratorError34) { - throw _iteratorError34; + if (_didIteratorError32) { + throw _iteratorError32; } } } @@ -70585,135 +71346,133 @@ var SFSingletonManager = exports.SFSingletonManager = function () { retrievedItems = retrievedItems || []; savedItems = savedItems || []; + var _iteratorNormalCompletion33 = true; + var _didIteratorError33 = false; + var _iteratorError33 = undefined; - var _loop3 = function _loop3(singletonHandler) { - var predicates = singletonHandler.predicates.slice(); - var retrievedSingletonItems = _this18.modelManager.filterItemsWithPredicates(retrievedItems, predicates); + try { + var _loop3 = function _loop3() { + var singletonHandler = _step33.value; + var predicates = singletonHandler.predicates.slice(); - var handleCreation = function handleCreation() { - if (singletonHandler.createBlock) { - singletonHandler.pendingCreateBlockCallback = true; - singletonHandler.createBlock(function (created) { - singletonHandler.singleton = created; - singletonHandler.pendingCreateBlockCallback = false; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(created); - }); + var retrievedSingletonItems = _this18.modelManager.filterItemsWithPredicates(retrievedItems, predicates); + + var handleCreation = function handleCreation() { + if (singletonHandler.createBlock) { + singletonHandler.pendingCreateBlockCallback = true; + singletonHandler.createBlock(function (created) { + singletonHandler.singleton = created; + singletonHandler.pendingCreateBlockCallback = false; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(created); + }); + } + }; // We only want to consider saved items count to see if it's more than 0, and do nothing else with it. + // This way we know there was some action and things need to be resolved. The saved items will come up + // in filterItemsWithPredicate(this.modelManager.allNondummyItems) and be deleted anyway + + + var savedSingletonItemsCount = _this18.modelManager.filterItemsWithPredicates(savedItems, predicates).length; + + if (retrievedSingletonItems.length > 0 || savedSingletonItemsCount > 0) { + /* + Check local inventory and make sure only 1 similar item exists. If more than 1, delete newest + Note that this local inventory will also contain whatever is in retrievedItems. + */ + var allExtantItemsMatchingPredicate = _this18.modelManager.itemsMatchingPredicates(predicates); + /* + Delete all but the earliest created + */ + + + if (allExtantItemsMatchingPredicate.length >= 2) { + var sorted = allExtantItemsMatchingPredicate.sort(function (a, b) { + /* + If compareFunction(a, b) is less than 0, sort a to an index lower than b, i.e. a comes first. + If compareFunction(a, b) is greater than 0, sort b to an index lower than a, i.e. b comes first. + */ + if (a.errorDecrypting) { + return 1; + } + + if (b.errorDecrypting) { + return -1; + } + + return a.created_at < b.created_at ? -1 : 1; + }); // The item that will be chosen to be kept + + var winningItem = sorted[0]; // Items that will be deleted + // Delete everything but the first one + + var toDelete = sorted.slice(1, sorted.length); + var _iteratorNormalCompletion34 = true; + var _didIteratorError34 = false; + var _iteratorError34 = undefined; + + try { + for (var _iterator34 = toDelete[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { + var d = _step34.value; + + _this18.modelManager.setItemToBeDeleted(d); + } + } catch (err) { + _didIteratorError34 = true; + _iteratorError34 = err; + } finally { + try { + if (!_iteratorNormalCompletion34 && _iterator34["return"] != null) { + _iterator34["return"](); + } + } finally { + if (_didIteratorError34) { + throw _iteratorError34; + } + } + } + + _this18.syncManager.sync(); // Send remaining item to callback + + + singletonHandler.singleton = winningItem; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(winningItem); + } else if (allExtantItemsMatchingPredicate.length == 1) { + var singleton = allExtantItemsMatchingPredicate[0]; + + if (singleton.errorDecrypting) { + // Delete the current singleton and create a new one + _this18.modelManager.setItemToBeDeleted(singleton); + + handleCreation(); + } else if (!singletonHandler.singleton || singletonHandler.singleton !== singleton) { + // Not yet notified interested parties of object + singletonHandler.singleton = singleton; + singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(singleton); + } + } + } else { + // Retrieved items does not include any items of interest. If we don't have a singleton registered to this handler, + // we need to create one. Only do this on actual sync completetions and not on initial data load. Because we want + // to get the latest from the server before making the decision to create a new item + if (!singletonHandler.singleton && !initialLoad && !singletonHandler.pendingCreateBlockCallback) { + handleCreation(); + } } }; - // We only want to consider saved items count to see if it's more than 0, and do nothing else with it. - // This way we know there was some action and things need to be resolved. The saved items will come up - // in filterItemsWithPredicate(this.modelManager.allNondummyItems) and be deleted anyway - var savedSingletonItemsCount = _this18.modelManager.filterItemsWithPredicates(savedItems, predicates).length; - - if (retrievedSingletonItems.length > 0 || savedSingletonItemsCount > 0) { - /* - Check local inventory and make sure only 1 similar item exists. If more than 1, delete newest - Note that this local inventory will also contain whatever is in retrievedItems. - */ - var allExtantItemsMatchingPredicate = _this18.modelManager.itemsMatchingPredicates(predicates); - - /* - Delete all but the earliest created - */ - if (allExtantItemsMatchingPredicate.length >= 2) { - var sorted = allExtantItemsMatchingPredicate.sort(function (a, b) { - /* - If compareFunction(a, b) is less than 0, sort a to an index lower than b, i.e. a comes first. - If compareFunction(a, b) is greater than 0, sort b to an index lower than a, i.e. b comes first. - */ - - if (a.errorDecrypting) { - return 1; - } - - if (b.errorDecrypting) { - return -1; - } - - return a.created_at < b.created_at ? -1 : 1; - }); - - // The item that will be chosen to be kept - var winningItem = sorted[0]; - - // Items that will be deleted - // Delete everything but the first one - var toDelete = sorted.slice(1, sorted.length); - - var _iteratorNormalCompletion36 = true; - var _didIteratorError36 = false; - var _iteratorError36 = undefined; - - try { - for (var _iterator36 = toDelete[Symbol.iterator](), _step36; !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { - var d = _step36.value; - - _this18.modelManager.setItemToBeDeleted(d); - } - } catch (err) { - _didIteratorError36 = true; - _iteratorError36 = err; - } finally { - try { - if (!_iteratorNormalCompletion36 && _iterator36.return) { - _iterator36.return(); - } - } finally { - if (_didIteratorError36) { - throw _iteratorError36; - } - } - } - - _this18.syncManager.sync(); - - // Send remaining item to callback - singletonHandler.singleton = winningItem; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(winningItem); - } else if (allExtantItemsMatchingPredicate.length == 1) { - var singleton = allExtantItemsMatchingPredicate[0]; - if (singleton.errorDecrypting) { - // Delete the current singleton and create a new one - _this18.modelManager.setItemToBeDeleted(singleton); - handleCreation(); - } else if (!singletonHandler.singleton || singletonHandler.singleton !== singleton) { - // Not yet notified interested parties of object - singletonHandler.singleton = singleton; - singletonHandler.resolutionCallback && singletonHandler.resolutionCallback(singleton); - } - } - } else { - // Retrieved items does not include any items of interest. If we don't have a singleton registered to this handler, - // we need to create one. Only do this on actual sync completetions and not on initial data load. Because we want - // to get the latest from the server before making the decision to create a new item - if (!singletonHandler.singleton && !initialLoad && !singletonHandler.pendingCreateBlockCallback) { - handleCreation(); - } - } - }; - - var _iteratorNormalCompletion35 = true; - var _didIteratorError35 = false; - var _iteratorError35 = undefined; - - try { - for (var _iterator35 = this.singletonHandlers[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { - var singletonHandler = _step35.value; - - _loop3(singletonHandler); + for (var _iterator33 = this.singletonHandlers[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { + _loop3(); } } catch (err) { - _didIteratorError35 = true; - _iteratorError35 = err; + _didIteratorError33 = true; + _iteratorError33 = err; } finally { try { - if (!_iteratorNormalCompletion35 && _iterator35.return) { - _iterator35.return(); + if (!_iteratorNormalCompletion33 && _iterator33["return"] != null) { + _iterator33["return"](); } } finally { - if (_didIteratorError35) { - throw _iteratorError35; + if (_didIteratorError33) { + throw _iteratorError33; } } } @@ -70723,9 +71482,12 @@ var SFSingletonManager = exports.SFSingletonManager = function () { return SFSingletonManager; }(); +exports.SFSingletonManager = SFSingletonManager; ; // SFStorageManager should be subclassed, and all the methods below overwritten. -var SFStorageManager = exports.SFStorageManager = function () { +var SFStorageManager = +/*#__PURE__*/ +function () { function SFStorageManager() { _classCallCheck(this, SFStorageManager); } @@ -70733,11 +71495,11 @@ var SFStorageManager = exports.SFStorageManager = function () { _createClass(SFStorageManager, [{ key: "setItem", - /* Simple Key/Value Storage */ - value: function () { - var _ref78 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee69(key, value) { + var _setItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee69(key, value) { return regeneratorRuntime.wrap(function _callee69$(_context70) { while (1) { switch (_context70.prev = _context70.next) { @@ -70746,11 +71508,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context70.stop(); } } - }, _callee69, this); + }, _callee69); })); - function setItem(_x111, _x112) { - return _ref78.apply(this, arguments); + function setItem(_x104, _x105) { + return _setItem.apply(this, arguments); } return setItem; @@ -70758,7 +71520,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "getItem", value: function () { - var _ref79 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee70(key) { + var _getItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee70(key) { return regeneratorRuntime.wrap(function _callee70$(_context71) { while (1) { switch (_context71.prev = _context71.next) { @@ -70767,11 +71531,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context71.stop(); } } - }, _callee70, this); + }, _callee70); })); - function getItem(_x113) { - return _ref79.apply(this, arguments); + function getItem(_x106) { + return _getItem.apply(this, arguments); } return getItem; @@ -70779,7 +71543,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "removeItem", value: function () { - var _ref80 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee71(key) { + var _removeItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee71(key) { return regeneratorRuntime.wrap(function _callee71$(_context72) { while (1) { switch (_context72.prev = _context72.next) { @@ -70788,11 +71554,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context72.stop(); } } - }, _callee71, this); + }, _callee71); })); - function removeItem(_x114) { - return _ref80.apply(this, arguments); + function removeItem(_x107) { + return _removeItem.apply(this, arguments); } return removeItem; @@ -70800,7 +71566,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clear", value: function () { - var _ref81 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee72() { + var _clear = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee72() { return regeneratorRuntime.wrap(function _callee72$(_context73) { while (1) { switch (_context73.prev = _context73.next) { @@ -70809,11 +71577,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context73.stop(); } } - }, _callee72, this); + }, _callee72); })); function clear() { - return _ref81.apply(this, arguments); + return _clear.apply(this, arguments); } return clear; @@ -70821,13 +71589,13 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "getAllModels", - /* Model Storage */ - value: function () { - var _ref82 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee73() { + var _getAllModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee73() { return regeneratorRuntime.wrap(function _callee73$(_context74) { while (1) { switch (_context74.prev = _context74.next) { @@ -70836,11 +71604,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context74.stop(); } } - }, _callee73, this); + }, _callee73); })); function getAllModels() { - return _ref82.apply(this, arguments); + return _getAllModels.apply(this, arguments); } return getAllModels; @@ -70848,7 +71616,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "saveModel", value: function () { - var _ref83 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee74(item) { + var _saveModel = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee74(item) { return regeneratorRuntime.wrap(function _callee74$(_context75) { while (1) { switch (_context75.prev = _context75.next) { @@ -70863,8 +71633,8 @@ var SFStorageManager = exports.SFStorageManager = function () { }, _callee74, this); })); - function saveModel(_x115) { - return _ref83.apply(this, arguments); + function saveModel(_x108) { + return _saveModel.apply(this, arguments); } return saveModel; @@ -70872,7 +71642,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "saveModels", value: function () { - var _ref84 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee75(items) { + var _saveModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee75(items) { return regeneratorRuntime.wrap(function _callee75$(_context76) { while (1) { switch (_context76.prev = _context76.next) { @@ -70881,11 +71653,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context76.stop(); } } - }, _callee75, this); + }, _callee75); })); - function saveModels(_x116) { - return _ref84.apply(this, arguments); + function saveModels(_x109) { + return _saveModels.apply(this, arguments); } return saveModels; @@ -70893,7 +71665,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "deleteModel", value: function () { - var _ref85 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee76(item) { + var _deleteModel = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee76(item) { return regeneratorRuntime.wrap(function _callee76$(_context77) { while (1) { switch (_context77.prev = _context77.next) { @@ -70902,11 +71676,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context77.stop(); } } - }, _callee76, this); + }, _callee76); })); - function deleteModel(_x117) { - return _ref85.apply(this, arguments); + function deleteModel(_x110) { + return _deleteModel.apply(this, arguments); } return deleteModel; @@ -70914,7 +71688,9 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clearAllModels", value: function () { - var _ref86 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee77() { + var _clearAllModels = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee77() { return regeneratorRuntime.wrap(function _callee77$(_context78) { while (1) { switch (_context78.prev = _context78.next) { @@ -70923,11 +71699,11 @@ var SFStorageManager = exports.SFStorageManager = function () { return _context78.stop(); } } - }, _callee77, this); + }, _callee77); })); function clearAllModels() { - return _ref86.apply(this, arguments); + return _clearAllModels.apply(this, arguments); } return clearAllModels; @@ -70935,11 +71711,11 @@ var SFStorageManager = exports.SFStorageManager = function () { }, { key: "clearAllData", - /* General */ - value: function () { - var _ref87 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee78() { + var _clearAllData = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee78() { return regeneratorRuntime.wrap(function _callee78$(_context79) { while (1) { switch (_context79.prev = _context79.next) { @@ -70955,7 +71731,7 @@ var SFStorageManager = exports.SFStorageManager = function () { })); function clearAllData() { - return _ref87.apply(this, arguments); + return _clearAllData.apply(this, arguments); } return clearAllData; @@ -70965,41 +71741,37 @@ var SFStorageManager = exports.SFStorageManager = function () { return SFStorageManager; }(); +exports.SFStorageManager = SFStorageManager; ; -var SFSyncManager = exports.SFSyncManager = function () { + +var SFSyncManager = +/*#__PURE__*/ +function () { function SFSyncManager(modelManager, storageManager, httpManager, timeout, interval) { _classCallCheck(this, SFSyncManager); SFSyncManager.KeyRequestLoadLocal = "KeyRequestLoadLocal"; SFSyncManager.KeyRequestSaveLocal = "KeyRequestSaveLocal"; SFSyncManager.KeyRequestLoadSaveAccount = "KeyRequestLoadSaveAccount"; - this.httpManager = httpManager; this.modelManager = modelManager; - this.storageManager = storageManager; + this.storageManager = storageManager; // Allows you to set your own interval/timeout function (i.e if you're using angular and want to use $timeout) - // Allows you to set your own interval/timeout function (i.e if you're using angular and want to use $timeout) this.$interval = interval || setInterval.bind(window); this.$timeout = timeout || setTimeout.bind(window); - this.syncStatus = {}; this.syncStatusObservers = []; - this.eventHandlers = []; - - // this.loggingEnabled = true; + this.eventHandlers = []; // this.loggingEnabled = true; this.PerSyncItemUploadLimit = 150; - this.ServerItemDownloadLimit = 150; - - // The number of changed items that constitute a major change + this.ServerItemDownloadLimit = 150; // The number of changed items that constitute a major change // This is used by the desktop app to create backups - this.MajorDataChangeThreshold = 15; - // Sync integrity checking + this.MajorDataChangeThreshold = 15; // Sync integrity checking // If X consective sync requests return mismatching hashes, then we officially enter out-of-sync. - this.MaxDiscordanceBeforeOutOfSync = 5; - // How many consective sync results have had mismatching hashes. This value can never exceed this.MaxDiscordanceBeforeOutOfSync. + this.MaxDiscordanceBeforeOutOfSync = 5; // How many consective sync results have had mismatching hashes. This value can never exceed this.MaxDiscordanceBeforeOutOfSync. + this.syncDiscordance = 0; this.outOfSync = false; } @@ -71007,7 +71779,9 @@ var SFSyncManager = exports.SFSyncManager = function () { _createClass(SFSyncManager, [{ key: "handleServerIntegrityHash", value: function () { - var _ref88 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee79(serverHash) { + var _handleServerIntegrityHash = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee79(serverHash) { var localHash; return regeneratorRuntime.wrap(function _callee79$(_context80) { while (1) { @@ -71041,12 +71815,14 @@ var SFSyncManager = exports.SFSyncManager = function () { } this.syncDiscordance++; + if (this.syncDiscordance >= this.MaxDiscordanceBeforeOutOfSync) { if (!this.outOfSync) { this.outOfSync = true; this.notifyEvent("enter-out-of-sync"); } } + return _context80.abrupt("return", false); case 13: @@ -71055,6 +71831,7 @@ var SFSyncManager = exports.SFSyncManager = function () { this.outOfSync = false; this.notifyEvent("exit-out-of-sync"); } + this.syncDiscordance = 0; return _context80.abrupt("return", true); @@ -71066,8 +71843,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee79, this); })); - function handleServerIntegrityHash(_x118) { - return _ref88.apply(this, arguments); + function handleServerIntegrityHash(_x111) { + return _handleServerIntegrityHash.apply(this, arguments); } return handleServerIntegrityHash; @@ -71082,7 +71859,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getServerURL", value: function () { - var _ref89 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee80() { + var _getServerURL = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee80() { return regeneratorRuntime.wrap(function _callee80$(_context81) { while (1) { switch (_context81.prev = _context81.next) { @@ -71112,7 +71891,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getServerURL() { - return _ref89.apply(this, arguments); + return _getServerURL.apply(this, arguments); } return getServerURL; @@ -71120,7 +71899,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getSyncURL", value: function () { - var _ref90 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee81() { + var _getSyncURL = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee81() { return regeneratorRuntime.wrap(function _callee81$(_context82) { while (1) { switch (_context82.prev = _context82.next) { @@ -71141,7 +71922,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getSyncURL() { - return _ref90.apply(this, arguments); + return _getSyncURL.apply(this, arguments); } return getSyncURL; @@ -71149,7 +71930,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "registerSyncStatusObserver", value: function registerSyncStatusObserver(callback) { - var observer = { key: new Date(), callback: callback }; + var observer = { + key: new Date(), + callback: callback + }; this.syncStatusObservers.push(observer); return observer; } @@ -71192,27 +71976,26 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "notifyEvent", value: function notifyEvent(syncEvent, data) { - var _iteratorNormalCompletion37 = true; - var _didIteratorError37 = false; - var _iteratorError37 = undefined; + var _iteratorNormalCompletion35 = true; + var _didIteratorError35 = false; + var _iteratorError35 = undefined; try { - for (var _iterator37 = this.eventHandlers[Symbol.iterator](), _step37; !(_iteratorNormalCompletion37 = (_step37 = _iterator37.next()).done); _iteratorNormalCompletion37 = true) { - var handler = _step37.value; - + for (var _iterator35 = this.eventHandlers[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { + var handler = _step35.value; handler(syncEvent, data || {}); } } catch (err) { - _didIteratorError37 = true; - _iteratorError37 = err; + _didIteratorError35 = true; + _iteratorError35 = err; } finally { try { - if (!_iteratorNormalCompletion37 && _iterator37.return) { - _iterator37.return(); + if (!_iteratorNormalCompletion35 && _iterator35["return"] != null) { + _iterator35["return"](); } } finally { - if (_didIteratorError37) { - throw _iteratorError37; + if (_didIteratorError35) { + throw _iteratorError35; } } } @@ -71225,7 +72008,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getActiveKeyInfo", value: function () { - var _ref91 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee82(request) { + var _getActiveKeyInfo = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee82(request) { return regeneratorRuntime.wrap(function _callee82$(_context83) { while (1) { switch (_context83.prev = _context83.next) { @@ -71240,8 +72025,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee82, this); })); - function getActiveKeyInfo(_x119) { - return _ref91.apply(this, arguments); + function getActiveKeyInfo(_x112) { + return _getActiveKeyInfo.apply(this, arguments); } return getActiveKeyInfo; @@ -71258,17 +72043,19 @@ var SFSyncManager = exports.SFSyncManager = function () { return items.sort(function (a, b) { var dateResult = new Date(b.updated_at) - new Date(a.updated_at); - var priorityList = _this20.contentTypeLoadPriority; var aPriority = 0, bPriority = 0; + if (priorityList) { aPriority = priorityList.indexOf(a.content_type); bPriority = priorityList.indexOf(b.content_type); + if (aPriority == -1) { // Not found in list, not prioritized. Set it to max value aPriority = priorityList.length; } + if (bPriority == -1) { // Not found in list, not prioritized. Set it to max value bPriority = priorityList.length; @@ -71283,72 +72070,79 @@ var SFSyncManager = exports.SFSyncManager = function () { return -1; } else { return 1; - } + } // aPriority < bPriority means a should come first + - // aPriority < bPriority means a should come first return aPriority < bPriority ? -1 : 1; }); } }, { key: "loadLocalItems", value: function () { - var _ref92 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee84() { + var _loadLocalItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee84() { var _this21 = this; - var _ref93 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - incrementalCallback = _ref93.incrementalCallback, - batchSize = _ref93.batchSize, - options = _ref93.options; + var _ref17, + incrementalCallback, + batchSize, + options, + latency, + _args85 = arguments; - var latency; return regeneratorRuntime.wrap(function _callee84$(_context85) { while (1) { switch (_context85.prev = _context85.next) { case 0: + _ref17 = _args85.length > 0 && _args85[0] !== undefined ? _args85[0] : {}, incrementalCallback = _ref17.incrementalCallback, batchSize = _ref17.batchSize, options = _ref17.options; + if (!(options && options.simulateHighLatency)) { - _context85.next = 4; + _context85.next = 5; break; } latency = options.simulatedLatency || 1000; - _context85.next = 4; + _context85.next = 5; return this._awaitSleep(latency); - case 4: + case 5: if (!this.loadLocalDataPromise) { - _context85.next = 6; + _context85.next = 7; break; } return _context85.abrupt("return", this.loadLocalDataPromise); - case 6: - + case 7: if (!batchSize) { batchSize = 100; } this.loadLocalDataPromise = this.storageManager.getAllModels().then(function (items) { // put most recently updated at beginning, sorted by priority - items = _this21._sortLocalItems(items); + items = _this21._sortLocalItems(items); // Filter out any items that exist in the local model mapping and have a lower dirtied date than the local dirtiedDate. - // Filter out any items that exist in the local model mapping and have a lower dirtied date than the local dirtiedDate. items = items.filter(function (nonDecryptedItem) { var localItem = _this21.modelManager.findItem(nonDecryptedItem.uuid); + if (!localItem) { return true; } return new Date(nonDecryptedItem.dirtiedDate) > localItem.dirtiedDate; - }); + }); // break it up into chunks to make interface more responsive for large item counts - // break it up into chunks to make interface more responsive for large item counts var total = items.length; var current = 0; var processed = []; - var decryptNext = function () { - var _ref94 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee83() { + var decryptNext = + /*#__PURE__*/ + function () { + var _ref18 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee83() { var subitems, processedSubitems; return regeneratorRuntime.wrap(function _callee83$(_context84) { while (1) { @@ -71360,9 +72154,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 3: processedSubitems = _context84.sent; - processed.push(processedSubitems); - current += subitems.length; if (!(current < total)) { @@ -71373,6 +72165,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context84.abrupt("return", new Promise(function (innerResolve, innerReject) { _this21.$timeout(function () { _this21.notifyEvent("local-data-incremental-load"); + incrementalCallback && incrementalCallback(current, total); decryptNext().then(innerResolve); }); @@ -71381,6 +72174,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 10: // Completed _this21._initialDataLoaded = true; + _this21.notifyEvent("local-data-loaded"); case 12: @@ -71388,20 +72182,19 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context84.stop(); } } - }, _callee83, _this21); + }, _callee83); })); return function decryptNext() { - return _ref94.apply(this, arguments); + return _ref18.apply(this, arguments); }; }(); return decryptNext(); }); - return _context85.abrupt("return", this.loadLocalDataPromise); - case 9: + case 10: case "end": return _context85.stop(); } @@ -71410,7 +72203,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function loadLocalItems() { - return _ref92.apply(this, arguments); + return _loadLocalItems.apply(this, arguments); } return loadLocalItems; @@ -71418,7 +72211,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "writeItemsToLocalStorage", value: function () { - var _ref95 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee88(items, offlineOnly) { + var _writeItemsToLocalStorage = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee88(items, offlineOnly) { var _this22 = this; return regeneratorRuntime.wrap(function _callee88$(_context89) { @@ -71433,22 +72228,26 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context89.abrupt("return"); case 2: - return _context89.abrupt("return", new Promise(function () { - var _ref96 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee87(resolve, reject) { - var nonDeletedItems, deletedItems, _iteratorNormalCompletion38, _didIteratorError38, _iteratorError38, _iterator38, _step38, item, info, params; + return _context89.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref19 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee87(resolve, reject) { + var nonDeletedItems, deletedItems, _iteratorNormalCompletion36, _didIteratorError36, _iteratorError36, _iterator36, _step36, item, info, params; return regeneratorRuntime.wrap(function _callee87$(_context88) { while (1) { switch (_context88.prev = _context88.next) { case 0: nonDeletedItems = [], deletedItems = []; - _iteratorNormalCompletion38 = true; - _didIteratorError38 = false; - _iteratorError38 = undefined; + _iteratorNormalCompletion36 = true; + _didIteratorError36 = false; + _iteratorError36 = undefined; _context88.prev = 4; - for (_iterator38 = items[Symbol.iterator](); !(_iteratorNormalCompletion38 = (_step38 = _iterator38.next()).done); _iteratorNormalCompletion38 = true) { - item = _step38.value; + for (_iterator36 = items[Symbol.iterator](); !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { + item = _step36.value; // if the item is deleted and dirty it means we still need to sync it. if (item.deleted === true && !item.dirty) { @@ -71464,26 +72263,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 8: _context88.prev = 8; _context88.t0 = _context88["catch"](4); - _didIteratorError38 = true; - _iteratorError38 = _context88.t0; + _didIteratorError36 = true; + _iteratorError36 = _context88.t0; case 12: _context88.prev = 12; _context88.prev = 13; - if (!_iteratorNormalCompletion38 && _iterator38.return) { - _iterator38.return(); + if (!_iteratorNormalCompletion36 && _iterator36["return"] != null) { + _iterator36["return"](); } case 15: _context88.prev = 15; - if (!_didIteratorError38) { + if (!_didIteratorError36) { _context88.next = 18; break; } - throw _iteratorError38; + throw _iteratorError36; case 18: return _context88.finish(15); @@ -71498,8 +72297,12 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context88.next = 23; - return Promise.all(deletedItems.map(function () { - var _ref97 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee85(deletedItem) { + return Promise.all(deletedItems.map( + /*#__PURE__*/ + function () { + var _ref20 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee85(deletedItem) { return regeneratorRuntime.wrap(function _callee85$(_context86) { while (1) { switch (_context86.prev = _context86.next) { @@ -71511,11 +72314,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context86.stop(); } } - }, _callee85, _this22); + }, _callee85); })); - return function (_x125) { - return _ref97.apply(this, arguments); + return function (_x117) { + return _ref20.apply(this, arguments); }; }())); @@ -71532,8 +72335,12 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context88.next = 29; - return Promise.all(nonDeletedItems.map(function () { - var _ref98 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee86(item) { + return Promise.all(nonDeletedItems.map( + /*#__PURE__*/ + function () { + var _ref21 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee86(item) { var itemParams; return regeneratorRuntime.wrap(function _callee86$(_context87) { while (1) { @@ -71549,6 +72356,7 @@ var SFSyncManager = exports.SFSyncManager = function () { if (offlineOnly) { delete itemParams.dirty; } + return _context87.abrupt("return", itemParams); case 6: @@ -71556,31 +72364,33 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context87.stop(); } } - }, _callee86, _this22); + }, _callee86); })); - return function (_x126) { - return _ref98.apply(this, arguments); + return function (_x118) { + return _ref21.apply(this, arguments); }; - }())).catch(function (e) { + }()))["catch"](function (e) { return reject(e); }); case 29: params = _context88.sent; _context88.next = 32; - return _this22.storageManager.saveModels(params).catch(function (error) { + return _this22.storageManager.saveModels(params)["catch"](function (error) { console.error("Error writing items", error); _this22.syncStatus.localError = error; + _this22.syncStatusDidChange(); + reject(); }); case 32: - // on success if (_this22.syncStatus.localError) { _this22.syncStatus.localError = null; + _this22.syncStatusDidChange(); } @@ -71592,11 +72402,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context88.stop(); } } - }, _callee87, _this22, [[4, 8, 12, 20], [13,, 15, 19]]); + }, _callee87, null, [[4, 8, 12, 20], [13,, 15, 19]]); })); - return function (_x123, _x124) { - return _ref96.apply(this, arguments); + return function (_x115, _x116) { + return _ref19.apply(this, arguments); }; }())); @@ -71605,11 +72415,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context89.stop(); } } - }, _callee88, this); + }, _callee88); })); - function writeItemsToLocalStorage(_x121, _x122) { - return _ref95.apply(this, arguments); + function writeItemsToLocalStorage(_x113, _x114) { + return _writeItemsToLocalStorage.apply(this, arguments); } return writeItemsToLocalStorage; @@ -71617,50 +72427,54 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "syncOffline", value: function () { - var _ref99 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee89(items) { + var _syncOffline = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee89(items) { var _this23 = this; - var _iteratorNormalCompletion39, _didIteratorError39, _iteratorError39, _iterator39, _step39, item; + var _iteratorNormalCompletion37, _didIteratorError37, _iteratorError37, _iterator37, _step37, item; return regeneratorRuntime.wrap(function _callee89$(_context90) { while (1) { switch (_context90.prev = _context90.next) { case 0: // Update all items updated_at to now - _iteratorNormalCompletion39 = true; - _didIteratorError39 = false; - _iteratorError39 = undefined; + _iteratorNormalCompletion37 = true; + _didIteratorError37 = false; + _iteratorError37 = undefined; _context90.prev = 3; - for (_iterator39 = items[Symbol.iterator](); !(_iteratorNormalCompletion39 = (_step39 = _iterator39.next()).done); _iteratorNormalCompletion39 = true) { - item = _step39.value; + + for (_iterator37 = items[Symbol.iterator](); !(_iteratorNormalCompletion37 = (_step37 = _iterator37.next()).done); _iteratorNormalCompletion37 = true) { + item = _step37.value; item.updated_at = new Date(); } + _context90.next = 11; break; case 7: _context90.prev = 7; _context90.t0 = _context90["catch"](3); - _didIteratorError39 = true; - _iteratorError39 = _context90.t0; + _didIteratorError37 = true; + _iteratorError37 = _context90.t0; case 11: _context90.prev = 11; _context90.prev = 12; - if (!_iteratorNormalCompletion39 && _iterator39.return) { - _iterator39.return(); + if (!_iteratorNormalCompletion37 && _iterator37["return"] != null) { + _iterator37["return"](); } case 14: _context90.prev = 14; - if (!_didIteratorError39) { + if (!_didIteratorError37) { _context90.next = 17; break; } - throw _iteratorError39; + throw _iteratorError37; case 17: return _context90.finish(14); @@ -71671,39 +72485,45 @@ var SFSyncManager = exports.SFSyncManager = function () { case 19: return _context90.abrupt("return", this.writeItemsToLocalStorage(items, true).then(function (responseItems) { // delete anything needing to be deleted - var _iteratorNormalCompletion40 = true; - var _didIteratorError40 = false; - var _iteratorError40 = undefined; + var _iteratorNormalCompletion38 = true; + var _didIteratorError38 = false; + var _iteratorError38 = undefined; try { - for (var _iterator40 = items[Symbol.iterator](), _step40; !(_iteratorNormalCompletion40 = (_step40 = _iterator40.next()).done); _iteratorNormalCompletion40 = true) { - var _item = _step40.value; + for (var _iterator38 = items[Symbol.iterator](), _step38; !(_iteratorNormalCompletion38 = (_step38 = _iterator38.next()).done); _iteratorNormalCompletion38 = true) { + var item = _step38.value; - if (_item.deleted) { - _this23.modelManager.removeItemLocally(_item); + if (item.deleted) { + _this23.modelManager.removeItemLocally(item); } } } catch (err) { - _didIteratorError40 = true; - _iteratorError40 = err; + _didIteratorError38 = true; + _iteratorError38 = err; } finally { try { - if (!_iteratorNormalCompletion40 && _iterator40.return) { - _iterator40.return(); + if (!_iteratorNormalCompletion38 && _iterator38["return"] != null) { + _iterator38["return"](); } } finally { - if (_didIteratorError40) { - throw _iteratorError40; + if (_didIteratorError38) { + throw _iteratorError38; } } } - _this23.modelManager.clearDirtyItems(items); - // Required in order for modelManager to notify sync observers + _this23.modelManager.clearDirtyItems(items); // Required in order for modelManager to notify sync observers + + _this23.modelManager.didSyncModelsOffline(items); - _this23.notifyEvent("sync:completed", { savedItems: items }); - return { saved_items: items }; + _this23.notifyEvent("sync:completed", { + savedItems: items + }); + + return { + saved_items: items + }; })); case 20: @@ -71714,13 +72534,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee89, this, [[3, 7, 11, 19], [12,, 14, 18]]); })); - function syncOffline(_x127) { - return _ref99.apply(this, arguments); + function syncOffline(_x119) { + return _syncOffline.apply(this, arguments); } return syncOffline; }() - /* In the case of signing in and merging local data, we alternative UUIDs to avoid overwriting data a user may retrieve that has the same UUID. @@ -71730,8 +72549,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "markAllItemsDirtyAndSaveOffline", value: function () { - var _ref100 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee90(alternateUUIDs) { - var originalItems, _iteratorNormalCompletion41, _didIteratorError41, _iteratorError41, _iterator41, _step41, item, allItems, _iteratorNormalCompletion42, _didIteratorError42, _iteratorError42, _iterator42, _step42, _item2; + var _markAllItemsDirtyAndSaveOffline = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee90(alternateUUIDs) { + var originalItems, _iteratorNormalCompletion39, _didIteratorError39, _iteratorError39, _iterator39, _step39, item, allItems, _iteratorNormalCompletion40, _didIteratorError40, _iteratorError40, _iterator40, _step40, _item; return regeneratorRuntime.wrap(function _callee90$(_context91) { while (1) { @@ -71746,24 +72567,24 @@ var SFSyncManager = exports.SFSyncManager = function () { originalItems = this.modelManager.allNondummyItems.filter(function (item) { return !item.errorDecrypting; }).slice(); - _iteratorNormalCompletion41 = true; - _didIteratorError41 = false; - _iteratorError41 = undefined; + _iteratorNormalCompletion39 = true; + _didIteratorError39 = false; + _iteratorError39 = undefined; _context91.prev = 5; - _iterator41 = originalItems[Symbol.iterator](); + _iterator39 = originalItems[Symbol.iterator](); case 7: - if (_iteratorNormalCompletion41 = (_step41 = _iterator41.next()).done) { + if (_iteratorNormalCompletion39 = (_step39 = _iterator39.next()).done) { _context91.next = 14; break; } - item = _step41.value; + item = _step39.value; _context91.next = 11; return this.modelManager.alternateUUIDForItem(item); case 11: - _iteratorNormalCompletion41 = true; + _iteratorNormalCompletion39 = true; _context91.next = 7; break; @@ -71774,26 +72595,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 16: _context91.prev = 16; _context91.t0 = _context91["catch"](5); - _didIteratorError41 = true; - _iteratorError41 = _context91.t0; + _didIteratorError39 = true; + _iteratorError39 = _context91.t0; case 20: _context91.prev = 20; _context91.prev = 21; - if (!_iteratorNormalCompletion41 && _iterator41.return) { - _iterator41.return(); + if (!_iteratorNormalCompletion39 && _iterator39["return"] != null) { + _iterator39["return"](); } case 23: _context91.prev = 23; - if (!_didIteratorError41) { + if (!_didIteratorError39) { _context91.next = 26; break; } - throw _iteratorError41; + throw _iteratorError39; case 26: return _context91.finish(23); @@ -71803,41 +72624,43 @@ var SFSyncManager = exports.SFSyncManager = function () { case 28: allItems = this.modelManager.allNondummyItems; - _iteratorNormalCompletion42 = true; - _didIteratorError42 = false; - _iteratorError42 = undefined; + _iteratorNormalCompletion40 = true; + _didIteratorError40 = false; + _iteratorError40 = undefined; _context91.prev = 32; - for (_iterator42 = allItems[Symbol.iterator](); !(_iteratorNormalCompletion42 = (_step42 = _iterator42.next()).done); _iteratorNormalCompletion42 = true) { - _item2 = _step42.value; - _item2.setDirty(true); + for (_iterator40 = allItems[Symbol.iterator](); !(_iteratorNormalCompletion40 = (_step40 = _iterator40.next()).done); _iteratorNormalCompletion40 = true) { + _item = _step40.value; + + _item.setDirty(true); } + _context91.next = 40; break; case 36: _context91.prev = 36; _context91.t1 = _context91["catch"](32); - _didIteratorError42 = true; - _iteratorError42 = _context91.t1; + _didIteratorError40 = true; + _iteratorError40 = _context91.t1; case 40: _context91.prev = 40; _context91.prev = 41; - if (!_iteratorNormalCompletion42 && _iterator42.return) { - _iterator42.return(); + if (!_iteratorNormalCompletion40 && _iterator40["return"] != null) { + _iterator40["return"](); } case 43: _context91.prev = 43; - if (!_didIteratorError42) { + if (!_didIteratorError40) { _context91.next = 46; break; } - throw _iteratorError42; + throw _iteratorError40; case 46: return _context91.finish(43); @@ -71856,8 +72679,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee90, this, [[5, 16, 20, 28], [21,, 23, 27], [32, 36, 40, 48], [41,, 43, 47]]); })); - function markAllItemsDirtyAndSaveOffline(_x128) { - return _ref100.apply(this, arguments); + function markAllItemsDirtyAndSaveOffline(_x120) { + return _markAllItemsDirtyAndSaveOffline.apply(this, arguments); } return markAllItemsDirtyAndSaveOffline; @@ -71865,7 +72688,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "setSyncToken", value: function () { - var _ref101 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee91(token) { + var _setSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee91(token) { return regeneratorRuntime.wrap(function _callee91$(_context92) { while (1) { switch (_context92.prev = _context92.next) { @@ -71882,8 +72707,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee91, this); })); - function setSyncToken(_x129) { - return _ref101.apply(this, arguments); + function setSyncToken(_x121) { + return _setSyncToken.apply(this, arguments); } return setSyncToken; @@ -71891,7 +72716,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getSyncToken", value: function () { - var _ref102 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee92() { + var _getSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee92() { return regeneratorRuntime.wrap(function _callee92$(_context93) { while (1) { switch (_context93.prev = _context93.next) { @@ -71919,7 +72746,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getSyncToken() { - return _ref102.apply(this, arguments); + return _getSyncToken.apply(this, arguments); } return getSyncToken; @@ -71927,7 +72754,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "setCursorToken", value: function () { - var _ref103 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee93(token) { + var _setCursorToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee93(token) { return regeneratorRuntime.wrap(function _callee93$(_context94) { while (1) { switch (_context94.prev = _context94.next) { @@ -71958,8 +72787,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee93, this); })); - function setCursorToken(_x130) { - return _ref103.apply(this, arguments); + function setCursorToken(_x122) { + return _setCursorToken.apply(this, arguments); } return setCursorToken; @@ -71967,7 +72796,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "getCursorToken", value: function () { - var _ref104 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee94() { + var _getCursorToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee94() { return regeneratorRuntime.wrap(function _callee94$(_context95) { while (1) { switch (_context95.prev = _context95.next) { @@ -71995,7 +72826,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function getCursorToken() { - return _ref104.apply(this, arguments); + return _getCursorToken.apply(this, arguments); } return getCursorToken; @@ -72009,28 +72840,28 @@ var SFSyncManager = exports.SFSyncManager = function () { key: "callQueuedCallbacks", value: function callQueuedCallbacks(response) { var allCallbacks = this.queuedCallbacks; + if (allCallbacks.length) { - var _iteratorNormalCompletion43 = true; - var _didIteratorError43 = false; - var _iteratorError43 = undefined; + var _iteratorNormalCompletion41 = true; + var _didIteratorError41 = false; + var _iteratorError41 = undefined; try { - for (var _iterator43 = allCallbacks[Symbol.iterator](), _step43; !(_iteratorNormalCompletion43 = (_step43 = _iterator43.next()).done); _iteratorNormalCompletion43 = true) { - var eachCallback = _step43.value; - + for (var _iterator41 = allCallbacks[Symbol.iterator](), _step41; !(_iteratorNormalCompletion41 = (_step41 = _iterator41.next()).done); _iteratorNormalCompletion41 = true) { + var eachCallback = _step41.value; eachCallback(response); } } catch (err) { - _didIteratorError43 = true; - _iteratorError43 = err; + _didIteratorError41 = true; + _iteratorError41 = err; } finally { try { - if (!_iteratorNormalCompletion43 && _iterator43.return) { - _iterator43.return(); + if (!_iteratorNormalCompletion41 && _iterator41["return"] != null) { + _iterator41["return"](); } } finally { - if (_didIteratorError43) { - throw _iteratorError43; + if (_didIteratorError41) { + throw _iteratorError41; } } } @@ -72044,10 +72875,12 @@ var SFSyncManager = exports.SFSyncManager = function () { if (this.syncStatus.checker) { this.stopCheckingIfSyncIsTakingTooLong(); } + this.syncStatus.checker = this.$interval(function () { // check to see if the ongoing sync is taking too long, alert the user var secondsPassed = (new Date() - this.syncStatus.syncStart) / 1000; var warningThreshold = 5.0; // seconds + if (secondsPassed > warningThreshold) { this.notifyEvent("sync:taking-too-long"); this.stopCheckingIfSyncIsTakingTooLong(); @@ -72062,6 +72895,7 @@ var SFSyncManager = exports.SFSyncManager = function () { } else { clearInterval(this.syncStatus.checker); } + this.syncStatus.checker = null; } }, { @@ -72077,34 +72911,41 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "sync", value: function () { - var _ref105 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee96() { + var _sync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee96() { var _this24 = this; - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var options, + _args97 = arguments; return regeneratorRuntime.wrap(function _callee96$(_context97) { while (1) { switch (_context97.prev = _context97.next) { case 0: + options = _args97.length > 0 && _args97[0] !== undefined ? _args97[0] : {}; + if (!this.syncLocked) { - _context97.next = 3; + _context97.next = 4; break; } console.log("Sync Locked, Returning;"); return _context97.abrupt("return"); - case 3: - return _context97.abrupt("return", new Promise(function () { - var _ref106 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee95(resolve, reject) { - var allDirtyItems, dirtyItemsNotYetSaved, info, isSyncInProgress, initialDataLoaded, isContinuationSync, submitLimit, subItems, params, _iteratorNormalCompletion44, _didIteratorError44, _iteratorError44, _iterator44, _step44, item; + case 4: + return _context97.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref22 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee95(resolve, reject) { + var allDirtyItems, dirtyItemsNotYetSaved, info, isSyncInProgress, initialDataLoaded, isContinuationSync, submitLimit, subItems, params, _iteratorNormalCompletion42, _didIteratorError42, _iteratorError42, _iterator42, _step42, item; return regeneratorRuntime.wrap(function _callee95$(_context96) { while (1) { switch (_context96.prev = _context96.next) { case 0: - if (!options) options = {}; - allDirtyItems = _this24.modelManager.getDirtyItems(); dirtyItemsNotYetSaved = allDirtyItems.filter(function (candidate) { return !_this24.lastDirtyItemsSave || candidate.dirtiedDate > _this24.lastDirtyItemsSave; @@ -72130,21 +72971,24 @@ var SFSyncManager = exports.SFSyncManager = function () { case 13: if (isSyncInProgress) { _this24.queuedCallbacks.push(resolve); + if (_this24.loggingEnabled) { console.warn("Attempting to sync while existing sync is in progress."); } } + if (!initialDataLoaded) { if (_this24.loggingEnabled) { console.warn("(1) Attempting to perform online sync before local data has loaded"); - } - // Resolve right away, as we can't be sure when local data will be called by consumer. + } // Resolve right away, as we can't be sure when local data will be called by consumer. + + resolve(); } + return _context96.abrupt("return"); case 16: - // Set this value immediately after checking it above, to avoid race conditions. _this24.syncStatus.syncOpInProgress = true; @@ -72156,7 +73000,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.abrupt("return", _this24.syncOffline(allDirtyItems).then(function (response) { _this24.syncStatus.syncOpInProgress = false; resolve(response); - }).catch(function (e) { + })["catch"](function (e) { _this24.notifyEvent("sync-exception", e); })); @@ -72170,14 +73014,13 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.abrupt("return"); case 22: - if (_this24.loggingEnabled) { console.log("Syncing online user."); } isContinuationSync = _this24.syncStatus.needsMoreSync; - _this24.syncStatus.syncStart = new Date(); + _this24.beginCheckingIfSyncIsTakingTooLong(); submitLimit = _this24.PerSyncItemUploadLimit; @@ -72193,19 +73036,19 @@ var SFSyncManager = exports.SFSyncManager = function () { if (!isContinuationSync) { _this24.syncStatus.total = allDirtyItems.length; _this24.syncStatus.current = 0; - } - - // If items are marked as dirty during a long running sync request, total isn't updated + } // If items are marked as dirty during a long running sync request, total isn't updated // This happens mostly in the case of large imports and sync conflicts where duplicated items are created + + if (_this24.syncStatus.current > _this24.syncStatus.total) { _this24.syncStatus.total = _this24.syncStatus.current; } - _this24.syncStatusDidChange(); - - // Perform save after you've updated all status signals above. Presync save can take several seconds in some cases. + _this24.syncStatusDidChange(); // Perform save after you've updated all status signals above. Presync save can take several seconds in some cases. // Write to local storage before beginning sync. // This way, if they close the browser before the sync request completes, local changes will not be lost + + _context96.next = 34; return _this24.writeItemsToLocalStorage(dirtyItemsNotYetSaved, false); @@ -72214,24 +73057,23 @@ var SFSyncManager = exports.SFSyncManager = function () { if (options.onPreSyncSave) { options.onPreSyncSave(); - } - - // when doing a sync request that returns items greater than the limit, and thus subsequent syncs are required, + } // when doing a sync request that returns items greater than the limit, and thus subsequent syncs are required, // we want to keep track of all retreived items, then save to local storage only once all items have been retrieved, // so that relationships remain intact // Update 12/18: I don't think we need to do this anymore, since relationships will now retroactively resolve their relationships, // if an item they were looking for hasn't been pulled in yet. + + if (!_this24.allRetreivedItems) { _this24.allRetreivedItems = []; - } + } // We also want to do this for savedItems + - // We also want to do this for savedItems if (!_this24.allSavedItems) { _this24.allSavedItems = []; } params = {}; - params.limit = _this24.ServerItemDownloadLimit; if (options.performIntegrityCheck) { @@ -72259,15 +73101,13 @@ var SFSyncManager = exports.SFSyncManager = function () { _this24.notifyEvent("sync-exception", _context96.t0); case 49: - _iteratorNormalCompletion44 = true; - _didIteratorError44 = false; - _iteratorError44 = undefined; + _iteratorNormalCompletion42 = true; + _didIteratorError42 = false; + _iteratorError42 = undefined; _context96.prev = 52; - - for (_iterator44 = subItems[Symbol.iterator](); !(_iteratorNormalCompletion44 = (_step44 = _iterator44.next()).done); _iteratorNormalCompletion44 = true) { - item = _step44.value; - + for (_iterator42 = subItems[Symbol.iterator](); !(_iteratorNormalCompletion42 = (_step42 = _iterator42.next()).done); _iteratorNormalCompletion42 = true) { + item = _step42.value; // Reset dirty counter to 0, since we're about to sync it. // This means anyone marking the item as dirty after this will cause it so sync again and not be cleared on sync completion. item.dirtyCount = 0; @@ -72279,26 +73119,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 56: _context96.prev = 56; _context96.t1 = _context96["catch"](52); - _didIteratorError44 = true; - _iteratorError44 = _context96.t1; + _didIteratorError42 = true; + _iteratorError42 = _context96.t1; case 60: _context96.prev = 60; _context96.prev = 61; - if (!_iteratorNormalCompletion44 && _iterator44.return) { - _iterator44.return(); + if (!_iteratorNormalCompletion42 && _iterator42["return"] != null) { + _iterator42["return"](); } case 63: _context96.prev = 63; - if (!_didIteratorError44) { + if (!_didIteratorError42) { _context96.next = 66; break; } - throw _iteratorError44; + throw _iteratorError42; case 66: return _context96.finish(63); @@ -72317,10 +73157,7 @@ var SFSyncManager = exports.SFSyncManager = function () { case 73: params.cursor_token = _context96.sent; - - params['api'] = SFHttpManager.getApiVersion(); - _context96.prev = 75; _context96.t2 = _this24.httpManager; _context96.next = 79; @@ -72333,10 +73170,12 @@ var SFSyncManager = exports.SFSyncManager = function () { _context96.t5 = function (response) { _this24.handleSyncSuccess(subItems, response, options).then(function () { resolve(response); - }).catch(function (e) { + })["catch"](function (e) { console.log("Caught sync success exception:", e); + _this24.handleSyncError(e, null, allDirtyItems).then(function (errorResponse) { _this24.notifyEvent("sync-exception", e); + resolve(errorResponse); }); }); @@ -72356,7 +73195,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 86: _context96.prev = 86; _context96.t7 = _context96["catch"](75); - console.log("Sync exception caught:", _context96.t7); case 89: @@ -72364,15 +73202,15 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context96.stop(); } } - }, _callee95, _this24, [[41, 46], [52, 56, 60, 68], [61,, 63, 67], [75, 86]]); + }, _callee95, null, [[41, 46], [52, 56, 60, 68], [61,, 63, 67], [75, 86]]); })); - return function (_x132, _x133) { - return _ref106.apply(this, arguments); + return function (_x123, _x124) { + return _ref22.apply(this, arguments); }; }())); - case 4: + case 5: case "end": return _context97.stop(); } @@ -72381,7 +73219,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function sync() { - return _ref105.apply(this, arguments); + return _sync.apply(this, arguments); } return sync; @@ -72389,7 +73227,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "_awaitSleep", value: function () { - var _ref107 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee97(durationInMs) { + var _awaitSleep2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee97(durationInMs) { return regeneratorRuntime.wrap(function _callee97$(_context98) { while (1) { switch (_context98.prev = _context98.next) { @@ -72406,11 +73246,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context98.stop(); } } - }, _callee97, this); + }, _callee97); })); - function _awaitSleep(_x134) { - return _ref107.apply(this, arguments); + function _awaitSleep(_x125) { + return _awaitSleep2.apply(this, arguments); } return _awaitSleep; @@ -72418,10 +73258,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSyncSuccess", value: function () { - var _ref108 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee98(syncedItems, response, options) { + var _handleSyncSuccess = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee98(syncedItems, response, options) { var _this25 = this; - var latency, allSavedUUIDs, currentRequestSavedUUIDs, itemsToClearAsDirty, _iteratorNormalCompletion45, _didIteratorError45, _iteratorError45, _iterator45, _step45, item, retrieved, omitFields, saved, deprecated_unsaved, conflicts, conflictsNeedSync, matches, cursorToken; + var latency, allSavedUUIDs, currentRequestSavedUUIDs, itemsToClearAsDirty, _iteratorNormalCompletion43, _didIteratorError43, _iteratorError43, _iterator43, _step43, item, retrieved, omitFields, saved, deprecated_unsaved, conflicts, conflictsNeedSync, matches, cursorToken; return regeneratorRuntime.wrap(function _callee98$(_context99) { while (1) { @@ -72437,7 +73279,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return this._awaitSleep(latency); case 4: - this.syncStatus.error = null; if (this.loggingEnabled) { @@ -72450,32 +73291,32 @@ var SFSyncManager = exports.SFSyncManager = function () { currentRequestSavedUUIDs = response.saved_items.map(function (savedResponse) { return savedResponse.uuid; }); - - response.retrieved_items = response.retrieved_items.filter(function (retrievedItem) { var isInPreviousSaved = allSavedUUIDs.includes(retrievedItem.uuid); var isInCurrentSaved = currentRequestSavedUUIDs.includes(retrievedItem.uuid); + if (isInPreviousSaved || isInCurrentSaved) { return false; } var localItem = _this25.modelManager.findItem(retrievedItem.uuid); + if (localItem && localItem.dirty) { return false; } - return true; - }); - // Clear dirty items after we've finish filtering retrieved_items above, since that depends on dirty items. + return true; + }); // Clear dirty items after we've finish filtering retrieved_items above, since that depends on dirty items. // Check to make sure any subItem hasn't been marked as dirty again while a sync was ongoing + itemsToClearAsDirty = []; - _iteratorNormalCompletion45 = true; - _didIteratorError45 = false; - _iteratorError45 = undefined; + _iteratorNormalCompletion43 = true; + _didIteratorError43 = false; + _iteratorError43 = undefined; _context99.prev = 13; - for (_iterator45 = syncedItems[Symbol.iterator](); !(_iteratorNormalCompletion45 = (_step45 = _iterator45.next()).done); _iteratorNormalCompletion45 = true) { - item = _step45.value; + for (_iterator43 = syncedItems[Symbol.iterator](); !(_iteratorNormalCompletion43 = (_step43 = _iterator43.next()).done); _iteratorNormalCompletion43 = true) { + item = _step43.value; if (item.dirtyCount == 0) { // Safe to clear as dirty @@ -72489,26 +73330,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 17: _context99.prev = 17; _context99.t0 = _context99["catch"](13); - _didIteratorError45 = true; - _iteratorError45 = _context99.t0; + _didIteratorError43 = true; + _iteratorError43 = _context99.t0; case 21: _context99.prev = 21; _context99.prev = 22; - if (!_iteratorNormalCompletion45 && _iterator45.return) { - _iterator45.return(); + if (!_iteratorNormalCompletion43 && _iterator43["return"] != null) { + _iterator43["return"](); } case 24: _context99.prev = 24; - if (!_didIteratorError45) { + if (!_didIteratorError43) { _context99.next = 27; break; } - throw _iteratorError45; + throw _iteratorError43; case 27: return _context99.finish(24); @@ -72517,39 +73358,30 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context99.finish(21); case 29: - this.modelManager.clearDirtyItems(itemsToClearAsDirty); - - // Map retrieved items to local data + this.modelManager.clearDirtyItems(itemsToClearAsDirty); // Map retrieved items to local data // Note that deleted items will not be returned + _context99.next = 32; return this.handleItemsResponse(response.retrieved_items, null, SFModelManager.MappingSourceRemoteRetrieved, SFSyncManager.KeyRequestLoadSaveAccount); case 32: retrieved = _context99.sent; - - // Append items to master list of retrieved items for this ongoing sync operation this.allRetreivedItems = this.allRetreivedItems.concat(retrieved); - this.syncStatus.retrievedCount = this.allRetreivedItems.length; - - // Merge only metadata for saved items + this.syncStatus.retrievedCount = this.allRetreivedItems.length; // Merge only metadata for saved items // we write saved items to disk now because it clears their dirty status then saves // if we saved items before completion, we had have to save them as dirty and save them again on success as clean - omitFields = ["content", "auth_hash"]; - // Map saved items to local data + omitFields = ["content", "auth_hash"]; // Map saved items to local data _context99.next = 38; return this.handleItemsResponse(response.saved_items, omitFields, SFModelManager.MappingSourceRemoteSaved, SFSyncManager.KeyRequestLoadSaveAccount); case 38: saved = _context99.sent; - - // Append items to master list of saved items for this ongoing sync operation - this.allSavedItems = this.allSavedItems.concat(saved); + this.allSavedItems = this.allSavedItems.concat(saved); // 'unsaved' is deprecated and replaced with 'conflicts' in newer version. - // 'unsaved' is deprecated and replaced with 'conflicts' in newer version. deprecated_unsaved = response.unsaved; _context99.next = 43; return this.deprecated_handleUnsavedItemsResponse(deprecated_unsaved); @@ -72599,18 +73431,13 @@ var SFSyncManager = exports.SFSyncManager = function () { } case 59: - this.syncStatus.syncOpInProgress = false; this.syncStatus.current += syncedItems.length; + this.syncStatusDidChange(); // set the sync token at the end, so that if any errors happen above, you can resync - this.syncStatusDidChange(); - - // set the sync token at the end, so that if any errors happen above, you can resync this.setSyncToken(response.sync_token); this.setCursorToken(response.cursor_token); - this.stopCheckingIfSyncIsTakingTooLong(); - _context99.next = 67; return this.getCursorToken(); @@ -72635,8 +73462,8 @@ var SFSyncManager = exports.SFSyncManager = function () { } // We'll use the conflict sync as the next sync, so performSyncAgainOnCompletion can be turned off. - this.performSyncAgainOnCompletion = false; - // Include as part of await/resolve chain + this.performSyncAgainOnCompletion = false; // Include as part of await/resolve chain + return _context99.abrupt("return", new Promise(function (resolve, reject) { setTimeout(function () { _this25.sync(options).then(resolve); @@ -72644,12 +73471,10 @@ var SFSyncManager = exports.SFSyncManager = function () { })); case 77: - this.syncStatus.retrievedCount = 0; + this.syncStatus.retrievedCount = 0; // current and total represent what's going up, not what's come down or saved. - // current and total represent what's going up, not what's come down or saved. this.syncStatus.current = 0; this.syncStatus.total = 0; - this.syncStatusDidChange(); if (this.allRetreivedItems.length >= this.majorDataChangeThreshold || saved.length >= this.majorDataChangeThreshold || deprecated_unsaved && deprecated_unsaved.length >= this.majorDataChangeThreshold || conflicts && conflicts.length >= this.majorDataChangeThreshold) { @@ -72657,8 +73482,10 @@ var SFSyncManager = exports.SFSyncManager = function () { } this.callQueuedCallbacks(response); - this.notifyEvent("sync:completed", { retrievedItems: this.allRetreivedItems, savedItems: this.allSavedItems }); - + this.notifyEvent("sync:completed", { + retrievedItems: this.allRetreivedItems, + savedItems: this.allSavedItems + }); this.allRetreivedItems = []; this.allSavedItems = []; @@ -72679,8 +73506,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee98, this, [[13, 17, 21, 29], [22,, 24, 28]]); })); - function handleSyncSuccess(_x135, _x136, _x137) { - return _ref108.apply(this, arguments); + function handleSyncSuccess(_x126, _x127, _x128) { + return _handleSyncSuccess.apply(this, arguments); } return handleSyncSuccess; @@ -72688,7 +73515,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSyncError", value: function () { - var _ref109 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee99(response, statusCode, allDirtyItems) { + var _handleSyncError = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee99(response, statusCode, allDirtyItems) { return regeneratorRuntime.wrap(function _callee99$(_context100) { while (1) { switch (_context100.prev = _context100.next) { @@ -72700,24 +73529,29 @@ var SFSyncManager = exports.SFSyncManager = function () { } if (!response) { - response = { error: { message: "Could not connect to server." } }; + response = { + error: { + message: "Could not connect to server." + } + }; } else if (typeof response == 'string') { - response = { error: { message: response } }; + response = { + error: { + message: response + } + }; } this.syncStatus.syncOpInProgress = false; this.syncStatus.error = response.error; this.syncStatusDidChange(); - this.writeItemsToLocalStorage(allDirtyItems, false); this.modelManager.didSyncModelsOffline(allDirtyItems); - this.stopCheckingIfSyncIsTakingTooLong(); - this.notifyEvent("sync:error", response.error); - - this.callQueuedCallbacks({ error: "Sync error" }); - + this.callQueuedCallbacks({ + error: "Sync error" + }); return _context100.abrupt("return", response); case 12: @@ -72728,8 +73562,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee99, this); })); - function handleSyncError(_x138, _x139, _x140) { - return _ref109.apply(this, arguments); + function handleSyncError(_x129, _x130, _x131) { + return _handleSyncError.apply(this, arguments); } return handleSyncError; @@ -72737,7 +73571,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleItemsResponse", value: function () { - var _ref110 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee100(responseItems, omitFields, source, keyRequest) { + var _handleItemsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee100(responseItems, omitFields, source, keyRequest) { var keys, items, itemsWithErrorStatusChange; return regeneratorRuntime.wrap(function _callee100$(_context101) { while (1) { @@ -72757,14 +73593,12 @@ var SFSyncManager = exports.SFSyncManager = function () { case 7: items = _context101.sent; - - // During the decryption process, items may be marked as "errorDecrypting". If so, we want to be sure // to persist this new state by writing these items back to local storage. When an item's "errorDecrypting" // flag is changed, its "errorDecryptingValueChanged" flag will be set, so we can find these items by filtering (then unsetting) below: itemsWithErrorStatusChange = items.filter(function (item) { - var valueChanged = item.errorDecryptingValueChanged; - // unset after consuming value + var valueChanged = item.errorDecryptingValueChanged; // unset after consuming value + item.errorDecryptingValueChanged = false; return valueChanged; }); @@ -72783,8 +73617,8 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee100, this); })); - function handleItemsResponse(_x141, _x142, _x143, _x144) { - return _ref110.apply(this, arguments); + function handleItemsResponse(_x132, _x133, _x134, _x135) { + return _handleItemsResponse.apply(this, arguments); } return handleItemsResponse; @@ -72792,7 +73626,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "refreshErroredItems", value: function () { - var _ref111 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee101() { + var _refreshErroredItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee101() { var erroredItems; return regeneratorRuntime.wrap(function _callee101$(_context102) { while (1) { @@ -72818,12 +73654,11 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function refreshErroredItems() { - return _ref111.apply(this, arguments); + return _refreshErroredItems.apply(this, arguments); } return refreshErroredItems; }() - /* The difference between 'unsaved' (deprecated_handleUnsavedItemsResponse) and 'conflicts' (handleConflictsResponse) is that with unsaved items, the local copy is triumphant on the server, and we check the server copy to see if we should @@ -72837,8 +73672,10 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleConflictsResponse", value: function () { - var _ref112 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee102(conflicts) { - var localValues, _iteratorNormalCompletion46, _didIteratorError46, _iteratorError46, _iterator46, _step46, conflict, serverItemResponse, localItem, frozenContent, itemsNeedingLocalSave, _iteratorNormalCompletion47, _didIteratorError47, _iteratorError47, _iterator47, _step47, _conflict, _localValues$serverIt, itemRef, newItem, tempServerItem, _tempItemWithFrozenValues, frozenContentDiffers, currentContentDiffers, duplicateLocal, duplicateServer, keepLocal, keepServer, IsActiveItemSecondsThreshold, isActivelyBeingEdited, contentExcludingReferencesDiffers, isOnlyReferenceChange, localDuplicate; + var _handleConflictsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee102(conflicts) { + var localValues, _iteratorNormalCompletion44, _didIteratorError44, _iteratorError44, _iterator44, _step44, conflict, serverItemResponse, localItem, frozenContent, itemsNeedingLocalSave, _iteratorNormalCompletion45, _didIteratorError45, _iteratorError45, _iterator45, _step45, _conflict, _serverItemResponse, _localValues$_serverI, _frozenContent, itemRef, newItem, tempServerItem, _tempItemWithFrozenValues, frozenContentDiffers, currentContentDiffers, duplicateLocal, duplicateServer, keepLocal, keepServer, IsActiveItemSecondsThreshold, isActivelyBeingEdited, contentExcludingReferencesDiffers, isOnlyReferenceChange, localDuplicate; return regeneratorRuntime.wrap(function _callee102$(_context103) { while (1) { @@ -72852,28 +73689,27 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("return"); case 2: - if (this.loggingEnabled) { console.log("Handle Conflicted Items:", conflicts); - } - - // Get local values before doing any processing. This way, if a note change below modifies a tag, + } // Get local values before doing any processing. This way, if a note change below modifies a tag, // and the tag is going to be iterated on in the same loop, then we don't want this change to be compared // to the local value. + + localValues = {}; - _iteratorNormalCompletion46 = true; - _didIteratorError46 = false; - _iteratorError46 = undefined; + _iteratorNormalCompletion44 = true; + _didIteratorError44 = false; + _iteratorError44 = undefined; _context103.prev = 7; - _iterator46 = conflicts[Symbol.iterator](); + _iterator44 = conflicts[Symbol.iterator](); case 9: - if (_iteratorNormalCompletion46 = (_step46 = _iterator46.next()).done) { + if (_iteratorNormalCompletion44 = (_step44 = _iterator44.next()).done) { _context103.next = 21; break; } - conflict = _step46.value; + conflict = _step44.value; serverItemResponse = conflict.server_item || conflict.unsaved_item; localItem = this.modelManager.findItem(serverItemResponse.uuid); @@ -72887,11 +73723,13 @@ var SFSyncManager = exports.SFSyncManager = function () { case 16: frozenContent = localItem.getContentCopy(); - - localValues[serverItemResponse.uuid] = { frozenContent: frozenContent, itemRef: localItem }; + localValues[serverItemResponse.uuid] = { + frozenContent: frozenContent, + itemRef: localItem + }; case 18: - _iteratorNormalCompletion46 = true; + _iteratorNormalCompletion44 = true; _context103.next = 9; break; @@ -72902,26 +73740,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 23: _context103.prev = 23; _context103.t0 = _context103["catch"](7); - _didIteratorError46 = true; - _iteratorError46 = _context103.t0; + _didIteratorError44 = true; + _iteratorError44 = _context103.t0; case 27: _context103.prev = 27; _context103.prev = 28; - if (!_iteratorNormalCompletion46 && _iterator46.return) { - _iterator46.return(); + if (!_iteratorNormalCompletion44 && _iterator44["return"] != null) { + _iterator44["return"](); } case 30: _context103.prev = 30; - if (!_didIteratorError46) { + if (!_didIteratorError44) { _context103.next = 33; break; } - throw _iteratorError46; + throw _iteratorError44; case 33: return _context103.finish(30); @@ -72930,28 +73768,26 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.finish(27); case 35: - // Any item that's newly created here or updated will need to be persisted itemsNeedingLocalSave = []; - _iteratorNormalCompletion47 = true; - _didIteratorError47 = false; - _iteratorError47 = undefined; + _iteratorNormalCompletion45 = true; + _didIteratorError45 = false; + _iteratorError45 = undefined; _context103.prev = 39; - _iterator47 = conflicts[Symbol.iterator](); + _iterator45 = conflicts[Symbol.iterator](); case 41: - if (_iteratorNormalCompletion47 = (_step47 = _iterator47.next()).done) { + if (_iteratorNormalCompletion45 = (_step45 = _iterator45.next()).done) { _context103.next = 91; break; } - _conflict = _step47.value; - + _conflict = _step45.value; // if sync_conflict, we receive conflict.server_item. // If uuid_conflict, we receive the value we attempted to save. - serverItemResponse = _conflict.server_item || _conflict.unsaved_item; + _serverItemResponse = _conflict.server_item || _conflict.unsaved_item; _context103.t1 = SFJS.itemTransformer; - _context103.t2 = [serverItemResponse]; + _context103.t2 = [_serverItemResponse]; _context103.next = 48; return this.getActiveKeyInfo(SFSyncManager.KeyRequestLoadSaveAccount); @@ -72961,9 +73797,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.t1.decryptMultipleItems.call(_context103.t1, _context103.t2, _context103.t3); case 51: - _localValues$serverIt = localValues[serverItemResponse.uuid], frozenContent = _localValues$serverIt.frozenContent, itemRef = _localValues$serverIt.itemRef; - - // Could be deleted + _localValues$_serverI = localValues[_serverItemResponse.uuid], _frozenContent = _localValues$_serverI.frozenContent, itemRef = _localValues$_serverI.itemRef; // Could be deleted if (itemRef) { _context103.next = 54; @@ -72973,7 +73807,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("continue", 88); case 54: - // Item ref is always added, since it's value will have changed below, either by mapping, being set to dirty, // or being set undirty by the caller but the caller not saving because they're waiting on us. itemsNeedingLocalSave.push(itemRef); @@ -72988,7 +73821,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 58: newItem = _context103.sent; - itemsNeedingLocalSave.push(newItem); _context103.next = 88; break; @@ -73000,16 +73832,15 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context103.next = 65; - return this.modelManager.createDuplicateItemFromResponseItem(serverItemResponse); + return this.modelManager.createDuplicateItemFromResponseItem(_serverItemResponse); case 65: tempServerItem = _context103.sent; - // Convert to an object simply so we can have access to the `isItemContentEqualWith` function. _tempItemWithFrozenValues = this.modelManager.duplicateItemWithCustomContent({ - content: frozenContent, duplicateOf: itemRef - }); - // if !frozenContentDiffers && currentContentDiffers, it means values have changed as we were looping through conflicts here. + content: _frozenContent, + duplicateOf: itemRef + }); // if !frozenContentDiffers && currentContentDiffers, it means values have changed as we were looping through conflicts here. frozenContentDiffers = !_tempItemWithFrozenValues.isItemContentEqualWith(tempServerItem); currentContentDiffers = !itemRef.isItemContentEqualWith(tempServerItem); @@ -73018,8 +73849,7 @@ var SFSyncManager = exports.SFSyncManager = function () { keepLocal = false; keepServer = false; - - if (serverItemResponse.deleted || itemRef.deleted) { + if (_serverItemResponse.deleted || itemRef.deleted) { keepServer = true; } else if (frozenContentDiffers) { IsActiveItemSecondsThreshold = 20; @@ -73059,17 +73889,15 @@ var SFSyncManager = exports.SFSyncManager = function () { _context103.next = 77; return this.modelManager.duplicateItemWithCustomContentAndAddAsConflict({ - content: frozenContent, + content: _frozenContent, duplicateOf: itemRef }); case 77: localDuplicate = _context103.sent; - itemsNeedingLocalSave.push(localDuplicate); case 79: - if (duplicateServer) { this.modelManager.addDuplicatedItemAsConflict({ duplicate: tempServerItem, @@ -73084,14 +73912,14 @@ var SFSyncManager = exports.SFSyncManager = function () { } _context103.next = 83; - return this.modelManager.mapResponseItemsToLocalModelsOmittingFields([serverItemResponse], null, SFModelManager.MappingSourceRemoteRetrieved); + return this.modelManager.mapResponseItemsToLocalModelsOmittingFields([_serverItemResponse], null, SFModelManager.MappingSourceRemoteRetrieved); case 83: - if (keepLocal) { itemRef.updated_at = tempServerItem.updated_at; itemRef.setDirty(true); } + _context103.next = 88; break; @@ -73100,7 +73928,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context103.abrupt("continue", 88); case 88: - _iteratorNormalCompletion47 = true; + _iteratorNormalCompletion45 = true; _context103.next = 41; break; @@ -73111,26 +73939,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 93: _context103.prev = 93; _context103.t4 = _context103["catch"](39); - _didIteratorError47 = true; - _iteratorError47 = _context103.t4; + _didIteratorError45 = true; + _iteratorError45 = _context103.t4; case 97: _context103.prev = 97; _context103.prev = 98; - if (!_iteratorNormalCompletion47 && _iterator47.return) { - _iterator47.return(); + if (!_iteratorNormalCompletion45 && _iterator45["return"] != null) { + _iterator45["return"](); } case 100: _context103.prev = 100; - if (!_didIteratorError47) { + if (!_didIteratorError45) { _context103.next = 103; break; } - throw _iteratorError47; + throw _iteratorError45; case 103: return _context103.finish(100); @@ -73149,20 +73977,20 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee102, this, [[7, 23, 27, 35], [28,, 30, 34], [39, 93, 97, 105], [98,, 100, 104]]); })); - function handleConflictsResponse(_x145) { - return _ref112.apply(this, arguments); + function handleConflictsResponse(_x136) { + return _handleConflictsResponse.apply(this, arguments); } return handleConflictsResponse; - }() - - // Legacy API + }() // Legacy API }, { key: "deprecated_handleUnsavedItemsResponse", value: function () { - var _ref113 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee103(unsaved) { - var _iteratorNormalCompletion48, _didIteratorError48, _iteratorError48, _iterator48, _step48, mapping, itemResponse, item, error, dup; + var _deprecated_handleUnsavedItemsResponse = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee103(unsaved) { + var _iteratorNormalCompletion46, _didIteratorError46, _iteratorError46, _iterator46, _step46, mapping, itemResponse, item, error, dup; return regeneratorRuntime.wrap(function _callee103$(_context104) { while (1) { @@ -73176,24 +74004,23 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context104.abrupt("return"); case 2: - if (this.loggingEnabled) { console.log("Handle Unsaved Items:", unsaved); } - _iteratorNormalCompletion48 = true; - _didIteratorError48 = false; - _iteratorError48 = undefined; + _iteratorNormalCompletion46 = true; + _didIteratorError46 = false; + _iteratorError46 = undefined; _context104.prev = 6; - _iterator48 = unsaved[Symbol.iterator](); + _iterator46 = unsaved[Symbol.iterator](); case 8: - if (_iteratorNormalCompletion48 = (_step48 = _iterator48.next()).done) { + if (_iteratorNormalCompletion46 = (_step46 = _iterator46.next()).done) { _context104.next = 35; break; } - mapping = _step48.value; + mapping = _step46.value; itemResponse = mapping.item; _context104.t0 = SFJS.itemTransformer; _context104.t1 = [itemResponse]; @@ -73206,9 +74033,7 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context104.t0.decryptMultipleItems.call(_context104.t0, _context104.t1, _context104.t2); case 18: - item = this.modelManager.findItem(itemResponse.uuid); - - // Could be deleted + item = this.modelManager.findItem(itemResponse.uuid); // Could be deleted if (item) { _context104.next = 21; @@ -73245,11 +74070,14 @@ var SFSyncManager = exports.SFSyncManager = function () { dup = _context104.sent; if (!itemResponse.deleted && !item.isItemContentEqualWith(dup)) { - this.modelManager.addDuplicatedItemAsConflict({ duplicate: dup, duplicateOf: item }); + this.modelManager.addDuplicatedItemAsConflict({ + duplicate: dup, + duplicateOf: item + }); } case 32: - _iteratorNormalCompletion48 = true; + _iteratorNormalCompletion46 = true; _context104.next = 8; break; @@ -73260,26 +74088,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 37: _context104.prev = 37; _context104.t3 = _context104["catch"](6); - _didIteratorError48 = true; - _iteratorError48 = _context104.t3; + _didIteratorError46 = true; + _iteratorError46 = _context104.t3; case 41: _context104.prev = 41; _context104.prev = 42; - if (!_iteratorNormalCompletion48 && _iterator48.return) { - _iterator48.return(); + if (!_iteratorNormalCompletion46 && _iterator46["return"] != null) { + _iterator46["return"](); } case 44: _context104.prev = 44; - if (!_didIteratorError48) { + if (!_didIteratorError46) { _context104.next = 47; break; } - throw _iteratorError48; + throw _iteratorError46; case 47: return _context104.finish(44); @@ -73295,13 +74123,12 @@ var SFSyncManager = exports.SFSyncManager = function () { }, _callee103, this, [[6, 37, 41, 49], [42,, 44, 48]]); })); - function deprecated_handleUnsavedItemsResponse(_x146) { - return _ref113.apply(this, arguments); + function deprecated_handleUnsavedItemsResponse(_x137) { + return _deprecated_handleUnsavedItemsResponse.apply(this, arguments); } return deprecated_handleUnsavedItemsResponse; }() - /* Executes a sync request with a blank sync token and high download limit. It will download all items, but won't do anything with them other than decrypting, creating respective objects, and returning them to caller. (it does not map them nor establish their relationships) @@ -73316,9 +74143,12 @@ var SFSyncManager = exports.SFSyncManager = function () { var _this26 = this; var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - return new Promise(function () { - var _ref114 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee105(resolve, reject) { + return new Promise( + /*#__PURE__*/ + function () { + var _ref23 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee105(resolve, reject) { var params; return regeneratorRuntime.wrap(function _callee105$(_context106) { while (1) { @@ -73341,8 +74171,12 @@ var SFSyncManager = exports.SFSyncManager = function () { _context106.t1 = _context106.sent; _context106.t2 = params; - _context106.t3 = function () { - var _ref115 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee104(response) { + _context106.t3 = + /*#__PURE__*/ + function () { + var _ref24 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee104(response) { var incomingItems, keys; return regeneratorRuntime.wrap(function _callee104$(_context105) { while (1) { @@ -73362,7 +74196,6 @@ var SFSyncManager = exports.SFSyncManager = function () { return SFJS.itemTransformer.decryptMultipleItems(incomingItems, keys); case 7: - options.retrievedItems = options.retrievedItems.concat(incomingItems.map(function (incomingItem) { // Create model classes return _this26.modelManager.createItem(incomingItem); @@ -73381,11 +74214,11 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context105.stop(); } } - }, _callee104, _this26); + }, _callee104); })); - return function (_x150) { - return _ref115.apply(this, arguments); + return function (_x140) { + return _ref24.apply(this, arguments); }; }(); @@ -73401,7 +74234,6 @@ var SFSyncManager = exports.SFSyncManager = function () { case 12: _context106.prev = 12; _context106.t5 = _context106["catch"](1); - console.log("Download all items exception caught:", _context106.t5); reject(_context106.t5); @@ -73410,47 +74242,54 @@ var SFSyncManager = exports.SFSyncManager = function () { return _context106.stop(); } } - }, _callee105, _this26, [[1, 12]]); + }, _callee105, null, [[1, 12]]); })); - return function (_x148, _x149) { - return _ref114.apply(this, arguments); + return function (_x138, _x139) { + return _ref23.apply(this, arguments); }; }()); } }, { key: "resolveOutOfSync", value: function () { - var _ref116 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee107() { + var _resolveOutOfSync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee107() { var _this27 = this; return regeneratorRuntime.wrap(function _callee107$(_context108) { while (1) { switch (_context108.prev = _context108.next) { case 0: - return _context108.abrupt("return", this.stateless_downloadAllItems({ event: "resolve-out-of-sync" }).then(function () { - var _ref117 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee106(downloadedItems) { - var itemsToMap, _iteratorNormalCompletion49, _didIteratorError49, _iteratorError49, _iterator49, _step49, downloadedItem, existingItem, contentDoesntMatch; + return _context108.abrupt("return", this.stateless_downloadAllItems({ + event: "resolve-out-of-sync" + }).then( + /*#__PURE__*/ + function () { + var _ref25 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee106(downloadedItems) { + var itemsToMap, _iteratorNormalCompletion47, _didIteratorError47, _iteratorError47, _iterator47, _step47, downloadedItem, existingItem, contentDoesntMatch; return regeneratorRuntime.wrap(function _callee106$(_context107) { while (1) { switch (_context107.prev = _context107.next) { case 0: itemsToMap = []; - _iteratorNormalCompletion49 = true; - _didIteratorError49 = false; - _iteratorError49 = undefined; + _iteratorNormalCompletion47 = true; + _didIteratorError47 = false; + _iteratorError47 = undefined; _context107.prev = 4; - _iterator49 = downloadedItems[Symbol.iterator](); + _iterator47 = downloadedItems[Symbol.iterator](); case 6: - if (_iteratorNormalCompletion49 = (_step49 = _iterator49.next()).done) { + if (_iteratorNormalCompletion47 = (_step47 = _iterator47.next()).done) { _context107.next = 18; break; } - downloadedItem = _step49.value; - + downloadedItem = _step47.value; // Note that deleted items will not be sent back by the server. existingItem = _this27.modelManager.findItem(downloadedItem.uuid); @@ -73471,13 +74310,12 @@ var SFSyncManager = exports.SFSyncManager = function () { return _this27.modelManager.duplicateItemAndAddAsConflict(existingItem); case 14: - // Map the downloadedItem as authoritive content. If client copy at all differed, we would have created a duplicate of it above and synced it. // This is also neccessary to map the updated_at value from the server itemsToMap.push(downloadedItem); case 15: - _iteratorNormalCompletion49 = true; + _iteratorNormalCompletion47 = true; _context107.next = 6; break; @@ -73488,26 +74326,26 @@ var SFSyncManager = exports.SFSyncManager = function () { case 20: _context107.prev = 20; _context107.t0 = _context107["catch"](4); - _didIteratorError49 = true; - _iteratorError49 = _context107.t0; + _didIteratorError47 = true; + _iteratorError47 = _context107.t0; case 24: _context107.prev = 24; _context107.prev = 25; - if (!_iteratorNormalCompletion49 && _iterator49.return) { - _iterator49.return(); + if (!_iteratorNormalCompletion47 && _iterator47["return"] != null) { + _iterator47["return"](); } case 27: _context107.prev = 27; - if (!_didIteratorError49) { + if (!_didIteratorError47) { _context107.next = 30; break; } - throw _iteratorError49; + throw _iteratorError47; case 30: return _context107.finish(27); @@ -73517,25 +74355,30 @@ var SFSyncManager = exports.SFSyncManager = function () { case 32: _context107.next = 34; - return _this27.modelManager.mapResponseItemsToLocalModelsWithOptions({ items: itemsToMap, source: SFModelManager.MappingSourceRemoteRetrieved }); + return _this27.modelManager.mapResponseItemsToLocalModelsWithOptions({ + items: itemsToMap, + source: SFModelManager.MappingSourceRemoteRetrieved + }); case 34: _context107.next = 36; return _this27.writeItemsToLocalStorage(_this27.modelManager.allNondummyItems); case 36: - return _context107.abrupt("return", _this27.sync({ performIntegrityCheck: true })); + return _context107.abrupt("return", _this27.sync({ + performIntegrityCheck: true + })); case 37: case "end": return _context107.stop(); } } - }, _callee106, _this27, [[4, 20, 24, 32], [25,, 27, 31]]); + }, _callee106, null, [[4, 20, 24, 32], [25,, 27, 31]]); })); - return function (_x151) { - return _ref117.apply(this, arguments); + return function (_x141) { + return _ref25.apply(this, arguments); }; }())); @@ -73548,7 +74391,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function resolveOutOfSync() { - return _ref116.apply(this, arguments); + return _resolveOutOfSync.apply(this, arguments); } return resolveOutOfSync; @@ -73556,7 +74399,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "handleSignout", value: function () { - var _ref118 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee108() { + var _handleSignout = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee108() { return regeneratorRuntime.wrap(function _callee108$(_context109) { while (1) { switch (_context109.prev = _context109.next) { @@ -73578,7 +74423,7 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function handleSignout() { - return _ref118.apply(this, arguments); + return _handleSignout.apply(this, arguments); } return handleSignout; @@ -73586,7 +74431,9 @@ var SFSyncManager = exports.SFSyncManager = function () { }, { key: "clearSyncToken", value: function () { - var _ref119 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee109() { + var _clearSyncToken = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee109() { return regeneratorRuntime.wrap(function _callee109$(_context110) { while (1) { switch (_context110.prev = _context110.next) { @@ -73604,13 +74451,11 @@ var SFSyncManager = exports.SFSyncManager = function () { })); function clearSyncToken() { - return _ref119.apply(this, arguments); + return _clearSyncToken.apply(this, arguments); } return clearSyncToken; - }() - - // Only used by unit test + }() // Only used by unit test }, { key: "__setLocalDataNotLoaded", @@ -73624,6 +74469,7 @@ var SFSyncManager = exports.SFSyncManager = function () { if (!this._queuedCallbacks) { this._queuedCallbacks = []; } + return this._queuedCallbacks; } }]); @@ -73631,9 +74477,13 @@ var SFSyncManager = exports.SFSyncManager = function () { return SFSyncManager; }(); -;var dateFormatter; +exports.SFSyncManager = SFSyncManager; +; +var dateFormatter; -var SFItem = exports.SFItem = function () { +var SFItem = +/*#__PURE__*/ +function () { function SFItem() { var json_obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -73653,16 +74503,16 @@ var SFItem = exports.SFItem = function () { if (_typeof(this.content) === 'object' && !this.content.references) { this.content.references = []; } - } - - // On some platforms, syncrounous uuid generation is not available. + } // On some platforms, syncrounous uuid generation is not available. // Those platforms (mobile) must call this function manually. _createClass(SFItem, [{ key: "initUUID", value: function () { - var _ref120 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee110() { + var _initUUID = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee110() { return regeneratorRuntime.wrap(function _callee110$(_context111) { while (1) { switch (_context111.prev = _context111.next) { @@ -73687,7 +74537,7 @@ var SFItem = exports.SFItem = function () { })); function initUUID() { - return _ref120.apply(this, arguments); + return _initUUID.apply(this, arguments); } return initUUID; @@ -73704,50 +74554,30 @@ var SFItem = exports.SFItem = function () { this.uuid = json.uuid; this.enc_item_key = json.enc_item_key; this.auth_hash = json.auth_hash; - this.auth_params = json.auth_params; - - // When updating from server response (as opposed to local json response), these keys will be missing. + this.auth_params = json.auth_params; // When updating from server response (as opposed to local json response), these keys will be missing. // So we only want to update these values if they are explicitly present. + var clientKeys = ["errorDecrypting", "dirty", "dirtyCount", "dirtiedDate", "dummy"]; - var _iteratorNormalCompletion50 = true; - var _didIteratorError50 = false; - var _iteratorError50 = undefined; - try { - for (var _iterator50 = clientKeys[Symbol.iterator](), _step50; !(_iteratorNormalCompletion50 = (_step50 = _iterator50.next()).done); _iteratorNormalCompletion50 = true) { - var key = _step50.value; + for (var _i4 = 0, _clientKeys = clientKeys; _i4 < _clientKeys.length; _i4++) { + var key = _clientKeys[_i4]; - if (json[key] !== undefined) { - this[key] = json[key]; - } - } - } catch (err) { - _didIteratorError50 = true; - _iteratorError50 = err; - } finally { - try { - if (!_iteratorNormalCompletion50 && _iterator50.return) { - _iterator50.return(); - } - } finally { - if (_didIteratorError50) { - throw _iteratorError50; - } + if (json[key] !== undefined) { + this[key] = json[key]; } } if (this.dirtiedDate && typeof this.dirtiedDate === 'string') { this.dirtiedDate = new Date(this.dirtiedDate); - } + } // Check if object has getter for content_type, and if so, skip + - // Check if object has getter for content_type, and if so, skip if (!this.content_type) { this.content_type = json.content_type; - } - - // this.content = json.content will copy it by reference rather than value. So we need to do a deep merge after. + } // this.content = json.content will copy it by reference rather than value. So we need to do a deep merge after. // json.content can still be a string here. We copy it to this.content, then do a deep merge to transfer over all values. + if (json.errorDecrypting) { this.content = json.content; } else { @@ -73757,13 +74587,14 @@ var SFItem = exports.SFItem = function () { } catch (e) { console.log("Error while updating item from json", e); } - } + } // Manually merge top level data instead of wholesale merge + - // Manually merge top level data instead of wholesale merge if (json.created_at) { this.created_at = json.created_at; - } - // Could be null if we're mapping from an extension bridge, where we remove this as its a private property. + } // Could be null if we're mapping from an extension bridge, where we remove this as its a private property. + + if (json.updated_at) { this.updated_at = json.updated_at; } @@ -73779,8 +74610,9 @@ var SFItem = exports.SFItem = function () { } else { this.updated_at = new Date(0); } // Epoch - // Allows the getter to be re-invoked + + this._client_updated_at = null; if (json.content) { @@ -73805,10 +74637,8 @@ var SFItem = exports.SFItem = function () { Since our own structureParams gets a real-time copy of our content, it should be safe to merge the aggregate value back into our own content field. */ var content = this.structureParams(); + SFItem.deepMerge(this.contentObject, content); // Return the content item copy and not our actual value, as we don't want it to be mutated outside our control. - SFItem.deepMerge(this.contentObject, content); - - // Return the content item copy and not our actual value, as we don't want it to be mutated outside our control. return content; } }, { @@ -73816,34 +74646,32 @@ var SFItem = exports.SFItem = function () { value: function structureParams() { return this.getContentCopy(); } - /* Allows the item to handle the case where the item is deleted and the content is null */ }, { key: "handleDeletedContent", - value: function handleDeletedContent() { - // Subclasses can override + value: function handleDeletedContent() {// Subclasses can override } }, { key: "setDirty", value: function setDirty(dirty, updateClientDate) { - this.dirty = dirty; - - // Allows the syncManager to check if an item has been marked dirty after a sync has been started + this.dirty = dirty; // Allows the syncManager to check if an item has been marked dirty after a sync has been started // This prevents it from clearing it as a dirty item after sync completion, if someone else has marked it dirty // again after an ongoing sync. + if (!this.dirtyCount) { this.dirtyCount = 0; } + if (dirty) { this.dirtyCount++; } else { this.dirtyCount = 0; - } - - // Used internally by syncManager to determine if a dirted item needs to be saved offline. + } // Used internally by syncManager to determine if a dirted item needs to be saved offline. // You want to set this in both cases, when dirty is true and false. If it's false, we still need // to save it to disk as an update. + + this.dirtiedDate = new Date(); if (dirty && updateClientDate) { @@ -73856,8 +74684,7 @@ var SFItem = exports.SFItem = function () { } }, { key: "updateLocalRelationships", - value: function updateLocalRelationships() { - // optional override + value: function updateLocalRelationships() {// optional override } }, { key: "addItemAsRelationship", @@ -73880,26 +74707,29 @@ var SFItem = exports.SFItem = function () { value: function removeItemAsRelationship(item) { item.setIsNoLongerBeingReferencedBy(this); this.removeReferenceWithUuid(item.uuid); - } - - // When another object has a relationship with us, we push that object into memory here. + } // When another object has a relationship with us, we push that object into memory here. // We use this so that when `this` is deleted, we're able to update the references of those other objects. }, { key: "setIsBeingReferencedBy", value: function setIsBeingReferencedBy(item) { - if (!_.find(this.referencingObjects, { uuid: item.uuid })) { + if (!_.find(this.referencingObjects, { + uuid: item.uuid + })) { this.referencingObjects.push(item); } } }, { key: "setIsNoLongerBeingReferencedBy", value: function setIsNoLongerBeingReferencedBy(item) { - _.remove(this.referencingObjects, { uuid: item.uuid }); - // Legacy two-way relationships should be handled here + _.remove(this.referencingObjects, { + uuid: item.uuid + }); // Legacy two-way relationships should be handled here + + if (this.hasRelationshipWithItem(item)) { - this.removeReferenceWithUuid(item.uuid); - // We really shouldn't have the authority to set this item as dirty, but it's the only way to save this change. + this.removeReferenceWithUuid(item.uuid); // We really shouldn't have the authority to set this item as dirty, but it's the only way to save this change. + this.setDirty(true); } } @@ -73928,20 +74758,19 @@ var SFItem = exports.SFItem = function () { value: function didFinishSyncing() {} }, { key: "informReferencesOfUUIDChange", - value: function informReferencesOfUUIDChange(oldUUID, newUUID) { - // optional override + value: function informReferencesOfUUIDChange(oldUUID, newUUID) {// optional override } }, { key: "potentialItemOfInterestHasChangedItsUUID", value: function potentialItemOfInterestHasChangedItsUUID(newItem, oldUUID, newUUID) { // optional override - var _iteratorNormalCompletion51 = true; - var _didIteratorError51 = false; - var _iteratorError51 = undefined; + var _iteratorNormalCompletion48 = true; + var _didIteratorError48 = false; + var _iteratorError48 = undefined; try { - for (var _iterator51 = this.content.references[Symbol.iterator](), _step51; !(_iteratorNormalCompletion51 = (_step51 = _iterator51.next()).done); _iteratorNormalCompletion51 = true) { - var reference = _step51.value; + for (var _iterator48 = this.content.references[Symbol.iterator](), _step48; !(_iteratorNormalCompletion48 = (_step48 = _iterator48.next()).done); _iteratorNormalCompletion48 = true) { + var reference = _step48.value; if (reference.uuid == oldUUID) { reference.uuid = newUUID; @@ -73949,16 +74778,16 @@ var SFItem = exports.SFItem = function () { } } } catch (err) { - _didIteratorError51 = true; - _iteratorError51 = err; + _didIteratorError48 = true; + _iteratorError48 = err; } finally { try { - if (!_iteratorNormalCompletion51 && _iterator51.return) { - _iterator51.return(); + if (!_iteratorNormalCompletion48 && _iterator48["return"] != null) { + _iterator48["return"](); } } finally { - if (_didIteratorError51) { - throw _iteratorError51; + if (_didIteratorError48) { + throw _iteratorError48; } } } @@ -73968,7 +74797,6 @@ var SFItem = exports.SFItem = function () { value: function doNotEncrypt() { return false; } - /* App Data */ @@ -73990,9 +74818,11 @@ var SFItem = exports.SFItem = function () { } var data = this.content.appData[domain]; + if (!data) { data = {}; } + data[key] = value; this.content.appData[domain] = data; } @@ -74013,6 +74843,7 @@ var SFItem = exports.SFItem = function () { } var data = this.content.appData[domain]; + if (data) { return data[key]; } else { @@ -74037,7 +74868,6 @@ var SFItem = exports.SFItem = function () { }, { key: "keysToIgnoreWhenCheckingContentEquality", - /* During sync conflicts, when determing whether to create a duplicate for an item, we can omit keys that have no meaningful weight and can be ignored. For example, if one component has active = true and another component has active = false, @@ -74045,9 +74875,7 @@ var SFItem = exports.SFItem = function () { */ value: function keysToIgnoreWhenCheckingContentEquality() { return []; - } - - // Same as above, but keys inside appData[Item.AppDomain] + } // Same as above, but keys inside appData[Item.AppDomain] }, { key: "appDataKeysToIgnoreWhenCheckingContentEquality", @@ -74083,7 +74911,6 @@ var SFItem = exports.SFItem = function () { */ return SFPredicate.ItemSatisfiesPredicate(this, predicate); } - /* Dates */ @@ -74118,6 +74945,7 @@ var SFItem = exports.SFItem = function () { minute: '2-digit' }); } + return dateFormatter.format(date); } else { // IE < 11, Safari <= 9.0. @@ -74129,7 +74957,6 @@ var SFItem = exports.SFItem = function () { }, { key: "contentObject", get: function get() { - if (this.errorDecrypting) { return this.content; } @@ -74168,9 +74995,7 @@ var SFItem = exports.SFItem = function () { key: "locked", get: function get() { return this.getAppDataItem("locked"); - } - - // May be used by clients to display the human readable type for this item. Should be overriden by subclasses. + } // May be used by clients to display the human readable type for this item. Should be overriden by subclasses. }, { key: "displayName", @@ -74182,17 +75007,18 @@ var SFItem = exports.SFItem = function () { get: function get() { if (!this._client_updated_at) { var saved = this.getAppDataItem("client_updated_at"); + if (saved) { this._client_updated_at = new Date(saved); } else { this._client_updated_at = new Date(this.updated_at); } } + return this._client_updated_at; }, set: function set(date) { this._client_updated_at = date; - this.setAppDataItem("client_updated_at", date); } }], [{ @@ -74205,62 +75031,66 @@ var SFItem = exports.SFItem = function () { return srcValue; } } + _.mergeWith(a, b, mergeCopyArrays); + return a; } }, { key: "AreItemContentsEqual", - value: function AreItemContentsEqual(_ref121) { - var leftContent = _ref121.leftContent, - rightContent = _ref121.rightContent, - keysToIgnore = _ref121.keysToIgnore, - appDataKeysToIgnore = _ref121.appDataKeysToIgnore; + value: function AreItemContentsEqual(_ref26) { + var leftContent = _ref26.leftContent, + rightContent = _ref26.rightContent, + keysToIgnore = _ref26.keysToIgnore, + appDataKeysToIgnore = _ref26.appDataKeysToIgnore; var omit = function omit(obj, keys) { if (!obj) { return obj; } - var _iteratorNormalCompletion52 = true; - var _didIteratorError52 = false; - var _iteratorError52 = undefined; + + var _iteratorNormalCompletion49 = true; + var _didIteratorError49 = false; + var _iteratorError49 = undefined; try { - for (var _iterator52 = keys[Symbol.iterator](), _step52; !(_iteratorNormalCompletion52 = (_step52 = _iterator52.next()).done); _iteratorNormalCompletion52 = true) { - var key = _step52.value; - + for (var _iterator49 = keys[Symbol.iterator](), _step49; !(_iteratorNormalCompletion49 = (_step49 = _iterator49.next()).done); _iteratorNormalCompletion49 = true) { + var key = _step49.value; delete obj[key]; } } catch (err) { - _didIteratorError52 = true; - _iteratorError52 = err; + _didIteratorError49 = true; + _iteratorError49 = err; } finally { try { - if (!_iteratorNormalCompletion52 && _iterator52.return) { - _iterator52.return(); + if (!_iteratorNormalCompletion49 && _iterator49["return"] != null) { + _iterator49["return"](); } } finally { - if (_didIteratorError52) { - throw _iteratorError52; + if (_didIteratorError49) { + throw _iteratorError49; } } } return obj; - }; + }; // Create copies of objects before running omit as not to modify source values directly. + - // Create copies of objects before running omit as not to modify source values directly. leftContent = JSON.parse(JSON.stringify(leftContent)); + if (leftContent.appData) { omit(leftContent.appData[SFItem.AppDomain], appDataKeysToIgnore); } - leftContent = omit(leftContent, keysToIgnore); + leftContent = omit(leftContent, keysToIgnore); rightContent = JSON.parse(JSON.stringify(rightContent)); + if (rightContent.appData) { omit(rightContent.appData[SFItem.AppDomain], appDataKeysToIgnore); } - rightContent = omit(rightContent, keysToIgnore); + rightContent = omit(rightContent, keysToIgnore); return JSON.stringify(leftContent) === JSON.stringify(rightContent); } }]); @@ -74268,8 +75098,12 @@ var SFItem = exports.SFItem = function () { return SFItem; }(); +exports.SFItem = SFItem; ; -var SFItemParams = exports.SFItemParams = function () { + +var SFItemParams = +/*#__PURE__*/ +function () { function SFItemParams(item, keys, auth_params) { _classCallCheck(this, SFItemParams); @@ -74289,7 +75123,9 @@ var SFItemParams = exports.SFItemParams = function () { _createClass(SFItemParams, [{ key: "paramsForExportFile", value: function () { - var _ref122 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee111(includeDeleted) { + var _paramsForExportFile = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee111(includeDeleted) { var result; return regeneratorRuntime.wrap(function _callee111$(_context112) { while (1) { @@ -74320,8 +75156,8 @@ var SFItemParams = exports.SFItemParams = function () { }, _callee111, this); })); - function paramsForExportFile(_x153) { - return _ref122.apply(this, arguments); + function paramsForExportFile(_x142) { + return _paramsForExportFile.apply(this, arguments); } return paramsForExportFile; @@ -74329,7 +75165,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForExtension", value: function () { - var _ref123 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee112() { + var _paramsForExtension = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee112() { return regeneratorRuntime.wrap(function _callee112$(_context113) { while (1) { switch (_context113.prev = _context113.next) { @@ -74345,7 +75183,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForExtension() { - return _ref123.apply(this, arguments); + return _paramsForExtension.apply(this, arguments); } return paramsForExtension; @@ -74353,7 +75191,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForLocalStorage", value: function () { - var _ref124 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee113() { + var _paramsForLocalStorage = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee113() { return regeneratorRuntime.wrap(function _callee113$(_context114) { while (1) { switch (_context114.prev = _context114.next) { @@ -74371,7 +75211,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForLocalStorage() { - return _ref124.apply(this, arguments); + return _paramsForLocalStorage.apply(this, arguments); } return paramsForLocalStorage; @@ -74379,7 +75219,9 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "paramsForSync", value: function () { - var _ref125 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee114() { + var _paramsForSync = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee114() { return regeneratorRuntime.wrap(function _callee114$(_context115) { while (1) { switch (_context115.prev = _context115.next) { @@ -74395,7 +75237,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function paramsForSync() { - return _ref125.apply(this, arguments); + return _paramsForSync.apply(this, arguments); } return paramsForSync; @@ -74403,13 +75245,21 @@ var SFItemParams = exports.SFItemParams = function () { }, { key: "__params", value: function () { - var _ref126 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee115() { + var _params = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee115() { var params, doNotEncrypt, encryptedParams; return regeneratorRuntime.wrap(function _callee115$(_context116) { while (1) { switch (_context116.prev = _context116.next) { case 0: - params = { uuid: this.item.uuid, content_type: this.item.content_type, deleted: this.item.deleted, created_at: this.item.created_at, updated_at: this.item.updated_at }; + params = { + uuid: this.item.uuid, + content_type: this.item.content_type, + deleted: this.item.deleted, + created_at: this.item.created_at, + updated_at: this.item.updated_at + }; if (this.item.errorDecrypting) { _context116.next = 23; @@ -74435,6 +75285,7 @@ var SFItemParams = exports.SFItemParams = function () { if (this.auth_params.version !== "001") { params.auth_hash = null; } + _context116.next = 21; break; @@ -74475,7 +75326,6 @@ var SFItemParams = exports.SFItemParams = function () { params.auth_hash = this.item.auth_hash; case 26: - if (this.additionalFields) { _.merge(params, _.pick(this.item, this.additionalFields)); } @@ -74491,7 +75341,7 @@ var SFItemParams = exports.SFItemParams = function () { })); function __params() { - return _ref126.apply(this, arguments); + return _params.apply(this, arguments); } return __params; @@ -74501,18 +75351,21 @@ var SFItemParams = exports.SFItemParams = function () { return SFItemParams; }(); +exports.SFItemParams = SFItemParams; ; -var SFPredicate = exports.SFPredicate = function () { + +var SFPredicate = +/*#__PURE__*/ +function () { function SFPredicate(keypath, operator, value) { _classCallCheck(this, SFPredicate); this.keypath = keypath; this.operator = operator; - this.value = value; - - // Preprocessing to make predicate evaluation faster. + this.value = value; // Preprocessing to make predicate evaluation faster. // Won't recurse forever, but with arbitrarily large input could get stuck. Hope there are input size limits // somewhere else. + if (SFPredicate.IsRecursiveOperator(this.operator)) { this.value = this.value.map(SFPredicate.fromArray); } @@ -74534,59 +75387,60 @@ var SFPredicate = exports.SFPredicate = function () { if (SFPredicate.IsRecursiveOperator(predicate.operator)) { if (predicate.operator === "and") { - var _iteratorNormalCompletion53 = true; - var _didIteratorError53 = false; - var _iteratorError53 = undefined; + var _iteratorNormalCompletion50 = true; + var _didIteratorError50 = false; + var _iteratorError50 = undefined; try { - for (var _iterator53 = predicate.value[Symbol.iterator](), _step53; !(_iteratorNormalCompletion53 = (_step53 = _iterator53.next()).done); _iteratorNormalCompletion53 = true) { - var subPredicate = _step53.value; + for (var _iterator50 = predicate.value[Symbol.iterator](), _step50; !(_iteratorNormalCompletion50 = (_step50 = _iterator50.next()).done); _iteratorNormalCompletion50 = true) { + var subPredicate = _step50.value; if (!this.ObjectSatisfiesPredicate(object, subPredicate)) { return false; } } } catch (err) { - _didIteratorError53 = true; - _iteratorError53 = err; + _didIteratorError50 = true; + _iteratorError50 = err; } finally { try { - if (!_iteratorNormalCompletion53 && _iterator53.return) { - _iterator53.return(); + if (!_iteratorNormalCompletion50 && _iterator50["return"] != null) { + _iterator50["return"](); } } finally { - if (_didIteratorError53) { - throw _iteratorError53; + if (_didIteratorError50) { + throw _iteratorError50; } } } return true; } + if (predicate.operator === "or") { - var _iteratorNormalCompletion54 = true; - var _didIteratorError54 = false; - var _iteratorError54 = undefined; + var _iteratorNormalCompletion51 = true; + var _didIteratorError51 = false; + var _iteratorError51 = undefined; try { - for (var _iterator54 = predicate.value[Symbol.iterator](), _step54; !(_iteratorNormalCompletion54 = (_step54 = _iterator54.next()).done); _iteratorNormalCompletion54 = true) { - var subPredicate = _step54.value; + for (var _iterator51 = predicate.value[Symbol.iterator](), _step51; !(_iteratorNormalCompletion51 = (_step51 = _iterator51.next()).done); _iteratorNormalCompletion51 = true) { + var subPredicate = _step51.value; if (this.ObjectSatisfiesPredicate(object, subPredicate)) { return true; } } } catch (err) { - _didIteratorError54 = true; - _iteratorError54 = err; + _didIteratorError51 = true; + _iteratorError51 = err; } finally { try { - if (!_iteratorNormalCompletion54 && _iterator54.return) { - _iterator54.return(); + if (!_iteratorNormalCompletion51 && _iterator51["return"] != null) { + _iterator51["return"](); } } finally { - if (_didIteratorError54) { - throw _iteratorError54; + if (_didIteratorError51) { + throw _iteratorError51; } } } @@ -74596,6 +75450,7 @@ var SFPredicate = exports.SFPredicate = function () { } var predicateValue = predicate.value; + if (typeof predicateValue == 'string' && predicateValue.includes(".ago")) { predicateValue = this.DateFromString(predicateValue); } @@ -74603,10 +75458,8 @@ var SFPredicate = exports.SFPredicate = function () { var valueAtKeyPath = predicate.keypath.split('.').reduce(function (previous, current) { return previous && previous[current]; }, object); + var falseyValues = [false, "", null, undefined, NaN]; // If the value at keyPath is undefined, either because the property is nonexistent or the value is null. - var falseyValues = [false, "", null, undefined, NaN]; - - // If the value at keyPath is undefined, either because the property is nonexistent or the value is null. if (valueAtKeyPath == undefined) { if (predicate.operator == "!=") { return !falseyValues.includes(predicate.value); @@ -74660,34 +75513,36 @@ var SFPredicate = exports.SFPredicate = function () { } else { // is a predicate array or predicate object var innerPredicate; + if (Array.isArray(predicateValue)) { innerPredicate = SFPredicate.fromArray(predicateValue); } else { innerPredicate = predicateValue; } - var _iteratorNormalCompletion55 = true; - var _didIteratorError55 = false; - var _iteratorError55 = undefined; + + var _iteratorNormalCompletion52 = true; + var _didIteratorError52 = false; + var _iteratorError52 = undefined; try { - for (var _iterator55 = valueAtKeyPath[Symbol.iterator](), _step55; !(_iteratorNormalCompletion55 = (_step55 = _iterator55.next()).done); _iteratorNormalCompletion55 = true) { - var obj = _step55.value; + for (var _iterator52 = valueAtKeyPath[Symbol.iterator](), _step52; !(_iteratorNormalCompletion52 = (_step52 = _iterator52.next()).done); _iteratorNormalCompletion52 = true) { + var obj = _step52.value; if (this.ObjectSatisfiesPredicate(obj, innerPredicate)) { return true; } } } catch (err) { - _didIteratorError55 = true; - _iteratorError55 = err; + _didIteratorError52 = true; + _iteratorError52 = err; } finally { try { - if (!_iteratorNormalCompletion55 && _iterator55.return) { - _iterator55.return(); + if (!_iteratorNormalCompletion52 && _iterator52["return"] != null) { + _iterator52["return"](); } } finally { - if (_didIteratorError55) { - throw _iteratorError55; + if (_didIteratorError52) { + throw _iteratorError52; } } } @@ -74701,34 +75556,35 @@ var SFPredicate = exports.SFPredicate = function () { if (Array.isArray(predicate)) { predicate = SFPredicate.fromArray(predicate); } + return this.ObjectSatisfiesPredicate(item, predicate); } }, { key: "ItemSatisfiesPredicates", value: function ItemSatisfiesPredicates(item, predicates) { - var _iteratorNormalCompletion56 = true; - var _didIteratorError56 = false; - var _iteratorError56 = undefined; + var _iteratorNormalCompletion53 = true; + var _didIteratorError53 = false; + var _iteratorError53 = undefined; try { - for (var _iterator56 = predicates[Symbol.iterator](), _step56; !(_iteratorNormalCompletion56 = (_step56 = _iterator56.next()).done); _iteratorNormalCompletion56 = true) { - var predicate = _step56.value; + for (var _iterator53 = predicates[Symbol.iterator](), _step53; !(_iteratorNormalCompletion53 = (_step53 = _iterator53.next()).done); _iteratorNormalCompletion53 = true) { + var predicate = _step53.value; if (!this.ItemSatisfiesPredicate(item, predicate)) { return false; } } } catch (err) { - _didIteratorError56 = true; - _iteratorError56 = err; + _didIteratorError53 = true; + _iteratorError53 = err; } finally { try { - if (!_iteratorNormalCompletion56 && _iterator56.return) { - _iterator56.return(); + if (!_iteratorNormalCompletion53 && _iterator53["return"] != null) { + _iterator53["return"](); } } finally { - if (_didIteratorError56) { - throw _iteratorError56; + if (_didIteratorError53) { + throw _iteratorError53; } } } @@ -74743,11 +75599,13 @@ var SFPredicate = exports.SFPredicate = function () { var unit = comps[1]; var date = new Date(); var offset = parseInt(comps[0]); + if (unit == "days") { date.setDate(date.getDate() - offset); } else if (unit == "hours") { date.setHours(date.getHours() - offset); } + return date; } }, { @@ -74760,8 +75618,12 @@ var SFPredicate = exports.SFPredicate = function () { return SFPredicate; }(); +exports.SFPredicate = SFPredicate; ; -var SFPrivileges = exports.SFPrivileges = function (_SFItem) { + +var SFPrivileges = +/*#__PURE__*/ +function (_SFItem) { _inherits(SFPrivileges, _SFItem); _createClass(SFPrivileges, null, [{ @@ -74773,13 +75635,16 @@ var SFPrivileges = exports.SFPrivileges = function (_SFItem) { }]); function SFPrivileges(json_obj) { + var _this28; + _classCallCheck(this, SFPrivileges); - var _this28 = _possibleConstructorReturn(this, (SFPrivileges.__proto__ || Object.getPrototypeOf(SFPrivileges)).call(this, json_obj)); + _this28 = _possibleConstructorReturn(this, _getPrototypeOf(SFPrivileges).call(this, json_obj)); if (!_this28.content.desktopPrivileges) { _this28.content.desktopPrivileges = {}; } + return _this28; } @@ -74825,23 +75690,29 @@ var SFPrivileges = exports.SFPrivileges = function (_SFItem) { return SFPrivileges; }(SFItem); -; /* - Important: This is the only object in the session history domain that is persistable. - A history session contains one main content object: - the itemUUIDToItemHistoryMapping. This is a dictionary whose keys are item uuids, - and each value is an SFItemHistory object. - Each SFItemHistory object contains an array called `entires` which contain `SFItemHistory` entries (or subclasses, if the - `SFItemHistory.HistoryEntryClassMapping` class property value is set.) - */ - +exports.SFPrivileges = SFPrivileges; +; +/* + Important: This is the only object in the session history domain that is persistable. + A history session contains one main content object: + the itemUUIDToItemHistoryMapping. This is a dictionary whose keys are item uuids, + and each value is an SFItemHistory object. + Each SFItemHistory object contains an array called `entires` which contain `SFItemHistory` entries (or subclasses, if the + `SFItemHistory.HistoryEntryClassMapping` class property value is set.) +*/ // See default class values at bottom of this file, including `SFHistorySession.LargeItemEntryAmountThreshold`. -var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { +var SFHistorySession = +/*#__PURE__*/ +function (_SFItem2) { _inherits(SFHistorySession, _SFItem2); function SFHistorySession(json_obj) { + var _this29; + _classCallCheck(this, SFHistorySession); + _this29 = _possibleConstructorReturn(this, _getPrototypeOf(SFHistorySession).call(this, json_obj)); /* Our .content params: { @@ -74849,13 +75720,11 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { } */ - var _this29 = _possibleConstructorReturn(this, (SFHistorySession.__proto__ || Object.getPrototypeOf(SFHistorySession)).call(this, json_obj)); - if (!_this29.content.itemUUIDToItemHistoryMapping) { _this29.content.itemUUIDToItemHistoryMapping = {}; - } + } // When initializing from a json_obj, we want to deserialize the item history JSON into SFItemHistory objects. + - // When initializing from a json_obj, we want to deserialize the item history JSON into SFItemHistory objects. var uuids = Object.keys(_this29.content.itemUUIDToItemHistoryMapping); uuids.forEach(function (itemUUID) { var itemHistory = _this29.content.itemUUIDToItemHistoryMapping[itemUUID]; @@ -74875,9 +75744,11 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { key: "historyForItem", value: function historyForItem(item) { var history = this.content.itemUUIDToItemHistoryMapping[item.uuid]; + if (!history) { history = this.content.itemUUIDToItemHistoryMapping[item.uuid] = new SFItemHistory(); } + return history; } }, { @@ -74897,6 +75768,7 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { // for an optimization. An optimization may not remove entries above this threshold. It will determine what it should keep and what it shouldn't. // So, it is possible to have a threshold of 60 but have 600 entries, if the item history deems those worth keeping. var itemHistory = this.historyForItem(item); + if (itemHistory.entries.length > SFHistorySession.LargeItemEntryAmountThreshold) { itemHistory.optimize(); } @@ -74904,15 +75776,16 @@ var SFHistorySession = exports.SFHistorySession = function (_SFItem2) { }]); return SFHistorySession; -}(SFItem); - -// See comment in `this.optimizeHistoryForItem` +}(SFItem); // See comment in `this.optimizeHistoryForItem` +exports.SFHistorySession = SFHistorySession; SFHistorySession.LargeItemEntryAmountThreshold = 60; ; // See default class values at bottom of this file, including `SFItemHistory.LargeEntryDeltaThreshold`. -var SFItemHistory = exports.SFItemHistory = function () { +var SFItemHistory = +/*#__PURE__*/ +function () { function SFItemHistory() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -74920,33 +75793,32 @@ var SFItemHistory = exports.SFItemHistory = function () { if (!this.entries) { this.entries = []; - } + } // Deserialize the entries into entry objects. + - // Deserialize the entries into entry objects. if (params.entries) { - var _iteratorNormalCompletion57 = true; - var _didIteratorError57 = false; - var _iteratorError57 = undefined; + var _iteratorNormalCompletion54 = true; + var _didIteratorError54 = false; + var _iteratorError54 = undefined; try { - for (var _iterator57 = params.entries[Symbol.iterator](), _step57; !(_iteratorNormalCompletion57 = (_step57 = _iterator57.next()).done); _iteratorNormalCompletion57 = true) { - var entryParams = _step57.value; - + for (var _iterator54 = params.entries[Symbol.iterator](), _step54; !(_iteratorNormalCompletion54 = (_step54 = _iterator54.next()).done); _iteratorNormalCompletion54 = true) { + var entryParams = _step54.value; var entry = this.createEntryForItem(entryParams.item); entry.setPreviousEntry(this.getLastEntry()); this.entries.push(entry); } } catch (err) { - _didIteratorError57 = true; - _iteratorError57 = err; + _didIteratorError54 = true; + _iteratorError54 = err; } finally { try { - if (!_iteratorNormalCompletion57 && _iterator57.return) { - _iterator57.return(); + if (!_iteratorNormalCompletion54 && _iterator54["return"] != null) { + _iterator54["return"](); } } finally { - if (_didIteratorError57) { - throw _iteratorError57; + if (_didIteratorError54) { + throw _iteratorError54; } } } @@ -74957,9 +75829,11 @@ var SFItemHistory = exports.SFItemHistory = function () { key: "createEntryForItem", value: function createEntryForItem(item) { var historyItemClass = SFItemHistory.HistoryEntryClassMapping && SFItemHistory.HistoryEntryClassMapping[item.content_type]; + if (!historyItemClass) { historyItemClass = SFItemHistoryEntry; } + var entry = new historyItemClass(item); return entry; } @@ -74972,18 +75846,15 @@ var SFItemHistory = exports.SFItemHistory = function () { key: "addHistoryEntryForItem", value: function addHistoryEntryForItem(item) { var prospectiveEntry = this.createEntryForItem(item); - var previousEntry = this.getLastEntry(); - prospectiveEntry.setPreviousEntry(previousEntry); - - // Don't add first revision if text length is 0, as this means it's a new note. + prospectiveEntry.setPreviousEntry(previousEntry); // Don't add first revision if text length is 0, as this means it's a new note. // Actually, nevermind. If we do this, the first character added to a new note // will be displayed as "1 characters loaded". // if(!previousRevision && prospectiveRevision.textCharDiffLength == 0) { // return; // } - // Don't add if text is the same + if (prospectiveEntry.isSameAsEntry(previousEntry)) { return; } @@ -75014,6 +75885,7 @@ var SFItemHistory = exports.SFItemHistory = function () { } else { // Remove if in keep var index = keepEntries.indexOf(entry); + if (index !== -1) { keepEntries.splice(index, 1); } @@ -75022,6 +75894,7 @@ var SFItemHistory = exports.SFItemHistory = function () { if (keep && isEntrySignificant(entry) && entry.operationVector() == -1) { // This is a large negative change. Hang on to the previous entry. var previousEntry = _this30.entries[index - 1]; + if (previousEntry) { keepEntries.push(previousEntry); } @@ -75037,7 +75910,6 @@ var SFItemHistory = exports.SFItemHistory = function () { processEntry(entry, index, significant); } }); - this.entries = this.entries.filter(function (entry, index) { return keepEntries.indexOf(entry) !== -1; }); @@ -75045,24 +75917,24 @@ var SFItemHistory = exports.SFItemHistory = function () { }]); return SFItemHistory; -}(); - -// The amount of characters added or removed that constitute a keepable entry after optimization. +}(); // The amount of characters added or removed that constitute a keepable entry after optimization. +exports.SFItemHistory = SFItemHistory; SFItemHistory.LargeEntryDeltaThreshold = 15; ; -var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { + +var SFItemHistoryEntry = +/*#__PURE__*/ +function () { function SFItemHistoryEntry(item) { _classCallCheck(this, SFItemHistoryEntry); // Whatever values `item` has will be persisted, so be sure that the values are picked beforehand. - this.item = SFItem.deepMerge({}, item); + this.item = SFItem.deepMerge({}, item); // We'll assume a `text` content value to diff on. If it doesn't exist, no problem. - // We'll assume a `text` content value to diff on. If it doesn't exist, no problem. - this.defaultContentKeyToDiffOn = "text"; + this.defaultContentKeyToDiffOn = "text"; // Default value - // Default value this.textCharDiffLength = 0; if (typeof this.item.updated_at == 'string') { @@ -75073,9 +75945,8 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { _createClass(SFItemHistoryEntry, [{ key: "setPreviousEntry", value: function setPreviousEntry(previousEntry) { - this.hasPreviousEntry = previousEntry != null; + this.hasPreviousEntry = previousEntry != null; // we'll try to compute the delta based on an assumed content property of `text`, if it exists. - // we'll try to compute the delta based on an assumed content property of `text`, if it exists. if (this.item.content[this.defaultContentKeyToDiffOn]) { if (previousEntry) { this.textCharDiffLength = this.item.content[this.defaultContentKeyToDiffOn].length - previousEntry.item.content[this.defaultContentKeyToDiffOn].length; @@ -75096,9 +75967,9 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { } else { return 1; } - } + } // Otherwise use a default value of 1 + - // Otherwise use a default value of 1 return 1; } }, { @@ -75106,14 +75977,13 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { value: function deltaSize() { // Up to the subclass to determine how large the delta was, i.e number of characters changed. // But this general class won't be able to determine which property it should diff on, or even its format. - // We can return the `textCharDiffLength` if it's set, otherwise, just return 1; if (this.textCharDiffLength != undefined) { return Math.abs(this.textCharDiffLength); - } - - // Otherwise return 1 here to constitute a basic positive delta. + } // Otherwise return 1 here to constitute a basic positive delta. // The value returned should always be positive. override `operationVector` to return the direction of the delta. + + return 1; } }, { @@ -75132,15 +76002,19 @@ var SFItemHistoryEntry = exports.SFItemHistoryEntry = function () { return SFItemHistoryEntry; }(); -; /* - Abstract class with default implementations of some crypto functions. - Instantiate an instance of either SFCryptoJS (uses cryptojs) or SFCryptoWeb (uses web crypto) - These subclasses may override some of the functions in this abstract class. - */ +exports.SFItemHistoryEntry = SFItemHistoryEntry; +; +/* + Abstract class with default implementations of some crypto functions. + Instantiate an instance of either SFCryptoJS (uses cryptojs) or SFCryptoWeb (uses web crypto) + These subclasses may override some of the functions in this abstract class. +*/ var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var SFAbstractCrypto = exports.SFAbstractCrypto = function () { +var SFAbstractCrypto = +/*#__PURE__*/ +function () { function SFAbstractCrypto() { _classCallCheck(this, SFAbstractCrypto); @@ -75151,6 +76025,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { key: "generateUUIDSync", value: function generateUUIDSync() { var crypto = globalScope.crypto || globalScope.msCrypto; + if (crypto) { var buf = new Uint32Array(4); crypto.getRandomValues(buf); @@ -75163,9 +76038,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }); } else { var d = new Date().getTime(); + if (globalScope.performance && typeof globalScope.performance.now === "function") { d += performance.now(); //use high-precision timer if available } + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -75177,7 +76054,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateUUID", value: function () { - var _ref127 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee116() { + var _generateUUID = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee116() { return regeneratorRuntime.wrap(function _callee116$(_context117) { while (1) { switch (_context117.prev = _context117.next) { @@ -75193,64 +76072,98 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateUUID() { - return _ref127.apply(this, arguments); + return _generateUUID.apply(this, arguments); } return generateUUID; }() + /* Constant-time string comparison */ + + }, { + key: "timingSafeEqual", + value: function timingSafeEqual(a, b) { + var strA = String(a); + var strB = String(b); + var lenA = strA.length; + var result = 0; + + if (lenA !== strB.length) { + strB = strA; + result = 1; + } + + for (var i = 0; i < lenA; i++) { + result |= strA.charCodeAt(i) ^ strB.charCodeAt(i); + } + + return result === 0; + } }, { key: "decryptText", value: function () { - var _ref128 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee117() { - var _ref129 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - ciphertextToAuth = _ref129.ciphertextToAuth, - contentCiphertext = _ref129.contentCiphertext, - encryptionKey = _ref129.encryptionKey, - iv = _ref129.iv, - authHash = _ref129.authHash, - authKey = _ref129.authKey; + var _decryptText = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee117() { + var _ref27, + ciphertextToAuth, + contentCiphertext, + encryptionKey, + iv, + authHash, + authKey, + requiresAuth, + localAuthHash, + keyData, + ivData, + decrypted, + _args118 = arguments; - var requiresAuth = arguments[1]; - var localAuthHash, keyData, ivData, decrypted; return regeneratorRuntime.wrap(function _callee117$(_context118) { while (1) { switch (_context118.prev = _context118.next) { case 0: + _ref27 = _args118.length > 0 && _args118[0] !== undefined ? _args118[0] : {}, ciphertextToAuth = _ref27.ciphertextToAuth, contentCiphertext = _ref27.contentCiphertext, encryptionKey = _ref27.encryptionKey, iv = _ref27.iv, authHash = _ref27.authHash, authKey = _ref27.authKey; + requiresAuth = _args118.length > 1 ? _args118[1] : undefined; + if (!(requiresAuth && !authHash)) { - _context118.next = 3; + _context118.next = 5; break; } console.error("Auth hash is required."); return _context118.abrupt("return"); - case 3: + case 5: if (!authHash) { - _context118.next = 10; + _context118.next = 12; break; } - _context118.next = 6; + _context118.next = 8; return this.hmac256(ciphertextToAuth, authKey); - case 6: + case 8: localAuthHash = _context118.sent; - if (!(authHash !== localAuthHash)) { - _context118.next = 10; + if (!(this.timingSafeEqual(authHash, localAuthHash) === false)) { + _context118.next = 12; break; } console.error("Auth hash does not match, returning null."); return _context118.abrupt("return", null); - case 10: + case 12: keyData = CryptoJS.enc.Hex.parse(encryptionKey); ivData = CryptoJS.enc.Hex.parse(iv || ""); - decrypted = CryptoJS.AES.decrypt(contentCiphertext, keyData, { iv: ivData, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); + decrypted = CryptoJS.AES.decrypt(contentCiphertext, keyData, { + iv: ivData, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); return _context118.abrupt("return", decrypted.toString(CryptoJS.enc.Utf8)); - case 14: + case 16: case "end": return _context118.stop(); } @@ -75259,7 +76172,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function decryptText() { - return _ref128.apply(this, arguments); + return _decryptText.apply(this, arguments); } return decryptText; @@ -75267,7 +76180,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "encryptText", value: function () { - var _ref130 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee118(text, key, iv) { + var _encryptText = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee118(text, key, iv) { var keyData, ivData, encrypted; return regeneratorRuntime.wrap(function _callee118$(_context119) { while (1) { @@ -75275,7 +76190,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { case 0: keyData = CryptoJS.enc.Hex.parse(key); ivData = CryptoJS.enc.Hex.parse(iv || ""); - encrypted = CryptoJS.AES.encrypt(text, keyData, { iv: ivData, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); + encrypted = CryptoJS.AES.encrypt(text, keyData, { + iv: ivData, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); return _context119.abrupt("return", encrypted.toString()); case 4: @@ -75283,11 +76202,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context119.stop(); } } - }, _callee118, this); + }, _callee118); })); - function encryptText(_x156, _x157, _x158) { - return _ref130.apply(this, arguments); + function encryptText(_x143, _x144, _x145) { + return _encryptText.apply(this, arguments); } return encryptText; @@ -75295,7 +76214,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateRandomKey", value: function () { - var _ref131 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee119(bits) { + var _generateRandomKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee119(bits) { return regeneratorRuntime.wrap(function _callee119$(_context120) { while (1) { switch (_context120.prev = _context120.next) { @@ -75307,11 +76228,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context120.stop(); } } - }, _callee119, this); + }, _callee119); })); - function generateRandomKey(_x159) { - return _ref131.apply(this, arguments); + function generateRandomKey(_x146) { + return _generateRandomKey.apply(this, arguments); } return generateRandomKey; @@ -75319,7 +76240,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateItemEncryptionKey", value: function () { - var _ref132 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee120() { + var _generateItemEncryptionKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee120() { var length, cost, salt, passphrase; return regeneratorRuntime.wrap(function _callee120$(_context121) { while (1) { @@ -75349,7 +76272,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateItemEncryptionKey() { - return _ref132.apply(this, arguments); + return _generateItemEncryptionKey.apply(this, arguments); } return generateItemEncryptionKey; @@ -75357,7 +76280,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "firstHalfOfKey", value: function () { - var _ref133 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee121(key) { + var _firstHalfOfKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee121(key) { return regeneratorRuntime.wrap(function _callee121$(_context122) { while (1) { switch (_context122.prev = _context122.next) { @@ -75369,11 +76294,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context122.stop(); } } - }, _callee121, this); + }, _callee121); })); - function firstHalfOfKey(_x160) { - return _ref133.apply(this, arguments); + function firstHalfOfKey(_x147) { + return _firstHalfOfKey.apply(this, arguments); } return firstHalfOfKey; @@ -75381,7 +76306,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "secondHalfOfKey", value: function () { - var _ref134 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee122(key) { + var _secondHalfOfKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee122(key) { return regeneratorRuntime.wrap(function _callee122$(_context123) { while (1) { switch (_context123.prev = _context123.next) { @@ -75393,11 +76320,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context123.stop(); } } - }, _callee122, this); + }, _callee122); })); - function secondHalfOfKey(_x161) { - return _ref134.apply(this, arguments); + function secondHalfOfKey(_x148) { + return _secondHalfOfKey.apply(this, arguments); } return secondHalfOfKey; @@ -75405,7 +76332,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "base64", value: function () { - var _ref135 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee123(text) { + var _base = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee123(text) { return regeneratorRuntime.wrap(function _callee123$(_context124) { while (1) { switch (_context124.prev = _context124.next) { @@ -75419,11 +76348,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context124.stop(); } } - }, _callee123, this); + }, _callee123); })); - function base64(_x162) { - return _ref135.apply(this, arguments); + function base64(_x149) { + return _base.apply(this, arguments); } return base64; @@ -75431,7 +76360,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "base64Decode", value: function () { - var _ref136 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee124(base64String) { + var _base64Decode = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee124(base64String) { return regeneratorRuntime.wrap(function _callee124$(_context125) { while (1) { switch (_context125.prev = _context125.next) { @@ -75443,11 +76374,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context125.stop(); } } - }, _callee124, this); + }, _callee124); })); - function base64Decode(_x163) { - return _ref136.apply(this, arguments); + function base64Decode(_x150) { + return _base64Decode.apply(this, arguments); } return base64Decode; @@ -75455,7 +76386,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "sha256", value: function () { - var _ref137 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee125(text) { + var _sha = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee125(text) { return regeneratorRuntime.wrap(function _callee125$(_context126) { while (1) { switch (_context126.prev = _context126.next) { @@ -75467,11 +76400,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context126.stop(); } } - }, _callee125, this); + }, _callee125); })); - function sha256(_x164) { - return _ref137.apply(this, arguments); + function sha256(_x151) { + return _sha.apply(this, arguments); } return sha256; @@ -75479,7 +76412,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "hmac256", value: function () { - var _ref138 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee126(message, key) { + var _hmac = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee126(message, key) { var keyData, messageData, result; return regeneratorRuntime.wrap(function _callee126$(_context127) { while (1) { @@ -75495,11 +76430,11 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return _context127.stop(); } } - }, _callee126, this); + }, _callee126); })); - function hmac256(_x165, _x166) { - return _ref138.apply(this, arguments); + function hmac256(_x152, _x153) { + return _hmac.apply(this, arguments); } return hmac256; @@ -75507,7 +76442,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "generateSalt", value: function () { - var _ref139 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee127(identifier, version, cost, nonce) { + var _generateSalt = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee127(identifier, version, cost, nonce) { var result; return regeneratorRuntime.wrap(function _callee127$(_context128) { while (1) { @@ -75528,33 +76465,41 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee127, this); })); - function generateSalt(_x167, _x168, _x169, _x170) { - return _ref139.apply(this, arguments); + function generateSalt(_x154, _x155, _x156, _x157) { + return _generateSalt.apply(this, arguments); } return generateSalt; }() - /** Generates two deterministic keys based on one input */ }, { key: "generateSymmetricKeyPair", value: function () { - var _ref140 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee128() { - var _ref141 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - password = _ref141.password, - pw_salt = _ref141.pw_salt, - pw_cost = _ref141.pw_cost; + var _generateSymmetricKeyPair = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee128() { + var _ref28, + password, + pw_salt, + pw_cost, + output, + outputLength, + splitLength, + firstThird, + secondThird, + thirdThird, + _args129 = arguments; - var output, outputLength, splitLength, firstThird, secondThird, thirdThird; return regeneratorRuntime.wrap(function _callee128$(_context129) { while (1) { switch (_context129.prev = _context129.next) { case 0: - _context129.next = 2; + _ref28 = _args129.length > 0 && _args129[0] !== undefined ? _args129[0] : {}, password = _ref28.password, pw_salt = _ref28.pw_salt, pw_cost = _ref28.pw_cost; + _context129.next = 3; return this.pbkdf2(password, pw_salt, pw_cost, this.DefaultPBKDF2Length); - case 2: + case 3: output = _context129.sent; outputLength = output.length; splitLength = outputLength / 3; @@ -75563,7 +76508,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { thirdThird = output.slice(splitLength * 2, splitLength * 3); return _context129.abrupt("return", [firstThird, secondThird, thirdThird]); - case 9: + case 10: case "end": return _context129.stop(); } @@ -75572,7 +76517,7 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { })); function generateSymmetricKeyPair() { - return _ref140.apply(this, arguments); + return _generateSymmetricKeyPair.apply(this, arguments); } return generateSymmetricKeyPair; @@ -75580,7 +76525,9 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, { key: "computeEncryptionKeysForUser", value: function () { - var _ref142 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee129(password, authParams) { + var _computeEncryptionKeysForUser = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee129(password, authParams) { var pw_salt; return regeneratorRuntime.wrap(function _callee129$(_context130) { while (1) { @@ -75613,8 +76560,16 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { pw_salt = authParams.pw_salt; case 10: - return _context130.abrupt("return", this.generateSymmetricKeyPair({ password: password, pw_salt: pw_salt, pw_cost: authParams.pw_cost }).then(function (keys) { - var userKeys = { pw: keys[0], mk: keys[1], ak: keys[2] }; + return _context130.abrupt("return", this.generateSymmetricKeyPair({ + password: password, + pw_salt: pw_salt, + pw_cost: authParams.pw_cost + }).then(function (keys) { + var userKeys = { + pw: keys[0], + mk: keys[1], + ak: keys[2] + }; return userKeys; })); @@ -75626,19 +76581,19 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee129, this); })); - function computeEncryptionKeysForUser(_x172, _x173) { - return _ref142.apply(this, arguments); + function computeEncryptionKeysForUser(_x158, _x159) { + return _computeEncryptionKeysForUser.apply(this, arguments); } return computeEncryptionKeysForUser; - }() - - // Unlike computeEncryptionKeysForUser, this method always uses the latest SF Version + }() // Unlike computeEncryptionKeysForUser, this method always uses the latest SF Version }, { key: "generateInitialKeysAndAuthParamsForUser", value: function () { - var _ref143 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee130(identifier, password) { + var _generateInitialKeysAndAuthParamsForUser = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee130(identifier, password) { var version, pw_cost, pw_nonce, pw_salt; return regeneratorRuntime.wrap(function _callee130$(_context131) { while (1) { @@ -75656,10 +76611,26 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { case 7: pw_salt = _context131.sent; - return _context131.abrupt("return", this.generateSymmetricKeyPair({ password: password, pw_salt: pw_salt, pw_cost: pw_cost }).then(function (keys) { - var authParams = { pw_nonce: pw_nonce, pw_cost: pw_cost, identifier: identifier, version: version }; - var userKeys = { pw: keys[0], mk: keys[1], ak: keys[2] }; - return { keys: userKeys, authParams: authParams }; + return _context131.abrupt("return", this.generateSymmetricKeyPair({ + password: password, + pw_salt: pw_salt, + pw_cost: pw_cost + }).then(function (keys) { + var authParams = { + pw_nonce: pw_nonce, + pw_cost: pw_cost, + identifier: identifier, + version: version + }; + var userKeys = { + pw: keys[0], + mk: keys[1], + ak: keys[2] + }; + return { + keys: userKeys, + authParams: authParams + }; })); case 9: @@ -75670,8 +76641,8 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { }, _callee130, this); })); - function generateInitialKeysAndAuthParamsForUser(_x174, _x175) { - return _ref143.apply(this, arguments); + function generateInitialKeysAndAuthParamsForUser(_x160, _x161) { + return _generateInitialKeysAndAuthParamsForUser.apply(this, arguments); } return generateInitialKeysAndAuthParamsForUser; @@ -75681,20 +76652,26 @@ var SFAbstractCrypto = exports.SFAbstractCrypto = function () { return SFAbstractCrypto; }(); +exports.SFAbstractCrypto = SFAbstractCrypto; ; -var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { + +var SFCryptoJS = +/*#__PURE__*/ +function (_SFAbstractCrypto) { _inherits(SFCryptoJS, _SFAbstractCrypto); function SFCryptoJS() { _classCallCheck(this, SFCryptoJS); - return _possibleConstructorReturn(this, (SFCryptoJS.__proto__ || Object.getPrototypeOf(SFCryptoJS)).apply(this, arguments)); + return _possibleConstructorReturn(this, _getPrototypeOf(SFCryptoJS).apply(this, arguments)); } _createClass(SFCryptoJS, [{ key: "pbkdf2", value: function () { - var _ref144 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee131(password, pw_salt, pw_cost, length) { + var _pbkdf = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee131(password, pw_salt, pw_cost, length) { var params; return regeneratorRuntime.wrap(function _callee131$(_context132) { while (1) { @@ -75712,11 +76689,11 @@ var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { return _context132.stop(); } } - }, _callee131, this); + }, _callee131); })); - function pbkdf2(_x176, _x177, _x178, _x179) { - return _ref144.apply(this, arguments); + function pbkdf2(_x162, _x163, _x164, _x165) { + return _pbkdf.apply(this, arguments); } return pbkdf2; @@ -75726,29 +76703,32 @@ var SFCryptoJS = exports.SFCryptoJS = function (_SFAbstractCrypto) { return SFCryptoJS; }(SFAbstractCrypto); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; - +exports.SFCryptoJS = SFCryptoJS; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; var subtleCrypto = globalScope.crypto ? globalScope.crypto.subtle : null; -var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { +var SFCryptoWeb = +/*#__PURE__*/ +function (_SFAbstractCrypto2) { _inherits(SFCryptoWeb, _SFAbstractCrypto2); function SFCryptoWeb() { _classCallCheck(this, SFCryptoWeb); - return _possibleConstructorReturn(this, (SFCryptoWeb.__proto__ || Object.getPrototypeOf(SFCryptoWeb)).apply(this, arguments)); + return _possibleConstructorReturn(this, _getPrototypeOf(SFCryptoWeb).apply(this, arguments)); } _createClass(SFCryptoWeb, [{ key: "pbkdf2", - /** Public */ - value: function () { - var _ref145 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee132(password, pw_salt, pw_cost, length) { + var _pbkdf2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee132(password, pw_salt, pw_cost, length) { var key; return regeneratorRuntime.wrap(function _callee132$(_context133) { while (1) { @@ -75779,8 +76759,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee132, this); })); - function pbkdf2(_x180, _x181, _x182, _x183) { - return _ref145.apply(this, arguments); + function pbkdf2(_x166, _x167, _x168, _x169) { + return _pbkdf2.apply(this, arguments); } return pbkdf2; @@ -75788,8 +76768,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "generateRandomKey", value: function () { - var _ref146 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee134(bits) { - var _this33 = this; + var _generateRandomKey2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee134(bits) { + var _this31 = this; var extractable; return regeneratorRuntime.wrap(function _callee134$(_context135) { @@ -75797,16 +76779,23 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { switch (_context135.prev = _context135.next) { case 0: extractable = true; - return _context135.abrupt("return", subtleCrypto.generateKey({ name: "AES-CBC", length: bits }, extractable, ["encrypt", "decrypt"]).then(function (keyObject) { - return subtleCrypto.exportKey("raw", keyObject).then(function () { - var _ref147 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee133(keyData) { + return _context135.abrupt("return", subtleCrypto.generateKey({ + name: "AES-CBC", + length: bits + }, extractable, ["encrypt", "decrypt"]).then(function (keyObject) { + return subtleCrypto.exportKey("raw", keyObject).then( + /*#__PURE__*/ + function () { + var _ref29 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee133(keyData) { var key; return regeneratorRuntime.wrap(function _callee133$(_context134) { while (1) { switch (_context134.prev = _context134.next) { case 0: _context134.next = 2; - return _this33.arrayBufferToHexString(new Uint8Array(keyData)); + return _this31.arrayBufferToHexString(new Uint8Array(keyData)); case 2: key = _context134.sent; @@ -75817,16 +76806,16 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context134.stop(); } } - }, _callee133, _this33); + }, _callee133); })); - return function (_x185) { - return _ref147.apply(this, arguments); + return function (_x171) { + return _ref29.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error("Error exporting key", err); }); - }).catch(function (err) { + })["catch"](function (err) { console.error("Error generating key", err); })); @@ -75835,11 +76824,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context135.stop(); } } - }, _callee134, this); + }, _callee134); })); - function generateRandomKey(_x184) { - return _ref146.apply(this, arguments); + function generateRandomKey(_x170) { + return _generateRandomKey2.apply(this, arguments); } return generateRandomKey; @@ -75847,7 +76836,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "generateItemEncryptionKey", value: function () { - var _ref148 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee135() { + var _generateItemEncryptionKey2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee135() { var length; return regeneratorRuntime.wrap(function _callee135$(_context136) { while (1) { @@ -75868,7 +76859,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { })); function generateItemEncryptionKey() { - return _ref148.apply(this, arguments); + return _generateItemEncryptionKey2.apply(this, arguments); } return generateItemEncryptionKey; @@ -75876,8 +76867,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "encryptText", value: function () { - var _ref149 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee137(text, key, iv) { - var _this34 = this; + var _encryptText2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee137(text, key, iv) { + var _this32 = this; var ivData, alg, keyBuffer, keyData, textData; return regeneratorRuntime.wrap(function _callee137$(_context138) { @@ -75902,7 +76895,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 7: ivData = _context138.t0; - alg = { name: 'AES-CBC', iv: ivData }; + alg = { + name: 'AES-CBC', + iv: ivData + }; _context138.next = 11; return this.hexStringToArrayBuffer(key); @@ -75918,15 +76914,19 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 17: textData = _context138.sent; - return _context138.abrupt("return", crypto.subtle.encrypt(alg, keyData, textData).then(function () { - var _ref150 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee136(result) { + return _context138.abrupt("return", crypto.subtle.encrypt(alg, keyData, textData).then( + /*#__PURE__*/ + function () { + var _ref30 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee136(result) { var cipher; return regeneratorRuntime.wrap(function _callee136$(_context137) { while (1) { switch (_context137.prev = _context137.next) { case 0: _context137.next = 2; - return _this34.arrayBufferToBase64(result); + return _this32.arrayBufferToBase64(result); case 2: cipher = _context137.sent; @@ -75937,11 +76937,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context137.stop(); } } - }, _callee136, _this34); + }, _callee136); })); - return function (_x189) { - return _ref150.apply(this, arguments); + return function (_x175) { + return _ref30.apply(this, arguments); }; }())); @@ -75953,8 +76953,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee137, this); })); - function encryptText(_x186, _x187, _x188) { - return _ref149.apply(this, arguments); + function encryptText(_x172, _x173, _x174) { + return _encryptText2.apply(this, arguments); } return encryptText; @@ -75962,95 +76962,113 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "decryptText", value: function () { - var _ref151 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee139() { - var _this35 = this; + var _decryptText2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee139() { + var _this33 = this; - var _ref152 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - ciphertextToAuth = _ref152.ciphertextToAuth, - contentCiphertext = _ref152.contentCiphertext, - encryptionKey = _ref152.encryptionKey, - iv = _ref152.iv, - authHash = _ref152.authHash, - authKey = _ref152.authKey; + var _ref31, + ciphertextToAuth, + contentCiphertext, + encryptionKey, + iv, + authHash, + authKey, + requiresAuth, + localAuthHash, + ivData, + alg, + keyBuffer, + keyData, + textData, + _args140 = arguments; - var requiresAuth = arguments[1]; - var localAuthHash, ivData, alg, keyBuffer, keyData, textData; return regeneratorRuntime.wrap(function _callee139$(_context140) { while (1) { switch (_context140.prev = _context140.next) { case 0: + _ref31 = _args140.length > 0 && _args140[0] !== undefined ? _args140[0] : {}, ciphertextToAuth = _ref31.ciphertextToAuth, contentCiphertext = _ref31.contentCiphertext, encryptionKey = _ref31.encryptionKey, iv = _ref31.iv, authHash = _ref31.authHash, authKey = _ref31.authKey; + requiresAuth = _args140.length > 1 ? _args140[1] : undefined; + if (!(requiresAuth && !authHash)) { - _context140.next = 3; + _context140.next = 5; break; } console.error("Auth hash is required."); return _context140.abrupt("return"); - case 3: + case 5: if (!authHash) { - _context140.next = 10; + _context140.next = 12; break; } - _context140.next = 6; + _context140.next = 8; return this.hmac256(ciphertextToAuth, authKey); - case 6: + case 8: localAuthHash = _context140.sent; - if (!(authHash !== localAuthHash)) { - _context140.next = 10; + if (!(this.timingSafeEqual(authHash, localAuthHash) === false)) { + _context140.next = 12; break; } - console.error("Auth hash does not match, returning null. " + authHash + " != " + localAuthHash); + console.error("Auth hash does not match, returning null. ".concat(authHash, " != ").concat(localAuthHash)); return _context140.abrupt("return", null); - case 10: + case 12: if (!iv) { - _context140.next = 16; + _context140.next = 18; break; } - _context140.next = 13; + _context140.next = 15; return this.hexStringToArrayBuffer(iv); - case 13: + case 15: _context140.t0 = _context140.sent; - _context140.next = 17; + _context140.next = 19; break; - case 16: + case 18: _context140.t0 = new ArrayBuffer(16); - case 17: + case 19: ivData = _context140.t0; - alg = { name: 'AES-CBC', iv: ivData }; - _context140.next = 21; + alg = { + name: 'AES-CBC', + iv: ivData + }; + _context140.next = 23; return this.hexStringToArrayBuffer(encryptionKey); - case 21: + case 23: keyBuffer = _context140.sent; - _context140.next = 24; + _context140.next = 26; return this.webCryptoImportKey(keyBuffer, alg.name, ["decrypt"]); - case 24: + case 26: keyData = _context140.sent; - _context140.next = 27; + _context140.next = 29; return this.base64ToArrayBuffer(contentCiphertext); - case 27: + case 29: textData = _context140.sent; - return _context140.abrupt("return", crypto.subtle.decrypt(alg, keyData, textData).then(function () { - var _ref153 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee138(result) { + return _context140.abrupt("return", crypto.subtle.decrypt(alg, keyData, textData).then( + /*#__PURE__*/ + function () { + var _ref32 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee138(result) { var decoded; return regeneratorRuntime.wrap(function _callee138$(_context139) { while (1) { switch (_context139.prev = _context139.next) { case 0: _context139.next = 2; - return _this35.arrayBufferToString(result); + return _this33.arrayBufferToString(result); case 2: decoded = _context139.sent; @@ -76061,17 +77079,17 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context139.stop(); } } - }, _callee138, _this35); + }, _callee138); })); - return function (_x191) { - return _ref153.apply(this, arguments); + return function (_x176) { + return _ref32.apply(this, arguments); }; - }()).catch(function (error) { + }())["catch"](function (error) { console.error("Error decrypting:", error); })); - case 29: + case 31: case "end": return _context140.stop(); } @@ -76080,7 +77098,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { })); function decryptText() { - return _ref151.apply(this, arguments); + return _decryptText2.apply(this, arguments); } return decryptText; @@ -76088,8 +77106,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "hmac256", value: function () { - var _ref154 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee141(message, key) { - var _this36 = this; + var _hmac2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee141(message, key) { + var _this34 = this; var keyHexData, keyData, messageData; return regeneratorRuntime.wrap(function _callee141$(_context142) { @@ -76102,7 +77122,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 2: keyHexData = _context142.sent; _context142.next = 5; - return this.webCryptoImportKey(keyHexData, "HMAC", ["sign"], { name: "SHA-256" }); + return this.webCryptoImportKey(keyHexData, "HMAC", ["sign"], { + name: "SHA-256" + }); case 5: keyData = _context142.sent; @@ -76111,15 +77133,21 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 8: messageData = _context142.sent; - return _context142.abrupt("return", crypto.subtle.sign({ name: "HMAC" }, keyData, messageData).then(function () { - var _ref155 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee140(signature) { + return _context142.abrupt("return", crypto.subtle.sign({ + name: "HMAC" + }, keyData, messageData).then( + /*#__PURE__*/ + function () { + var _ref33 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee140(signature) { var hash; return regeneratorRuntime.wrap(function _callee140$(_context141) { while (1) { switch (_context141.prev = _context141.next) { case 0: _context141.next = 2; - return _this36.arrayBufferToHexString(signature); + return _this34.arrayBufferToHexString(signature); case 2: hash = _context141.sent; @@ -76130,13 +77158,13 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context141.stop(); } } - }, _callee140, _this36); + }, _callee140); })); - return function (_x194) { - return _ref155.apply(this, arguments); + return function (_x179) { + return _ref33.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error("Error computing hmac", err); })); @@ -76148,13 +77176,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee141, this); })); - function hmac256(_x192, _x193) { - return _ref154.apply(this, arguments); + function hmac256(_x177, _x178) { + return _hmac2.apply(this, arguments); } return hmac256; }() - /** Internal */ @@ -76162,7 +77189,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "webCryptoImportKey", value: function () { - var _ref156 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee142(input, alg, actions, hash) { + var _webCryptoImportKey = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee142(input, alg, actions, hash) { var text; return regeneratorRuntime.wrap(function _callee142$(_context143) { while (1) { @@ -76186,9 +77215,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 7: text = _context143.t0; - return _context143.abrupt("return", subtleCrypto.importKey("raw", text, { name: alg, hash: hash }, false, actions).then(function (key) { + return _context143.abrupt("return", subtleCrypto.importKey("raw", text, { + name: alg, + hash: hash + }, false, actions).then(function (key) { return key; - }).catch(function (err) { + })["catch"](function (err) { console.error(err); return null; })); @@ -76201,8 +77233,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee142, this); })); - function webCryptoImportKey(_x195, _x196, _x197, _x198) { - return _ref156.apply(this, arguments); + function webCryptoImportKey(_x180, _x181, _x182, _x183) { + return _webCryptoImportKey.apply(this, arguments); } return webCryptoImportKey; @@ -76210,8 +77242,10 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "webCryptoDeriveBits", value: function () { - var _ref157 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee144(key, pw_salt, pw_cost, length) { - var _this37 = this; + var _webCryptoDeriveBits = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee144(key, pw_salt, pw_cost, length) { + var _this35 = this; var params; return regeneratorRuntime.wrap(function _callee144$(_context145) { @@ -76224,22 +77258,28 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 2: _context145.t0 = _context145.sent; _context145.t1 = pw_cost; - _context145.t2 = { name: "SHA-512" }; + _context145.t2 = { + name: "SHA-512" + }; params = { "name": "PBKDF2", salt: _context145.t0, iterations: _context145.t1, hash: _context145.t2 }; - return _context145.abrupt("return", subtleCrypto.deriveBits(params, key, length).then(function () { - var _ref158 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee143(bits) { + return _context145.abrupt("return", subtleCrypto.deriveBits(params, key, length).then( + /*#__PURE__*/ + function () { + var _ref34 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee143(bits) { var key; return regeneratorRuntime.wrap(function _callee143$(_context144) { while (1) { switch (_context144.prev = _context144.next) { case 0: _context144.next = 2; - return _this37.arrayBufferToHexString(new Uint8Array(bits)); + return _this35.arrayBufferToHexString(new Uint8Array(bits)); case 2: key = _context144.sent; @@ -76250,13 +77290,13 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context144.stop(); } } - }, _callee143, _this37); + }, _callee143); })); - return function (_x203) { - return _ref158.apply(this, arguments); + return function (_x188) { + return _ref34.apply(this, arguments); }; - }()).catch(function (err) { + }())["catch"](function (err) { console.error(err); return null; })); @@ -76269,8 +77309,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee144, this); })); - function webCryptoDeriveBits(_x199, _x200, _x201, _x202) { - return _ref157.apply(this, arguments); + function webCryptoDeriveBits(_x184, _x185, _x186, _x187) { + return _webCryptoDeriveBits.apply(this, arguments); } return webCryptoDeriveBits; @@ -76278,7 +77318,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "stringToArrayBuffer", value: function () { - var _ref159 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee145(string) { + var _stringToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee145(string) { return regeneratorRuntime.wrap(function _callee145$(_context146) { while (1) { switch (_context146.prev = _context146.next) { @@ -76286,9 +77328,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context146.abrupt("return", new Promise(function (resolve, reject) { var blob = new Blob([string]); var f = new FileReader(); + f.onload = function (e) { resolve(e.target.result); }; + f.readAsArrayBuffer(blob); })); @@ -76297,11 +77341,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context146.stop(); } } - }, _callee145, this); + }, _callee145); })); - function stringToArrayBuffer(_x204) { - return _ref159.apply(this, arguments); + function stringToArrayBuffer(_x189) { + return _stringToArrayBuffer.apply(this, arguments); } return stringToArrayBuffer; @@ -76309,7 +77353,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToString", value: function () { - var _ref160 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee146(arrayBuffer) { + var _arrayBufferToString = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee146(arrayBuffer) { return regeneratorRuntime.wrap(function _callee146$(_context147) { while (1) { switch (_context147.prev = _context147.next) { @@ -76317,9 +77363,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context147.abrupt("return", new Promise(function (resolve, reject) { var blob = new Blob([arrayBuffer]); var f = new FileReader(); + f.onload = function (e) { resolve(e.target.result); }; + f.readAsText(blob); })); @@ -76328,11 +77376,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context147.stop(); } } - }, _callee146, this); + }, _callee146); })); - function arrayBufferToString(_x205) { - return _ref160.apply(this, arguments); + function arrayBufferToString(_x190) { + return _arrayBufferToString.apply(this, arguments); } return arrayBufferToString; @@ -76340,7 +77388,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToHexString", value: function () { - var _ref161 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee147(arrayBuffer) { + var _arrayBufferToHexString = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee147(arrayBuffer) { var byteArray, hexString, nextHexByte, i; return regeneratorRuntime.wrap(function _callee147$(_context148) { while (1) { @@ -76349,14 +77399,16 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { byteArray = new Uint8Array(arrayBuffer); hexString = ""; - for (i = 0; i < byteArray.byteLength; i++) { nextHexByte = byteArray[i].toString(16); + if (nextHexByte.length < 2) { nextHexByte = "0" + nextHexByte; } + hexString += nextHexByte; } + return _context148.abrupt("return", hexString); case 4: @@ -76364,11 +77416,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context148.stop(); } } - }, _callee147, this); + }, _callee147); })); - function arrayBufferToHexString(_x206) { - return _ref161.apply(this, arguments); + function arrayBufferToHexString(_x191) { + return _arrayBufferToHexString.apply(this, arguments); } return arrayBufferToHexString; @@ -76376,7 +77428,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "hexStringToArrayBuffer", value: function () { - var _ref162 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee148(hex) { + var _hexStringToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee148(hex) { var bytes, c; return regeneratorRuntime.wrap(function _callee148$(_context149) { while (1) { @@ -76384,18 +77438,20 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { case 0: for (bytes = [], c = 0; c < hex.length; c += 2) { bytes.push(parseInt(hex.substr(c, 2), 16)); - }return _context149.abrupt("return", new Uint8Array(bytes)); + } + + return _context149.abrupt("return", new Uint8Array(bytes)); case 2: case "end": return _context149.stop(); } } - }, _callee148, this); + }, _callee148); })); - function hexStringToArrayBuffer(_x207) { - return _ref162.apply(this, arguments); + function hexStringToArrayBuffer(_x192) { + return _hexStringToArrayBuffer.apply(this, arguments); } return hexStringToArrayBuffer; @@ -76403,7 +77459,9 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "base64ToArrayBuffer", value: function () { - var _ref163 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee149(base64) { + var _base64ToArrayBuffer = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee149(base64) { var binary_string, len, bytes, i; return regeneratorRuntime.wrap(function _callee149$(_context150) { while (1) { @@ -76420,6 +77478,7 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { for (i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } + return _context150.abrupt("return", bytes.buffer); case 7: @@ -76430,8 +77489,8 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, _callee149, this); })); - function base64ToArrayBuffer(_x208) { - return _ref163.apply(this, arguments); + function base64ToArrayBuffer(_x193) { + return _base64ToArrayBuffer.apply(this, arguments); } return base64ToArrayBuffer; @@ -76439,18 +77498,24 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { }, { key: "arrayBufferToBase64", value: function () { - var _ref164 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee150(buffer) { + var _arrayBufferToBase = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee150(buffer) { return regeneratorRuntime.wrap(function _callee150$(_context151) { while (1) { switch (_context151.prev = _context151.next) { case 0: return _context151.abrupt("return", new Promise(function (resolve, reject) { - var blob = new Blob([buffer], { type: 'application/octet-binary' }); + var blob = new Blob([buffer], { + type: 'application/octet-binary' + }); var reader = new FileReader(); + reader.onload = function (evt) { var dataurl = evt.target.result; resolve(dataurl.substr(dataurl.indexOf(',') + 1)); }; + reader.readAsDataURL(blob); })); @@ -76459,11 +77524,11 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return _context151.stop(); } } - }, _callee150, this); + }, _callee150); })); - function arrayBufferToBase64(_x209) { - return _ref164.apply(this, arguments); + function arrayBufferToBase64(_x194) { + return _arrayBufferToBase.apply(this, arguments); } return arrayBufferToBase64; @@ -76473,8 +77538,12 @@ var SFCryptoWeb = exports.SFCryptoWeb = function (_SFAbstractCrypto2) { return SFCryptoWeb; }(SFAbstractCrypto); +exports.SFCryptoWeb = SFCryptoWeb; ; -var SFItemTransformer = exports.SFItemTransformer = function () { + +var SFItemTransformer = +/*#__PURE__*/ +function () { function SFItemTransformer(crypto) { _classCallCheck(this, SFItemTransformer); @@ -76484,7 +77553,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { _createClass(SFItemTransformer, [{ key: "_private_encryptString", value: function () { - var _ref165 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee151(string, encryptionKey, authKey, uuid, auth_params) { + var _private_encryptString2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee151(string, encryptionKey, authKey, uuid, auth_params) { var fullCiphertext, contentCiphertext, iv, ciphertextToAuth, authHash, authParamsString; return regeneratorRuntime.wrap(function _callee151$(_context152) { while (1) { @@ -76500,7 +77571,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 3: contentCiphertext = _context152.sent; - fullCiphertext = auth_params.version + contentCiphertext; _context152.next = 21; break; @@ -76527,7 +77597,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 19: authParamsString = _context152.sent; - fullCiphertext = [auth_params.version, authHash, uuid, iv, contentCiphertext, authParamsString].join(":"); case 21: @@ -76541,8 +77610,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee151, this); })); - function _private_encryptString(_x210, _x211, _x212, _x213, _x214) { - return _ref165.apply(this, arguments); + function _private_encryptString(_x195, _x196, _x197, _x198, _x199) { + return _private_encryptString2.apply(this, arguments); } return _private_encryptString; @@ -76550,14 +77619,15 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "encryptItem", value: function () { - var _ref166 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee152(item, keys, auth_params) { + var _encryptItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee152(item, keys, auth_params) { var params, item_key, ek, ak, ciphertext, authHash; return regeneratorRuntime.wrap(function _callee152$(_context153) { while (1) { switch (_context153.prev = _context153.next) { case 0: - params = {}; - // encrypt item key + params = {}; // encrypt item key _context153.next = 3; return this.crypto.generateItemEncryptionKey(); @@ -76612,11 +77682,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { case 25: authHash = _context153.sent; - params.auth_hash = authHash; case 27: - params.content = ciphertext; return _context153.abrupt("return", params); @@ -76628,8 +77696,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee152, this); })); - function encryptItem(_x215, _x216, _x217) { - return _ref166.apply(this, arguments); + function encryptItem(_x200, _x201, _x202) { + return _encryptItem.apply(this, arguments); } return encryptItem; @@ -76638,6 +77706,7 @@ var SFItemTransformer = exports.SFItemTransformer = function () { key: "encryptionComponentsFromString", value: function encryptionComponentsFromString(string, encryptionKey, authKey) { var encryptionVersion = string.substring(0, 3); + if (encryptionVersion === "001") { return { contentCiphertext: string.substring(3, string.length), @@ -76666,7 +77735,9 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "decryptItem", value: function () { - var _ref167 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee153(item, keys) { + var _decryptItem = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee153(item, keys) { var encryptedItemKey, requiresAuth, keyParams, item_key, ek, ak, itemParams, content; return regeneratorRuntime.wrap(function _callee153$(_context154) { while (1) { @@ -76714,7 +77785,6 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context154.abrupt("return"); case 17: - // decrypt encrypted key encryptedItemKey = item.enc_item_key; requiresAuth = true; @@ -76724,9 +77794,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { encryptedItemKey = "001" + encryptedItemKey; requiresAuth = false; } - keyParams = this.encryptionComponentsFromString(encryptedItemKey, keys.mk, keys.ak); - // return if uuid in auth hash does not match item uuid. Signs of tampering. + keyParams = this.encryptionComponentsFromString(encryptedItemKey, keys.mk, keys.ak); // return if uuid in auth hash does not match item uuid. Signs of tampering. if (!(keyParams.uuid && keyParams.uuid !== item.uuid)) { _context154.next = 26; @@ -76734,9 +77803,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { } console.error("Item key params UUID does not match item UUID"); + if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); @@ -76753,9 +77824,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { } console.log("Error decrypting item", item); + if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); @@ -76795,11 +77868,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; return _context154.abrupt("return"); case 55: - if (!itemParams.authHash) { // legacy 001 itemParams.authHash = item.auth_hash; @@ -76815,12 +77888,14 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; } else { if (item.errorDecrypting == true) { item.errorDecryptingValueChanged = true; - } - // Content should only be set if it was successfully decrypted, and should otherwise remain unchanged. + } // Content should only be set if it was successfully decrypted, and should otherwise remain unchanged. + + item.errorDecrypting = false; item.content = content; } @@ -76833,8 +77908,8 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, _callee153, this, [[3, 11], [41, 49]]); })); - function decryptItem(_x218, _x219) { - return _ref167.apply(this, arguments); + function decryptItem(_x203, _x204) { + return _decryptItem.apply(this, arguments); } return decryptItem; @@ -76842,16 +77917,22 @@ var SFItemTransformer = exports.SFItemTransformer = function () { }, { key: "decryptMultipleItems", value: function () { - var _ref168 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee155(items, keys, throws) { - var _this38 = this; + var _decryptMultipleItems = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee155(items, keys, _throws) { + var _this36 = this; var decrypt; return regeneratorRuntime.wrap(function _callee155$(_context156) { while (1) { switch (_context156.prev = _context156.next) { case 0: - decrypt = function () { - var _ref169 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee154(item) { + decrypt = + /*#__PURE__*/ + function () { + var _ref35 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee154(item) { var isString; return regeneratorRuntime.wrap(function _callee154$(_context155) { while (1) { @@ -76882,7 +77963,7 @@ var SFItemTransformer = exports.SFItemTransformer = function () { _context155.prev = 6; _context155.next = 9; - return _this38.decryptItem(item, keys); + return _this36.decryptItem(item, keys); case 9: _context155.next = 19; @@ -76895,9 +77976,10 @@ var SFItemTransformer = exports.SFItemTransformer = function () { if (!item.errorDecrypting) { item.errorDecryptingValueChanged = true; } + item.errorDecrypting = true; - if (!throws) { + if (!_throws) { _context155.next = 17; break; } @@ -76913,11 +77995,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context155.stop(); } } - }, _callee154, _this38, [[6, 11]]); + }, _callee154, null, [[6, 11]]); })); - return function decrypt(_x223) { - return _ref169.apply(this, arguments); + return function decrypt(_x208) { + return _ref35.apply(this, arguments); }; }(); @@ -76930,11 +78012,11 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return _context156.stop(); } } - }, _callee155, this); + }, _callee155); })); - function decryptMultipleItems(_x220, _x221, _x222) { - return _ref168.apply(this, arguments); + function decryptMultipleItems(_x205, _x206, _x207) { + return _decryptMultipleItems.apply(this, arguments); } return decryptMultipleItems; @@ -76944,9 +78026,13 @@ var SFItemTransformer = exports.SFItemTransformer = function () { return SFItemTransformer; }(); -;var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; +exports.SFItemTransformer = SFItemTransformer; +; +var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null; -var StandardFile = exports.StandardFile = function () { +var StandardFile = +/*#__PURE__*/ +function () { function StandardFile(cryptoInstance) { _classCallCheck(this, StandardFile); @@ -76961,15 +78047,14 @@ var StandardFile = exports.StandardFile = function () { } else { this.crypto = new SFCryptoJS(); } - } + } // This must be placed outside window check, as it's used in native. + - // This must be placed outside window check, as it's used in native. if (cryptoInstance) { this.crypto = cryptoInstance; } this.itemTransformer = new SFItemTransformer(this.crypto); - this.crypto.SFJS = { version: this.version(), defaultPasswordGenerationCost: this.defaultPasswordGenerationCost() @@ -76993,9 +78078,7 @@ var StandardFile = exports.StandardFile = function () { } else { return true; } - } - - // Returns the versions that this library supports technically. + } // Returns the versions that this library supports technically. }, { key: "supportedVersions", @@ -77016,12 +78099,13 @@ var StandardFile = exports.StandardFile = function () { "001": Date.parse("2018-01-01"), "002": Date.parse("2020-01-01") }; - var date = expirationDates[version]; + if (!date) { // No expiration date, is active version return false; } + var expired = new Date() > date; return expired; } @@ -77044,6 +78128,8 @@ var StandardFile = exports.StandardFile = function () { return StandardFile; }(); +exports.StandardFile = StandardFile; + if (globalScope) { // window is for some reason defined in React Native, but throws an exception when you try to set to it try { diff --git a/dist/javascripts/compiled.min.js b/dist/javascripts/compiled.min.js index a8bd00f72..e21168701 100644 --- a/dist/javascripts/compiled.min.js +++ b/dist/javascripts/compiled.min.js @@ -1 +1 @@ -!function(e){"use strict";var c,t=Object.prototype,u=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",r=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag",o="object"==typeof module,s=e.regeneratorRuntime;if(s)o&&(module.exports=s);else{(s=e.regeneratorRuntime=o?module.exports:{}).wrap=k;var l="suspendedStart",d="suspendedYield",f="executing",p="completed",h={},m={};m[i]=function(){return this};var v=Object.getPrototypeOf,g=v&&v(v(D([])));g&&g!==t&&u.call(g,i)&&(m=g);var y=S.prototype=w.prototype=Object.create(m);x.prototype=y.constructor=S,S.constructor=x,S[a]=x.displayName="GeneratorFunction",s.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===x||"GeneratorFunction"===(t.displayName||t.name))},s.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,a in e||(e[a]="GeneratorFunction")),e.prototype=Object.create(y),e},s.awrap=function(e){return{__await:e}},$(_.prototype),_.prototype[r]=function(){return this},s.AsyncIterator=_,s.async=function(e,t,n,r){var i=new _(k(e,t,n,r));return s.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},$(y),y[a]="Generator",y[i]=function(){return this},y.toString=function(){return"[object Generator]"},s.keys=function(n){var r=[];for(var e in n)r.push(e);return r.reverse(),function e(){for(;r.length;){var t=r.pop();if(t in n)return e.value=t,e.done=!1,e}return e.done=!0,e}},s.values=D,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=c,this.done=!1,this.delegate=null,this.method="next",this.arg=c,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&u.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=c)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function e(e,t){return a.type="throw",a.arg=n,r.next=e,t&&(r.method="next",r.arg=c),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],a=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var o=u.call(i,"catchLoc"),s=u.call(i,"finallyLoc");if(o&&s){if(this.prev>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},o=i.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},u=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,a=r/(4*i);if(e=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*i,r=s.min(4*e,r),e){for(var o=0;o>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,a=0;a>>6-a%4*2;r[i>>>2]|=(o|s)<<24-i%4*8,i++}return c.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(a){function S(e,t,n,r,i,a,o){return((e=e+(t&n|~t&r)+i+o)<>>32-a)+t}function $(e,t,n,r,i,a,o){return((e=e+(t&r|n&~r)+i+o)<>>32-a)+t}function _(e,t,n,r,i,a,o){return((e=e+(t^n^r)+i+o)<>>32-a)+t}function M(e,t,n,r,i,a,o){return((e=e+(n^(t|~r))+i+o)<>>32-a)+t}for(var e=C,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,I=[],i=0;i<64;i++)I[i]=4294967296*a.abs(a.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[o=t+n];e[o]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,a,o=e[t+0],s=(r=e[t+1],e[t+2]),c=e[t+3],u=e[t+4],l=e[t+5],d=e[t+6],f=e[t+7],p=e[t+8],h=e[t+9],m=e[t+10],v=e[t+11],g=e[t+12],y=e[t+13],k=e[t+14],b=e[t+15],w=n[0],x=M(x=M(x=M(x=M(x=_(x=_(x=_(x=_(x=$(x=$(x=$(x=$(x=S(x=S(x=S(x=S(x=n[1],a=S(a=n[2],i=S(i=n[3],w=S(w,x,a,i,o,7,I[0]),x,a,r,12,I[1]),w,x,s,17,I[2]),i,w,c,22,I[3]),a=S(a,i=S(i,w=S(w,x,a,i,u,7,I[4]),x,a,l,12,I[5]),w,x,d,17,I[6]),i,w,f,22,I[7]),a=S(a,i=S(i,w=S(w,x,a,i,p,7,I[8]),x,a,h,12,I[9]),w,x,m,17,I[10]),i,w,v,22,I[11]),a=S(a,i=S(i,w=S(w,x,a,i,g,7,I[12]),x,a,y,12,I[13]),w,x,k,17,I[14]),i,w,b,22,I[15]),a=$(a,i=$(i,w=$(w,x,a,i,r,5,I[16]),x,a,d,9,I[17]),w,x,v,14,I[18]),i,w,o,20,I[19]),a=$(a,i=$(i,w=$(w,x,a,i,l,5,I[20]),x,a,m,9,I[21]),w,x,b,14,I[22]),i,w,u,20,I[23]),a=$(a,i=$(i,w=$(w,x,a,i,h,5,I[24]),x,a,k,9,I[25]),w,x,c,14,I[26]),i,w,p,20,I[27]),a=$(a,i=$(i,w=$(w,x,a,i,y,5,I[28]),x,a,s,9,I[29]),w,x,f,14,I[30]),i,w,g,20,I[31]),a=_(a,i=_(i,w=_(w,x,a,i,l,4,I[32]),x,a,p,11,I[33]),w,x,v,16,I[34]),i,w,k,23,I[35]),a=_(a,i=_(i,w=_(w,x,a,i,r,4,I[36]),x,a,u,11,I[37]),w,x,f,16,I[38]),i,w,m,23,I[39]),a=_(a,i=_(i,w=_(w,x,a,i,y,4,I[40]),x,a,o,11,I[41]),w,x,c,16,I[42]),i,w,d,23,I[43]),a=_(a,i=_(i,w=_(w,x,a,i,h,4,I[44]),x,a,g,11,I[45]),w,x,b,16,I[46]),i,w,s,23,I[47]),a=M(a,i=M(i,w=M(w,x,a,i,o,6,I[48]),x,a,f,10,I[49]),w,x,k,15,I[50]),i,w,l,21,I[51]),a=M(a,i=M(i,w=M(w,x,a,i,g,6,I[52]),x,a,c,10,I[53]),w,x,m,15,I[54]),i,w,r,21,I[55]),a=M(a,i=M(i,w=M(w,x,a,i,p,6,I[56]),x,a,b,10,I[57]),w,x,d,15,I[58]),i,w,y,21,I[59]),a=M(a,i=M(i,w=M(w,x,a,i,u,6,I[60]),x,a,v,10,I[61]),w,x,s,15,I[62]),i,w,h,21,I[63]);n[0]=n[0]+w|0,n[1]=n[1]+x|0,n[2]=n[2]+a|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=a.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),i=(n=(r=C).lib).Base,u=n.WordArray,a=(n=r.algo).EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:n.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(o=this.cfg).hasher.create(),r=u.create(),i=r.words,a=o.keySize,o=o.iterations;i.length>>2]}},e.BlockCipher=a.extend({cfg:a.cfg.extend({mode:c,padding:u}),reset:function(){a.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var l=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),d=(c=(f.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(e)).words;if(1398893684==t[0]&&1701076831==t[1]){var n=o.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return l.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:c}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,l.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}})),f=(f.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||o.random(8),e=i.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,l.create({key:e,iv:n,salt:r})}},p=e.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:f}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=d.encrypt.call(this,e,t,n.key,r)).mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,d.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=C,t=e.lib.BlockCipher,n=e.algo,o=[],r=[],i=[],a=[],s=[],c=[],u=[],l=[],d=[],f=[],p=[],h=0;h<256;h++)p[h]=h<128?h<<1:h<<1^283;var m=0,v=0;for(h=0;h<256;h++){var g=(g=v^v<<1^v<<2^v<<3^v<<4)>>>8^255&g^99;o[m]=g;var y=p[r[g]=m],k=p[y],b=p[k],w=257*p[g]^16843008*g;i[m]=w<<24|w>>>8,a[m]=w<<16|w>>>16,s[m]=w<<8|w>>>24,c[m]=w,w=16843009*b^65537*k^257*y^16843008*m,u[g]=w<<24|w>>>8,l[g]=w<<16|w>>>16,d[g]=w<<8|w>>>24,f[g]=w,m?(m=y^p[p[p[b^y]]],v^=p[p[v]]):m=v=1}var x=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|o[a>>>16&255]<<16|o[a>>>8&255]<<8|o[255&a]):(a=o[(a=a<<8|a>>>24)>>>24]<<24|o[a>>>16&255]<<16|o[a>>>8&255]<<8|o[255&a],a^=x[i/t|0]<<24),r[i]=r[i-t]^a}for(e=this._invKeySchedule=[],t=0;t>>24]]^l[o[a>>>16&255]]^d[o[a>>>8&255]]^f[o[255&a]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,a,s,c,o)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,l,d,f,r),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,a,o,s){for(var c=this._nRounds,u=e[t]^n[0],l=e[t+1]^n[1],d=e[t+2]^n[2],f=e[t+3]^n[3],p=4,h=1;h>>24]^i[l>>>16&255]^a[d>>>8&255]^o[255&f]^n[p++],v=r[l>>>24]^i[d>>>16&255]^a[f>>>8&255]^o[255&u]^n[p++],g=r[d>>>24]^i[f>>>16&255]^a[u>>>8&255]^o[255&l]^n[p++];f=r[f>>>24]^i[u>>>16&255]^a[l>>>8&255]^o[255&d]^n[p++],u=m,l=v,d=g}m=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[d>>>8&255]<<8|s[255&f])^n[p++],v=(s[l>>>24]<<24|s[d>>>16&255]<<16|s[f>>>8&255]<<8|s[255&u])^n[p++],g=(s[d>>>24]<<24|s[f>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^n[p++],f=(s[f>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&d])^n[p++],e[t]=m,e[t+1]=v,e[t+2]=g,e[t+3]=f},keySize:8});e.AES=t._createHelper(n)}();var o,l;C=C||function(s){function n(){}var e={},t=e.lib={},r=t.Base={extend:function(e){n.prototype=this;var t=new n;return e&&t.mixIn(e),t.hasOwnProperty("init")||(t.init=function(){t.$super.init.apply(this,arguments)}),(t.init.prototype=t).$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=t.WordArray=r.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||a).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes;if(e=e.sigBytes,this.clamp(),r%4)for(var i=0;i>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},o=i.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},u=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,a=r/(4*i);if(e=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*i,r=s.min(4*e,r),e){for(var o=0;o>>7)^(f<<14|f>>>18)^f>>>3)+m[d-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[d-16]}f=l+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&c^~s&u)+h[d]+m[d],p=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&a^i&a),l=u,u=c,c=s,s=o+f|0,o=a,a=i,i=r,r=f+p|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+u|0,n[7]=n[7]+l|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=r._createHelper(a),t.HmacSHA256=r._createHmacHelper(a)}(Math),l=(o=C).enc.Utf8,o.algo.HMAC=o.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=l.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),a=this._iKey=t.clone(),o=i.words,s=a.words,c=0;c>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},o=i.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},u=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,a=r/(4*i);if(e=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*i,r=s.min(4*e,r),e){for(var o=0;o>>1|(q=V.low)<<31)^(K>>>8|q<<24)^K>>>7;var q=(q>>>1|K<<31)^(q>>>8|K<<24)^(q>>>7|K<<25),W=((K=(W=ne[j-2]).high)>>>19|(J=W.low)<<13)^(K<<3|J>>>29)^K>>>6,J=(J>>>19|K<<13)^(J<<3|K>>>29)^(J>>>6|K<<26),G=(K=ne[j-7]).high,Y=(X=ne[j-16]).high,X=X.low;V=(V=(V=V+G+((K=q+K.low)>>>0>>0?1:0))+W+((K=K+J)>>>0>>0?1:0))+Y+((K=K+X)>>>0>>0?1:0);z.high=V,z.low=K}G=O&F^~O&L,X=T&N^~T&B,z=M&C^M&D^C&D;var Z=I&A^I&R^A&R,Q=(q=(M>>>28|I<<4)^(M<<30|I>>>2)^(M<<25|I>>>7),W=(I>>>28|M<<4)^(I<<30|M>>>2)^(I<<25|M>>>7),(J=te[j]).high),ee=J.low;Y=H+((O>>>14|T<<18)^(O>>>18|T<<14)^(O<<23|T>>>9))+((J=U+((T>>>14|O<<18)^(T>>>18|O<<14)^(T<<23|O>>>9)))>>>0>>0?1:0),H=L,U=B,L=F,B=N,F=O,N=T,O=E+(Y=(Y=(Y=Y+G+((J=J+X)>>>0>>0?1:0))+Q+((J=J+ee)>>>0>>0?1:0))+V+((J=J+K)>>>0>>0?1:0))+((T=P+J|0)>>>0

>>0?1:0)|0,E=D,P=R,D=C,R=A,C=M,A=I,M=Y+(z=q+z+((K=W+Z)>>>0>>0?1:0))+((I=J+K|0)>>>0>>0?1:0)|0}d=n.low=d+I,n.high=l+M+(d>>>0>>0?1:0),p=r.low=p+A,r.high=f+C+(p>>>0>>0?1:0),m=i.low=m+R,i.high=h+D+(m>>>0>>0?1:0),g=a.low=g+P,a.high=v+E+(g>>>0

>>0?1:0),k=o.low=k+T,o.high=y+O+(k>>>0>>0?1:0),w=s.low=w+N,s.high=b+F+(w>>>0>>0?1:0),S=c.low=S+B,c.high=x+L+(S>>>0>>0?1:0),_=u.low=_+U,u.high=$+H+(_>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(128+r>>>10<<5)]=Math.floor(n/4294967296),t[31+(128+r>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=n._createHelper(a),t.HmacSHA512=n._createHmacHelper(a)}(),m=(h=C).enc.Utf8,h.algo.HMAC=h.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=m.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),a=this._iKey=t.clone(),o=i.words,s=a.words,c=0;c>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},o=i.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},u=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,a=r/(4*i);if(e=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*i,r=s.min(4*e,r),e){for(var o=0;o>>31}u=(r<<5|r>>>27)+s+k[c],u=c<20?u+(1518500249+(i&a|~i&o)):c<40?u+(1859775393+(i^a^o)):c<60?u+((i&a|i&o|a&o)-1894007588):u+((i^a^o)-899497514),s=o,o=a,a=i<<30|i>>>2,i=r,r=u}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=Math.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=y.clone.call(this);return e._hash=this._hash.clone(),e}}),v.SHA1=y._createHelper(b),v.HmacSHA1=y._createHmacHelper(b),x=(w=C).enc.Utf8,w.algo.HMAC=w.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=x.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),a=this._iKey=t.clone(),o=i.words,s=a.words,c=0;c>>2]|=(n[i>>>2]>>>24-i%4*8&255)<<24-(r+i)%4*8;else if(65535>>2]=n[i>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=s.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-r%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},o=i.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},u=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,a=r/(4*i);if(e=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*i,r=s.min(4*e,r),e){for(var o=0;o>>31}u=(r<<5|r>>>27)+s+O[c],u=c<20?u+(1518500249+(i&a|~i&o)):c<40?u+(1859775393+(i^a^o)):c<60?u+((i&a|i&o|a&o)-1894007588):u+((i^a^o)-899497514),s=o,o=a,a=i<<30|i>>>2,i=r,r=u}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=Math.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=P.clone.call(this);return e._hash=this._hash.clone(),e}}),R.SHA1=P._createHelper(T),R.HmacSHA1=P._createHmacHelper(T),Object.defineProperty(ur,"__esModule",{value:!0});var z=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},N=function(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),e};function L(e,t){for(var n=0;nnew Date)return e.abrupt("return",!1);e.next=5;break;case 5:return e.next=7,this.netCredentialsForAction(t);case 7:return n=e.sent,e.abrupt("return",0=this.MaxDiscordanceBeforeOutOfSync&&(this.outOfSync||(this.outOfSync=!0,this.notifyEvent("enter-out-of-sync"))),e.abrupt("return",!1);e.next=13;break;case 13:return this.outOfSync&&(this.outOfSync=!1,this.notifyEvent("exit-out-of-sync")),this.syncDiscordance=0,e.abrupt("return",!0);case 16:case"end":return e.stop()}},e,this)})),function(e){return Wt.apply(this,arguments)})},{key:"isOutOfSync",value:function(){return this.outOfSync}},{key:"getServerURL",value:(qt=U(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.storageManager.getItem("server");case 2:if(e.t0=e.sent,e.t0){e.next=5;break}e.t0=window._default_sf_server;case 5:return e.abrupt("return",e.t0);case 6:case"end":return e.stop()}},e,this)})),function(){return qt.apply(this,arguments)})},{key:"getSyncURL",value:(Kt=U(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getServerURL();case 2:return e.t0=e.sent,e.abrupt("return",e.t0+"/items/sync");case 4:case"end":return e.stop()}},e,this)})),function(){return Kt.apply(this,arguments)})},{key:"registerSyncStatusObserver",value:function(e){var t={key:new Date,callback:e};return this.syncStatusObservers.push(t),t}},{key:"removeSyncStatusObserver",value:function(e){_.pull(this.syncStatusObservers,e)}},{key:"syncStatusDidChange",value:function(){var t=this;this.syncStatusObservers.forEach(function(e){e.callback(t.syncStatus)})}},{key:"addEventHandler",value:function(e){return this.eventHandlers.push(e),e}},{key:"removeEventHandler",value:function(e){_.pull(this.eventHandlers,e)}},{key:"notifyEvent",value:function(e,t){var n=!0,r=!1,i=void 0;try{for(var a,o=this.eventHandlers[Symbol.iterator]();!(n=(a=o.next()).done);n=!0)(0,a.value)(e,t||{})}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}}},{key:"setKeyRequestHandler",value:function(e){this.keyRequestHandler=e}},{key:"getActiveKeyInfo",value:(Vt=U(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.keyRequestHandler(t));case 1:case"end":return e.stop()}},e,this)})),function(e){return Vt.apply(this,arguments)})},{key:"initialDataLoaded",value:function(){return!0===this._initialDataLoaded}},{key:"_sortLocalItems",value:function(e){var o=this;return e.sort(function(e,t){var n=new Date(t.updated_at)-new Date(e.updated_at),r=o.contentTypeLoadPriority,i=0,a=0;return r&&(i=r.indexOf(e.content_type),a=r.indexOf(t.content_type),-1==i&&(i=r.length),-1==a&&(a=r.length)),i==a?n:it.dirtiedDate})).length,a=0,o=[],s=(e=U(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.slice(a,a+l),e.next=3,c.handleItemsResponse(t,null,Ne.MappingSourceLocalRetrieved,Yt.KeyRequestLoadLocal);case 3:if(n=e.sent,o.push(n),(a+=t.length)g.lastDirtyItemsSave}),e.next=5,g.getActiveKeyInfo(Yt.KeyRequestLoadSaveAccount);case 5:if(a=e.sent,o=g.syncStatus.syncOpInProgress,s=g.initialDataLoaded(),o||!s)return g.performSyncAgainOnCompletion=!0,g.lastDirtyItemsSave=new Date,e.next=13,g.writeItemsToLocalStorage(i,!1);e.next=16;break;case 13:return o&&(g.queuedCallbacks.push(n),g.loggingEnabled&&console.warn("Attempting to sync while existing sync is in progress.")),s||(g.loggingEnabled&&console.warn("(1) Attempting to perform online sync before local data has loaded"),n()),e.abrupt("return");case 16:if(g.syncStatus.syncOpInProgress=!0,a.offline)return e.abrupt("return",g.syncOffline(r).then(function(e){g.syncStatus.syncOpInProgress=!1,n(e)}).catch(function(e){g.notifyEvent("sync-exception",e)}));e.next=19;break;case 19:if(g.initialDataLoaded()){e.next=22;break}return console.error("Attempting to perform online sync before local data has loaded"),e.abrupt("return");case 22:return g.loggingEnabled&&console.log("Syncing online user."),c=g.syncStatus.needsMoreSync,g.syncStatus.syncStart=new Date,g.beginCheckingIfSyncIsTakingTooLong(),u=g.PerSyncItemUploadLimit,(l=r.slice(0,u)).lengthg.syncStatus.total&&(g.syncStatus.total=g.syncStatus.current),g.syncStatusDidChange(),e.next=34,g.writeItemsToLocalStorage(i,!1);case 34:return g.lastDirtyItemsSave=new Date,y.onPreSyncSave&&y.onPreSyncSave(),g.allRetreivedItems||(g.allRetreivedItems=[]),g.allSavedItems||(g.allSavedItems=[]),(d={}).limit=g.ServerItemDownloadLimit,y.performIntegrityCheck&&(d.compute_integrity=!0),e.prev=41,e.next=44,Promise.all(l.map(function(e){var t=new on(e,a.keys,a.auth_params);return t.additionalFields=y.additionalFields,t.paramsForSync()})).then(function(e){d.items=e});case 44:e.next=49;break;case 46:e.prev=46,e.t0=e.catch(41),g.notifyEvent("sync-exception",e.t0);case 49:for(p=!(f=!0),h=void 0,e.prev=52,m=l[Symbol.iterator]();!(f=(v=m.next()).done);f=!0)v.value.dirtyCount=0;e.next=60;break;case 56:e.prev=56,e.t1=e.catch(52),p=!0,h=e.t1;case 60:e.prev=60,e.prev=61,!f&&m.return&&m.return();case 63:if(e.prev=63,p)throw h;e.next=66;break;case 66:return e.finish(63);case 67:return e.finish(60);case 68:return e.next=70,g.getSyncToken();case 70:return d.sync_token=e.sent,e.next=73,g.getCursorToken();case 73:return d.cursor_token=e.sent,d.api=pe.getApiVersion(),e.prev=75,e.t2=g.httpManager,e.next=79,g.getSyncURL();case 79:e.t3=e.sent,e.t4=d,e.t5=function(e){g.handleSyncSuccess(l,e,y).then(function(){n(e)}).catch(function(t){console.log("Caught sync success exception:",t),g.handleSyncError(t,null,r).then(function(e){g.notifyEvent("sync-exception",t),n(e)})})},e.t6=function(e,t){g.handleSyncError(e,t,r).then(function(e){n(e)})},e.t2.postAuthenticatedAbsolute.call(e.t2,e.t3,e.t4,e.t5,e.t6),e.next=89;break;case 86:e.prev=86,e.t7=e.catch(75),console.log("Sync exception caught:",e.t7);case 89:case"end":return e.stop()}},e,g,[[41,46],[52,56,60,68],[61,,63,67],[75,86]])}));return function(e,t){return n.apply(this,arguments)}}()));case 4:case"end":return e.stop()}},e,this)})),function(){return Tt.apply(this,arguments)})},{key:"_awaitSleep",value:(Ot=U(regeneratorRuntime.mark(function e(n){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.warn("Simulating high latency sync request",n),e.abrupt("return",new Promise(function(e,t){setTimeout(function(){e()},n)}));case 2:case"end":return e.stop()}},e,this)})),function(e){return Ot.apply(this,arguments)})},{key:"handleSyncSuccess",value:(Pt=U(regeneratorRuntime.mark(function e(t,n,r){var i,a,o,s,c,u,l,d,f,p,h,m,v,g,y,k,b=this;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r.simulateHighLatency)return i=r.simulatedLatency||1e3,e.next=4,this._awaitSleep(i);e.next=4;break;case 4:for(this.syncStatus.error=null,this.loggingEnabled&&console.log("Sync response",n),a=this.allSavedItems.map(function(e){return e.uuid}),o=n.saved_items.map(function(e){return e.uuid}),n.retrieved_items=n.retrieved_items.filter(function(e){var t=a.includes(e.uuid),n=o.includes(e.uuid);if(t||n)return!1;var r=b.modelManager.findItem(e.uuid);return!r||!r.dirty}),s=[],u=!(c=!0),l=void 0,e.prev=13,d=t[Symbol.iterator]();!(c=(f=d.next()).done);c=!0)0==(p=f.value).dirtyCount&&s.push(p);e.next=21;break;case 17:e.prev=17,e.t0=e.catch(13),u=!0,l=e.t0;case 21:e.prev=21,e.prev=22,!c&&d.return&&d.return();case 24:if(e.prev=24,u)throw l;e.next=27;break;case 27:return e.finish(24);case 28:return e.finish(21);case 29:return this.modelManager.clearDirtyItems(s),e.next=32,this.handleItemsResponse(n.retrieved_items,null,Ne.MappingSourceRemoteRetrieved,Yt.KeyRequestLoadSaveAccount);case 32:return h=e.sent,this.allRetreivedItems=this.allRetreivedItems.concat(h),this.syncStatus.retrievedCount=this.allRetreivedItems.length,m=["content","auth_hash"],e.next=38,this.handleItemsResponse(n.saved_items,m,Ne.MappingSourceRemoteSaved,Yt.KeyRequestLoadSaveAccount);case 38:return v=e.sent,this.allSavedItems=this.allSavedItems.concat(v),g=n.unsaved,e.next=43,this.deprecated_handleUnsavedItemsResponse(g);case 43:return e.next=45,this.handleConflictsResponse(n.conflicts);case 45:if(y=e.sent,k=y&&0=this.majorDataChangeThreshold||v.length>=this.majorDataChangeThreshold||g&&g.length>=this.majorDataChangeThreshold||y&&y.length>=this.majorDataChangeThreshold)&&this.notifyEvent("major-data-change"),this.callQueuedCallbacks(n),this.notifyEvent("sync:completed",{retrievedItems:this.allRetreivedItems,savedItems:this.allSavedItems}),this.allRetreivedItems=[],this.allSavedItems=[],this.performSyncAgainOnCompletion&&(this.performSyncAgainOnCompletion=!1,setTimeout(function(){b.sync(r)},10)),e.abrupt("return",n);case 88:case"end":return e.stop()}},e,this,[[13,17,21,29],[22,,24,28]])})),function(e,t,n){return Pt.apply(this,arguments)})},{key:"handleSyncError",value:(Et=U(regeneratorRuntime.mark(function e(t,n,r){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Sync error: ",t),401==n&&this.notifyEvent("sync-session-invalid"),t?"string"==typeof t&&(t={error:{message:t}}):t={error:{message:"Could not connect to server."}},this.syncStatus.syncOpInProgress=!1,this.syncStatus.error=t.error,this.syncStatusDidChange(),this.writeItemsToLocalStorage(r,!1),this.modelManager.didSyncModelsOffline(r),this.stopCheckingIfSyncIsTakingTooLong(),this.notifyEvent("sync:error",t.error),this.callQueuedCallbacks({error:"Sync error"}),e.abrupt("return",t);case 12:case"end":return e.stop()}},e,this)})),function(e,t,n){return Et.apply(this,arguments)})},{key:"handleItemsResponse",value:(Rt=U(regeneratorRuntime.mark(function e(t,n,r,i){var a,o,s;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getActiveKeyInfo(i);case 2:return a=e.sent.keys,e.next=5,SFJS.itemTransformer.decryptMultipleItems(t,a);case 5:return e.next=7,this.modelManager.mapResponseItemsToLocalModelsOmittingFields(t,n,r);case 7:return o=e.sent,0<(s=o.filter(function(e){var t=e.errorDecryptingValueChanged;return e.errorDecryptingValueChanged=!1,t})).length&&this.writeItemsToLocalStorage(s,!1),e.abrupt("return",o);case 11:case"end":return e.stop()}},e,this)})),function(e,t,n,r){return Rt.apply(this,arguments)})},{key:"refreshErroredItems",value:(Dt=U(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(0<(t=this.modelManager.allNondummyItems.filter(function(e){return 1==e.errorDecrypting})).length)return e.abrupt("return",this.handleItemsResponse(t,null,Ne.MappingSourceLocalRetrieved,Yt.KeyRequestLoadSaveAccount));e.next=3;break;case 3:case"end":return e.stop()}},e,this)})),function(){return Dt.apply(this,arguments)})},{key:"handleConflictsResponse",value:(At=U(regeneratorRuntime.mark(function e(t){var n,r,i,a,o,s,c,u,l,d,f,p,h,m,v,g,y,k,b,w,x,S,$,_,M,I,C,A,D;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&0!=t.length){e.next=2;break}return e.abrupt("return");case 2:this.loggingEnabled&&console.log("Handle Conflicted Items:",t),n={},i=!(r=!0),a=void 0,e.prev=7,o=t[Symbol.iterator]();case 9:if(r=(s=o.next()).done){e.next=21;break}if(c=s.value,u=c.server_item||c.unsaved_item,l=this.modelManager.findItem(u.uuid)){e.next=16;break}return n[u.uuid]={},e.abrupt("continue",18);case 16:d=l.getContentCopy(),n[u.uuid]={frozenContent:d,itemRef:l};case 18:r=!0,e.next=9;break;case 21:e.next=27;break;case 23:e.prev=23,e.t0=e.catch(7),i=!0,a=e.t0;case 27:e.prev=27,e.prev=28,!r&&o.return&&o.return();case 30:if(e.prev=30,i)throw a;e.next=33;break;case 33:return e.finish(30);case 34:return e.finish(27);case 35:f=[],h=!(p=!0),m=void 0,e.prev=39,v=t[Symbol.iterator]();case 41:if(p=(g=v.next()).done){e.next=91;break}return y=g.value,u=y.server_item||y.unsaved_item,e.t1=SFJS.itemTransformer,e.t2=[u],e.next=48,this.getActiveKeyInfo(Yt.KeyRequestLoadSaveAccount);case 48:return e.t3=e.sent.keys,e.next=51,e.t1.decryptMultipleItems.call(e.t1,e.t2,e.t3);case 51:if(k=n[u.uuid],d=k.frozenContent,b=k.itemRef){e.next=54;break}return e.abrupt("continue",88);case 54:if(f.push(b),"uuid_conflict"===y.type)return e.next=58,this.modelManager.alternateUUIDForItem(b);e.next=62;break;case 58:w=e.sent,f.push(w),e.next=88;break;case 62:if("sync_conflict"===y.type)return e.next=65,this.modelManager.createDuplicateItemFromResponseItem(u);e.next=86;break;case 65:if(x=e.sent,S=this.modelManager.duplicateItemWithCustomContent({content:d,duplicateOf:b}),$=!S.isItemContentEqualWith(x),_=!b.isItemContentEqualWith(x),A=C=I=M=!1,u.deleted||b.deleted?A=!0:$?(new Date-b.client_updated_at)/1e3<20?I=C=!0:A=M=!0:_?!Zt.AreItemContentsEqual({leftContent:b.content,rightContent:x.content,keysToIgnore:b.keysToIgnoreWhenCheckingContentEquality().concat(["references"]),appDataKeysToIgnore:b.appDataKeysToIgnoreWhenCheckingContentEquality()})?A=M=!0:C=!0:A=!0,M)return e.next=77,this.modelManager.duplicateItemWithCustomContentAndAddAsConflict({content:d,duplicateOf:b});e.next=79;break;case 77:D=e.sent,f.push(D);case 79:if(I&&(this.modelManager.addDuplicatedItemAsConflict({duplicate:x,duplicateOf:b}),f.push(x)),A)return e.next=83,this.modelManager.mapResponseItemsToLocalModelsOmittingFields([u],null,Ne.MappingSourceRemoteRetrieved);e.next=83;break;case 83:C&&(b.updated_at=x.updated_at,b.setDirty(!0)),e.next=88;break;case 86:return console.error("Unsupported conflict type",y.type),e.abrupt("continue",88);case 88:p=!0,e.next=41;break;case 91:e.next=97;break;case 93:e.prev=93,e.t4=e.catch(39),h=!0,m=e.t4;case 97:e.prev=97,e.prev=98,!p&&v.return&&v.return();case 100:if(e.prev=100,h)throw m;e.next=103;break;case 103:return e.finish(100);case 104:return e.finish(97);case 105:return e.abrupt("return",f);case 106:case"end":return e.stop()}},e,this,[[7,23,27,35],[28,,30,34],[39,93,97,105],[98,,100,104]])})),function(e){return At.apply(this,arguments)})},{key:"deprecated_handleUnsavedItemsResponse",value:(Ct=U(regeneratorRuntime.mark(function e(t){var n,r,i,a,o,s,c,u,l,d;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&0!=t.length){e.next=2;break}return e.abrupt("return");case 2:this.loggingEnabled&&console.log("Handle Unsaved Items:",t),r=!(n=!0),i=void 0,e.prev=6,a=t[Symbol.iterator]();case 8:if(n=(o=a.next()).done){e.next=35;break}return s=o.value,c=s.item,e.t0=SFJS.itemTransformer,e.t1=[c],e.next=15,this.getActiveKeyInfo(Yt.KeyRequestLoadSaveAccount);case 15:return e.t2=e.sent.keys,e.next=18,e.t0.decryptMultipleItems.call(e.t0,e.t1,e.t2);case 18:if(u=this.modelManager.findItem(c.uuid)){e.next=21;break}return e.abrupt("continue",32);case 21:if("uuid_conflict"===(l=s.error).tag)return e.next=25,this.modelManager.alternateUUIDForItem(u);e.next=27;break;case 25:e.next=32;break;case 27:if("sync_conflict"===l.tag)return e.next=30,this.modelManager.createDuplicateItemFromResponseItem(c);e.next=32;break;case 30:d=e.sent,c.deleted||u.isItemContentEqualWith(d)||this.modelManager.addDuplicatedItemAsConflict({duplicate:d,duplicateOf:u});case 32:n=!0,e.next=8;break;case 35:e.next=41;break;case 37:e.prev=37,e.t3=e.catch(6),r=!0,i=e.t3;case 41:e.prev=41,e.prev=42,!n&&a.return&&a.return();case 44:if(e.prev=44,r)throw i;e.next=47;break;case 47:return e.finish(44);case 48:return e.finish(41);case 49:case"end":return e.stop()}},e,this,[[6,37,41,49],[42,,44,48]])})),function(e){return Ct.apply(this,arguments)})},{key:"stateless_downloadAllItems",value:function(e){var n,a=this,o=0"==t.operator?p="==t.operator?p<=h:"startsWith"==t.operator?h.startsWith(p):"in"==t.operator?-1!=p.indexOf(h):"includes"==t.operator?this.resolveIncludesPredicate(h,p):"matches"==t.operator&&new RegExp(p).test(h)}},{key:"resolveIncludesPredicate",value:function(e,t){if("string"==typeof t)return e.includes(t);var n;n=Array.isArray(t)?un.fromArray(t):t;var r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var c=o.value;if(this.ObjectSatisfiesPredicate(c,n))return!0}}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}return!1}},{key:"ItemSatisfiesPredicate",value:function(e,t){return Array.isArray(t)&&(t=un.fromArray(t)),this.ObjectSatisfiesPredicate(e,t)}},{key:"ItemSatisfiesPredicates",value:function(e,t){var n=!0,r=!1,i=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value;if(!this.ItemSatisfiesPredicate(e,s))return!1}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}return!0}},{key:"DateFromString",value:function(e){var t=e.split("."),n=t[1],r=new Date,i=parseInt(t[0]);return"days"==n?r.setDate(r.getDate()-i):"hours"==n&&r.setHours(r.getHours()-i),r}},{key:"IsRecursiveOperator",value:function(e){return["and","or"].includes(e)}}]),un);function un(e,t,n){j(this,un),this.keypath=e,this.operator=t,this.value=n,un.IsRecursiveOperator(this.operator)&&(this.value=this.value.map(un.fromArray))}var ln=ur.SFPrivileges=(H(dn,Zt),N(dn,null,[{key:"contentType",value:function(){return"SN|Privileges"}}]),N(dn,[{key:"setCredentialsForAction",value:function(e,t){this.content.desktopPrivileges[e]=t}},{key:"getCredentialsForAction",value:function(e){return this.content.desktopPrivileges[e]||[]}},{key:"toggleCredentialForAction",value:function(e,t){this.isCredentialRequiredForAction(e,t)?this.removeCredentialForAction(e,t):this.addCredentialForAction(e,t)}},{key:"removeCredentialForAction",value:function(e,t){_.pull(this.content.desktopPrivileges[e],t)}},{key:"addCredentialForAction",value:function(e,t){var n=this.getCredentialsForAction(e);n.push(t),this.setCredentialsForAction(e,n)}},{key:"isCredentialRequiredForAction",value:function(e,t){return this.getCredentialsForAction(e).includes(t)}}]),dn);function dn(e){j(this,dn);var t=B(this,(dn.__proto__||Object.getPrototypeOf(dn)).call(this,e));return t.content.desktopPrivileges||(t.content.desktopPrivileges={}),t}var fn=ur.SFHistorySession=(H(pn,Zt),N(pn,[{key:"addEntryForItem",value:function(e){return this.historyForItem(e).addHistoryEntryForItem(e)}},{key:"historyForItem",value:function(e){var t=this.content.itemUUIDToItemHistoryMapping[e.uuid];return t=t||(this.content.itemUUIDToItemHistoryMapping[e.uuid]=new hn)}},{key:"clearItemHistory",value:function(e){this.historyForItem(e).clear()}},{key:"clearAllHistory",value:function(){this.content.itemUUIDToItemHistoryMapping={}}},{key:"optimizeHistoryForItem",value:function(e){var t=this.historyForItem(e);t.entries.length>pn.LargeItemEntryAmountThreshold&&t.optimize()}}]),pn);function pn(e){j(this,pn);var n=B(this,(pn.__proto__||Object.getPrototypeOf(pn)).call(this,e));return n.content.itemUUIDToItemHistoryMapping||(n.content.itemUUIDToItemHistoryMapping={}),Object.keys(n.content.itemUUIDToItemHistoryMapping).forEach(function(e){var t=n.content.itemUUIDToItemHistoryMapping[e];n.content.itemUUIDToItemHistoryMapping[e]=new hn(t)}),n}fn.LargeItemEntryAmountThreshold=60;var hn=ur.SFItemHistory=(N(mn,[{key:"createEntryForItem",value:function(e){var t=mn.HistoryEntryClassMapping&&mn.HistoryEntryClassMapping[e.content_type];return new(t=t||vn)(e)}},{key:"getLastEntry",value:function(){return this.entries[this.entries.length-1]}},{key:"addHistoryEntryForItem",value:function(e){var t=this.createEntryForItem(e),n=this.getLastEntry();if(t.setPreviousEntry(n),!t.isSameAsEntry(n))return this.entries.push(t),t}},{key:"clear",value:function(){this.entries.length=0}},{key:"optimize",value:function(){function i(e){return e.deltaSize()>mn.LargeEntryDeltaThreshold}function r(e,t,n){if(n?o.push(e):-1!==(t=o.indexOf(e))&&o.splice(t,1),n&&i(e)&&-1==e.operationVector()){var r=a.entries[t-1];r&&o.push(r)}}var a=this,o=[];this.entries.forEach(function(e,t){if(0==t||t==a.entries.length-1)r(e,t,!0);else{var n=i(e);r(e,t,n)}}),this.entries=this.entries.filter(function(e,t){return-1!==o.indexOf(e)})}}]),mn);function mn(){var e=0>3]>>r%8*4&15;return("x"==e?t:3&t|8).toString(16)})}var i=(new Date).getTime();return fe.performance&&"function"==typeof fe.performance.now&&(i+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=(i+16*Math.random())%16|0;return i=Math.floor(i/16),("x"==e?t:3&t|8).toString(16)})}},{key:"generateUUID",value:(En=U(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.generateUUIDSync());case 1:case"end":return e.stop()}},e,this)})),function(){return En.apply(this,arguments)})},{key:"decryptText",value:(Rn=U(regeneratorRuntime.mark(function e(){var t,n,r,i,a=0parseInt(t)}},{key:"isProtocolVersionOutdated",value:function(e){var t={"001":Date.parse("2018-01-01"),"002":Date.parse("2020-01-01")}[e];return!!t&&new Date>t}},{key:"costMinimumForVersion",value:function(e){return{"001":3e3,"002":3e3,"003":11e4}[e]}},{key:"defaultPasswordGenerationCost",value:function(){return this.costMinimumForVersion(this.version())}}]),cr);function cr(e){j(this,cr),fe&&(!("undefined"!=typeof document&&document.documentMode||/Edge/.test(navigator.userAgent))&&fe.crypto&&fe.crypto.subtle?this.crypto=new Qn:this.crypto=new Fn);e&&(this.crypto=e),this.itemTransformer=new ar(this.crypto),this.crypto.SFJS={version:this.version(),defaultPasswordGenerationCost:this.defaultPasswordGenerationCost()}}if(fe)try{fe.StandardFile=sr,fe.SFJS=new sr,fe.SFCryptoWeb=Qn,fe.SFCryptoJS=Fn,fe.SFItemTransformer=ar,fe.SFModelManager=Ne,fe.SFItem=Zt,fe.SFItemParams=on,fe.SFHttpManager=pe,fe.SFStorageManager=St,fe.SFSyncManager=Gt,fe.SFAuthManager=ie,fe.SFMigrationManager=Se,fe.SFAlertManager=q,fe.SFPredicate=cn,fe.SFHistorySession=fn,fe.SFSessionHistoryManager=ut,fe.SFItemHistory=hn,fe.SFItemHistoryEntry=vn,fe.SFPrivilegesManager=Xe,fe.SFPrivileges=ln,fe.SFSingletonManager=dt}catch(e){console.log("Exception while exporting window variables",e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}),function(le){"use strict";var l={objectMaxDepth:5,urlErrorParamsEnabled:!0};function e(e){if(!xe(e))return l;E(e.objectMaxDepth)&&(l.objectMaxDepth=r(e.objectMaxDepth)?e.objectMaxDepth:NaN),E(e.urlErrorParamsEnabled)&&Ce(e.urlErrorParamsEnabled)&&(l.urlErrorParamsEnabled=e.urlErrorParamsEnabled)}function r(e){return x(e)&&0").append(e).html();try{return e[0].nodeType===je?he(t):t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(e,t){return"<"+he(t)})}catch(e){return he(t)}}function G(e){try{return decodeURIComponent(e)}catch(e){}}function Y(e){var i={};return ve((e||"").split("&"),function(e){var t,n,r;e&&(n=e=e.replace(/\+/g,"%20"),-1!==(t=e.indexOf("="))&&(n=e.substring(0,t),r=e.substring(t+1)),E(n=G(n))&&(r=!E(r)||G(r),pe.call(i,n)?$e(i[n])?i[n].push(r):i[n]=[i[n],r]:i[n]=r))}),i}function X(e){return Z(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Z(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}var Q=["ng-","data-ng-","ng:","x-ng-"];var ee=function(n){var e=n.currentScript;if(!e)return!0;if(!(e instanceof le.HTMLScriptElement||e instanceof le.SVGScriptElement))return!1;var t=e.attributes;return[t.getNamedItem("src"),t.getNamedItem("href"),t.getNamedItem("xlink:href")].every(function(e){if(!e)return!0;if(!e.value)return!1;var t=n.createElement("a");if(t.href=e.value,n.location.origin===t.origin)return!0;switch(t.protocol){case"http:":case"https:":case"ftp:":case"blob:":case"file:":case"data:":return!0;default:return!1}})}(le.document);function te(r,e){var i,a,t={};if(ve(Q,function(e){var t=e+"app";!i&&r.hasAttribute&&r.hasAttribute(t)&&(a=(i=r).getAttribute(t))}),ve(Q,function(e){var t,n=e+"app";!i&&(t=r.querySelector("["+n.replace(":","\\:")+"]"))&&(a=(i=t).getAttribute(n))}),i){if(!ee)return void le.console.error("AngularJS: disabling automatic bootstrap.