@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,541 @@
1
+ /**
2
+ * GitWand — Corpus de conflits de référence
3
+ *
4
+ * Phase 7.5 : 20 fixtures réalistes couvrant tous les types de conflit,
5
+ * les deux formats (diff2 / diff3), et différents types de fichiers.
6
+ *
7
+ * Chaque fixture définit :
8
+ * - `input` : le fichier avec marqueurs de conflit
9
+ * - `expectedType` : le type attendu (ex: "same_change")
10
+ * - `expectedResolved`: si le moteur doit auto-résoudre
11
+ * - `expectedOutput` : le contenu attendu après résolution (optionnel)
12
+ * - `category` : famille du conflit
13
+ */
14
+ // ─── Trivial — same_change ──────────────────────────────────
15
+ const F01 = {
16
+ id: "F01",
17
+ description: "same_change — même import ajouté des deux côtés (diff3)",
18
+ filePath: "src/utils.ts",
19
+ category: "trivial",
20
+ input: [
21
+ `<<<<<<< ours`,
22
+ `import { z } from "zod";`,
23
+ `import { resolve } from "path";`,
24
+ `||||||| base`,
25
+ `import { resolve } from "path";`,
26
+ `=======`,
27
+ `import { z } from "zod";`,
28
+ `import { resolve } from "path";`,
29
+ `>>>>>>> theirs`,
30
+ ].join("\n"),
31
+ expectedType: "same_change",
32
+ expectedResolved: true,
33
+ expectedOutput: `import { z } from "zod";\nimport { resolve } from "path";`,
34
+ };
35
+ const F02 = {
36
+ id: "F02",
37
+ description: "same_change — même bump de version dans package.json (diff3)",
38
+ filePath: "package.json",
39
+ category: "trivial",
40
+ input: [
41
+ `<<<<<<< ours`,
42
+ ` "version": "2.1.0",`,
43
+ `||||||| base`,
44
+ ` "version": "2.0.0",`,
45
+ `=======`,
46
+ ` "version": "2.1.0",`,
47
+ `>>>>>>> theirs`,
48
+ ].join("\n"),
49
+ expectedType: "same_change",
50
+ expectedResolved: true,
51
+ expectedOutput: ` "version": "2.1.0",`,
52
+ };
53
+ // ─── Trivial — one_side_change ──────────────────────────────
54
+ const F03 = {
55
+ id: "F03",
56
+ description: "one_side_change — refactoring theirs uniquement (diff3)",
57
+ filePath: "src/api/client.ts",
58
+ category: "trivial",
59
+ input: [
60
+ `<<<<<<< ours`,
61
+ `async function fetchUser(id: string) {`,
62
+ ` return fetch(\`/api/users/\${id}\`);`,
63
+ `}`,
64
+ `||||||| base`,
65
+ `async function fetchUser(id: string) {`,
66
+ ` return fetch(\`/api/users/\${id}\`);`,
67
+ `}`,
68
+ `=======`,
69
+ `async function fetchUser(id: string): Promise<Response> {`,
70
+ ` return fetch(\`/api/users/\${id}\`, { credentials: "include" });`,
71
+ `}`,
72
+ `>>>>>>> theirs`,
73
+ ].join("\n"),
74
+ expectedType: "one_side_change",
75
+ expectedResolved: true,
76
+ };
77
+ const F04 = {
78
+ id: "F04",
79
+ description: "one_side_change — mise à jour couleur ours uniquement (diff3)",
80
+ filePath: "src/styles/theme.css",
81
+ category: "trivial",
82
+ input: [
83
+ `<<<<<<< ours`,
84
+ ` --color-primary: #3b82f6;`,
85
+ ` --color-secondary: #64748b;`,
86
+ `||||||| base`,
87
+ ` --color-primary: #2563eb;`,
88
+ ` --color-secondary: #64748b;`,
89
+ `=======`,
90
+ ` --color-primary: #2563eb;`,
91
+ ` --color-secondary: #64748b;`,
92
+ `>>>>>>> theirs`,
93
+ ].join("\n"),
94
+ expectedType: "one_side_change",
95
+ expectedResolved: true,
96
+ };
97
+ // ─── Trivial — delete_no_change ────────────────────────────
98
+ const F05 = {
99
+ id: "F05",
100
+ description: "delete_no_change — ours supprime une fonction dépréciée (diff3)",
101
+ filePath: "src/helpers.ts",
102
+ category: "trivial",
103
+ input: [
104
+ `<<<<<<< ours`,
105
+ `||||||| base`,
106
+ `/** @deprecated Use formatDate() instead */`,
107
+ `function legacyFormat(d: Date) {`,
108
+ ` return d.toISOString();`,
109
+ `}`,
110
+ `=======`,
111
+ `/** @deprecated Use formatDate() instead */`,
112
+ `function legacyFormat(d: Date) {`,
113
+ ` return d.toISOString();`,
114
+ `}`,
115
+ `>>>>>>> theirs`,
116
+ ].join("\n"),
117
+ expectedType: "delete_no_change",
118
+ expectedResolved: true,
119
+ expectedOutput: "",
120
+ };
121
+ const F06 = {
122
+ id: "F06",
123
+ // theirs retire un import inutilisé → one_side_change (theirs ≠ base, ours = base)
124
+ // delete_no_change requiert theirsLines.length === 0 (suppression totale)
125
+ description: "one_side_change — theirs supprime un import inutilisé (diff3)",
126
+ filePath: "src/components/Button.vue",
127
+ category: "trivial",
128
+ input: [
129
+ `<<<<<<< ours`,
130
+ `import { ref, computed } from "vue";`,
131
+ `import { storeToRefs } from "pinia";`,
132
+ `||||||| base`,
133
+ `import { ref, computed } from "vue";`,
134
+ `import { storeToRefs } from "pinia";`,
135
+ `=======`,
136
+ `import { ref, computed } from "vue";`,
137
+ `>>>>>>> theirs`,
138
+ ].join("\n"),
139
+ expectedType: "one_side_change",
140
+ expectedResolved: true,
141
+ };
142
+ // ─── Structural — non_overlapping ──────────────────────────
143
+ const F07 = {
144
+ id: "F07",
145
+ // ours ajoute avant useCartStore, theirs ajoute APRÈS useCartStore → positions distinctes
146
+ description: "non_overlapping — imports ajoutés en tête et en queue (diff3)",
147
+ filePath: "src/store/index.ts",
148
+ category: "structural",
149
+ input: [
150
+ `<<<<<<< ours`,
151
+ `import { defineStore } from "pinia";`,
152
+ `import { useAuthStore } from "./auth";`,
153
+ `import { useCartStore } from "./cart";`,
154
+ `||||||| base`,
155
+ `import { defineStore } from "pinia";`,
156
+ `import { useCartStore } from "./cart";`,
157
+ `=======`,
158
+ `import { defineStore } from "pinia";`,
159
+ `import { useCartStore } from "./cart";`,
160
+ `import { useProductStore } from "./products";`,
161
+ `>>>>>>> theirs`,
162
+ ].join("\n"),
163
+ expectedType: "non_overlapping",
164
+ expectedResolved: true,
165
+ };
166
+ const F08 = {
167
+ id: "F08",
168
+ description: "non_overlapping — champs JSON ajoutés dans deux zones séparées (diff3)",
169
+ filePath: ".env.schema.json",
170
+ category: "structural",
171
+ input: [
172
+ `<<<<<<< ours`,
173
+ `{`,
174
+ ` "APP_NAME": { "type": "string" },`,
175
+ ` "API_URL": { "type": "string" },`,
176
+ ` "DB_HOST": { "type": "string" },`,
177
+ ` "DB_PORT": { "type": "number" }`,
178
+ `}`,
179
+ `||||||| base`,
180
+ `{`,
181
+ ` "APP_NAME": { "type": "string" },`,
182
+ ` "DB_HOST": { "type": "string" },`,
183
+ ` "DB_PORT": { "type": "number" }`,
184
+ `}`,
185
+ `=======`,
186
+ `{`,
187
+ ` "APP_NAME": { "type": "string" },`,
188
+ ` "DB_HOST": { "type": "string" },`,
189
+ ` "DB_PORT": { "type": "number" },`,
190
+ ` "REDIS_URL": { "type": "string" }`,
191
+ `}`,
192
+ `>>>>>>> theirs`,
193
+ ].join("\n"),
194
+ expectedType: "non_overlapping",
195
+ expectedResolved: true,
196
+ };
197
+ // ─── Structural — whitespace_only ──────────────────────────
198
+ const F09 = {
199
+ id: "F09",
200
+ // ours = 4 espaces, base = 2 espaces, theirs = 2 espaces
201
+ // → theirs = base, seul ours a changé → one_side_change
202
+ // Pour avoir whitespace_only, il faut que OURS et THEIRS diffèrent tous deux de la base
203
+ // mais uniquement en whitespace — ex: base=2esp, ours=4esp, theirs=tabs
204
+ description: "one_side_change — reformatage ours uniquement (diff3, theirs = base)",
205
+ filePath: "src/utils/date.ts",
206
+ category: "structural",
207
+ input: [
208
+ `<<<<<<< ours`,
209
+ `function formatDate(date: Date): string {`,
210
+ ` const year = date.getFullYear();`,
211
+ ` const month = String(date.getMonth() + 1).padStart(2, "0");`,
212
+ ` return \`\${year}-\${month}\`;`,
213
+ `}`,
214
+ `||||||| base`,
215
+ `function formatDate(date: Date): string {`,
216
+ ` const year = date.getFullYear();`,
217
+ ` const month = String(date.getMonth() + 1).padStart(2, "0");`,
218
+ ` return \`\${year}-\${month}\`;`,
219
+ `}`,
220
+ `=======`,
221
+ `function formatDate(date: Date): string {`,
222
+ ` const year = date.getFullYear();`,
223
+ ` const month = String(date.getMonth() + 1).padStart(2, "0");`,
224
+ ` return \`\${year}-\${month}\`;`,
225
+ `}`,
226
+ `>>>>>>> theirs`,
227
+ ].join("\n"),
228
+ expectedType: "one_side_change",
229
+ expectedResolved: true,
230
+ };
231
+ const F10 = {
232
+ id: "F10",
233
+ description: "whitespace_only — reformatage CSS, sans base (diff2)",
234
+ filePath: "src/styles/reset.css",
235
+ category: "structural",
236
+ input: [
237
+ `<<<<<<< ours`,
238
+ `*,`,
239
+ `*::before,`,
240
+ `*::after {`,
241
+ ` box-sizing: border-box;`,
242
+ ` margin: 0;`,
243
+ ` padding: 0;`,
244
+ `}`,
245
+ `=======`,
246
+ `*,`,
247
+ `*::before,`,
248
+ `*::after {`,
249
+ ` box-sizing: border-box;`,
250
+ ` margin: 0;`,
251
+ ` padding: 0;`,
252
+ `}`,
253
+ `>>>>>>> theirs`,
254
+ ].join("\n"),
255
+ expectedType: "whitespace_only",
256
+ expectedResolved: true,
257
+ };
258
+ // ─── Semantic — value_only_change ──────────────────────────
259
+ const F11 = {
260
+ id: "F11",
261
+ description: "value_only_change — hash Vite d'assets différents (diff2)",
262
+ filePath: "dist/manifest.json",
263
+ category: "semantic",
264
+ input: [
265
+ `<<<<<<< ours`,
266
+ ` "src/main.ts": {`,
267
+ ` "file": "assets/main-BVdDe8aQ.js",`,
268
+ ` "css": ["assets/main-C1xPLZoN.css"]`,
269
+ ` }`,
270
+ `=======`,
271
+ ` "src/main.ts": {`,
272
+ ` "file": "assets/main-Dx9QwPzM.js",`,
273
+ ` "css": ["assets/main-Bz7KpRvN.css"]`,
274
+ ` }`,
275
+ `>>>>>>> theirs`,
276
+ ].join("\n"),
277
+ expectedType: "value_only_change",
278
+ expectedResolved: true,
279
+ };
280
+ const F12 = {
281
+ id: "F12",
282
+ description: "value_only_change — bump de semver dans package.json (diff2)",
283
+ filePath: "package.json",
284
+ category: "semantic",
285
+ input: [
286
+ `<<<<<<< ours`,
287
+ ` "dependencies": {`,
288
+ ` "vue": "^3.4.15",`,
289
+ ` "pinia": "^2.1.7"`,
290
+ ` }`,
291
+ `=======`,
292
+ ` "dependencies": {`,
293
+ ` "vue": "^3.4.21",`,
294
+ ` "pinia": "^2.1.7"`,
295
+ ` }`,
296
+ `>>>>>>> theirs`,
297
+ ].join("\n"),
298
+ expectedType: "value_only_change",
299
+ expectedResolved: true,
300
+ options: { minConfidence: "medium" },
301
+ };
302
+ // ─── Semantic — generated_file ──────────────────────────────
303
+ const F13 = {
304
+ id: "F13",
305
+ // hash/version/URL = tokens volatiles → value_only_change (avant le reclassement generated_file)
306
+ // generated_file n'est déclenché que sur les hunks complex — ici le moteur détecte
307
+ // d'abord value_only_change (tous les tokens différents sont des volatils)
308
+ description: "value_only_change — package-lock.json : version bump + hash (diff2)",
309
+ filePath: "package-lock.json",
310
+ category: "semantic",
311
+ input: [
312
+ `<<<<<<< ours`,
313
+ ` "node_modules/typescript": {`,
314
+ ` "version": "5.3.3",`,
315
+ ` "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",`,
316
+ ` "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oqEnVA=="`,
317
+ ` }`,
318
+ `=======`,
319
+ ` "node_modules/typescript": {`,
320
+ ` "version": "5.4.5",`,
321
+ ` "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",`,
322
+ ` "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqZ0ytsUoiWZ2SDcTib8w=="`,
323
+ ` }`,
324
+ `>>>>>>> theirs`,
325
+ ].join("\n"),
326
+ expectedType: "value_only_change",
327
+ expectedResolved: true,
328
+ options: { minConfidence: "medium" },
329
+ };
330
+ const F14 = {
331
+ id: "F14",
332
+ // build/manifest.json avec structure identique, hashes différents → value_only_change
333
+ // Le reclassement generated_file ne se fait que depuis complex (sans base, le
334
+ // résolveur détecte ici des tokens volatils → value_only_change en priorité)
335
+ description: "generated_file — build/manifest.json : reclassifié, résolu via theirs",
336
+ filePath: "public/build/manifest.json",
337
+ category: "semantic",
338
+ input: [
339
+ `<<<<<<< ours`,
340
+ `{"/js/app.js": "/js/app.abc123.js", "/css/app.css": "/css/app.def456.css"}`,
341
+ `||||||| base`,
342
+ `{"/js/app.js": "/js/app.aaa000.js", "/css/app.css": "/css/app.aaa000.css"}`,
343
+ `=======`,
344
+ `{"/js/app.js": "/js/app.xyz789.js", "/css/app.css": "/css/app.uvw012.css"}`,
345
+ `>>>>>>> theirs`,
346
+ ].join("\n"),
347
+ // diff3 + les deux côtés changent + tokens non-volatils (clés) → complex → generated_file
348
+ expectedType: "generated_file",
349
+ expectedResolved: true,
350
+ };
351
+ // ─── Format-aware — JSON sémantique ────────────────────────
352
+ const F15 = {
353
+ id: "F15",
354
+ description: "format-aware JSON — dépendances ajoutées des deux côtés (fichier entier)",
355
+ filePath: "config.json",
356
+ category: "format-aware",
357
+ input: [
358
+ `<<<<<<< ours`,
359
+ `{`,
360
+ ` "name": "my-app",`,
361
+ ` "version": "1.0.0",`,
362
+ ` "features": ["auth", "logging"]`,
363
+ `}`,
364
+ `||||||| base`,
365
+ `{`,
366
+ ` "name": "my-app",`,
367
+ ` "version": "1.0.0",`,
368
+ ` "features": ["auth"]`,
369
+ `}`,
370
+ `=======`,
371
+ `{`,
372
+ ` "name": "my-app",`,
373
+ ` "version": "1.0.0",`,
374
+ ` "features": ["auth"],`,
375
+ ` "theme": "dark"`,
376
+ `}`,
377
+ `>>>>>>> theirs`,
378
+ ].join("\n"),
379
+ // JSON resolver tenté en premier, peut échouer sur les tableaux → textuel prend le relais
380
+ expectedType: "one_side_change",
381
+ expectedResolved: true,
382
+ };
383
+ // ─── Format-aware — Markdown section-aware ─────────────────
384
+ const F16 = {
385
+ id: "F16",
386
+ // v1.4 — Le résolveur Markdown merge maintenant les listes à puces en union.
387
+ // theirs a ajouté "- fix: memory leak in session handler" dans [2.1.0].
388
+ // Le merge bullet-list produit: ours items ∪ theirs items → résolu automatiquement.
389
+ description: "format-aware Markdown — bullet-list merge dans une section (diff2, résolu en v1.4)",
390
+ filePath: "CHANGELOG.md",
391
+ category: "format-aware",
392
+ input: [
393
+ `<<<<<<< ours`,
394
+ `# Changelog`,
395
+ ``,
396
+ `## [2.1.0] - 2025-01-15`,
397
+ ``,
398
+ `- feat: new authentication flow`,
399
+ ``,
400
+ `## [2.0.0] - 2024-12-01`,
401
+ ``,
402
+ `- Initial release`,
403
+ `=======`,
404
+ `# Changelog`,
405
+ ``,
406
+ `## [2.1.0] - 2025-01-15`,
407
+ ``,
408
+ `- feat: new authentication flow`,
409
+ `- fix: memory leak in session handler`,
410
+ ``,
411
+ `## [2.0.0] - 2024-12-01`,
412
+ ``,
413
+ `- Initial release`,
414
+ `>>>>>>> theirs`,
415
+ ].join("\n"),
416
+ expectedType: "complex", // Le type textuel reste complex (pas de base diff3)
417
+ expectedResolved: true, // v1.4 : bullet-list merge résout ce cas
418
+ expectedOutput: undefined, // Contenu vérifié dans les tests Markdown dédiés
419
+ };
420
+ // ─── Complex — résolution manuelle requise ──────────────────
421
+ const F17 = {
422
+ id: "F17",
423
+ description: "complex — deux branches modifient la même fonction différemment",
424
+ filePath: "src/auth/session.ts",
425
+ category: "complex",
426
+ input: [
427
+ `<<<<<<< ours`,
428
+ `export function createSession(userId: string): Session {`,
429
+ ` const token = generateSecureToken(32);`,
430
+ ` const expiresAt = new Date(Date.now() + 7 * 24 * 3600 * 1000);`,
431
+ ` return { userId, token, expiresAt, createdAt: new Date() };`,
432
+ `}`,
433
+ `||||||| base`,
434
+ `export function createSession(userId: string): Session {`,
435
+ ` const token = generateToken();`,
436
+ ` return { userId, token };`,
437
+ `}`,
438
+ `=======`,
439
+ `export function createSession(userId: string, options: SessionOptions = {}): Session {`,
440
+ ` const token = generateToken();`,
441
+ ` const ttl = options.ttl ?? DEFAULT_TTL;`,
442
+ ` return { userId, token, ttl };`,
443
+ `}`,
444
+ `>>>>>>> theirs`,
445
+ ].join("\n"),
446
+ expectedType: "complex",
447
+ expectedResolved: false,
448
+ expectedOutput: null,
449
+ };
450
+ const F18 = {
451
+ id: "F18",
452
+ // v1.4 : les deux branches ont uniquement inséré des gardes différentes
453
+ // sans supprimer de lignes de la base → insertion_at_boundary résout par union.
454
+ // Résultat : [case block] + [cart-full guard] + [dedup guard] + [return] + [}]
455
+ description: "insertion_at_boundary — gardes additives dans un reducer (diff3)",
456
+ filePath: "src/store/cart.ts",
457
+ category: "structural",
458
+ input: [
459
+ `<<<<<<< ours`,
460
+ `case "ADD_ITEM": {`,
461
+ ` if (state.items.length >= MAX_ITEMS) throw new Error("Cart full");`,
462
+ ` return { ...state, items: [...state.items, action.item] };`,
463
+ `}`,
464
+ `||||||| base`,
465
+ `case "ADD_ITEM": {`,
466
+ ` return { ...state, items: [...state.items, action.item] };`,
467
+ `}`,
468
+ `=======`,
469
+ `case "ADD_ITEM": {`,
470
+ ` const existing = state.items.find(i => i.id === action.item.id);`,
471
+ ` if (existing) return { ...state };`,
472
+ ` return { ...state, items: [...state.items, action.item] };`,
473
+ `}`,
474
+ `>>>>>>> theirs`,
475
+ ].join("\n"),
476
+ expectedType: "insertion_at_boundary",
477
+ expectedResolved: true,
478
+ };
479
+ // ─── Edge cases ────────────────────────────────────────────
480
+ const F19 = {
481
+ id: "F19",
482
+ description: "delete_no_change (diff2) — ours supprime un bloc (confiance medium)",
483
+ filePath: "src/legacy/adapter.ts",
484
+ category: "structural",
485
+ input: [
486
+ `<<<<<<< ours`,
487
+ `=======`,
488
+ `// @deprecated — migrated to new API`,
489
+ `export function legacyAdapter(data: any) {`,
490
+ ` return { ...data, _migrated: false };`,
491
+ `}`,
492
+ `>>>>>>> theirs`,
493
+ ].join("\n"),
494
+ expectedType: "delete_no_change",
495
+ expectedResolved: true,
496
+ options: { minConfidence: "medium" },
497
+ };
498
+ const F20 = {
499
+ id: "F20",
500
+ description: "value_only_change rejeté — trop de tokens non-volatiles (reste complex)",
501
+ filePath: "src/config/defaults.ts",
502
+ category: "complex",
503
+ input: [
504
+ `<<<<<<< ours`,
505
+ `export const CONFIG = {`,
506
+ ` maxRetries: 5,`,
507
+ ` timeout: 30000,`,
508
+ ` baseUrl: "https://api.prod.example.com",`,
509
+ ` debug: false,`,
510
+ ` logLevel: "warn",`,
511
+ `};`,
512
+ `=======`,
513
+ `export const CONFIG = {`,
514
+ ` maxRetries: 3,`,
515
+ ` timeout: 10000,`,
516
+ ` baseUrl: "https://api.staging.example.com",`,
517
+ ` debug: true,`,
518
+ ` logLevel: "debug",`,
519
+ `};`,
520
+ `>>>>>>> theirs`,
521
+ ].join("\n"),
522
+ expectedType: "complex",
523
+ expectedResolved: false,
524
+ expectedOutput: null,
525
+ };
526
+ // ─── Export ─────────────────────────────────────────────────
527
+ export const CORPUS = [
528
+ F01, F02, F03, F04, F05,
529
+ F06, F07, F08, F09, F10,
530
+ F11, F12, F13, F14, F15,
531
+ F16, F17, F18, F19, F20,
532
+ ];
533
+ /** Résumé par catégorie */
534
+ export const CORPUS_CATEGORIES = {
535
+ trivial: CORPUS.filter(f => f.category === "trivial"),
536
+ structural: CORPUS.filter(f => f.category === "structural"),
537
+ semantic: CORPUS.filter(f => f.category === "semantic"),
538
+ "format-aware": CORPUS.filter(f => f.category === "format-aware"),
539
+ complex: CORPUS.filter(f => f.category === "complex"),
540
+ };
541
+ //# sourceMappingURL=corpus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corpus.js","sourceRoot":"","sources":["../../src/__tests__/corpus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GitWand — Tests sur le corpus de référence (Phase 7.5)
3
+ *
4
+ * Ce fichier sert à la fois de suite de régression (chaque fixture doit
5
+ * continuer à produire le résultat attendu) et de générateur de métriques
6
+ * (taux de résolution par type, par catégorie, faux positifs / négatifs).
7
+ *
8
+ * ## Métriques produites
9
+ *
10
+ * - Taux global d'auto-résolution
11
+ * - Taux par ConflictType
12
+ * - Faux positifs : fixture avec expectedResolved=false mais résolue
13
+ * - Faux négatifs : fixture avec expectedResolved=true mais non résolue
14
+ * - Score de confiance moyen par type
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=corpus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corpus.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/corpus.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}