⬆ Mise à jour publicodes

pull/2048/head
Maxime Quandalle 2022-02-10 12:07:19 +01:00 committed by Maxime Quandalle
parent e693c93566
commit 1362c89bae
24 changed files with 95 additions and 84 deletions

View File

@ -5,10 +5,7 @@
"typescript.tsdk": "node_modules/typescript/lib",
"editor.tabSize": 2,
"eslint.enable": true,
"cSpell.words": [
"mycompanyinfrance",
"smarttag"
],
"cSpell.words": ["mycompanyinfrance", "smarttag"],
"search.exclude": {
"**/dist": true
}

View File

@ -18,10 +18,10 @@
"devDependencies": {
"js-yaml": "^4.1.0",
"onchange": "^7.1.0",
"publicodes": "^1.0.0-beta.31"
"publicodes": "^1.0.0-beta.32"
},
"peerDependencies": {
"publicodes": "^1.0.0-beta.31"
"publicodes": "^1.0.0-beta.32"
},
"scripts": {
"build": "node ../scripts/build-rules.js",

View File

@ -19,10 +19,10 @@
"devDependencies": {
"js-yaml": "^4.1.0",
"onchange": "^7.1.0",
"publicodes": "^1.0.0-beta.30"
"publicodes": "^1.0.0-beta.32"
},
"peerDependencies": {
"publicodes": "^1.0.0-beta.30"
"publicodes": "^1.0.0-beta.32"
},
"scripts": {
"build": "node ../scripts/build-rules.js",

View File

@ -1,9 +1,8 @@
artiste-auteur:
description: Le régime des artistes-auteurs
icônes: 👩‍🎨
formule: oui
artiste-auteur . revenus: oui
artiste-auteur . revenus:
artiste-auteur . revenus . traitements et salaires:
titre: Revenu en traitements et salaires
par défaut: 0 €/an

View File

@ -56,6 +56,7 @@ dirigeant . rémunération . imposable:
alors: indépendant . revenu professionnel
- si: auto-entrepreneur
alors: auto-entrepreneur . impôt . revenu imposable
- sinon: 0 €/an
dirigeant . rémunération . impôt:
titre: impôt sur le revenu
@ -777,7 +778,6 @@ dirigeant . indépendant . cotisations et contributions:
dirigeant . indépendant . assiette minimale:
non applicable si: situation personnelle . RSA
valeur: oui
description: |
Si le revenu du chef d'entreprise est déficitaire ou inférieur aux bases de calcul, certaines cotisations seront portées à un montant minimum.
Les cotisations pour les indemnités journalières, retraite de base, invalidité-décès et pour la formation ne sont plus calculées selon le revenu du chef d'entreprise mais selon une "assiette" (montant retenu qui sert de base au calcul d'un impôt ou d'une taxe).
@ -1030,7 +1030,6 @@ dirigeant . indépendant . cotisations et contributions . régularisation:
**montant prévisionnel pour l'année en cours, qui sera pris comme base de calcul**
(attention cependant, vous serez tenus de faire une estimation précise).
valeur: oui
références:
Fiche Urssaf: https://www.urssaf.fr/portail/cms/render/live/fr/sites/urssaf/home/independant/mes-cotisations/les-etapes-de-calcul/le-mode-de-calcul/les-cotisations-provisionnelles/demande-de-modulation.html
Article L131-6-2 du Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037062224/

View File

@ -1,5 +1,4 @@
entreprise:
valeur: oui
description: |
Le contrat lie une entreprise, identifiée par un code SIREN, et un employé.
@ -200,7 +199,7 @@ entreprise . chiffre d'affaires . franchise de TVA . seuil service:
entreprise . chiffre d'affaires . franchise de TVA . dépassement:
type: notification
formule:
valeur:
une de ces conditions:
- chiffre d'affaires > seuil vente + seuil service
- vente restauration hébergement > seuil vente
@ -866,7 +865,6 @@ entreprise . activité . débit de tabac:
par défaut: non
établissement:
formule: oui
description: |
Le salarié travaille dans un établissement de l'entreprise, identifié par un code SIRET.

View File

@ -1,5 +1,4 @@
impôt:
valeur: oui
icônes: 🏛️
description: Cet ensemble de formules est un modèle simplifié de l'impôt sur le revenu.
titre: impôt sur le revenu
@ -36,7 +35,7 @@ impôt . méthode de calcul:
question: Comment souhaitez-vous calculer l'impôt sur le revenu ?
# applicable si: revenu imposable > 0
# bizarrement, cette condition ne semble pas marcher, on se résout donc à utiliser une version plus "hacky" et moins proche de la loi. Elle posera problème le jour où l'on aura a calculer l'impot avec plusieurs sources de revenu
non applicable si: dirigeant . auto-entrepreneur . impôt . versement libératoire
non applicable si: dirigeant . auto-entrepreneur . impôt . versement libératoire > 0
par défaut:
nom: par défaut
valeur: "'barème standard'"
@ -270,7 +269,6 @@ impôt . taux personnalisé:
# in the "impôt" namespace to have a better questions ordering
impôt . foyer fiscal:
icônes: 👨‍👩‍👧‍👦
formule: oui
impôt . foyer fiscal . situation de famille:
question: Quelle est votre situation familiale ?
@ -353,7 +351,7 @@ impôt . foyer fiscal . nombre de parts . majoration personne veuve avec enfant:
impôt . foyer fiscal . taux effectif:
unité: '%'
variations:
- si: impôt à payer = 0
- si: revenu imposable = 0
alors: 0%
- sinon: impôt à payer / revenu imposable
@ -379,6 +377,7 @@ impôt . foyer fiscal . revenu imposable . revenu d'activité abattu:
alors: contrat salarié . rémunération . net imposable
- si: entreprise . imposition = 'IS'
alors: dirigeant . rémunération . imposable
- sinon: 0 €/an
abattement:
valeur: 10% * assiette
plafond:

View File

@ -356,7 +356,6 @@ dirigeant . indépendant . PL . CNAVPL:
l'organisme qui fédère les différentes caisses existantes (CIPAV, CARPIMKO,
CARCDSF, CAVEC etc..)
non applicable si: régime général
valeur: oui
dirigeant . indépendant . PL . CNAVPL . retraite:
titre: retraite de base (CNAVPL)

View File

@ -63,7 +63,7 @@ contrat salarié . frais professionnels:
frais de panier, titres-restaurant, forfait mobilités durables...).
formule:
somme:
- titres-restaurant . montant . employeur
- titres-restaurant . part employeur
- abonnement transports publics . prise en charge
- transports personnels . montant
@ -95,27 +95,26 @@ contrat salarié . frais professionnels . titres-restaurant:
- de fruits et légumes.
Ce titre peut être émis sur support papier ou sous forme dématérialisée.
question: Le salarié reçoit-il des titres-restaurant ?
par défaut: non
contrat salarié . frais professionnels . titres-restaurant . montant:
titre: Titres-restaurant
applicable si:
nom: éligible
question: Le salarié reçoit-il des titres-restaurant ?
par défaut: non
formule:
produit:
assiette: montant unitaire
facteur: nombre
composantes:
- attributs:
nom: employeur
nom: part employeur
taux: taux participation employeur
- attributs:
nom: salarié
nom: part salarié
taux: 100% - taux participation employeur
contrat salarié . frais professionnels . titres-restaurant . part déductible:
titre: Titres-restaurant (déductible)
formule:
valeur: montant . employeur
valeur: part employeur
plafond:
produit:
assiette: nombre
@ -179,7 +178,6 @@ contrat salarié . frais professionnels . titres-restaurant . contrôle taux emp
contrat salarié . frais professionnels . abonnement transports publics:
icônes: 🚍
valeur: oui
contrat salarié . frais professionnels . abonnement transports publics . montant:
titre: Abonnement aux transports publics
@ -221,7 +219,6 @@ contrat salarié . frais professionnels . abonnement transports publics . prise
valeur: taux de prise en charge * montant
contrat salarié . frais professionnels . transports personnels:
valeur: oui
non applicable si: déduction forfaitaire spécifique
références:
circ. DGT-DSS 2009-1 du 28 janvier 2009: https://www.legifrance.gouv.fr/download/file/pdf/cir_2423/CIRC
@ -252,7 +249,6 @@ contrat salarié . frais professionnels . transports personnels . proportion dé
Article R3261-14 du code du travail, version 11/05/2020: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000041865023/2020-05-11/
contrat salarié . frais professionnels . transports personnels . carburant faible émission:
valeur: oui
contrat salarié . frais professionnels . transports personnels . carburant faible émission . montant:
titre: Prise en charge du carburant pour véhicule électrique, hybride rechargeable ou hydrogène
@ -286,7 +282,6 @@ contrat salarié . frais professionnels . transports personnels . carburant faib
abattement: abonnement transports publics . prise en charge
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables:
valeur: oui
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . montant:
titre: Prise en charge des frais de transports forfait mobilités durables
@ -333,7 +328,6 @@ contrat salarié . frais professionnels . transports personnels . forfait mobili
- carburant faible émission . part déductible
contrat salarié . activité partielle:
question: Le salarié est-il en chômage partiel ?
description: >-
À la suite de la crise du Coronavirus, le gouvernement a mis en place un
dispositif de chômage partiel étendu dans lequel l'État prend en charge
@ -1220,7 +1214,7 @@ contrat salarié . professionnalisation:
indéterminée (CDI), la période de professionnalisation proprement-dite
devant durer entre 6 et 12 mois. Dans certains cas cette période peut être
prolongée jusqu'à 36 mois.
formule: contrat salarié = 'professionnalisation'
applicable si: contrat salarié = 'professionnalisation'
rend non applicable: rémunération . contrôle smic
références:
Contrat de professionnalisation: https://www.service-public.fr/particuliers/vosdroits/F15478
@ -1910,7 +1904,7 @@ contrat salarié . rémunération . net:
somme:
- net avec revenus de remplacement
- (- avantages en nature . montant)
- (- frais professionnels . titres-restaurant . montant)
- (- frais professionnels . titres-restaurant)
contrat salarié . rémunération . net après impôt:
titre: Salaire net après impôt
@ -2209,9 +2203,6 @@ contrat salarié . aides employeur . emploi franc:
- sinon: 5000 €/an
facteur: temps de travail . quotité de travail effective
arrondi: oui
rend non applicable:
# Dispositifs moins généreux et non cumulables
- aide à l'embauche des travailleurs handicapés
références:
Fiche emploi franc: https://travail-emploi.gouv.fr/emploi/emplois-francs/article/embaucher-une-personne-en-emploi-franc
@ -2498,7 +2489,7 @@ contrat salarié . réduction générale:
urssaf.fr: https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-generales/la-reduction-generale.html
calcul: https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-generales/la-reduction-generale/le-calcul-de-la-reduction.html
cumuls: https://www.legisocial.fr/actualites-sociales/2068-comment-declarer-les-cotisations-dallocations-familiales-si-lentreprise-beneficie-du-regime-jei.html
non applicable si: cotisations . assiette forfaitaire . montant
non applicable si: cotisations . assiette forfaitaire . montant > 0
formule:
produit:
assiette: cotisations . assiette
@ -2569,7 +2560,7 @@ contrat salarié . réduction générale . imputation retraite complémentaire:
formule: réduction générale - imputation sécurité sociale
contrat salarié . réduction générale . plafond avec application de la DFS:
applicable si: déduction forfaitaire spécifique > 0
applicable si: déduction forfaitaire spécifique
unité: €/mois
formule:
produit:
@ -3096,15 +3087,16 @@ contrat salarié . FNAL:
calcul: https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-contribution-au-fonds-nationa.html
formule:
produit:
assiette: cotisations . assiette
assiette:
valeur: cotisations . assiette
plafond:
applicable si: éligible taux réduit
valeur: plafond sécurité sociale
taux [ref]:
variations:
- si: éligible taux réduit
alors: 0.1%
- sinon: 0.5%
plafond:
applicable si: éligible taux réduit
valeur: plafond sécurité sociale
exemples:
- nom: SMIC
@ -3556,7 +3548,6 @@ contrat salarié . maladie . taux domiciliation fiscale étranger:
formule: 5.50%
contrat salarié . lodeom:
valeur: oui
description: |
Un ensemble assez complexe de réductions de cotisation est disponible pour les salariés d'outre-mer.
Leur fonctionnement est similaire à celui de la réduction générale sur les bas salaires : pour un certain salaire donné, 100% de réduction.

