react-native-onyx 1.0.15 → 1.0.17
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/README.md +3 -3
- package/dist/web.development.js +60 -13
- 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 +3 -2
- package/lib/OnyxCache.js +2 -2
- package/lib/mergeWithCustomized.js +26 -0
- package/lib/storage/providers/LocalForage.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ The data will then be cached and stored via [`AsyncStorage`](https://github.com/
|
|
|
63
63
|
|
|
64
64
|
We can also use `Onyx.merge()` to merge new `Object` or `Array` data in with existing data.
|
|
65
65
|
|
|
66
|
-
For `Array` the default behavior is to
|
|
66
|
+
For `Array` the default behavior is to replace it fully, effectively making it equivalent to set:
|
|
67
67
|
|
|
68
68
|
```javascript
|
|
69
69
|
Onyx.merge(ONYXKEYS.EMPLOYEE_LIST, ['Joe']); // -> ['Joe']
|
|
@@ -77,10 +77,10 @@ Onyx.merge(ONYXKEYS.POLICY, {id: 1}); // -> {id: 1}
|
|
|
77
77
|
Onyx.merge(ONYXKEYS.POLICY, {name: 'My Workspace'}); // -> {id: 1, name: 'My Workspace'}
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
Arrays inside objects will be replaced fully, same as arrays not inside objects:
|
|
81
81
|
|
|
82
82
|
```javascript
|
|
83
|
-
Onyx.merge(ONYXKEYS.POLICY, {employeeList: ['Joe']}); // -> {employeeList: ['Joe']}
|
|
83
|
+
Onyx.merge(ONYXKEYS.POLICY, {employeeList: ['Joe', 'Jack']}); // -> {employeeList: ['Joe', 'Jack']}
|
|
84
84
|
Onyx.merge(ONYXKEYS.POLICY, {employeeList: ['Jack']}); // -> {employeeList: ['Jack']}
|
|
85
85
|
```
|
|
86
86
|
|
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/merge"), require("lodash/get"), require("localforage"), require("react"));
|
|
3
|
+
module.exports = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/merge"), require("lodash/get"), require("localforage"), require("lodash/mergeWith"), require("react"));
|
|
4
4
|
else if(typeof define === 'function' && define.amd)
|
|
5
|
-
define(["underscore", "expensify-common/lib/str", "lodash/merge", "lodash/get", "localforage", "react"], factory);
|
|
5
|
+
define(["underscore", "expensify-common/lib/str", "lodash/merge", "lodash/get", "localforage", "lodash/mergeWith", "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/merge"), require("lodash/get"), require("localforage"), require("react"));
|
|
7
|
+
exports["react-native-onyx/web"] = factory(require("underscore"), require("expensify-common/lib/str"), require("lodash/merge"), require("lodash/get"), require("localforage"), require("lodash/mergeWith"), require("react"));
|
|
8
8
|
else
|
|
9
|
-
root["react-native-onyx/web"] = factory(root["underscore"], root["expensify-common/lib/str"], root["lodash/merge"], root["lodash/get"], root["localforage"], root["react"]);
|
|
10
|
-
})(self, (__WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_expensify_common_lib_str__, __WEBPACK_EXTERNAL_MODULE_lodash_merge__, __WEBPACK_EXTERNAL_MODULE_lodash_get__, __WEBPACK_EXTERNAL_MODULE_localforage__, __WEBPACK_EXTERNAL_MODULE_react__) => {
|
|
9
|
+
root["react-native-onyx/web"] = factory(root["underscore"], root["expensify-common/lib/str"], root["lodash/merge"], root["lodash/get"], root["localforage"], root["lodash/mergeWith"], root["react"]);
|
|
10
|
+
})(self, (__WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_expensify_common_lib_str__, __WEBPACK_EXTERNAL_MODULE_lodash_merge__, __WEBPACK_EXTERNAL_MODULE_lodash_get__, __WEBPACK_EXTERNAL_MODULE_localforage__, __WEBPACK_EXTERNAL_MODULE_lodash_mergeWith__, __WEBPACK_EXTERNAL_MODULE_react__) => {
|
|
11
11
|
return /******/ (() => { // webpackBootstrap
|
|
12
12
|
/******/ var __webpack_modules__ = ({
|
|
13
13
|
|
|
@@ -496,7 +496,8 @@ var _get = _interopRequireDefault(__webpack_require__(/*! lodash/get */ "lodash/
|
|
|
496
496
|
var _storage = _interopRequireDefault(__webpack_require__(/*! ./storage */ "./lib/storage/index.web.js"));
|
|
497
497
|
var Logger = _interopRequireWildcard(__webpack_require__(/*! ./Logger */ "./lib/Logger.js"));
|
|
498
498
|
var _OnyxCache = _interopRequireDefault(__webpack_require__(/*! ./OnyxCache */ "./lib/OnyxCache.js"));
|
|
499
|
-
var _createDeferredTask = _interopRequireDefault(__webpack_require__(/*! ./createDeferredTask */ "./lib/createDeferredTask.js"));
|
|
499
|
+
var _createDeferredTask = _interopRequireDefault(__webpack_require__(/*! ./createDeferredTask */ "./lib/createDeferredTask.js"));
|
|
500
|
+
var _mergeWithCustomized = _interopRequireDefault(__webpack_require__(/*! ./mergeWithCustomized */ "./lib/mergeWithCustomized.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;}
|
|
500
501
|
|
|
501
502
|
// Keeps track of the last connectionID that was used so we can keep incrementing it
|
|
502
503
|
var lastConnectionID = 0;
|
|
@@ -1152,7 +1153,7 @@ function applyMerge(key, data) {
|
|
|
1152
1153
|
if (_underscore.default.isObject(data) || _underscore.default.every(mergeValues, _underscore.default.isObject)) {
|
|
1153
1154
|
// Object values are merged one after the other
|
|
1154
1155
|
return _underscore.default.reduce(mergeValues, function (modifiedData, mergeValue) {
|
|
1155
|
-
var newData = (0,
|
|
1156
|
+
var newData = (0, _mergeWithCustomized.default)({}, modifiedData, mergeValue);
|
|
1156
1157
|
|
|
1157
1158
|
// We will also delete any object keys that are undefined or null.
|
|
1158
1159
|
// Deleting keys is not supported by AsyncStorage so we do it this way.
|
|
@@ -1223,7 +1224,7 @@ function initializeWithDefaultKeyStates() {
|
|
|
1223
1224
|
then(function (pairs) {
|
|
1224
1225
|
var asObject = _underscore.default.object(pairs);
|
|
1225
1226
|
|
|
1226
|
-
var merged = (0,
|
|
1227
|
+
var merged = (0, _mergeWithCustomized.default)(asObject, defaultKeyStates);
|
|
1227
1228
|
_OnyxCache.default.merge(merged);
|
|
1228
1229
|
_underscore.default.each(merged, function (val, key) {return keyChanged(key, val);});
|
|
1229
1230
|
});
|
|
@@ -1493,7 +1494,7 @@ Onyx;exports["default"] = _default;
|
|
|
1493
1494
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1494
1495
|
|
|
1495
1496
|
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"));
|
|
1496
|
-
var
|
|
1497
|
+
var _mergeWithCustomized = _interopRequireDefault(__webpack_require__(/*! ./mergeWithCustomized */ "./lib/mergeWithCustomized.js"));
|
|
1497
1498
|
|
|
1498
1499
|
var isDefined = _underscore.default.negate(_underscore.default.isUndefined);
|
|
1499
1500
|
|
|
@@ -1604,7 +1605,7 @@ OnyxCache = /*#__PURE__*/function () {
|
|
|
1604
1605
|
* @param {Record<string, *>} data - a map of (cache) key - values
|
|
1605
1606
|
*/ }, { key: "merge", value: function merge(
|
|
1606
1607
|
data) {var _this = this;
|
|
1607
|
-
this.storageMap = (0,
|
|
1608
|
+
this.storageMap = (0, _mergeWithCustomized.default)({}, this.storageMap, data);
|
|
1608
1609
|
|
|
1609
1610
|
var storageKeys = this.getAllKeys();
|
|
1610
1611
|
var mergedKeys = _underscore.default.keys(data);
|
|
@@ -1775,6 +1776,41 @@ function createDeferredTask() {
|
|
|
1775
1776
|
|
|
1776
1777
|
/***/ }),
|
|
1777
1778
|
|
|
1779
|
+
/***/ "./lib/mergeWithCustomized.js":
|
|
1780
|
+
/*!************************************!*\
|
|
1781
|
+
!*** ./lib/mergeWithCustomized.js ***!
|
|
1782
|
+
\************************************/
|
|
1783
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1784
|
+
|
|
1785
|
+
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 _mergeWith = _interopRequireDefault(__webpack_require__(/*! lodash/mergeWith */ "lodash/mergeWith"));
|
|
1786
|
+
|
|
1787
|
+
/**
|
|
1788
|
+
* When merging 2 objects into onyx that contain an array, we want to completely replace the array instead of the default
|
|
1789
|
+
* behavior which is to merge each item by its index.
|
|
1790
|
+
* ie:
|
|
1791
|
+
* merge({a: [1]}, {a: [2,3]}):
|
|
1792
|
+
* - In the default implementation would produce {a:[1,3]}
|
|
1793
|
+
* - With this function would produce: {a: [2,3]}
|
|
1794
|
+
* @param {*} objValue
|
|
1795
|
+
* @param {*} srcValue
|
|
1796
|
+
* @return {*}
|
|
1797
|
+
*/
|
|
1798
|
+
// eslint-disable-next-line rulesdir/prefer-early-return
|
|
1799
|
+
function customizerForMergeWith(objValue, srcValue) {
|
|
1800
|
+
// eslint-disable-next-line rulesdir/prefer-underscore-method
|
|
1801
|
+
if (Array.isArray(objValue)) {
|
|
1802
|
+
return srcValue;
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
|
|
1806
|
+
function mergeWithCustomized() {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}
|
|
1807
|
+
return _mergeWith.default.apply(void 0, args.concat([customizerForMergeWith]));
|
|
1808
|
+
}var _default =
|
|
1809
|
+
|
|
1810
|
+
mergeWithCustomized;exports["default"] = _default;
|
|
1811
|
+
|
|
1812
|
+
/***/ }),
|
|
1813
|
+
|
|
1778
1814
|
/***/ "./lib/metrics/index.web.js":
|
|
1779
1815
|
/*!**********************************!*\
|
|
1780
1816
|
!*** ./lib/metrics/index.web.js ***!
|
|
@@ -1881,8 +1917,8 @@ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/inte
|
|
|
1881
1917
|
|
|
1882
1918
|
var _localforage = _interopRequireDefault(__webpack_require__(/*! localforage */ "localforage"));
|
|
1883
1919
|
var _underscore = _interopRequireDefault(__webpack_require__(/*! underscore */ "underscore"));
|
|
1884
|
-
var
|
|
1885
|
-
var
|
|
1920
|
+
var _SyncQueue = _interopRequireDefault(__webpack_require__(/*! ../../SyncQueue */ "./lib/SyncQueue.js"));
|
|
1921
|
+
var _mergeWithCustomized = _interopRequireDefault(__webpack_require__(/*! ../../mergeWithCustomized */ "./lib/mergeWithCustomized.js")); /**
|
|
1886
1922
|
* @file
|
|
1887
1923
|
* The storage provider based on localforage allows us to store most anything in its
|
|
1888
1924
|
* natural form in the underlying DB without having to stringify or de-stringify it
|
|
@@ -1899,7 +1935,7 @@ var provider = {
|
|
|
1899
1935
|
return _localforage.default.getItem(key).
|
|
1900
1936
|
then(function (existingValue) {
|
|
1901
1937
|
var newValue = _underscore.default.isObject(existingValue) ?
|
|
1902
|
-
(0,
|
|
1938
|
+
(0, _mergeWithCustomized.default)({}, existingValue, value) :
|
|
1903
1939
|
value;
|
|
1904
1940
|
return _localforage.default.setItem(key, newValue);
|
|
1905
1941
|
});
|
|
@@ -3312,6 +3348,17 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_lodash_merge__;
|
|
|
3312
3348
|
|
|
3313
3349
|
/***/ }),
|
|
3314
3350
|
|
|
3351
|
+
/***/ "lodash/mergeWith":
|
|
3352
|
+
/*!***********************************!*\
|
|
3353
|
+
!*** external "lodash/mergeWith" ***!
|
|
3354
|
+
\***********************************/
|
|
3355
|
+
/***/ ((module) => {
|
|
3356
|
+
|
|
3357
|
+
"use strict";
|
|
3358
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE_lodash_mergeWith__;
|
|
3359
|
+
|
|
3360
|
+
/***/ }),
|
|
3361
|
+
|
|
3315
3362
|
/***/ "react":
|
|
3316
3363
|
/*!************************!*\
|
|
3317
3364
|
!*** external "react" ***!
|