Skip to content

fix(analyzer): include coerced literal value as const in outputSchema - #20

Merged
atinseau merged 2 commits into
masterfrom
fix/include-coerced-literal-const-in-output-schema
Mar 13, 2026
Merged

atinseau merged 2 commits into
masterfrom
fix/include-coerced-literal-const-in-output-schema

Conversation

@atinseau

Copy link
Copy Markdown
Owner

Changements apportés

  • Ajout de la fonction coerceTextValue dans src/analyzer.ts qui convertit une chaîne brute vers le type JS primitif correspondant au type JSON Schema cible (string, number, integer, boolean, null)
  • Modification de inferProgramType : au lieu de retourner le coerceSchema complet, retourne désormais { type: coercedType, const: coercedValue } pour exposer la valeur littérale réelle dans le outputSchema
  • Ajout d'un commentaire dans inferProgramType précisant que seul le type est extrait du coerceSchema (les contraintes valeur-niveau comme enum, format, pattern, etc. ne sont pas propagées)

Breaking Changes

  • Le outputSchema des littéraux statiques coercés contient désormais un champ const avec la valeur coercée. Les consommateurs qui attendaient { type: "string" } doivent maintenant s'attendre à { type: "string", const: "valeur" }.

Tests

  • Mise à jour des attentes dans tests/coerce-execution.spec.ts, tests/engine.spec.ts, tests/exclude-template-expression.spec.ts et tests/schema-type-coercion.spec.ts pour refléter la présence du champ const dans outputSchema
  • Certains cas de blocs #if mis à jour : deux branches produisant des const distincts génèrent désormais un oneOf (ex. { type: "boolean", const: true } / { type: "boolean", const: false })

🚀

@atinseau
atinseau merged commit a01f303 into master Mar 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant