@smartimpact-it/json-merge-shopify
Version:
49 lines (48 loc) • 1.51 kB
TypeScript
import { ArrayElementResult } from './Comparer';
export interface ArrayMergerOptions {
base: any[];
ours: any[];
theirs: any[];
preferred?: SourceType | null;
filename?: string | null;
path?: string[];
deletionsAllowed?: boolean;
}
export interface ArrayMergerVariant {
seemsValid: boolean;
positions: Array<{
unionPosition: number;
basePosition: number | null;
oursPosition: number | null;
theirsPosition: number | null;
}>;
similarityScore: number;
}
export interface UnionArrayElementResult extends ArrayElementResult {
unionIndex: number;
}
export type SourceType = 'base' | 'ours' | 'theirs';
export declare class ArrayMerger {
ours: any[];
theirs: any[];
base: any[];
union: any[];
preferred: SourceType;
filename: string | null;
path: string[] | null;
variants: ArrayMergerVariant[] | null;
objectPossiblePositions: UnionArrayElementResult[] | null;
deletionsAllowed: boolean;
constructor({ base, ours, theirs, preferred, filename, path, deletionsAllowed, }: ArrayMergerOptions);
private getUnion;
getObjectPositions(): UnionArrayElementResult[];
private getPositionsAsArray;
private getPositionIndex;
private getPositionScore;
private getNextVariants;
getVariants(): ArrayMergerVariant[];
generateFromVariant(variant: ArrayMergerVariant): any[];
getMergedObject(theirs: any, ours: any): any;
merge(): any[];
}
export default ArrayMerger;