Skip to content

feat(analyzer): emit minItems and maxItems for literal array templates - #21

Merged
atinseau merged 1 commit into
masterfrom
feature/emit-min-max-items
Mar 16, 2026
Merged

atinseau merged 1 commit into
masterfrom
feature/emit-min-max-items

Conversation

@atinseau

Copy link
Copy Markdown
Owner

Changements apportés

  • Modification de aggregateArrayAnalysis et aggregateArrayAnalysisAndExecution dans src/utils.ts : ajout de minItems: length et maxItems: length dans le outputSchema des tableaux littéraux.
  • Mise à jour de AGENTS.md : documentation du nouveau comportement des bornes de tableaux (minItems/maxItems) dans la section des règles analytiques (point 9) et mise à jour du listing des fichiers de test.

Tests

  • Création de tests/array-bounds.spec.ts : suite de tests dédiée aux bornes minItems/maxItems pour les tableaux littéraux (cas vide, un élément, plusieurs éléments, tableaux imbriqués, avec excludeTemplateExpression).
  • Modification de tests/engine.spec.ts : mise à jour de toutes les assertions outputSchema pour les tableaux afin d'inclure minItems et maxItems.
  • Modification de tests/root-token.spec.ts : mise à jour des assertions de tableaux avec $root pour inclure les bornes.
  • Modification de tests/schema-type-coercion.spec.ts : mise à jour des assertions de tableaux avec coerceSchema pour inclure les bornes.

Remarques

  • Les tableaux dont la taille dépend de données d'entrée (helper {{ map }}, expression {{tags}}) ne reçoivent pas de bornes — leur longueur est indéterminée statiquement.
  • Ce changement est rétrocompatible pour les consommateurs qui n'inspectent pas outputSchema, mais constitue un ajout de champs dans le schéma de sortie pour les tableaux littéraux.

🚀

@atinseau
atinseau merged commit 64cb350 into master Mar 16, 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