react-native-onyx 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web.development.js +85 -49
- package/dist/web.development.js.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/lib/Onyx.js +5 -3
- package/lib/OnyxCache.js +4 -2
- package/lib/fastMerge.js +66 -0
- package/lib/storage/providers/LocalForage.js +5 -2
- package/package.json +1 -1
- package/lib/mergeWithCustomized.js +0 -26
package/dist/web.development.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
2
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
-
module.exports = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/get"), require("localforage"), require("
|
|
3
|
+
module.exports = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/get"), require("localforage"), require("react"));
|
|
4
4
|
else if(typeof define === 'function' && define.amd)
|
|
5
|
-
define(["underscore", "expensify-common/lib/str", "lodash/get", "localforage", "
|
|
5
|
+
define(["underscore", "expensify-common/lib/str", "lodash/get", "localforage", "react"], factory);
|
|
6
6
|
else if(typeof exports === 'object')
|
|
7
|
-
exports["react-native-onyx/web"] = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/get"), require("localforage"), require("
|
|
7
|
+
exports["react-native-onyx/web"] = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/get"), require("localforage"), require("react"));
|
|
8
8
|
else
|
|
9
|
-
root["react-native-onyx/web"] = factory(root["underscore"], root["expensify-common/lib/str"], root["lodash/get"], root["localforage"], root["
|
|
10
|
-
})(self, (__WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_expensify_common_lib_str__, __WEBPACK_EXTERNAL_MODULE_lodash_get__, __WEBPACK_EXTERNAL_MODULE_localforage__,
|
|
9
|
+
root["react-native-onyx/web"] = factory(root["underscore"], root["expensify-common/lib/str"], root["lodash/get"], root["localforage"], root["react"]);
|
|
10
|
+
})(self, (__WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_expensify_common_lib_str__, __WEBPACK_EXTERNAL_MODULE_lodash_get__, __WEBPACK_EXTERNAL_MODULE_localforage__, __WEBPACK_EXTERNAL_MODULE_react__) => {
|
|
11
11
|
return /******/ (() => { // webpackBootstrap
|
|
12
12
|
/******/ var __webpack_modules__ = ({
|
|
13
13
|
|
|
@@ -497,7 +497,7 @@ var _storage = _interopRequireDefault(__webpack_require__(/*! ./storage */ "./li
|
|
|
497
497
|
var Logger = _interopRequireWildcard(__webpack_require__(/*! ./Logger */ "./lib/Logger.js"));
|
|
498
498
|
var _OnyxCache = _interopRequireDefault(__webpack_require__(/*! ./OnyxCache */ "./lib/OnyxCache.js"));
|
|
499
499
|
var _createDeferredTask = _interopRequireDefault(__webpack_require__(/*! ./createDeferredTask */ "./lib/createDeferredTask.js"));
|
|
500
|
-
var
|
|
500
|
+
var _fastMerge = _interopRequireDefault(__webpack_require__(/*! ./fastMerge */ "./lib/fastMerge.js"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;} /* eslint-disable no-continue */
|
|
501
501
|
|
|
502
502
|
// Keeps track of the last connectionID that was used so we can keep incrementing it
|
|
503
503
|
var lastConnectionID = 0;
|
|
@@ -1252,7 +1252,9 @@ function applyMerge(key, data) {
|
|
|
1252
1252
|
if (_underscore.default.isObject(data) || _underscore.default.every(mergeValues, _underscore.default.isObject)) {
|
|
1253
1253
|
// Object values are merged one after the other
|
|
1254
1254
|
return _underscore.default.reduce(mergeValues, function (modifiedData, mergeValue) {
|
|
1255
|
-
|
|
1255
|
+
// lodash adds a small overhead so we don't use it here
|
|
1256
|
+
// eslint-disable-next-line prefer-object-spread, rulesdir/prefer-underscore-method
|
|
1257
|
+
var newData = (0, _extends3.default)({}, (0, _fastMerge.default)(modifiedData, mergeValue));
|
|
1256
1258
|
|
|
1257
1259
|
// We will also delete any object keys that are undefined or null.
|
|
1258
1260
|
// Deleting keys is not supported by AsyncStorage so we do it this way.
|
|
@@ -1323,7 +1325,7 @@ function initializeWithDefaultKeyStates() {
|
|
|
1323
1325
|
then(function (pairs) {
|
|
1324
1326
|
var asObject = _underscore.default.object(pairs);
|
|
1325
1327
|
|
|
1326
|
-
var merged = (0,
|
|
1328
|
+
var merged = (0, _fastMerge.default)(asObject, defaultKeyStates);
|
|
1327
1329
|
_OnyxCache.default.merge(merged);
|
|
1328
1330
|
_underscore.default.each(merged, function (val, key) {return keyChanged(key, val);});
|
|
1329
1331
|
});
|
|
@@ -1592,8 +1594,8 @@ Onyx;exports["default"] = _default;
|
|
|
1592
1594
|
\**************************/
|
|
1593
1595
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1594
1596
|
|
|
1595
|
-
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js");Object.defineProperty(exports, "__esModule", ({ value: true }));exports["default"] = void 0;var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js"));var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"));var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"));var _underscore = _interopRequireDefault(__webpack_require__(/*! underscore */ "underscore"));
|
|
1596
|
-
var
|
|
1597
|
+
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js");Object.defineProperty(exports, "__esModule", ({ value: true }));exports["default"] = void 0;var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js"));var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"));var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"));var _underscore = _interopRequireDefault(__webpack_require__(/*! underscore */ "underscore"));
|
|
1598
|
+
var _fastMerge = _interopRequireDefault(__webpack_require__(/*! ./fastMerge */ "./lib/fastMerge.js"));
|
|
1597
1599
|
|
|
1598
1600
|
var isDefined = _underscore.default.negate(_underscore.default.isUndefined);
|
|
1599
1601
|
|
|
@@ -1704,7 +1706,9 @@ OnyxCache = /*#__PURE__*/function () {
|
|
|
1704
1706
|
* @param {Record<string, *>} data - a map of (cache) key - values
|
|
1705
1707
|
*/ }, { key: "merge", value: function merge(
|
|
1706
1708
|
data) {var _this = this;
|
|
1707
|
-
|
|
1709
|
+
// lodash adds a small overhead so we don't use it here
|
|
1710
|
+
// eslint-disable-next-line prefer-object-spread, rulesdir/prefer-underscore-method
|
|
1711
|
+
this.storageMap = (0, _extends2.default)({}, (0, _fastMerge.default)(this.storageMap, data));
|
|
1708
1712
|
|
|
1709
1713
|
var storageKeys = this.getAllKeys();
|
|
1710
1714
|
var mergedKeys = _underscore.default.keys(data);
|
|
@@ -1875,38 +1879,78 @@ function createDeferredTask() {
|
|
|
1875
1879
|
|
|
1876
1880
|
/***/ }),
|
|
1877
1881
|
|
|
1878
|
-
/***/ "./lib/
|
|
1879
|
-
|
|
1880
|
-
!*** ./lib/
|
|
1881
|
-
|
|
1882
|
-
/***/ ((__unused_webpack_module, exports
|
|
1882
|
+
/***/ "./lib/fastMerge.js":
|
|
1883
|
+
/*!**************************!*\
|
|
1884
|
+
!*** ./lib/fastMerge.js ***!
|
|
1885
|
+
\**************************/
|
|
1886
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
1883
1887
|
|
|
1884
|
-
|
|
1888
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));exports["default"] = void 0; // Mostly copied from https://medium.com/@lubaka.a/how-to-remove-lodash-performance-improvement-b306669ad0e1
|
|
1885
1889
|
|
|
1886
1890
|
/**
|
|
1887
|
-
*
|
|
1888
|
-
*
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1891
|
+
* @param {mixed} val
|
|
1892
|
+
* @returns {boolean}
|
|
1893
|
+
*/
|
|
1894
|
+
function isMergeableObject(val) {
|
|
1895
|
+
var nonNullObject = val != null ? typeof val === 'object' : false;
|
|
1896
|
+
return nonNullObject &&
|
|
1897
|
+
Object.prototype.toString.call(val) !== '[object RegExp]' &&
|
|
1898
|
+
Object.prototype.toString.call(val) !== '[object Date]';
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
/**
|
|
1902
|
+
* @param {Object} target
|
|
1903
|
+
* @param {Object} source
|
|
1904
|
+
* @returns {Object}
|
|
1905
|
+
*/
|
|
1906
|
+
function mergeObject(target, source) {
|
|
1907
|
+
var destination = {};
|
|
1908
|
+
if (isMergeableObject(target)) {
|
|
1909
|
+
// lodash adds a small overhead so we don't use it here
|
|
1910
|
+
// eslint-disable-next-line rulesdir/prefer-underscore-method
|
|
1911
|
+
var targetKeys = Object.keys(target);
|
|
1912
|
+
for (var i = 0; i < targetKeys.length; ++i) {
|
|
1913
|
+
var key = targetKeys[i];
|
|
1914
|
+
destination[key] = target[key];
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
// lodash adds a small overhead so we don't use it here
|
|
1899
1919
|
// eslint-disable-next-line rulesdir/prefer-underscore-method
|
|
1900
|
-
|
|
1901
|
-
|
|
1920
|
+
var sourceKeys = Object.keys(source);
|
|
1921
|
+
for (var _i = 0; _i < sourceKeys.length; ++_i) {
|
|
1922
|
+
var _key = sourceKeys[_i];
|
|
1923
|
+
if (source[_key] === undefined) {
|
|
1924
|
+
// eslint-disable-next-line no-continue
|
|
1925
|
+
continue;
|
|
1926
|
+
}
|
|
1927
|
+
if (!isMergeableObject(source[_key]) || !target[_key]) {
|
|
1928
|
+
destination[_key] = source[_key];
|
|
1929
|
+
} else {
|
|
1930
|
+
// eslint-disable-next-line no-use-before-define
|
|
1931
|
+
destination[_key] = fastMerge(target[_key], source[_key]);
|
|
1932
|
+
}
|
|
1902
1933
|
}
|
|
1934
|
+
|
|
1935
|
+
return destination;
|
|
1903
1936
|
}
|
|
1904
1937
|
|
|
1905
|
-
|
|
1906
|
-
|
|
1938
|
+
/**
|
|
1939
|
+
* @param {Object|Array} target
|
|
1940
|
+
* @param {Object|Array} source
|
|
1941
|
+
* @returns {Object|Array}
|
|
1942
|
+
*/
|
|
1943
|
+
function fastMerge(target, source) {
|
|
1944
|
+
// lodash adds a small overhead so we don't use it here
|
|
1945
|
+
// eslint-disable-next-line rulesdir/prefer-underscore-method
|
|
1946
|
+
var array = Array.isArray(source);
|
|
1947
|
+
if (array) {
|
|
1948
|
+
return source;
|
|
1949
|
+
}
|
|
1950
|
+
return mergeObject(target, source);
|
|
1907
1951
|
}var _default =
|
|
1908
1952
|
|
|
1909
|
-
|
|
1953
|
+
fastMerge;exports["default"] = _default;
|
|
1910
1954
|
|
|
1911
1955
|
/***/ }),
|
|
1912
1956
|
|
|
@@ -2008,7 +2052,7 @@ _WebStorage.default;exports["default"] = _default;
|
|
|
2008
2052
|
\**********************************************/
|
|
2009
2053
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2010
2054
|
|
|
2011
|
-
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js");Object.defineProperty(exports, "__esModule", ({ value: true }));exports["default"] = void 0;var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js"));
|
|
2055
|
+
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js");Object.defineProperty(exports, "__esModule", ({ value: true }));exports["default"] = void 0;var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js"));var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));
|
|
2012
2056
|
|
|
2013
2057
|
|
|
2014
2058
|
|
|
@@ -2017,7 +2061,7 @@ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/inte
|
|
|
2017
2061
|
var _localforage = _interopRequireDefault(__webpack_require__(/*! localforage */ "localforage"));
|
|
2018
2062
|
var _underscore = _interopRequireDefault(__webpack_require__(/*! underscore */ "underscore"));
|
|
2019
2063
|
var _SyncQueue = _interopRequireDefault(__webpack_require__(/*! ../../SyncQueue */ "./lib/SyncQueue.js"));
|
|
2020
|
-
var
|
|
2064
|
+
var _fastMerge = _interopRequireDefault(__webpack_require__(/*! ../../fastMerge */ "./lib/fastMerge.js")); /**
|
|
2021
2065
|
* @file
|
|
2022
2066
|
* The storage provider based on localforage allows us to store most anything in its
|
|
2023
2067
|
* natural form in the underlying DB without having to stringify or de-stringify it
|
|
@@ -2033,8 +2077,11 @@ var provider = {
|
|
|
2033
2077
|
if (shouldMerge) {
|
|
2034
2078
|
return _localforage.default.getItem(key).
|
|
2035
2079
|
then(function (existingValue) {
|
|
2036
|
-
var newValue = _underscore.default.isObject(existingValue)
|
|
2037
|
-
|
|
2080
|
+
var newValue = _underscore.default.isObject(existingValue)
|
|
2081
|
+
|
|
2082
|
+
// lodash adds a small overhead so we don't use it here
|
|
2083
|
+
// eslint-disable-next-line prefer-object-spread, rulesdir/prefer-underscore-method
|
|
2084
|
+
? (0, _extends2.default)({}, (0, _fastMerge.default)(existingValue, value)) :
|
|
2038
2085
|
value;
|
|
2039
2086
|
return _localforage.default.setItem(key, newValue);
|
|
2040
2087
|
});
|
|
@@ -3436,17 +3483,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_lodash_get__;
|
|
|
3436
3483
|
|
|
3437
3484
|
/***/ }),
|
|
3438
3485
|
|
|
3439
|
-
/***/ "lodash/mergeWith":
|
|
3440
|
-
/*!***********************************!*\
|
|
3441
|
-
!*** external "lodash/mergeWith" ***!
|
|
3442
|
-
\***********************************/
|
|
3443
|
-
/***/ ((module) => {
|
|
3444
|
-
|
|
3445
|
-
"use strict";
|
|
3446
|
-
module.exports = __WEBPACK_EXTERNAL_MODULE_lodash_mergeWith__;
|
|
3447
|
-
|
|
3448
|
-
/***/ }),
|
|
3449
|
-
|
|
3450
3486
|
/***/ "react":
|
|
3451
3487
|
/*!************************!*\
|
|
3452
3488
|
!*** external "react" ***!
|