@gitwand/core 2.0.0 → 2.2.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 (128) hide show
  1. package/README.md +58 -0
  2. package/dist/__tests__/bench.bench.js +39 -0
  3. package/dist/__tests__/bench.bench.js.map +1 -1
  4. package/dist/__tests__/corpus.d.ts.map +1 -1
  5. package/dist/__tests__/corpus.js +363 -0
  6. package/dist/__tests__/corpus.js.map +1 -1
  7. package/dist/__tests__/diff/block-move.test.d.ts +5 -0
  8. package/dist/__tests__/diff/block-move.test.d.ts.map +1 -0
  9. package/dist/__tests__/diff/block-move.test.js +132 -0
  10. package/dist/__tests__/diff/block-move.test.js.map +1 -0
  11. package/dist/__tests__/diff/histogram.test.d.ts +8 -0
  12. package/dist/__tests__/diff/histogram.test.d.ts.map +1 -0
  13. package/dist/__tests__/diff/histogram.test.js +150 -0
  14. package/dist/__tests__/diff/histogram.test.js.map +1 -0
  15. package/dist/__tests__/diff/parity.test.d.ts +17 -0
  16. package/dist/__tests__/diff/parity.test.d.ts.map +1 -0
  17. package/dist/__tests__/diff/parity.test.js +149 -0
  18. package/dist/__tests__/diff/parity.test.js.map +1 -0
  19. package/dist/__tests__/diff.test.js +6 -2
  20. package/dist/__tests__/diff.test.js.map +1 -1
  21. package/dist/__tests__/format-profiles/integration.test.d.ts +7 -0
  22. package/dist/__tests__/format-profiles/integration.test.d.ts.map +1 -0
  23. package/dist/__tests__/format-profiles/integration.test.js +193 -0
  24. package/dist/__tests__/format-profiles/integration.test.js.map +1 -0
  25. package/dist/__tests__/format-profiles/json-patch.test.d.ts +12 -0
  26. package/dist/__tests__/format-profiles/json-patch.test.d.ts.map +1 -0
  27. package/dist/__tests__/format-profiles/json-patch.test.js +222 -0
  28. package/dist/__tests__/format-profiles/json-patch.test.js.map +1 -0
  29. package/dist/__tests__/format-profiles/registry.test.d.ts +5 -0
  30. package/dist/__tests__/format-profiles/registry.test.d.ts.map +1 -0
  31. package/dist/__tests__/format-profiles/registry.test.js +124 -0
  32. package/dist/__tests__/format-profiles/registry.test.js.map +1 -0
  33. package/dist/__tests__/patterns/make-score.test.d.ts +9 -0
  34. package/dist/__tests__/patterns/make-score.test.d.ts.map +1 -0
  35. package/dist/__tests__/patterns/make-score.test.js +49 -0
  36. package/dist/__tests__/patterns/make-score.test.js.map +1 -0
  37. package/dist/diff/block-move.d.ts +53 -0
  38. package/dist/diff/block-move.d.ts.map +1 -0
  39. package/dist/diff/block-move.js +192 -0
  40. package/dist/diff/block-move.js.map +1 -0
  41. package/dist/diff/histogram.d.ts +45 -0
  42. package/dist/diff/histogram.d.ts.map +1 -0
  43. package/dist/diff/histogram.js +172 -0
  44. package/dist/diff/histogram.js.map +1 -0
  45. package/dist/diff/index.d.ts +30 -0
  46. package/dist/diff/index.d.ts.map +1 -0
  47. package/dist/diff/index.js +47 -0
  48. package/dist/diff/index.js.map +1 -0
  49. package/dist/diff/lcs.d.ts +34 -0
  50. package/dist/diff/lcs.d.ts.map +1 -0
  51. package/dist/diff/lcs.js +184 -0
  52. package/dist/diff/lcs.js.map +1 -0
  53. package/dist/diff/shared.d.ts +54 -0
  54. package/dist/diff/shared.d.ts.map +1 -0
  55. package/dist/diff/shared.js +164 -0
  56. package/dist/diff/shared.js.map +1 -0
  57. package/dist/diff.d.ts +6 -65
  58. package/dist/diff.d.ts.map +1 -1
  59. package/dist/diff.js +6 -324
  60. package/dist/diff.js.map +1 -1
  61. package/dist/format-profiles/index.d.ts +34 -0
  62. package/dist/format-profiles/index.d.ts.map +1 -0
  63. package/dist/format-profiles/index.js +86 -0
  64. package/dist/format-profiles/index.js.map +1 -0
  65. package/dist/format-profiles/json-patch.d.ts +61 -0
  66. package/dist/format-profiles/json-patch.d.ts.map +1 -0
  67. package/dist/format-profiles/json-patch.js +269 -0
  68. package/dist/format-profiles/json-patch.js.map +1 -0
  69. package/dist/format-profiles/merge-strategies.d.ts +54 -0
  70. package/dist/format-profiles/merge-strategies.d.ts.map +1 -0
  71. package/dist/format-profiles/merge-strategies.js +156 -0
  72. package/dist/format-profiles/merge-strategies.js.map +1 -0
  73. package/dist/format-profiles/profiles/composer.d.ts +18 -0
  74. package/dist/format-profiles/profiles/composer.d.ts.map +1 -0
  75. package/dist/format-profiles/profiles/composer.js +45 -0
  76. package/dist/format-profiles/profiles/composer.js.map +1 -0
  77. package/dist/format-profiles/profiles/helm-values.d.ts +21 -0
  78. package/dist/format-profiles/profiles/helm-values.d.ts.map +1 -0
  79. package/dist/format-profiles/profiles/helm-values.js +40 -0
  80. package/dist/format-profiles/profiles/helm-values.js.map +1 -0
  81. package/dist/format-profiles/profiles/kubernetes.d.ts +22 -0
  82. package/dist/format-profiles/profiles/kubernetes.d.ts.map +1 -0
  83. package/dist/format-profiles/profiles/kubernetes.js +60 -0
  84. package/dist/format-profiles/profiles/kubernetes.js.map +1 -0
  85. package/dist/format-profiles/profiles/package-json.d.ts +18 -0
  86. package/dist/format-profiles/profiles/package-json.d.ts.map +1 -0
  87. package/dist/format-profiles/profiles/package-json.js +36 -0
  88. package/dist/format-profiles/profiles/package-json.js.map +1 -0
  89. package/dist/format-profiles/profiles/tsconfig.d.ts +21 -0
  90. package/dist/format-profiles/profiles/tsconfig.d.ts.map +1 -0
  91. package/dist/format-profiles/profiles/tsconfig.js +47 -0
  92. package/dist/format-profiles/profiles/tsconfig.js.map +1 -0
  93. package/dist/format-profiles/types.d.ts +67 -0
  94. package/dist/format-profiles/types.d.ts.map +1 -0
  95. package/dist/format-profiles/types.js +9 -0
  96. package/dist/format-profiles/types.js.map +1 -0
  97. package/dist/index.d.ts +4 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +5 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/patterns/insertion-at-boundary.d.ts.map +1 -1
  102. package/dist/patterns/insertion-at-boundary.js +15 -33
  103. package/dist/patterns/insertion-at-boundary.js.map +1 -1
  104. package/dist/patterns/utils.d.ts +11 -8
  105. package/dist/patterns/utils.d.ts.map +1 -1
  106. package/dist/patterns/utils.js +28 -10
  107. package/dist/patterns/utils.js.map +1 -1
  108. package/dist/resolver/format-dispatch.d.ts.map +1 -1
  109. package/dist/resolver/format-dispatch.js +3 -1
  110. package/dist/resolver/format-dispatch.js.map +1 -1
  111. package/dist/resolver/policy.d.ts.map +1 -1
  112. package/dist/resolver/policy.js +2 -0
  113. package/dist/resolver/policy.js.map +1 -1
  114. package/dist/resolvers/dispatcher.d.ts +5 -1
  115. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  116. package/dist/resolvers/dispatcher.js +8 -3
  117. package/dist/resolvers/dispatcher.js.map +1 -1
  118. package/dist/resolvers/json.d.ts +11 -2
  119. package/dist/resolvers/json.d.ts.map +1 -1
  120. package/dist/resolvers/json.js +55 -7
  121. package/dist/resolvers/json.js.map +1 -1
  122. package/dist/resolvers/yaml.d.ts +8 -2
  123. package/dist/resolvers/yaml.d.ts.map +1 -1
  124. package/dist/resolvers/yaml.js +156 -2
  125. package/dist/resolvers/yaml.js.map +1 -1
  126. package/dist/types.d.ts +25 -0
  127. package/dist/types.d.ts.map +1 -1
  128. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GitWand — Profil "Kubernetes manifests"
