/** * GitWand — Dispatcher de résolveurs par format * * Point d'entrée pour la résolution format-aware. * Détecte le type de fichier à partir de son chemin et tente une * résolution spécialisée avant de tomber en fallback sur le moteur textuel. * * Architecture : * * resolver.ts * └─ tryFormatAwareResolve(hunk, filePath) * ├─ isJsonFile(filePath) → tryResolveJsonConflict() * ├─ isMarkdownFile(filePath) → tryResolveMarkdownConflict() * ├─ isYamlFile(filePath) → tryResolveYamlConflict() * ├─ isImportFile(filePath) → tryResolveImportConflict() (si bloc d'imports) * ├─ isVueFile(filePath) → tryResolveVueConflict() * ├─ isCssFile(filePath) → tryResolveCssConflict() * └─ null → moteur textuel standard (resolver.ts switch) * * Chaque résolveur spécialisé retourne des lignes résolues ou null * (null = le résolveur ne sait pas → fallback). * * Phase 7.3b — Nouveaux résolveurs : * - YAML (.yaml / .yml) * - TS/JS imports (.ts / .js / .tsx / .jsx / .mjs / .cjs) * - Vue SFC (.vue) * - CSS/SCSS/Less (.css / .scss / .less) */ import type { ConflictHunk } from "../types.js"; /** Vérifie si le fichier est JSON ou JSONC */ export declare function isJsonFile(filePath: string): boolean; /** Vérifie si le fichier est Markdown */ export declare function isMarkdownFile(filePath: string): boolean; /** Vérifie si le fichier est YAML */ export declare function isYamlFile(filePath: string): boolean; /** Vérifie si le fichier est un module TS/JS/JSX/TSX */ export declare function isJsFile(filePath: string): boolean; /** Vérifie si le fichier est un composant Vue SFC */ export declare function isVueFile(filePath: string): boolean; /** Vérifie si le fichier est CSS, SCSS ou Less */ export declare function isCssFile(filePath: string): boolean; /** Vérifie si le fichier est un lockfile npm (package-lock.json) */ export declare function isNpmLockfile(filePath: string): boolean; /** Vérifie si le fichier est un lockfile yarn (yarn.lock) */ export declare function isYarnLockfile(filePath: string): boolean; /** Vérifie si le fichier est un lockfile pnpm (pnpm-lock.yaml) */ export declare function isPnpmLockfile(filePath: string): boolean; /** Vérifie si le fichier est un lockfile quelconque */ export declare function isLockfile(filePath: string): boolean; /** Vérifie si le fichier est un Cargo.toml ou Cargo.lock */ export declare function isCargoFile(filePath: string): boolean; /** Vérifie si le fichier est un .env, .env.*, ou *.env */ export declare function isDotenvFile(filePath: string): boolean; /** Vérifie si le fichier est un Dockerfile */ export declare function isDockerfile(filePath: string): boolean; export interface FormatResolveResult { /** Lignes résolues, ou null si le résolveur n'a pas pu résoudre */ lines: string[] | null; /** * Raison de la résolution (ou de l'échec). * Inclut le nom du résolveur et le détail. */ reason: string; /** Résolveur utilisé (pour la trace) */ resolverUsed: "json" | "markdown" | "yaml" | "imports" | "vue" | "css" | "lockfile-npm" | "lockfile-yarn" | "lockfile-pnpm" | "cargo" | "dotenv" | "dockerfile" | "structural" | "none"; /** * v2.3 — Portée de la résolution. * * - `"hunk"` (défaut implicite) : `lines` remplace uniquement le hunk courant. * - `"file"` : `fileContent` remplace **l'intégralité** du fichier * (court-circuite le découpage hunk). Utilisé par le résolveur structurel. * * Quand `scope === "file"`, le pipeline de `resolve()` / `resolveAsync()` * doit interpréter `fileContent` plutôt que `lines`. */ scope?: "hunk" | "file"; /** * v2.3 — Contenu complet du fichier fusionné. * Présent uniquement si `scope === "file"`. */ fileContent?: string; } /** * Tente de résoudre un hunk de conflit avec le résolveur approprié * selon le type de fichier. * * Retourne `lines !== null` si le résolveur a réussi, `null` sinon. * Dans tous les cas, `reason` décrit ce qui s'est passé. * * @param hunk - Le hunk de conflit à résoudre * @param filePath - Le chemin du fichier (pour déterminer le résolveur) * @param opts - (v2.2) `disableFormatProfiles` désactive le hook FormatProfile * dans les résolveurs JSON / YAML — comportement v2.1 strict. */ export declare function tryFormatAwareResolve(hunk: ConflictHunk, filePath: string, opts?: { disableFormatProfiles?: boolean; }): FormatResolveResult; //# sourceMappingURL=dispatcher.d.ts.map