Skip to content

Commit 6fec1db

Browse files
authored
fix(web): replace deprecated deep-assign with merge-options (#657)
1 parent a5f3e12 commit 6fec1db

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

jest/async-storage-mock.js

+8-20
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
* @format
33
*/
44

5+
import mergeOptions from 'merge-options';
6+
7+
const merge = mergeOptions.bind({
8+
concatArrays: true,
9+
ignoreUndefined: true,
10+
});
11+
512
const asMock = {
613
__INTERNAL_MOCK_STORAGE__: {},
714

@@ -95,31 +102,12 @@ async function _multiMerge(keyValuePairs, callback) {
95102
const oldValue = JSON.parse(asMock.__INTERNAL_MOCK_STORAGE__[key]);
96103

97104
asMock.__INTERNAL_MOCK_STORAGE__[key] = JSON.stringify(
98-
_deepMergeInto(oldValue, value),
105+
merge(oldValue, value),
99106
);
100107
});
101108

102109
callback && callback(null);
103110
return null;
104111
}
105112

106-
const _isObject = (obj) => typeof obj === 'object' && !Array.isArray(obj);
107-
const _deepMergeInto = (oldObject, newObject) => {
108-
const newKeys = Object.keys(newObject);
109-
const mergedObject = oldObject;
110-
111-
newKeys.forEach((key) => {
112-
const oldValue = mergedObject[key];
113-
const newValue = newObject[key];
114-
115-
if (_isObject(oldValue) && _isObject(newValue)) {
116-
mergedObject[key] = _deepMergeInto(oldValue, newValue);
117-
} else {
118-
mergedObject[key] = newValue;
119-
}
120-
});
121-
122-
return mergedObject;
123-
};
124-
125113
module.exports = asMock;

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"test:e2e:macos": "scripts/macos_e2e.sh 'test'"
6262
},
6363
"dependencies": {
64-
"deep-assign": "^3.0.0"
64+
"merge-options": "^3.0.4"
6565
},
6666
"peerDependencies": {
6767
"react-native": "^0.60.6 || ^0.61.5 || ^0.62.2 || ^0.63.2 || ^0.64.0 || 1000.0.0"

src/AsyncStorage.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@
88
* @flow
99
*/
1010

11-
import merge from 'deep-assign';
11+
import mergeOptions from 'merge-options';
12+
13+
const merge = mergeOptions.bind({
14+
concatArrays: true,
15+
ignoreUndefined: true,
16+
});
1217

1318
const mergeLocalStorageItem = (key, value) => {
1419
const oldValue = window.localStorage.getItem(key);
1520
const oldObject = JSON.parse(oldValue);
1621
const newObject = JSON.parse(value);
17-
const nextValue = JSON.stringify(merge({}, oldObject, newObject));
22+
const nextValue = JSON.stringify(merge(oldObject, newObject));
1823
window.localStorage.setItem(key, nextValue);
1924
};
2025

yarn.lock

+7
Original file line numberDiff line numberDiff line change
@@ -9322,6 +9322,13 @@ meow@^8.0.0:
93229322
type-fest "^0.18.0"
93239323
yargs-parser "^20.2.3"
93249324

9325+
merge-options@^3.0.4:
9326+
version "3.0.4"
9327+
resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7"
9328+
integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==
9329+
dependencies:
9330+
is-plain-obj "^2.1.0"
9331+
93259332
merge-stream@^1.0.1:
93269333
version "1.0.1"
93279334
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"

0 commit comments

Comments
 (0)