3
+ *
4
+ * Match : fichiers .yaml / .yml dans un dossier k8s/, kubernetes/, manifests/
5
+ * ou un déploiement courant (deployment.yaml, service.yaml, etc.). Heuristique
6
+ * de path — pas de parsing du contenu pour confirmer le type de manifest
7
+ * (Deployment vs Service vs ConfigMap), donc on applique des stratégies safe
8
+ * sur les paths conventionnels qui n'existent que dans les types pertinents.
9
+ *
10
+ * Stratégies (alignées Kubernetes API conventions name-keyed lists) :
11
+ * - /spec/template/spec/containers → set par "name"
12
+ * - /spec/template/spec/initContainers → set par "name"
13
+ * - /spec/template/spec/volumes → set par "name"
14
+ * - /spec/template/spec/imagePullSecrets → set par "name"
15
+ * - /spec/ports → set par "port" (Service)
16
+ * - /spec/rules → set par "host" (Ingress) — fallback JSON.stringify si pas
17
+ * de host (Ingress sans rule "default")
18
+ * - défaut → merge-keys
19
+ */
20
+ import type { FormatProfile } from "../types.js";
21
+ export declare const kubernetesProfile: FormatProfile;
22
+ //# sourceMappingURL=kubernetes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kubernetes.d.ts","sourceRoot":"","sources":["../../../src/format-profiles/profiles/kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0BjD,eAAO,MAAM,iBAAiB,EAAE,aAiB/B,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * GitWand — Profil "Kubernetes manifests"
3
+ *
4
+ * Match : fichiers .yaml / .yml dans un dossier k8s/, kubernetes/, manifests/
5
+ * ou un déploiement courant (deployment.yaml, service.yaml, etc.). Heuristique
6
+ * de path — pas de parsing du contenu pour confirmer le type de manifest
7
+ * (Deployment vs Service vs ConfigMap), donc on applique des stratégies safe
8
+ * sur les paths conventionnels qui n'existent que dans les types pertinents.
9
+ *
10
+ * Stratégies (alignées Kubernetes API conventions name-keyed lists) :
11
+ * - /spec/template/spec/containers → set par "name"
12
+ * - /spec/template/spec/initContainers → set par "name"
13
+ * - /spec/template/spec/volumes → set par "name"
14
+ * - /spec/template/spec/imagePullSecrets → set par "name"
15
+ * - /spec/ports → set par "port" (Service)
16
+ * - /spec/rules → set par "host" (Ingress) — fallback JSON.stringify si pas
17
+ * de host (Ingress sans rule "default")
18
+ * - défaut → merge-keys
19
+ */
20
+ const NAME_KEYED = (item) => {
21
+ if (typeof item === "object" && item !== null && "name" in item) {
22
+ return String(item.name);
23
+ }
24
+ return JSON.stringify(item);
25
+ };
26
+ const PORT_KEYED = (item) => {
27
+ if (typeof item === "object" && item !== null && "port" in item) {
28
+ return String(item.port);
29
+ }
30
+ return JSON.stringify(item);
31
+ };
32
+ const HOST_KEYED = (item) => {
33
+ if (typeof item === "object" && item !== null && "host" in item) {
34
+ return String(item.host);
35
+ }
36
+ return JSON.stringify(item);
37
+ };
38
+ const K8S_DIR = /(^|\/)(k8s|kubernetes|manifests)\//;
39
+ const K8S_BASENAME = /^(deployment|service|ingress|configmap|secret|statefulset|daemonset|job|cronjob|replicaset|pod|namespace)\.(ya?ml)$/i;
40
+ export const kubernetesProfile = {
41
+ name: "kubernetes",
42
+ matches: (filePath) => {
43
+ if (!/\.ya?ml$/.test(filePath))
44
+ return false;
45
+ if (K8S_DIR.test(filePath))
46
+ return true;
47
+ const basename = filePath.split("/").pop() ?? "";
48
+ return K8S_BASENAME.test(basename);
49
+ },
50
+ paths: {
51
+ "/spec/template/spec/containers": { kind: "set", identity: NAME_KEYED },
52
+ "/spec/template/spec/initContainers": { kind: "set", identity: NAME_KEYED },
53
+ "/spec/template/spec/volumes": { kind: "set", identity: NAME_KEYED },
54
+ "/spec/template/spec/imagePullSecrets": { kind: "set", identity: NAME_KEYED },
55
+ "/spec/ports": { kind: "set", identity: PORT_KEYED },
56
+ "/spec/rules": { kind: "set", identity: HOST_KEYED },
57
+ },
58
+ default: { kind: "merge-keys" },
59
+ };
60
+ //# sourceMappingURL=kubernetes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kubernetes.js","sourceRoot":"","sources":["../../../src/format-profiles/profiles/kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,MAAM,UAAU,GAAG,CAAC,IAAa,EAAU,EAAE;IAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,MAAM,CAAE,IAA0B,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAa,EAAU,EAAE;IAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,MAAM,CAAE,IAA0B,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAa,EAAU,EAAE;IAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,MAAM,CAAE,IAA0B,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,oCAAoC,CAAC;AACrD,MAAM,YAAY,GAAG,sHAAsH,CAAC;AAE5I,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,EAAE;QACL,gCAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;QACvE,oCAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC3E,6BAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;QACpE,sCAAsC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC7E,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;QACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;KACrD;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;CAChC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * GitWand — Profil "package.json"
3
+ *
4
+ * Match : tout fichier nommé exactement "package.json" (à la racine ou dans
5
+ * un workspace). On exclut les fichiers générés type "package-lock.json"
6
+ * (couverts par les résolveurs lockfile dédiés).
7
+ *
8
+ * Stratégies :
9
+ * - /dependencies, /devDependencies, /peerDependencies, /optionalDependencies
10
+ * → merge-keys (objets clé-par-clé, comportement existant)
11
+ * - /scripts → merge-keys (objets clé-par-clé)
12
+ * - /keywords → set (tableau, identité = JSON.stringify de l'item)
13
+ * - /workspaces (cas tableau) → set
14
+ * - défaut → merge-keys
15
+ */
16
+ import type { FormatProfile } from "../types.js";
17
+ export declare const packageJsonProfile: FormatProfile;
18
+ //# sourceMappingURL=package-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../src/format-profiles/profiles/package-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,kBAAkB,EAAE,aAmBhC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GitWand — Profil "package.json"
3
+ *
4
+ * Match : tout fichier nommé exactement "package.json" (à la racine ou dans
5
+ * un workspace). On exclut les fichiers générés type "package-lock.json"
6
+ * (couverts par les résolveurs lockfile dédiés).
7
+ *
8
+ * Stratégies :
9
+ * - /dependencies, /devDependencies, /peerDependencies, /optionalDependencies
10
+ * → merge-keys (objets clé-par-clé, comportement existant)
11
+ * - /scripts → merge-keys (objets clé-par-clé)
12
+ * - /keywords → set (tableau, identité = JSON.stringify de l'item)
13
+ * - /workspaces (cas tableau) → set
14
+ * - défaut → merge-keys
15
+ */
16
+ export const packageJsonProfile = {
17
+ name: "package.json",
18
+ matches: (filePath) => {
19
+ const basename = filePath.split("/").pop() ?? filePath;
20
+ return basename === "package.json";
21
+ },
22
+ paths: {
23
+ "/dependencies": { kind: "merge-keys" },
24
+ "/devDependencies": { kind: "merge-keys" },
25
+ "/peerDependencies": { kind: "merge-keys" },
26
+ "/optionalDependencies": { kind: "merge-keys" },
27
+ "/bundledDependencies": { kind: "set" },
28
+ "/bundleDependencies": { kind: "set" },
29
+ "/scripts": { kind: "merge-keys" },
30
+ "/keywords": { kind: "set" },
31
+ "/files": { kind: "set" },
32
+ "/workspaces": { kind: "set" },
33
+ },
34
+ default: { kind: "merge-keys" },
35
+ };
36
+ //# sourceMappingURL=package-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../src/format-profiles/profiles/package-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;QACvD,OAAO,QAAQ,KAAK,cAAc,CAAC;IACrC,CAAC;IACD,KAAK,EAAE;QACL,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QACvC,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC1C,mBAAmB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC3C,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC/C,sBAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACvC,qBAAqB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACtC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAClC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACzB,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;KAC/B;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;CAChC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * GitWand — Profil "tsconfig.json" (et tsconfig.*.json)
3
+ *
4
+ * Match : tout fichier nommé tsconfig.json ou tsconfig.<variant>.json
5
+ * (ex: tsconfig.build.json, tsconfig.app.json) à n'importe quelle profondeur
6
+ * dans le repo.
7
+ *
8
+ * Stratégies :
9
+ * - /compilerOptions → merge-keys (objet de flags : on merge clé-par-clé)
10
+ * - /compilerOptions/lib → set (tableau de strings, ordre indifférent)
11
+ * - /compilerOptions/types → set
12
+ * - /compilerOptions/typeRoots → set
13
+ * - /include → set (globs, ordre indifférent)
14
+ * - /exclude → set
15
+ * - /references → set par "path" (objets {path: "..."} avec identité = path)
16
+ * - /files → set
17
+ * - défaut → merge-keys
18
+ */
19
+ import type { FormatProfile } from "../types.js";
20
+ export declare const tsconfigProfile: FormatProfile;
21
+ //# sourceMappingURL=tsconfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../src/format-profiles/profiles/tsconfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,eAAO,MAAM,eAAe,EAAE,aA0B7B,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * GitWand — Profil "tsconfig.json" (et tsconfig.*.json)
3
+ *
4
+ * Match : tout fichier nommé tsconfig.json ou tsconfig.<variant>.json
5
+ * (ex: tsconfig.build.json, tsconfig.app.json) à n'importe quelle profondeur
6
+ * dans le repo.
7
+ *
8
+ * Stratégies :
9
+ * - /compilerOptions → merge-keys (objet de flags : on merge clé-par-clé)
10
+ * - /compilerOptions/lib → set (tableau de strings, ordre indifférent)
11
+ * - /compilerOptions/types → set
12
+ * - /compilerOptions/typeRoots → set
13
+ * - /include → set (globs, ordre indifférent)
14
+ * - /exclude → set
15
+ * - /references → set par "path" (objets {path: "..."} avec identité = path)
16
+ * - /files → set
17
+ * - défaut → merge-keys
18
+ */
19
+ const TSCONFIG_NAME = /^tsconfig(\..+)?\.json$/;
20
+ export const tsconfigProfile = {
21
+ name: "tsconfig.json",
22
+ matches: (filePath) => {
23
+ const basename = filePath.split("/").pop() ?? filePath;
24
+ return TSCONFIG_NAME.test(basename);
25
+ },
26
+ paths: {
27
+ "/compilerOptions": { kind: "merge-keys" },
28
+ "/compilerOptions/lib": { kind: "set" },
29
+ "/compilerOptions/types": { kind: "set" },
30
+ "/compilerOptions/typeRoots": { kind: "set" },
31
+ "/compilerOptions/paths": { kind: "merge-keys" },
32
+ "/include": { kind: "set" },
33
+ "/exclude": { kind: "set" },
34
+ "/files": { kind: "set" },
35
+ "/references": {
36
+ kind: "set",
37
+ identity: (item) => {
38
+ if (typeof item === "object" && item !== null && "path" in item) {
39
+ return String(item.path);
40
+ }
41
+ return JSON.stringify(item);
42
+ },
43
+ },
44
+ },
45
+ default: { kind: "merge-keys" },
46
+ };
47
+ //# sourceMappingURL=tsconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../src/format-profiles/profiles/tsconfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;QACvD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC1C,sBAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACvC,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACzC,4BAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC7C,wBAAwB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAChD,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACzB,aAAa,EAAE;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBAChE,OAAO,MAAM,CAAE,IAA0B,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;SACF;KACF;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;CAChC,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * GitWand — Types du registre de profils par format
3
+ *
4
+ * Un FormatProfile annote des chemins JSON Pointer (RFC 6901) avec une
5
+ * stratégie de merge. C'est l'analogue local des "commutative parents" de
6
+ * Mergiraf, mais piloté par configuration plutôt que par grammaire.
7
+ */
8
+ /**
9
+ * Stratégie de merge appliquée à un chemin donné dans un document JSON/YAML.
10
+ *
11
+ * - "set" : merge par identité d'élément. La fonction identity extrait une
12
+ * clé stable depuis chaque item ; deux items avec la même clé sont
13
+ * considérés comme "le même", et les modifications se mergent par
14
+ * récursion. Sans identity, fallback JSON.stringify(item).
15
+ * - "ordered-list" : RFC 6902 add/remove. On diffe base->ours et base->theirs,
16
+ * on les concatène si les paths sont disjoints, on rejette sinon.
17
+ * - "merge-keys" : objets ; récursion clé-par-clé (comportement actuel de
18
+ * mergeObjects).
19
+ * - "opaque" : aucune tentative de merge sémantique, retombée fallback textuel.
20
+ */
21
+ export type PathStrategy = {
22
+ kind: "set";
23
+ identity?: (item: unknown) => string;
24
+ } | {
25
+ kind: "ordered-list";
26
+ } | {
27
+ kind: "merge-keys";
28
+ } | {
29
+ kind: "opaque";
30
+ };
31
+ /**
32
+ * Profil de merge pour un type de fichier (ou pattern).
33
+ *
34
+ * Le registre essaie chaque profil dans l'ordre d'enregistrement ; le premier
35
+ * dont matches(filePath) retourne true est utilisé. Les chemins sont des
36
+ * JSON Pointers (par exemple /dependencies, ou des paths avec wildcard de
37
+ * segment unique pour itérer sur une liste). Les wildcards "*" matchent un
38
+ * segment unique (équivalent shallow-glob).
39
+ */
40
+ export interface FormatProfile {
41
+ /** Identifiant lisible (pour les traces) — ex: "package.json". */
42
+ name: string;
43
+ /** Match sur le filePath. Le registre s'arrête au premier profil matching. */
44
+ matches: (filePath: string) => boolean;
45
+ /** Stratégie par chemin JSON Pointer (RFC 6901). */
46
+ paths: Record<string, PathStrategy>;
47
+ /** Stratégie par défaut pour les chemins non listés. */
48
+ default: PathStrategy;
49
+ }
50
+ /**
51
+ * Une opération RFC 6902 minimale. On ne supporte que add, remove, replace.
52
+ * move et copy peuvent toujours être exprimées par séquences add/remove, et
53
+ * leur omission garde le code en dessous de 2KB ajoutés.
54
+ */
55
+ export type JsonPatchOp = {
56
+ op: "add";
57
+ path: string;
58
+ value: unknown;
59
+ } | {
60
+ op: "remove";
61
+ path: string;
62
+ } | {
63
+ op: "replace";
64
+ path: string;
65
+ value: unknown;
66
+ };
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/format-profiles/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,wDAAwD;IACxD,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * GitWand — Types du registre de profils par format
3
+ *
4
+ * Un FormatProfile annote des chemins JSON Pointer (RFC 6901) avec une
5
+ * stratégie de merge. C'est l'analogue local des "commutative parents" de
6
+ * Mergiraf, mais piloté par configuration plutôt que par grammaire.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/format-profiles/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,10 @@
20
20
  export { resolve } from "./resolver.js";
21
21
  export { parseConflictMarkers, classifyConflict } from "./parser.js";
22
22
  export { mergeNonOverlapping, computeDiff, lcs } from "./diff.js";
23
+ export { histogramDiff, detectBlockMove, lcsLegacy, type HistogramOptions, type MovedBlock, type BlockMoveOptions, } from "./diff/index.js";
24
+ export { profileForFile, registerFormatProfile, strategyForPath, type FormatProfile, type PathStrategy, } from "./format-profiles/index.js";
25
+ export { diffJson, applyJsonPatch, mergeJsonPatches, parseJsonPointer, buildJsonPointer, jsonStructEqual, } from "./format-profiles/json-patch.js";
26
+ export type { JsonPatchOp } from "./format-profiles/types.js";
23
27
  export { tryResolveJsonConflict, stripJsoncComments } from "./resolvers/json.js";
24
28
  export { tryResolveMarkdownConflict, parseSections, extractFrontmatter } from "./resolvers/markdown.js";
25
29
  export { tryResolveYamlConflict } from "./resolvers/yaml.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,eAAe,EACf,cAAc,EACd,cAAc,EAEd,aAAa,EACb,SAAS,EAET,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,eAAe,EACf,cAAc,EACd,cAAc,EAEd,aAAa,EACb,SAAS,EAET,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -20,6 +20,11 @@
20
20
  export { resolve } from "./resolver.js";
21
21
  export { parseConflictMarkers, classifyConflict } from "./parser.js";
22
22
  export { mergeNonOverlapping, computeDiff, lcs } from "./diff.js";
23
+ // v2.1 — nouveaux backends diff exposés
24
+ export { histogramDiff, detectBlockMove, lcsLegacy, } from "./diff/index.js";
25
+ // v2.2 — registre de profils de format + RFC 6902
26
+ export { profileForFile, registerFormatProfile, strategyForPath, } from "./format-profiles/index.js";
27
+ export { diffJson, applyJsonPatch, mergeJsonPatches, parseJsonPointer, buildJsonPointer, jsonStructEqual, } from "./format-profiles/json-patch.js";
23
28
  // Phase 7.3 — Résolveurs spécialisés par format
24
29
  export { tryResolveJsonConflict, stripJsoncComments } from "./resolvers/json.js";
25
30
  export { tryResolveMarkdownConflict, parseSections, extractFrontmatter } from "./resolvers/markdown.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,gDAAgD;AAChD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAExG,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,oEAAoE;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,8DAA8D;AAC9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,wCAAwC;AACxC,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,GAIV,MAAM,iBAAiB,CAAC;AAEzB,kDAAkD;AAClD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,GAGhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAGzC,gDAAgD;AAChD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAExG,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,oEAAoE;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,8DAA8D;AAC9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"insertion-at-boundary.d.ts","sourceRoot":"","sources":["../../src/patterns/insertion-at-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAkC,aAAa,EAAE,MAAM,aAAa,CAAC;AAoGjF,QAAA,MAAM,mBAAmB,EAAE,aA6D1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"insertion-at-boundary.d.ts","sourceRoot":"","sources":["../../src/patterns/insertion-at-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAkC,aAAa,EAAE,MAAM,aAAa,CAAC;AAmFjF,QAAA,MAAM,mBAAmB,EAAE,aA6D1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -17,40 +17,22 @@
17
17
  * point de frontière (le LCS échoue) mais l'analyse sémantique réussit
18
18
  */
19
19
  import { scopeImpact, makeScore, normalizeLine } from "./utils.js";
20
+ import { lcs } from "../diff/index.js";
20
21
  // ─── LCS helpers ─────────────────────────────────────────────
22
+ //
23
+ // v2.1 : on utilise le backend `lcs` partagé (Histogram par défaut, legacy via
24
+ // `GITWAND_DIFF=lcs`) plutôt que le DP plein local. Le code retiré ressemblait
25
+ // au DP de `lcs.ts` mais avec une structure de retour différente — on adapte
26
+ // donc juste la sortie de `lcs()` (paires `[i, j]`) en un Set d'indices côté
27
+ // `modified`.
21
28
  /**
22
- * Calcule la Longest Common Subsequence entre deux tableaux de lignes.
23
- * Retourne les indices des lignes de `a` qui sont dans le LCS.
29
+ * Calcule l'ensemble des indices de `a` qui sont dans le LCS avec `b`.
30
+ * Wrapper sur le backend partagé.
24
31
  */
25
32
  function lcsIndices(a, b) {
26
- const m = a.length;
27
- const n = b.length;
28
- // dp[i][j] = longueur du LCS de a[0..i-1] et b[0..j-1]
29
- const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
30
- for (let i = 1; i <= m; i++) {
31
- for (let j = 1; j <= n; j++) {
32
- dp[i][j] = a[i - 1] === b[j - 1]
33
- ? dp[i - 1][j - 1] + 1
34
- : Math.max(dp[i - 1][j], dp[i][j - 1]);
35
- }
36
- }
37
- // Backtrack pour récupérer les indices dans `a`
38
33
  const inLcs = new Set();
39
- let i = m;
40
- let j = n;
41
- while (i > 0 && j > 0) {
42
- if (a[i - 1] === b[j - 1]) {
43
- inLcs.add(i - 1);
44
- i--;
45
- j--;
46
- }
47
- else if (dp[i - 1][j] > dp[i][j - 1]) {
48
- i--;
49
- }
50
- else {
51
- j--;
52
- }
53
- }
34
+ for (const [i] of lcs(a, b))
35
+ inLcs.add(i);
54
36
  return inLcs;
55
37
  }
56
38
  /**
@@ -58,16 +40,16 @@ function lcsIndices(a, b) {
58
40
  * Ces lignes sont les "additions" par rapport à la base.
59
41
  */
60
42
  function lcsAdditions(base, modified) {
61
- const lcs = lcsIndices(modified, base); // indices dans modified qui sont dans le LCS
62
- return modified.filter((_, i) => !lcs.has(i));
43
+ const lcsSet = lcsIndices(modified, base); // indices dans modified qui sont dans le LCS
44
+ return modified.filter((_, i) => !lcsSet.has(i));
63
45
  }
64
46
  /**
65
47
  * Retourne les lignes de `base` qui ne sont plus dans `modified`.
66
48
  * Ces lignes sont les "suppressions" par rapport à la base.
67
49
  */
68
50
  function lcsRemovals(base, modified) {
69
- const lcs = lcsIndices(base, modified); // indices dans base qui sont dans le LCS
70
- return base.filter((_, i) => !lcs.has(i));
51
+ const lcsSet = lcsIndices(base, modified); // indices dans base qui sont dans le LCS
52
+ return base.filter((_, i) => !lcsSet.has(i));
71
53
  }
72
54
  /** Vérifie si deux tableaux ont des éléments communs */
73
55
  function hasOverlap(a, b) {
@@ -1 +1 @@
1
- {"version":3,"file":"insertion-at-boundary.js","sourceRoot":"","sources":["../../src/patterns/insertion-at-boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insertion-at-boundary.js","sourceRoot":"","sources":["../../src/patterns/insertion-at-boundary.ts"],"names":[],"mappings":"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"}
@@ -21,17 +21,20 @@ export declare function labelFromScore(score: number): Confidence;
21
21
  /**
22
22
  * Construit un ConfidenceScore à partir des dimensions et des justifications.
23
23
  *
24
- * Formule v1.4 :
24
+ * Formule v2.1 :
25
25
  * `score = typeClassification
26
- * − dataRisk × 0.40
27
- * − scopeImpact × 0.15
28
- * − fileFrequency × 0.10
29
- * + baseAvailability × 0.05`
26
+ * − dataRisk × 0.40
27
+ * − scopeImpact × 0.15
28
+ * − fileFrequency × 0.10
29
+ * + baseAvailability × 0.05
30
+ * − algorithmStability × 0.10`
30
31
  *
31
- * `fileFrequency` et `baseAvailability` sont optionnels (défaut 0) pour
32
- * la compatibilité ascendante avec les patterns existants.
32
+ * Tous les paramètres après `penalties` sont optionnels (défaut 0). Quand un
33
+ * pattern n'set pas `algorithmStability`, son score est numériquement
34
+ * identique à v1.4 — la dimension est *présente dans le type* mais reste à 0
35
+ * tant que les producteurs (block-move detection en v2.6) ne l'alimentent pas.
33
36
  */
34
- export declare function makeScore(typeClassification: number, dataRisk: number, si: number, boosters: string[], penalties: string[], fileFrequency?: number, baseAvailability?: number): ConfidenceScore;
37
+ export declare function makeScore(typeClassification: number, dataRisk: number, si: number, boosters: string[], penalties: string[], fileFrequency?: number, baseAvailability?: number, algorithmStability?: number): ConfidenceScore;
35
38
  /**
36
39
  * Normalise les lignes d'un bloc pour la comparaison whitespace-only.
37
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,SAAI,EACjB,gBAAgB,SAAI,GACnB,eAAe,CAejB;AAID;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAID,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAqChE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,eAAe,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiEvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,SAAI,EACjB,gBAAgB,SAAI,EACpB,kBAAkB,SAAI,GACrB,eAAe,CA8BjB;AAID;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAID,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAqChE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,eAAe,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiEvF"}
@@ -37,27 +37,45 @@ export function labelFromScore(score) {
37
37
  /**
38
38
  * Construit un ConfidenceScore à partir des dimensions et des justifications.
39
39
  *
40
- * Formule v1.4 :
40
+ * Formule v2.1 :
41
41
  * `score = typeClassification
42
- * − dataRisk × 0.40
43
- * − scopeImpact × 0.15
44
- * − fileFrequency × 0.10
45
- * + baseAvailability × 0.05`
42
+ * − dataRisk × 0.40
43
+ * − scopeImpact × 0.15
44
+ * − fileFrequency × 0.10
45
+ * + baseAvailability × 0.05
46
+ * − algorithmStability × 0.10`
46
47
  *
47
- * `fileFrequency` et `baseAvailability` sont optionnels (défaut 0) pour
48
- * la compatibilité ascendante avec les patterns existants.
48
+ * Tous les paramètres après `penalties` sont optionnels (défaut 0). Quand un
49
+ * pattern n'set pas `algorithmStability`, son score est numériquement
50
+ * identique à v1.4 — la dimension est *présente dans le type* mais reste à 0
51
+ * tant que les producteurs (block-move detection en v2.6) ne l'alimentent pas.
49
52
  */
50
- export function makeScore(typeClassification, dataRisk, si, boosters, penalties, fileFrequency = 0, baseAvailability = 0) {
53
+ export function makeScore(typeClassification, dataRisk, si, boosters, penalties, fileFrequency = 0, baseAvailability = 0, algorithmStability = 0) {
51
54
  const raw = typeClassification
52
55
  - dataRisk * 0.40
53
56
  - si * 0.15
54
57
  - fileFrequency * 0.10
55
- + baseAvailability * 0.05;
58
+ + baseAvailability * 0.05
59
+ - algorithmStability * 0.10;
56
60
  const score = Math.round(Math.max(0, Math.min(100, raw)));
61
+ // On ne pousse `algorithmStability` dans `dimensions` que s'il est non-zéro,
62
+ // pour que les snapshots de tests existants (qui asserent l'objet exact)
63
+ // restent verts. Les nouveaux consommateurs peuvent toujours le lire (le
64
+ // type le marque optionnel).
65
+ const dimensions = {
66
+ typeClassification,
67
+ dataRisk,
68
+ scopeImpact: si,
69
+ fileFrequency,
70
+ baseAvailability,
71
+ };
72
+ if (algorithmStability !== 0) {
73
+ dimensions.algorithmStability = algorithmStability;
74
+ }
57
75
  return {
58
76
  score,
59
77
  label: labelFromScore(score),
60
- dimensions: { typeClassification, dataRisk, scopeImpact: si, fileFrequency, baseAvailability },
78
+ dimensions,
61
79
  boosters,
62
80
  penalties,
63
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-dispatch.d.ts","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,oBAAoB;AAC9B,0DAA0D;AACxD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzD,qGAAqG;GACnG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC/C,0FAA0F;GACxF;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,oBAAoB,CA8BtB"}
1
+ {"version":3,"file":"format-dispatch.d.ts","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,oBAAoB;AAC9B,0DAA0D;AACxD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzD,qGAAqG;GACnG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC/C,0FAA0F;GACxF;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,oBAAoB,CAgCtB"}