Skip to content

feat(helpers): add default fallback helper with static analysis - #26

Merged
atinseau merged 1 commit into
masterfrom
feature/add-default-fallback-helper
Mar 17, 2026
Merged

atinseau merged 1 commit into
masterfrom
feature/add-default-fallback-helper

Conversation

@atinseau

Copy link
Copy Markdown
Owner

Changements apportés

  • Création de src/helpers/default-helpers.ts : nouvelle classe DefaultHelpers implémentant le helper default — retourne le premier argument non-nul (comportement ?? variadic)
  • Ajout d'une analyse statique spécifique dans src/analyzer.ts : validation du nombre d'arguments (≥ 2), compatibilité de types entre arguments, et vérification qu'au moins un argument est garanti (littéral, propriété requise ou sous-expression)
  • Ajout de isPropertyRequired() dans src/schema-resolver.ts : navigue le schéma segment par segment et vérifie les tableaux required des parents, avec support des combinateurs (allOf, anyOf, oneOf)
  • Ajout du code de diagnostic DEFAULT_NO_GUARANTEED_VALUE dans src/types.ts
  • Enregistrement de DefaultHelpers dans DIRECT_EXECUTION_HELPERS (src/executor.ts) pour préserver les types natifs en mode single-expression
  • Enregistrement automatique de DefaultHelpers dans le constructeur Typebars (src/typebars.ts)
  • Export de DefaultHelpers depuis src/helpers/index.ts
  • Mise à jour de la documentation : docs/helpers.md (nouvelle section Default Helper complète), docs/error-handling.md, docs/static-analysis.md, README.md
  • Renommage de AGENTS.md en CLAUDE.md avec mise à jour des références au nouveau helper

Tests

  • Ajout de tests/default-helpers.spec.ts (352 lignes) couvrant :
    • Analyse statique : cas valides (littéral, propriété requise, chaîne mixte), erreurs (DEFAULT_NO_GUARANTEED_VALUE, MISSING_ARGUMENT, TYPE_MISMATCH), inférence du schéma de sortie
    • Sous-expressions : default dans {{#if}}, chaînes imbriquées
    • Exécution : valeur principale non-nulle, repli sur littéral, repli sur variable, chaînes longues, préservation des types (number, boolean), chaîne vide non-nulle
    • analyzeAndExecute : analyse + exécution combinées
    • Templates objet et mixtes

🚀

@atinseau
atinseau merged commit 2e212f6 into master Mar 17, 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