1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 05:15:02 +00:00
mon-entreprise/source/engine/index.js
Maxime Quandalle 6ea5dd0870 Migration de React "class" à "function"
Le but de la refacto est de généraliser l'utilisation des hook

Nombre de composants convertis: 52
Nombre de composants restants: 12

Il est possible de compter les composants class restants en utilisant
grep "render()"

L'occasion aussi de remplacer la dernière occurence de UNSAFE_componentWillMount
2019-09-11 11:17:23 +02:00

40 lines
1.1 KiB
JavaScript

// This file exports the functions of the public computing library
import { safeLoad } from 'js-yaml'
import {
collectDefaults,
enrichRule,
nestedSituationToPathMap,
rulesFr
} from './rules'
import { analyseMany, parseAll } from './traverse.js'
// The public evaluation function takes a nested object of input values
let nestedSituationToStateSelector = rules => nestedSituation => dottedName =>
({
...collectDefaults(rules),
...nestedSituationToPathMap(nestedSituation)
}[dottedName])
let enrichRules = input =>
(typeof input === 'string' ? safeLoad(input) : input).map(enrichRule)
export default {
evaluate: (targetInput, nestedSituation, config) => {
let rules = config
? [
...(config.base ? enrichRules(config.base) : rulesFr),
...(config.extra ? enrichRules(config.extra) : [])
]
: rulesFr
let evaluation = analyseMany(
parseAll(rules),
Array.isArray(targetInput) ? targetInput : [targetInput]
)(nestedSituationToStateSelector(rules)(nestedSituation))
if (config?.debug) return evaluation
let values = evaluation.targets.map(t => t.nodeValue)
return Array.isArray(targetInput) ? values : values[0]
}
}