* Prettier upgrade to 2.3.0.
* Run prettier on yaml files.
* Trim trailing whitespaces in yaml files (via editorconfig plugin).
* Translate rules again.
* Squashed 'publicodes/' changes from 10a30d32..71b68707
71b68707 📦 Publicodes v1.0.0-beta.16
bdc92216 Merge the tests and publish workflows
1c032ebc ✅ Add test for a value with a percentage in its unit
d2865e8c Disable sum optimization inside comparisons
f4faa35d Ajout d'un test qui casse l'implé actuelle des missing parentes
f6105283 🖋 Document packages publication on NPM
a79eeb86 Better Github workflows
d0db4d09 Import publish action
c268cff5 Type checking in CI
a35403d7 Correction formattage
3022fd78 Add a separate cache for applicability
35095da9 Optimize the evaluation of applicability
7525446e Add a github action to run tests on push
39a12a13 Ajout d'un prettierrc / reformattage de quelques fichiers récents
c296a25e Ajout d'un deuxièmes test non fonctionnel sur le sujet #33
9f5afb4e Désactivation d'un nouveau test pas encore résolu
76d00085 Récupération de la complexité initiale du test missing variations
93210235 🐛 Meilleures missingVariables des variations
369abeae Simplification du test missingVariables qui ne marche pas
64217d3d Nouveau test missing variables éval paresseuse variations
d9c3e1f6 Conversion d'un gros test JS object en YAML
615ae5e5 Ajout d'un test râté pour #33
d290b46d Passage à mochapack pour webpack 5
5d7a5b31 Paquets NPM et conf babel manquants
1df9a8d4 Ajout d'un .gitignore et yarn.lock
6c2d0203 Uniformise l'unité des arrondis
2cbffe8a ⬆ MAJ Typescript vers 4.3
678403e4 Corrige le calcul des cotisations forfaitaires de début d'activité
8cdaac05 Simpler condition component (#1578)
b7459617 🔥 Supprime les variables temporelles
db62b57d 🔥 Supprime l'utilisation des temporals dans les mécanismes
git-subtree-dir: publicodes
git-subtree-split: 71b687077ec30ea3959209657c2ac7fd7a0277e1
* 🔥 Supprime l'action de déploiement de publicodes
Migrée sur betagouv/publicodes
* 🖋 MAJ documentation de contribution
* ✅ Désactive prettier pour publicodes
Je préférerais ne pas avoir à désactiver Prettier pour le répertoire
publicodes mais pour une raison qui m'échappe (peut-être liée aux
versions des differentes dépendances prettier/babel/typescript ?) entre
betagouv/publicodes et betagouv/mon-entreprise, l'une des lignes est
formatée différemment ce qui provoque une erreur dans la CI.
On va considérer que la “bonne configuration” est celle de
betagouv/publicodes et ignorer celle de betagouv/mon-entreprise. Mais ça
serait quand même mieux d'avoir la même des deux côtés.
* 🔨 Sort une question d'un espace parfois non applicable
* 🔥 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.