json-schema-compatibility-checker 1.0.3 → 1.0.5

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 (64) hide show
  1. package/dist/chunk-159ezrfm.js +5 -0
  2. package/dist/chunk-159ezrfm.js.map +10 -0
  3. package/dist/chunk-1xda2xvb.js +5 -0
  4. package/dist/{chunk-etwjsbj3.js.map → chunk-1xda2xvb.js.map} +2 -2
  5. package/dist/{chunk-mfe3cw5r.js → chunk-3gazezx2.js} +3 -3
  6. package/dist/{chunk-mfe3cw5r.js.map → chunk-3gazezx2.js.map} +1 -1
  7. package/dist/chunk-7mkqk5qv.js +6 -0
  8. package/dist/chunk-7mkqk5qv.js.map +10 -0
  9. package/dist/{chunk-w1ypc97a.js → chunk-aemw3jv0.js} +3 -3
  10. package/dist/{chunk-w1ypc97a.js.map → chunk-aemw3jv0.js.map} +1 -1
  11. package/dist/{chunk-ayae82am.js → chunk-hrwygqa2.js} +4 -4
  12. package/dist/{chunk-ayae82am.js.map → chunk-hrwygqa2.js.map} +1 -1
  13. package/dist/{chunk-gdf3h8q4.js → chunk-jg89j4nd.js} +3 -3
  14. package/dist/{chunk-gdf3h8q4.js.map → chunk-jg89j4nd.js.map} +1 -1
  15. package/dist/{chunk-ywa6h8q4.js → chunk-kncywgnx.js} +4 -4
  16. package/dist/{chunk-ywa6h8q4.js.map → chunk-kncywgnx.js.map} +1 -1
  17. package/dist/chunk-nkpsq34q.js +5 -0
  18. package/dist/chunk-nkpsq34q.js.map +10 -0
  19. package/dist/chunk-nn3cjjtp.js +5 -0
  20. package/dist/chunk-nn3cjjtp.js.map +10 -0
  21. package/dist/condition-resolver.js +2 -2
  22. package/dist/condition-resolver.js.map +1 -1
  23. package/dist/format-validator.js +2 -2
  24. package/dist/format-validator.js.map +1 -1
  25. package/dist/formatter.d.ts +4 -16
  26. package/dist/formatter.js +2 -2
  27. package/dist/formatter.js.map +1 -1
  28. package/dist/index.d.ts +2 -4
  29. package/dist/index.js +2 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/json-schema-compatibility-checker.d.ts +4 -4
  32. package/dist/json-schema-compatibility-checker.js +2 -2
  33. package/dist/json-schema-compatibility-checker.js.map +1 -1
  34. package/dist/merge-engine.js +2 -2
  35. package/dist/merge-engine.js.map +1 -1
  36. package/dist/normalizer.js +2 -2
  37. package/dist/normalizer.js.map +1 -1
  38. package/dist/pattern-subset.js +2 -2
  39. package/dist/pattern-subset.js.map +1 -1
  40. package/dist/semantic-errors.d.ts +24 -0
  41. package/dist/semantic-errors.js +4 -0
  42. package/dist/{differ.js.map → semantic-errors.js.map} +1 -1
  43. package/dist/subset-checker.d.ts +1 -1
  44. package/dist/subset-checker.js +2 -2
  45. package/dist/subset-checker.js.map +1 -1
  46. package/dist/types.d.ts +9 -14
  47. package/dist/utils.js +2 -2
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +3 -3
  50. package/dist/chunk-8me729r7.js +0 -5
  51. package/dist/chunk-8me729r7.js.map +0 -12
  52. package/dist/chunk-8qenxa2z.js +0 -7
  53. package/dist/chunk-8qenxa2z.js.map +0 -10
  54. package/dist/chunk-etwjsbj3.js +0 -5
  55. package/dist/chunk-jy9206ze.js +0 -5
  56. package/dist/chunk-jy9206ze.js.map +0 -10
  57. package/dist/chunk-k92ftyzf.js +0 -5
  58. package/dist/chunk-k92ftyzf.js.map +0 -10
  59. package/dist/differ.d.ts +0 -14
  60. package/dist/differ.js +0 -4
  61. package/dist/semantic-diff/analyzer.d.ts +0 -25
  62. package/dist/semantic-diff/detectors.d.ts +0 -79
  63. package/dist/semantic-diff/index.d.ts +0 -3
  64. package/dist/semantic-diff/types.d.ts +0 -81
