/** * GitWand — Résolveur JSON/JSONC sémantique * * Résout les conflits dans les fichiers JSON et JSONC en parsant * les trois versions (base, ours, theirs) et en effectuant une * fusion au niveau des clés plutôt que des lignes. * * Stratégie : * 1. Tenter de parser les trois versions comme JSON (strip de commentaires JSONC) * 2. Calculer les deltas clé-par-clé (récursif sur les objets) * 3. Si tous les conflits de clés sont trivialement résolvables → merge * 4. Sinon → retourner null (fallback textuel dans resolver.ts) * * v2.2 — Hook profil de format : si un FormatProfile est applicable au * filePath, ses stratégies par path (set / ordered-list / merge-keys / opaque) * routent vers mergeArrayAsSet ou mergeOrderedListViaPatch au lieu du fallback * "tableau impossible à merger". Ouvre l'auto-résolution sur /dependencies, * /scripts, tsconfig#/include, etc. * * Cas gérés : * - Clé ajoutée des deux côtés avec valeurs différentes → conflit non résolvable * - Clé ajoutée d'un seul côté → accepter l'ajout * - Clé supprimée d'un seul côté, pas modifiée de l'autre → supprimer * - Clé modifiée des deux côtés de la même façon → prendre la valeur * - Clé modifiée des deux côtés différemment → conflit non résolvable * - Merge récursif pour les objets imbriqués (avec stratégie de profil par path) */ /** Résultat d'une fusion JSON */ export interface JsonMergeResult { /** Valeur fusionnée (null = conflit non résolvable) */ merged: unknown | null; /** Description de la fusion effectuée */ reason: string; /** Nombre de conflits résolus automatiquement */ resolvedKeys: number; /** Nombre de conflits non résolvables */ unresolvedKeys: number; } /** * Supprime les commentaires // et /* *\/ d'un fichier JSONC. * Assez robuste pour les cas courants (config files). */ export declare function stripJsoncComments(text: string): string; /** * Tente de résoudre un conflit JSON en fusionnant sémantiquement * les trois versions. * * @param baseLines - Lignes de la version base * @param oursLines - Lignes de la version ours * @param theirsLines - Lignes de la version theirs * @param filePath - (v2.2) Chemin du fichier — utilisé pour résoudre un * FormatProfile applicable. Optionnel : sans filePath, * comportement identique à v2.1 (pas de profil consulté). * @returns `JsonMergeResult` avec `merged !== null` si résolu, `null` sinon */ export declare function tryResolveJsonConflict(baseLines: string[], oursLines: string[], theirsLines: string[], filePath?: string): JsonMergeResult; //# sourceMappingURL=json.d.ts.map