npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@betagouv/aides-velo

v0.2.1

Published

Modèle Publicodes pour le calcul des aides vélo en France

Downloads

1,140

Readme

@betagouv/aides-velo

NPM Version jsDocs.io

Modèle Publicodes pour le calcul des aides vélo en France.

[!NOTE] Ce modèle est la continuité de celui de Mes Aides Vélo rédigé par Maxime Quandalle. Il a été rapatrié dans l'organisation Beta.gouv pour faciliter sa maintenance et son évolution.

[!WARNING] Ce modèle est en cours de développement et n'est pas encore complet. L'API d'utilisation est susceptible d'évoluer, veuillez en tenir compte lors de l'utilisation de ce paquet. (N'hésitez pas à ouvrir une issue si vous avez des suggestions ou des retours à faire).

Installation

yarn install @betagouv/aides-velo

Utilisation

Par soucis de praticité, ce paquet expose en plus des règles Publicodes (accessible depuis ./src/rules), une classe AidesVeloEngine qui encapsule un moteur Publicodes afin de faciliter l'utilisation des règles.

En exposant notamment la méthode computeAides qui permet de calculer et récupérer la liste de toutes les aides éligibles pour une situation donnée, ainsi que la méthode setInputs qui permet de définir les valeurs des questions du modèle de manière au format JS et type-safe (voir le type Questions).

[!NOTE] To see the full API documentation, please refer to jsDocs.io.

Avec la classe AidesVeloEngine

import { AidesVeloEngine } from "@betagouv/aides-velo";

// Initialisation du moteur
const engine = new AidesVeloEngine();

// Définition de la situation
engine.setInputs({
  "localisation . code insee": "33119", // Code INSEE de la commune, permet de récupérer les aides communales
  "localisation . epci": "Bordeaux Métropole", // Permet de récupérer les aides intercommunales
  "localisation . département": "33", // Permet de récupérer les aides départementales
  "localisation . région": "75", // Permet de récupérer les aides régionales
  "localisation . pays": "France", // Permet de récupérer les aides nationales
  "vélo . type": "électrique",
  "vélo . état": "neuf",
  "vélo . prix": 1000,
  "revenu fiscal de référence par part . revenu de référence": 20000,
  "revenu fiscal de référence par part . nombre de parts": 2,
});

// Calcul des aides
engine
  .computeAides()
  .forEach(({ title, amount }) => console.log(`Aide ${title} : ${amount}€`));

// Aide Bonus vélo : 300€
// Aide Prime à la conversion : 400€
// Aide Bordeaux Métropole : 200€
// Aide Ville de Bègles : 200€

[!TIP] Pour récupérer les informations de localisation (code INSEE, EPCI, etc...) nécessaires pour le calcul des aides, il est possible d'utiliser le paquet @etalab/decoupage-administratif.

Avec les règles Publicodes

Il est également possible d'utiliser les règles Publicodes directement avec @betagouv/aides-velo/rules.

import Engine, { formatValue } from "publicodes";
import rules from "@betagouv/aides-velo/rules";

const engine = new Engine(rules);

// Permet de définir les valeurs de chaques règles et pas seulement celles qui
// correspondent à des questions.
engine.setSituation({
  "localisation . epci": "'CA du Grand Angoulême'",
  "vélo . type": "'électrique'",
  "vélo . état": "'occasion'",
  "vélo . prix": 1000,
  "revenu fiscal de référence par part": 2000,
});

const result = engine.evaluate("aides . grand angouleme");

console.log(result.nodeValue);
// 400

console.log(formatValue(result));
// 400 €

Développement

// Install the dependencies and run postinstall scripts
yarn install

// Compile the Publicodes rules
yarn run compile:rules

// Run the tests
yarn run test

// Compile the whole package (rules + wrapper function)
yarn run compile

// Run the documentation server
yarn run doc

Modification des aides

Si vous avez repéré une erreur ou souhaitez ajouter une aide, vous pouvez simplement ouvrir une issue ou si vous le souhaitez, ouvrir une pull request avec les modifications nécessaires.

Toutes les aides sont définie dans le fichier src/rules/aides.publicodes et peuvent être modifiées (resp. supprimées/ajoutées) directement dans ce fichier.

Une fois les modifications effectuées, assurez vous de ne pas avoir introduit d'erreurs dans les règles avec la commande yarn run compile.

[!NOTE] Si une aide n'est plus d'actualité et doit être supprimée, il est préférable de la commenter plutôt que de la supprimer directement. Cela permet de conserver une trace de l'aide et de la réactiver si nécessaire.

Si la modélisation de l'aide implique un certain degré de complexité, il est probablement souhaitable de rajouter des tests unitaires dans le fichier test/rules.test.ts.

Une fois toutes les modifications effectuées et les tests passés, vous pouvez ajouter vos modifications dans le changelog grâce à la commande npx changeset en sélectionnant patch puis en ajoutant la description adéquate :

Add - [Titre de l'aide]

Update - [Titre de l'aide] - [Description de la modification]

Remove - [Titre de l'aide]

[!TIP] Exécuter cette commande permettra d'automatiser la génération du changelog lors de la publication de la prochaine version et ainsi garder une trace des modifications apportées.

Enfin, commitez vos modifications et ouvrez une pull request.