mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 12:28:42 +00:00
29 lines
813 B
TypeScript
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);
|
|
}
|