signoz/frontend/src/lib/replaceIncorrectObjectFields.ts
Yevhen Shevchenko ad5a9dcd6a
feat: add share url (#2778)
Co-authored-by: Palash Gupta <palashgdev@gmail.com>
2023-06-01 22:47:09 +05:30

29 lines
807 B
TypeScript

export function replaceIncorrectObjectFields<
// eslint-disable-next-line @typescript-eslint/ban-types
TargetValue extends object,
// eslint-disable-next-line @typescript-eslint/ban-types
ResultValue extends object
>(
targetObject: TargetValue,
defaultObject: ResultValue,
): { isValid: boolean; validData: ResultValue } {
const targetObjectKeys = Object.keys(targetObject);
const defaultObjectKeys = Object.keys(defaultObject);
let isValid = true;
const result: ResultValue = { ...defaultObject };
defaultObjectKeys.forEach((key) => {
if (targetObjectKeys.includes(key)) {
result[key as keyof ResultValue] = (targetObject[
key as keyof TargetValue
] as unknown) as ResultValue[keyof ResultValue];
} else {
isValid = false;
}
});
return { isValid, validData: result };
}