git-json-resolver
Version:
A rules-based JSON conflict resolver that parses Git conflict markers, reconstructs ours/theirs, and merges with deterministic strategies — beyond line-based merges.
42 lines (41 loc) • 1.4 kB
TypeScript
/**
* Config normalizer for JSON merge rules.
* Expands shorthand, validates strategies, parses importance,
* and classifies rules into exact / top-level / glob categories.
*/
import { Matcher } from "./matcher";
import { AllStrategies, Config, StrategyFn } from "./types";
export interface StrategyItem {
name: string;
important: boolean;
}
export interface StrategyList {
strategies: StrategyItem[];
order: number;
source: string;
}
export interface NormalizedRules {
exact: Record<string, StrategyList[]>;
exactFields: Record<string, StrategyList[]>;
patterns: Record<string, StrategyList[]>;
default: StrategyItem[];
}
export interface NormalizedConfig<T extends string = AllStrategies, TContext = unknown> extends Omit<Config<T, TContext>, "byStrategy" | "rules" | "defaultStrategy" | "customStrategies"> {
rules: NormalizedRules;
matcher: Matcher;
include: string[];
exclude: string[];
customStrategies: Record<string, StrategyFn<TContext>>;
}
/** Defaults */
export declare const DEFAULT_CONFIG: {
defaultStrategy: string[];
include: string[];
exclude: string[];
debug: boolean;
writeConflictSidecar: boolean;
};
/**
* Normalize user config into fully expanded and classified form.
*/
export declare const normalizeConfig: <T extends string = AllStrategies>(config: Config<T>) => Promise<NormalizedConfig>;