mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
805ce29e11
* Add types of hidden properties to Sentry data The masked wallet state object sent to Sentry has been updated to include the type of each property omitted from the mask. This lets us at least see the full state shape, making it easier to see when errors are caused by invalid state. Relates to #20449 * Remove inconsistent state snapshot properties The state snapshot tests have been updated to exclude properties that were shown to differ between runs.
27 lines
931 B
JavaScript
27 lines
931 B
JavaScript
/**
|
|
* Return a "masked" copy of the given object.
|
|
*
|
|
* The returned object includes only the properties present in the mask. The
|
|
* mask is an object that mirrors the structure of the given object, except
|
|
* the only values are `true` or a sub-mask. `true` implies the property
|
|
* should be included, and a sub-mask implies the property should be further
|
|
* masked according to that sub-mask.
|
|
*
|
|
* If a property is not found in the last, its type is included instead.
|
|
*
|
|
* @param {object} object - The object to mask
|
|
* @param {Object<object | boolean>} mask - The mask to apply to the object
|
|
*/
|
|
export function maskObject(object, mask) {
|
|
return Object.keys(object).reduce((state, key) => {
|
|
if (mask[key] === true) {
|
|
state[key] = object[key];
|
|
} else if (mask[key]) {
|
|
state[key] = maskObject(object[key], mask[key]);
|
|
} else {
|
|
state[key] = typeof object[key];
|
|
}
|
|
return state;
|
|
}, {});
|
|
}
|