View File

@ -77,8 +77,8 @@
"fuse.js": "^6.4.6",
"markdown-to-jsx": "^7.1.5",
"modele-social": "^0.6.0",
"publicodes": "^1.0.0-beta.31",
"publicodes-react": "^1.0.0-beta.31",
"publicodes": "^1.0.0-beta.32",
"publicodes-react": "^1.0.0-beta.32",
"ramda": "^0.27.0",
"react": "^17.0.0",
"react-color": "^2.14.0",

View File

@ -6,7 +6,7 @@ import getSimulationData, {
MetadataSrc,
} from '../../source/pages/Simulateurs/metadata-src.js'
const rules = parsePublicodes(rawRules)
const { parsedRules } = parsePublicodes(rawRules)
// @ts-ignore Needed by ts-node/esm
const env = process.env
@ -100,7 +100,7 @@ try {
console.log('Uploading: rules')
await rulesIndex.saveObjects(formatRulesToAlgolia(rules)).wait()
await rulesIndex.saveObjects(formatRulesToAlgolia(parsedRules)).wait()
console.log('Clearing: simulateurs')
await simulateursIndex.clearObjects().wait()

View File

@ -2,6 +2,7 @@ import { DottedName } from 'modele-social'
import Engine, {
ASTNode,
formatValue,
isNotApplicable,
isNotYetDefined,
PublicodesExpression,
UNSAFE_isNotApplicable,
@ -68,7 +69,11 @@ export function Condition({
}: ConditionProps) {
const engine = useEngine()
const value = engine.evaluate(expression).nodeValue
const boolValue = isNotYetDefined(value) ? defaultIfNotYetDefined : value
const boolValue = isNotYetDefined(value)
? defaultIfNotYetDefined
: isNotApplicable(value)
? false
: value
if (Boolean(boolValue) !== boolValue) {
console.error(

View File

@ -52,7 +52,7 @@ export const SalaireNetSection = () => {
/>
<Line
negative
rule="contrat salarié . frais professionnels . titres-restaurant . montant"
rule="contrat salarié . frais professionnels . titres-restaurant"
/>
<Line rule="contrat salarié . rémunération . net" />
<Condition expression="impôt . montant > 0">

View File

@ -73,7 +73,7 @@ export function SimulationGoal({
if (
small &&
!editable &&
(evaluation.nodeValue === false || evaluation.nodeValue === null)
(evaluation.nodeValue === null || evaluation.nodeValue === undefined)
) {
return null
}

View File

@ -91,7 +91,7 @@ function SalariéSimulationGoals() {
function TitreRestaurant() {
const targetUnit = useSelector(targetUnitSelector)
const dottedName =
'contrat salarié . frais professionnels . titres-restaurant . montant'
'contrat salarié . frais professionnels . titres-restaurant'
return (
<Condition expression={`${dottedName} > 0`}>
<StyledInfo>

View File

@ -28,6 +28,7 @@ questions:
unité par défaut: €/an
situation:
dirigeant: "'assimilé salarié'"
entreprise . résultat fiscal: 0 €/an
#TODO : en attendant que la transitivité du remplacement soit implémentée (https://github.com/betagouv/publicodes/issues/55)
contrat salarié . activité partielle: non

View File

@ -5,7 +5,7 @@ import rules from 'modele-social'
// les variables dans les tests peuvent être exprimées relativement à l'espace de nom de la règle,
// comme dans sa formule
let parsedRules = parsePublicodes(rules)
let { parsedRules } = parsePublicodes(rules)
const engine = new Engine(rules)
let runExamples = (examples, rule) =>
examples.map((ex) => {
@ -39,7 +39,7 @@ let runExamples = (examples, rule) =>
describe('Tests des règles de notre base de règles', () =>
Object.values(parsedRules)
.filter((rule) => rule.rawNode.exemples)
.map((rule) => {
.forEach((rule) => {
describe(rule.dottedName, () => {
let examples = runExamples(rule.rawNode.exemples, rule)
examples.map((example) =>

View File

@ -28,7 +28,10 @@ exports[`calculate aide-déclaration-indépendant > conjoint collaborateur 5`] =
exports[`calculate aide-déclaration-indépendant > débit de tabac 1`] = `"[5652,50000,39713,0,1,1,0]"`;
exports[`calculate aide-déclaration-indépendant > international 1`] = `"[14610,50000,35287,0,1,1,0]"`;
exports[`calculate aide-déclaration-indépendant > international 1`] = `
"[14610,50000,35287,0,1,1,0]
Notifications affichées : impôt . domiciliation étranger non implémentée"
`;
exports[`calculate aide-déclaration-indépendant > international 2`] = `"[11875,50000,36215,0,1,1,0]"`;
@ -117,7 +120,7 @@ exports[`calculate simulations-auto-entrepreneur > activité mixte 2`] = `"[2000
exports[`calculate simulations-auto-entrepreneur > activité mixte 3`] = `"[20000,301,16388,0,16388]"`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 4`] = `"[0,715,0,0,0]"`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 4`] = `"[null,715,null,null,null]"`;
exports[`calculate simulations-auto-entrepreneur > aides 1`] = `"[5741,62,5000,0,5000]"`;
@ -157,7 +160,7 @@ exports[`calculate simulations-dividendes > barème couple 2 enfants 2`] = `"[20
exports[`calculate simulations-dividendes > barème couple 2 enfants 3`] = `"[200,112,34,40,112,112,36]"`;
exports[`calculate simulations-dividendes > barème couple 2 enfants 4`] = `"[20000,13204,3440,613,11184,11184,5]"`;
exports[`calculate simulations-dividendes > barème couple 2 enfants 4`] = `"[20000,14985,3440,613,11184,11184,5]"`;
exports[`calculate simulations-dividendes > barème défauts 1`] = `"[200,166,34,0,112,112,0]"`;
@ -739,7 +742,7 @@ Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > cdd 4`] = `
"[4104,0,2200,2387,2262]
"[4416,0,2200,2370,2179]
Notifications affichées : contrat salarié . CDD . information"
`;

View File

@ -50,5 +50,8 @@ activité mixte:
- entreprise . chiffre d'affaires . service BIC: 20000 €/an
entreprise . chiffre d'affaires . service BNC: 10000 €/an
entreprise . chiffre d'affaires . vente restauration hébergement: 15000 €/an
entreprise . activité . mixte . proportions . service BIC: 44.44%
entreprise . activité . mixte . proportions . service BNC: 22.22%
entreprise . activité . mixte . proportions . vente restauration hébergement: 33.33%
entreprise . activité . mixte: oui
entreprise . activité: "'commerciale'"

View File

@ -77,6 +77,7 @@ cdd:
contrat salarié . frais professionnels . abonnement transports publics . montant: 80€/mois
contrat salarié . frais professionnels . transports personnels . carburant faible émission . montant: 100€/mois
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . montant: 360€/mois
contrat salarié . rémunération . avantages en nature: oui
contrat salarié . rémunération . avantages en nature . montant: 200 €/mois
- <<: *CDD
contrat salarié . convention collective: "'BTP'"
@ -270,14 +271,14 @@ JEI:
frais pro - titres restaurant:
- contrat salarié . rémunération . brut de base: 2000 €/mois
contrat salarié . frais professionnels . titres-restaurant: oui
contrat salarié . frais professionnels . titres-restaurant . éligible: oui
contrat salarié . frais professionnels . titres-restaurant . nombre: 10 titres-restaurant
- contrat salarié . rémunération . brut de base: 3000 €/mois
contrat salarié . frais professionnels . titres-restaurant: oui
contrat salarié . frais professionnels . titres-restaurant . éligible: oui
contrat salarié . frais professionnels . titres-restaurant . nombre: 20 titres-restaurant
contrat salarié . frais professionnels . titres-restaurant . montant unitaire: 20€/titre-restaurant
- contrat salarié . rémunération . brut de base: 2000 €/mois
contrat salarié . frais professionnels . titres-restaurant: oui
contrat salarié . frais professionnels . titres-restaurant . éligible: oui
contrat salarié . frais professionnels . titres-restaurant . taux participation employeur: 55%
frais pro - abonnement transports publics:

View File

@ -6,13 +6,13 @@ import unitsTranslations from '../source/locales/units.yaml'
describe('Tests units', function () {
it('use unit that exists in publicodes', function () {
const rules = parsePublicodes(rawRules)
const { parsedRules } = parsePublicodes(rawRules)
const units = uniq(
Object.keys(rules).reduce(
Object.keys(parsedRules).reduce(
(prev, name) => [
...prev,
...(rules[name].unit?.numerators ?? []),
...(rules[name].unit?.denumerators ?? []),
...(parsedRules[name].unit?.numerators ?? []),
...(parsedRules[name].unit?.denumerators ?? []),
],
[]
)

View File

@ -9,7 +9,7 @@ import {
} from '../source/components/utils/useSearchParamsSimulationSharing'
describe('identifiant court', () => {
const questions = Object.entries(parsePublicodes(rules))
const questions = Object.entries(parsePublicodes(rules).parsedRules)
.filter(([, ruleNode]) => ruleNode.rawNode['identifiant court'])
.map(([dottedName, ruleNode]) => [
dottedName,
@ -90,7 +90,7 @@ rule without:
})
describe('useSearchParamsSimulationSharing hook', () => {
const parsedRules = parsePublicodes(`
const { parsedRules } = parsePublicodes(`
rule with:
identifiant court: panta
formule: 0

View File

@ -92,6 +92,20 @@ export default defineConfig(({ command }) => ({
targets: ['defaults', 'not IE 11'],
}),
],
server: {
// Keep watching changes in the publicodes package to support live reload
// when we iterate on publicodes logic.
// https://vitejs.dev/config/#server-watch
watch: {
ignored: [
'!**/node_modules/publicodes/**',
'!**/node_modules/publicodes-react/**',
],
},
},
optimizeDeps: {
exclude: ['publicodes-react', 'publicodes'],
},
}))
type MultipleSPAOptions = {
@ -118,6 +132,8 @@ function multipleSPA(options: MultipleSPAOptions): Plugin {
enforce: 'pre',
configureServer(vite) {
// TODO: this middleware is specific to the "mon-entreprise" app and
// shouldn't be in the "multipleSPA" plugin
vite.middlewares.use(
'/simulateur-iframe-integration.js',
serveStatic(new URL('./dist', import.meta.url).pathname, {

View File

@ -10604,9 +10604,9 @@ __metadata:
dependencies:
js-yaml: ^4.1.0
onchange: ^7.1.0
publicodes: ^1.0.0-beta.31
publicodes: ^1.0.0-beta.32
peerDependencies:
publicodes: ^1.0.0-beta.31
publicodes: ^1.0.0-beta.32
languageName: unknown
linkType: soft
@ -14344,9 +14344,9 @@ __metadata:
dependencies:
js-yaml: ^4.1.0
onchange: ^7.1.0
publicodes: ^1.0.0-beta.30
publicodes: ^1.0.0-beta.32
peerDependencies:
publicodes: ^1.0.0-beta.30
publicodes: ^1.0.0-beta.32
languageName: unknown
linkType: soft
@ -15820,28 +15820,28 @@ __metadata:
languageName: node
linkType: hard
"publicodes-react@npm:^1.0.0-beta.31":
version: 1.0.0-beta.31
resolution: "publicodes-react@npm:1.0.0-beta.31"
"publicodes-react@npm:^1.0.0-beta.32":
version: 1.0.0-beta.32
resolution: "publicodes-react@npm:1.0.0-beta.32"
dependencies:
styled-components: ^5.1.0
peerDependencies:
publicodes: 1.0.0-beta.31
publicodes: 1.0.0-beta.32
react: ^17.0.2
checksum: a010704677d416983b464859b160b264d68acff3d2654c1eb5d0ee0e1388d741c38fc13324f4c3234da86daf3ded5744a616aa138fa50eb28858f56a4ff2700f
checksum: 2cdf91420982e909869cf9ddc1754943d4e5e8bef7545e4d5afdfc202eb1bbdcb33197bb4ad2978f6cfd02aad3229ec53061ff06680c9f2917638fde79b98b28
languageName: node
linkType: hard
"publicodes@npm:^1.0.0-beta.30, publicodes@npm:^1.0.0-beta.31":
version: 1.0.0-beta.31
resolution: "publicodes@npm:1.0.0-beta.31"
"publicodes@npm:^1.0.0-beta.32":
version: 1.0.0-beta.32
resolution: "publicodes@npm:1.0.0-beta.32"
dependencies:
moo: ^0.5.1
nearley: ^2.19.2
yaml: ^1.9.2
peerDependencies:
"@types/mocha": ^9.0.0
checksum: 9bf074037e97339f05a84f9557f7d6b8c51b9af28c7526e06c3c3675f32349c2ef36dfbbab14610e0638c1e6e9d42ea335502df6cf455d1af543559caedec8ac
checksum: 674a5f1ee9f755cf8f9fd2312523ee70f3963b1c8cb9e0249919ad48269f3dbe831d4fe3e1c13400216bd21b34d2bbd5f71e571b3adc210ebdb1c2dc18ee72d6
languageName: node
linkType: hard
@ -17645,8 +17645,8 @@ __metadata:
markdown-to-jsx: ^7.1.5
modele-social: ^0.6.0
prettier: ^2.5.1
publicodes: ^1.0.0-beta.31
publicodes-react: ^1.0.0-beta.31
publicodes: ^1.0.0-beta.32
publicodes-react: ^1.0.0-beta.32
ramda: ^0.27.0
react: ^17.0.0
react-color: ^2.14.0