/** * GitWand v2.6 — Détection de refactorings (expérimental) * * Détecte les refactorings entre la version de base d'un fichier et une branche * (ours ou theirs). Utilisé par le pipeline RefMerge avant la résolution textuelle. * * ## Algorithme * * La détection est **purement textuelle** (zero dépendance, compatible browser) : * * ### rename-local / rename-top-level * 1. Tokeniser base et branch en listes d'identifiants (sans mots-clés). * 2. Identifier les tokens présents uniquement dans base (`removed`) et * uniquement dans branch (`added`). * 3. Pour chaque paire (oldName, newName) dont le compte d'occurrences est * identique ET unique dans le groupe, construire une substitution candidate. * 4. Appliquer toutes les substitutions simultanément sur la séquence base. * 5. Si la séquence obtenue == séquence branch : les renames sont confirmés. * 6. Classifier rename-local vs rename-top-level selon le contexte syntaxique. * * ### move-method * Parser léger ligne par ligne pour extraire `Map>`. * Détecter les méthodes ayant changé de classe entre base et branch. * * ## Garanties * - Retourne `[]` en cas d'erreur ou d'absence de tree-sitter (safe by default). * - Zéro import Node.js — compatible browser, Node.js, Tauri WebView. * - Complexité O(n) sur la longueur du code (n = nombre de tokens). */ import type { Refactoring } from "../types.js"; /** * Détecte les refactorings entre la version de base d'un fichier et une branche. * * Point d'entrée principal du module. Appelé deux fois par l'orchestrateur * RefMerge — une fois pour `(base, ours)`, une fois pour `(base, theirs)`. * * @param baseLines Lignes du fichier dans la version de base (ancêtre commun) * @param branchLines Lignes du fichier dans la branche (ours ou theirs) * @param maxRefactorings Quota maximum de refactorings retournés (défaut: 10) * @returns Liste des refactorings détectés, triée par type de confiance * (rename-top-level > rename-local > move-method). * Retourne `[]` en cas d'erreur ou si aucun refactoring détecté. * * @example * ```ts * const refs = detectRefactorings( * ["function foo(x) { return x + 1; }"], * ["function foo(value) { return value + 1; }"], * ); * // refs = [{ kind: "rename-local", oldName: "x", newName: "value", scope: "foo" }] * ``` */ export declare function detectRefactorings(baseLines: string[], branchLines: string[], maxRefactorings?: number): Refactoring[]; //# sourceMappingURL=detect.d.ts.map