diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..02b9c0d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: 'npm' + directory: '/' + versioning-strategy: increase + open-pull-requests-limit: 1 + schedule: + interval: 'daily' + labels: + - aides + allow: + - dependency-name: '@betagouv/aides-velo' diff --git a/.github/workflows/package.yaml b/.github/workflows/package.yaml deleted file mode 100644 index 556136b..0000000 --- a/.github/workflows/package.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: NPM Package -on: - push: - pull_request: -jobs: - tests-and-publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - uses: actions/setup-node@v2 - with: - node-version: '20' - - run: npm ci - - name: Build and Test - run: | - npm ci - npm run build - npm test - working-directory: package-aides-velo - - name: Publish on NPM - uses: JS-DevTools/npm-publish@v1 - with: - token: ${{ secrets.NPM_PUBLISH_SECRET }} - dry-run: ${{ github.ref != 'refs/heads/master' }} - package: ./package-aides-velo/package.json diff --git a/.prettierrc b/.prettierrc index 97a77f0..14fb98a 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,11 @@ { + "plugins": ["prettier-plugin-svelte"], + "overrides": [ + { + "files": "*.svelte", + "options": { "parser": "svelte" } + } + ], "useTabs": true, "singleQuote": true, "printWidth": 100 diff --git a/README.md b/README.md index 1e14170..511131a 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,73 @@ # Mesaidesvelo.fr -### Puis-je bénéficier d’aides pour acheter un vélo ? +### Puis-je bénéficier d'aides pour acheter un vélo ? -De nombreuses villes proposent des aides à l’achat de vélos. Leur objectif est d’encourager l'usage du vélo sur leur territoire. Il existe aussi des aides au niveau du département, de la région ainsi qu’au niveau national. +De nombreuses villes proposent des aides à l'achat de vélos. Leur objectif est +d'encourager l'usage du vélo sur leur territoire. Il existe aussi des aides au +niveau du département, de la région ainsi qu'au niveau national. -Les modalités de ces aides sont variées, elles sont parfois cumulables et parfois pas, parfois conditionnées à un niveau de revenus et d'autres fois ouvertes à tous, etc. +Les modalités de ces aides sont variées, elles sont parfois cumulables et +parfois pas, parfois conditionnées à un niveau de revenus et d'autres fois +ouvertes à tous, etc. -**Mesaidesvelo.fr** rassemble [toutes les aides](https://mesaidesvelo.fr/liste-aides) existantes et permet d’en estimer le montant rapidement et simplement. +**Mesaidesvelo.fr** rassemble [toutes les +aides](https://mesaidesvelo.fr/liste-aides) existantes et permet d'en estimer +le montant rapidement et simplement. ### Comment contribuer ? -Vous avez identifié une erreur ou une aide que nous ne prenons pas en compte ? N’hesitez pas à ouvrir un ticket sur GitHub ! +#### Pour corriger ou proposer une aide -Si vous êtes développeur/euse vous pouvez aussi améliorer l’application. Il s'agit d’une application JavaScript, utilisant [Svelte Kit](https://kit.svelte.dev) et [Windi.css](https://windicss.org) pour l’interface. +Vous avez identifié une erreur ou une aide que nous ne prenons pas en compte ? -Pour lancer l'application en mode développement utilisez les commandes suivantes : +Vous pouvez [ouvrir un ticket sur +GitHub](https://github.com/betagouv/publicodes-aides-velo/issues/new). + +> [!NOTE] +> Les aides sont modélisées dans un dépôt dédié : +> [betagouv/publicodes-aides-velo](https://github.com/betagouv/publicodes-aides-velo). + +#### Pour améliorer l'application + +Si vous êtes développeur/euse vous pouvez aussi améliorer l'application. Il +s'agit d'une application JavaScript, utilisant [Svelte +Kit](https://kit.svelte.dev) et [Windi.css](https://windicss.org) pour +l'interface. + +Pour lancer l'application en mode développement utilisez les commandes +suivantes : ```sh npm install npm run dev ``` -Les aides utilisent le langage [Publicodes](https://publi.codes) et sont éditables dans le fichier [aides.yaml](./src/aides.yaml). - -Les tests d’intégrations utilisent [Playwright](https://playwright.dev/). En cas d'erreur vous pouvez voir le navigateur en action avec l’option `--headed` +Les tests d'intégrations utilisent [Playwright](https://playwright.dev/). En +cas d'erreur vous pouvez voir le navigateur en action avec l'option `--headed` ```sh npx playwright install npm run test:playwright -- --headed ``` -### D’où viennent les données ? +### D'où viennent les données ? + +Les aides sont modélisées en [Publicodes](https://publi.codes) dans le dépôt +[`betagouv/publicodes-aides-velo`](https://github.com/betagouv/publicodes-aides-velo). -Les aides sont saisies manuellement. +> [!NOTE] +> Historiquement, les aides étaient référencées et modélisées dans ce dépôt. +> Cependant, comme elles ont commencé à être réutilisées dans d'autres projets +> (tel que [1jeune1solution](https://mes-aides.1jeune1solution.beta.gouv.fr) ou +> [J'agis](https://jagis.beta.gouv.fr)), elles ont été déplacées dans un dépôt +> dédié afin de faciliter leur maintenance par les différentes équipes. -La recherche de ville utilise le paquet [`decoupage-administratif` fourni par Etalab](https://github.com/etalab/decoupage-administratif). +La recherche de ville utilise le paquet [`decoupage-administratif` fourni par +Etalab](https://github.com/etalab/decoupage-administratif). -Pour référencer une métropole ou une intercommunalité, utilisez le nom exact défini dans [la liste des EPCI](https://www.collectivites-locales.gouv.fr/institutions/liste-et-composition-des-epci-fiscalite-propre) +Pour référencer une métropole ou une intercommunalité, utilisez le nom exact +défini dans [la liste des +EPCI](https://www.collectivites-locales.gouv.fr/institutions/liste-et-composition-des-epci-fiscalite-propre) -La liste des entreprises pour la page sur le forfait mobilité est [extraite de la base Insee](./src/scripts/download-sirene-data.sh). +La liste des entreprises pour la page sur le forfait mobilité est [extraite de +la base Insee](./src/scripts/download-sirene-data.sh). diff --git a/data-fetch/miniatures/aides-jeunes-repo b/data-fetch/miniatures/aides-jeunes-repo deleted file mode 160000 index 5539451..0000000 --- a/data-fetch/miniatures/aides-jeunes-repo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5539451e0974d80782629851e4f5dcbe595b1105 diff --git a/data-fetch/miniatures/extract-from-aides-jeunes.js b/data-fetch/miniatures/extract-from-aides-jeunes.js deleted file mode 100644 index 5529ca2..0000000 --- a/data-fetch/miniatures/extract-from-aides-jeunes.js +++ /dev/null @@ -1,82 +0,0 @@ -import fs from 'node:fs'; -import { join } from 'node:path'; -import { URL } from 'node:url'; -import sharp from 'sharp'; -import { writeJsonData } from '../../src/scripts/writeData.js'; - -import aidesWithCollectivities from '../../src/lib/data/aides-collectivities.json' assert { type: 'json' }; - -const currentPath = new URL('./', import.meta.url).pathname; -const repoPath = join(currentPath, 'aides-jeunes-repo/'); -const rootPath = join(currentPath, '../../'); -const metadataDirectory = join(repoPath, 'data/institutions/'); - -if (!fs.existsSync(metadataDirectory)) { - console.warn('Impossible de télécharger les miniatures'); - console.log('Essayez de télécharger le sous-module aides-jeunes :'); - console.log('git submodule update --init --recursive --depth 1'); - process.exit(); -} - -// Map aides-jeunes identifiers with mesaidesvélo types. -function imgKey({ type, code_siren, code_insee }) { - const toInt = (str) => str.replace(/[^\d]/g, ''); - if (type === 'commune') { - return `code insee - ${toInt(code_insee)}`; - } else if (type === 'epci') { - return `epci - ${toInt(code_siren)}`; - } else if (type === 'departement') { - return `département - ${toInt(code_insee)}`; - } else if (type === 'region') { - return `région - ${toInt(code_insee)}`; - } else if (type === 'national') { - return `pays - France`; - } -} - -const imagesFromAidesJeunes = Object.fromEntries([ - ...fs.readdirSync(metadataDirectory).map((file) => { - const filePath = join(metadataDirectory, file); - const fileContent = fs.readFileSync(filePath, 'utf8'); - const fieldsToRetrieve = ['imgSrc', 'type', 'code_siren', 'code_insee']; - const data = Object.fromEntries( - fileContent - .split('\n') - .map((line) => line.split(':').map((field) => field.trim())) - .filter(([key]) => fieldsToRetrieve.includes(key)), - ); - - return [imgKey(data), data]; - }), - ['pays - France', { imgSrc: 'img/institutions/logo_etat_francais.png' }], -]); - -const miniatureDirectory = join(rootPath, 'static/miniatures/'); -if (fs.existsSync(miniatureDirectory)) { - fs.rmSync(miniatureDirectory, { recursive: true }); -} -fs.mkdirSync(miniatureDirectory, { recursive: true }); - -const thumbnailsManifest = Object.entries(aidesWithCollectivities).reduce((acc, [id, aide]) => { - const aideId = `${aide.collectivity.kind} - ${aide.collectivity.code ?? aide.collectivity.value}`; - - const img = imagesFromAidesJeunes[aideId]; - - if (!img) { - return acc; - } - - const imgName = img.imgSrc.split('/').at(-1).split('.')[0] + '.webp'; - generateThumbnail(img.imgSrc, imgName); - - return { ...acc, [id]: imgName }; -}, {}); - -async function generateThumbnail(imgSrc, imgName) { - const imgPath = join(repoPath, 'public/', imgSrc); - const img = sharp(imgPath); - await img.resize({ fit: 'inside', height: 170, width: 120 }); - await img.webp().toFile(join(miniatureDirectory, imgName)); -} - -writeJsonData('miniatures.json', thumbnailsManifest); diff --git a/package-aides-velo/.gitignore b/package-aides-velo/.gitignore deleted file mode 100644 index 567609b..0000000 --- a/package-aides-velo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build/ diff --git a/package-aides-velo/CHANGELOG.md b/package-aides-velo/CHANGELOG.md deleted file mode 100644 index 8d5ae60..0000000 --- a/package-aides-velo/CHANGELOG.md +++ /dev/null @@ -1,1501 +0,0 @@ -# Historique des modifications - -## v3.0.38 - 31/05/2024 - -Ajoute les aides suivantes : - -- Perpignan Méditerranée Métropole -- Agglomération d’Agen -- Communauté de communes Fier et Usses -- Campagnes de l’Artois -- Val d'Yerres Val de Seine -- Pays de Cruseilles -- Cévennes Gangeoises et Suménoises -- Tulle Agglo -- Ville de Montmorillon - -Mise à jour des aides suivantes : - -- Bonus vélo de l'État -- Grand Avignon -- Riviera Française -- Communauté de Communes du Val d’Argent -- Communauté de Communes des Vallons du Lyonnais -- Ville de Trouville-sur-Mer -- Ville de Mougins - -Supprime les aides suivantes : - -- Nevers Agglomération -- Communauté de Communes du Sisteronais-Buëch -- Loire Layon Aubance -- Cœur d'Ostrevent -- Ville de Pont-Saint-Maxence -- Terres de Montaigu - -## v3.0.37 - 04/04/2024 - -Ajoute l'aide suivante : - -- Ville de Saint-Omer - -Mise à jour des aides suivantes : - -- Massif du Vercors communauté de communes -- Ville de Grande Synthe - -Supprime les aides suivantes : - -- Communauté d'Agglomération de La Rochelle - Yélo -- Caux-Austreberthe communauté de communes -- Ville de Charenton -- Ville de Corrèze - -## v3.0.36 - 27/03/2024 - -Ajoute les aides suivantes : - -- Pays de Mormal -- Massif du Vercors communauté de communes -- Ville de Sainte-Foy-lès-Lyon -- Ville de Boé - -Mise à jour des aides suivantes : - -- Communauté urbaine de Dunkerque -- Communauté de Communes Saint-Avold Synergie -- Communauté de communes Arve & Salève -- Rives de Moselle -- Agglomération Rochefort -- Luxembourg - -Supprime les aides suivantes : - -- Département de Seine-Maritime -- Communauté des Communes Giennoises -- Bocage Mayennais Communauté de communes -- Ville de Vauvert - -## v3.0.35 - 21/02/2024 - -Ajoute l'aide suivante : - -- Ville de Bidart - -Mise à jour des aides suivantes : - -- Bonus vélo de l'État -- Saint-Étienne Métropole -- Brest Métropole -- Ville de Lesquin -- Morlaix Communauté - -Supprime les aides suivantes : - -- Tarbes Lourdes Pyrénées Communauté d'agglomération -- Communauté de communes Terre d’Auge -- Communauté de communes d’Erdre et Gesvres -- Communauté de Communes Sud Nivernais -- Île de Ré Communauté de communes -- Pévèle Carembault - -## v3.0.34 - 17/01/2024 - -Ajoute les aides suivantes : - -- Saint-Brieuc Armor Agglomération -- Ville de Pont-de-Beauvoisin - -Mise à jour des aides suivantes : - -- Communauté d'agglomération du Bassin d’Arcachon Nord -- Ville de Cournon-d’Auvergne -- Ville de Mandelieu-La Napoule -- Ville de Saint-Pair-sur-Mer -- Ville de Grande Synthe - -Supprime les aides suivantes : - -- Grand Besançon Métropole -- Grand Lieu Communauté -- Cœur de Savoie -- Massif du Vercors communauté de communes -- Maremne Adour Côte-Sud -- Communauté Urbaine d’Arras -- Pays de Mormal -- Plaine d'Estrées Communauté de communes -- Campagnes de l’Artois -- Val de Drôme en Biovallée -- Ville de Falaise -- Ville de Noyarey -- Ville de Vif -- Ville de Villeneuve lez Avignon -- Ville de Saint-Pierre-du-Mont -- Ville de Linselles -- Ville de Marcq-en-Barœul - -## v3.0.33 - 02/01/2024 - -Corrige l'aide de Paris - -## v3.0.32 - 28/11/2023 - -Ajoute les aides suivantes : - -- Pays Orne Moselle -- Ville de Bram - -Mise à jour des liens suivants : - -- Sète Agglopôle méditerranée -- Liffré-Cormier Communauté -- Communauté de Communes de la Côtière à Montluel -- Ville d’Unieux - -Supprime l'aide suivante : - -- Ville de Gerstheim - -## v3.0.31 - 01/11/2023 - -Ajoute les aides suivantes : - -- Grand Calais Terres et Mers - SITAC -- Ville de Val-de-Reuil - -## v3.0.30 - 27/10/2023 - -Corrige le code Insee de Linselles - -## v3.0.29 - 26/10/2023 - -Ajoute les aides suivantes : - -- Grand Angoulême -- Ville de Morzine-Avoriaz -- Ville de Linselles - -Mise à jour des aides suivantes : - -- Brest Métropole -- Communauté des Communes Giennoises -- Tarbes Lourdes Pyrénées Communauté d'agglomération -- Ville de Talant - -Supprime les aides suivantes : - -- Vannes Agglomération -- Saint-flour communauté -- Marches du Velay-Rochebaron - -## v3.0.28 - 06/10/2023 - -Ajoute les aides suivantes : - -- Syndicat Mixte des Mobilités de l’Aire Grenobloise -- Bassin d’Aubenas - -Mise à jour des aides suivantes : - -- VilleFranche Beaujolais Saône Agglo - -Modifie les liens suivants : - -- Communauté de Communes Saint-Avold Synergie -- Ville de Puteaux -- Ville de Saint-Alban-Leysse -- Ville de Mandelieu-La Napoule - -Supprime les aides suivantes : - -- Ville de Daix - -## v3.0.27 - 28/09/2023 - -Corrige l'aide de Thue et Mue - -## v3.0.26 - 27/09/2023 - -Ajoute l'aide suivante : - -- Ville de Thue et Mue - -Mise à jour des aides suivantes : - -- Communauté d'Agglomération de La Rochelle -- Communauté de communes Côte d’Émeraude -- Communauté d'Agglomération de La Rochelle -- Saumur Val de Loire agglomération - -Supprime les aides suivantes : - -- Annemasse Agglo -- Agglo Pays D'Issoire -- Ville de Bourg-en-Bresse -- Ville de Grigny - -## v3.0.25 - 22/09/2023 - -Ajoute l'aide suivante : - -- Ville de Bègles - -Mise à jour des aides suivantes : - -- Métropole Grand Lyon -- Communauté d’Agglomération Sophia Antipolis -- Communauté d'agglomération du Bassin d'Arcachon Nord -- Ville d’Unieux - -## v3.0.24 - 13/09/2023 - -Ajoute l'aide suivante : - -- Communauté de communes du Saulieu - -Corrige les aides suivantes : - -- Département de Seine-Maritime -- Valenciennes Métropole -- Ville de Wambrechies - -## v3.0.23 - 06/09/2023 - -Ajoute les aides suivantes : - -- Perpignan Méditerranée Métropole -- Ville de Châtel -- Ville du Vigan - -Modifie les liens suivants : - -- Ville de Colmar -- Ville de Drancy - -Supprime les aides suivantes : - -- Grand Angoulême -- Le Pays Rochois Communauté de communes -- Coutance Mer et Bocage - -## v3.0.22 - 24/08/2023 - -Modifie les aides suivantes : - -- Ville de Longuenesse -- Ville de La Tour du Pin -- Ville du Relecq-Kerhuon - -Supprime l'aide suivante : - -- Saint-Brieuc Armor Agglomération - -## v3.0.21 - 22/08/2023 - -Ajoute les aides suivantes : - -- Ville de Val-Revermont -- Marches du Velay-Rochebaron -- Pays de Châteaugiron -- Ville de La Tour du Pin -- Ville de Falaise -- Saint-flour communauté -- Bièvre Isère communauté -- Ville de Ceyrat -- Ville de Baud -- Ville de Castelnau de Médoc -- Communauté de Communes de la Côtière à Montluel - -Modifie les aides suivantes : - -- Communauté de communes Côte d’Émeraude -- Ville de Puteaux - -Supprime l'aide suivante : - -- Ville de Mérignac (épuisé pour 2023) - -## v3.0.20 - 16/08/2023 - -Ajoute les aides suivantes : - -- Communauté de communes Les Avant-Monts -- Haut Béarn communauté de communes -- Agglo de la région de Château-thierry -- Communauté de communes Vallées de l’Orne et de l’Odon -- Couesnon Marches de Bretagne -- Golf de Saint-Tropez -- Vallées du Clain -- Ville de Joinville-le-Pont -- Ville-sur-Jarnioux -- Ville de Cazouls-Lès-Béziers -- Ville d’Ecommoy -- Ville de Joinville -- Ville de Bannalec -- Ville de Witry-lès-Reims -- Ville de Labège -- Ville d’Hennebont -- Ville de Villers-sur-mer -- Ville de Saint-Rémy-de-Provence - -Mise à jour du lien suivant : - -- Ville de Marignier - -Supprime l'aide suivante : - -- Terre d'Émeraude Communauté - -Retouche les titres suivants : - -- Ville d’Ifs -- Agglo du Beauvaisis -- Communauté de Communes Cœur de Nacre -- Communauté de communes du Pays de Dol et de la Baie du Mont Saint-Michel -- Ville de La Ferté Saint-Aubin -- Cœur de Maurienne Arvan - -## v3.0.19 - 08/08/2023 - -Ajoute les aides suivantes : - -- Communauté de communes de la Vallée de Villé -- Communauté de communes Vallée de l’Homme -- Communauté de communes Moselle et Madon -- Campagnes de l’Artois -- Vexin Normand -- Châteauroux Métropole -- Ville d’Amboise -- Ville de Saint-Pierre-du-Mont -- Ville d’Albert -- Ville d’Igny -- Ville d’Iwuy -- Ville de Denain -- Ville de Feignies -- Ville d’Ambrechies -- Ville de Canélan -- Ville de Trébeurden - -Mise à jour des aides suivantes : - -- Pontivy Communauté - -## v3.0.18 - 28/07/2023 - -Ajoute les aides suivantes : - -- Région Grand Est -- Communauté de communes du Pays de Fénelon -- Ville de Montval sur Loir - -Mise à jour des aides suivantes : - -- Île-de-France Mobilités -- Grand Avignon - -Supprime les aides suivantes : - -- Ville de Fontenay -- Ville de Sainte Foy-Lès-Lyon -- Grand Lac Communauté d'agglomération -- Pays de l’Or - -## v3.0.17 - 12/07/2023 - -Ajoute les aides suivantes : - -- Plaine de l'Ain -- Communauté de communes Saône Beaujolais -- Île de Ré Communauté de communes -- Plaine d'Estrées Communauté de communes -- Communauté de communes Sommes Sud-Ouest -- Communauté d'agglomération du Bassin d'Arcachon Nord -- Ville de Dreux - -Mise à jour des aides suivantes : - -- Pays d'Iroise -- Saint-Étienne Métropole -- Les Crêtes Préardennaises -- Ville de Geispolsheim - -Supprime les aides suivantes : - -- Département Mayenne ([source](https://www.lamayenne.fr/service/passez-au-velo-electrique)) -- Châteauroux Métropole - -## v3.0.16 - 11/07/2023 - -Ajoute les aides suivantes : - -- Département de l'Oise -- Agglo de Beauvais -- Pays de l’Ozon -- Poher Communauté -- Communauté de communes Osartis-Marquion -- Les Crêtes Préardennaises -- Cœur de Savoie -- Pays d'Iroise -- Grand Cubzaguais -- Ville de Fourmies -- Ville de Val-au-Perche -- Ville de Cenon - -Mise à jour de l'aide suivante : - -- Ville de Granville - -Supprime les aides suivantes : - -- Métropole Nice Côte d’Azur -- Montlouis sur Loire - -## v3.0.15 - 06/07/2023 - -Ajoute les aides suivantes : - -- Cœur de Maurienne Arvan -- Communauté de Communes du Pays de L‘Arbresle -- Ville de Montagnole -- Ville de Saint-Alban-Leysse - -## v3.0.14 - 04/07/2023 - -Ajoute les aides suivantes : - -- Région Centre-Val de Loire -- Maremne Adour Côte-Sud -- Annonay Rhône Agglo - -Mise à jour des aides suivantes : - -- Châteauroux Métropole -- Ville de Saint-Pair-sur-Mer - -Suppression des aides suivantes : - -- Ville de Ploemeur -- Ville de Wasselonne -- Sud Estuaire Communauté de communes -- Ville du Bourget-du-Lac -- Vendée Grand Littoral -- Pays de Saint-Omer -- Ploërmel communauté - -Mise à jour des liens suivants : - -- Saint-Étienne Métropole -- Ville de Saint-Remy -- Bordeaux Métropole -- Ville de Belfort -- Communauté de communes Terre d’Auge -- Ville de Camon -- Ville de Rivery -- Communauté de communes d’Erdre et Gesvres -- Ville de Carpiquet -- Communauté de communes Dieulefit-Bourdeaux -- Ville de Lisieux -- Villeneuve lez Avignon - -## v3.0.13 - 29/06/2023 - -Ajoute des aides suivantes : - -- Cluses Arve & Montagnes -- Cœur d'Ostrevent -- Ville d'Aubervilliers - -Mise à jour des aides suivantes : - -- Région Occitanie -- Pass'Mobil'Agglo (Béthune) - -Mise à jour des liens suivants : - -- Montpellier Méditerranée Métropole -- Grand Périgueux -- Grand Poitiers - -## v3.0.12 - 13/06/2023 - -Ajoute les aides suivantes : - -- Vienne et Gartempe Communauté de communes - -Supprime les aides suivantes : - -- Orléans Métropole - -Technique: retour à une ancienne version de publicodes - -## v3.0.11 - 01/06/2023 - -Ajout des aides suivantes : - -- Département de Seine-Maritime -- Département de la Loire -- Agglo Bocage-Bressuirais -- Anjou Bleu Communauté -- Auray Quiberon Terre Atlantique -- Communauté de communes Arve & Salève -- Communauté de communes des Villes Soeurs -- Communauté de communes du Grand Roye -- Communauté de communes du Grand Saint-Émilionnais -- Communauté de Communes du Sisteronais-Buëch -- Communauté de communes des Monts du Pilat -- Communauté de communes de la Région de Molsheim-Mutzig -- Saint-Marcellin Vercors Isère Communauté -- Grand Poitiers -- Haute Cornouaille Communauté de communes -- Fougères Agglomération -- Liffré-Cormier Communauté -- Montfort Communauté -- Pévèle Carembault -- Pornic agglo Pays de Retz -- Portes du Luxembourg -- Saint-Brieuc Armor Agglomération -- Saint-Lô Agglo -- Saint-Louis Agglomération -- Ville de Bourg-en-Bresse -- Ville de la Ferté Saint-Aubin -- Ville de Chevilly-Larue -- Ville du Relecq-Kerhuon -- Ville de Loos-en-Gohelle -- Ville de Givors -- Ville d’Hermanville-sur-Mer - -Mise à jour des aides suivantes : - -- Cap Cotentin - -## v3.0.10 - 13/05/2023 - -Mise à jour des aides suivantes : - -- Île-de-France Mobilités -- Grand Lieu Communauté -- Nantes Métropole -- Morlaix Communauté -- Massif du Vercors communauté de communes -- Brest Métropole - -Ajoute les aides suivantes : - -- Grand Angoulême -- La Porte du Hainaut -- Val de Drôme en Biovallée -- Communauté de communes Carmausin-Ségala -- Ville de Clisson -- Ville d'Annœullin -- Ville de Belfort -- Ville de Dieppe -- Ville de Lisieux - -Supprime les aides suivantes : - -- Agglomération Castres-Mazamet -- Ville de Plouzané - -## v3.0.9 - 27/02/2023 - -Ajout des aides suivantes : - -- Pays de Saverne -- Pays Mornantais - -Mise à jour des liens suivants : - -- Lorient Agglomération - -Supprime les aides suivantes : - -- Agglomération Pays Basque - -## v3.0.8 - 14/02/2023 - -Ajout des aides suivantes : - -- Limoges Métropole -- Saint-Étienne Métropole -- Communauté de communes côte d'émeraude -- Bocage Mayennais Communauté de communes -- Communauté de Communes cœur de Nacre - -Mise à jour des aides suivantes : - -- Bonus vélo de l'État -- Communauté de communes Loue Lison -- Ville de Plouzané - -Suppression des aides suivantes : - -- L’Ernée Communauté de communes -- Pays de Saint Malo Agglomération -- Ville de Bourg-en-Bresse -- Ville de Meyreuil -- Ville de Lempdes -- Ville de Vaucresson - -## v3.0.7 - 06/02/2023 - -Ajout des aides suivantes : - -- Sète Agglopôle éditerranée -- Ville de Bourg-Saint-Maurice -- Ville de Lesquin -- Communauté de Communes Saint-Avold Synergie - -Supprime les aides suivantes : - -- Valence Romans Déplacements - -## v3.0.6 - 15/01/2023 - -Ajout des aides suivantes : - -- Communauté de communes Loue Lison -- Ville du Kremlin-Bicêtre - -Mise à jour des liens suivants : - -- Commune d’Unieux -- Communauté de Communes du Val d’Argent -- Châteauroux Métropole - -Supprime les aides suivantes : - -- Région Grand Est -- Communes du Pays Rhénan -- Ville de Voglans -- Communauté de communes Arve & Salève - -## v3.0.5 - 29/12/2022 - -Mise à jour des aides suivantes : - -- Bonus vélo de l’État -- Eurométropole de Strasbourg - -Ajout des aides suivantes : - -- La Cali - L'agglo Rive Droite de Bordeaux -- Communauté de communes Ambert Livradois Forez -- Communauté de communes de Puisaye-Forterre -- Vesoul agglo -- Pays de Barr - -Supprime les aides suivantes : - -- Ville de Bar-le-Duc -- Ville de Château du Loir -- Ville de Cormelles le Royal - -Mise à jour des liens : - -- Prime à la conversion -- Ville de Marcq-en-Barœul -- Ville de Carpiquet -- Ville de Gerstheim - -## v3.0.4 - 08/11/2022 - -Ajout des aides suivantes : - -- Grand Villeneuvois -- Ville de Marcq-en-Barœul -- Ville de Pont-Saint-Maxence - -Mise à jour des liens suivants : - -- Grand Albigeois -- Ville de Lanester - -Correction des aides suivantes : - -- Brest Métropole - -Suppression des aides suivantes : - -- Ville de Larçay -- Balcons du Dauphiné -- Agglo Bocage-Bressuirais -- Ville de Barentin -- Val de Drôme en Biovallée -- Tulle Agglo -- Ville de Saint-Martin-de-Crau -- Ville de Marquette-lez-Lille - -## v3.0.3 - 05/10/2022 - -Supprime l’aide suivante : - -- La Porte du Hainaut communauté d'Agglomération - -## v3.0.2 - 04/10/2022 - -Ajout des aides suivantes : - -- Ville de Lezenne -- Ville de Plougastel -- Ville de Gerstheim -- Ville d’Eschau -- Ville d’Eckbolsheim -- Communauté de Communes du Ried de Marckolsheim -- Ville de Marckolsheim -- Communauté de Communes du Val d’Argent - -Mise à jour de l'aide de la ville de Paris - -## v3.0.1 - 27/09/2022 - -Modifie les fichiers publiés dans le paquet pour résoudre un problème Typescript - -## v3.0.0 - 11/09/2022 - -Passage en licence AGPL v3 - -## v2.0.52 - 11/09/2022 - -Ajout de l’aide suivante : - -- Vallée d’Ossau communauté de communes - -## v2.0.51 - 07/09/2022 - -Ajout des aides suivantes : - -- Surprime Zone à Faibles Émissions -- Communauté d'agglomération de Cambrai -- Ville d’Écully -- Ville de Feyzin -- Ville de Grigny -- Ville d’Irigny -- Ville d’Oullins -- Ville de Pierre-Bénite -- Ville de Lanester -- Ville de Puteaux - -Mise à jour des aides suivantes : - -- Ville de Dardilly - -## v2.0.50 - 31/08/2022 - -Ajout des vélos d'occasion : - -- Annemasse Agglo -- Valenciennes Métropole -- Montpellier Méditerranée Métropole - -## v2.0.49 - 26/08/2022 - -Supprime les aides suivantes : - -- Département du Lot -- Département de Saône-et-Loire -- Département de Seine-Maritime -- Département de la Loire -- Département des Bouches-du-Rhône -- Agglomération d’Agen -- Ville de Thionville -- Douarnenez communauté -- Grand Poitiers - -Mise à jour du lien de l’aide suivante : - -- Laval Agglo - -Ajout de l’aide suivante : - -- Communauté de communes du Pays de Dol et de la Baie du Mont Saint-Michel - -Ajout des vélos d'occasion : - -- Ville de Divonne-les-bains -- Ville de Illkirch-Graffenstaden - -## v2.0.48 - 22/08/2022 - -Corrige les aides suivantes : - -- Région Pays de la Loire -- Ville de Charenton - -Suppression de l’aide suivante : - -- Bourges Plus - -## v2.0.47 - 19/08/2022 - -Ajout des aides suivantes : - -- Communauté de Communes des Portes de Romilly-sur-Seine -- ARCHE Agglo -- Val de Drôme en Biovallée - -Mise à jour de l’aide suivante : - -- Communauté de communes Dieulefit-Bourdeaux - -Mise à jour des EPCI pour 2022 - -## v2.0.46 - 18/08/2022 - -Mise à jour du lien service-public.fr du Bonus vélo de l’État - -Corrige les aides suivantes : - -- Prime à la conversion -- Agglomération Pays Basque -- Grand Avignon -- Département de l'Ardèche -- Haut Val de Sèvre Communauté de communes - -Ajoute les aides suivantes : - -- Villeneuve lez Avignon -- Le Pays Rochois Communauté de communes - -Supprime l'aide suivante : - -- Département Puy-de-Dôme - -## v2.0.45 - 16/08/2022 - -Mise à jour des aides de l’État : - -- Plafond du bonus vélo électrique augmenté à 300 € -- Ouverture du bonus « autres vélos » aux vélos pliants -- Aides supplémentaires pour les ménages les plus modestes -6300 €/an : - - vélo mécanique simple jusqu'à 150 € - - vélo électrique jusqu'à 400 € - - vélo cargo ou pliant jusqu'à 2000 € - -Ajout de l'aide suivante : - -- Département de l'Ardèche - -## v2.0.44 - 12/08/2022 - -Ajout de l'aide suivante : - -- Grand Orb Communauté de communes - -Mise à jour des aides suivantes : - -- Grand Périgueux -- Montluçon Communauté -- Agglo Boulonnais -- Agglomération Pays Basque - -## v2.0.43 - 01/08/2022 - -Ajout des aides suivantes : - -- Haut Val de Sèvre Communauté de communes -- Communauté de communes Honfleur-Beuzeville - -## v2.0.42 - 21/07/2022 - -Support des aides aux vélos d'occasion pour les collectivités suivantes : - -- Toulouse -- Lyon -- Porte du hainaut -- Louvigny -- Pantin -- La roche sur yon -- Saint-jacques de la lande -- Béthune bruay - -## v2.0.41 - 19/07/2022 - -Ajout des aides suivantes : - -- Pays de Mormal -- Ville de Montigny lès Metz - -Suppression de l'aide suivante : - -- Communauté de communes du Grand Saint-Émilionnais - -Mise à jour du lien de l'aide suivante : - -- Pays de Lumbres - -## v2.0.40 - 18/07/2022 - -Ajout des aides suivantes : - -- Communauté de Communes de la Côte d’Albâtre -- Ville de Mennecy - -Mise à jour des liens des aides suivantes : - -- Communauté de communes Arve & Salève -- Ville de Deauville - -## v2.0.39 - 16/07/2022 - -Ajout de l'aide de la ville de Crolles - -## v2.0.38 - 07/07/2022 - -Ajout des aides suivantes : - -- Département de Seine-Maritime -- Commune d’Unieux -- Communauté de communes Terre d’Auge -- Communauté de communes Côte d’Émeraude - -Mise à jour des aides suivantes : - -- Laval Agglo - -Suppression des aides suivantes : - -- Ville de Lezennes -- Saint-Brieuc Armor Agglomération -- Pays de Saint-Gilles Croix de Vie -- Ville de Chalette-sur-Loing - -## v2.0.37 - 23/06/2022 - -Ajout des aides suivantes : - -- Département de la Loire -- Communauté de communes du Pays d’Ancenis -- Communauté de communes Arve & Salève -- Ville de Lempdes - -Suppresion des aides suivantes : - -- Métropole de Saint-Étienne ([réf](https://www.saint-etienne-metropole.fr/subvention-vae2022)) -- Ville de Martigues ([réf](https://www.ville-martigues.fr/services-en-ligne/deplacements/pistes-cyclables/velo-a-assistance-electrique-aide-a-lachat)) -- Ville de Drumettaz-Clarafond - -Mise à jour des aides suivantes : - -- Ville de Pantin - -## v2.0.36 - 17/06/2022 - -Réactive l'aide de Strasbourg ([réf](https://github.com/mquandalle/mesaidesvelo/commit/2caf7634a6e06d52887d02b529a27e12131ee919#r76351316)) - -## v2.0.35 - 17/06/2022 - -Ajout des aides suivantes : - -- Pass'Mobil'Agglo (remplace l'aide de Béthune) -- Agglomération Provence Verte -- Balcons du Dauphiné - -## v2.0.34 - 15/06/2022 - -Ajout des aides suivantes : - -- Châteaubriant Derval Communauté de communes - -Désactive l'aide de Strasbourg ([réf](https://pokaa.fr/2022/06/02/mauvaise-surprise-laide-aux-velos-de-la-ville-de-strasbourg-nest-plus-disponible/)) - -## v2.0.33 - 08/06/2022 - -Ajout des aides suivantes : - -- Communauté de Communes Sud Nivernais -- Ville de Larçay - -Mise à jour des aides suivantes : - -- Agglomération Pays Basque -- Communauté d’Agglomération Sophia Antipolis - -## v2.0.32 - 30/05/2022 - -Ajout des aides suivantes : - -- Département Mayenne -- Sud Estuaire Communauté de communes -- Charlieu-Belmont Communauté -- Communauté de Communes Aunis Atlantique -- Communauté des Communes Giennoises -- Sèvre-et-Loire Communauté -- Loire Layon Aubance -- Tarbes Lourdes Pyrénées Communauté d'agglomération -- Grand Lieu Communauté -- Vallons de Haute Bretagne Communauté -- Coutance Mer et Bocage -- Ville de Guichen -- Ville de Saint-Jean-de-Védas -- Ville de Sainghin en Melantois -- Ville de Louvigny -- Ville de Voglans -- Ville de Lescar -- Ville de Saint-Remy - -Mise à jour des aides suivantes : - -- Orléans Métropole -- Saumur Val de Loire agglomération -- Agglopolys -- Ville de Hem -- Ville de Colmar - -Suppression des aides suivantes : - -- Sète Agglopôle méditerranée -- Ville de Comines -- Ville de Thionville - -## v2.0.31 - 28/04/2022 - -Ajout de l'aide suivante : - -- Ville de Blacé - -Mise à jour des liens suivants : - -- Haut-Poitou Communauté de Communes -- Grand Reims Communauté urbaine -- Vannes Agglomération - -## v2.0.30 - 17/04/2022 - -Ajout des aides suivantes : - -- Saumur Val de Loire agglomération -- Ville de Rueil-Malmaison -- Ville d’Elbeuf -- Ville de Drumettaz-Clarafond - -Mise à jour de l'aide suivante : - -- Département de Saône-et-Loire - -## v2.0.29 - 13/04/2022 - -Ajout des aides suivantes : - -- Grand Poitiers -- Caux-Austreberthe communauté de communes -- Ville de Barentin -- Ville de Pavilly - -Suppression de l'aide suivante : - -- Ville d’Épernay - -Mise à jour des aides suivantes : - -- Rives de Moselle - -## v2.0.28 - 12/04/2022 - -Ajout des aides suivantes : - -- Haut-Poitou Communauté de Communes -- Flers Agglo - -Mise à jour des aides suivantes : - -- Ville de Vendenheim -- Grand Lac Communauté d'agglomération - -## v2.0.27 - 07/04/2022 - -Ajout de l'aide suivante : - -- Ville de Wasselonne - -Mise à jour de l'aide suivante : - -- Région Occitanie - -## v2.0.26 - 04/04/2022 - -Ajout de l'aide suivante : - -- Agglo Bocage-Bressuirais - -Mise à jour de l'aide suivante : - -- Métropole Grand Lyon - -## v2.0.25 - 02/04/2022 - -Ajout des aides suivantes : - -- Agglomération Agen -- Ville d’Istres -- Ville de Bonningues-lès-Calais - -Retouche texte Île-de-France Mobilités - -## v2.0.24 - 02/04/2022 - -Ajout des aides suivantes : - -- Douarnenez communauté -- Terres de Montaigu -- Ville de Vauvert - -Correction des aides suivantes : - -- Ville de Château du Loir -- Département Côte d’Or (lien) - -## v2.0.23 - 21/03/2022 - -Ajout des aides suivantes : - -- Région Grand Est -- Département de Saône-et-Loire -- Pau Béarn Pyrénées Mobilité -- Quimperlé Communauté -- Ville de Camon -- VilleFranche Beaujolais Saône Agglo -- Ville de Dardilly -- Ville de La Motte Servolex -- Ville d’Épernay -- Ville de Chalette-sur-Loing - -Suppression des aides suivantes : - -- Ville de Figeac -- Amiens Métropole - -Mise à jour des liens pour les aides suivantes : - -- Montluçon Communauté -- Laval Agglo -- Ville d’Amiens - -## v2.0.22 - 06/03/2022 - -Ajout des aides suivantes : - -- Saintes Communauté d'agglomération -- Yvetot Normandie -- La Porte du Hainaut communauté d'Agglomération -- Vienne Condrieu Agglomération -- Grand Périgueux - -## v2.0.21 - 05/03/2022 - -Ajout des aides suivantes : - -- Tulle Agglo -- Ville de Corrèze - -## v2.0.20 - 03/03/2022 - -Ajout des aides suivantes : - -- Grand Lac Communauté d'agglomération -- Ville du Bourget-du-Lac -- Ville de Quesnoy-sur-Deûle - -## v2.0.19 - 02/03/2022 - -Ajout des aides suivantes : - -- Communauté de communes des Portes de Rosheim -- Communes du Pays Rhénan - -Mise à jour de l'aide de la ville de Reims - -## v2.0.18 - 20/02/2022 - -Ajout des aides suivantes : - -- Ville de Quéven -- Communauté de communes du Grand Saint-Émilionnais - -## v2.0.17 - 17/02/2022 - -Ajout des aides suivantes : - -- Communauté de communes du Genevois -- Grand Reims Communauté urbaine - -Corrige l'aide de la ville de Reims - -## v2.0.16 - 13/02/2022 - -Ajout des aides suivantes : - -- Lannion-Trégor Communauté -- Ville de Perros-Guirec - -## v2.0.15 - 12/02/2022 - -Ajout des aides suivantes : - -- Communauté de communes Dieulefit-Bourdeaux -- Ville de Granville - -## v2.0.14 - 08/02/2022 - -Ajout des aides suivantes : - -- Pays de Saint Malo Agglomération -- Ville de Liévin - -Supprime l'aide d’Avesnes-sur-Helpe - -## v2.0.13 - 05/02/2022 - -Ajout des aides suivantes : - -- Divonne-les-Bains -- Mérignac -- Communauté de Communes de Flandre Intérieure -- Rives de Moselle - -## v2.0.12 - 03/02/2022 - -Ajout de l'aide Pays de la Loire pour les abonnés TER - -## v2.0.11 - 03/02/2022 - -Mise à jour du lien de l'aide de Comines - -## v2.0.10 - 02/02/2022 - -Ajout des aides suivantes : - -- Saint Étienne Métropole -- Sète Agglopôle méditerranée - -## v2.0.9 - 01/02/2022 - -Restaure l'aide de Fréjus - -## v2.0.8 - 01/02/2022 - -Corrige le calcul de l'aide de Grand Besançon Métropole - -## v2.0.7 - 30/01/2022 - -Ajout des aides suivantes : - -- Luberon Monts de Vaucluse -- Grand Châtellerault -- Évian-les-Bains -- Saint-Pol-de-Léon -- L’Ernée - -Correction calcul Toulouse (prix HT et non TTC) - -## v2.0.6 - 29/01/2022 - -Ajout des aides suivantes : - -- Brest Métropole -- Gouesnou -- Plougastel-Daoulas -- Saint-Brieuc Armor Agglomération -- Morlaix Communauté -- Crozon-Aulne maritime -- Ploërmel Communauté -- Grand Besançon Métropole -- Terre des 2 caps -- Bar-le-Duc -- Mornant - -## v2.0.5 - 28/01/2022 - -Suppression des aides de Fréjus et Grentheville - -## v2.0.4 - 26/01/2022 - -Mise à jour des aides et corrections des liens - -- Supprime l'aide de Pau -- Corrige le lien de Rochefort -- Mise à jour de l'aide de Nevers -- Mise à jour de l'aide d'Angers -- Supprime l'aide de Mer - -## v2.0.3 - 20/01/2022 - -Corrige l'aide vélo de Toulouse Métropole - -## v2.0.2 - 19/01/2022 - -Ajout d'aides dans la métropole de Strasbourg - -- Entzheim -- Geispolsheim -- Hangenbieten -- Illkirch-Graffenstaden -- Plobsheim -- Vendenheim - -## v2.0.1 - 19/01/2022 - -Ajout des aides suivantes : - -- Agglomération de Saint Gille Croix de Vie -- Ville de Talant -- Vendée Grand Littoral -- Pays des Achards -- Trouville-sur-Mer -- Deauville - -Corrige Hérouville-Saint-Clair - -Remplace « région Ile-de-France » par « Ile-de-France Mobilités » - -## v2.0.0 - 06/01/2022 - -Cette version contient les aides suivantes : - -- Aides de l'État - - Bonus vélo cargo de l’État - - Bonus vélo électrique de l’État - - Prime à la conversion -- Aides régionales - - Région Île-de-France - - Région Occitanie - - Région Corse -- Aides locales - - Agglo Boulonnais - - Agglo de Brive - - Agglo Pays D'Issoire - - Agglomération Castres-Mazamet - - Agglomération du Choletais - - Agglomération Épinal - - Agglomération Pays Basque - - Agglomération Rochefort - - Agglopolys - - Amiens Métropole - - Angers Loire Métropole - - Annemasse Agglo - - Ardenne Métropole - - Bordeaux Métropole - - Bourges Plus - - Caen la mer communauté urbaine - - Cap Cotentin - - Châteauroux Métropole - - Communauté d’Agglomération Sophia Antipolis - - Communauté de communes Bretagne romantique - - Communauté de communes d’Erdre et Gesvres - - Communauté de communes des Sablé sur Sarthe - - Communauté de communes des Sorgues du Comtat - - Communauté de Communes des Vallons du Lyonnais - - Communauté Urbaine d’Arras - - Communauté urbaine de Dunkerque - - Commune de Combloux - - Département Côte d’Or - - Département de la Somme - - Département des Bouches-du-Rhône - - Département du Lot - - Département Hérault - - Département Puy-de-Dôme - - Eurométropole de Strasbourg - - Grand Albigeois - - Grand Annecy - - Grand avignon - - Grand-Montauban - - La Roche-sur-Yon Agglomération - - Laval Agglo - - Les Sables d'Olonne - - Lorient Agglomération - - Métropole Grand Lyon - - Métropole Nice Côte d’Azur - - Métropole Toulon-Provence-Méditerranée - - Mont de Marsan Agglo - - Montlouis sur Loire - - Montluçon Communauté - - Montpellier Méditerranée Métropole - - Nantes Métropole - - Nevers Agglomération - - Orléans Métropole - - Ouistreham Riva-Bella - - Pass Mobilité Béthunes - - Pau Béarn Pyrénées Mobilités - - Pays de l’Or - - Pays de Laon - - Pays de Lumbres - - Pays de Montbéliard Agglomération - - Pays de Saint-Omer - - Pays de Sainte Odile - - Pays des Herbiers - - Pontivy Communauté - - Quimper Bretagne Occidentale - - Riviera Française - - Saint-Jacques de la Lande - - Saint-Martin-de-Crau - - Toulouse Métropole - - Valence Romans Déplacements - - Valenciennes Métropole - - Vannes Agglomération - - Vélo'Cab - Aurillac - - Ville d’Aix-les-Bains - - ville d’Amiens - - Ville d’Arcachon - - Ville d’Aubière - - Ville d’Avesnes-sur-Helpe - - Ville d’Hérouville Saint-Clair - - Ville d’ifs - - Ville de Baisieux - - Ville de Bétheny - - Ville de Billy-Berclau - - Ville de Bourg-en-Bresse - - Ville de Caen - - Ville de Carpiquet - - Ville de Carvin - - Ville de Cébazat - - Ville de Charenton - - Ville de Château du Loir - - Ville de Colmar - - Ville de Comines - - Ville de Cormelles le Royal - - Ville de Courbevoie - - Ville de Cournon-d’Auvergne - - Ville de Daix - - Ville de Drancy - - Ville de Faches-Thumesnil - - Ville de Figeac - - Ville de Fontenay - - Ville de Fréjus - - Ville de Genneviliers - - Ville de Grande Synthe - - Ville de Grentheville - - Ville de Gruson - - Ville de Hem - - Ville de La Madeleine - - Ville de La Rochelle - Yélo - - Ville de Lezennes - - Ville de Mandelieu-La Napoule - - Ville de Marignier - - Ville de Marquette-lez-Lille - - Ville de Martigues - - Ville de Mer - - Ville de Meyreuil - - Ville de Mondeville - - Ville de Mons en Barœul - - Ville de Montbéliard - - Ville de Mougins - - Ville de Nanterre - - Ville de Pantin - - Ville de Paris - - Ville de Ploemeur - - Ville de Plouzané - - Ville de Reims - - Ville de Rivery - - Ville de Romagnat - - Ville de Ronchin - - Ville de Saint-Germain la Blanche Herbe - - Ville de Sainte Foy-Lès-Lyon - - Ville de Sarlat - - Ville de Thiais - - Ville de Thionville - - Ville de Vaucresson - - Ville de Verson - - Ville de Vif - - Ville de Wasquehal -- Autres - - Monaco - - Luxembourg diff --git a/package-aides-velo/README.md b/package-aides-velo/README.md deleted file mode 100644 index 077a11f..0000000 --- a/package-aides-velo/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Paquet `aides-velo` - -Ce paquet est un emballage léger autour du moteur [publicodes](https://publi.codes/) et de la base d'aides vélo écrite dans ce langage. L'objectif est d'avoir une interface simple pour faciliter l'intégration de ces données sur des sites tiers, en particulier sur https://www.1jeune1solution.gouv.fr/mes-aides. - -Idéalement on ne devrait pas avoir besoin de ce paquet, en effet on pourrait utiliser directement l'API publicodes pour récupérer toutes les informations utiles depuis la base de règles. Cela nécessite sans doute encore quelques améliorations côté publicodes pour être réellement facile à utiliser. Et donc en attendant ce paquet joue le rôle de “colle” pour faciliter l'interfaçage, et garantir la retro-compatibilité en cas d'évolutions du moteur sous-jacent. - -La liste des aides est disponible sur https://mesaidesvelo.fr/liste-aides - -## API - -Pour obtenir la liste de toutes les aides vélo : - -```js -import aidesVelo from 'aides-velo'; - -console.log(aidesVelo()); -``` - -Il est possible de restreindre cette liste à un pays en particulier : - -```js -aidesVelo({ 'localisation . pays': 'france' }); -``` - -Par défaut le montant de l'aide n'est pas donné. En effet il dépend du type de vélo, ce que l'on peut préciser avec `vélo . type` : - -```js -aidesVelo({ - 'localisation . pays': 'france', - 'vélo . type': 'électrique', -}); -``` - -Le montant de l'aide peut être affiné avec d'autres variables en entrée. La liste est disponible via [le typage Typescript](./index.ts#L23-L39). D'autres exemples sont disponibles dans le fichier de [tests](./test.js). diff --git a/package-aides-velo/global.d.ts b/package-aides-velo/global.d.ts deleted file mode 100644 index 67770a2..0000000 --- a/package-aides-velo/global.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.yaml' { - const data: any; - export default data; -} diff --git a/package-aides-velo/index.ts b/package-aides-velo/index.ts deleted file mode 100644 index d3fe734..0000000 --- a/package-aides-velo/index.ts +++ /dev/null @@ -1,112 +0,0 @@ -import Publicodes from 'publicodes'; -import aides from '../src/aides.yaml'; -import aidesAndCollectivities from '$lib/data/aides-collectivities.json'; -import { formatDescription } from '$lib/utils'; - -type Aide = { - id: string; - title: string; - description: string; - url: string; - collectivity: { - kind: string; - value: string; - code?: string; - }; - /** - * Le montant de l'aide est calculé seulement si le type de vélo a été - * précisé en entrée. - */ - amount?: number; -}; - -type InputParameters = Partial<{ - 'localisation . pays': string; - 'localisation . code insee': string; - 'localisation . epci': string; - 'localisation . département': string; - 'localisation . région': string; - 'localisation . ZFE': boolean; - 'vélo . type': - | 'mécanique simple' - | 'électrique' - | 'cargo' - | 'cargo électrique' - | 'pliant' - | 'motorisation'; - 'vélo . prix': number; - 'revenu fiscal de référence': number; -}>; - -const engine = new Publicodes(aides as any); - -/** - * Retourne la liste des aides disponibles pour une situation donnée - */ -export default function aidesVelo(situation: InputParameters = {}): Array { - engine.setSituation(formatInput(situation)); - - return Object.entries(aidesAndCollectivities) - .filter( - ([, { country: aideCountry }]) => - !situation['localisation . pays'] || aideCountry === situation['localisation . pays'], - ) - .flatMap(([ruleName]) => { - const rule = engine.getRule(ruleName); - const collectivity = aidesAndCollectivities[ruleName].collectivity; - - const metaData = { - id: ruleName, - title: rule.title, - description: rule.rawNode.description, - url: (rule.rawNode as any).lien, - collectivity, - }; - - if (!situation['vélo . type']) { - return [metaData]; - } - const { nodeValue } = engine.evaluate({ valeur: ruleName, unité: '€' }); - if (typeof nodeValue === 'number' && nodeValue > 0) { - return [ - { - ...metaData, - description: formatDescription({ - ruleName, - engine, - veloCat: situation['vélo . type'], - ville: 'votre ville', - }), - amount: nodeValue, - }, - ]; - } else { - return []; - } - }); -} - -const formatInput = (input: InputParameters) => - Object.fromEntries( - Object.entries(input).map(([key, val]) => [ - key, - typeof val === 'boolean' - ? val - ? 'oui' - : 'non' - : key === 'localisation . epci' - ? `'${epciSirenToName[val]}'` - : typeof val === 'string' - ? `'${val}'` - : val, - ]), - ); - -const epciSirenToName = Object.fromEntries( - Object.values(aidesAndCollectivities).flatMap(({ collectivity }) => { - if (collectivity.kind !== 'epci') { - return []; - } - return [[(collectivity as any).code, collectivity.value]]; - }), -); diff --git a/package-aides-velo/package-lock.json b/package-aides-velo/package-lock.json deleted file mode 100644 index 0e37634..0000000 --- a/package-aides-velo/package-lock.json +++ /dev/null @@ -1,4131 +0,0 @@ -{ - "name": "aides-velo", - "version": "3.0.33", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "aides-velo", - "version": "3.0.33", - "license": "AGPL-3.0-or-later", - "dependencies": { - "publicodes": "^1.0.0-rc.6" - }, - "devDependencies": { - "@etalab/decoupage-administratif": "^3.0.0", - "@rollup/plugin-alias": "^5.0.0", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-yaml": "^4.0.1", - "ava": "^5.2.0", - "rollup": "^3.20.6", - "rollup-plugin-typescript2": "^0.34.1", - "tslib": "^2.5.0", - "typescript": "^5.0.4" - } - }, - "node_modules/@etalab/decoupage-administratif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@etalab/decoupage-administratif/-/decoupage-administratif-3.0.0.tgz", - "integrity": "sha512-WlXHeArXK7zwcxoPev8NM3ncUjaIiBYiTmY1wh3X6RXITKjTwn3yaYdQqbPplTfFA/ByllG4Y4q4Jt0bCmbEzw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/plugin-alias": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.0.tgz", - "integrity": "sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==", - "dev": true, - "dependencies": { - "slash": "^4.0.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", - "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-yaml": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-yaml/-/plugin-yaml-4.0.1.tgz", - "integrity": "sha512-eyftkLWrwaGhgad+gXmisPYXeW3hP1s+lz63mgbur+F/8aKZhPG1Bf8RFNnz0Vhnf3uBimFebZBDwwz6X4KqUQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "js-yaml": "^4.1.0", - "tosource": "^2.0.0-alpha.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "peer": true - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dev": true, - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrgv": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", - "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ava": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-5.2.0.tgz", - "integrity": "sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "ansi-styles": "^6.2.1", - "arrgv": "^1.0.2", - "arrify": "^3.0.0", - "callsites": "^4.0.0", - "cbor": "^8.1.0", - "chalk": "^5.2.0", - "chokidar": "^3.5.3", - "chunkd": "^2.0.1", - "ci-info": "^3.7.1", - "ci-parallel-vars": "^1.0.1", - "clean-yaml-object": "^0.1.0", - "cli-truncate": "^3.1.0", - "code-excerpt": "^4.0.0", - "common-path-prefix": "^3.0.0", - "concordance": "^5.0.4", - "currently-unhandled": "^0.4.1", - "debug": "^4.3.4", - "del": "^7.0.0", - "emittery": "^1.0.1", - "figures": "^5.0.0", - "globby": "^13.1.3", - "ignore-by-default": "^2.1.0", - "indent-string": "^5.0.0", - "is-error": "^2.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "matcher": "^5.0.0", - "mem": "^9.0.2", - "ms": "^2.1.3", - "p-event": "^5.0.1", - "p-map": "^5.5.0", - "picomatch": "^2.3.1", - "pkg-conf": "^4.0.0", - "plur": "^5.1.0", - "pretty-ms": "^8.0.0", - "resolve-cwd": "^3.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6", - "strip-ansi": "^7.0.1", - "supertap": "^3.0.1", - "temp-dir": "^3.0.0", - "write-file-atomic": "^5.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "ava": "entrypoints/cli.mjs" - }, - "engines": { - "node": ">=14.19 <15 || >=16.15 <17 || >=18" - }, - "peerDependencies": { - "@ava/typescript": "*" - }, - "peerDependenciesMeta": { - "@ava/typescript": { - "optional": true - } - } - }, - "node_modules/ava/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/ava/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.0.0.tgz", - "integrity": "sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chunkd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", - "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", - "dev": true - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/ci-parallel-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", - "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/code-excerpt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", - "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", - "dev": true, - "dependencies": { - "convert-to-spaces": "^2.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, - "node_modules/concordance/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/convert-to-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", - "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", - "dev": true, - "dependencies": { - "globby": "^13.1.2", - "graceful-fs": "^4.2.10", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^5.5.0", - "rimraf": "^3.0.2", - "slash": "^4.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/emittery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.1.tgz", - "integrity": "sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", - "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", - "dev": true, - "engines": { - "node": ">=10 <11 || >=12 <13 || >=14" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-error": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", - "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", - "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/load-json-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", - "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/matcher": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", - "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mem": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/mem/-/mem-9.0.2.tgz", - "integrity": "sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-event": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", - "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", - "dev": true, - "dependencies": { - "p-timeout": "^5.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dev": true, - "dependencies": { - "aggregate-error": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-ms": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", - "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-conf": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz", - "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==", - "dev": true, - "dependencies": { - "find-up": "^6.0.0", - "load-json-file": "^7.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "dev": true, - "dependencies": { - "irregular-plurals": "^3.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-ms": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", - "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", - "dev": true, - "dependencies": { - "parse-ms": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/publicodes": { - "version": "1.0.0-rc.6", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.6.tgz", - "integrity": "sha512-fT5KB+zSEUE0PfO76zpId4w1BVSEhAM27zZ1c5MPz9wwkRjDWLijHwyt90C9lkzRQ2OvatEkMXbAmRegQ/gKVA==", - "peerDependencies": { - "@types/mocha": "^9.0.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.20.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.6.tgz", - "integrity": "sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-typescript2": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz", - "integrity": "sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.1.2", - "find-cache-dir": "^3.3.2", - "fs-extra": "^10.0.0", - "semver": "^7.3.7", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "rollup": ">=1.26.3", - "typescript": ">=2.4.0" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/supertap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", - "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", - "dev": true, - "dependencies": { - "indent-string": "^5.0.0", - "js-yaml": "^3.14.1", - "serialize-error": "^7.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/supertap/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/supertap/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tosource": { - "version": "2.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz", - "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@etalab/decoupage-administratif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@etalab/decoupage-administratif/-/decoupage-administratif-3.0.0.tgz", - "integrity": "sha512-WlXHeArXK7zwcxoPev8NM3ncUjaIiBYiTmY1wh3X6RXITKjTwn3yaYdQqbPplTfFA/ByllG4Y4q4Jt0bCmbEzw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@rollup/plugin-alias": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.0.tgz", - "integrity": "sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==", - "dev": true, - "requires": { - "slash": "^4.0.0" - } - }, - "@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1" - } - }, - "@rollup/plugin-node-resolve": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", - "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - } - }, - "@rollup/plugin-yaml": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-yaml/-/plugin-yaml-4.0.1.tgz", - "integrity": "sha512-eyftkLWrwaGhgad+gXmisPYXeW3hP1s+lz63mgbur+F/8aKZhPG1Bf8RFNnz0Vhnf3uBimFebZBDwwz6X4KqUQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "js-yaml": "^4.1.0", - "tosource": "^2.0.0-alpha.3" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "peer": true - }, - "@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dev": true, - "requires": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "arrgv": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", - "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", - "dev": true - }, - "arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "dev": true - }, - "ava": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-5.2.0.tgz", - "integrity": "sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==", - "dev": true, - "requires": { - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "ansi-styles": "^6.2.1", - "arrgv": "^1.0.2", - "arrify": "^3.0.0", - "callsites": "^4.0.0", - "cbor": "^8.1.0", - "chalk": "^5.2.0", - "chokidar": "^3.5.3", - "chunkd": "^2.0.1", - "ci-info": "^3.7.1", - "ci-parallel-vars": "^1.0.1", - "clean-yaml-object": "^0.1.0", - "cli-truncate": "^3.1.0", - "code-excerpt": "^4.0.0", - "common-path-prefix": "^3.0.0", - "concordance": "^5.0.4", - "currently-unhandled": "^0.4.1", - "debug": "^4.3.4", - "del": "^7.0.0", - "emittery": "^1.0.1", - "figures": "^5.0.0", - "globby": "^13.1.3", - "ignore-by-default": "^2.1.0", - "indent-string": "^5.0.0", - "is-error": "^2.2.2", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "matcher": "^5.0.0", - "mem": "^9.0.2", - "ms": "^2.1.3", - "p-event": "^5.0.1", - "p-map": "^5.5.0", - "picomatch": "^2.3.1", - "pkg-conf": "^4.0.0", - "plur": "^5.1.0", - "pretty-ms": "^8.0.0", - "resolve-cwd": "^3.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6", - "strip-ansi": "^7.0.1", - "supertap": "^3.0.1", - "temp-dir": "^3.0.0", - "write-file-atomic": "^5.0.0", - "yargs": "^17.6.2" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "callsites": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.0.0.tgz", - "integrity": "sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==", - "dev": true - }, - "cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "requires": { - "nofilter": "^3.1.0" - } - }, - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chunkd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", - "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", - "dev": true - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "ci-parallel-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", - "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", - "dev": true - }, - "clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dev": true, - "requires": { - "escape-string-regexp": "5.0.0" - } - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "code-excerpt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", - "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", - "dev": true, - "requires": { - "convert-to-spaces": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "requires": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "convert-to-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", - "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "requires": { - "time-zone": "^1.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", - "dev": true, - "requires": { - "globby": "^13.1.2", - "graceful-fs": "^4.2.10", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^5.5.0", - "rimraf": "^3.0.2", - "slash": "^4.0.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "emittery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.1.tgz", - "integrity": "sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "requires": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "requires": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "ignore-by-default": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", - "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "requires": { - "builtin-modules": "^3.3.0" - } - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-error": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", - "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", - "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", - "dev": true - }, - "is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "load-json-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", - "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", - "dev": true - }, - "locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "requires": { - "p-locate": "^6.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "matcher": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", - "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", - "dev": true, - "requires": { - "escape-string-regexp": "^5.0.0" - } - }, - "md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "requires": { - "blueimp-md5": "^2.10.0" - } - }, - "mem": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/mem/-/mem-9.0.2.tgz", - "integrity": "sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^4.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true - }, - "p-event": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", - "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", - "dev": true, - "requires": { - "p-timeout": "^5.0.2" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "requires": { - "p-limit": "^4.0.0" - }, - "dependencies": { - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - } - } - }, - "p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dev": true, - "requires": { - "aggregate-error": "^4.0.0" - } - }, - "p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "dev": true - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-ms": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", - "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", - "dev": true - }, - "path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-conf": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz", - "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==", - "dev": true, - "requires": { - "find-up": "^6.0.0", - "load-json-file": "^7.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "dev": true, - "requires": { - "irregular-plurals": "^3.3.0" - } - }, - "pretty-ms": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", - "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", - "dev": true, - "requires": { - "parse-ms": "^3.0.0" - } - }, - "publicodes": { - "version": "1.0.0-rc.6", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.6.tgz", - "integrity": "sha512-fT5KB+zSEUE0PfO76zpId4w1BVSEhAM27zZ1c5MPz9wwkRjDWLijHwyt90C9lkzRQ2OvatEkMXbAmRegQ/gKVA==", - "requires": {} - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "3.20.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.6.tgz", - "integrity": "sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-typescript2": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz", - "integrity": "sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^4.1.2", - "find-cache-dir": "^3.3.2", - "fs-extra": "^10.0.0", - "semver": "^7.3.7", - "tslib": "^2.4.0" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "requires": { - "type-fest": "^0.13.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "supertap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", - "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", - "dev": true, - "requires": { - "indent-string": "^5.0.0", - "js-yaml": "^3.14.1", - "serialize-error": "^7.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true - }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tosource": { - "version": "2.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz", - "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==", - "dev": true - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - }, - "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write-file-atomic": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - } - } -} diff --git a/package-aides-velo/package.json b/package-aides-velo/package.json deleted file mode 100644 index 00f86ca..0000000 --- a/package-aides-velo/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "aides-velo", - "version": "3.0.38", - "description": "Les aides vélos proposées en France", - "author": "Maxime Quandalle ", - "license": "AGPL-3.0-or-later", - "main": "build/index.cjs", - "module": "build/index.es.js", - "type": "module", - "types": "build/package-aides-velo/index.d.ts", - "exports": { - ".": { - "import": "./build/index.es.js", - "require": "./build/index.cjs" - } - }, - "scripts": { - "build": "rollup -c", - "test": "ava" - }, - "repository": { - "type": "git", - "url": "https://github.com/mquandalle/mesaidesvelo.git", - "directory": "package-aides-velo" - }, - "bugs": { - "url": "https://github.com/mquandalle/mesaidesvelo/issues" - }, - "homepage": "https://github.com/mquandalle/mesaidesvelo/package-aides-velo#readme", - "devDependencies": { - "@etalab/decoupage-administratif": "^3.0.0", - "@rollup/plugin-alias": "^5.0.0", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-yaml": "^4.0.1", - "ava": "^5.2.0", - "rollup-plugin-typescript2": "^0.34.1", - "rollup": "^3.20.6", - "tslib": "^2.5.0", - "typescript": "^5.0.4" - }, - "dependencies": { - "publicodes": "^1.0.0-rc.6" - } -} diff --git a/package-aides-velo/rollup.config.js b/package-aides-velo/rollup.config.js deleted file mode 100644 index 9ac34b5..0000000 --- a/package-aides-velo/rollup.config.js +++ /dev/null @@ -1,40 +0,0 @@ -// L'essentiel de la configuration ci-dessous vise à interfacer le code du -// paquet avec le code de l'application web. Svelte kit propose une commande -// `svelte-kit package` qui permet d'extraire un paquet d'une application. C'est -// une idée super intéressante et ça conviendrait bien à notre cas d'usage. -// Toutefois, je pense qu'en l'état la fonctionnalité manque encore de maturité, -// et j'ai préféré recréer une configuration du paquet (package.json, build, -// plugins, etc.) à partir de rien plutôt que de me baser sur la génération -// offerte par Svelte Kit. -// https://kit.svelte.dev/docs#packaging -import alias from '@rollup/plugin-alias'; -import json from '@rollup/plugin-json'; -import typescript from 'rollup-plugin-typescript2'; -import yaml from '@rollup/plugin-yaml'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; - -export default { - input: 'index.ts', - output: [ - { - format: 'cjs', - exports: 'default', - file: 'build/index.cjs', - }, - { - format: 'es', - file: 'build/index.es.js', - }, - ], - external: ['publicodes'], - - plugins: [ - typescript(), - json(), - yaml(), - nodeResolve(), - alias({ - entries: [{ find: '$lib', replacement: new URL('../src/lib', import.meta.url).pathname }], - }), - ], -}; diff --git a/package-aides-velo/test.js b/package-aides-velo/test.js deleted file mode 100644 index b823646..0000000 --- a/package-aides-velo/test.js +++ /dev/null @@ -1,90 +0,0 @@ -import test from 'ava'; -import aidesVelo from 'aides-velo'; - -test('toutes les aides ont un titre et un lien', (t) => { - aidesVelo().forEach((aide) => { - t.truthy(aide.title, `${aide.id} a un titre`); - t.truthy(aide.url, `${aide.id} a un lien`); - }); -}); - -test('liste des aides en France', (t) => { - const list = aidesVelo({ 'localisation . pays': 'france' }); - t.assert(list.length > 50, 'au moins 50 aides en France'); - t.false( - list.some(({ id: aideId }) => aideId.includes('. monaco') || aideId.includes('. luxembourg')), - "pas d'aides de Monaco ou du Luxembourg", - ); -}); - -test('aides électrique colmar', (t) => { - const colmarElectrique = aidesVelo({ - 'localisation . code insee': '68066', - 'localisation . epci': '246800726', - 'localisation . département': '68', - 'localisation . région': '44', - 'vélo . type': 'électrique', - }); - t.is(colmarElectrique.length, 3, '3 aides'); - t.truthy( - colmarElectrique.find(({ title }) => title.toLowerCase().includes('colmar')), - 'Dont une de la ville', - ); -}); - -test('motorisation vélo bordeaux', (t) => { - const bordeauxMotorisation = aidesVelo({ - 'localisation . code insee': '33063', - 'localisation . epci': '243300316', - 'localisation . département': '33', - 'localisation . région': '75', - 'vélo . type': 'motorisation', - }).filter(({ title }) => title.toLowerCase().includes('bordeaux')); - t.is(bordeauxMotorisation.length, 1, '1 aide de la région'); - t.is(bordeauxMotorisation[0].amount, 100, '100 euros'); - t.deepEqual( - bordeauxMotorisation[0].collectivity, - { kind: 'epci', value: 'Bordeaux Métropole', code: '243300316' }, - "Associée à l'EPCI de Bordeaux", - ); -}); - -test('prise en compte du revenu fiscal de référence', (t) => { - const situationStrasbourg = { - 'localisation . epci': '246700488', - 'vélo . type': 'électrique', - 'aides . prime à la conversion': 'non', - }; - const aidesStrasbourg = aidesVelo(situationStrasbourg); - t.is( - aidesStrasbourg.reduce((sum, { amount }) => sum + amount, 0), - 900, - "jusqu'à 900 euros d'aides", - ); - const aidesStrasbourgRevenuElevé = aidesVelo({ - ...situationStrasbourg, - 'revenu fiscal de référence': '5000 €/mois', - }); - t.is( - aidesStrasbourgRevenuElevé.reduce((sum, { amount }) => sum + amount, 0), - 0, - "pas d'aides pour un RFR à 5000 €/mois/part", - ); -}); - -test('interpolation des variables $vélo et $plafond', (t) => { - aidesVelo({ - 'localisation . pays': 'france', - 'localisation . code insee': '75056', - 'localisation . epci': '200054781', - 'localisation . département': '75', - 'localisation . région': '11', - 'vélo . type': 'électrique', - }).forEach(({ id, description }) => - t.notRegex( - description, - /\$(vélo|plafond|ville)/, - `variables interpolées dans la description de ${id}`, - ), - ); -}); diff --git a/package-aides-velo/tsconfig.json b/package-aides-velo/tsconfig.json deleted file mode 100644 index 538be38..0000000 --- a/package-aides-velo/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "moduleResolution": "node", - "declaration": true, - "esModuleInterop": true, - "allowJs": true, - "resolveJsonModule": true, - "outDir": "./build", - "forceConsistentCasingInFileNames": true, - "rootDir": "../", - "paths": { - "$lib/*": ["../src/lib/*"] - } - }, - "include": ["global.d.ts", "index.ts"] -} diff --git a/package-lock.json b/package-lock.json index a496ce1..5c4fbdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,14 @@ "version": "1.0.0", "hasInstallScript": true, "dependencies": { - "@etalab/decoupage-administratif": "^3.1.1", + "@betagouv/aides-velo": "^0.2.2", + "@etalab/decoupage-administratif": "^4.0.0", "fuzzysort": "^2.0.4", "jsdom": "^23.0.1", "playwright-aws-lambda": "^0.10.0", "playwright-core": "^1.40.1", - "publicodes": "^1.0.0-rc.6" + "publicodes": "^1.0.0-rc.6", + "svelte-markdown": "^0.4.1" }, "devDependencies": { "@actions/core": "^1.10.1", @@ -22,15 +24,18 @@ "@playwright/test": "^1.40.1", "@rollup/plugin-yaml": "^4.1.2", "@sveltejs/adapter-vercel": "^4.0.3", - "@sveltejs/kit": "^2.0.6", + "@sveltejs/kit": "^2.7.7", "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@tsconfig/svelte": "^5.0.4", "mdsvex": "^0.11.0", "node-fetch": "^3.3.2", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "sharp": "=0.32.6", "svelte": "^4.2.8", - "typescript": "^5.3.3", + "svelte-check": "^4.0.5", + "svelte-preprocess": "^6.0.3", + "typescript": "^5.6.3", "vite": "^5.0.10", "vite-plugin-windicss": "^1.9.2", "vitest": "^1.1.0", @@ -74,7 +79,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -92,6 +96,15 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/@betagouv/aides-velo": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@betagouv/aides-velo/-/aides-velo-0.2.2.tgz", + "integrity": "sha512-xry3p2D3oDvQf7y9ssvZExCRRScJK0j/Bqzza4dK9Ns/5RG5Pl0o+Gjr4jWDi3fOHtlS3YiR+RDkDCXwJixqgA==", + "license": "Apache-2.0", + "dependencies": { + "publicodes": "^1.5.1" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.10", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", @@ -461,9 +474,10 @@ } }, "node_modules/@etalab/decoupage-administratif": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@etalab/decoupage-administratif/-/decoupage-administratif-3.1.1.tgz", - "integrity": "sha512-/1yqSlo6Xerdz1MN+rh57hDWcAam18gwSK5u4wFjT1glRUiN/o1A4IQe6pvB9JqGvHv6WbF5X7WyE+yxeMqLig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@etalab/decoupage-administratif/-/decoupage-administratif-4.0.0.tgz", + "integrity": "sha512-TMGZT4rFaQdkovoAZF5iMNJnxc2To8GXiC4x/N8Z5j6I0j29AeInE2Js86Wy9W2ZnjGFbKkSpmnsbLYwWYAFsw==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -493,7 +507,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -507,7 +520,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -516,7 +528,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -524,14 +535,13 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -778,10 +788,11 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.24", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", - "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", - "dev": true + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" }, "node_modules/@rollup/plugin-yaml": { "version": "4.1.2", @@ -847,22 +858,24 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.0.6.tgz", - "integrity": "sha512-dnHtyjBLGXx+hrZQ9GuqLlSfTBixewJaByUVWai7LmB4dgV3FwkK155OltEgONDQW6KW64hLNS/uojdx3uC2/g==", + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.7.7.tgz", + "integrity": "sha512-EvNErTd0QuIUX6SbZecOJQus3cILJR87XyIQXF4kfwWap63/OV58GGTEI47k3ydrFssAWGw4eu3RlB2dmBYETA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.6.0", - "devalue": "^4.3.2", + "devalue": "^5.1.0", "esm-env": "^1.0.0", + "import-meta-resolve": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.4", + "sirv": "^3.0.0", "tiny-glob": "^0.2.9" }, "bin": { @@ -872,7 +885,7 @@ "node": ">=18.13" }, "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1", "svelte": "^4.0.0 || ^5.0.0-next.0", "vite": "^5.0.3" } @@ -916,6 +929,13 @@ "vite": "^5.0.0" } }, + "node_modules/@tsconfig/svelte": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.4.tgz", + "integrity": "sha512-BV9NplVgLmSi4mwKzD8BD/NQ8erOY/nUE/GpgWe2ckx+wIQF5RyRirn/QsSSCPeulVpc3RA/iJt6DpfTIZps0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", @@ -925,8 +945,13 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/marked": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-5.0.2.tgz", + "integrity": "sha512-OucS4KMHhFzhz27KxmWg7J+kIYqyqoW5kdIEI319hqARQQUTqhao3M/F+uFnDXD0Rg72iDDZxZNxq5gvctmLlg==", + "license": "MIT" }, "node_modules/@types/mocha": { "version": "9.1.1", @@ -1089,7 +1114,6 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1177,7 +1201,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -1206,7 +1229,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -1354,6 +1376,22 @@ "node": "*" } }, + "node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -1367,7 +1405,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -1380,7 +1417,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -1485,7 +1521,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -1616,7 +1651,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "engines": { "node": ">=6" } @@ -1631,10 +1665,11 @@ } }, "node_modules/devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true, + "license": "MIT" }, "node_modules/diff-sequences": { "version": "29.6.3", @@ -2107,6 +2142,17 @@ } ] }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2183,7 +2229,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "dev": true, "dependencies": { "@types/estree": "*" } @@ -2537,8 +2582,7 @@ "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" }, "node_modules/loupe": { "version": "2.3.7", @@ -2565,7 +2609,6 @@ "version": "0.30.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -2597,11 +2640,22 @@ "semver": "bin/semver.js" } }, + "node_modules/marked": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/mdsvex": { "version": "0.11.0", @@ -2785,6 +2839,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -3039,7 +3094,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -3050,7 +3104,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -3275,9 +3328,10 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/publicodes": { - "version": "1.0.0-rc.6", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.6.tgz", - "integrity": "sha512-fT5KB+zSEUE0PfO76zpId4w1BVSEhAM27zZ1c5MPz9wwkRjDWLijHwyt90C9lkzRQ2OvatEkMXbAmRegQ/gKVA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.5.4.tgz", + "integrity": "sha512-yCoMNnbW7WVZT1ntZcp0VbdV3Nl8yYE7Ar91NSOWSHg6jCB267N2h2xItZxYRJo2d6MUsMS1b/q0Vg8geVL3Kw==", + "license": "MIT", "peerDependencies": { "@types/mocha": "^9.0.0" } @@ -3366,6 +3420,20 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -3636,24 +3704,24 @@ } }, "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", "dev": true, + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3752,7 +3820,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz", "integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -3772,6 +3839,60 @@ "node": ">=16" } }, + "node_modules/svelte-check": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.5.tgz", + "integrity": "sha512-icBTBZ3ibBaywbXUat3cK6hB5Du+Kq9Z8CRuyLmm64XIe2/r+lQcbuBx/IQgsbrC+kT2jQ0weVpZSSRIPwB6jQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte-check/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/svelte-check/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/svelte-hmr": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", @@ -3784,11 +3905,79 @@ "svelte": "^3.19.0 || ^4.0.0" } }, + "node_modules/svelte-markdown": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.4.1.tgz", + "integrity": "sha512-pOlLY6EruKJaWI9my/2bKX8PdTeP5CM0s4VMmwmC2prlOkjAf+AOmTM4wW/l19Y6WZ87YmP8+ZCJCCwBChWjYw==", + "license": "MIT", + "dependencies": { + "@types/marked": "^5.0.1", + "marked": "^5.1.2" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": ">=3", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": ">=0.55", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "node_modules/svelte/node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -3897,6 +4086,7 @@ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3957,10 +4147,11 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index aa6aaf1..497fd63 100644 --- a/package.json +++ b/package.json @@ -24,15 +24,18 @@ "@playwright/test": "^1.40.1", "@rollup/plugin-yaml": "^4.1.2", "@sveltejs/adapter-vercel": "^4.0.3", - "@sveltejs/kit": "^2.0.6", + "@sveltejs/kit": "^2.7.7", "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@tsconfig/svelte": "^5.0.4", "mdsvex": "^0.11.0", "node-fetch": "^3.3.2", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "sharp": "=0.32.6", "svelte": "^4.2.8", - "typescript": "^5.3.3", + "svelte-check": "^4.0.5", + "svelte-preprocess": "^6.0.3", + "typescript": "^5.6.3", "vite": "^5.0.10", "vite-plugin-windicss": "^1.9.2", "vitest": "^1.1.0", @@ -40,12 +43,14 @@ "yaml": "^2.3.4" }, "dependencies": { - "@etalab/decoupage-administratif": "^3.1.1", + "@betagouv/aides-velo": "^0.2.2", + "@etalab/decoupage-administratif": "^4.0.0", "fuzzysort": "^2.0.4", "jsdom": "^23.0.1", "playwright-aws-lambda": "^0.10.0", "playwright-core": "^1.40.1", - "publicodes": "^1.0.0-rc.6" + "publicodes": "^1.0.0-rc.6", + "svelte-markdown": "^0.4.1" }, "overrides": { "vite": { diff --git a/retrofit/routes/(search)/ville/[slug]/RevenuSelector.svelte b/retrofit/routes/(search)/ville/[slug]/RevenuSelector.svelte index ba5bf53..a74cec3 100644 --- a/retrofit/routes/(search)/ville/[slug]/RevenuSelector.svelte +++ b/retrofit/routes/(search)/ville/[slug]/RevenuSelector.svelte @@ -57,10 +57,10 @@ findAllComparaisonsValue(name, { searchedName: 'revenu fiscal de référence', unit: '€/mois', - }) + }), ) .filter((x) => x !== Infinity) - .map((x) => Math.round(x)) + .map((x) => Math.round(x)), ).sort((a, b) => a - b); diff --git a/retrofit/routes/api/ville/+server.js b/retrofit/routes/api/ville/+server.js index d8cea15..cc434d9 100644 --- a/retrofit/routes/api/ville/+server.js +++ b/retrofit/routes/api/ville/+server.js @@ -1,10 +1,10 @@ -import data from '$lib/data/communes.json'; import { error } from '@sveltejs/kit'; +import communes from '$lib/data/communes.json'; import { rawCityToFullLocalisation } from '$lib/utils'; export function GET({ url }) { const slug = url.searchParams.get('slug'); - const ville = data.find((v) => v.slug === slug); + const ville = communes.find((v) => v.slug === slug); if (!ville) { error(404); } diff --git a/src/aides.yaml b/src/aides.yaml deleted file mode 100644 index 62d0b9b..0000000 --- a/src/aides.yaml +++ /dev/null @@ -1,6710 +0,0 @@ -# TODO (aide annoncée mais pas encore de page officielle de présentation): -# - Caluire, https://www.leprogres.fr/transport/2023/10/03/la-commune-contribue-a-financer-l-achat-de-velos-et-forme-les-cyclistes#:~:text=Dans%20le%20cadre%20de%20son,er%20janvier%20au%2031%20d%C3%A9cembre. -# - Centre littoral agglo (Guyane) https://www.cacl-guyane.fr/achetez-un-velo-grace-a-lagglo/ -# -# https://www.ferolles-attilly.fr/actualites/aide-a-l-achat-de-velo-417.html ? -# -# Terminé pour 2023, renouvellement prévu en 2024 : -# - https://www.cap-atlantique.fr/services-a-la-population/mobilite/les-deplacements-doux/laide-a-lachat-de-velo-elargie -# - Martigues https://www.ville-martigues.fr/services-en-ligne/deplacements/pistes-cyclables/velo-a-assistance-electrique-aide-a-lachat -# - Agen https://www.agglo-agen.net/vie-quotidienne/mobilites/aide-velo-electrique -# - Perpignan https://aide-velo.perpignan-mediterranee.org/ - -aides: - avec: - commune: 0 € - intercommunalité: 0 € - département: 0 € - région: 0 € - état: 0 € - -aides . montant: - somme: - - commune - - intercommunalité - - département - - région - - état - -aides . bonus vélo: - remplace: état - titre: Bonus vélo - description: | - Nouveau bonus $vélo applicable du 15 août 2022 au 31 décembre 2024. - applicable si: - toutes ces conditions: - - localisation . pays = 'France' - - revenu fiscal de référence <= première tranche IR - valeur: 40% * vélo . prix - plafond: - variations: - - si: - une de ces conditions: - - vélo . pliant - - vélo . cargo - alors: - variations: - - si: revenu fiscal de référence <= 7100 €/an - alors: 2000€ - - sinon: 1000€ - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 7100 €/an - alors: 400€ - - sinon: 300€ - - si: vélo . mécanique - alors: - variations: - - si: revenu fiscal de référence <= 7100 €/an - alors: 150€ - - sinon: 0€ - - sinon: 0€ - lien: https://www.service-public.fr/particuliers/vosdroits/F36828 - -aides . prime à la conversion: - applicable si: - toutes ces conditions: - - localisation . pays = 'France' - - vélo . électrique - type: état - titre: Prime à la conversion - description: | - Pour bénéficier de cette « prime à la casse » vous devez détruire un - véhicule diesel immatriculé avant janvier 2011 ou bien un véhicule essence - immatriculé avant 2006. - - La prime est de 40% du prix du vélo dans la limite de 3 000 €. Elle est - cumulable avec les aides à l'achat d’un vélo électrique, comme le « bonus - écologique ». - valeur: 40% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 3000€ - - sinon: 1500€ - lien: https://www.service-public.fr/particuliers/vosdroits/F36827 - -aides . prime à la conversion . surprime ZFE: - applicable si: - toutes ces conditions: - - localisation . pays = 'France' - - localisation . ZFE - titre: Surprime Zone à Faibles Émissions (ZFE) - description: | - Vous pouvez bénéficier d’une surprime car $ville est une zone à faible - émission mobilité (ZFE). Cette surprime est conditionnée à l'octroi d’une - aide par la collectivité locale et son montant est identique à l'aide versée - par la collectivité locale, dans la limite de 1 000 €. - somme: - - commune - - intercommunalité - - département - - région - plafond: 1000€ - lien: https://www.service-public.fr/particuliers/vosdroits/F36827 - -aides . forfait mobilités durables: 500 €/an - -aides . ile de france: - remplace: région - titre: Île-de-France Mobilités - description: | - La région Île-de-France subventionne l’achat d’un $vélo à hauteur de 50% et - jusqu’à un plafond de $plafond. - applicable si: localisation . région = '11' - valeur: 50% * vélo . prix - plafond: $plafond - avec: - $plafond: - variations: - - si: vélo . cargo électrique - alors: 600 € - - si: vélo . motorisation - alors: 200 € - - si: - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - alors: 400 € - - si: - toutes ces conditions: - - vélo . mécanique simple - - bénéficiaire jeune - alors: 100 € - - sinon: 0 € - bénéficiaire jeune: - question: Le bénéficiaire a t-il entre 15 et 25 ans ? - type: booléen - par défaut: oui - lien: https://www.iledefrance-mobilites.fr/le-reseau/services-de-mobilite/velo/prime-achat-velo - -aides . occitanie: - remplace: région - titre: Région Occitanie - applicable si: - toutes ces conditions: - - localisation . région = '76' - - revenu fiscal de référence <= première tranche IR - - vélo . électrique - valeur: 200€ - plafond: vélo . prix - lien: https://www.laregion.fr/Eco-cheque-mobilite-velo-a-assistance-electrique - -aides . grand est: - remplace: région - titre: Région Grand Est - applicable si: localisation . région = '44' - variations: - - si: vélo . cargo - alors: 500€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - lien: https://www.grandest.fr/vos-aides-regionales/achat-velos/ - -aides . corse: - remplace: région - titre: Région Corse - applicable si: - # note: VTT électriques exclus - toutes ces conditions: - - localisation . région = '94' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 500€ - lien: https://www.aue.corsica/Aide-a-l-achat-des-Velos-a-Assistance-Electrique_a205.html - -# aides . bouches du rhone: -# remplace: département -# titre: Département des Bouches-du-Rhône -# applicable si: -# toutes ces conditions: -# - localisation . département = '13' -# - vélo . électrique -# valeur: 25% * vélo . prix -# plafond: 400€ -# lien: https://www.departement13.fr/400-euros-pour-achat-velo-assistance-electrique/ - -aides . ardèche: - remplace: département - titre: Département de l'Ardèche - description: | - Le département ardéchois rembourse 10% du prix d'un vélo électrique - neuf acheté auprès d'un vélociste partenaire (offre limitée à 1500 vélos). - applicable si: - toutes ces conditions: - - localisation . département = '07' - - vélo . électrique - - vélo . prix <= 3000 € - valeur: 10% * vélo . prix - plafond: 200€ - lien: https://www.ardeche.fr/2084-vae.htm - -aides . paris: - remplace: commune - titre: Ville de Paris - description: | - La ville de Paris subventionne l’achat d’un $vélo à hauteur de 33% et - jusqu’à un plafond de $plafond. - applicable si: - toutes ces conditions: - - localisation . code insee = '75056' - - revenu fiscal de référence <= 6358 €/an - valeur: - variations: - - si: vélo . mécanique - alors: 100% * vélo . prix . HT - - sinon: 33% * vélo . prix . HT - plafond: $plafond - avec: - $plafond: - variations: - - si: vélo . cargo - alors: 600€ - - si: vélo . électrique - alors: 400€ - - si: vélo . motorisation - alors: 400€ - - sinon: 0€ - lien: https://www.paris.fr/pages/lutte-contre-la-pollution-les-aides-a-la-mobilite-5373 - -aides . saint-étienne: - remplace: intercommunalité - titre: Saint-Étienne Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'Saint-Etienne Métropole' - - vélo . électrique - variations: - - si: ménage imposable = non - alors: 200€ - - sinon: 100€ - lien: https://www.saint-etienne-metropole.fr/form/aide-VAE-2024 - -aides . lyon: - remplace: intercommunalité - titre: Métropole Grand Lyon - applicable si: localisation . epci = 'Métropole de Lyon' - variations: - - si: - toutes ces conditions: - - vélo . occasion - - vélo . prix <= 150€ - - revenu fiscal de référence <= 19600€/an - alors: - valeur: 100% * vélo . prix - plafond: 100€ - - si: - toutes ces conditions: - - vélo . neuf - - vélo . cargo électrique - alors: - valeur: 50% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 19600 €/an - alors: 1000 € - - sinon: 200 € - - si: - toutes ces conditions: - - vélo . neuf - - vélo . cargo - alors: - valeur: 50% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 19600 €/an - alors: 800 € - - sinon: 200 € - - si: - toutes ces conditions: - - vélo . neuf - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - - vélo . prix <= 3200 € - alors: - valeur: 50% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 19600 €/an - alors: 500 € - - sinon: 100 € - - si: - toutes ces conditions: - - vélo . neuf - - vélo . mécanique - - vélo . prix <= 3200 € - alors: - valeur: 50% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 19600 €/an - alors: 300 € - - sinon: 100 € - - sinon: 0€ - lien: https://www.grandlyon.com/services/aide-achat-velo.html - -aides . saône-beaujolais: - remplace: intercommunalité - titre: Communauté de communes Saône Beaujolais - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Saône-Beaujolais' - - vélo . électrique ou mécanique - valeur: 30% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 600€ - - sinon: 200€ - lien: http://www.ccsb-saonebeaujolais.fr/fr/information/10135/aide-achat-un-velo - -aides . villefranche beaujolais saône: - remplace: intercommunalité - titre: VilleFranche Beaujolais Saône Agglo - applicable si: localisation . epci = 'CA Villefranche Beaujolais Saône' - variations: - - si: vélo . électrique - alors: 500€ - - si: vélo . mécanique - alors: 200€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - plafond: vélo . prix - lien: https://www.agglo-villefranche.fr/aide-a-lachat-velo.html - -aides . ville-sur-jarnioux: - remplace: commune - titre: Ville-sur-Jarnioux - applicable si: - toutes ces conditions: - - localisation . code insee = '69265' - - aides . villefranche beaujolais saône >= 0 - valeur: 50% * vélo . prix - plafond: 100€ - lien: https://www.ville-sur-jarnioux.fr/aide-velo/ - -aides . sainte-foy-lès-lyon: - remplace: commune - titre: Ville de Sainte-Foy-lès-Lyon - applicable si: - toutes ces conditions: - - localisation . code insee = '69202' - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - - vélo . pliant - - vélo . cargo - valeur: 100€ - lien: https://www.saintefoyleslyon.fr/demarches-services/mobilites/velo/ - -aides . pays mornantais: - remplace: intercommunalité - titre: Pays Mornantais - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays Mornantais (COPAMO)' - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - variations: - - si: revenu fiscal de référence <= ANAH . plafond ménage modeste - alors: 400€ - - sinon: 250€ - lien: https://www.cc-paysmornantais.fr/velo-electrique-on-vous-aide.html - -aides . mornant: - remplace: commune - titre: Ville de Mornant - applicable si: - toutes ces conditions: - - localisation . code insee = '69141' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 1000 €/mois - alors: 250€ - - sinon: 150€ - lien: https://www.ville-mornant.fr/Aide-acquisition-velo-a-assistance-electrique-mornant-art-283.html - -aides . dardilly: - remplace: commune - titre: Ville de Dardilly - applicable si: - toutes ces conditions: - - localisation . code insee = '69072' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 150€ - lien: https://www.dardilly.fr/mes-infos-quotidiennes/actus-evenements/31-vie-citoyenne/91-subventions-eco-citoyennes - -aides . écully: - remplace: commune - titre: Ville d’Écully - applicable si: - toutes ces conditions: - - localisation . code insee = '69081' - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - valeur: 100€ - lien: https://www.ecully.fr/actualites-109/prime-pour-lachat-dun-velo-a-assistance-electrique-3708.html - -aides . feyzin: - remplace: commune - titre: Ville de Feyzin - applicable si: - toutes ces conditions: - - localisation . code insee = '69276' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - variations: - - si: revenu fiscal de référence <= 16800 €/an - alors: 100€ - - sinon: 50€ - lien: https://feyzin.fr/actualites/560-aide-velo-electrique - -aides . igny: - remplace: commune - titre: Ville d’Igny - applicable si: - toutes ces conditions: - - localisation . code insee = '91312' - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - valeur: 100€ - lien: https://igny.fr/les-actions-ecologiques/ - -aides . irigny: - remplace: commune - titre: Ville d’Irigny - applicable si: - toutes ces conditions: - - localisation . code insee = '69100' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - valeur: 100€ - lien: https://irigny.fr/Parking-a%CC%80-ve%CC%81los - -aides . oullins: - remplace: commune - titre: Ville d’Oullins - applicable si: - toutes ces conditions: - - localisation . code insee = '69149' - - vélo . électrique - valeur: 100€ - lien: https://www.oullins.fr/deplacements/a-velo/subvention-pour-l-achat-d-un-velo-electrique-563.html - -aides . pierre-bénite: - remplace: commune - titre: Ville de Pierre-Bénite - applicable si: - toutes ces conditions: - - localisation . code insee = '69152' - - vélo . électrique - valeur: 100€ - lien: https://www.pierrebenite.fr/wp-content/uploads/CONVENTIONVAE.pdf - -aides . givors: - remplace: commune - titre: Ville de Givors - applicable si: localisation . code insee = '69091' - variations: - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: 100 € - - si: vélo . mécanique - alors: 50 € - - sinon: 0 € - plafond: 20% * vélo . prix - lien: https://www.givors.fr/cadre-de-vie/environnement/aide-a-lacquisition-dun-velo/ - -aides . blacé: - remplace: commune - titre: Ville de Blacé - applicable si: - toutes ces conditions: - - localisation . code insee = '69023' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200€ - - sinon: 100€ - lien: https://mairie-blace.fr/fr/rb/1541490/prime-velo - -# aides . département loire: -# remplace: département -# titre: Département de la Loire -# applicable si: -# toutes ces conditions: -# - localisation . département = '42' -# - vélo . électrique -# valeur: 300€ -# lien: https://www.loire.fr/jcms/lw_1383840/beneficiez-de-300-euros-pour-l-achat-d-un-velo-a-assistance-electrique-vae - -aides . charlieu-belmont: - remplace: commune - titre: Charlieu-Belmont Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Charlieu-Belmont' - - vélo . électrique ou mécanique - valeur: 20% * vélo . prix - plafond: 100€ - lien: https://www.charlieubelmont.com/environnement/plan-climat-air-energie-territorial/mobilite/ - -aides . unieux: - remplace: commune - titre: Ville d’Unieux - applicable si: - toutes ces conditions: - - localisation . code insee = "42316" - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - valeur: 300€ - plafond: vélo . prix - lien: https://www.ville-unieux.fr/actualites/583-aide-aux-economies-d-energie.html - -aides . bordeaux: - remplace: intercommunalité - titre: Bordeaux Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'Bordeaux Métropole' - - revenu fiscal de référence <= 2200 €/mois - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - - vélo . motorisation - valeur: 100 € - lien: https://sedeplacer.bordeaux-metropole.fr/a-velo/se-deplacer-a-velo/offres-velo/laide-a-lachat-velo - -aides . bègles: - remplace: commune - titre: Ville de Bègles - applicable si: - toutes ces conditions: - - aides . bordeaux > 0 - - localisation . code insee = "33039" - valeur: 65€ - lien: https://www.mairie-begles.fr/actualite/recuperateur-deau-et-velo-electrique-la-ville-vous-soutient-pour-vous-equiper/ - -aides . cenon: - remplace: commune - titre: Ville de Cenon - applicable si: - toutes ces conditions: - - localisation . code insee = '33119' - - revenu fiscal de référence <= 2200 €/mois - - vélo . prix >= 800 € - variations: - - si: vélo . cargo - alors: 400 € - - si: vélo . pliant - alors: 100 € - - si: vélo . électrique - alors: 100 € - - sinon: 0 € - lien: https://www.cenon.fr/a-la-une/actualites/velos-une-aide-a-lachat - -aides . la cali: - remplace: intercommunalité - titre: La Cali - L'agglo Rive Droite de Bordeaux - applicable si: localisation . epci = 'CA du Libournais' - valeur: 40% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 6300 €/an - alors: - variations: - - si: vélo . cargo - alors: 500€ - - si: vélo . pliant - alors: 500€ - - si: vélo . électrique - alors: 400€ - - si: vélo . motorisation - alors: 300€ - - si: vélo . mécanique - alors: 200€ - - si: revenu fiscal de référence <= 13489 €/an - alors: - variations: - - si: vélo . cargo - alors: 400€ - - si: vélo . pliant - alors: 400€ - - si: vélo . électrique - alors: 300€ - - si: vélo . motorisation - alors: 200€ - - si: vélo . mécanique - alors: 150€ - - si: revenu fiscal de référence <= 26000 €/an - alors: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . pliant - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . motorisation - alors: 100€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.lacali.fr/actualites-de-la-cali/aide-lacquisition-dun-velo - -# aides . département saône-et-loire: -# remplace: département -# titre: Département de Saône-et-Loire -# applicable si: localisation . département = '71' -# variations: -# - si: -# toutes ces conditions: -# - vélo . cargo électrique -# - vélo . prix >= 2000 € -# alors: 450€ -# - si: -# toutes ces conditions: -# - vélo . électrique -# - vélo . prix >= 1000 € -# alors: 350€ -# - si: -# toutes ces conditions: -# - vélo . mécanique -# - vélo . prix >= 500 € -# alors: 200€ -# - si: vélo . motorisation -# alors: -# valeur: 80% * vélo . prix -# plafond: 100€ -# - sinon: 0€ -# lien: https://www.saoneetloire71.fr/chequevelo - -aides . monts du pilat: - remplace: intercommunalité - titre: Communauté de communes des Monts du Pilat - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Monts du Pilat' - - vélo . électrique ou mécanique - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 200€ - - sinon: 100€ - lien: https://www.cc-montsdupilat.fr/mise-place-dune-aide-a-lachat-dun-velo - -aides . vesoul: - remplace: intercommunalité - titre: Vesoul agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de Vesoul' - - vélo . électrique - valeur: 300€ - plafond: vélo . prix - lien: http://www.echenoz-la-meline.fr/2022/09/aide-pour-l-achat-d-un-velo-a-assistance-electrique.html - -aides . saint-rémy: - remplace: commune - titre: Ville de Saint-Remy - applicable si: - toutes ces conditions: - - localisation . code insee = '71475' - - vélo . électrique ou mécanique - variations: - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix >= 1000€ - alors: 100€ - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . prix >= 500€ - alors: 50€ - - sinon: 0€ - lien: https://www.saint-remy71.fr/plan-velo/ - -# Épuisé pour 2023 -# aides . mérignac: -# remplace: commune -# titre: Ville de Mérignac -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '33281' -# - une de ces conditions: -# - vélo . électrique -# - vélo . pliant -# - vélo . cargo -# valeur: 100€ -# lien: https://www.merignac.com/actualites/une-aide-de-100-eu-pour-un-velo-electrique-pliant-ou-cargo - -aides . saint-émilionnais: - remplace: intercommunalité - titre: Communauté de communes du Grand Saint-Émilionnais - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Grand Saint Emilionnais' - - vélo . électrique ou mécanique - - vélo . prix >= 200€ - valeur: 200€ - lien: https://www.grand-saint-emilionnais.fr/actualites/primo-velo-2023-200e-de-subventions/ - -aides . pays de la loire: - remplace: région - titre: Région Pays de la Loire - applicable si: - toutes ces conditions: - - localisation . région = '52' - - une de ces conditions: - - vélo . pliant - - vélo . électrique - - abonné TER - description: | - Cette aide à l’achat d’un $vélo est reservée aux abonnés du TER Pays - de la Loire. - valeur: 50% * vélo . prix - plafond: 200€ - lien: https://www.paysdelaloire.fr/les-aides/aide-lachat-dun-velo-pliant-ou-assistance-electrique-vae-pour-les-abonnes-aleop - avec: - abonné TER: - question: Êtes-vous abonnés du TER Pays de la Loire ? - description: | - Sont éligibles les abonnés Tutti illimité, Métrocéane mensuels, les - abonnés annuels de Loire-Atlantique, Maine et Loire et Sarthe, ainsi - que les abonnés mensuels des réseaux de Mayenne et Vendée (hors - scolaires). - type: booléen - par défaut: oui - -aides . nantes: - remplace: intercommunalité - titre: Nantes Métropole - applicable si: localisation . epci = 'Nantes Métropole' - variations: - - si: revenu fiscal de référence <= 350 €/mois - alors: - valeur: 90% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 1500 € - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: 800 € - - si: vélo . mécanique - alors: 150 € - - sinon: 0 € - - si: revenu fiscal de référence <= 500 €/mois - alors: - valeur: 70% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 1000 € - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: 500 € - - si: vélo . mécanique - alors: 120 € - - sinon: 0 € - - si: revenu fiscal de référence <= 750 €/mois - alors: - valeur: 90% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 600 € - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: 250 € - - si: vélo . mécanique - alors: 100 € - - sinon: 0 € - - si: revenu fiscal de référence <= 900 €/mois - alors: - valeur: 90% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 300 € - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: 150 € - - si: vélo . mécanique - alors: 50 € - - sinon: 0 € - - sinon: 0€ - lien: https://metropole.nantes.fr/aides-achat-velo - -aides . pornic: - remplace: intercommunalité - titre: Pornic agglo Pays de Retz - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Pornic Agglo Pays de Retz' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 1200 €/mois - variations: - - si: vélo . cargo - alors: - valeur: 40% * vélo . prix - plafond: 400 € - - si: revenu fiscal de référence <= 600 €/mois - alors: - valeur: 30% * vélo . prix - plafond: 300 € - - sinon: - valeur: 20% * vélo . prix - plafond: 200 € - lien: https://www.pornicagglo.fr/aidevelo/ - -aides . toulouse: - remplace: intercommunalité - titre: Toulouse Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'Toulouse Métropole' - - revenu fiscal de référence <= 35052 €/an - valeur: 40% * vélo . prix . HT - plafond: - variations: - - si: vélo . cargo électrique - alors: - variations: - - si: revenu fiscal de référence <= 18800 €/an - alors: 600€ - - sinon: 500€ - - si: vélo . cargo - alors: - variations: - - si: revenu fiscal de référence <= 18800 €/an - alors: 400€ - - sinon: 350€ - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 18800 €/an - alors: 250€ - - sinon: 200€ - - si: vélo . mécanique - alors: - variations: - - si: revenu fiscal de référence <= 18800 €/an - alors: 100€ - - sinon: 0€ - - sinon: 0€ - lien: https://www.toulouse-metropole.fr/missions/environnement/qualite-de-l-air/prime-velo - -aides . perpignan métropole: - remplace: intercommunalité - titre: Perpignan Méditerranée Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'CU Perpignan Méditerranée Métropole' - - une de ces conditions: - - toutes ces conditions: - - vélo . cargo - - vélo . prix >= 2000€ - - vélo . prix <= 4000€ - - toutes ces conditions: - - vélo . électrique - - variations: - - si: vélo . neuf - alors: vélo . prix <= 2500€ - - sinon: vélo . prix <= 1500€ - - toutes ces conditions: - - vélo . mécanique - - vélo . prix >= 600€ - - vélo . prix <= 1500€ - - toutes ces conditions: - - vélo . motorisation - - vélo . prix <= 1500€ - valeur: - variations: - - si: vélo . cargo - alors: 500€ - - sinon: 250€ - lien: https://aide-velo.perpignan-mediterranee.org/ - -aides . grenoble: - remplace: intercommunalité - titre: Syndicat Mixte des Mobilités de l’Aire Grenobloise - applicable si: - toutes ces conditions: - - une de ces conditions: - - localisation . epci = 'Grenoble-Alpes-Métropole' - - localisation . epci = 'CC Le Grésivaudan' - - revenu fiscal de référence <= 22983 €/an - variations: - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . neuf - - vélo . prix >= 200€ - - vélo . prix <= 1500€ - alors: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 100€ + 50€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 80€ + 40€ - - sinon: 60€ + 30€ - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . occasion - - vélo . prix >= 30€ - alors: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 80€ + 40€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 60€ + 30€ - - sinon: 30€ + 15€ - - si: - toutes ces conditions: - - vélo . cargo électrique - - vélo . prix >= 1000€ - - vélo . prix <= 6000€ - alors: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 1000€ + 500€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 800€ + 400€ - - sinon: 600€ + 300€ - - si: - toutes ces conditions: - - vélo . cargo - - vélo . prix >= 800€ - - vélo . prix <= 3000€ - alors: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 400€ + 200€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 300€ + 150€ - - sinon: 200€ + 100€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix >= 1000€ - - vélo . prix <= 4000€ - alors: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 500€ + 250€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 400€ + 200€ - - sinon: 300€ + 150€ - lien: https://aidevelo.mobilites-m.fr/ - -# aides . tarbes lourdes pyrénées: -# remplace: intercommunalité -# titre: Tarbes Lourdes Pyrénées Communauté d'agglomération -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CA Tarbes-Lourdes-Pyrénées' -# - une de ces conditions: -# - toutes ces conditions: -# - vélo . électrique -# - vélo . prix <= 2000 € -# - vélo . cargo -# valeur: 200€ -# lien: https://www.agglo-tlp.fr/page/vae - -aides . strasbourg: - remplace: intercommunalité - titre: Eurométropole de Strasbourg - applicable si: localisation . epci = 'Eurométropole de Strasbourg' - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 500€ - - si: vélo . électrique - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 6358 €/an - montant: 500 € - - plafond: 13489 €/an - montant: 400 € - - plafond: 20966 €/an - montant: 300 € - - montant: 0 € - - si: - toutes ces conditions: - - vélo . motorisation - - revenu fiscal de référence <= 20966 €/an - alors: 150€ - - sinon: 0€ - lien: https://www.strasbourg.eu/aides-achat - -aides . entzheim: - remplace: commune - titre: Ville de Entzheim - applicable si: localisation . code insee = '67124' - variations: - - si: vélo . cargo - alors: - valeur: 10% * vélo . prix - plafond: 200€ - - si: vélo . électrique - alors: - valeur: 10% * vélo . prix - plafond: 150€ - - si: vélo . mécanique simple - alors: - valeur: 30% * vélo . prix - plafond: 80€ - - sinon: 0€ - lien: http://www.entzheim.fr/fr/information/113321/aide-achat-un-velo-neuf-ou-reparation-un-velo - -aides . geispolsheim: - remplace: commune - titre: Ville de Geispolsheim - applicable si: - toutes ces conditions: - - localisation . code insee = '67152' - - vélo . électrique - variations: - - si: ménage imposable = non - alors: 200€ - - si: revenu fiscal de référence <= 750 €/mois - alors: 150€ - - sinon: 100€ - lien: https://www.geispolsheim.fr/fr/subventions-transport-et-velo-a-assistance-electrique - -aides . hangenbieten: - remplace: commune - titre: Ville de Hangenbieten - applicable si: - toutes ces conditions: - - localisation . code insee = '67182' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 560 €/mois - alors: 120€ - - si: revenu fiscal de référence <= 764 €/mois - alors: 100€ - - sinon: 80€ - lien: https://hangenbieten.fr/wp-content/uploads/2021/03/SKM_C30821031516140.pdf#page=4 - -aides . eschau: - remplace: commune - titre: Ville d’Eschau - applicable si: localisation . code insee = '67131' - variations: - - si: vélo . cargo - alors: 200€ - - si: vélo . électrique - alors: 100€ - - sinon: 0€ - lien: https://www.eschau.fr/cadre-de-vie/transport-deplacements/ - -aides . eckbolsheim: - remplace: commune - titre: Ville d’Eckbolsheim - applicable si: - toutes ces conditions: - - localisation . code insee = '67118' - - vélo . électrique - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.eckbolsheim.com/ville-verte/actions-pour-lenvironnement/aide_achat_velo_electrique_neuf/ - -aides . ried de marckolsheim: - remplace: intercommunalité - titre: Communauté de Communes du Ried de Marckolsheim - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Ried de Marckolsheim' - - vélo . électrique ou mécanique - valeur: 75€ - lien: https://selestat-alsace-centrale.fr/beneficier-dune-prime-a-lachat-dun-velo/ - -aides . vallée de villé: - remplace: intercommunalité - titre: Communauté de communes de la Vallée de Villé - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de la Vallée de Villé' - - vélo . électrique ou mécanique - valeur: 50€ - lien: https://cdc.valleedeville.fr/service-aux-habitants/beneficier-de-la-prime-velo/ - -aides . marckolsheim: - remplace: commune - titre: Ville de Marckolsheim - applicable si: - toutes ces conditions: - - localisation . code insee = '67281' - - vélo . électrique ou mécanique - valeur: 50€ - lien: https://www.marckolsheim.fr/Votre-ville/Informations-pratiques/Subvention-achat-velo.html - -aides . pays de saverne: - remplace: intercommunalité - titre: Pays de Saverne - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays de Saverne' - - vélo . électrique - valeur: 100€ - plafond: 10% * vélo . prix - lien: http://www.paysdesaverne.fr/Actions/VelosElec/2019-04-VAE-velo-saverne.htm - -aides . val d'argent: - remplace: intercommunalité - titre: Communauté de Communes du Val d’Argent - applicable si: - toutes ces conditions: - - localisation . epci = "CC du Val d'Argent" - - vélo . électrique ou mécanique - valeur: 75€ - lien: https://www.valdargent.com/index.php/environnement-cadre-vie/mobilites/prime-velo - -aides . illkirch: - remplace: commune - titre: Ville de Illkirch-Graffenstaden - applicable si: - toutes ces conditions: - - localisation . code insee = '67218' - - vélo . électrique - variations: - - si: vélo . prix <= 600€ - alors: 50€ - - si: vélo . prix <= 800€ - alors: 100€ - - sinon: 200€ - lien: http://www.illkirch.eu/aide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . plobsheim: - remplace: commune - titre: Ville de Plobsheim - applicable si: - toutes ces conditions: - - localisation . code insee = '67378' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 100€ - lien: https://www.plobsheim.fr/subvention-pour-lachat-dun-velo/ - -aides . vendenheim: - remplace: commune - titre: Ville de Vendenheim - applicable si: localisation . code insee = '67506' - variations: - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 500 €/mois - alors: 300€ - - si: revenu fiscal de référence <= 700 €/mois - alors: 275€ - - sinon: 250€ - - si: vélo . mécanique - alors: - variations: - - si: revenu fiscal de référence <= 500 €/mois - alors: 100€ - - si: revenu fiscal de référence <= 700 €/mois - alors: 90€ - - sinon: 80€ - - sinon: 0€ - lien: https://vendenheim.fr/aides-et-subventions/ - -aides . albi: - remplace: intercommunalité - titre: Grand Albigeois - applicable si: localisation . epci = "CA de l'Albigeois (C2A)" - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 500 € - - si: vélo . électrique - alors: 250 € - - si: vélo . mécanique - alors: 100 € - - sinon: 0 € - lien: https://www.libea-mobilites.fr/se-deplacer/velo/aide-lachat-velo - -aides . toulon: - remplace: intercommunalité - titre: Métropole Toulon-Provence-Méditerranée - applicable si: localisation . epci = 'Métropole Toulon-Provence-Méditerranée' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 250 € - - si: vélo . motorisation - alors: 150 € - - sinon: 0 € - lien: https://metropoletpm.fr/tourisme/proxy/tpm-s-engage-velo-electrique - -aides . provence verte: - remplace: intercommunalité - titre: Agglomération Provence Verte - applicable si: localisation . epci = 'CA de la Provence Verte' - variations: - - si: vélo . électrique - alors: - valeur: 30% * vélo . prix - plafond: 300€ - - si: vélo . mécanique - alors: - valeur: 80% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.caprovenceverte.fr/vie-pratique/transport-mobilite/aide-a-lacquisition-dun-velo-en-provence-verte/ - -aides . bretagne romantique: - remplace: intercommunalité - titre: Communauté de communes Bretagne romantique - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Bretagne Romantique' - - vélo . électrique - valeur: 100€ - plafond: vélo . prix - lien: https://bretagneromantique.fr/prime-velo/ - -aides . fougères: - remplace: intercommunalité - titre: Fougères Agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Fougères Agglomération' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 200 € - plafond: 20% * vélo . prix - lien: https://fougeres-agglo.bzh/habitat-mobilites-transports/mobilite/un-coup-de-pouce-pour-acheter-un-velo/ - -aides . quimper: - remplace: intercommunalité - titre: Quimper Bretagne Occidentale - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Quimper Bretagne Occidentale' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: - valeur: 50% * vélo . prix - plafond: 500€ - - si: revenu fiscal de référence <= 20000 €/an - alors: - valeur: 40% * vélo . prix - plafond: 400€ - - si: revenu fiscal de référence <= 26350 €/an - alors: - valeur: 20% * vélo . prix - plafond: 200€ - - sinon: 0€ - lien: https://www.quimper-bretagne-occidentale.bzh/1763-deplacements-a-velo.htm - -aides . quimperlé: - remplace: intercommunalité - titre: Quimperlé Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Quimperlé Communauté' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 150€ - lien: https://www.quimperle-communaute.bzh/vos-demarches/deplacements/aide-a-lachat-de-velo-electrique/ - -aides . laon: - remplace: intercommunalité - titre: Pays de Laon - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Pays de Laon' - - vélo . électrique - valeur: 300€ - plafond: vélo . prix - lien: http://www.ca-paysdelaon.fr/Aide_VAE/index.html - -aides . caen: - remplace: commune - titre: Ville de Caen - applicable si: - toutes ces conditions: - - localisation . code insee = '14118' - - vélo . électrique - - revenu fiscal de référence <= 13489 €/an - valeur: - variations: - - si: vélo . cargo électrique - alors: 400€ - - sinon: 300€ - plafond: vélo . prix - lien: https://caen.fr/velo-pied - -aides . caen la mer: - remplace: intercommunalité - titre: Caen la mer communauté urbaine - applicable si: - toutes ces conditions: - - localisation . epci = 'CU Caen la Mer' - - aides . commune > 0 - - vélo . électrique - valeur: 50€ - lien: https://caenlamer.fr/actualites/aide-de-caen-la-mer-pour-lachat-de-velo-assistance-electrique - -aides . thue et mue: - remplace: commune - titre: Ville de Thue et Mue - applicable si: - toutes ces conditions: - - localisation . code insee = '14098' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: 150€ - - sinon: 100€ - lien: https://www.thueetmue.fr/sites/default/files/2022-08/Formulaire%20de%20demande%20aide%20achat%20v%C3%A9lo.pdf - -aides . hermanville-sur-mer: - remplace: commune - titre: Ville d’Hermanville-sur-Mer - applicable si: - toutes ces conditions: - - localisation . code insee = '14325' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 25% * vélo . prix - plafond: 250 € - lien: https://www.hermanvillesurmer.fr/Dossier-de-demande-d-aide-pour-l-achat-d-un-velo-a-assistance-electrique-VAE_a988.html - -aides . carpiquet: - remplace: commune - titre: Ville de Carpiquet - applicable si: - toutes ces conditions: - - localisation . code insee = '14137' - - vélo . électrique - valeur: 150€ - lien: https://www.carpiquet.fr/wp-content/uploads/2022/12/CONVENTION-2023-AIDE-FINANCIERE-ACQUISITION-VELO-ELECTRIQUE-ET-TROTTINETTE-ELECTRIQUE.pdf - -aides . herouville: - remplace: commune - titre: Ville d’Hérouville Saint-Clair - applicable si: - toutes ces conditions: - - localisation . code insee = '14327' - - vélo . électrique - - vélo . prix <= 2500€ - valeur: 100€ - lien: https://www.herouville.net/services/cadre-de-vie-environnement/vos-deplacements-doux - -aides . ifs: - remplace: commune - titre: Ville d’Ifs - applicable si: - toutes ces conditions: - - localisation . code insee = '14341' - - vélo . électrique - - revenu fiscal de référence <= 24000€/an - - vélo . prix <= 2500€ - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://ville-ifs.fr/storage/app/uploads/public/5b3/0b5/eed/5b30b5eed183e270384162.pdf - -aides . mondeville: - remplace: commune - titre: Ville de Mondeville - applicable si: localisation . code insee = '14437' - variations: - - si: vélo . électrique - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 620 €/mois - montant: 300€ - - plafond: 920 €/mois - montant: 200€ - - plafond: 1200 €/mois - montant: 100€ - - si: vélo . cargo - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 620 €/mois - montant: 400€ - - plafond: 920 €/mois - montant: 300€ - - plafond: 1200 €/mois - montant: 200€ - - si: vélo . mécanique - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 620 €/mois - montant: 50€ - lien: http://www.mondeville.fr/vivre_a_mondeville/prime_a_l_achat_d_un_velo.html - -# aides . terre d'auge: -# remplace: intercommunalité -# titre: Communauté de communes Terre d’Auge -# applicable si: -# toutes ces conditions: -# - localisation . epci = "CC Terre d'Auge" -# - vélo . électrique -# valeur: 100€ -# lien: https://www.terredauge.fr/wp-content/uploads/2022/07/aide_vae_reglement_0422.pdf - -aides . flers: - remplace: intercommunalité - titre: Flers Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Flers Agglo' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 30% * vélo . prix - plafond: 200€ - lien: https://www.flers-agglo.fr/mobilite-aide-a-lacquisition-de-velos/ - -aides . dreux: - remplace: commune - titre: Ville de Dreux - applicable si: localisation . code insee = '28134' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 600€ - - si: vélo . électrique - alors: 400€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: https://demarches.dreuxetmoi.dreux.com/transition-ecologique/demande-prime-velo - -aides . val-au-perche: - remplace: commune - titre: Ville de Val-au-Perche - applicable si: - toutes ces conditions: - - localisation . code insee = '61484' - - vélo . électrique - valeur: 50€ - lien: https://valauperche.fr/transports/ - -aides . ronchin: - remplace: commune - titre: Ville de Ronchin - applicable si: localisation . code insee = '59507' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: https://www.ville-ronchin.fr/aide-lachat-dun-velo - -aides . wasquehal: - remplace: commune - titre: Ville de Wasquehal - applicable si: localisation . code insee = '59646' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: 125€ - - sinon: 0€ - lien: https://www.ville-wasquehal.fr/actualite/aides-de-la-ville-pour-une-mobilite-douce/ - -aides . belfort: - remplace: commune - titre: Ville de Belfort - applicable si: - toutes ces conditions: - - localisation . code insee = '90010' - - vélo . électrique - variations: - - si: vélo . cargo électrique - alors: 300 € - - sinon: 200 € - lien: https://www.belfort.fr/cadre-de-vie/vie-quotidienne/aide-a-lachat-dun-velo-electrique - -aides . ouistreham: - remplace: commune - titre: Ouistreham Riva-Bella - applicable si: - toutes ces conditions: - - localisation . code insee = '14488' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 21640 €/an - alors: 200€ - - sinon: 100€ - lien: http://ouistreham-rivabella.fr/wp-content/uploads/2019/05/Dossier-de-subvention-velos.pdf - -aides . verson: - remplace: commune - titre: Ville de Verson - applicable si: - toutes ces conditions: - - localisation . code insee = '14738' - - revenu fiscal de référence <= 13489 €/an - variations: - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - lien: http://www.ville-verson.fr/actualites/prime-velo/ - -aides . saint-germain la blanche herbe: - remplace: commune - titre: Ville de Saint-Germain la Blanche Herbe - applicable si: - toutes ces conditions: - - localisation . code insee = '14587' - - vélo . électrique - valeur: 100€ - lien: https://www.mairie-stgermainblancheherbe.fr/29-actualites/658-aide-pour-l-achat-d-un-velo-electrique - -aides . coeur de nacre: - remplace: intercommunalité - titre: Communauté de Communes Cœur de Nacre - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Coeur de Nacre' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 15000 €/an - alors: 200€ - - si: revenu fiscal de référence <= 30000 €/an - alors: 100€ - - sinon: 50€ - lien: https://www.courseulles-sur-mer.com/aide-a-lacquisition-dun-velo-a-assistance-electrique-vae/ - -aides . trouville sur mer: - remplace: commune - titre: Ville de Trouville-sur-Mer - applicable si: localisation . code insee = '14715' - valeur: 30% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 400€ - - si: vélo . électrique - alors: 300€ - - sinon: 0€ - lien: https://www.trouville.fr/ma-ville/le-developpement-durable/aide-financiere-velo/ - -aides . deauville: - remplace: commune - titre: Ville de Deauville - applicable si: localisation . code insee = '14220' - valeur: 30% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 400€ - - si: vélo . électrique - alors: 300€ - - si: vélo . pliant - alors: 80€ - - si: vélo . mécanique simple - alors: 150€ - - sinon: 0€ - lien: https://www.mairie-deauville.fr/ville/mobilite-en-2022-la-ville-renouvelle-laide-lachat-de-votre-velo - -aides . louvigny: - remplace: commune - titre: Ville de Louvigny - applicable si: - toutes ces conditions: - - localisation . code insee = '14383' - - vélo . électrique ou mécanique - valeur: 50€ - lien: https://ville-louvigny.fr/agenda/aide-communale-a-lacquisition-dun-velo-a-assistance-electrique-neuf-ou-velo-classique-neuf-ou-doccasion-a-la-maison-du-velo-ou-chez-un-velociste/ - -aides . honfleur: - remplace: intercommunalité - titre: Communauté de communes Honfleur-Beuzeville - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays de Honfleur-Beuzeville' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 1000 €/mois - alors: - valeur: 25% * vélo . prix - plafond: 350€ - - si: revenu fiscal de référence <= 1800 €/mois - alors: - valeur: 20% * vélo . prix - plafond: 250€ - - si: revenu fiscal de référence <= 3000 €/mois - alors: - valeur: 10% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.ccphb.fr/amenager-et-developper/grands-projets/plan-velo/ - -aides . istres: - remplace: commune - titre: Ville d’Istres - applicable si: - toutes ces conditions: - - localisation . code insee = '13047' - - vélo . électrique - valeur: 150€ - plafond: vélo . prix - lien: https://www.istres.fr/index.php?id=1024 - -aides . montbéliard agglo: - remplace: intercommunalité - titre: Pays de Montbéliard Agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Pays de Montbéliard Agglomération' - - vélo . électrique - valeur: 100€ - lien: https://aidevelo.agglo-montbeliard.fr/ - -# aides . besançon: -# remplace: intercommunalité -# titre: Grand Besançon Métropole -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CU Grand Besançon Métropole' -# - vélo . électrique -# - revenu fiscal de référence <= 19665 €/an -# valeur: 25% * vélo . prix -# plafond: -# variations: -# - si: vélo . cargo électrique -# alors: 400€ -# - sinon: 200€ -# lien: https://www.grandbesancon.fr/demarche-administrative/subvention-pour-lachat-dun-velo-electrique/ - -aides . montbéliard: - remplace: commune - titre: Ville de Montbéliard - applicable si: - toutes ces conditions: - - localisation . code insee = '25388' - - vélo . électrique - valeur: 150€ - lien: https://www.montbeliard.fr/pages-datterrissage-temporaires/subvention-pour-lachat-dun-velo-a-assistance-electrique.html - -aides . vienne gartempe: - remplace: intercommunalité - titre: Vienne et Gartempe Communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Vienne et Gartempe' - - vélo . électrique - valeur: 300 € - lien: https://www.vienneetgartempe.fr/vivre/aide-a-lachat-dun-velo-a-assistance-electrique-vae/ - -aides . vienne condrieu: - remplace: intercommunalité - titre: Vienne Condrieu Agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Vienne Condrieu' - - vélo . électrique - valeur: 150€ - lien: https://www.vienne-condrieu-agglomeration.fr/nos-services-au-quotidien/deplacements/faire-du-velo/aide-financiere-vae/ - -aides . pont-de-beauvoisin: - remplace: commune - titre: Ville de Pont-de-Beauvoisin - applicable si: - toutes ces conditions: - - localisation . code insee = '38315' - - vélo . électrique - valeur: 100€ - lien: https://www.mairie-pontdebeauvoisin38.fr/aide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . saint-marcellin vercors isère: - remplace: intercommunalité - titre: Saint-Marcellin Vercors Isère Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Saint-Marcellin Vercors Isère Communauté' - - vélo . électrique ou mécanique - - vélo . prix <= prix maximum vélo - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200 € - - sinon: 100 € - plafond: 50% * vélo . prix - avec: - prix maximum vélo: - variations: - - si: vélo . électrique - alors: 3000 € - - sinon: 1500 € - lien: http://www.saintmarcellin-vercors-isere.fr/evenement/9916/4451-toute-l-actualite.htm - -# aides . noyarey: -# remplace: commune -# titre: Ville de Noyarey -# applicable si: localisation . code insee = '38281' -# variations: -# - si: vélo . électrique -# alors: -# variations: -# - si: revenu fiscal de référence <= 800€/mois -# alors: 200€ -# - si: revenu fiscal de référence <= 1600€/mois -# alors: 150€ -# - sinon: 100€ -# - si: vélo . motorisation -# alors: -# variations: -# - si: revenu fiscal de référence <= 800€/mois -# alors: 100€ -# - si: revenu fiscal de référence <= 1600€/mois -# alors: 75€ -# - sinon: 50€ -# - si: vélo . mécanique -# alors: -# variations: -# - si: revenu fiscal de référence <= 800€/mois -# alors: 75€ -# - si: revenu fiscal de référence <= 1600€/mois -# alors: 50€ -# - sinon: 25€ -# - sinon: 0€ -# lien: https://www.noyarey.fr/ma-ville-mon-quotidien/mon-quotidien/aide-velo/ - -# aides . balcons du dauphiné: -# remplace: intercommunalité -# titre: Balcons du Dauphiné -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC Les Balcons du Dauphiné' -# - une de ces conditions: -# - toutes ces conditions: -# - vélo . cargo -# - vélo . prix <= 5000 € -# - toutes ces conditions: -# - vélo . électrique -# - vélo . prix <= 3000 € -# valeur: 50% * vélo . prix -# plafond: 250€ -# lien: https://www.balconsdudauphine.fr/les-actions/prime-achat-velos-a-assistance-electrique - -# aides . vif: -# remplace: commune -# titre: Ville de Vif -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '38545' -# - vélo . électrique -# valeur: 100€ -# lien: https://ville-vif.fr/velo-a-assistance-electrique-100-e-offerts/ - -aides . crolles: - remplace: commune - titre: Ville de Crolles - description: | - Le « Chèque vélo électrique pour tous » est a demander en mairie de Crolles - et son montant est calculé en fonction de votre revenu fiscal de référence. - Il est compris entre 150€ et 600€. - applicable si: - toutes ces conditions: - - localisation . code insee = '38140' - - vélo . électrique - - vélo . prix >= 1400€ - - vélo . prix <= 3500€ - valeur: (1700€/mois - revenu fiscal de référence) / (1700€/mois - 600€/mois) * (600€ - 150€) + 150€ - plancher: 150€ - plafond: 600€ - lien: http://www.ville-crolles.fr/vues/pages/services-et-demarches/particuliers/crolles-pratique-cheque-VAE.php#partHome1 - -aides . montval sur loir: - remplace: commune - titre: Ville de Montval sur Loir - applicable si: - toutes ces conditions: - - localisation . code insee = '72071' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: - variations: - - si: demandeur . bénéficiaire de minima sociaux - alors: - valeur: 50% * vélo . prix - plafond: 150€ - - sinon: - valeur: 25% * vélo . prix - plafond: 150€ - - sinon: - valeur: 50% * vélo . prix - plafond: 150€ - lien: https://www.montvalsurloir.fr/demarche-administrative/demande-de-subvention-velo-electrique/ - -aides . sorgues du comtat: - remplace: intercommunalité - titre: Communauté de communes des Sorgues du Comtat - applicable si: - toutes ces conditions: - - localisation . epci = 'CA des Sorgues du Comtat' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 120€ - lien: https://www.sorgues.fr/vivre/demarches/prime-velo.htm - -aides . grand périgueux: - remplace: intercommunalité - titre: Grand Périgueux - applicable si: localisation . epci = 'CA Le Grand Périgueux' - variations: - - si: vélo . neuf - alors: - variations: - - si: vélo . cargo - alors: 500€ - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: - valeur: 30€ - plafond: 50% * vélo . prix - - si: - toutes ces conditions: - - vélo . occasion - - vélo . mécanique - alors: - valeur: 50€ - plafond: 50% * vélo . prix - plafond: vélo . prix - lien: https://www.grandperigueux.fr/au-quotidien/deplacements/velo/aide-a-lachat-velo - -aides . pays de fénelon: - remplace: intercommunalité - titre: Communauté de communes du Pays de Fénelon - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays de Fénelon' - - vélo . électrique - valeur: 100€ - lien: https://www.paysdefenelon.fr/2022/07/07/en-route-pour-une-autre-mobilite/ - -aides . sarlat: - remplace: commune - titre: Ville de Sarlat - applicable si: - toutes ces conditions: - - localisation . code insee = '24520' - - vélo . électrique - valeur: 100€ - lien: https://www.sarlat.fr/100-e-daide-pour-lachat-dun-velo-electrique/ - -aides . vallée de l'homme: - remplace: intercommunalité - titre: Communauté de communes Vallée de l’Homme - applicable si: - toutes ces conditions: - - localisation . epci = "CC de la Vallée de l'Homme" - - vélo . électrique - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . neuf - alors: 200€ - - sinon: 100€ - lien: https://www.cc-valleedelhomme.fr/mobilit%C3%A9-itin%C3%A9rance-douce/dispositifs-v%C3%A9lo/aide-%C3%A0-l-achat-pour-un-v%C3%A9lo-%C3%A9lectrique/ - -aides . sablé sur sarthe: - remplace: commune - titre: Communauté de communes de Sablé sur Sarthe - applicable si: - toutes ces conditions: - - localisation . code insee = '72264' - - vélo . électrique - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.sablesursarthe.fr/pratique/je-veux/demarches-administratives/aide-a-lachat-dun-velo-electrique/ - -aides . loue lison: - remplace: intercommunalité - titre: Communauté de communes Loue Lison - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Loue-Lison' - - vélo . électrique - valeur: 200€ - lien: https://cclouelison.fr/fr/rb/1729730/mobilite-21 - -aides . département somme: - remplace: département - titre: Département de la Somme - applicable si: - toutes ces conditions: - - localisation . département = '80' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 400€ - lien: https://www.somme.fr/services/loisirs-et-sports/sports-et-loisirs-de-nature/aide-a-lacquisition-de-velo-a-assistance-electrique/ - -aides . amiens: - remplace: commune - titre: Ville d’Amiens - applicable si: localisation . code insee = '80021' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.amiens.fr/Actualites/L-aide-a-l-achat-de-velo-s-electrise - -aides . camon: - remplace: commune - titre: Ville de Camon - applicable si: localisation . code insee = '80164' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.camon.fr/aide-a-lachat-de-velo/ - -aides . grand roye: - remplace: intercommunalité - titre: Communauté de communes du Grand Roye - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Grand Roye' - - vélo . électrique - valeur: 10% * vélo . prix - plafond: 100 € - lien: https://www.grandroye.fr/1-presentation/175-subventions.html - -aides . somme sud-ouest: - remplace: intercommunalité - titre: Communauté de communes Sommes Sud-Ouest - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Somme Sud-Ouest' - - vélo . électrique - valeur: 200€ - plafond: vélo . prix - lien: https://www.cc2so.fr/aide-velo/ - -aides . rivery: - remplace: commune - titre: Ville de Rivery - applicable si: localisation . code insee = '80674' - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 100€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - lien: https://www.ville-rivery.fr/2023/04/13/aide-financiere-a-lachat-dun-velo/ - -aides . albert: - remplace: commune - titre: Ville d’Albert - applicable si: - toutes ces conditions: - - localisation . code insee = '80016' - - vélo . électrique - valeur: 100€ - lien: https://www.ville-albert.fr/aide-a-lachat-dun-velo-electrique/ - -aides . faches-thumesnil: - remplace: commune - titre: Ville de Faches-Thumesnil - applicable si: - toutes ces conditions: - - localisation . code insee = '59220' - - vélo . électrique ou mécanique - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . mécanique - alors: 150€ - - si: vélo . électrique - alors: 300€ - - sinon: 0€ - lien: https://www.ville-fachesthumesnil.fr/Ecologie-cadre-de-vie/Urgences-Ecologiques/Nos-actions/Prime-velo - -aides . pays sainte odile: - remplace: commune - titre: Pays de Sainte-Odile - applicable si: localisation . epci = 'CC du Pays de Sainte-Odile' - variations: - - si: vélo . cargo - alors: - valeur: 10% * vélo . prix - plafond: 180€ - - si: vélo . électrique - alors: - valeur: 10% * vélo . prix - plafond: 120€ - - si: vélo . mécanique - alors: - valeur: 20% * vélo . prix - plafond: 60€ - - sinon: 0€ - lien: http://www.cc-paysdesainteodile.fr/competences/se-deplacer/2/ - -aides . portes de rosheim: - remplace: intercommunalité - titre: Communauté de communes des Portes de Rosheim - applicable si: localisation . epci = 'CC des Portes de Rosheim' - description: La communauté de communes a prévu un budget de 40 000 € en 2022 - variations: - - si: vélo . cargo électrique - alors: - valeur: 10% * vélo . prix - plafond: 180€ - - si: vélo . électrique - alors: - valeur: 10% * vélo . prix - plafond: 120€ - - si: vélo . mécanique - alors: - valeur: 20% * vélo . prix - plafond: 60€ - lien: https://www.cc-portesderosheim.fr/vivre-au-quotidien/se-deplacer/en-velo/dispositif-daide-a-lachat-dun-velo-neuf/ - -aides . pays de barr: - remplace: intercommunalité - titre: Pays de Barr - applicable si: localisation . epci = 'CC du Pays de Barr' - variations: - - si: vélo . cargo - alors: - valeur: 10% * vélo . prix - plafond: 180€ - - si: vélo . électrique - alors: - valeur: 10% * vélo . prix - plafond: 120€ - - si: vélo . mécanique - alors: - valeur: 20% * vélo . prix - plafond: 60€ - - sinon: 0€ - lien: https://www.paysdebarr.fr/vivre/fr/velo/les-aides-lachat-de-velos - -aides . molsheim-mutzig: - remplace: intercommunalité - titre: Communauté de communes de la Région de Molsheim-Mutzig - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de la Région de Molsheim-Mutzig' - - vélo . électrique - variations: - - si: acheté dans un commerce du territoire - alors: 200 € - - sinon: 100 € - lien: https://www.cc-molsheim-mutzig.fr/velos-a-assistance-electrique.htm - avec: - acheté dans un commerce du territoire: - question: Le vélo est-il acheté dans un commerce de la communauté de communes ? - type: booléen - par défaut: non - -# aides . pays rhénan: -# remplace: intercommunalité -# titre: Communes du Pays Rhénan -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC du Pays Rhénan' -# - vélo . électrique -# valeur: 200€ -# lien: https://www.cc-paysrhenan.fr/Vivre/Environnement/Mobilites/Pratique-cyclable.html - -aides . les sables d'olonne: - remplace: intercommunalité - titre: Les Sables d'Olonne - applicable si: localisation . epci = "CA Les Sables d'Olonne Agglomération" - valeur: - variations: - - si: vélo . cargo - alors: 25% * vélo . prix - - si: vélo . électrique - alors: 25% * vélo . prix - - sinon: 50% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: http://www.lsoagglo.fr/vivreauxolonnes/vie-pratique/transports/plan-velo-2025/ - -aides . vallons du lyonnais: - remplace: intercommunalité - titre: Communauté de Communes des Vallons du Lyonnais - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Vallons du Lyonnais (CCVL)' - - vélo . électrique - valeur: 200€ - lien: https://www.ccvl.fr/vivre-au-quotidien/mobilites/vae-aides-a-lachat-et-location-longue-duree/ - -aides . pays de l'arbresle: - remplace: intercommunalité - titre: Communauté de Communes du Pays de L‘Arbresle - applicable si: - toutes ces conditions: - - localisation . epci = "CC du Pays de l'Arbresle (CCPA)" - - une de ces conditions: - - vélo . cargo - - vélo . motorisation - - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 3000€ - valeur: 50% * vélo . prix - plafond: 250€ - lien: https://www.paysdelarbresle.fr/aide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . pays de l'ozon: - remplace: intercommunalité - titre: Pays de l’Ozon - applicable si: - toutes ces conditions: - - localisation . epci = "CC du Pays de l'Ozon" - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - - vélo . cargo - valeur: 200€ - plafond: vélo . prix - lien: https://www.pays-ozon.com/vivre-dans-le-pays-de-lozon/les-transports/subvention-velo-electrique/ - -aides . département loire: - remplace: département - titre: Département de la Loire - applicable si: - toutes ces conditions: - - localisation . département = '42' - - vélo . électrique - valeur: 300 € - plafond: vélo . prix - lien: https://www.loire.fr/jcms/lw_1383840/fr/beneficiez-de-300-euros-pour-l-achat-d-un-velo-a-assistance-electrique-ou-d-un-kit-d-electrification-vae - -aides . département Hérault: - remplace: département - titre: Département Hérault - applicable si: - toutes ces conditions: - - localisation . département = '34' - - vélo . électrique - - revenu fiscal de référence <= 27086 €/an - valeur: vélo . prix - plafond: 250€ - lien: https://herault.fr/409-mon-velo.htm - -aides . montpellier: - remplace: intercommunalité - titre: Montpellier Méditerranée Métropole - applicable si: localisation . epci = 'Montpellier Méditerranée Métropole' - valeur: 50% * vélo . prix - plafond: - variations: - - si: - toutes ces conditions: - - vélo . électrique - - vélo . neuf - alors: 500€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . occasion - alors: 200€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - lien: https://www.montpellier3m.fr/vivre-transport/toutes-les-aides-pour-lachat-ou-la-reparation-de-velos - -aides . sète: - remplace: intercommunalité - titre: Sète Agglopôle méditerranée - # TODO: valable pour les trotinettes électriques - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Sète Agglopôle Méditerranée' - - vélo . électrique - somme: - - valeur: 25% * vélo . prix - plafond: 200€ - - applicable si: acheté dans un commerce local - valeur: 50€ - lien: https://www.agglopole.fr/bougerdecouvrir/se-deplacer/l-aide-a-l-achat-de-velos-et-trottinettes-electriques/ - avec: - acheté dans un commerce local: - question: Le vélo est-il acheté dans un commerce de Sètre agglopôle méditerranée ? - type: booléen - par défaut: non - -# aides . vauvert: -# remplace: commune -# titre: Ville de Vauvert -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '30341' -# - vélo . électrique -# valeur: 200€ -# lien: https://www.vauvert.com/grands-projets/une-ville-qui-respire/velo-assistance-electrique-aide/ - -aides . cébazat: - remplace: commune - titre: Ville de Cébazat - applicable si: localisation . code insee = '63063' - variations: - - si: vélo . électrique - alors: 150€ - - si: vélo . motorisation - alors: 100€ - - si: vélo . pliant - alors: 50€ - - sinon: 0€ - plafond: vélo . prix - lien: http://www.cebazat.fr/Plan-velo-communal.html - -aides . aubiere: - remplace: commune - titre: Ville d’Aubière - applicable si: - toutes ces conditions: - - localisation . code insee = '63014' - - vélo . électrique - valeur: 150€ - plafond: vélo . prix - lien: https://ville-aubiere.fr/2021/02/17/passez-au-velo-pedalez-branche/ - -aides . romagnat: - remplace: commune - titre: Ville de Romagnat - applicable si: - toutes ces conditions: - - localisation . code insee = '63307' - - vélo . électrique - valeur: 100€ - plafond: vélo . prix - lien: https://www.ville-romagnat.fr/cadre-de-vie-urbanisme/developpement-durable/velo-electrique/ - -aides . ambert livradois forez: - remplace: intercommunalité - titre: Communauté de communes Ambert Livradois Forez - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Ambert Livradois Forez' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 16200 €/an - alors: 300€ - - si: revenu fiscal de référence <= 27000 €/an - alors: 150€ - - sinon: 0€ - plafond: vélo . prix - lien: https://www.ambertlivradoisforez.fr/actualites/ambert-livradois-forez-propose-une-aide-a-lachat-de-velo-a-assistance-electrique/ - -aides . cournon d'auvergne: - remplace: commune - titre: Ville de Cournon-d’Auvergne - applicable si: - toutes ces conditions: - - localisation . code insee = '63124' - - vélo . électrique - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 469 €/mois - montant: 200€ - - plafond: 1028 €/mois - montant: 150€ - - plafond: 2233 €/mois - montant: 100€ - plafond: vélo . prix - lien: https://www.cournon-auvergne.fr/actualites/aide-pour-lachat-dun-velo-a-assistance-electrique/ - -aides . colmar: - remplace: commune - titre: Ville de Colmar - applicable si: localisation . code insee = '68066' - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 120€ - - sinon: 0€ - lien: https://www.colmar.fr/sites/colmar.fr/files/documents/35-fe-participation-achat-velo-neuf.pdf - -aides . avignon: - remplace: intercommunalité - titre: Grand Avignon - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Grand Avignon (COGA)' - - vélo . électrique - - vélo . prix >= 400 € - valeur: 100€ - lien: https://www.grandavignon.fr/fr/actualites/laide-lachat-dun-velo-assistance-electrique-se-poursuit-en-2024 - -# aides . villeneuve lez avignon: -# remplace: commune -# titre: Ville de Villeneuve lez Avignon -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '30351' -# - vélo . électrique -# valeur: 100€ -# lien: https://www.villeneuvelesavignon.fr/Mobilit%C3%A9/40/ - -aides . luberon: - remplace: intercommunalité - titre: Luberon Monts de Vaucluse - applicable si: localisation . epci = 'CA Luberon Monts de Vaucluse' - valeur: 30% * vélo . prix - plafond: - variations: - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 2500€ - alors: 300€ - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . prix <= 1000€ - alors: 200€ - - sinon: 0€ - lien: https://www.luberonmontsdevaucluse.fr/agglomeration/subvention-velo - -aides . kremlin-bicetre: - remplace: commune - titre: Ville du Kremlin-Bicêtre - applicable si: localisation . code insee = '94043' - variations: - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . occasion - alors: - valeur: 200€ - plafond: 50% * vélo . prix - - si: - toutes ces conditions: - - vélo . électrique - - vélo . occasion - alors: - valeur: 150€ - plafond: 15% * vélo . prix - - sinon: 0€ - lien: https://www.kremlinbicetre.fr/actualites/subvention-pour-lachat-dun-velo-ou-dune-trottinette/ - -aides . chevilly-larue: - remplace: commune - titre: Ville de Chevilly-Larue - applicable si: - toutes ces conditions: - - localisation . code insee = '94021' - - vélo . mécanique - variations: - - si: vélo . occasion - alors: 30 % * vélo . prix - - sinon: 20 % * vélo . prix - plafond: 100€ - lien: http://www.ville-chevilly-larue.fr/transports/velo-en-ville/les-aides-communales-942.html - -aides . pau: - remplace: intercommunalité - titre: Pau Béarn Pyrénées Mobilité - applicable si: localisation . epci = 'CA Pau Béarn Pyrénées' - valeur: 15% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 350€ - - si: vélo . pliant - alors: 200€ - - si: vélo . électrique - alors: 200€ - - sinon: 0€ - lien: https://www.pau.fr/article/aide-a-lachat-velo--profitez-dun-coup-de-pouce-pour-changer-de-braquet - -aides . lescar: - remplace: commune - titre: Ville de Lescar - applicable si: localisation . code insee = '64335' - variations: - - si: vélo . cargo - alors: - variations: - - si: revenu fiscal de référence < 12000 €/an - alors: 450€ - - si: revenu fiscal de référence < 16000 €/an - alors: 350€ - - si: revenu fiscal de référence <= 20000 €/an - alors: 250€ - - sinon: 0€ - - si: - une de ces conditions: - - vélo . électrique - - vélo . pliant - alors: - variations: - - si: revenu fiscal de référence < 12000 €/an - alors: 300€ - - si: revenu fiscal de référence < 16000 €/an - alors: 200€ - - si: revenu fiscal de référence <= 20000 €/an - alors: 100€ - - sinon: 0€ - - sinon: 0€ - lien: https://www.lescar.fr/information-transversale/fil-infos/mise-en-place-dune-aide-pour-lacquisition-dun-velo-pour-les-lescariens-1140 - -aides . bidart: - remplace: commune - titre: Ville de Bidart - applicable si: - toutes ces conditions: - - localisation . code insee = '64125' - - vélo . électrique ou mécanique - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: - variations: - - si: revenu fiscal de référence < 28000 €/an - alors: 500€ - - sinon: 400€ - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence < 28000 €/an - alors: 400€ - - sinon: 300€ - - si: vélo . mécanique - alors: - variations: - - si: revenu fiscal de référence < 28000 €/an - alors: 200€ - - sinon: 100€ - - sinon: 0€ - lien: https://www.bidart.fr/actualites/actualite/aide-a-lachat-dun-velo-47 - -# aides . pays basque: -# remplace: intercommunalité -# titre: Agglomération Pays Basque -# applicable si: localisation . epci = 'CA du Pays Basque' -# variations: -# - si: vélo . cargo électrique -# alors: -# grille: -# assiette: revenu fiscal de référence -# tranches: -# - plafond: 430 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 1000€ -# - plafond: 620 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 900€ -# - plafond: 1200 €/mois -# montant: -# valeur: 20% * vélo . prix -# plafond: 800€ -# - montant: 0€ -# - si: vélo . cargo -# alors: -# grille: -# assiette: revenu fiscal de référence -# tranches: -# - plafond: 430 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 700€ -# - plafond: 620 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 600€ -# - plafond: 1200 €/mois -# montant: -# valeur: 20% * vélo . prix -# plafond: 400€ -# - montant: 0€ -# - si: vélo . électrique -# alors: -# grille: -# assiette: revenu fiscal de référence -# tranches: -# - plafond: 430 €/mois -# montant: -# valeur: 60% * vélo . prix -# plafond: 600€ -# - plafond: 620 €/mois -# montant: -# valeur: 50% * vélo . prix -# plafond: 500€ -# - plafond: 1200 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 300€ -# - montant: 0€ -# - si: vélo . pliant -# alors: -# grille: -# assiette: revenu fiscal de référence -# tranches: -# - plafond: 430 €/mois -# montant: -# valeur: 50% * vélo . prix -# plafond: 300€ -# - plafond: 620 €/mois -# montant: -# valeur: 40% * vélo . prix -# plafond: 250€ -# - plafond: 1200 €/mois -# montant: -# valeur: 30% * vélo . prix -# plafond: 200€ -# - montant: 0€ -# lien: https://www.txiktxak.fr/vos-moyens-de-transport-a-la-carte/aide-a-l-achat-velo/ - -aides . vallée d'ossau: - remplace: intercommunalité - titre: Vallée d’Ossau communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = "CC de la Vallée d'Ossau" - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200€ - lien: https://cc-ossau.fr/aide-a-lachat-dun-vae/ - -aides . aix les bains: - remplace: commune - titre: Ville d’Aix-les-Bains - applicable si: - toutes ces conditions: - - localisation . code insee = '73008' - - vélo . électrique - valeur: 250€ - plafond: vélo . prix - lien: https://www.aixlesbains.fr/Cadre-de-vie/Transports-et-deplacements/A-velo/Aides-financieres-pour-se-deplacer-a-velo - -aides . cœur de maurienne arvan: - remplace: intercommunalité - titre: Cœur de Maurienne Arvan - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Coeur de Maurienne Arvan' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 40% * vélo . prix - plafond: 400€ - lien: https://www.coeurdemaurienne-arvan.com/actualite/velo-electrique/ - -# aides . cœur de savoie: -# remplace: intercommunalité -# titre: Cœur de Savoie -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC Coeur de Savoie' -# - vélo . électrique -# variations: -# - si: vélo . cargo électrique -# alors: -# variations: -# - si: revenu fiscal de référence <= 13489 €/an -# alors: 600 € -# - si: revenu fiscal de référence <= 18000 €/an -# alors: 450 € -# - sinon: 300 € -# - sinon: -# variations: -# - si: revenu fiscal de référence <= 13489 €/an -# alors: 450 € -# - si: revenu fiscal de référence <= 18000 €/an -# alors: 300 € -# - sinon: 150 € -# lien: https://www.coeurdesavoie.fr/actualite/10362/3783-aide-a-l-achat-de-votre-velo-electrique.htm - -aides . morzine-avoriaz: - remplace: commune - titre: Ville de Morzine-Avoriaz - applicable si: - toutes ces conditions: - - localisation . code insee = '74191' - - vélo . électrique ou mécanique - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 200€ - - sinon: 100€ - lien: https://www.mairie-morzine-avoriaz.com/mes-demarches/aide-a-lachat-velo/ - -aides . bourg-saint-maurice: - remplace: commune - titre: Ville de Bourg-Saint-Maurice - applicable si: localisation . code insee = '73054' - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: - variations: - - si: vélo . cargo électrique - alors: 600 € - - si: vélo . cargo - alors: 300 € - - si: vélo . électrique - alors: 400 € - - si: vélo . pliant - alors: 150 € - - si: vélo . mécanique - alors: 150 € - - sinon: 0 € - - si: revenu fiscal de référence <= 18000 €/an - alors: - variations: - - si: vélo . cargo électrique - alors: 600 € - - si: vélo . cargo - alors: 300 € - - si: vélo . électrique - alors: 400 € - - sinon: 0 € - - sinon: - variations: - - si: vélo . cargo électrique - alors: 400 € - - si: vélo . cargo - alors: 200 € - - si: vélo . électrique - alors: 200 € - - sinon: 0 € - lien: https://www.bourgsaintmaurice.fr/transports/subvention-achat-velo - -aides . la motte servolex: - remplace: commune - titre: Ville de La Motte Servolex - applicable si: - toutes ces conditions: - - localisation . code insee = '73179' - - une de ces conditions: - - vélo . électrique - - vélo . pliant - valeur: 20% * vélo . prix - plafond: 150€ - lien: https://www.mairie-lamotteservolex.fr/vos-demarches/subventions-eco-citoyennes-la-motte-servolex/ - -aides . montagnole: - remplace: commune - titre: Ville de Montagnole - applicable si: - toutes ces conditions: - - localisation . code insee = '73160' - - vélo . électrique - - vélo . prix >= 1200 € - valeur: 200€ - lien: https://www.mairie-montagnole.fr/vae/ - -aides . saint alban leysse: - remplace: commune - titre: Ville de Saint-Alban-Leysse - applicable si: - toutes ces conditions: - - localisation . code insee = '73222' - - vélo . électrique - - vélo . prix >= 1500 € - - vélo . prix <= 3500 € - valeur: 200€ - lien: https://www.saintalbanleysse.fr/fileadmin/mediatheque/saint-alban-leysse/6-Actualites/Brochure_VAE_2023.pdf - -aides . ardenne: - remplace: intercommunalité - titre: Ardenne Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Ardenne Métropole' - - vélo . électrique ou mécanique - variations: - - si: vélo . fabriqué en france - alors: - valeur: 40% * vélo . prix - plafond: 300€ - - sinon: - valeur: 33% * vélo . prix - plafond: 200€ - lien: https://ardenne-metropole.fr/storage/2021/04/Plaquette-subvention-v2.pdf - -aides . les crêtes préardennaises: - remplace: intercommunalité - titre: Les Crêtes Préardennaises - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Crêtes Préardennaises' - - vélo . électrique - - ménage imposable = non - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.cretespreardennaises.fr/document/document/formulaires-daides-pour-lachat-dun-velo-electrique - -# aides . erdregesvres: -# remplace: intercommunalité -# titre: Communauté de communes d’Erdre et Gesvres -# applicable si: -# toutes ces conditions: -# - localisation . epci = "CC d'Erdre et Gesvres" -# - vélo . électrique -# valeur: 25% * vélo . prix -# plafond: 100€ -# lien: https://www.cceg.fr/vos-services/faciliter-et-simplifier-vos-deplacements/bonus-velo-aide-a-lachat-de-velo-a-assistance-electrique - -# aides . grand lieu: -# remplace: intercommunalité -# titre: Grand Lieu Communauté -# applicable si: localisation . epci = 'CC Grand Lieu Communauté' -# # todo réparation -# variations: -# - si: vélo . cargo -# alors: 300 € -# - si: -# une de ces conditions: -# - vélo . électrique -# - vélo . pliant -# - vélo . motorisation -# alors: 100 € -# - si: vélo . mécanique -# alors: 50 € -# - sinon: 0 € -# lien: https://www.grandlieu.fr/vivre-et-habiter/mobilite/velo/operation-tous-velo - -aides . clisson: - remplace: commune - applicable si: - toutes ces conditions: - - localisation . code insee = '44043' - # TODO: trottinette électrique - - vélo . électrique ou mécanique - titre: Ville de Clisson - description: Cette aide est proposée via le CCAS de Clisson. - variations: - - si: revenu fiscal de référence <= 400 €/mois - alors: - valeur: 80% * vélo . prix - plafond: 300 € - - si: revenu fiscal de référence <= 600 €/mois - alors: - valeur: 60% * vélo . prix - plafond: 250 € - - si: revenu fiscal de référence <= 1000 €/mois - alors: - valeur: 50% * vélo . prix - plafond: 200 € - - si: revenu fiscal de référence <= 1400 €/mois - alors: - valeur: 40% * vélo . prix - plafond: 180 € - - sinon: - valeur: 20% * vélo . prix - plafond: 100 € - lien: https://www.mairie-clisson.fr/fileadmin/Clisson/Telechargements/ACTUALITES/2021/Dossier_Clisson_a_velo_ou_trottinette.pdf - -aides . sèvre et loire: - remplace: intercommunalité - titre: Sèvre-et-Loire Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Sèvre et Loire' - - une de ces conditions: - - vélo . cargo - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 750€/mois - alors: - valeur: 30% * vélo . prix - plafond: 200€ - - si: revenu fiscal de référence <= 1500€/mois - alors: - valeur: 20% * vélo . prix - plafond: 150€ - - sinon: - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://interco.cc-sevreloire.fr/rubrique/une-aide-pour-lachat-dun-velo-electrique/ - -aides . chateaubriant derval: - remplace: intercommunalité - titre: Châteaubriant Derval Communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Châteaubriant-Derval' - - vélo . électrique - valeur: 100€ - lien: https://www.cc-chateaubriant-derval.fr/espace-services/vie-pratique/mobilite/velos-a-assistance-electrique/ - -aides . pays ancenis: - remplace: intercommunalité - titre: Communauté de communes du Pays d’Ancenis - applicable si: - toutes ces conditions: - - localisation . epci = "CC du Pays d'Ancenis" - - vélo . électrique - valeur: 25% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: - variations: - - si: vélo . cargo électrique - alors: 300€ - - sinon: 200€ - - sinon: - variations: - - si: vélo . cargo électrique - alors: 200€ - - sinon: 100€ - lien: https://www.pays-ancenis.com/vie-quotidienne/comment-se-deplacer-en-pays-dancenis-compa/mobilites-actives/aide-a-lachat-dun-velo-electrique - -aides . romilly-sur-seine: - remplace: intercommunalité - titre: Communauté de Communes des Portes de Romilly-sur-Seine - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Portes de Romilly sur Seine' - - vélo . électrique - valeur: 100€ - lien: https://www.ville-romilly-sur-seine.fr/node/1514 - -aides . cote d'or: - remplace: département - titre: Département Côte d’Or - applicable si: - toutes ces conditions: - - localisation . département = '21' - - vélo . électrique - valeur: - variations: - - si: vélo assemblé ou produit localement - alors: 350€ - - sinon: 250€ - plafond: vélo . prix - lien: https://www.cotedor.fr/aide/acquisition-de-velo-assistance-electrique - -aides . cote d'or . vélo assemblé ou produit localement: - question: Le vélo est-il assemblé ou produit en Côte-d’Or ? - type: booléen - par défaut: non - -aides . agen: - remplace: intercommunalité - titre: Agglomération d’Agen - applicable si: - toutes ces conditions: - - localisation . epci = "CA Agglomération d'Agen" - - vélo . électrique - valeur: 200€ - plafond: vélo . prix - lien: https://www.agglo-agen.net/vie-quotidienne/mobilites/aide-velo-electrique - -aides . boé: - remplace: commune - titre: Ville de Boé - applicable si: - toutes ces conditions: - - localisation . code insee = '47031' - - vélo . électrique - valeur: 100 € - lien: https://www.ville-boe.fr/decouvrir-boe/presentation/dernieres-actualites/2101-aide-achat-vae-2024 - -aides . sophia antipolis: - remplace: intercommunalité - titre: Communauté d’Agglomération Sophia Antipolis - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de Sophia Antipolis' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 19200 €/an - variations: - - si: vélo . cargo - alors: - valeur: 25% * vélo . prix - plafond: 500€ - - si: vélo . électrique - alors: - valeur: 40% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 6358 €/an - alors: 400€ - - si: revenu fiscal de référence <= 14089 €/an - alors: 300€ - - sinon: 200€ - - si: - toutes ces conditions: - - vélo . mécanique - - revenu fiscal de référence <= 6358 €/an - alors: - valeur: 40% * vélo . prix - plafond: 150€ - lien: https://www.agglo-sophiaantipolis.fr/vivre-et-habiter/se-deplacer/le-velo/demande-subvention-aide-a-lacquisition - -aides . mougins: - remplace: commune - titre: Ville de Mougins - applicable si: - toutes ces conditions: - - localisation . code insee = '06085' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 300€ - lien: https://www.espace-citoyens.net/mougins/espace-citoyens/Demande/NouvelleDemande/SUBV/D_SUBVAE - -aides . mandelieu: - remplace: commune - titre: Ville de Mandelieu-La Napoule - applicable si: - toutes ces conditions: - - localisation . code insee = '06079' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: 150€ - - sinon: 100€ - lien: https://www.mandelieu.fr/17219-pistes-cyclable-et-plan-velo.htm - -aides . pantin: - remplace: commune - titre: Ville de Pantin - applicable si: - toutes ces conditions: - - localisation . code insee = '93055' - - vélo . mécanique - description: | - La ville de Pantin propose une aide forfaitaire pour l’achat de tout type de - vélo neuf ou d’occasion. À noter que la demande de subvention est soumise à - l’approbation du Conseil municipal et que plusieurs mois peuvent s’écouler - avant le versement de la subvention. - valeur: 100€ - plafond: vélo . prix - lien: https://pratique.pantin.fr/tous-les-services/deplacement-et-stationnement/deplacement/transports-alternatifs-velo - -aides . aubervilliers: - remplace: commune - titre: Ville d'Aubervilliers - applicable si: - toutes ces conditions: - - localisation . code insee = '93001' - - vélo . mécanique - variations: - - si: vélo . neuf - alors: 100 € - - sinon: 50 € - lien: https://www.aubervilliers.fr/Aide-a-l-achat-d-un-velo - -aides . rueil-malmaison: - remplace: commune - titre: Ville de Rueil-Malmaison - applicable si: - toutes ces conditions: - - localisation . code insee = '92063' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 20000 €/an - alors: - valeur: 40% * vélo . prix - plafond: 500€ - - si: revenu fiscal de référence <= 30000 €/an - alors: - valeur: 30% * vélo . prix - plafond: 300€ - - sinon: - valeur: 20% * vélo . prix - plafond: 200€ - lien: https://www.villederueil.fr/fr/aide-lachat-dun-velo-electrique - -aides . courbevoie: - remplace: commune - titre: Ville de Courbevoie - applicable si: - toutes ces conditions: - - localisation . code insee = '92026' - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - variations: - - si: revenu fiscal de référence < 20000 €/an - alors: 25% * vélo . prix - - si: revenu fiscal de référence < 40000 €/an - alors: 20% * vélo . prix - - sinon: 15% * vélo . prix - plafond: 300€ - lien: https://www.ville-courbevoie.fr/1844/subvention-pour-l-achat-d-un-velo-electrique.htm - -aides . mons en baroeul: - remplace: commune - titre: Ville de Mons en Barœul - applicable si: localisation . code insee = '59410' - description: | - La ville de Mons en Barœul offre une aide à l’achat d’un $vélo - jusqu’à $plafond pour ses habitants. - Note: Les vélos dédiés exclusivement à des activités de loisirs ne sont pas - éligibles (BMX, VTT, vélo de course) - plafond: $plafond - variations: - - si: vélo . électrique - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 851 €/mois - montant: - valeur: 40% * vélo . prix - plafond: 400 € - - plafond: 1300 €/mois - montant: - valeur: 30% * vélo . prix - plafond: 300€ - - plafond: 1500 €/mois - montant: - valeur: 20% * vélo . prix - plafond: 200€ - - plafond: 1800 €/mois - montant: - valeur: 10% * vélo . prix - plafond: 100€ - - si: vélo . mécanique - alors: - grille: - assiette: revenu fiscal de référence - tranches: - - plafond: 851 €/mois - montant: - valeur: 50% * vélo . prix - plafond: 200€ - - plafond: 1124 €/mois - montant: - valeur: 25% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.monsenbaroeul.fr/vivre-mons-en-baroeul/se-deplacer/demander-ma-prime-velo - avec: - $plafond: - variations: - - si: vélo . électrique - alors: 400 € - - sinon: 200 € - -aides . annoeullin: - remplace: commune - titre: Ville d'Annœullin - applicable si: - toutes ces conditions: - - localisation . code insee = '59011' - - vélo . électrique - valeur: 200 € - lien: https://www.annoeullin.fr/aide-pour-lachat-velo-electrique - -aides . la madeleine: - remplace: commune - titre: Ville de La Madeleine - applicable si: localisation . code insee = '59368' - description: | - Note: Les vélos pour enfant (inférieur à 26 pouces) et les modèles de vélos dédiés exclusivement - à des activités de loisirs ne sont pas subventionnés (ex : BMX, vélo de piste, vélo de course haut de gamme,…) - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 250 € - - si: vélo . cargo - alors: 250 € - - si: vélo . mécanique - alors: 150 € - - sinon: 0 € - lien: https://www.ville-lamadeleine.fr/formulaires/transition-ecologique-aides-municipales - -aides . puisaye forterre: - remplace: intercommunalité - titre: Communauté de communes de Puisaye-Forterre - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de Puisaye-Forterre' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - valeur: 100€ - lien: https://www.puisaye-forterre.com/vivre/aide-a-la-mobilite/ - -# TODO "temporairement suspendue" -# aides . nevers: -# remplace: intercommunalité -# titre: Nevers Agglomération -# applicable si: localisation . epci = 'CA de Nevers' -# valeur: 30% * vélo . prix -# # TODO: informations contradictoires entre les 2 pages suivantes: -# # - https://www.agglo-nevers.net/laide-a-lachat-dun-velo-revue-et-reconduite/ -# # - https://www.lejdc.fr/nevers-58000/loisirs/nevers-agglomeration-poursuit-sa-politique-daccompagnement-pour-lachat-dun-nouveau-velo_14071739/ -# plafond: -# variations: -# - si: -# toutes ces conditions: -# - vélo . électrique -# - vélo . prix <= 1650 € -# alors: 150 € -# - si: -# toutes ces conditions: -# - vélo . mécanique -# - vélo . prix <= 500 € -# alors: 75 € -# - si: -# toutes ces conditions: -# - vélo . motorisation -# - vélo . prix <= 500 € -# alors: 150 € -# - sinon: 0 € -# lien: https://www.nevers.fr/actualites/aide-a-lacquisition-dun-velo-2022 - -# aides . sud nivernais: -# remplace: intercommunalité -# titre: Communauté de Communes Sud Nivernais -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC Sud Nivernais' -# - vélo . électrique ou mécanique -# valeur: 30% * vélo . prix -# plafond: 300€ -# lien: https://www.ccsn.fr/environnement-5/aide-a-lachat-velo/ - -aides . aurillac: - remplace: intercommunalité - titre: Vélo'Cab - Aurillac - description: | - La communauté d’agglomération propose une subvention pour l’achat d’un vélo - électrique. Cette subvention est conditionné au fait d’avoir loué un vélo - électrique auprès de la Stabus pendant au moins 3 mois consécutifs - applicable si: - toutes ces conditions: - - localisation . epci = "CA du Bassin d'Aurillac" - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 300€ - lien: https://www.stabus.fr/fr/velocab/ - -aides . terre des 2 caps: - remplace: intercommunalité - titre: Terre des 2 caps - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de la Terre des Deux Caps' - - vélo . électrique - valeur: 40% * vélo . prix - plafond: 250€ - lien: http://www.terredes2caps.fr/ - -aides . saint-omer: - remplace: commune - titre: Ville de Saint-Omer - applicable si: - toutes ces conditions: - - localisation . code insee = '62765' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: - variations: - - si: étudiant ou jeune en recherche d'emploi - alors: 350 € - - sinon: 250 € - - sinon: 100 € - lien: https://www.ville-saint-omer.fr/aides-lacquisition-de-velo - avec: - étudiant ou jeune en recherche d'emploi: - type: booléen - par défaut: non - question: Êtes-vous étudiant ou jeune de moins de 25 ans en recherche d'emploi ? - -aides . carvin: - remplace: commune - titre: Ville de Carvin - applicable si: - toutes ces conditions: - - localisation . code insee = '62215' - - vélo . électrique ou mécanique - valeur: 75% * vélo . prix - plafond: 300€ - lien: http://www.carvin.fr/carvinfr/actualites/2021/prime-velo.html - -aides . les herbiers: - remplace: intercommunalité - titre: Pays des Herbiers - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays des Herbiers' - - vélo . électrique - valeur: 15% * vélo . prix - plafond: 200€ - lien: https://www.paysdesherbiers.fr/2-le-velo/ - -aides . riviera francaise: - remplace: intercommunalité - titre: Riviera Française - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de la Riviera Française' - - vélo . électrique - valeur: 300€ - plafond: - valeur: vélo . prix - abattement: aides . commune - lien: https://www.riviera-francaise.fr/media/attachments/2022/03/30/convention-2022-2024-cc01221.pdf - -aides . frejus: - remplace: commune - titre: Ville de Fréjus - applicable si: - toutes ces conditions: - - localisation . code insee = '83061' - - vélo . électrique - valeur: vélo . prix - plafond: 200 € - lien: https://www.ville-frejus.fr/ma-ville/valorisation-et-preservation/dossier-de-demande-daide-a-lachat-dun-vae/ - -# aides . gien: -# remplace: intercommunalité -# titre: Communauté des Communes Giennoises -# applicable si: localisation . epci = 'CC Giennoises' -# variations: -# - si: vélo . électrique -# alors: -# valeur: 25% * vélo . prix -# plafond: 300€ -# - si: vélo . électrique -# alors: -# valeur: 50% * vélo . prix -# plafond: 100€ -# - sinon: 0€ -# lien: https://www.legiennois.fr/legiennois-actualites/2148-aide-a-l-acquisition-de-velo - -aides . ferte saint aubin: - remplace: commune - titre: Ville de La Ferté Saint-Aubin - applicable si: - toutes ces conditions: - - localisation . code insee = '45146' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: 100 € - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . occasion - alors: 30 € - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . neuf - alors: 20 € - - sinon: 0 € - lien: https://www.lafertesaintaubin.fr/visiter-habiter/environnement-et-risques/coups-de-pouce-pour-lenvironnement/ - -aides . reims: - remplace: commune - titre: Ville de Reims - applicable si: localisation . code insee = '51454' - valeur: - variations: - - si: vélo . cargo électrique - alors: - valeur: 25% * vélo . prix - plafond: 250€ - - si: vélo . électrique - alors: - valeur: 25% * vélo . prix - plafond: 150€ - - si: vélo . mécanique - alors: - valeur: 50% * vélo . prix - plafond: 80€ - - sinon: 0€ - lien: https://www.reims.fr/qualite-de-vie-environnement/stationnement-et-deplacements/operation-aide-a-lachat-dun-velo - -aides . grand reims: - remplace: intercommunalité - titre: Grand Reims Communauté urbaine - applicable si: localisation . epci = 'CU du Grand Reims' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 500€ - - si: vélo . électrique - alors: 300€ - - si: vélo . pliant - alors: 300€ - - sinon: 0€ - lien: https://www.grandreims.fr/se-deplacer/operation-aide-a-lachat-dun-velo-a-assistance-electrique - -aides . fier et usses: - remplace: intercommunalité - titre: Communauté de communes Fier et Usses - applicable si: localisation . epci = 'CC Fier et Usses' - variations: - - si: revenu fiscal de référence <= 14089€/an - alors: - variations: - - si: vélo . cargo électrique - alors: 600€ - - si: vélo . électrique - alors: 400€ - - si: vélo . mécanique - alors: 150€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - - si: revenu fiscal de référence <= 23000€/an - alors: - variations: - - si: vélo . cargo électrique - alors: 500€ - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 100€ - - si: vélo . motorisation - alors: 150€ - - sinon: 0€ - - si: revenu fiscal de référence <= 30000€/an - alors: - variations: - - si: vélo . cargo électrique - alors: 400€ - - si: vélo . électrique - alors: 200€ - - si: vélo . motorisation - alors: 100€ - - sinon: 0€ - - sinon: 0€ - plafond: 50% * vélo . prix - lien: https://www.fier-et-usses.com/actualite/18078/2048-aide-a-l-achat-velo.htm - -aides . pays de cruseilles: - remplace: intercommunalité - titre: Pays de Cruseilles - applicable si: localisation . epci = 'CC du Pays de Cruseilles' - variations: - - si: - toutes ces conditions: - - vélo . cargo électrique - - vélo . prix >= 1000€ - - vélo . prix <= 4500€ - alors: - variations: - - si: revenu fiscal de référence <= 7100€/an - alors: 700€ - - si: revenu fiscal de référence <= première tranche IR - alors: 600€ - - si: revenu fiscal de référence <= 20000€/an - alors: 400€ - - sinon: 0€ - - si: - toutes ces conditions: - - vélo . cargo - - vélo . prix >= 1000€ - - vélo . prix <= 3000€ - alors: - variations: - - si: revenu fiscal de référence <= 7100€/an - alors: 400€ - - si: revenu fiscal de référence <= première tranche IR - alors: 300€ - - si: revenu fiscal de référence <= 20000€/an - alors: 200€ - - sinon: 0€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix >= 600€ - - vélo . prix <= 3000€ - alors: - variations: - - si: revenu fiscal de référence <= 7100€/an - alors: 400€ - - si: revenu fiscal de référence <= première tranche IR - alors: 300€ - - si: revenu fiscal de référence <= 20000€/an - alors: 200€ - - sinon: 0€ - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . prix >= 400€ - - vélo . prix <= 1200€ - alors: - variations: - - si: revenu fiscal de référence <= 7100€/an - alors: 200€ - - si: revenu fiscal de référence <= première tranche IR - alors: 150€ - - si: revenu fiscal de référence <= 20000€/an - alors: 100€ - - sinon: 0€ - - sinon: 0€ - lien: https://ccpaysdecruseilles.org/vivre-ici/mobilite/prime-achat-velo/ - -aides . annecy: - remplace: intercommunalité - titre: Grand Annecy - applicable si: localisation . epci = 'CA du Grand Annecy' - variations: - - si: - toutes ces conditions: - - vélo . cargo électrique - - vélo . prix >= 700€ - - vélo . prix <= 5000€ - alors: - variations: - - si: revenu fiscal de référence <= 18000 €/an - alors: 600€ - - sinon: 400€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix >= 700€ - - vélo . prix <= 3000€ - alors: - variations: - - si: revenu fiscal de référence <= 18000 €/an - alors: 400€ - - sinon: 200€ - - si: - toutes ces conditions: - - vélo . cargo - - vélo . prix >= 200€ - - vélo . prix <= 2400€ - alors: - variations: - - si: revenu fiscal de référence <= 18000 €/an - alors: 300€ - - sinon: 200€ - - si: - toutes ces conditions: - - vélo . pliant - - vélo . prix >= 200 € - - vélo . prix <= 1500 € - - revenu fiscal de référence <= 13489 €/an - alors: 150€ - - si: - toutes ces conditions: - - vélo . mécanique simple - - vélo . prix >= 200 € - - vélo . prix <= 1000 € - - revenu fiscal de référence <= 13489 €/an - alors: 150€ - lien: https://aide-velo.grandannecy.fr/ - -aides . genevois: - remplace: intercommunalité - titre: Communauté de communes du Genevois - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Genevois' - - vélo . électrique - valeur: 250€ - lien: https://www.cc-genevois.fr/fr/vie-pratique-et-services/vous-deplacer/velo-ou-pied - -aides . arve salève: - remplace: intercommunalité - titre: Communauté de communes Arve & Salève - applicable si: localisation . epci = 'CC Arve et Salève' - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: - variations: - - si: vélo . cargo électrique - alors: 600€ - - si: vélo . cargo - alors: 500€ - - si: vélo . électrique - alors: 400€ - - si: vélo . mécanique - alors: 200€ - - sinon: 0€ - - si: revenu fiscal de référence <= 20000 €/an - alors: - variations: - - si: vélo . cargo électrique - alors: 500€ - - si: vélo . cargo - alors: 400€ - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - - si: revenu fiscal de référence <= 30000 €/an - alors: - variations: - - si: vélo . cargo électrique - alors: 300€ - - si: vélo . cargo - alors: 200€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - - sinon: - variations: - - si: vélo . cargo électrique - alors: 200€ - - si: vélo . cargo - alors: 150€ - - si: vélo . électrique - alors: 100€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - plafond: 80% * vélo . prix - lien: https://www.arve-saleve.fr/primo-velo-2024-laide-a-lachat-de-velo-darve-saleve/ - -aides . cluses arve et montagnes: - remplace: intercommunalité - titre: Cluses Arve & Montagnes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Cluses-Arve et Montagnes' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 36000 €/an - valeur: 40% * vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 20000 €/an - alors: - variations: - - si: vélo . cargo - alors: 1000 € - - si: vélo . électrique - alors: 300 € - - sinon: 150 € - - sinon: - variations: - - si: vélo . cargo - alors: 500 € - - si: vélo . électrique - alors: 200 € - - sinon: 100 € - lien: https://www.2ccam.fr/2023/06/09/prime-velo/ - -aides . évian-les-bains: - remplace: commune - titre: Ville d’Évian-les-Bains - applicable si: - toutes ces conditions: - - localisation . code insee = '74119' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . motorisation - valeur: 20% * vélo . prix - plafond: 400€ - lien: https://forms.gle/FbFMrPU4AYiTqTAg9 - -aides . marignier: - remplace: commune - titre: Ville de Marignier - applicable si: - toutes ces conditions: - - localisation . code insee = '74164' - - une de ces conditions: - - vélo . électrique - - vélo . pliant - valeur: 100€ - plafond: vélo . prix - lien: https://www.marignier.fr/mon-quotidien/mobilite/ - -aides . combloux: - remplace: commune - titre: Ville de Combloux - applicable si: - toutes ces conditions: - - localisation . code insee = '74083' - - vélo . électrique - valeur: 200€ - plafond: 80% * vélo . prix - lien: https://mairie-combloux.fr/aide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . châtel: - remplace: commune - titre: Ville de Châtel - applicable si: - toutes ces conditions: - - localisation . code insee = '74063' - - vélo . électrique - valeur: 200€ - lien: https://www.mairie-chatel.com/Actions-environnement - -aides . le vigan: - remplace: commune - titre: Ville du Vigan - applicable si: - toutes ces conditions: - - localisation . code insee = '30350' - - vélo . électrique - valeur: 200€ - lien: https://www.levigan.fr/mes-demarches-administratives/velo-finance/ - -aides . angers: - remplace: intercommunalité - titre: Angers Loire Métropole - applicable si: localisation . epci = 'CU Angers Loire Métropole' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 400€ - - si: vélo . cargo - alors: 100€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - lien: https://www.angersloiremetropole.fr/mon-quotidien/mobilites/velo/aide-a-l-achat-d-un-velo-neuf/index.html - -aides . haut val de sèvre: - remplace: intercommunalité - titre: Haut Val de Sèvre Communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Haut Val de Sèvre' - - vélo . électrique - - une de ces conditions: - - toutes ces conditions: - - vélo . neuf - - vélo . prix >= 950 € - - vélo . prix <= 3000 € - - toutes ces conditions: - - vélo . occasion - - vélo . prix >= 700 € - - vélo . prix <= 2000 € - valeur: 150€ - lien: https://cc-hautvaldesevre.fr/competences/environnement/mobilite/1558-aide-a-l-achat-d-un-velo-a-assistance-electrique.html - -aides . agglo bocage bressuirais: - remplace: intercommunalité - titre: Agglo Bocage-Bressuirais - applicable si: localisation . epci = 'CA du Bocage Bressuirais' - variations: - - si: vélo . cargo - alors: 150€ - - si: vélo . électrique - alors: 100€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - lien: https://www.agglo2b.fr/transports-mobilite/1027-aide-a-l-achat-d-un-velo - -aides . brissac loire aubance: - remplace: intercommunalité - titre: Brissac Loire Aubance - applicable si: localisation . epci = 'CC Loire Layon Aubance' - variations: - - si: vélo . cargo électrique - alors: 350€ - - si: vélo . électrique - alors: 200€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - plafond: vélo . prix - lien: https://www.brissacloireaubance.fr/actualites/une-nouvelle-aide-de-la-cclla-pour-lachat-de-velo-a-assistance-electrique/ - -aides . anjou bleu: - remplace: intercommunalité - titre: Anjou Bleu Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Anjou Bleu Communauté' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 20% * vélo . prix - plafond: 100 € - lien: https://www.anjoubleucommunaute.fr/me-deplacer-a-velo - -aides . limoges metropole: - remplace: intercommunalité - titre: Limoges Métropole - applicable si: localisation . epci = 'CU Limoges Métropole' - variations: - - si: vélo . cargo - alors: 450€ - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - plafond: 25% * vélo . prix - lien: https://www.limoges-metropole.fr/informations-transversales/actualites/laide-a-achat-de-velo-repart-pour-un-tour-1991 - -aides . grand poitiers: - remplace: intercommunalité - titre: Grand Poitiers - description: Le Chèque VAE doit être retiré avant l'achat du vélo. - applicable si: - toutes ces conditions: - - localisation . epci = 'CU du Grand Poitiers' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 250€ - lien: https://www.grandpoitiers.fr/au-quotidien/deplacements/velos-et-mobilites-actives/aide-a-lachat-dun-velo-a-assistance-electrique-vae - -aides . haut-poitou: - remplace: intercommunalité - titre: Haut-Poitou Communauté de Communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Haut-Poitou' - - une de ces conditions: - - vélo . électrique - - vélo . pliant - - vélo . cargo - valeur: 25% * vélo . prix - plafond: 200€ - lien: https://cc-hautpoitou.fr/amenagement-territoire/developpement-durable/mobilite-3/ - -aides . châtellrault: - remplace: intercommunalité - titre: Grand Châtellerault - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Grand Châtellerault' - - vélo . électrique - variations: - - si: ancien abonné vélibleu - alors: 300€ - - sinon: 200€ - lien: https://www.ville-chatellerault.fr/a-votre-service/deplacements/aide-%C3%A0-l-achat-de-v%C3%A9lo - avec: - ancien abonné vélibleu: - type: booléen - question: Êtes-vous un ancien abonné Vélibleu d’au moins 6 mois avant le 31 décembre 2021 ? - par défaut: non - -aides . grand orb: - remplace: intercommunalité - titre: Grand Orb Communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Grand Orb communauté de communes en Languedoc' - - vélo . électrique - valeur: 100€ - lien: https://www.grandorb.fr/phototheque_publique/Developpement-durable-/2022/03/convention-aide-achat-VAE-2022pdf.pdf - -aides . saint-jean-de-védas: - remplace: commune - titre: Ville de Saint-Jean-de-Védas - applicable si: localisation . code insee = '34270' - variations: - - si: vélo . cargo - alors: - valeur: 25% * vélo . prix - plafond: 300€ - - si: vélo . électrique - alors: - valeur: 25% * vélo . prix - plafond: 200€ - - si: vélo . mécanique - alors: - valeur: 50% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.saintjeandevedas.fr/actualites/actu-2022/aide-a-l-acquisition-d-un-velo - -aides . montlucon: - remplace: intercommunalité - titre: Montluçon Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Montluçon Communauté' - - vélo . électrique - - vélo . prix <= 2500€ - valeur: vélo . prix - plafond: 200 € - lien: https://www.montlucon-communaute.com/vivre-au-quotidien/la-mobilite-durable/a-velo-dans-lagglo/ - -aides . cotentin: - remplace: intercommunalité - titre: Cap Cotentin - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Cotentin' - - vélo . électrique - - revenu fiscal de référence <= 750 €/mois - valeur: 40% * vélo . prix - plafond: 350 € - lien: https://www.capcotentin.fr/aide-a-lacquisition/ - -aides . saint-lô: - remplace: intercommunalité - titre: Saint-Lô Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Saint-Lô Agglo' - - une de ces conditions: - - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 3000 € - - vélo . cargo - variations: - - si: vélo . cargo - alors: 400 € - - si: revenu fiscal de référence <= première tranche IR - alors: 200 € - - sinon: 100 € - plafond: 20% * vélo . prix - lien: https://www.saint-lo-agglo.fr/fr/la-prime-lachat-dun-velo-assistance-electrique - -aides . granville: - remplace: commune - titre: Ville de Granville - applicable si: - toutes ces conditions: - - localisation . code insee = '50218' - - vélo . électrique ou mécanique - variations: - - si: revenu fiscal de référence <= 13488€/an - alors: - variations: - - si: vélo . électrique - alors: 600€ - - sinon: 250€ - - si: revenu fiscal de référence <= 20230€/an - alors: - variations: - - si: vélo . électrique - alors: 250€ - - sinon: 100€ - - si: revenu fiscal de référence <= 26972€/an - alors: 100€ - - sinon: 0€ - plafond: - variations: - - si: revenu fiscal de référence <= 13488€/an - alors: 75% * vélo . prix - - sinon: 50% * vélo . prix - abattement: aides . état - lien: https://www.ville-granville.fr/vivre-au-quotidien-demarches-services/se-deplacer/aide-a-lachat-dun-velo/ - -aides . saint-louis: - remplace: intercommunalité - titre: Saint-Louis Agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Saint-Louis Agglomération' - - vélo . électrique ou mécanique - - variations: - - si: vélo . cargo - alors: vélo . prix <= 4000€ - - sinon: vélo . prix <= 3000€ - variations: - - si: vélo . électrique - alors: 200 € - - sinon: 100 € - plafond: 50% * vélo . prix - lien: https://www.agglo-saint-louis.fr/fr/au-quotidien/mobilite/prime-velo - -aides . saint-pair-sur-mer: - remplace: commune - titre: Ville de Saint-Pair-sur-Mer - applicable si: - toutes ces conditions: - - localisation . code insee = '50532' - - vélo . électrique - valeur: 200€ - lien: https://saintpairsurmer.fr/prime-a-lacquisition-dun-velo-a-assistance-electrique-2024/ - -# aides . la rochelle: -# remplace: intercommunalité -# titre: Communauté d'Agglomération de La Rochelle - Yélo -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CA de La Rochelle' -# - une de ces conditions: -# - vélo . électrique -# - vélo . cargo -# variations: -# - si: revenu fiscal de référence <= 450 €/mois -# alors: -# valeur: 50% * vélo . prix -# plafond: 400€ -# - si: revenu fiscal de référence <= 650 €/mois -# alors: -# valeur: 40% * vélo . prix -# plafond: 300€ -# - si: revenu fiscal de référence <= 750 €/mois -# alors: -# valeur: 30% * vélo . prix -# plafond: 200€ -# - sinon: 0€ -# lien: https://yelo.agglo-larochelle.fr/aide-a-lachat-dun-vae/ - -# aides . île de ré: -# remplace: intercommunalité -# titre: Île de Ré Communauté de communes -# applicable si: -# toutes ces conditions: -# - localisation . epci = "CC de l'Ile de Ré" -# - vélo . électrique -# valeur: 200€ -# plafond: vélo . prix -# lien: https://cdciledere.fr/aide-pour-lachat-dun-velo-electrique/ - -aides . aunis atlantique: - remplace: intercommunalité - titre: Communauté de Communes Aunis Atlantique - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Aunis Atlantique' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 200€ - lien: https://www.aunisatlantique.fr/aide-a-lacquisition-de-velo-a-assistance-electrique-vae/ - -aides . blois: - remplace: intercommunalité - titre: Agglopolys - applicable si: - toutes ces conditions: - - localisation . epci = "CA de Blois ''Agglopolys''" - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 300€ - lien: https://www.agglopolys.fr/1247-le-velo-a-assistance-electrique.htm - -aides . epinal: - remplace: intercommunalité - titre: Agglomération Épinal - applicable si: localisation . epci = "CA d'Epinal" - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . motorisation - alors: 200€ - - sinon: 0€ - lien: https://www.agglo-epinal.fr/se-deplacer/velo/subvention-a-lachat-dun-vae/ - -aides . quéven: - remplace: commune - titre: Ville de Quéven - applicable si: - toutes ces conditions: - - localisation . code insee = '56185' - - vélo . électrique ou mécanique - valeur: 30% * vélo . prix - plafond: 100€ - lien: https://www.queven.com/vivre-a-queven/transports/demande-de-subvention-velo/ - -aides . rochefort: - remplace: intercommunalité - titre: Agglomération Rochefort - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Rochefort Océan' - - revenu fiscal de référence <= 15400 €/an - valeur: 40% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 325€ - - si: vélo . électrique - alors: 225€ - - si: vélo . motorisation - alors: 150€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.agglo-rochefortocean.fr/velo-tricycle-et-kit-delectrification-aide-lacquisition - -aides . saintes: - remplace: intercommunalité - titre: Saintes Communauté d'agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de Saintes' - - vélo . électrique - valeur: 200€ - lien: https://www.agglo-saintes.fr/l-agglo-au-quotidien/transports-et-mobilites/530-aide-a-l-achat-d-un-velo-a-assistance-electrique.html - -aides . dieppe: - remplace: commune - titre: Ville de Dieppe - applicable si: - toutes ces conditions: - - localisation . code insee = '76217' - - vélo . électrique ou mécanique - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: 100€ - - sinon: 100 € - lien: https://www.dieppe.fr/menus/vie-quotidienne-3/developpement-durable-49/aide-municipale-pour-acquerir-un-velo - -aides . yvetot normandie: - remplace: intercommunalité - titre: Yvetot Normandie - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Yvetot Normandie' - - vélo . électrique ou mécanique - valeur: 30% * vélo . prix - plafond: 200€ - lien: https://www.yvetot-normandie.fr/vivre-in-yvetot-normandie/subventions/plan-velo-aide-a-lachat-de-velo/ - -aides . villes soeurs: - remplace: intercommunalité - titre: Communauté de communes des Villes Soeurs - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Villes Soeurs' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 150 € - lien: https://www.villes-soeurs.fr/vie-quotidienne/transport-mobilite/aide-velo-electrique/ - -aides . cote albatre: - remplace: intercommunalité - titre: Communauté de Communes de la Côte d’Albâtre - applicable si: - toutes ces conditions: - - localisation . epci = "CC de la Côte d'Albâtre" - - vélo . électrique ou mécanique - valeur: 30% * vélo . prix - plafond: 200€ - lien: https://cote-albatre.fr/aide-velo - -# aides . caux austreberthe: -# remplace: intercommunalité -# titre: Caux-Austreberthe communauté de communes -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC Caux - Austreberthe' -# - une de ces conditions: -# - vélo . électrique -# - vélo . cargo -# - vélo . pliant -# valeur: 30% * vélo . prix -# plafond: 300€ -# lien: https://www.cccauxaustreberthe.fr/media/images/upload/R%C3%A8glement_Velo_2022.pdf - -aides . pavilly: - remplace: commune - titre: Ville de Pavilly - applicable si: - toutes ces conditions: - - localisation . code insee = '76495' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.pavilly.fr/wp-content/uploads/2021/07/proces-verbal-conseil-municipal-du-15-mars-2021.pdf#page=12 - -aides . elbeuf: - remplace: commune - titre: Ville d’Elbeuf - applicable si: - toutes ces conditions: - - localisation . code insee = '76231' - - vélo . électrique ou mécanique - variations: - - si: vélo . mécanique - alors: - valeur: 50 % * vélo . prix - plafond: 100€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 4000€ - alors: 100€ - - sinon: 0€ - lien: https://www.mairie-elbeuf.fr/aides/aides-financieres-de-ville/aide-a-lacquisition-de-velos/ - -aides . arcachon: - remplace: commune - titre: Ville d’Arcachon - applicable si: - toutes ces conditions: - - localisation . code insee = '33009' - - vélo . électrique - valeur: vélo . prix - plafond: 200€ - lien: https://www.ville-arcachon.fr/velo-arcachon/ - -aides . canélan: - remplace: commune - titre: Ville de Canélan - applicable si: localisation . code insee = '33090' - variations: - - si: vélo . électrique - alors: - variations: - - si: vélo . neuf - alors: 100€ - - sinon: 150€ - - si: vélo . motorisation - alors: 150€ - - sinon: 0€ - lien: https://www.canejan.fr/vie-pratique/transports/345-velo-a-assistance-electrique-aide-a-l-acquisition.html - -aides . bassin d'arcachon nord: - remplace: intercommunalité - titre: Communauté d'agglomération du Bassin d’Arcachon Nord - applicable si: - toutes ces conditions: - - localisation . epci = "CA du Bassin d'Arcachon Nord" - - vélo . électrique - - revenu fiscal de référence <= 24700€/an - valeur: 200€ - plafond: vélo . prix - lien: https://coban-atlantique.fr/renouvellement-de-laide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . grand cubzaguais: - remplace: intercommunalité - titre: Grand Cubzaguais - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Grand Cubzaguais' - - revenu fiscal de référence <= 19200 €/an - - vélo . électrique ou mécanique - valeur: 50% * vélo . prix - plafond: - variations: - - si: - une de ces conditions: - - vélo . électrique - - vélo . pliant - - vélo . cargo - alors: - variations: - - si: vélo . neuf - alors: 100€ - - sinon: 150€ - - si: vélo . mécanique - alors: - variations: - - si: vélo . neuf - alors: 50 € - - sinon: 70 € - - sinon: 0€ - lien: https://www.grand-cubzaguais.fr/amenagement-durable/jusqua-150e-daide-a-lachat-dun-velo-pour-les-habitants-du-grand-cubzaguais-copy - -aides . bourges: - remplace: intercommunalité - titre: Bourges Plus - non applicable si: oui # Budget épuisé en 2022 - applicable si: localisation . epci = 'CA Bourges Plus' - valeur: 50% * vélo . prix - plafond: - # todo: vélo adapté - variations: - - si: vélo . cargo - alors: 500€ - - si: vélo . pliant - alors: 300€ - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: https://www.agglo-bourgesplus.fr/site/aide-achat-velo - -aides . tulle: - remplace: intercommunalité - titre: Tulle Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Tulle Agglo' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 1799€/mois - alors: 200€ - - si: revenu fiscal de référence <= 2999€/mois - alors: 150€ - - sinon: 100€ - lien: https://www.tulleagglo.fr/actualites/lagglo-a-velo/ - -# aides . corrèze: -# remplace: commune -# titre: Ville de Corrèze -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '19062' -# - vélo . électrique -# valeur: 100€ -# lien: https://www.mairie-de-correze.fr/app/download/16358677024/Bulletin+Municipal+Janvier+2022.pdf?t=1641302365#page=19 - -aides . montauban: - remplace: intercommunalité - titre: Grand-Montauban - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Grand Montauban' - - vélo . cargo - valeur: vélo . prix - plafond: 250€ - lien: https://www.montauban.com/au-quotidien/mobilite-et-stationnement/velos-et-pistes-cyclables - -aides . mont de marsan: - remplace: intercommunalité - titre: Mont de Marsan Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Mont de Marsan Agglomération' - - vélo . électrique - valeur: 250€ - lien: http://www.montdemarsan-agglo.fr/agglo/document?id=2682&id_attribute=48&usg=AOvVaw1SVEDZSqj0LRmmUyyGkc_n - -# aides . maremne adour cote-sud: -# remplace: intercommunalité -# titre: Maremne Adour Côte-Sud -# applicable si: localisation . epci = 'CC Maremne Adour Côte Sud' -# variations: -# - si: vélo . électrique -# alors: 200€ -# - si: vélo . mécanique -# alors: 100€ -# - si: vélo . motorisation -# alors: 100€ -# - sinon: 0€ -# plafond: 50% * vélo . prix -# lien: https://www.cc-macs.org/actualite/aide-a-lachat-dun-velo/ - -# aides . saint pierre du mont: -# remplace: commune -# titre: Ville de Saint-Pierre-du-Mont -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '40281' -# - vélo . électrique -# valeur: 150€ -# lien: https://saintpierredumont.fr/actualite/aide-a-l-achat-d-un-velo-a-assistance-electrique - -aides . plaine de l'ain: - remplace: intercommunalité - titre: Plaine de l'Ain - applicable si: localisation . epci = "CC de la Plaine de l'Ain" - variations: - - si: vélo . cargo - alors: 300€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 2000€ - alors: 200€ - - sinon: 0€ - lien: https://www.cc-plainedelain.fr/fr/les-subventions.html - -aides . divonne-les-bains: - remplace: commune - titre: Ville de Divonne-les-Bains - applicable si: localisation . code insee = '01143' - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . cargo - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: http://www.divonnelesbains.fr/prime_a_l_achat_de_velos_a_divonne_les_bains.html - -aides . dieulefit-bourdeaux: - remplace: intercommunalité - titre: Communauté de communes Dieulefit-Bourdeaux - applicable si: localisation . epci = 'CC Dieulefit-Bourdeaux' - variations: - - si: - toutes ces conditions: - - vélo . cargo électrique - - vélo . prix <= 4000€ - alors: 100€ - - si: - toutes ces conditions: - - vélo . cargo - - vélo . prix <= 4000€ - alors: 50€ - - si: - toutes ces conditions: - - vélo . mécanique - - vélo . prix <= 3000€ - alors: 50€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 3000€ - alors: 100€ - - si: vélo . motorisation - alors: 100€ - - sinon: 0€ - lien: https://www.ccdb26.fr/vie-quotidienne/mobilites/aide-velos/ - -aides . arche agglo: - remplace: intercommunalité - titre: ARCHE Agglo - description: | - Jusqu'à 150€ d'aide pour l'achat d'un vélo électrique auprès d'un - vélociste partenaire. - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Arche Agglo' - - une de ces conditions: - - vélo . cargo électrique - - toutes ces conditions: - - vélo . électrique - - vélo . prix <= 4000€ - valeur: 15% * vélo . prix - plafond: 150€ - lien: https://www.archeagglo.fr/vivre-ici/transport-mobilite/velos/ - -aides . annonay: - remplace: intercommunalité - titre: Annonay Rhône Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Annonay Rhône Agglo' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 300€ - - sinon: 150€ - lien: https://annonayrhoneagglo.fr/article2059.html - -aides . bassin d'aubenas: - remplace: intercommunalité - titre: Bassin d’Aubenas - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Bassin d'Aubenas' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - valeur: 10% * vélo . prix - plafond: 200€ - lien: https://www.bassin-aubenas.fr/actualites/aide-a-lachat-dun-velo-a-assistance-electrique/ - -aides . lorient: - remplace: intercommunalité - titre: Lorient Agglomération - applicable si: localisation . epci = 'CA Lorient Agglomération' - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 250€ - - si: vélo . électrique - alors: 200€ - - si: vélo . pliant - alors: 100€ - - sinon: 0€ - lien: https://www.lorient-agglo.bzh/services/deplacements/aide-achat-velo/ - -# TODO: remorque vélo -aides . lanester: - remplace: commune - titre: Ville de Lanester - applicable si: localisation . code insee = '56098' - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . électrique ou mécanique - alors: 200€ - - sinon: 0€ - - sinon: - variations: - - si: vélo . cargo - alors: 150€ - - si: vélo . électrique ou mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.lanester.bzh/services/demt-services-en-ligne/particuliers/aide-achat-velo/ - -aides . la roche sur yon: - remplace: intercommunalité - titre: La Roche-sur-Yon Agglomération - applicable si: localisation . epci = 'CA La Roche sur Yon - Agglomération' - variations: - - si: vélo . cargo - alors: - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . neuf - alors: 400€ - - sinon: 200€ - - si: - toutes ces conditions: - - vélo . électrique - - vélo . neuf - - vélo . prix <= 1500€ - alors: - variations: - - si: entreprise adherente au pdie - alors: 200€ - - sinon: 100€ - - sinon: 0€ - lien: https://www.larochesuryon.fr/services-infos-pratiques/transports-et-deplacements-durables/velos/ - -aides . la roche sur yon . entreprise adherente au pdie: - question: Êtes-vous salarié d’une entreprise adhérente au Plan de déplacement inter-entreprises (PDIE) ? - type: booléen - par défaut: non - -aides . cholet: - remplace: intercommunalité - titre: Agglomération du Choletais - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Agglomération du Choletais' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 250€ - lien: https://www.cholet.fr/dossiers/dossier_5364_aide+velo+assistance+electrique.html - -aides . saumur val de loire: - remplace: intercommunalité - titre: Saumur Val de Loire agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Saumur Val de Loire' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.saumurvaldeloire.fr/images/VAE_REGLEMENT_AIDE_ACHAT_2023_2.pdf - -aides . laval: - remplace: intercommunalité - titre: Laval Agglo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Laval Agglomération' - - vélo . cargo électrique - valeur: 300€ - lien: https://www.agglo-laval.fr/utile-au-quotidien/transports-et-mobilites/lagglo-a-velo/prime-a-lachat-dun-velo-cargo - -# TODO : vérifier si l'aide est réactivée -# aides . ernée: -# remplace: intercommunalité -# titre: L’Ernée Communauté de communes -# applicable si: -# toutes ces conditions: -# - localisation . epci = "CC de l'Ernée" -# - vélo . électrique -# valeur: 10% * vélo . prix -# plafond: 100€ -# lien: https://www.lernee.fr/au-quotidien/mobilite/subvention-velo-electrique/ - -# aides . bocage mayennais: -# remplace: intercommunalité -# titre: Bocage Mayennais Communauté de communes -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC du Bocage Mayennais' -# - vélo . électrique -# valeur: 100€ -# lien: https://www.bocage-mayennais.fr/bocage-mayennais_au-quotidien_transport-et-mobilite_aide-a-l-achat-de-velo-a-assistance-electrique-vae.phtml - -aides . brive: - remplace: intercommunalité - titre: Agglo de Brive - description: | - Aide sous forme d’un Chèque Vélo à demander avant d’acheter le vélo - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Bassin de Brive' - - vélo . électrique - valeur: 30% * vélo . prix - plafond: 200€ - lien: http://www.donzenac.correze.net/data/uploads/actualites/aide-velos-elec.pdf - -aides . ville de talant: - remplace: commune - titre: Ville de Talant - applicable si: - toutes ces conditions: - - localisation . code insee = '21617' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 100€ - lien: https://talant.fr/pratique/primes-municipales - -aides . pays des achards: - remplace: intercommunalité - titre: Pays des Achards - applicable si: localisation . epci = 'CC du Pays des Achards' - variations: - - si: vélo . cargo - alors: - valeur: 25% * vélo . prix - plafond: 300€ - - si: - une de ces conditions: - - vélo . électrique - - vélo . motorisation - alors: - valeur: 25% * vélo . prix - plafond: 200€ - - si: vélo . mécanique - alors: - valeur: 25% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.cc-paysdesachards.fr/amenagement/mobilites/351-bonus-velo.html - -aides . hem: - remplace: commune - titre: Ville de Hem - applicable si: - toutes ces conditions: - - localisation . code insee = '59299' - - vélo . électrique - valeur: 40% * vélo . prix - plafond: 300 € - lien: https://www.ville-hem.fr/cadre-de-vie/environnement/prime-a-lachat-dun-velo-ou-dune-trottinette/ - -aides . liévin: - remplace: commune - titre: Ville de Liévin - applicable si: - toutes ces conditions: - - localisation . code insee = '62510' - - vélo . électrique - valeur: 250€ - plafond: vélo . prix - lien: https://www.lievin.fr/velo-ou-trottinette - -aides . béthune bruay: - remplace: intercommunalité - titre: Pass'Mobil'Agglo - applicable si: localisation . epci = 'CA de Béthune-Bruay, Artois-Lys Romane' - variations: - - si: vélo . cargo - alors: 400 € - - si: vélo . électrique - alors: 300 € - - si: vélo . mécanique - alors: - variations: - - si: vélo . neuf - alors: 60€ - - sinon: 50€ - - sinon: 0€ - plafond: vélo . prix - lien: https://www.bethunebruay.fr/fr/passmobilagglo - -aides . baisieux: - remplace: commune - titre: Ville de Baisieux - description: | - Il est nécessaire de faire la demande auprès de la maire de Baisieux avant - l’achat. - applicable si: localisation . code insee = '59044' - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.mairie-baisieux.fr/aide-velo - -aides . billy-berclau: - remplace: commune - titre: Ville de Billy-Berclau - applicable si: localisation . code insee = '62132' - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 100€ - - si: vélo . mécanique - alors: 50€ - - sinon: 0€ - lien: https://www.billy-berclau.fr/blog/mairie/aide-municipale-pour-lachat-dun-velo/ - -aides . bonningues-lès-calais: - remplace: commune - titre: Ville de Bonningues-lès-Calais - applicable si: localisation . code insee = '62156' - variations: - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: 200€ - - sinon: 0€ - plafond: 50% * vélo . prix - lien: http://www.bonningues-les-calais.fr/more?type=news&id=255 - -aides . loos-en-gohelle: - remplace: commune - titre: Ville de Loos-en-Gohelle - applicable si: localisation . code insee = '62528' - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: - valeur: 30% * vélo . prix - plafond: 150 € - - si: vélo . mécanique - alors: - valeur: 50% * vélo . prix - plafond: 100 € - - sinon: 0€ - lien: https://loos-en-gohelle.fr/wp-content/uploads/2023/04/Dossier-sub.-2023-1.pdf - -# aides . pévèle carembault: -# remplace: intercommunalité -# titre: Pévèle Carembault -# applicable si: localisation . epci = 'CC Pévèle-Carembault' -# variations: -# - si: vélo . électrique -# alors: 200 € -# - si: vélo . motorisation -# alors: 100 € -# - sinon: 0 € -# lien: https://demarches.pevelecarembault.fr/mobilite/aide-lachat-dun-velo-electrique-2023 - -aides . gruson: - remplace: commune - titre: Ville de Gruson - applicable si: - toutes ces conditions: - - localisation . code insee = '59275' - - vélo . électrique - valeur: vélo . prix - plafond: - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: 200€ - - sinon: 100€ - lien: https://www.mairie-gruson.fr/environnement/developpement-durable/aides-a-lachat-dun-velo-electrique - -# aides . linselles: -# remplace: commune -# titre: Ville de Linselles -# applicable si: localisation . code insee = '59352' -# valeur: 20% * vélo . prix -# plafond: -# variations: -# - si: vélo . électrique -# alors: 80€ -# - si: vélo . mécanique -# alors: 40€ -# - sinon: 0€ -# lien: https://www.ville-linselles.com/2023/03/01/21822/ - -aides . iwuy: - remplace: commune - titre: Ville d’Iwuy - applicable si: - toutes ces conditions: - - localisation . code insee = '59322' - - vélo . électrique - valeur: 100€ - lien: https://www.iwuy.fr/page.php?id=6#37 - -aides . denain: - remplace: commune - titre: Ville de Denain - applicable si: - toutes ces conditions: - - localisation . code insee = '59172' - - vélo . électrique ou mécanique - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . mécanique - alors: - variations: - - si: vélo . neuf - alors: 300€ - - sinon: 150€ - - sinon: - variations: - - si: vélo . neuf - alors: 150€ - - sinon: 75€ - lien: https://www.ville-denain.fr/content/view/full/7159 - -aides . feignies: - remplace: commune - titre: Ville de Feignies - applicable si: - toutes ces conditions: - - localisation . code insee = '59225' - - vélo . électrique ou mécanique - valeur: 150€ - plafond: vélo . prix - lien: http://www.ville-feignies.fr/prime-velo/ - -aides . wambrechies: - remplace: commune - titre: Ville de Wambrechies - applicable si: localisation . code insee = '59636' - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 200€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.wambrechies.fr/actualites/prime-velo-jusqua-250eu-daide - -aides . fourmies: - remplace: commune - titre: Ville de Fourmies - applicable si: - toutes ces conditions: - - localisation . code insee = '59249' - - vélo . électrique - valeur: 300€ - plafond: vélo . prix - lien: https://www.fourmies.fr/pages/article-MOBILITE-prime-velo-electrique-27032019.html - -aides . lesquin: - remplace: commune - titre: Ville de Lesquin - applicable si: localisation . code insee = '59343' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 150€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://www.ville-lesquin.fr/lesquin/subventions-municipales - -# aides . marcq-en-baroeul: -# remplace: commune -# titre: Ville de Marcq-en-Barœul -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '59378' -# - vélo . électrique -# variations: -# - si: vélo . neuf -# alors: -# valeur: 25% * vélo . prix -# plafond: 300€ -# - sinon: -# valeur: 40% * vélo . prix -# plafond: 350€ -# lien: https://www.marcq-en-baroeul.org/mon-quotidien/transition-ecologique/aides-primes/aide-a-l-achat-d-un-velo - -aides . lezenne: - remplace: commune - titre: Ville de Lezenne - applicable si: localisation . code insee = '59346' - variations: - - si: demandeur . bénéficiaire de minima sociaux - alors: - valeur: 80% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 900€ - - si: vélo . électrique - alors: 600€ - - si: vélo . mécanique - alors: 300€ - - sinon: 0€ - - sinon: - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 450€ - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: http://www.lezennes.fr/index.php?id=167 - -aides . dunkerque: - remplace: intercommunalité - titre: Communauté urbaine de Dunkerque - applicable si: - toutes ces conditions: - - localisation . epci = 'CU de Dunkerque' - - vélo . électrique ou mécanique - valeur: vélo . prix - plafond: - variations: - - si: demandeur . bénéficiaire de minima sociaux - alors: 150€ - - sinon: 80€ - lien: https://www.communaute-urbaine-dunkerque.fr/aide-a-lacquisition-dun-velo - -aides . flandre intérieure: - remplace: intercommunalité - titre: Communauté de Communes de Flandre Intérieure - applicable si: localisation . epci = 'CC de Flandre Intérieure' - valeur: 20% * vélo . prix - plafond: - somme: - - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 100€ - - si: vélo . motorisation - alors: 100€ - - sinon: 0€ - - variations: - - si: vélo . cargo - alors: 100€ - - si: vélo . pliant - alors: 50€ - - sinon: 0€ - lien: https://cc-flandreinterieure.fr/fr/nw/574368/863449/renouvellement-de-laide-velo - -aides . grande-synthe: - remplace: commune - titre: Ville de Grande Synthe - applicable si: localisation . code insee = '59271' - variations: - - si: vélo . électrique - alors: 20% * vélo . prix - - si: vélo . mécanique - alors: 50% * vélo . prix - - sinon: 0€ - plafond: 200€ - lien: https://www.ville-grande-synthe.fr/ma-ville-verte/aide-a-lachat-de-velo/ - -aides . valenciennes: - remplace: intercommunalité - titre: Valenciennes Métropole - applicable si: localisation . epci = 'CA Valenciennes Métropole' - valeur: 30% * vélo . prix - plafond: - variations: - - si: vélo . neuf - alors: - variations: - - si: vélo . cargo - alors: 600€ - - si: vélo . électrique - alors: 400€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - - si: vélo . occasion - alors: - variations: - - si: vélo . cargo - alors: 300€ - - si: vélo . électrique - alors: 200€ - - si: vélo . mécanique - alors: 75€ - - sinon: 0€ - - sinon: 0€ - lien: https://www.valenciennes-metropole.fr/competences/amenagement-du-territoire/mode-doux-mobilite/ - -aides . cambrai: - remplace: intercommunalité - titre: Communauté d'agglomération de Cambrai - applicable si: localisation . epci = 'CA de Cambrai' - valeur: 30% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: https://www.agglo-cambrai.fr/pratique/actualites/2022-aout/1390-bourse-mobilite - -aides . thiais: - remplace: commune - titre: Ville de Thiais - applicable si: - toutes ces conditions: - - localisation . code insee = '94073' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 200€ - lien: https://www.ville-thiais.fr/subvention-pour-lachat-dun-velo-electrique/ - -aides . nanterre: - remplace: commune - titre: Ville de Nanterre - applicable si: localisation . code insee = '92050' - variations: - - si: vélo . mécanique simple - alors: - variations: - - si: revenu fiscal de référence <= 8676 €/an - alors: - valeur: 80% * vélo . prix - plafond: 400€ - - si: revenu fiscal de référence <= 21552 €/an - alors: - valeur: 60% * vélo . prix - plafond: 300€ - - si: revenu fiscal de référence <= 31512 €/an - alors: - valeur: 35% * vélo . prix - plafond: 210€ - - sinon: 0€ - - si: vélo . motorisation - alors: - variations: - - si: revenu fiscal de référence <= 8676 €/an - alors: - valeur: 60% * vélo . prix - plafond: 300€ - - si: revenu fiscal de référence <= 21552 €/an - alors: - valeur: 50% * vélo . prix - plafond: 280€ - - si: revenu fiscal de référence <= 31512 €/an - alors: - valeur: 40% * vélo . prix - plafond: 250€ - - sinon: 0€ - lien: https://www.nanterre.fr/1687-velo-les-dispositifs-d-aide.htm - -aides . puteaux: - remplace: commune - titre: Ville de Puteaux - applicable si: - toutes ces conditions: - - localisation . code insee = '92062' - - une de ces conditions: - - vélo . mécanique - - vélo . motorisation - - vélo . électrique - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 100€ - - sinon: 300€ - lien: https://www.puteaux.fr/Cadre-de-vie/Mobilites-durables - -aides . genneviliers: - remplace: commune - titre: Ville de Genneviliers - applicable si: - toutes ces conditions: - - localisation . code insee = '92036' - - vélo . mécanique - valeur: 100€ - lien: https://www.ville-gennevilliers.fr/671/cadre-de-vie/acces-transports-stationnement/aides-a-l-achat-d-un-velo.htm - -aides . drancy: - remplace: commune - titre: Ville de Drancy - applicable si: - toutes ces conditions: - - localisation . code insee = '93029' - - vélo . électrique - variations: - - si: ménage imposable - alors: 200€ - - sinon: 100€ - lien: https://www.drancy.fr/annuaire-des-demarches/transport-et-mobilite/subvention-pour-l-achat-d-un-velo-electrique-1167.html - -aides . rives de moselle: - remplace: intercommunalité - titre: Rives de Moselle - applicable si: localisation . epci = 'CC Rives de Moselle' - valeur: 25% * vélo . prix - plafond: - variations: - - si: - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - alors: - variations: - - si: vélo . fabriqué en france - alors: 300€ - - sinon: 200€ - - si: vélo . mécanique simple - alors: - variations: - - si: vélo . fabriqué en france - alors: 150€ - - sinon: 100€ - - sinon: 0€ - lien: https://www.rivesdemoselle.fr/mobilites/#tousavelo - -aides . saint-avold: - remplace: intercommunalité - titre: Communauté de Communes Saint-Avold Synergie - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Saint-Avold Synergie' - - vélo . électrique - variations: - - si: vélo acheté localement - alors: 150€ - - sinon: 50€ - lien: https://casas57.fr/nos-competences/ma-mobilite/velo/aide-a-lachat-dun-velo/ - avec: - vélo acheté localement: - question: Le vélo est-il acheté sur le territoire de l'intercommune Saint-Avold ? - type: booléen - par défaut: non - -aides . montigny les metz: - remplace: commune - titre: Ville de Montigny lès Metz - applicable si: - toutes ces conditions: - - localisation . code insee = '57480' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - - vélo . pliant - valeur: 30% * vélo . prix - plafond: 150€ - lien: http://www.montigny-les-metz.fr/velos-electriques-et-audit-energetique - -aides . val d'yerres val de seine: - remplace: intercommunalité - titre: Val d'Yerres Val de Seine - applicable si: localisation . epci = "CA Val d'Yerres Val de Seine" - variations: - - si: vélo . cargo - alors: 200€ - - si: vélo . électrique - alors: 100€ - - si: vélo . pliant - alors: 100€ - - sinon: 0€ - lien: https://www.vyvs.fr/lagglo-vous-aide-a-acheter-un-velo/ - -aides . mennecy: - remplace: commune - titre: Ville de Mennecy - applicable si: - toutes ces conditions: - - localisation . code insee = '91386' - - vélo . mécanique - variations: - - si: revenu fiscal de référence <= 761€/mois - alors: 50€ - - sinon: 30€ - lien: https://www.mennecy.fr/vie-pratique/environnement/mobilites-douces/subvention-velo/ - -aides . betheny: - remplace: commune - titre: Ville de Bétheny - applicable si: - toutes ces conditions: - - localisation . code insee = '51055' - - vélo . électrique - valeur: 100€ - lien: https://ville-betheny.fr/cadre-de-vie/subvention-velo-a-assistance-electrique-vae/article/subvention-velo-a-assistance-electrique-vae - -aides . brest: - remplace: intercommunalité - titre: Brest Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'Brest Métropole' - - vélo . électrique - variations: - - si: vélo . cargo électrique - alors: - variations: - - si: revenu fiscal de référence <= 6538 €/an - alors: 500 € - - si: revenu fiscal de référence <= 14089 €/an - alors: 300 € - - si: revenu fiscal de référence <= 22983 €/an - alors: 200 € - - sinon: 0 € - - sinon: - variations: - - si: revenu fiscal de référence <= 6538 €/an - alors: - valeur: 30% * vélo . prix - plafond: 300 € - - si: revenu fiscal de référence <= 14089 €/an - alors: - valeur: 20% * vélo . prix - plafond: 150 € - - sinon: 0 € - lien: https://brest.fr/gerer-mon-quotidien/demarches/demander-la-subvention-velo-assistance-electrique - -aides . relecq-kerhuon: - remplace: commune - titre: Ville du Relecq-Kerhuon - applicable si: - toutes ces conditions: - - localisation . code insee = '29235' - - vélo . électrique ou mécanique - variations: - - si: vélo . cargo - alors: - variations: - - si: revenu fiscal de référence <= 1012 €/mois - alors: 300 € - - si: revenu fiscal de référence <= 1291 €/mois - alors: 250 € - - si: revenu fiscal de référence <= 1544 €/mois - alors: 200 € - - sinon: 150 € - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 1012 €/mois - alors: 250 € - - si: revenu fiscal de référence <= 1291 €/mois - alors: 200 € - - si: revenu fiscal de référence <= 1544 €/mois - alors: 150 € - - sinon: 100 € - - si: vélo . mécanique - alors: - variations: - - si: revenu fiscal de référence <= 1012 €/mois - alors: 100 € - - si: revenu fiscal de référence <= 1544 €/mois - alors: 75 € - - sinon: 50 € - lien: https://www.lerelecqkerhuon.bzh/environnement-et-cadre-de-vie/se-deplacer/a-velo/ - -aides . plougastel-daoulas: - remplace: commune - titre: Ville de Plougastel-Daoulas - applicable si: - toutes ces conditions: - - localisation . code insee = '29189' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200€ - - sinon: 150€ - lien: https://ville-plougastel.bzh/mon-quotidien/developpement-durable/dispositif-daides/ - -aides . pays d'iroise: - remplace: intercommunalité - titre: Pays d'Iroise - applicable si: - toutes ces conditions: - - localisation . epci = "CC du Pays d'Iroise" - - revenu fiscal de référence <= première tranche IR - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . motorisation - alors: 100€ - - sinon: 0€ - lien: https://www.pays-iroise.bzh/mon-quotidien/se-deplacer-2/a-velo/ - -aides . haute-cornouaille: - remplace: intercommunalité - titre: Haute Cornouaille Communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de Haute Cornouaille' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200 € - lien: https://haute-cornouaille.bzh/vivre-sortir-et-se-divertir-en-haute-cornouaille/aide-achat-velo-a-assistance-electrique/ - -aides . gouesnou: - remplace: commune - titre: Ville de Gouesnou - applicable si: - toutes ces conditions: - - localisation . code insee = '29061' - - vélo . électrique - valeur: 100€ - lien: https://www.gouesnou.bzh/actualites/prime-a-lachat-dun-velo-a-assistance-electrique/ - -aides . saint-pol-de-léon: - remplace: commune - titre: Ville de Saint-Pol-De-Léon - applicable si: - toutes ces conditions: - - localisation . code insee = '29259' - - vélo . électrique - valeur: 100€ - lien: https://www.saintpoldeleon.bzh/la-ville-vous-aide-pour-lachat-dun-velo-a-assistance-electrique/ - -aides . baie du mont saint-michel: - remplace: intercommunalité - titre: Communauté de communes du Pays de Dol et de la Baie du Mont Saint-Michel - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays de Dol et de la Baie du Mont Saint-Michel' - - revenu fiscal de référence <= première tranche IR - - une de ces conditions: - - vélo . électrique - - vélo . motorisation - valeur: 100€ - lien: https://www.ccdol-baiemsm.bzh/favoriser-lusage-du-velo/ - -aides . montfort: - remplace: intercommunalité - titre: Montfort Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Montfort Communauté' - - vélo . électrique ou mécanique - variations: - - si: - toutes ces conditions: - - vélo . électrique - - vélo . neuf - - revenu fiscal de référence <= première tranche IR - alors: 200 € - - si: - toutes ces conditions: - - vélo . électrique - - vélo . neuf - alors: 100 € - - si: - toutes ces conditions: - - vélo . mécanique - - revenu fiscal de référence <= première tranche IR - alors: 100 € - - sinon: 0 € - lien: https://www.montfortcommunaute.bzh/mes-demarches/mobilite-deplacements/aide-a-lachat-dun-vae/ - -aides . liffré-cormier: - remplace: intercommunalité - titre: Liffré-Cormier Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Liffré-Cormier Communauté' - - une de ces conditions: - - vélo . électrique - - vélo . pliant - - vélo . cargo - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200€ - - sinon: 100€ - plafond: 40% * vélo . prix - lien: https://www.liffre-cormier.fr/vivre/transport-mobilite-2/aidevelo/ - -aides . Vallons de Haute Bretagne: - remplace: intercommunalité - titre: Vallons de Haute Bretagne Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Vallons de Haute-Bretagne Communauté' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200€ - - sinon: 100€ - lien: https://www.vallons-de-haute-bretagne-communaute.fr/les-velos-a-assistance-electrique/ - -aides . guichen: - remplace: commune - titre: Ville de Guichen - applicable si: - toutes ces conditions: - - localisation . code insee = '35126' - - vélo . électrique - valeur: 100€ - lien: https://www.guichenpontrean.fr/aide-a-lacquisition-dun-velo-a-assistance-electrique/ - -aides . cote d'emeraude: - remplace: intercommunalité - titre: Communauté de communes Côte d’Émeraude - applicable si: - toutes ces conditions: - - localisation . epci = "CC Côte d'Emeraude" - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 20000€/an - valeur: 100€ - lien: https://www.cote-emeraude.fr/laide-a-lachat-dun-velo-a-assitance-electrique/ - -aides . saint-brieuc armor: - remplace: intercommunalité - titre: Saint-Brieuc Armor Agglomération - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Saint-Brieuc Armor Agglomération' - - une de ces conditions: - - vélo . électrique - - vélo . cargo - valeur: 25% * vélo . prix - plafond: 150€ - lien: https://www.saintbrieuc-armor-agglo.bzh/vivre-et-habiter/mes-deplacements/je-circule-a-velo - -aides . lannion-trégor: - remplace: intercommunalité - titre: Lannion-Trégor Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Lannion-Trégor Communauté' - - vélo . électrique - valeur: 10% * vélo . prix - plafond: 100€ - lien: https://www.lannion-tregor.com/fr/deplacements/les-mobilites-electriques/les-aides-a-l-acquisition.html - -aides . perros-guirec: - remplace: commune - titre: Ville de Perros-Guirec - applicable si: - toutes ces conditions: - - localisation . code insee = '22168' - - vélo . électrique - valeur: 10% * vélo . prix - plafond: 100€ - lien: http://ville.perros-guirec.com/ma-ville/vie-quotidienne/les-transports/en-velo/aide-a-l-acquisition-d-un-velo-a-assistance-electrique.html - -aides . trébeurden: - remplace: commune - titre: Ville de Trébeurden - applicable si: - toutes ces conditions: - - localisation . code insee = '22343' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200€ - lien: https://www.trebeurden.fr/actualite/subvention-pour-lachat-dun-velo-a-assistance-electrique/ - -aides . morlaix: - remplace: intercommunalité - titre: Morlaix Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Morlaix Communauté' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 13489 €/an - alors: 500 € - - si: revenu fiscal de référence <= 20234 €/an - alors: 200 € - - sinon: 100 € - plafond: 40% * vélo . prix - lien: https://www.morlaix-communaute.bzh/mon-quotidien/les-deplacements/a-velo/demander-la-prime-a-lacquisition-dun-velo-a-assistance-electrique - -aides . poher: - remplace: intercommunalité - titre: Poher Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Poher Communauté' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200€ - lien: https://www.poher.bzh/accueil_poher/les_services/mobilites/covoiturage - -aides . crozon: - remplace: intercommunalité - applicable si: localisation . epci = "CC Presqu'île de Crozon-Aulne maritime" - variations: - - si: vélo . électrique - alors: vélo . prix - - si: - une de ces conditions: - - vélo . cargo - - vélo . mécanique - alors: 50% * vélo . prix - - sinon: 0€ - plafond: 100€ - lien: https://www.comcom-crozon.com/amenagement-et-cadre-de-vie/transports-deplacements-randonnees/deplacements-doux/ - -aides . saint-jacques de la lande: - remplace: commune - titre: Saint-Jacques de la Lande - applicable si: localisation . code insee = '35281' - valeur: - variations: - - si: vélo . occasion - alors: 50€ - - si: vélo . cargo - alors: 100€ - - si: vélo . électrique - alors: 100€ - - si: vélo . mécanique - alors: 75€ - - sinon: 0€ - lien: https://www.st-jacques.fr/infos-pratiques/acces-et-transport/subvention-velo/ - -aides . quesnoy-sur-deûle: - remplace: commune - titre: Ville de Quesnoy-sur-Deûle - applicable si: - toutes ces conditions: - - localisation . code insee = '59482' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200€ - lien: http://www.quesnoysurdeule.fr/fr/actualite/202950 - -aides . sainghin en melantois: - remplace: commune - titre: Ville de Sainghin en Melantois - applicable si: localisation . code insee = '59523' - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 350€ - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: 150€ - - sinon: 0€ - lien: https://www.sainghin-en-melantois.fr/aide-lachat-dun-velo - -aides . pays de mormal: - remplace: intercommunalité - titre: Pays de Mormal - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays de Mormal' - - vélo . électrique - variations: - - si: demandeur . bénéficiaire de minima sociaux - alors: - valeur: 50% * vélo . prix - plafond: 600€ - - sinon: - valeur: 30% * vélo . prix - plafond: 360€ - lien: https://www.cc-paysdemormal.fr/environnement-amenagement-html/aide-velo-trottinette-electrique/documents-velo-electrique/ - -# aides . arras: -# remplace: intercommunalité -# titre: Communauté Urbaine d’Arras -# applicable si: -# toutes ces conditions: -# - localisation . epci = "CU d'Arras" -# - vélo . électrique -# valeur: 30% * vélo . prix -# plafond: 300€ -# lien: https://www.cu-arras.fr/a-votre-service/transport-et-mobilite-douce/ - -aides . grand calais: - remplace: intercommunalité - titre: Grand Calais Terres et Mers - SITAC - applicable si: - toutes ces conditions: - - une de ces conditions: - - localisation . epci = 'CA Grand Calais Terres et Mers' - - localisation . code insee = '62397' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: 250€ - - sinon: 100€ - lien: https://www.sitac-calais-opale-bus.fr/article.php?id=6637 - -aides . pays de lumbres: - remplace: intercommunalité - titre: Pays de Lumbres - applicable si: localisation . epci = 'CC du Pays de Lumbres' - valeur: 20% * vélo . prix - #TODO vélo adapté - plafond: - variations: - - si: vélo . électrique - alors: 250€ - - si: vélo . mécanique - alors: 100€ - - sinon: 0€ - lien: https://cc-paysdelumbres.fr/fr/vivre-et-habiter/mobilites-durables/aides-a-l-achat-d-un-velo - -aides . campagnes de l'artois: - remplace: intercommunalité - titre: Campagnes de l’Artois - applicable si: localisation . epci = "CC des Campagnes de l'Artois" - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 240€ - - si: vélo . motorisation - alors: 240€ - - si: vélo . mécanique - alors: 80€ - lien: https://campagnesartois.fr/vivre/mobilite/48534-2/ - -aides . amboise: - remplace: commune - titre: Ville d’Amboise - applicable si: - toutes ces conditions: - - localisation . code insee = '37003' - - vélo . électrique - produit: - - variations: - - si: revenu fiscal de référence <= 500€/mois - alors: 50% - - si: revenu fiscal de référence <= 800€/mois - alors: 40% - - si: revenu fiscal de référence <= 1100€/mois - alors: 30% - - sinon: 0% - - valeur: vélo . prix - plafond: 1200€ - plancher: 200€ - lien: https://www.ville-amboise.fr/57-1229/fiche/demande-d-aide-a-l-achat-d-un-velo-electrique.htm - -aides . vexin normand: - remplace: intercommunalité - titre: Vexin Normand - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Vexin Normand' - - vélo . électrique - valeur: 150€ - lien: https://www.cdc-vexin-normand.fr/transport/transport-a-la-demande/prime-achat-velo-assistance-electrique.html - -aides . val-de-reuil: - remplace: commune - titre: Ville de Val-de-Reuil - applicable si: localisation . code insee = '27701' - valeur: 50% * vélo . prix - plafond: 200€ - lien: https://www.valdereuil.fr/services-municipaux/demarches-en-ligne/bonus-tous-a-velo - -aides . moselle et madon: - remplace: intercommunalité - titre: Communauté de communes Moselle et Madon - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Moselle et Madon' - - vélo . électrique ou mécanique - valeur: 25% * vélo . prix - plafond: 200€ - lien: https://www.cc-mosellemadon.fr/fr/aide-a-l-achat-de-velo.html - -aides . boulonnais: - remplace: intercommunalité - titre: Agglo Boulonnais - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Boulonnais' - - vélo . électrique - valeur: 30% * vélo . prix - plafond: 200€ - lien: https://www.agglo-boulonnais.fr/a-votre-service/mobilite/a-velo-dans-lagglo - -aides . osartis-marquion: - remplace: intercommunalité - titre: Communauté de communes Osartis-Marquion - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Osartis Marquion' - - vélo . électrique - valeur: 150 € - lien: https://www.cc-osartis.com/obtenez-une-aide-pour-lachat-dun-velo-assistance-electrique - -aides . pontivy: - remplace: intercommunalité - titre: Pontivy Communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Pontivy Communauté' - - vélo . électrique - - revenu fiscal de référence <= 25000€/an - valeur: vélo . prix - plafond: 200€ - lien: https://www.pontivy-communaute.bzh/actualites/aide-a-lacquisition-dun-velo-a-assistante-electrique-2023/ - -aides . chateauroux: - remplace: intercommunalité - titre: Châteauroux Métropole - applicable si: - toutes ces conditions: - - localisation . epci = 'CA Châteauroux Métropole' - - vélo . électrique - valeur: 100€ - lien: https://www.chateauroux-metropole.fr/vie-pratique-les-services/mobilite-et-stationnements/velo - -aides . auray quiberon: - remplace: intercommunalité - titre: Auray Quiberon Terre Atlantique - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Auray Quiberon Terre Atlantique' - - revenu fiscal de référence <= 20000 €/an - valeur: 25% * vélo . prix - plafond: - variations: - - si: vélo . cargo électrique - alors: 500 € - - si: vélo . électrique - alors: 300 € - - si: vélo . cargo - alors: 300 € - - si: vélo . mécanique - alors: 80 € - - si: vélo . motorisation - alors: 100 € - - sinon: 0 € - lien: https://www.auray-quiberon.fr/a-votre-service/mobilites/aide-a-lacquisition-d-un-velo-a-assistance-electrique-1336.html - -aides . grand villeneuvois: - remplace: intercommunalité - titre: Grand Villeneuvois - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Grand Villeneuvois' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= première tranche IR - alors: 200€ - - sinon: 100€ - lien: https://www.grand-villeneuvois.fr/aide-a-l-achat-d-un-velo-a-assistance-electrique-335.html - -aides . oise: - remplace: département - titre: Département de l'Oise - applicable si: localisation . département = '60' - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 300€ - - si: vélo . mécanique - alors: 150€ - - si: vélo . motorisation - alors: 150€ - - sinon: 0€ - lien: https://www.oise.fr/actions/environnement/plan-oxygene-60/bouquet-oxygene-60/aide-a-lacquisition-dun-velo-classique-ou-electrique - -aides . beauvais: - remplace: intercommunalité - titre: Agglo du Beauvaisis - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Beauvaisis' - - vélo . électrique ou mécanique - valeur: 25% * vélo . prix - plafond: 100€ - lien: http://www.beauvais.fr/velo/ - -# aides . plaine d'estrées: -# remplace: intercommunalité -# titre: Plaine d'Estrées Communauté de communes -# applicable si: localisation . epci = "CC de la Plaine d'Estrées" -# valeur: 25% * vélo . prix -# plafond: -# variations: -# - si: vélo . cargo -# alors: 400€ -# - si: vélo . électrique -# alors: 250€ -# - sinon: 0€ -# lien: https://www.ccplaine-estrees.com/actualite/renouvellement-de-laide-a-lachat-dun-velo/ - -# Épuisé pour 2023, edit: relancé en octobre -aides . grand angouleme: - remplace: intercommunalité - titre: Grand Angoulême - applicable si: - toutes ces conditions: - - localisation . epci = 'CA du Grand Angoulême' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 2000 €/mois - variations: - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 1000 €/mois - alors: - valeur: 50% * vélo . prix - plafond: 400 € - - si: revenu fiscal de référence <= 1500 €/mois - alors: - valeur: 30% * vélo . prix - plafond: 300 € - - sinon: - valeur: 20% * vélo . prix - plafond: 200 € - - sinon: - valeur: 50% * vélo . prix - plafond: 150 € - lien: https://www.grandangouleme.fr/tous-a-velo/ - -aides . massif du vercors: - remplace: intercommunalité - titre: Massif du Vercors communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Massif du Vercors' - - revenu fiscal de référence <= 21805 €/an - variations: - - si: vélo . cargo - alors: 400 € - - si: vélo . électrique - alors: - variations: - - si: vélo . neuf - alors: 200 € - - sinon: 300 € - - sinon: 0 € - lien: https://www.vercors.org/fr/vie-quotidienne/se-deplacer/a-velo/ - -aides . carmausin-ségala: - remplace: intercommunalité - titre: Communauté de communes Carmausin-Ségala - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Carmausin-Ségala' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: - valeur: 150 € - plafond: 20 % * vélo . prix - - sinon: - valeur: 100 € - plafond: 20 % * vélo . prix - lien: https://www.carmausin-segala.fr/sites/carmausin-segala.fr/www.carmausin-segala.fr/files/pdf/3cs_-_dossier_aide_a_lachat_velo.pdf - -# aides . val de drôme en biovalée: -# remplace: intercommunalité -# titre: Val de Drôme en Biovallée -# applicable si: -# toutes ces conditions: -# - localisation . epci = 'CC du Val de Drôme en Biovallée' -# - vélo . électrique ou mécanique -# variations: -# - si: vélo . électrique -# alors: -# variations: -# - si: revenu fiscal de référence <= première tranche IR -# alors: 200 € -# - si: revenu fiscal de référence <= 27478 €/an -# alors: 100 € -# - sinon: 0 -# - sinon: -# variations: -# - si: revenu fiscal de référence <= première tranche IR -# alors: 50 € -# - sinon: 0 -# lien: https://www.valdedrome.com/actualite/9707/5417-le-bonus-velo-est-de-retour.htm - -aides . porte du hainaut: - remplace: intercommunalité - titre: La Porte du Hainaut - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de la Porte du Hainaut' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: - variations: - - si: vélo . neuf - alors: 300 € - - sinon: 150 € - - sinon: - variations: - - si: vélo . neuf - alors: 150 € - - sinon: 75 € - plafond: 50% * vélo . prix - lien: https://www.agglo-porteduhainaut.fr/actualites/une-prime-pour-vous-accompagner-vers-les-mobilites-decarbonees - -aides . lisieux: - remplace: commune - titre: Ville de Lisieux - applicable si: localisation . code insee = '14366' - variations: - - si: vélo . cargo - alors: 500 € - - si: vélo . électrique - alors: 300 € - - sinon: 0 € - plafond: 50% * vélo . prix - lien: https://www.ville-lisieux.fr/fr/onw-Le-plan-velo.html - -aides . portes du luxembourg: - remplace: intercommunalité - titre: Portes du Luxembourg - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Portes du Luxembourg' - - vélo . électrique ou mécanique - variations: - - si: assemblé en France - alors: - valeur: 40% * vélo . prix - plafond: 300 € - - sinon: - valeur: 33% * vélo . prix - plafond: 200 € - lien: https://www.portesduluxembourg.fr/la-prime-velo - avec: - assemblé en France: - question: Le vélo est-il conçu et assemblé en France ? - type: booléen - par défaut: non - -aides . cévennes gangeoises et suménoises: - remplace: intercommunalité - titre: Cévennes Gangeoises et Suménoises - applicable si: localisation . epci = 'CC des Cévennes Gangeoises et Suménoises' - valeur: 30% * (vélo . prix - aides . département - aides . région - aides . état) - plancher: 0€ - plafond: - variations: - - si: revenu fiscal de référence <= 27478€/an - alors: 350€ - - sinon: 300€ - lien: https://www.cevennes-gangeoises-sumenoises.fr/actualites/prime-velo-electrique/ - -aides . cazouls-lès-béziers: - remplace: commune - titre: Ville de Cazouls-Lès-Béziers - applicable si: - toutes ces conditions: - - localisation . code insee = '34069' - - vélo . électrique - valeur: 20% * vélo . prix - plafond: 200€ - lien: https://www.cazoulslesbeziers.com/vivre-a-cazouls/actualites/252-velos-a-assitance-electrique-aide-financiere - -aides . château-thierry: - remplace: intercommunalité - titre: Agglo de la région de Château-thierry - applicable si: - toutes ces conditions: - - localisation . epci = 'CA de la Région de Château-Thierry' - - vélo . électrique ou mécanique - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 200€ - - si: vélo . cargo - alors: 200€ - - sinon: 100€ - lien: https://www.carct.fr/et-agit/facilite-mes-deplacements/plan-velo/aide-a-lachat-dun-velo - -aides . ecommoy: - remplace: commune - titre: Ville d’Ecommoy - applicable si: - toutes ces conditions: - - localisation . code insee = '72124' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 100€ - lien: http://www.ecommoy.fr/infos-pratiques/mobilite/aide-a-la-mobilite-douce-achat-dun-velo-a-assistance-electrique/ - -aides . bannalec: - remplace: commune - titre: Ville de Bannalec - applicable si: - toutes ces conditions: - - localisation . code insee = '29004' - - vélo . électrique - valeur: 100€ - lien: https://www.bannalec.fr/aide-a-lachat-dun-velo-electrique/ - -aides . vallées du clain: - remplace: intercommunalité - titre: Vallées du Clain - applicable si: - toutes ces conditions: - - localisation . epci = 'CC des Vallées du Clain' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: - variations: - - si: ménage imposable - alors: 150€ - - sinon: 250€ - lien: https://www.valleesduclain.fr/2023/04/27/dispositif-daide-a-lachat-dun-velo-electrique/ - -aides . monmorillon: - remplace: commune - titre: Ville de Montmorillon - applicable si: localisation . code insee = '86164' - variations: - - si: vélo . électrique - alors: - valeur: 20% * vélo . prix - plafond: 150€ - - si: vélo . motorisation - alors: - valeur: 20% * vélo . prix - plafond: 150€ - - si: vélo . mécanique - alors: - valeur: 50% * vélo . prix - plafond: 100€ - lien: https://www.montmorillon.fr/plan-velo/ - -aides . witry-lès-reims: - remplace: commune - titre: Ville de Witry-lès-Reims - applicable si: - toutes ces conditions: - - localisation . code insee = '51662' - - vélo . électrique - valeur: 100€ - lien: http://www.witry-les-reims.fr/actualite_witry-les-reims-402 - -aides . golf de saint-tropez: - remplace: intercommunalité - titre: Golf de Saint-Tropez - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Golfe de Saint-Tropez' - - vélo . électrique - valeur: 200€ - lien: https://www.golfe-sainttropez.fr/actualite/prime-exceptionnelle-de-200e-pour-lachat-dun-velo-a-assistance-electrique/ - -aides . labège: - remplace: commune - titre: Ville de Labège - applicable si: - toutes ces conditions: - - localisation . code insee = '31254' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 20400€/an - alors: 200€ - - si: revenu fiscal de référence <= 36000€/an - alors: 150€ - - sinon: 100€ - lien: http://www.labege.fr/dans-ma-ville/aide-a-la-mobilite/ - -aides . hennebont: - remplace: commune - titre: Ville d’Hennebont - applicable si: - toutes ces conditions: - - localisation . code insee = '56083' - - vélo . électrique ou mécanique - valeur: 30% * vélo . prix - plafond: 100€ - lien: https://www.hennebont.bzh/mon-quotidien/deplacements-stationnement/hennebont-a-velo/ - -aides . couesnon: - remplace: intercommunalité - titre: Couesnon Marches de Bretagne - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Couesnon Marches de Bretagne' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 14089€/an - alors: 100€ - - sinon: 50€ - lien: https://www.couesnon-marchesdebretagne.fr/attractivite-territoriale/mobilites/ - -aides . avant-monts: - remplace: intercommunalité - titre: Communauté de communes Les Avant-Monts - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Les Avant-Monts' - - vélo . électrique - - revenu fiscal de référence <= 24000 €/an - valeur: 100€ - lien: https://www.avant-monts.fr/vivre-sinstaller/environnement/mobilite/ - -aides . vallées de l'orne et de l'odon: - remplace: intercommunalité - titre: Communauté de communes Vallées de l’Orne et de l’Odon - applicable si: - toutes ces conditions: - - localisation . epci = "CC Vallées de l'Orne et de l'Odon" - - vélo . électrique ou mécanique - variations: - - si: vélo . cargo - alors: 300€ - - sinon: - variations: - - si: revenu fiscal de référence <= 19565€/an - alors: 200€ - - sinon: 100€ - lien: https://cdc.vallees-orne-odon.fr/environnement/transition-energetique/aide-acquisition-velo/ - -aides . joinville-le-pont: - remplace: commune - titre: Ville de Joinville-le-Pont - applicable si: - toutes ces conditions: - - localisation . code insee = '94042' - - vélo . électrique - valeur: 25% * vélo . prix - plafond: 300€ - lien: https://www.joinville-le-pont.fr/demarche-administrative/subvention-velo-electrique/ - -aides . haut-béarn: - remplace: intercommunalité - titre: Haut Béarn communauté de communes - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Haut Béarn' - - vélo . électrique - variations: - - si: revenu fiscal de référence <= 15000€/an - alors: 200€ - - si: revenu fiscal de référence <= 25000€/an - alors: 100€ - - sinon: 50€ - lien: https://www.hautbearn.fr/vivre-habiter/se-deplacer/velos-a-assistance-electrique - -aides . joinville: - remplace: commune - titre: Ville de Joinville - applicable si: - toutes ces conditions: - - localisation . code insee = '52250' - - vélo . électrique - valeur: 200€ - lien: https://mairie-joinville.fr/fr/nw/509875/699194/aide-a-lacquisition-de-velos-a-assistance-electrique - -aides . villers-sur-mer: - remplace: commune - titre: Ville de Villers-sur-mer - applicable si: - toutes ces conditions: - - localisation . code insee = '14754' - - vélo . électrique ou mécanique - variations: - - si: vélo . cargo - alors: - valeur: 50% * vélo . prix - plafond: 400€ - - si: vélo . électrique - alors: - valeur: 50% * vélo . prix - plafond: 300€ - - si: vélo . pliant - alors: - valeur: 50% * vélo . prix - plafond: 150€ - - si: vélo . mécanique - alors: - valeur: 25% * vélo . prix - plafond: 100€ - - sinon: 0€ - lien: https://www.villers-sur-mer.fr/fiche-information/mobilite/mobilite-douce/ - -aides . saint-rémy-de-provence: - remplace: commune - titre: Ville de Saint-Rémy-de-Provence - applicable si: - toutes ces conditions: - - localisation . code insee = '13100' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 13489€/an - valeur: 200€ - lien: https://www.mairie-saintremydeprovence.com/200-euros-daide-pour-un-velo-a-assistance-electrique/ - -aides . val-revermont: - remplace: commune - titre: Ville de Val-Revermont - applicable si: - toutes ces conditions: - - localisation . code insee = '01426' - - vélo . électrique ou mécanique - valeur: 100€ - lien: http://val-revermont.fr/transition-ecologique-la-commune-met-en-place-un-coup-de-pouce-a-ses-habitants/ - -aides . pays de châteaugiron: - remplace: intercommunalité - titre: Pays de Châteaugiron - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Pays de Châteaugiron Communauté' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 200€ - lien: https://www.communaute.paysdechateaugiron.bzh/velo-a-assistance-electrique/ - -aides . tour du pin: - remplace: commune - titre: Ville de La Tour du Pin - applicable si: - toutes ces conditions: - - localisation . code insee = '38509' - - vélo . électrique - valeur: 100€ - lien: https://www.latourdupin.fr/citoyenne/grands-projets/subvention-velos-electriques/ - -# aides . falaise: -# remplace: commune -# titre: Ville de Falaise -# applicable si: -# toutes ces conditions: -# - localisation . code insee = '14258' -# - une de ces conditions: -# - vélo . électrique -# - vélo . motorisation -# valeur: 100€ -# lien: https://www.falaise.fr/pratique/deplacements/demande-daides-a-lachat-dun-vae/ - -aides . bièvre isère: - remplace: intercommunalité - titre: Bièvre Isère communauté - applicable si: - toutes ces conditions: - - localisation . epci = 'CC Bièvre Isère' - - vélo . électrique ou mécanique - variations: - - si: vélo . électrique - alors: 250€ - - sinon: 100€ - lien: https://bievre-isere.com/cadre-de-vie/mobilites/prime-velo/ - -aides . ceyrat: - remplace: commune - titre: Ville de Ceyrat - applicable si: - toutes ces conditions: - - localisation . code insee = '63070' - - vélo . électrique - variations: - - si: vélo . prix <= 2000€ - alors: 200€ - - si: vélo . prix <= 2500€ - alors: 150€ - - sinon: 0€ - lien: https://www.ceyrat.fr/votre-commune/services-municipaux/aides-communales/ - -aides . baud: - remplace: commune - titre: Ville de Baud - applicable si: - toutes ces conditions: - - localisation . code insee = '56010' - - vélo . électrique - valeur: 50€ - lien: https://www.mairie-baud.fr/7252-2/ - -aides . longuenesse: - remplace: commune - titre: Ville de Longuenesse - applicable si: - toutes ces conditions: - - localisation . code insee = '62525' - - vélo . électrique - # TOOO: "arrondi à la dizaine supérieure" - valeur: 20% * vélo . prix - plafond: 100€ - lien: https://ville-longuenesse.fr/fr/rb/1916787/prime-velo-2 - -aides . castelnau de médoc: - remplace: commune - titre: Ville de Castelnau de Médoc - applicable si: - toutes ces conditions: - - localisation . code insee = '33104' - - vélo . électrique - - revenu fiscal de référence <= première tranche IR - valeur: 100€ - lien: https://www.mairie-castelnau-medoc.fr/actus/1557-aide-a-l-acquisition-de-velos - -aides . saulieu: - remplace: commune - titre: Communauté de communes du Saulieu - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de Saulieu' - - vélo . électrique - - vélo . prix >= 650€ - valeur: 100€ - lien: https://www.saulieu-morvan.fr/joomla/tourisme-loisirs - -aides . la côtière à montluel: - remplace: intercommunalité - titre: Communauté de Communes de la Côtière à Montluel - applicable si: - toutes ces conditions: - - localisation . epci = 'CC de la Côtière à Montluel' - - une de ces conditions: - - travailler à moins de 20km - - abonné TER - valeur: 15% * vélo . prix - plafond: - variations: - - si: vélo . cargo - alors: 400€ - - si: vélo . électrique - alors: 300€ - - sinon: 0€ - lien: https://www.3cm.fr/18967-aide-a-l-achat-d-un-velo-a-assistance-electrique.htm - avec: - travailler à moins de 20km: - question: Travaillez-vous à moins de 20km de votre domicile ? - description: Vous devez justifier d’une activité professionnelle en tant que salarié, employeur ou auto-entrepreneur - type: booléen - par défaut: oui - abonné TER: - question: Êtes-vous abonné au TER ? - type: booléen - par défaut: non - -aides . pays orne moselle: - remplace: intercommunalité - titre: Pays Orne Moselle - applicable si: - toutes ces conditions: - - localisation . epci = 'CC du Pays Orne Moselle' - - revenu fiscal de référence <= première tranche IR - - vélo . électrique ou mécanique - valeur: 20% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: 150€ - - sinon: 200€ - lien: https://www.ccpom.fr/aides-a-la-mobilite/ - -aides . bram: - remplace: commune - titre: Ville de Bram - applicable si: - toutes ces conditions: - - localisation . code insee = '11049' - - vélo . électrique ou mécanique - - revenu fiscal de référence <= 35052 €/an - valeur: 50% * vélo . prix - plafond: - variations: - - si: vélo . électrique - alors: - variations: - - si: revenu fiscal de référence <= 18000 €/an - alors: 300 € - - sinon: 250 € - - sinon: - variations: - - si: revenu fiscal de référence <= 18000 €/an - alors: 150 € - - sinon: 100 € - lien: https://www.villedebram.fr/actualite/une-aide-a-lachat-de-velos-pour-les-bramais/ - -aides . region centre: - remplace: région - titre: Région Centre-Val de Loire - description: L'aide régionale est réservée aux habitants d'une commune sur laquelle la Région est l'autorité organisatrice de la mobilité locale de substitution - applicable si: - toutes ces conditions: - - localisation . région = '24' - - vélo . électrique - - vélo . prix >= 600€ - - une de ces conditions: - - localisation . epci = "CC du Perche" - - localisation . epci = "CC du Bonnevalais" - - localisation . epci = "CC Coeur de Beauce" - - localisation . epci = "CC du Grand Châteaudun" - - localisation . epci = "CC des Collines du Perche" - - localisation . epci = "CC du Perche et Haut Vendômois" - - localisation . epci = "CC Beauce Val de Loire" - - localisation . epci = "CC du Grand Chambord" - - localisation . epci = "CC de la Sologne des Etangs" - - localisation . epci = "CC Coeur de Sologne" - - localisation . epci = "CC de la Sologne des Rivières" - - localisation . epci = "CC de la Forêt" - - localisation . epci = "CC des Loges" - - localisation . epci = "CC du Val de Sully" - - localisation . epci = "CC de la Plaine du Nord Loiret" - - localisation . epci = "CC du Pithiverais" - - localisation . epci = "CC du Pithiverais-Gâtinais" - - localisation . epci = "CC de la Cléry, du Betz et de l'Ouanne" - - localisation . epci = "CC Berry Loire Puisaye" - - localisation . epci = "CC Sauldre et Sologne" - - localisation . epci = "CC Pays Fort Sancerrois Val de Loire" - - localisation . epci = "CC Terres du Haut Berry" - - localisation . epci = "CC Vierzon-Sologne-Berry" - - localisation . epci = "CC Berry-Loire-Vauvise" - - localisation . epci = "CC la Septaine" - - localisation . epci = "CC Berry-Loire-Vauvise" - - localisation . epci = "CC Pays de Nérondes" - - localisation . epci = "CC Portes du Berry entre Loire et Val d'Aubois" - - localisation . epci = "CC les Trois Provinces" - - localisation . epci = "CC Coeur de France" - - localisation . epci = "CC Arnon Boischaut Cher" - - localisation . epci = "CC Coeur de Berry" - - localisation . epci = "CC FerCher" - - localisation . epci = "CC Berry Grand Sud" - - localisation . epci = "CC Val-de-Cher-Controis" - - localisation . epci = "CC Chabris - Pays de Bazelle" - - localisation . epci = "CC du Pays d'Issoudun" - - localisation . epci = "CC Champagne Boischauts" - - localisation . epci = "CC Coeur de Brenne" - - localisation . epci = "CC Brenne - Val de Creuse" - - localisation . epci = "CC Loches Sud Touraine" - - localisation . epci = "CC Touraine Val de Vienne" - - localisation . epci = "CC Touraine Vallée de l'Indre" - - localisation . epci = "CC Touraine Ouest Val de Loire" - - localisation . epci = "CC de Gâtine-Racan" - - localisation . epci = "CC du Val d Amboise" - - localisation . epci = "CC Autour de Chenonceaux Bléré-Val de Cher" - - localisation . epci = "CC Touraine-Est Vallées" - - localisation . epci = "CC du Castelrenaudais" - - localisation . epci = "CC Val de l'Indre - Brenne" - - localisation . epci = "CC du Val de Bouzanne" - - localisation . epci = "CC de la Marche Berrichonne" - - localisation . epci = "CC Eguzon - Argenton - Vallée de la Creuse" - - localisation . epci = "CC de la Châtre et Sainte-Sévère" - - localisation . epci = "CC du Châtillonnais en Berry" - - localisation . epci = "CC Ecueillé-Valençay" - valeur: 25% * vélo . prix - plafond: 200€ - lien: https://www.centre-valdeloire.fr/le-guide-des-aides-de-la-region-centre-val-de-loire/mobilite-rurale-velo-assistance-electrique - -aides . monaco: - remplace: commune - titre: Monaco - applicable si: - toutes ces conditions: - - vélo . électrique - - localisation . pays = 'Monaco' - valeur: 30% * vélo . prix - plafond: 400€ - lien: https://www.gouv.mc/Action-Gouvernementale/L-Environnement/Une-mobilite-plus-douce/Dispositif-de-subventions-des-vehicules-electriques-et-hybrides - -aides . luxembourg: - remplace: état - titre: Luxembourg - description: | - L’État du Luxembourg instaure une prime jusqu'à 600€ pour l’achat d’un vélo - mécanique ou électrique (pedelec25) à des fins privées. Cette aide est - plafonnée à 50% du prix du vélo hors taxes. - applicable si: - toutes ces conditions: - - vélo . électrique ou mécanique - - localisation . pays = 'Luxembourg' - valeur: 50% * vélo . prix . HT - plafond: 600€ - lien: https://guichet.public.lu/fr/citoyens/transport/transports-individuels/aides-financieres/deduction-mobilite-durable-velo.html - -######################## - -vélo: oui - -vélo . type: - possibilités: - - mécanique simple - - électrique - - cargo - - cargo électrique - - pliant - - pliant électrique - - motorisation - par défaut: "'électrique'" - -vélo . mécanique simple: - valeur: oui - applicable si: vélo . type = 'mécanique simple' - -vélo . électrique: - valeur: oui - applicable si: - une de ces conditions: - - vélo . type = 'électrique' - - vélo . type = 'cargo électrique' - - vélo . type = 'pliant électrique' - -vélo . mécanique: - valeur: oui - applicable si: - une de ces conditions: - - vélo . type = 'mécanique simple' - - vélo . type = 'pliant' - - vélo . type = 'cargo' - -vélo . électrique ou mécanique: - valeur: oui - applicable si: - une de ces conditions: - - vélo . électrique - - vélo . mécanique - -vélo . cargo: - valeur: oui - applicable si: - une de ces conditions: - - vélo . type = 'cargo' - - vélo . type = 'cargo électrique' - -vélo . cargo électrique: - valeur: oui - applicable si: vélo . type = 'cargo électrique' - -vélo . pliant: - valeur: oui - applicable si: - une de ces conditions: - - vélo . type = 'pliant' - - vélo . type = 'pliant électrique' - -vélo . pliant électrique: - valeur: oui - applicable si: vélo . type = 'pliant électrique' - -vélo . motorisation: - valeur: oui - applicable si: vélo . type = 'motorisation' - description: | - Un kit de conversion permet de transformer un vélo mécanique classique en - vélo à assistance électrique. Il est constitué d’un moteur électrique, d’une - batterie, ainsi que d’un contrôleur et d’un afficheur. - -vélo . prix: - question: - variations: - - si: vélo . type = 'motorisation' - alors: "'Quel est le prix du kit de motorisation ?'" - - sinon: "'Quel est le prix du vélo ?'" - unité: € - par défaut: prix pour maximiser les aides - -vélo . taux TVA: - variations: - - si: localisation . pays = 'Luxembourg' - alors: 17% - - sinon: 20% - -vélo . prix . HT: - valeur: prix / (1 + taux TVA) - -# On met par défaut un prix élevé pour maximiser les aides proportionnelles au -# prix du vélo, mais certaines collectivités ont instauré un prix maximum -# d'achat et il faut donc rester en-dessous dans ces cas là -# TODO: implémenter sous forme de remplace directement dans les aides -vélo . prix pour maximiser les aides: - variations: - - si: localisation . epci = 'CA de Nevers' - alors: - variations: - - si: vélo . cargo - alors: 3000 € - - si: vélo . électrique - alors: 1600 € - - si: - une de ces conditions: - - vélo . mécanique - - vélo . motorisation - alors: 500€ - - sinon: 3000€ - - si: - une de ces conditions: - - localisation . epci = 'CA du Grand Annecy' - - localisation . epci = 'CA Luberon Monts de Vaucluse' - - localisation . epci = 'CA Tarbes-Lourdes-Pyrénées' - - localisation . epci = 'CC Saint-Marcellin Vercors Isère Communauté' - - localisation . epci = 'CC Le Grésivaudan' - alors: 1000 € - - si: - une de ces conditions: - - localisation . epci = 'CC Haut Val de Sèvre' - alors: 2000 € - - si: - une de ces conditions: - - localisation . epci = 'CA La Roche sur Yon - Agglomération' - - localisation . epci = 'Grenoble-Alpes-Métropole' - alors: 1500 € - - si: - une de ces conditions: - - localisation . epci = 'CA Montluçon Communauté' - - localisation . code insee = '14327' - - localisation . code insee = '14341' - alors: 2400 € - - si: - toutes ces conditions: - - localisation . epci = 'Métropole de Lyon' - - vélo . mécanique simple - - vélo . occasion - alors: 100€ - - si: - une de ces conditions: - - localisation . epci = 'Métropole de Lyon' - - localisation . epci = 'CC Les Balcons du Dauphiné' - - localisation . epci = 'CA Grand Lac' - - localisation . code insee = '38140' - - localisation . département = '07' - - localisation . epci = 'CC Dieulefit-Bourdeaux' - - localisation . epci = 'CA Saint-Lô Agglo' - - localisation . epci = 'CA Saint-Louis Agglomération' - - localisation . code insee = '73222' - alors: 3000 € - - si: localisation . epci = 'CA Annemasse-Les Voirons-Agglomération' - alors: 4500 € - - sinon: 5000 € - -vélo . fabriqué en france: - question: Le vélo est-il conçu et fabriqué en France ? - type: booléen - par défaut: non - -vélo . neuf ou occasion: - question: S’agit-t-il d’un vélo neuf ou d’occasion ? - par défaut: "'neuf'" - possibilités: - - neuf - - occasion - -vélo . neuf: - titre: Vélo neuf - valeur: neuf ou occasion = 'neuf' - -vélo . occasion: - titre: Vélo d’occasion - valeur: neuf ou occasion = 'occasion' - # Dans le cas d'un vélo d'occasion nous considérons que l'ensemble des aides - # est non applicable par défaut, sauf pour une liste blanche d'aides qui - # concernent les vélos d'occasion. Ces règles peuvent utiliser les variables - # `vélo . neuf` et `vélo . occasion` dans leur formule de calcul. - rend non applicable: - références à: aides - sauf dans: - - aides . montant - - # Liste blanches des aides ouvertes aux vélos d'occasion - # TODO: il faudrait définir cette information au niveau de chaque aide et - # non via une liste globale - - aides . ile de france - - aides . toulouse - - aides . lyon - - aides . grenoble - - aides . louvigny - - aides . pantin - - aides . la roche sur yon - - aides . saint-jacques de la lande - - aides . béthune bruay - - aides . haut val de sèvre - - aides . grand périgueux - - aides . divonne-les-bains - - aides . illkirch - - aides . valenciennes - - aides . montpellier - - aides . oullins - - aides . grand villeneuvois - - aides . ambert livradois forez - - aides . limoges metropole - - aides . coeur de nacre - - aides . belfort - - aides . dieppe - - aides . chevilly-larue - - aides . loos-en-gohelle - - aides . auray quiberon - - aides . ferte saint aubin - - aides . saint-louis - - aides . saint-marcellin vercors isère - - aides . aubervilliers - - aides . grand cubzaguais - - aides . vallée de l'homme - - aides . denain - - aides . feignies - - aides . moselle et madon - - aides . canélan - - aides . kremlin-bicetre - -revenu fiscal de référence: - question: Quel est votre revenu annuel (quotient familial) ? - # Comme pour le prix du vélo, la valeur par défaut est choisie pour maximiser - # les aides - par défaut: 800 €/an - -première tranche IR: 15400 €/an -ANAH: -ANAH . plafond ménage modeste: 19565 €/an - -ménage imposable: revenu fiscal de référence >= 11120 €/an - -personnes dans le foyer fiscal: - question: Combien de personnes composent le ménage ? - par défaut: 1 - -demandeur: - -demandeur . bénéficie du forfait mobilités durables: - question: Percevez-vous le forfait mobilités durables ? - description: | - Le forfait mobilités durables est une prise en charge par vous employeur des - frais liés à vos déplacements domicile-travail réalisés à vélo. En savoir plus - type: booléen - par défaut: oui - -demandeur . bénéficiaire de minima sociaux: - question: Percevez-vous le RSA, l'AAH, l'ASS ou ASPA ? - description: | - RSA : Revenu de solidarité active
- AAH : Allocation aux adultes handicapés
- ASS : Allocation de solidarité spécifique
- ASPA : Allocation de solidarit aux personnes âgées - type: booléen - par défaut: non - -maximiser les aides: - par défaut: non - avec: - maximiser prix vélo: - valeur: vélo . prix pour maximiser les aides - remplace: - références à: vélo . prix - abonnement TER pays de la loire: - valeur: oui - remplace: - références à: aides . pays de la loire . abonné TER - -localisation: -localisation . code insee: "''" -localisation . ZFE: non -localisation . epci: "''" -localisation . département: "''" -localisation . région: "''" -localisation . pays: - variations: - - si: code insee = '99138' - alors: "'Monaco'" - - si: code insee = '99137' - alors: "'Luxembourg'" - - sinon: "'France'" diff --git a/src/lib/aides-velo-utils.ts b/src/lib/aides-velo-utils.ts new file mode 100644 index 0000000..97f8f52 --- /dev/null +++ b/src/lib/aides-velo-utils.ts @@ -0,0 +1,12 @@ +import { AidesVeloEngine, type Questions } from '@betagouv/aides-velo'; +import { IS_RETROFIT } from './env'; + +export const aidesVeloEngine = IS_RETROFIT ? undefined : new AidesVeloEngine(); + +export const BIKE_KINDS = IS_RETROFIT ? [] : aidesVeloEngine?.getOptions('vélo . type'); + +export function getOptions(questionName: keyof Questions) { + return IS_RETROFIT ? [] : aidesVeloEngine?.getOptions(questionName); +} + +export type QuestionNames = keyof Questions; diff --git a/src/lib/components/Autocomplete.svelte b/src/lib/components/Autocomplete.svelte index d32dd5b..119e829 100644 --- a/src/lib/components/Autocomplete.svelte +++ b/src/lib/components/Autocomplete.svelte @@ -174,7 +174,7 @@ originalResult = theFunction(argument); } catch (error) { console.warn( - 'Error executing Autocomplete function on value: ' + argument + ' function: ' + theFunction + 'Error executing Autocomplete function on value: ' + argument + ' function: ' + theFunction, ); } let result = originalResult; @@ -300,7 +300,7 @@ if (debug) { console.log( - "Change user entered text '" + userEnteredText + "' into '" + textFilteredLowerCase + "'" + "Change user entered text '" + userEnteredText + "' into '" + textFilteredLowerCase + "'", ); } return textFilteredLowerCase; @@ -439,22 +439,22 @@ if (localFiltering) { if (itemFilterFunction) { tempfilteredListItems = listItems.filter((item) => - itemFilterFunction(item.item, searchWords) + itemFilterFunction(item.item, searchWords), ); } else { tempfilteredListItems = listItems.filter((item) => - defaultItemFilterFunction(item, searchWords) + defaultItemFilterFunction(item, searchWords), ); } if (itemSortFunction) { tempfilteredListItems = tempfilteredListItems.sort((item1, item2) => - itemSortFunction(item1.item, item2.item, searchWords) + itemSortFunction(item1.item, item2.item, searchWords), ); } else { if (sortByMatchedKeywords) { tempfilteredListItems = tempfilteredListItems.sort((item1, item2) => - defaultItemSortFunction(item1, item2, searchWords) + defaultItemSortFunction(item1, item2, searchWords), ); } } @@ -561,7 +561,7 @@ } else { if (debug) { console.warn( - 'Could not scroll selected item into view, scrollIntoViewIfNeeded not supported' + 'Could not scroll selected item into view, scrollIntoViewIfNeeded not supported', ); } } diff --git a/src/lib/components/Details.svelte b/src/lib/components/Details.svelte index f6fcd35..efb6c73 100644 --- a/src/lib/components/Details.svelte +++ b/src/lib/components/Details.svelte @@ -5,14 +5,14 @@ import Emoji from '$lib/components/Emoji.svelte'; import Questions from '$lib/components/Questions.svelte'; import { engine as baseEngine, getEngine } from '$lib/engine'; - import { publicodeSituation, resetAnswers, veloCat } from '$lib/stores'; + import { publicodeSituation, resetAnswers, veloTypeValue, veloCat } from '$lib/stores'; import { emojiCategory, titleCategory } from '$lib/utils'; import { slide } from 'svelte/transition'; resetAnswers(); $: engine = getEngine({ ...$publicodeSituation, - 'vélo . type': `'${$veloCat}'`, + 'vélo . type': $veloTypeValue, }); const categoryDescription = baseEngine.getRule(`vélo . ${$veloCat}`).rawNode?.description ?? ''; @@ -42,20 +42,20 @@ // TODO: trouver un moyen de ne pas refaire plusieurs fois les mêmes calculs. $: engineBis = engine = getEngine({ ...$publicodeSituation, - 'vélo . type': `'${$veloCat}'`, + 'vélo . type': $veloTypeValue, }); $: montantAidesVeloOccasion = engineBis .setSituation({ ...$publicodeSituation, - 'vélo . type': `'${$veloCat}'`, - 'vélo . neuf ou occasion': '"occasion"', + 'vélo . type': $veloTypeValue, + 'vélo . état': '"occasion"', }) .evaluate('aides . montant').nodeValue; $: montantAidesVeloNeuf = engineBis .setSituation({ ...$publicodeSituation, - 'vélo . type': `'${$veloCat}'`, - 'vélo . neuf ou occasion': '"neuf"', + 'vélo . type': $veloTypeValue, + 'vélo . état': '"neuf"', }) .evaluate('aides . montant').nodeValue; $: demandeNeufOuOccasion = diff --git a/src/lib/components/DetailsLine.svelte b/src/lib/components/DetailsLine.svelte index cc56420..7860d57 100644 --- a/src/lib/components/DetailsLine.svelte +++ b/src/lib/components/DetailsLine.svelte @@ -1,15 +1,18 @@ -{#if miniaturesManifest[ruleName]} +{#if miniatures[ruleName]} Logo de {titre} diff --git a/src/lib/components/MultipleChoiceAnswer.svelte b/src/lib/components/MultipleChoiceAnswer.svelte index acb6e09..9a43a5d 100644 --- a/src/lib/components/MultipleChoiceAnswer.svelte +++ b/src/lib/components/MultipleChoiceAnswer.svelte @@ -5,16 +5,14 @@ $: isSelected = group === value; -{#key value} - -{/key} +