@gitwand/core 2.3.0 → 2.4.1

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 (113) hide show
  1. package/dist/__tests__/corpus.d.ts.map +1 -1
  2. package/dist/__tests__/corpus.js +115 -0
  3. package/dist/__tests__/corpus.js.map +1 -1
  4. package/dist/__tests__/patterns/complex.test.d.ts +9 -0
  5. package/dist/__tests__/patterns/complex.test.d.ts.map +1 -0
  6. package/dist/__tests__/patterns/complex.test.js +198 -0
  7. package/dist/__tests__/patterns/complex.test.js.map +1 -0
  8. package/dist/__tests__/patterns/delete-no-change.test.d.ts +11 -0
  9. package/dist/__tests__/patterns/delete-no-change.test.d.ts.map +1 -0
  10. package/dist/__tests__/patterns/delete-no-change.test.js +178 -0
  11. package/dist/__tests__/patterns/delete-no-change.test.js.map +1 -0
  12. package/dist/__tests__/patterns/non-overlapping.test.d.ts +11 -0
  13. package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
  14. package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
  15. package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
  16. package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
  17. package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
  18. package/dist/__tests__/patterns/one-side-change.test.js +191 -0
  19. package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
  20. package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
  21. package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
  22. package/dist/__tests__/patterns/same-change.test.js +173 -0
  23. package/dist/__tests__/patterns/same-change.test.js.map +1 -0
  24. package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
  25. package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
  26. package/dist/__tests__/patterns/value-only-change.test.js +159 -0
  27. package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
  28. package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
  29. package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
  30. package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
  31. package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
  32. package/dist/__tests__/resolvers/css.test.d.ts +12 -0
  33. package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
  34. package/dist/__tests__/resolvers/css.test.js +171 -0
  35. package/dist/__tests__/resolvers/css.test.js.map +1 -0
  36. package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
  37. package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
  38. package/dist/__tests__/resolvers/imports.test.js +135 -0
  39. package/dist/__tests__/resolvers/imports.test.js.map +1 -0
  40. package/dist/__tests__/resolvers/json.test.d.ts +12 -0
  41. package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
  42. package/dist/__tests__/resolvers/json.test.js +184 -0
  43. package/dist/__tests__/resolvers/json.test.js.map +1 -0
  44. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
  45. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
  46. package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
  47. package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
  48. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
  49. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
  50. package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
  51. package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
  52. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
  53. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
  54. package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
  55. package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
  56. package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
  57. package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
  58. package/dist/__tests__/resolvers/markdown.test.js +188 -0
  59. package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
  60. package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
  61. package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
  62. package/dist/__tests__/resolvers/vue.test.js +225 -0
  63. package/dist/__tests__/resolvers/vue.test.js.map +1 -0
  64. package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
  65. package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
  66. package/dist/__tests__/resolvers/yaml.test.js +203 -0
  67. package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
  68. package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
  69. package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
  70. package/dist/__tests__/v2-core-scenarios.test.js +692 -0
  71. package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
  72. package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
  73. package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
  74. package/dist/__tests__/validation-parse-tree.test.js +243 -0
  75. package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
  76. package/dist/config.d.ts +25 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +17 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/diff/index.d.ts.map +1 -1
  81. package/dist/diff/index.js +1 -3
  82. package/dist/diff/index.js.map +1 -1
  83. package/dist/patterns/utils.d.ts +8 -7
  84. package/dist/patterns/utils.d.ts.map +1 -1
  85. package/dist/patterns/utils.js +13 -12
  86. package/dist/patterns/utils.js.map +1 -1
  87. package/dist/resolver/adapters/strict-node.d.ts +32 -0
  88. package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
  89. package/dist/resolver/adapters/strict-node.js +117 -0
  90. package/dist/resolver/adapters/strict-node.js.map +1 -0
  91. package/dist/resolver/index.d.ts +20 -1
  92. package/dist/resolver/index.d.ts.map +1 -1
  93. package/dist/resolver/index.js +89 -5
  94. package/dist/resolver/index.js.map +1 -1
  95. package/dist/resolver/policy.d.ts.map +1 -1
  96. package/dist/resolver/policy.js +3 -0
  97. package/dist/resolver/policy.js.map +1 -1
  98. package/dist/resolver/validate-parse-tree.d.ts +52 -0
  99. package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
  100. package/dist/resolver/validate-parse-tree.js +87 -0
  101. package/dist/resolver/validate-parse-tree.js.map +1 -0
  102. package/dist/resolver/validate-strict.d.ts +27 -0
  103. package/dist/resolver/validate-strict.d.ts.map +1 -0
  104. package/dist/resolver/validate-strict.js +41 -0
  105. package/dist/resolver/validate-strict.js.map +1 -0
  106. package/dist/resolver/validation.d.ts.map +1 -1
  107. package/dist/resolver/validation.js +15 -1
  108. package/dist/resolver/validation.js.map +1 -1
  109. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  110. package/dist/resolvers/dispatcher.js.map +1 -1
  111. package/dist/types.d.ts +60 -3
  112. package/dist/types.d.ts.map +1 -1
  113. package/package.json +1 -1
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Tests du resolver Vue SFC (GitWand)
3
+ *
4
+ * Fixtures :
5
+ * F1 — modification dans <template> d'un seul côté
6
+ * F2 — modification dans <script setup> d'un seul côté
7
+ * F3 — fichier .vue minimal
8
+ * F4 — ajout d'un <style scoped> d'un côté
9
+ * F5 — conflit dans <template> des deux côtés → conflit ou fallback
10
+ */
11
+ import { describe, it, expect } from "vitest";
12
+ import { resolve } from "../../resolver.js";
13
+ // ─── F1 — modification dans <template> d'un seul côté ────────────────────────
14
+ describe("F1 — Vue : modification dans <template> d'un seul côté (diff3)", () => {
15
+ const input = [
16
+ `<<<<<<< ours`,
17
+ `<template>`,
18
+ ` <div class="app">`,
19
+ ` <h1>Hello World</h1>`,
20
+ ` <p>Welcome to my app</p>`,
21
+ ` </div>`,
22
+ `</template>`,
23
+ ``,
24
+ `<script setup>`,
25
+ `const title = 'Hello World';`,
26
+ `</script>`,
27
+ `||||||| base`,
28
+ `<template>`,
29
+ ` <div class="app">`,
30
+ ` <h1>Hello World</h1>`,
31
+ ` </div>`,
32
+ `</template>`,
33
+ ``,
34
+ `<script setup>`,
35
+ `const title = 'Hello World';`,
36
+ `</script>`,
37
+ `=======`,
38
+ `<template>`,
39
+ ` <div class="app">`,
40
+ ` <h1>Hello World</h1>`,
41
+ ` </div>`,
42
+ `</template>`,
43
+ ``,
44
+ `<script setup>`,
45
+ `const title = 'Hello World';`,
46
+ `</script>`,
47
+ `>>>>>>> theirs`,
48
+ ].join("\n");
49
+ it("auto-résout via le resolver vue", () => {
50
+ const result = resolve(input, "App.vue");
51
+ expect(result.stats.autoResolved).toBe(1);
52
+ });
53
+ it("le résultat contient la modification du template", () => {
54
+ const result = resolve(input, "App.vue");
55
+ expect(result.mergedContent).toContain("Welcome to my app");
56
+ });
57
+ it("la raison mentionne [vue]", () => {
58
+ const result = resolve(input, "App.vue");
59
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
60
+ });
61
+ });
62
+ // ─── F2 — modification dans <script setup> d'un seul côté ────────────────────
63
+ describe("F2 — Vue : modification dans <script setup> d'un seul côté (diff3)", () => {
64
+ const input = [
65
+ `<<<<<<< ours`,
66
+ `<template>`,
67
+ ` <button @click="handleClick">Click me</button>`,
68
+ `</template>`,
69
+ ``,
70
+ `<script setup lang="ts">`,
71
+ `import { ref } from 'vue';`,
72
+ `import { useRouter } from 'vue-router';`,
73
+ ``,
74
+ `const count = ref(0);`,
75
+ `const router = useRouter();`,
76
+ ``,
77
+ `function handleClick() {`,
78
+ ` count.value++;`,
79
+ `}`,
80
+ `</script>`,
81
+ `||||||| base`,
82
+ `<template>`,
83
+ ` <button @click="handleClick">Click me</button>`,
84
+ `</template>`,
85
+ ``,
86
+ `<script setup lang="ts">`,
87
+ `import { ref } from 'vue';`,
88
+ ``,
89
+ `const count = ref(0);`,
90
+ ``,
91
+ `function handleClick() {`,
92
+ ` count.value++;`,
93
+ `}`,
94
+ `</script>`,
95
+ `=======`,
96
+ `<template>`,
97
+ ` <button @click="handleClick">Click me</button>`,
98
+ `</template>`,
99
+ ``,
100
+ `<script setup lang="ts">`,
101
+ `import { ref } from 'vue';`,
102
+ ``,
103
+ `const count = ref(0);`,
104
+ ``,
105
+ `function handleClick() {`,
106
+ ` count.value++;`,
107
+ `}`,
108
+ `</script>`,
109
+ `>>>>>>> theirs`,
110
+ ].join("\n");
111
+ it("auto-résout via le resolver vue", () => {
112
+ const result = resolve(input, "Button.vue");
113
+ expect(result.stats.autoResolved).toBe(1);
114
+ });
115
+ it("le résultat contient le code ajouté dans script setup", () => {
116
+ const result = resolve(input, "Button.vue");
117
+ expect(result.mergedContent).toContain("useRouter");
118
+ });
119
+ it("la raison mentionne [vue]", () => {
120
+ const result = resolve(input, "Button.vue");
121
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
122
+ });
123
+ });
124
+ // ─── F3 — fichier .vue minimal ────────────────────────────────────────────────
125
+ describe("F3 — Vue minimal : ne plante pas", () => {
126
+ const input = [
127
+ `<<<<<<< ours`,
128
+ `<template><div>Ours</div></template>`,
129
+ `=======`,
130
+ `<template><div>Theirs</div></template>`,
131
+ `>>>>>>> theirs`,
132
+ ].join("\n");
133
+ it("ne lève pas d'exception", () => {
134
+ expect(() => resolve(input, "Minimal.vue")).not.toThrow();
135
+ });
136
+ it("produit un résultat avec au moins un hunk", () => {
137
+ const result = resolve(input, "Minimal.vue");
138
+ expect(result.hunks.length).toBeGreaterThanOrEqual(1);
139
+ });
140
+ });
141
+ // ─── F4 — ajout d'un <style scoped> d'un côté ────────────────────────────────
142
+ describe("F4 — Vue : ajout d'un <style scoped> d'un côté (diff3)", () => {
143
+ const input = [
144
+ `<<<<<<< ours`,
145
+ `<template>`,
146
+ ` <div class="card">Card content</div>`,
147
+ `</template>`,
148
+ ``,
149
+ `<script setup lang="ts">`,
150
+ `// component logic`,
151
+ `</script>`,
152
+ ``,
153
+ `<style scoped>`,
154
+ `.card {`,
155
+ ` padding: 16px;`,
156
+ ` border-radius: 8px;`,
157
+ ` box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);`,
158
+ `}`,
159
+ `</style>`,
160
+ `||||||| base`,
161
+ `<template>`,
162
+ ` <div class="card">Card content</div>`,
163
+ `</template>`,
164
+ ``,
165
+ `<script setup lang="ts">`,
166
+ `// component logic`,
167
+ `</script>`,
168
+ `=======`,
169
+ `<template>`,
170
+ ` <div class="card">Card content</div>`,
171
+ `</template>`,
172
+ ``,
173
+ `<script setup lang="ts">`,
174
+ `// component logic`,
175
+ `</script>`,
176
+ `>>>>>>> theirs`,
177
+ ].join("\n");
178
+ it("auto-résout via le resolver vue", () => {
179
+ const result = resolve(input, "Card.vue");
180
+ expect(result.stats.autoResolved).toBe(1);
181
+ });
182
+ it("le résultat contient le bloc style ajouté", () => {
183
+ const result = resolve(input, "Card.vue");
184
+ expect(result.mergedContent).toContain("<style scoped>");
185
+ expect(result.mergedContent).toContain(".card");
186
+ });
187
+ it("la raison mentionne [vue]", () => {
188
+ const result = resolve(input, "Card.vue");
189
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
190
+ });
191
+ });
192
+ // ─── F5 — conflit dans <template> des deux côtés ─────────────────────────────
193
+ describe("F5 — Vue : conflit dans <template> des deux côtés (diff3)", () => {
194
+ const input = [
195
+ `<<<<<<< ours`,
196
+ `<template>`,
197
+ ` <div class="app">`,
198
+ ` <h1>My Awesome App</h1>`,
199
+ ` <p>Version 2.0</p>`,
200
+ ` </div>`,
201
+ `</template>`,
202
+ `||||||| base`,
203
+ `<template>`,
204
+ ` <div class="app">`,
205
+ ` <h1>My App</h1>`,
206
+ ` </div>`,
207
+ `</template>`,
208
+ `=======`,
209
+ `<template>`,
210
+ ` <div class="app">`,
211
+ ` <h1>My Great App</h1>`,
212
+ ` <span>Beta</span>`,
213
+ ` </div>`,
214
+ `</template>`,
215
+ `>>>>>>> theirs`,
216
+ ].join("\n");
217
+ it("ne lève pas d'exception", () => {
218
+ expect(() => resolve(input, "App.vue")).not.toThrow();
219
+ });
220
+ it("la raison mentionne [vue]", () => {
221
+ const result = resolve(input, "App.vue");
222
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
223
+ });
224
+ });
225
+ //# sourceMappingURL=vue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/vue.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tests du resolver YAML (GitWand)
3
+ *
4
+ * Fixtures :
5
+ * F1 — clé ajoutée d'un seul côté
6
+ * F2 — même clé modifiée des deux côtés → conflit non résolvable
7
+ * F3 — YAML minimal (1 ligne)
8
+ * F4 — conflit dans values.yaml Helm (clés indépendantes)
9
+ * F5 — conflit dans un workflow GitHub Actions
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=yaml.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/yaml.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Tests du resolver YAML (GitWand)
3
+ *
4
+ * Fixtures :
5
+ * F1 — clé ajoutée d'un seul côté
6
+ * F2 — même clé modifiée des deux côtés → conflit non résolvable
7
+ * F3 — YAML minimal (1 ligne)
8
+ * F4 — conflit dans values.yaml Helm (clés indépendantes)
9
+ * F5 — conflit dans un workflow GitHub Actions
10
+ */
11
+ import { describe, it, expect } from "vitest";
12
+ import { resolve } from "../../resolver.js";
13
+ // ─── F1 — clé ajoutée d'un seul côté ─────────────────────────────────────────
14
+ describe("F1 — YAML : clé ajoutée d'un seul côté (diff3)", () => {
15
+ const input = [
16
+ `<<<<<<< ours`,
17
+ `app:`,
18
+ ` name: my-app`,
19
+ ` version: 1.0.0`,
20
+ ` debug: true`,
21
+ `||||||| base`,
22
+ `app:`,
23
+ ` name: my-app`,
24
+ ` version: 1.0.0`,
25
+ `=======`,
26
+ `app:`,
27
+ ` name: my-app`,
28
+ ` version: 1.0.0`,
29
+ `>>>>>>> theirs`,
30
+ ].join("\n");
31
+ it("auto-résout via le resolver yaml", () => {
32
+ const result = resolve(input, "config.yaml");
33
+ expect(result.stats.autoResolved).toBe(1);
34
+ });
35
+ it("le résultat contient la clé ajoutée", () => {
36
+ const result = resolve(input, "config.yaml");
37
+ expect(result.mergedContent).toContain("debug");
38
+ });
39
+ it("la raison mentionne [yaml]", () => {
40
+ const result = resolve(input, "config.yaml");
41
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
42
+ });
43
+ });
44
+ // ─── F2 — même clé modifiée des deux côtés ────────────────────────────────────
45
+ describe("F2 — YAML : même clé modifiée des deux côtés → conflit non résolvable", () => {
46
+ const input = [
47
+ `<<<<<<< ours`,
48
+ `app:`,
49
+ ` name: my-app`,
50
+ ` port: 8080`,
51
+ `||||||| base`,
52
+ `app:`,
53
+ ` name: my-app`,
54
+ ` port: 3000`,
55
+ `=======`,
56
+ `app:`,
57
+ ` name: my-app`,
58
+ ` port: 9090`,
59
+ `>>>>>>> theirs`,
60
+ ].join("\n");
61
+ it("ne lève pas d'exception", () => {
62
+ expect(() => resolve(input, "config.yaml")).not.toThrow();
63
+ });
64
+ it("la raison mentionne [yaml]", () => {
65
+ const result = resolve(input, "config.yaml");
66
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
67
+ });
68
+ });
69
+ // ─── F3 — YAML minimal ───────────────────────────────────────────────────────
70
+ describe("F3 — YAML minimal : ne plante pas", () => {
71
+ const input = [
72
+ `<<<<<<< ours`,
73
+ `key: value-ours`,
74
+ `||||||| base`,
75
+ `key: value-base`,
76
+ `=======`,
77
+ `key: value-theirs`,
78
+ `>>>>>>> theirs`,
79
+ ].join("\n");
80
+ it("ne lève pas d'exception", () => {
81
+ expect(() => resolve(input, "minimal.yaml")).not.toThrow();
82
+ });
83
+ it("produit un résultat avec au moins un hunk", () => {
84
+ const result = resolve(input, "minimal.yaml");
85
+ expect(result.hunks.length).toBeGreaterThanOrEqual(1);
86
+ });
87
+ });
88
+ // ─── F4 — conflit dans values.yaml Helm (clés indépendantes) ─────────────────
89
+ describe("F4 — values.yaml Helm : merge de clés indépendantes (diff3)", () => {
90
+ const input = [
91
+ `<<<<<<< ours`,
92
+ `replicaCount: 2`,
93
+ ``,
94
+ `image:`,
95
+ ` repository: my-registry/my-app`,
96
+ ` tag: v1.2.0`,
97
+ ``,
98
+ `resources:`,
99
+ ` limits:`,
100
+ ` cpu: 500m`,
101
+ ` memory: 512Mi`,
102
+ `||||||| base`,
103
+ `replicaCount: 1`,
104
+ ``,
105
+ `image:`,
106
+ ` repository: my-registry/my-app`,
107
+ ` tag: v1.1.0`,
108
+ `||||||| base`,
109
+ `replicaCount: 1`,
110
+ ``,
111
+ `image:`,
112
+ ` repository: my-registry/my-app`,
113
+ ` tag: v1.1.0`,
114
+ `=======`,
115
+ `replicaCount: 1`,
116
+ ``,
117
+ `image:`,
118
+ ` repository: my-registry/my-app`,
119
+ ` tag: v1.2.0`,
120
+ ``,
121
+ `service:`,
122
+ ` type: ClusterIP`,
123
+ ` port: 80`,
124
+ `>>>>>>> theirs`,
125
+ ].join("\n");
126
+ it("ne lève pas d'exception", () => {
127
+ expect(() => resolve(input, "values.yaml")).not.toThrow();
128
+ });
129
+ it("la raison mentionne [yaml]", () => {
130
+ const result = resolve(input, "values.yaml");
131
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
132
+ });
133
+ });
134
+ describe("F4b — values.yml Helm simple : merge de clés indépendantes (diff3)", () => {
135
+ const input = [
136
+ `<<<<<<< ours`,
137
+ `replicaCount: 2`,
138
+ `image:`,
139
+ ` repository: my-registry/my-app`,
140
+ ` tag: v1.2.0`,
141
+ `resources:`,
142
+ ` limits:`,
143
+ ` cpu: 500m`,
144
+ `||||||| base`,
145
+ `replicaCount: 1`,
146
+ `image:`,
147
+ ` repository: my-registry/my-app`,
148
+ ` tag: v1.1.0`,
149
+ `=======`,
150
+ `replicaCount: 1`,
151
+ `image:`,
152
+ ` repository: my-registry/my-app`,
153
+ ` tag: v1.2.0`,
154
+ `service:`,
155
+ ` type: ClusterIP`,
156
+ `>>>>>>> theirs`,
157
+ ].join("\n");
158
+ it("auto-résout ou ne plante pas", () => {
159
+ expect(() => resolve(input, "values.yml")).not.toThrow();
160
+ });
161
+ it("la raison mentionne [yaml]", () => {
162
+ const result = resolve(input, "values.yml");
163
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
164
+ });
165
+ });
166
+ // ─── F5 — clé ajoutée d'un seul côté (conflit YAML réel nécessitant le resolver) ─
167
+ describe("F5 — YAML : clé de config ajoutée d'un seul côté (diff3)", () => {
168
+ // Ours ajoute `cache:`, theirs n'a pas changé la base → one_side_change trop simple,
169
+ // on utilise deux clés imbriquées différentes pour forcer le resolver YAML.
170
+ const input = [
171
+ `<<<<<<< ours`,
172
+ `database:`,
173
+ ` host: localhost`,
174
+ ` port: 5432`,
175
+ ` name: mydb`,
176
+ ` pool: 10`,
177
+ `||||||| base`,
178
+ `database:`,
179
+ ` host: localhost`,
180
+ ` port: 5432`,
181
+ ` name: mydb`,
182
+ `=======`,
183
+ `database:`,
184
+ ` host: localhost`,
185
+ ` port: 5432`,
186
+ ` name: mydb`,
187
+ ` timeout: 30`,
188
+ `>>>>>>> theirs`,
189
+ ].join("\n");
190
+ it("ne lève pas d'exception", () => {
191
+ expect(() => resolve(input, "config.yml")).not.toThrow();
192
+ });
193
+ it("auto-résout (deux ajouts indépendants)", () => {
194
+ const result = resolve(input, "config.yml");
195
+ expect(result.stats.autoResolved).toBe(1);
196
+ });
197
+ it("le résultat contient les deux nouvelles clés", () => {
198
+ const result = resolve(input, "config.yml");
199
+ expect(result.mergedContent).toContain("pool: 10");
200
+ expect(result.mergedContent).toContain("timeout: 30");
201
+ });
202
+ });
203
+ //# sourceMappingURL=yaml.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/yaml.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Tests d'intégration "grandeur nature" v2.x — scénarios de régression
3
+ *
4
+ * Couvre les apports majeurs de chaque release mineure du moteur :
5
+ *
6
+ * v2.1 — Histogram diff & block-move detection
7
+ * · `same_change` (renommage a,b→x,y) isolé malgré des insertions adjacentes
8
+ * · `insertion_at_boundary` (multiply vs divide) résolu sans conflit
9
+ * · `detectBlockMove` détecte un déplacement de bloc
10
+ *
11
+ * v2.2 — Format profile registry + JSON Patch arrays
12
+ * · `package.json` /dependencies, /keywords, /scripts résolu via profil
13
+ * · `tsconfig.json` /include résolu via stratégie "set"
14
+ * · `disableFormatProfiles` rétablit le comportement v2.1
15
+ *
16
+ * v2.3 — Structural TypeScript merge (tree-sitter)
17
+ * · Deux branches ajoutent des fonctions TS différentes → merge structural
18
+ * · Conflit sur le corps d'une même fonction → structural retourne null
19
+ *
20
+ * v2.4 — Validation parse-tree post-merge & rétraction
21
+ * · parseTreeValid: true après résolution propre
22
+ * · parseTreeValid: false + rétraction sur fichier syntaxiquement cassé
23
+ * · parseTreeValid: null sur fichier non supporté (.json)
24
+ * · resolve() synchrone → parseTreeValid toujours null
25
+ *
26
+ * Convention de non-flakiness (héritée de grandeur-nature.test.ts) :
27
+ * Les assertions qui requièrent WASM sont gardées par
28
+ * `if (merged === null) return;` ou `if (!WASM) return;`
29
+ * afin que les tests restent verts en CI sans peer optionnels.
30
+ *
31
+ * Le contenu hardcodé correspond exactement aux fichiers créés dans
32
+ * `_tmp_split_scenario` par `setup-v2-scenarios.sh`.
33
+ */
34
+ export {};
35
+ //# sourceMappingURL=v2-core-scenarios.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-core-scenarios.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/v2-core-scenarios.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}