@gitwand/core 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/__tests__/bench.bench.d.ts +14 -0
  4. package/dist/__tests__/bench.bench.d.ts.map +1 -0
  5. package/dist/__tests__/bench.bench.js +137 -0
  6. package/dist/__tests__/bench.bench.js.map +1 -0
  7. package/dist/__tests__/confidence-v14.test.d.ts +13 -0
  8. package/dist/__tests__/confidence-v14.test.d.ts.map +1 -0
  9. package/dist/__tests__/confidence-v14.test.js +284 -0
  10. package/dist/__tests__/confidence-v14.test.js.map +1 -0
  11. package/dist/__tests__/config.test.d.ts +2 -0
  12. package/dist/__tests__/config.test.d.ts.map +1 -0
  13. package/dist/__tests__/config.test.js +317 -0
  14. package/dist/__tests__/config.test.js.map +1 -0
  15. package/dist/__tests__/corpus.d.ts +36 -0
  16. package/dist/__tests__/corpus.d.ts.map +1 -0
  17. package/dist/__tests__/corpus.js +541 -0
  18. package/dist/__tests__/corpus.js.map +1 -0
  19. package/dist/__tests__/corpus.test.d.ts +17 -0
  20. package/dist/__tests__/corpus.test.d.ts.map +1 -0
  21. package/dist/__tests__/corpus.test.js +179 -0
  22. package/dist/__tests__/corpus.test.js.map +1 -0
  23. package/dist/__tests__/diff.test.d.ts +10 -0
  24. package/dist/__tests__/diff.test.d.ts.map +1 -0
  25. package/dist/__tests__/diff.test.js +178 -0
  26. package/dist/__tests__/diff.test.js.map +1 -0
  27. package/dist/__tests__/format-resolvers.test.d.ts +2 -0
  28. package/dist/__tests__/format-resolvers.test.d.ts.map +1 -0
  29. package/dist/__tests__/format-resolvers.test.js +577 -0
  30. package/dist/__tests__/format-resolvers.test.js.map +1 -0
  31. package/dist/__tests__/imports-extended.test.d.ts +2 -0
  32. package/dist/__tests__/imports-extended.test.d.ts.map +1 -0
  33. package/dist/__tests__/imports-extended.test.js +94 -0
  34. package/dist/__tests__/imports-extended.test.js.map +1 -0
  35. package/dist/__tests__/lockfile-resolvers.test.d.ts +2 -0
  36. package/dist/__tests__/lockfile-resolvers.test.d.ts.map +1 -0
  37. package/dist/__tests__/lockfile-resolvers.test.js +200 -0
  38. package/dist/__tests__/lockfile-resolvers.test.js.map +1 -0
  39. package/dist/__tests__/patterns/insertion-at-boundary.test.d.ts +10 -0
  40. package/dist/__tests__/patterns/insertion-at-boundary.test.d.ts.map +1 -0
  41. package/dist/__tests__/patterns/insertion-at-boundary.test.js +185 -0
  42. package/dist/__tests__/patterns/insertion-at-boundary.test.js.map +1 -0
  43. package/dist/__tests__/patterns/reorder-only.test.d.ts +10 -0
  44. package/dist/__tests__/patterns/reorder-only.test.d.ts.map +1 -0
  45. package/dist/__tests__/patterns/reorder-only.test.js +181 -0
  46. package/dist/__tests__/patterns/reorder-only.test.js.map +1 -0
  47. package/dist/__tests__/phase-7-2-3b.test.d.ts +6 -0
  48. package/dist/__tests__/phase-7-2-3b.test.d.ts.map +1 -0
  49. package/dist/__tests__/phase-7-2-3b.test.js +730 -0
  50. package/dist/__tests__/phase-7-2-3b.test.js.map +1 -0
  51. package/dist/__tests__/resolver.test.d.ts +2 -0
  52. package/dist/__tests__/resolver.test.d.ts.map +1 -0
  53. package/dist/__tests__/resolver.test.js +927 -0
  54. package/dist/__tests__/resolver.test.js.map +1 -0
  55. package/dist/__tests__/resolvers/cargo.test.d.ts +10 -0
  56. package/dist/__tests__/resolvers/cargo.test.d.ts.map +1 -0
  57. package/dist/__tests__/resolvers/cargo.test.js +158 -0
  58. package/dist/__tests__/resolvers/cargo.test.js.map +1 -0
  59. package/dist/__tests__/resolvers/dockerfile.test.d.ts +8 -0
  60. package/dist/__tests__/resolvers/dockerfile.test.d.ts.map +1 -0
  61. package/dist/__tests__/resolvers/dockerfile.test.js +120 -0
  62. package/dist/__tests__/resolvers/dockerfile.test.js.map +1 -0
  63. package/dist/__tests__/resolvers/dotenv.test.d.ts +9 -0
  64. package/dist/__tests__/resolvers/dotenv.test.d.ts.map +1 -0
  65. package/dist/__tests__/resolvers/dotenv.test.js +113 -0
  66. package/dist/__tests__/resolvers/dotenv.test.js.map +1 -0
  67. package/dist/__tests__/resolvers/improvements-v14.test.d.ts +8 -0
  68. package/dist/__tests__/resolvers/improvements-v14.test.d.ts.map +1 -0
  69. package/dist/__tests__/resolvers/improvements-v14.test.js +306 -0
  70. package/dist/__tests__/resolvers/improvements-v14.test.js.map +1 -0
  71. package/dist/__tests__/validation.test.d.ts +12 -0
  72. package/dist/__tests__/validation.test.d.ts.map +1 -0
  73. package/dist/__tests__/validation.test.js +136 -0
  74. package/dist/__tests__/validation.test.js.map +1 -0
  75. package/dist/classifier.d.ts +21 -0
  76. package/dist/classifier.d.ts.map +1 -0
  77. package/dist/classifier.js +127 -0
  78. package/dist/classifier.js.map +1 -0
  79. package/dist/config.d.ts +108 -0
  80. package/dist/config.d.ts.map +1 -0
  81. package/dist/config.js +200 -0
  82. package/dist/config.js.map +1 -0
  83. package/dist/diff.d.ts +69 -0
  84. package/dist/diff.d.ts.map +1 -0
  85. package/dist/diff.js +328 -0
  86. package/dist/diff.js.map +1 -0
  87. package/dist/index.d.ts +47 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +38 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/parser.d.ts +39 -0
  92. package/dist/parser.d.ts.map +1 -0
  93. package/dist/parser.js +164 -0
  94. package/dist/parser.js.map +1 -0
  95. package/dist/patterns/complex.d.ts +5 -0
  96. package/dist/patterns/complex.d.ts.map +1 -0
  97. package/dist/patterns/complex.js +27 -0
  98. package/dist/patterns/complex.js.map +1 -0
  99. package/dist/patterns/delete-no-change.d.ts +4 -0
  100. package/dist/patterns/delete-no-change.d.ts.map +1 -0
  101. package/dist/patterns/delete-no-change.js +75 -0
  102. package/dist/patterns/delete-no-change.js.map +1 -0
  103. package/dist/patterns/insertion-at-boundary.d.ts +22 -0
  104. package/dist/patterns/insertion-at-boundary.d.ts.map +1 -0
  105. package/dist/patterns/insertion-at-boundary.js +164 -0
  106. package/dist/patterns/insertion-at-boundary.js.map +1 -0
  107. package/dist/patterns/non-overlapping.d.ts +4 -0
  108. package/dist/patterns/non-overlapping.d.ts.map +1 -0
  109. package/dist/patterns/non-overlapping.js +28 -0
  110. package/dist/patterns/non-overlapping.js.map +1 -0
  111. package/dist/patterns/one-side-change.d.ts +4 -0
  112. package/dist/patterns/one-side-change.d.ts.map +1 -0
  113. package/dist/patterns/one-side-change.js +45 -0
  114. package/dist/patterns/one-side-change.js.map +1 -0
  115. package/dist/patterns/reorder-only.d.ts +14 -0
  116. package/dist/patterns/reorder-only.d.ts.map +1 -0
  117. package/dist/patterns/reorder-only.js +81 -0
  118. package/dist/patterns/reorder-only.js.map +1 -0
  119. package/dist/patterns/same-change.d.ts +4 -0
  120. package/dist/patterns/same-change.d.ts.map +1 -0
  121. package/dist/patterns/same-change.js +25 -0
  122. package/dist/patterns/same-change.js.map +1 -0
  123. package/dist/patterns/utils.d.ts +70 -0
  124. package/dist/patterns/utils.d.ts.map +1 -0
  125. package/dist/patterns/utils.js +206 -0
  126. package/dist/patterns/utils.js.map +1 -0
  127. package/dist/patterns/value-only-change.d.ts +4 -0
  128. package/dist/patterns/value-only-change.d.ts.map +1 -0
  129. package/dist/patterns/value-only-change.js +34 -0
  130. package/dist/patterns/value-only-change.js.map +1 -0
  131. package/dist/patterns/whitespace-only.d.ts +4 -0
  132. package/dist/patterns/whitespace-only.d.ts.map +1 -0
  133. package/dist/patterns/whitespace-only.js +32 -0
  134. package/dist/patterns/whitespace-only.js.map +1 -0
  135. package/dist/resolver/assemble.d.ts +25 -0
  136. package/dist/resolver/assemble.d.ts.map +1 -0
  137. package/dist/resolver/assemble.js +170 -0
  138. package/dist/resolver/assemble.js.map +1 -0
  139. package/dist/resolver/format-dispatch.d.ts +40 -0
  140. package/dist/resolver/format-dispatch.d.ts.map +1 -0
  141. package/dist/resolver/format-dispatch.js +51 -0
  142. package/dist/resolver/format-dispatch.js.map +1 -0
  143. package/dist/resolver/generated-detection.d.ts +48 -0
  144. package/dist/resolver/generated-detection.d.ts.map +1 -0
  145. package/dist/resolver/generated-detection.js +123 -0
  146. package/dist/resolver/generated-detection.js.map +1 -0
  147. package/dist/resolver/index.d.ts +26 -0
  148. package/dist/resolver/index.d.ts.map +1 -0
  149. package/dist/resolver/index.js +147 -0
  150. package/dist/resolver/index.js.map +1 -0
  151. package/dist/resolver/policy.d.ts +53 -0
  152. package/dist/resolver/policy.d.ts.map +1 -0
  153. package/dist/resolver/policy.js +99 -0
  154. package/dist/resolver/policy.js.map +1 -0
  155. package/dist/resolver/validation.d.ts +28 -0
  156. package/dist/resolver/validation.d.ts.map +1 -0
  157. package/dist/resolver/validation.js +96 -0
  158. package/dist/resolver/validation.js.map +1 -0
  159. package/dist/resolver.d.ts +18 -0
  160. package/dist/resolver.d.ts.map +1 -0
  161. package/dist/resolver.js +18 -0
  162. package/dist/resolver.js.map +1 -0
  163. package/dist/resolvers/cargo.d.ts +34 -0
  164. package/dist/resolvers/cargo.d.ts.map +1 -0
  165. package/dist/resolvers/cargo.js +262 -0
  166. package/dist/resolvers/cargo.js.map +1 -0
  167. package/dist/resolvers/css.d.ts +60 -0
  168. package/dist/resolvers/css.d.ts.map +1 -0
  169. package/dist/resolvers/css.js +531 -0
  170. package/dist/resolvers/css.js.map +1 -0
  171. package/dist/resolvers/dispatcher.d.ts +78 -0
  172. package/dist/resolvers/dispatcher.d.ts.map +1 -0
  173. package/dist/resolvers/dispatcher.js +290 -0
  174. package/dist/resolvers/dispatcher.js.map +1 -0
  175. package/dist/resolvers/dockerfile.d.ts +24 -0
  176. package/dist/resolvers/dockerfile.d.ts.map +1 -0
  177. package/dist/resolvers/dockerfile.js +221 -0
  178. package/dist/resolvers/dockerfile.js.map +1 -0
  179. package/dist/resolvers/dotenv.d.ts +27 -0
  180. package/dist/resolvers/dotenv.d.ts.map +1 -0
  181. package/dist/resolvers/dotenv.js +114 -0
  182. package/dist/resolvers/dotenv.js.map +1 -0
  183. package/dist/resolvers/imports.d.ts +63 -0
  184. package/dist/resolvers/imports.d.ts.map +1 -0
  185. package/dist/resolvers/imports.js +513 -0
  186. package/dist/resolvers/imports.js.map +1 -0
  187. package/dist/resolvers/json.d.ts +48 -0
  188. package/dist/resolvers/json.d.ts.map +1 -0
  189. package/dist/resolvers/json.js +363 -0
  190. package/dist/resolvers/json.js.map +1 -0
  191. package/dist/resolvers/lockfile-npm.d.ts +38 -0
  192. package/dist/resolvers/lockfile-npm.d.ts.map +1 -0
  193. package/dist/resolvers/lockfile-npm.js +267 -0
  194. package/dist/resolvers/lockfile-npm.js.map +1 -0
  195. package/dist/resolvers/lockfile-pnpm.d.ts +44 -0
  196. package/dist/resolvers/lockfile-pnpm.d.ts.map +1 -0
  197. package/dist/resolvers/lockfile-pnpm.js +277 -0
  198. package/dist/resolvers/lockfile-pnpm.js.map +1 -0
  199. package/dist/resolvers/lockfile-yarn.d.ts +40 -0
  200. package/dist/resolvers/lockfile-yarn.d.ts.map +1 -0
  201. package/dist/resolvers/lockfile-yarn.js +184 -0
  202. package/dist/resolvers/lockfile-yarn.js.map +1 -0
  203. package/dist/resolvers/markdown.d.ts +64 -0
  204. package/dist/resolvers/markdown.d.ts.map +1 -0
  205. package/dist/resolvers/markdown.js +335 -0
  206. package/dist/resolvers/markdown.js.map +1 -0
  207. package/dist/resolvers/vue.d.ts +65 -0
  208. package/dist/resolvers/vue.d.ts.map +1 -0
  209. package/dist/resolvers/vue.js +258 -0
  210. package/dist/resolvers/vue.js.map +1 -0
  211. package/dist/resolvers/yaml.d.ts +65 -0
  212. package/dist/resolvers/yaml.d.ts.map +1 -0
  213. package/dist/resolvers/yaml.js +405 -0
  214. package/dist/resolvers/yaml.js.map +1 -0
  215. package/dist/types.d.ts +256 -0
  216. package/dist/types.d.ts.map +1 -0
  217. package/dist/types.js +8 -0
  218. package/dist/types.js.map +1 -0
  219. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile-npm.js","sourceRoot":"","sources":["../../src/resolvers/lockfile-npm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * GitWand — Résolveur sémantique pour pnpm-lock.yaml