@@ -1,79 +0,0 @@
1
- import type { JSONSchema7 } from "json-schema";
2
- import type { SchemaDiff } from "../types";
3
- import type { SemanticDiff } from "./types";
4
- /** Formate un type JSON Schema pour l'affichage (string, array → "string | number") */
5
- export declare function formatType(type: unknown): string;
6
- /**
7
- * Détecte les propriétés requises par le target que le source ne fournit pas.
8
- *
9
- * Condition : la propriété est dans `sup.required` mais n'existe pas
10
- * dans `sub.properties`.
11
- *
12
- * Regroupe les diffs structurels `properties.X added` + `required changed`
13
- * en un seul diagnostic.
14
- */
15
- export declare function detectMissingRequiredProperties(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
16
- /**
17
- * Détecte les propriétés optionnelles dans le source mais requises par le target.
18
- *
19
- * Condition : la propriété existe dans `sub.properties` (mais pas dans
20
- * `sub.required`), et elle est dans `sup.required`.
21
- *
22
- * Ne se déclenche que si la propriété n'a pas déjà été détectée comme
23
- * `missing-required-property`.
24
- */
25
- export declare function detectPropertiesNotGuaranteed(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
26
- /**
27
- * Détecte les propriétés fournies par le source que le target interdit.
28
- *
29
- * Condition : la propriété existe dans `sub.properties` mais pas dans
30
- * `sup.properties`, et `sup.additionalProperties === false`.
31
- */
32
- export declare function detectPropertiesNotAllowed(_sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
33
- /**
34
- * Détecte les incompatibilités de type sur les propriétés ou à la racine.
35
- *
36
- * Distingue deux cas :
37
- * - `type-mismatch` : types complètement différents (string vs number)
38
- * - `type-too-wide` : source est un superset du target (string|number vs string)
39
- */
40
- export declare function detectTypeDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
41
- /**
42
- * Détecte les incompatibilités d'enum : source autorise des valeurs
43
- * que target n'accepte pas.
44
- */
45
- export declare function detectEnumDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
46
- /**
47
- * Détecte les incompatibilités de const : valeurs const différentes.
48
- */
49
- export declare function detectConstDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
50
- /**
51
- * Détecte les contraintes du target plus strictes que celles du source.
52
- *
53
- * Couvre : minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf,
54
- * minLength, maxLength, minItems, maxItems, minProperties, maxProperties.
55
- */
56
- export declare function detectConstraintDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
57
- /**
58
- * Détecte les conflits d'additionalProperties :
59
- * source autorise des propriétés supplémentaires, target les interdit.
60
- */
61
- export declare function detectAdditionalPropertiesConflict(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
62
- /**
63
- * Détecte les incompatibilités de schema d'items (arrays).
64
- */
65
- export declare function detectItemsDiffs(_sub: JSONSchema7, _sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
66
- /**
67
- * Détecte les incompatibilités de format (email, uri, date-time, etc.).
68
- */
69
- export declare function detectFormatDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
70
- /**
71
- * Détecte les incompatibilités de pattern regex.
72
- */
73
- export declare function detectPatternDiffs(sub: JSONSchema7, sup: JSONSchema7, diffs: SchemaDiff[], consumed: Set<number>): SemanticDiff[];
74
- /**
75
- * Convertit les diffs structurels non consommés en `schema-incompatible`.
76
- *
77
- * C'est le catch-all pour les cas non couverts par les détecteurs spécifiques.
78
- */
79
- export declare function createFallbackDiff(diff: SchemaDiff): SemanticDiff;
@@ -1,3 +0,0 @@
1
- export { computeSemanticDiffs } from "./analyzer";
2
- export { formatType } from "./detectors";
3
- export type { SemanticDiff, SemanticDiffType } from "./types";
@@ -1,81 +0,0 @@
1
- /**
2
- * Types de diffs sémantiques possibles.
3
- *
4
- * Chaque type correspond à une catégorie d'incompatibilité
5
- * entre un schema source et un schema target.
6
- */
7
- export type SemanticDiffType =
8
- /** Target exige une propriété que source ne fournit pas du tout */
9
- "missing-required-property"
10
- /** La propriété existe dans source mais est optionnelle, target l'exige */
11
- | "property-not-guaranteed"
12
- /** Même propriété, types complètement incompatibles (string vs number) */
13
- | "type-mismatch"
14
- /** Source produit un type plus large que ce que target accepte (string|number vs string) */
15
- | "type-too-wide"
16
- /** Source autorise des valeurs enum que target n'accepte pas */
17
- | "enum-not-subset"
18
- /** Valeurs const incompatibles */
19
- | "const-mismatch"
20
- /** Source a des contraintes plus larges (min/max/length/items/etc.) */
21
- | "constraint-too-loose"
22
- /** Source autorise des propriétés supplémentaires, target les interdit */
23
- | "additional-properties-conflict"
24
- /** Source fournit une propriété que target interdit (additionalProperties: false) */
25
- | "property-not-allowed"
26
- /** Contrainte de format incompatible */
27
- | "format-mismatch"
28
- /** Pattern regex du source pas inclus dans celui du target */
29
- | "pattern-not-subset"
30
- /** Schema des items d'un array incompatible */
31
- | "incompatible-items"
32
- /** Incompatibilité générique (catch-all pour les cas non couverts) */
33
- | "schema-incompatible";
34
- /**
35
- * Un diagnostic sémantique décrivant une incompatibilité entre deux schemas.
36
- *
37
- * Contrairement aux `SchemaDiff` structurels (qui comparent original vs merged),
38
- * les `SemanticDiff` décrivent le problème en termes compréhensibles :
39
- * - Quel est le problème (`type`)
40
- * - Où il se situe (`path`)
41
- * - Pourquoi c'est incompatible (`message`)
42
- * - Données structurées pour l'exploiter programmatiquement (`details`)
43
- *
44
- * @example
45
- * ```
46
- * {
47
- * type: 'missing-required-property',
48
- * path: 'properties.meetingId',
49
- * message: "Target requires property 'meetingId' (string) which source does not provide",
50
- * details: { property: 'meetingId', targetSchema: { type: 'string' } }
51
- * }
52
- * ```
53
- */
54
- export interface SemanticDiff {
55
- /** Catégorie sémantique de l'incompatibilité */
56
- type: SemanticDiffType;
57
- /** Chemin JSON-path vers l'élément problématique (ex: "properties.meetingId") */
58
- path: string;
59
- /** Message humain lisible décrivant le problème */
60
- message: string;
61
- /**
62
- * Données structurées associées au diagnostic.
63
- *
64
- * Le contenu varie selon le `type` :
65
- *
66
- * - `missing-required-property` → `{ property, targetSchema }`
67
- * - `property-not-guaranteed` → `{ property }`
68
- * - `type-mismatch` → `{ property?, sourceType, targetType }`
69
- * - `type-too-wide` → `{ property?, sourceType, targetType }`
70
- * - `enum-not-subset` → `{ property?, sourceValues, targetValues, extraValues }`
71
- * - `const-mismatch` → `{ property?, sourceConst, targetConst }`
72
- * - `constraint-too-loose` → `{ property?, constraint, sourceValue, targetValue }`
73
- * - `additional-properties-conflict` → `{ sourceAllows, targetAllows }`
74
- * - `property-not-allowed` → `{ property }`
75
- * - `format-mismatch` → `{ property?, sourceFormat, targetFormat }`
76
- * - `pattern-not-subset` → `{ property?, sourcePattern, targetPattern }`
77
- * - `incompatible-items` → `{ reason }`
78
- * - `schema-incompatible` → `{ reason }`
79
- */
80
- details: Record<string, unknown>;
81
- }