@trezor/utils
Advanced tools
Comparing version 9.0.24 to 9.0.25-beta.1
@@ -0,1 +1,6 @@ | ||
# 9.0.25-beta.1 | ||
- feat(utils): mergeDeepObject with dot notation (1a5b0e2a0f) | ||
- chore(utils): move Throttler util from blockchain-link to utils (78673bd14c) | ||
# 9.0.24 | ||
@@ -2,0 +7,0 @@ |
@@ -44,2 +44,3 @@ export * as bufferUtils from './bufferUtils'; | ||
export * from './bigNumber'; | ||
export * from './throttler'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -48,2 +48,3 @@ "use strict"; | ||
tslib_1.__exportStar(require("./bigNumber"), exports); | ||
tslib_1.__exportStar(require("./throttler"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -23,4 +23,5 @@ type TAllKeys<T> = T extends any ? keyof T : never; | ||
mergeArrays: boolean; | ||
dotNotation: boolean; | ||
} | ||
export {}; | ||
//# sourceMappingURL=mergeDeepObject.d.ts.map |
@@ -14,2 +14,26 @@ "use strict"; | ||
}; | ||
const mergeValuesWithPath = (target, value, [key, ...rest]) => { | ||
if (key === undefined) { | ||
return mergeValues(target, value); | ||
} | ||
else if (!isObject(target)) { | ||
return { [key]: mergeValuesWithPath({}, value, rest) }; | ||
} | ||
else { | ||
return Object.assign(Object.assign({}, target), { [key]: mergeValuesWithPath(target[key], value, rest) }); | ||
} | ||
}; | ||
const mergeValues = (target, value) => { | ||
if (Array.isArray(target) && Array.isArray(value)) { | ||
return exports.mergeDeepObject.options.mergeArrays | ||
? Array.from(new Set(target.concat(value))) | ||
: value; | ||
} | ||
else if (isObject(target) && isObject(value)) { | ||
return (0, exports.mergeDeepObject)(target, value); | ||
} | ||
else { | ||
return value; | ||
} | ||
}; | ||
const mergeDeepObject = (...objects) => objects.reduce((result, current) => { | ||
@@ -23,12 +47,8 @@ if (Array.isArray(current)) { | ||
} | ||
if (Array.isArray(result[key]) && Array.isArray(current[key])) { | ||
result[key] = exports.mergeDeepObject.options.mergeArrays | ||
? Array.from(new Set(result[key].concat(current[key]))) | ||
: current[key]; | ||
if (exports.mergeDeepObject.options.dotNotation) { | ||
const [first, ...rest] = key.split('.'); | ||
result[first] = mergeValuesWithPath(result[first], current[key], rest); | ||
} | ||
else if (isObject(result[key]) && isObject(current[key])) { | ||
result[key] = (0, exports.mergeDeepObject)(result[key], current[key]); | ||
} | ||
else { | ||
result[key] = current[key]; | ||
result[key] = mergeValues(result[key], current[key]); | ||
} | ||
@@ -41,6 +61,7 @@ }); | ||
mergeArrays: true, | ||
dotNotation: false, | ||
}; | ||
exports.mergeDeepObject.options = defaultOptions; | ||
exports.mergeDeepObject.withOptions = (options, ...objects) => { | ||
exports.mergeDeepObject.options = Object.assign({ mergeArrays: true }, options); | ||
exports.mergeDeepObject.options = Object.assign(Object.assign({}, defaultOptions), options); | ||
const result = (0, exports.mergeDeepObject)(...objects); | ||
@@ -47,0 +68,0 @@ exports.mergeDeepObject.options = defaultOptions; |
{ | ||
"name": "@trezor/utils", | ||
"version": "9.0.24", | ||
"version": "9.0.25-beta.1", | ||
"author": "Trezor <info@trezor.io>", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/trezor/trezor-suite/tree/develop/packages/utils", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
59013
96
1197
1