data-diff-ts
Version:
Lightweight TypeScript utility for comparing objects, arrays, and nested data structures.
45 lines (39 loc) • 1.41 kB
TypeScript
interface ArrayDiffResult<T> {
added: T[];
removed: T[];
unchanged: T[];
changed: Array<{
index: number;
from: T;
to: T;
}>;
}
interface DiffResult {
added: Record<string, unknown>;
removed: Record<string, unknown>;
changed: Record<string, {
from: unknown;
to: unknown;
} | DiffResult | ArrayDiffResult<unknown>>;
unchanged: Record<string, unknown>;
}
declare function isFlatChange(value: unknown): value is {
from: unknown;
to: unknown;
};
declare function isDiffResult(value: unknown): value is DiffResult;
declare function isArrayDiffResult(value: unknown): value is ArrayDiffResult<unknown>;
declare function diff(objA: Record<string, any>, objB: Record<string, any>): DiffResult | {};
declare function diffArrays<T>(a: T[], b: T[], options?: {
deep?: boolean;
}): ArrayDiffResult<T>;
type FlatDiff = Record<string, {
from: unknown;
to: unknown;
}>;
declare function diffFlattened(a: Record<string, any>, b: Record<string, any>, prefix?: string): FlatDiff;
interface SmartDiffOptions {
flatten?: boolean;
}
declare function smartDiff(a: Record<string, any>, b: Record<string, any>, options?: SmartDiffOptions): DiffResult | FlatDiff;
export { ArrayDiffResult, DiffResult, FlatDiff, SmartDiffOptions, diff, diffArrays, diffFlattened, isArrayDiffResult, isDiffResult, isFlatChange, smartDiff };