3
+ *
4
+ * Format pnpm-lock.yaml :
5
+ * lockfileVersion: '9.0'
6
+ * settings:
7
+ * ...
8
+ * importers:
9
+ * .:
10
+ * dependencies:
11
+ * react:
12
+ * specifier: ^18.0.0
13
+ * version: 18.2.0
14
+ * packages:
15
+ * /react@18.2.0:
16
+ * resolution: {integrity: sha512-...}
17
+ * ...
18
+ * snapshots:
19
+ * /react@18.2.0:
20
+ * dependencies: ...
21
+ *
22
+ * Stratégie :
23
+ * Le fichier est structuré en sections YAML top-level.
24
+ * On fusionne chaque section indépendamment au niveau des entrées clé-valeur.
25
+ * Les sections `packages` et `snapshots` ont des entrées par paquet résolvable.
26
+ * La section `importers` décrit les dépendances directes.
27
+ *
28
+ * Le merge 3-way utilise les lignes YAML indentées pour identifier les blocs.
29
+ */
30
+ export interface PnpmLockMergeResult {
31
+ /** Contenu fusionné ou null si échec */
32
+ merged: string | null;
33
+ /** Raison de la résolution */
34
+ reason: string;
35
+ /** Nombre d'entrées fusionnées */
36
+ resolvedEntries: number;
37
+ /** Nombre de conflits */
38
+ conflicts: number;
39
+ }
40
+ /**
41
+ * Fusionne trois versions d'un pnpm-lock.yaml par section et sous-entrée.
42
+ */
43
+ export declare function tryResolvePnpmLockConflict(baseLines: string[], oursLines: string[], theirsLines: string[]): PnpmLockMergeResult;
44
+ //# sourceMappingURL=lockfile-pnpm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile-pnpm.d.ts","sourceRoot":"","sources":["../../src/resolvers/lockfile-pnpm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AA0KD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB,mBAAmB,CAsGrB"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * GitWand — Résolveur sémantique pour pnpm-lock.yaml
3
+ *
4
+ * Format pnpm-lock.yaml :
5
+ * lockfileVersion: '9.0'
6
+ * settings:
7
+ * ...
8
+ * importers:
9
+ * .:
10
+ * dependencies:
11
+ * react:
12
+ * specifier: ^18.0.0
13
+ * version: 18.2.0
14
+ * packages:
15
+ * /react@18.2.0:
16
+ * resolution: {integrity: sha512-...}
17
+ * ...
18
+ * snapshots:
19
+ * /react@18.2.0:
20
+ * dependencies: ...
21
+ *
22
+ * Stratégie :
23
+ * Le fichier est structuré en sections YAML top-level.
24
+ * On fusionne chaque section indépendamment au niveau des entrées clé-valeur.
25
+ * Les sections `packages` et `snapshots` ont des entrées par paquet résolvable.
26
+ * La section `importers` décrit les dépendances directes.
27
+ *
28
+ * Le merge 3-way utilise les lignes YAML indentées pour identifier les blocs.
29
+ */
30
+ /**
31
+ * Parse un fichier YAML en blocs top-level.
32
+ * Chaque bloc est identifié par une clé au niveau d'indentation 0.
33
+ */
34
+ function parseTopLevelBlocks(lines) {
35
+ const preamble = [];
36
+ const blocks = new Map();
37
+ const blockOrder = [];
38
+ let currentKey = null;
39
+ let currentBody = [];
40
+ for (const line of lines) {
41
+ // Top-level key: starts at column 0, ends with ':'
42
+ const topLevelMatch = line.match(/^(\S[^:]*?):\s*(.*)?$/);
43
+ if (topLevelMatch && !line.startsWith(" ") && !line.startsWith("\t")) {
44
+ // Save previous block
45
+ if (currentKey !== null) {
46
+ blocks.set(currentKey, currentBody);
47
+ blockOrder.push(currentKey);
48
+ }
49
+ currentKey = topLevelMatch[1];
50
+ const inlineValue = topLevelMatch[2]?.trim();
51
+ // If there's an inline value (e.g., `lockfileVersion: '9.0'`), store as single line
52
+ currentBody = inlineValue ? [line] : [];
53
+ }
54
+ else if (currentKey === null) {
55
+ // Before any top-level key → preamble (comments, blank lines)
56
+ preamble.push(line);
57
+ }
58
+ else {
59
+ currentBody.push(line);
60
+ }
61
+ }
62
+ // Save last block
63
+ if (currentKey !== null) {
64
+ blocks.set(currentKey, currentBody);
65
+ blockOrder.push(currentKey);
66
+ }
67
+ return { preamble, blocks, blockOrder };
68
+ }
69
+ /**
70
+ * Pour une section comme `packages` ou `snapshots`, parse les sous-entrées
71
+ * (chaque clé indentée de 2 espaces avec son body).
72
+ */
73
+ function parseSubEntries(bodyLines) {
74
+ const entries = new Map();
75
+ let currentKey = null;
76
+ let currentBody = [];
77
+ for (const line of bodyLines) {
78
+ // Sub-entry key: indented exactly 2 spaces (top-level sub-entries only), key ends with ':'
79
+ const subMatch = line.match(/^(\s{2})(\S[^:]*?):\s*$/);
80
+ const subInlineMatch = line.match(/^(\s{2})(\S[^:]*?):\s+(.+)$/);
81
+ if (subMatch || subInlineMatch) {
82
+ // Save previous sub-entry
83
+ if (currentKey !== null) {
84
+ entries.set(currentKey, currentBody.join("\n"));
85
+ }
86
+ if (subMatch) {
87
+ currentKey = subMatch[2].trim();
88
+ currentBody = [];
89
+ }
90
+ else if (subInlineMatch) {
91
+ currentKey = subInlineMatch[2].trim();
92
+ currentBody = [line];
93
+ }
94
+ }
95
+ else if (currentKey !== null) {
96
+ currentBody.push(line);
97
+ }
98
+ }
99
+ // Save last entry
100
+ if (currentKey !== null) {
101
+ entries.set(currentKey, currentBody.join("\n"));
102
+ }
103
+ return entries;
104
+ }
105
+ // ─── 3-way merge ─────────────────────────────────────────
106
+ /**
107
+ * Merge 3-way d'une Map de sous-entrées.
108
+ */
109
+ function mergeEntryMap(base, ours, theirs) {
110
+ const allKeys = new Set([...base.keys(), ...ours.keys(), ...theirs.keys()]);
111
+ const merged = new Map();
112
+ let resolved = 0;
113
+ let conflicts = 0;
114
+ for (const key of allKeys) {
115
+ const b = base.get(key);
116
+ const o = ours.get(key);
117
+ const t = theirs.get(key);
118
+ if (b === undefined) {
119
+ // New entry
120
+ if (o !== undefined && t !== undefined) {
121
+ merged.set(key, o === t ? o : t);
122
+ }
123
+ else if (o !== undefined) {
124
+ merged.set(key, o);
125
+ }
126
+ else if (t !== undefined) {
127
+ merged.set(key, t);
128
+ }
129
+ resolved++;
130
+ continue;
131
+ }
132
+ if (o === undefined && t === undefined) {
133
+ resolved++;
134
+ continue;
135
+ }
136
+ if (o === undefined) {
137
+ if (t === b) {
138
+ resolved++;
139
+ continue;
140
+ }
141
+ merged.set(key, t);
142
+ resolved++;
143
+ continue;
144
+ }
145
+ if (t === undefined) {
146
+ if (o === b) {
147
+ resolved++;
148
+ continue;
149
+ }
150
+ merged.set(key, o);
151
+ resolved++;
152
+ continue;
153
+ }
154
+ const oChanged = o !== b;
155
+ const tChanged = t !== b;
156
+ if (!oChanged && !tChanged) {
157
+ merged.set(key, b);
158
+ }
159
+ else if (!oChanged) {
160
+ merged.set(key, t);
161
+ }
162
+ else if (!tChanged) {
163
+ merged.set(key, o);
164
+ }
165
+ else if (o === t) {
166
+ merged.set(key, o);
167
+ }
168
+ else {
169
+ // Conflit → prefer theirs
170
+ merged.set(key, t);
171
+ conflicts++;
172
+ }
173
+ resolved++;
174
+ }
175
+ return { merged, resolved, conflicts };
176
+ }
177
+ /**
178
+ * Fusionne trois versions d'un pnpm-lock.yaml par section et sous-entrée.
179
+ */
180
+ export function tryResolvePnpmLockConflict(baseLines, oursLines, theirsLines) {
181
+ const baseParsed = parseTopLevelBlocks(baseLines);
182
+ const oursParsed = parseTopLevelBlocks(oursLines);
183
+ const theirsParsed = parseTopLevelBlocks(theirsLines);
184
+ let totalResolved = 0;
185
+ let totalConflicts = 0;
186
+ // Merge section par section
187
+ const allSections = new Set([
188
+ ...baseParsed.blockOrder,
189
+ ...oursParsed.blockOrder,
190
+ ...theirsParsed.blockOrder,
191
+ ]);
192
+ const mergedSections = new Map();
193
+ // Preserve section order from ours
194
+ const sectionOrder = [...oursParsed.blockOrder];
195
+ for (const s of allSections) {
196
+ if (!sectionOrder.includes(s))
197
+ sectionOrder.push(s);
198
+ }
199
+ // Sections with sub-entries that should be merged at entry level
200
+ const entryLevelSections = new Set(["packages", "snapshots", "importers"]);
201
+ for (const section of allSections) {
202
+ const baseBody = baseParsed.blocks.get(section);
203
+ const oursBody = oursParsed.blocks.get(section);
204
+ const theirsBody = theirsParsed.blocks.get(section);
205
+ if (entryLevelSections.has(section) && baseBody && oursBody && theirsBody) {
206
+ // Merge at sub-entry level
207
+ const baseEntries = parseSubEntries(baseBody);
208
+ const oursEntries = parseSubEntries(oursBody);
209
+ const theirsEntries = parseSubEntries(theirsBody);
210
+ const { merged, resolved, conflicts } = mergeEntryMap(baseEntries, oursEntries, theirsEntries);
211
+ totalResolved += resolved;
212
+ totalConflicts += conflicts;
213
+ // Reconstruct section body
214
+ const body = [];
215
+ const sortedKeys = [...merged.keys()].sort();
216
+ for (const key of sortedKeys) {
217
+ const value = merged.get(key);
218
+ if (value.includes("\n") || value === "") {
219
+ body.push(` ${key}:`);
220
+ if (value)
221
+ body.push(...value.split("\n"));
222
+ }
223
+ else {
224
+ // Inline value — reconstruct the line
225
+ body.push(value);
226
+ }
227
+ }
228
+ mergedSections.set(section, body);
229
+ }
230
+ else {
231
+ // Simple section (scalar/header) — use 3-way text compare
232
+ const baseText = baseBody?.join("\n") ?? "";
233
+ const oursText = oursBody?.join("\n") ?? "";
234
+ const theirsText = theirsBody?.join("\n") ?? "";
235
+ if (oursText === theirsText || oursText === baseText) {
236
+ mergedSections.set(section, theirsBody ?? oursBody ?? []);
237
+ }
238
+ else if (theirsText === baseText) {
239
+ mergedSections.set(section, oursBody ?? []);
240
+ }
241
+ else {
242
+ // Both changed differently → prefer theirs
243
+ mergedSections.set(section, theirsBody ?? oursBody ?? []);
244
+ totalConflicts++;
245
+ }
246
+ totalResolved++;
247
+ }
248
+ }
249
+ // Reconstruct file
250
+ const outputLines = [...oursParsed.preamble];
251
+ for (const section of sectionOrder) {
252
+ const body = mergedSections.get(section);
253
+ if (!body)
254
+ continue;
255
+ if (body.length === 1 && body[0].startsWith(section + ":")) {
256
+ // Inline section (e.g., `lockfileVersion: '9.0'`)
257
+ outputLines.push(body[0]);
258
+ }
259
+ else {
260
+ outputLines.push(`${section}:`);
261
+ if (body.length > 0) {
262
+ outputLines.push(...body);
263
+ }
264
+ }
265
+ outputLines.push(""); // blank line between sections
266
+ }
267
+ const reason = totalConflicts > 0
268
+ ? `Fusion sémantique pnpm-lock.yaml : ${totalResolved} entrée(s), ${totalConflicts} conflit(s) résolu(s) (prefer-theirs).`
269
+ : `Fusion sémantique pnpm-lock.yaml réussie : ${totalResolved} entrée(s) fusionnée(s) sans conflit.`;
270
+ return {
271
+ merged: outputLines.join("\n"),
272
+ reason,
273
+ resolvedEntries: totalResolved,
274
+ conflicts: totalConflicts,
275
+ };
276
+ }
277
+ //# sourceMappingURL=lockfile-pnpm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile-pnpm.js","sourceRoot":"","sources":["../../src/resolvers/lockfile-pnpm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * GitWand — Résolveur sémantique pour yarn.lock
3
+ *
4
+ * Format yarn.lock (v1) : blocs indépendants de la forme :
5
+ *
6
+ * "package@^version":
7
+ * version "1.2.3"
8
+ * resolved "https://registry..."
9
+ * integrity sha512-...
10
+ * dependencies:
11
+ * dep-a "^1.0"
12
+ *
13
+ * Chaque bloc est identifié par son header (la/les ligne(s) de clé).
14
+ * Le merge se fait par bloc.
15
+ *
16
+ * Stratégie :
17
+ * 1. Parser en blocs (header → body)
18
+ * 2. Merge 3-way par header :
19
+ * - Ajouté d'un seul côté → prendre
20
+ * - Supprimé d'un seul côté (pas modifié de l'autre) → supprimer
21
+ * - Modifié d'un seul côté → prendre la modification
22
+ * - Modifié des deux côtés, même résultat → ok
23
+ * - Conflit → prefer theirs
24
+ * 3. Reconstruire le fichier trié
25
+ */
26
+ export interface YarnLockMergeResult {
27
+ /** Contenu fusionné ou null si échec */
28
+ merged: string | null;
29
+ /** Raison de la résolution */
30
+ reason: string;
31
+ /** Nombre de blocs fusionnés */
32
+ resolvedBlocks: number;
33
+ /** Nombre de conflits de version */
34
+ versionConflicts: number;
35
+ }
36
+ /**
37
+ * Fusionne trois versions d'un yarn.lock par bloc de paquet.
38
+ */
39
+ export declare function tryResolveYarnLockConflict(baseLines: string[], oursLines: string[], theirsLines: string[]): YarnLockMergeResult;
40
+ //# sourceMappingURL=lockfile-yarn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile-yarn.d.ts","sourceRoot":"","sources":["../../src/resolvers/lockfile-yarn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAsED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB,mBAAmB,CAiHrB"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * GitWand — Résolveur sémantique pour yarn.lock
3
+ *
4
+ * Format yarn.lock (v1) : blocs indépendants de la forme :
5
+ *
6
+ * "package@^version":
7
+ * version "1.2.3"
8
+ * resolved "https://registry..."
9
+ * integrity sha512-...
10
+ * dependencies:
11
+ * dep-a "^1.0"
12
+ *
13
+ * Chaque bloc est identifié par son header (la/les ligne(s) de clé).
14
+ * Le merge se fait par bloc.
15
+ *
16
+ * Stratégie :
17
+ * 1. Parser en blocs (header → body)
18
+ * 2. Merge 3-way par header :
19
+ * - Ajouté d'un seul côté → prendre
20
+ * - Supprimé d'un seul côté (pas modifié de l'autre) → supprimer
21
+ * - Modifié d'un seul côté → prendre la modification
22
+ * - Modifié des deux côtés, même résultat → ok
23
+ * - Conflit → prefer theirs
24
+ * 3. Reconstruire le fichier trié
25
+ */
26
+ /**
27
+ * Parse un yarn.lock en blocs indépendants.
28
+ * Retourne le commentaire d'en-tête et une Map<header, body>.
29
+ */
30
+ function parseYarnLock(content) {
31
+ const lines = content.split("\n");
32
+ let preamble = "";
33
+ const blocks = new Map();
34
+ let i = 0;
35
+ // Preamble : commentaires en tête
36
+ while (i < lines.length && (lines[i].startsWith("#") || lines[i].trim() === "")) {
37
+ preamble += lines[i] + "\n";
38
+ i++;
39
+ }
40
+ // Parse blocks
41
+ while (i < lines.length) {
42
+ const line = lines[i];
43
+ // Skip blank lines between blocks
44
+ if (line.trim() === "") {
45
+ i++;
46
+ continue;
47
+ }
48
+ // A header line starts at column 0 and is not a comment
49
+ if (!line.startsWith(" ") && !line.startsWith("\t") && !line.startsWith("#")) {
50
+ const header = line;
51
+ i++;
52
+ // Collect body lines (indented)
53
+ const bodyLines = [];
54
+ while (i < lines.length && (lines[i].startsWith(" ") || lines[i].startsWith("\t") || lines[i].trim() === "")) {
55
+ // Stop at blank line that precedes next header
56
+ if (lines[i].trim() === "" && i + 1 < lines.length && !lines[i + 1].startsWith(" ") && !lines[i + 1].startsWith("\t") && lines[i + 1].trim() !== "") {
57
+ break;
58
+ }
59
+ if (lines[i].trim() !== "") {
60
+ bodyLines.push(lines[i]);
61
+ }
62
+ i++;
63
+ }
64
+ blocks.set(header, bodyLines.join("\n"));
65
+ }
66
+ else {
67
+ i++;
68
+ }
69
+ }
70
+ return { preamble, blocks };
71
+ }
72
+ // ─── 3-way merge ─────────────────────────────────────────
73
+ /**
74
+ * Fusionne trois versions d'un yarn.lock par bloc de paquet.
75
+ */
76
+ export function tryResolveYarnLockConflict(baseLines, oursLines, theirsLines) {
77
+ const baseParsed = parseYarnLock(baseLines.join("\n"));
78
+ const oursParsed = parseYarnLock(oursLines.join("\n"));
79
+ const theirsParsed = parseYarnLock(theirsLines.join("\n"));
80
+ if (!baseParsed || !oursParsed || !theirsParsed) {
81
+ return {
82
+ merged: null,
83
+ reason: "Impossible de parser une des versions du yarn.lock.",
84
+ resolvedBlocks: 0,
85
+ versionConflicts: 0,
86
+ };
87
+ }
88
+ const baseBlocks = baseParsed.blocks;
89
+ const oursBlocks = oursParsed.blocks;
90
+ const theirsBlocks = theirsParsed.blocks;
91
+ const allHeaders = new Set([...baseBlocks.keys(), ...oursBlocks.keys(), ...theirsBlocks.keys()]);
92
+ const mergedBlocks = new Map();
93
+ let resolvedBlocks = 0;
94
+ let versionConflicts = 0;
95
+ for (const header of allHeaders) {
96
+ const base = baseBlocks.get(header);
97
+ const ours = oursBlocks.get(header);
98
+ const theirs = theirsBlocks.get(header);
99
+ // Pas dans base → ajout
100
+ if (base === undefined) {
101
+ if (ours !== undefined && theirs !== undefined) {
102
+ mergedBlocks.set(header, ours === theirs ? ours : theirs);
103
+ resolvedBlocks++;
104
+ }
105
+ else if (ours !== undefined) {
106
+ mergedBlocks.set(header, ours);
107
+ resolvedBlocks++;
108
+ }
109
+ else if (theirs !== undefined) {
110
+ mergedBlocks.set(header, theirs);
111
+ resolvedBlocks++;
112
+ }
113
+ continue;
114
+ }
115
+ // Supprimé des deux → ok
116
+ if (ours === undefined && theirs === undefined) {
117
+ resolvedBlocks++;
118
+ continue;
119
+ }
120
+ // Supprimé d'un côté
121
+ if (ours === undefined) {
122
+ if (theirs === base) {
123
+ resolvedBlocks++; // pas modifié, supprimé par ours → ok
124
+ }
125
+ else {
126
+ mergedBlocks.set(header, theirs); // modifié par theirs → garder
127
+ resolvedBlocks++;
128
+ }
129
+ continue;
130
+ }
131
+ if (theirs === undefined) {
132
+ if (ours === base) {
133
+ resolvedBlocks++; // pas modifié, supprimé par theirs → ok
134
+ }
135
+ else {
136
+ mergedBlocks.set(header, ours); // modifié par ours → garder
137
+ resolvedBlocks++;
138
+ }
139
+ continue;
140
+ }
141
+ // Présent partout
142
+ const oursChanged = ours !== base;
143
+ const theirsChanged = theirs !== base;
144
+ if (!oursChanged && !theirsChanged) {
145
+ mergedBlocks.set(header, base);
146
+ resolvedBlocks++;
147
+ }
148
+ else if (!oursChanged) {
149
+ mergedBlocks.set(header, theirs);
150
+ resolvedBlocks++;
151
+ }
152
+ else if (!theirsChanged) {
153
+ mergedBlocks.set(header, ours);
154
+ resolvedBlocks++;
155
+ }
156
+ else if (ours === theirs) {
157
+ mergedBlocks.set(header, ours);
158
+ resolvedBlocks++;
159
+ }
160
+ else {
161
+ // Vrai conflit → prefer theirs
162
+ mergedBlocks.set(header, theirs);
163
+ versionConflicts++;
164
+ resolvedBlocks++;
165
+ }
166
+ }
167
+ // Reconstruire le fichier : preamble + blocs triés
168
+ const sortedHeaders = [...mergedBlocks.keys()].sort();
169
+ let output = oursParsed.preamble;
170
+ for (const header of sortedHeaders) {
171
+ output += `${header}\n`;
172
+ output += `${mergedBlocks.get(header)}\n\n`;
173
+ }
174
+ const reason = versionConflicts > 0
175
+ ? `Fusion sémantique yarn.lock : ${resolvedBlocks} bloc(s), ${versionConflicts} conflit(s) résolu(s) (prefer-theirs).`
176
+ : `Fusion sémantique yarn.lock réussie : ${resolvedBlocks} bloc(s) fusionné(s) sans conflit.`;
177
+ return {
178
+ merged: output,
179
+ reason,
180
+ resolvedBlocks,
181
+ versionConflicts,
182
+ };
183
+ }
184
+ //# sourceMappingURL=lockfile-yarn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile-yarn.js","sourceRoot":"","sources":["../../src/resolvers/lockfile-yarn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAwBH;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAe;IAIpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,kCAAkC;IAClC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAChF,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC,EAAE,CAAC;IACN,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,CAAC,EAAE,CAAC;YAEJ,gCAAgC;YAChC,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC9G,+CAA+C;gBAC/C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACpJ,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC3B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,CAAC,EAAE,CAAC;YACN,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,4DAA4D;AAE5D;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAmB,EACnB,SAAmB,EACnB,WAAqB;IAErB,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,qDAAqD;YAC7D,cAAc,EAAE,CAAC;YACjB,gBAAgB,EAAE,CAAC;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACrC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;IAEzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExC,wBAAwB;QACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/C,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1D,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/B,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjC,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/C,cAAc,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,cAAc,EAAE,CAAC,CAAC,sCAAsC;YAC1D,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAO,CAAC,CAAC,CAAC,8BAA8B;gBACjE,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,cAAc,EAAE,CAAC,CAAC,wCAAwC;YAC5D,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B;gBAC5D,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,KAAK,IAAI,CAAC;QAEtC,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/B,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/B,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/B,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,gBAAgB,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;IAEjC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,MAAM,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC;QACjC,CAAC,CAAC,iCAAiC,cAAc,aAAa,gBAAgB,wCAAwC;QACtH,CAAC,CAAC,yCAAyC,cAAc,oCAAoC,CAAC;IAEhG,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM;QACN,cAAc;QACd,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * GitWand — Résolveur Markdown section-aware
3
+ *
4
+ * Résout les conflits dans les fichiers Markdown en identifiant
5
+ * la structure de sections (headings H1..H6) et en fusionnant
6
+ * section par section lorsque les modifications sont non-overlapping.
7
+ *
8
+ * Stratégie :
9
+ * 1. Détecter les headings dans les trois versions
10
+ * 2. Découper chaque version en sections (heading + contenu jusqu'au prochain heading de niveau ≤)
11
+ * 3. Pour chaque section :
12
+ * a. Si identique dans ours et theirs → garder
13
+ * b. Si modifiée d'un seul côté → accepter la modification
14
+ * c. Si section ajoutée d'un côté → ajouter
15
+ * d. Si modifiée des deux côtés différemment → conflit partiel (insert les deux versions)
16
+ * 4. Gestion du frontmatter YAML (entre --- au début du fichier) : traité séparément
17
+ *
18
+ * Limites :
19
+ * - Ne pas résoudre les conflits intra-section (renvoyés au moteur textuel)
20
+ * - Pas de merge sémantique du contenu riche (listes, tableaux, code)
21
+ */
22
+ export interface MarkdownSection {
23
+ /** Heading complet (ex: "## Mon titre") ou null pour le bloc avant le 1er heading */
24
+ heading: string | null;
25
+ /** Niveau du heading (1..6) ou 0 pour le prologue */
26
+ level: number;
27
+ /** Lignes du contenu (sans le heading) */
28
+ lines: string[];
29
+ /** Index de début dans le tableau de lignes source */
30
+ startIdx: number;
31
+ }
32
+ /**
33
+ * Détecte et extrait le frontmatter YAML si présent (--- au début).
34
+ * Retourne { frontmatter: string[], rest: string[] }.
35
+ */
36
+ export declare function extractFrontmatter(lines: string[]): {
37
+ frontmatter: string[];
38
+ rest: string[];
39
+ };
40
+ /**
41
+ * Découpe un tableau de lignes en sections Markdown.
42
+ * Chaque section commence par un heading ATX.
43
+ * Le contenu avant le premier heading forme une section "prologue" (level 0).
44
+ */
45
+ export declare function parseSections(lines: string[]): MarkdownSection[];
46
+ export interface MarkdownMergeResult {
47
+ /** Lignes fusionnées (null si conflit non résolvable) */
48
+ mergedLines: string[] | null;
49
+ /** Sections avec conflit non résolu */
50
+ conflictedSections: string[];
51
+ /** Nombre de sections fusionnées automatiquement */
52
+ resolvedSections: number;
53
+ /** Description de la fusion */
54
+ reason: string;
55
+ }
56
+ /**
57
+ * Fusionne deux versions Markdown section par section avec une base commune.
58
+ *
59
+ * @param baseLines - Lignes de la version base
60
+ * @param oursLines - Lignes de la version ours
61
+ * @param theirsLines - Lignes de la version theirs
62
+ */
63
+ export declare function tryResolveMarkdownConflict(baseLines: string[], oursLines: string[], theirsLines: string[]): MarkdownMergeResult;
64
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/resolvers/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IACnD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAsBA;AAaD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CA8BhE;AAuBD,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB,mBAAmB,CAwFrB"}