Files
AFFiNE-Mirror/blocksuite/tests-legacy/utils/ignore.ts
2024-12-20 11:08:21 +00:00

29 lines
813 B
TypeScript

import type { BlockSnapshot } from '@store/index.js';
export function ignoreFields(target: unknown, keys: string[]): unknown {
if (Array.isArray(target)) {
return target.map((item: unknown) => ignoreFields(item, keys));
} else if (typeof target === 'object' && target !== null) {
return Object.keys(target).reduce(
(acc: Record<string, unknown>, key: string) => {
if (keys.includes(key)) {
acc[key] = '*';
} else {
acc[key] = ignoreFields(
(target as Record<string, unknown>)[key],
keys
);
}
return acc;
},
{}
);
}
return target;
}
export function ignoreSnapshotId(snapshot: BlockSnapshot) {
const ignored = ignoreFields(snapshot, ['id']);
return JSON.stringify(ignored, null, 2);
}