* 🔥 Simplify Condition component + WhenApplicable
* create an explicit type of not-yet defined Publicodes value
* Condition now expect only boolean-valued expressions
* use WhenApplicable and WhenNotApplicable to check for applicability
* refactor codebase accordingly
* rework Payslip Line component.
* AST API: add AST visitor & iterator
* cycles detection: use AST iterator
* remove dagrejs/graphlib
* cycle extraction: smallest cycle & print in Graphviz dot format
WARNING: a cycle still exists around `entreprise . chiffre d'affaires` see
issue #1524 for a definitive fix.
C'est logiquement à la couche "data" de se charger de spécifier les valeurs par défaut si besoin.
Publicodes doit juste chercher la clé, et retourner null si elle n'existe pas dans l'objet.
Auparavant, les modifications sur publicodes ne lancaient pas de rebuild, il
fallait tuer et relancer le process pour que cela marche.
Incidement corrige la fuite mémoire du CTRL+C sur le yarn start
Le cache n'était pas réinitialisé, et les valeurs utilisée étaient celle du dernier calcul de la fonction uniroot, qui n'est pas forcément celui du résultat finalement retourné.
Les traductions n'étaient pas bien gérée, vu que les
fichiers de traductions ne sont pas dans le paquet.
Par ailleur il y avait un bug de dépendance implicite qui
demandait l'instantiation de i18n côté applicatif pour
pouvoir utiliser les composants de la bibliothèque.
Le support d'autres langues n'est pas la priorité actuelle,
mais nous y reviendrons lorsque l'on aura plus de temps
Ce mécanisme permet d'activer le calcul itératif pour trouver la
valeur de la règle qui résout la référence circulaire.
Il est possible pour une règle de se référencer elle-même. Par défaut, le
moteur considère qu'il s'agit d'un cycle non voulu, et renvoie 'null' comme valeur
pour la règle en question, en affichant un avertissement.
Mais dans certains cas, la formule est bonne et le cycle est voulu. La valeur de la
règle attendue est donc celle qui résout l'équation obtenue via la référence cyclique.
Lorsque l'on active cette fonctionnalité, le moteur va procéder par essaie erreur jusqu'à
trouver cette valeur.
Note : la résolution de cycle est coûteuse en temps de calcul. Il faut donc veiller à
ne pas la cumuler avec l'évaluation d'un autre mécanisme coûteux comme l'inversion numérique
par exemple.
* remove ParsedRules argument to constructor (was undocumented, so no
harm for Publicodes users)
* replace by Engine.shallowCopy()
* simplify EngineContext in mon-entreprise.
* Ajout de tags meta aux pages /documentation
Pour les moteurs de recherche, et pour les partages sur réseaux sociaux.
A utiliser avec un module de type prerender.io dans le cas de ces
derniers, qui ne font pas tourner le javascript, contrairement à Google.
* Meta description : si pas de description, la question
* MAJ react-helmet dans mon-entreprise