├── .gitignore ├── licence.txt ├── package-lock.json ├── package.json ├── public ├── index.html ├── manifest-chrome.json ├── manifest.json ├── rgesn │ └── v1.json └── static │ ├── logo-minumeco.png │ ├── logo-minumeco.svg │ ├── marianne-bold.woff2 │ ├── marianne-regular.woff2 │ ├── numecodiag-logo-128x128.png │ ├── numecodiag-logo-16x16.png │ ├── numecodiag-logo-48x48.png │ └── numecodiag-logo.svg ├── readme.md ├── rollup.config.js └── src ├── App.svelte ├── components ├── About.svelte ├── AuditForm.svelte ├── Donut.svelte ├── Header.svelte ├── Navigation.svelte ├── Options.svelte ├── Results.svelte └── Stats.svelte └── main.js /.gitignore: -------------------------------------------------------------------------------- 1 | /_ 2 | /node_modules/ 3 | /public/assets/ 4 | .DS_Store -------------------------------------------------------------------------------- /licence.txt: -------------------------------------------------------------------------------- 1 | LICENCE PUBLIQUE DE L'UNION EUROPÉENNE v. 1.2 2 | EUPL © Union européenne 2007, 2016 3 | 4 | La présente licence publique de l'Union européenne («EUPL») s'applique à toute œuvre (telle que définie ci-dessous) fournie aux conditions prévues par la présente licence. Toute utilisation de l'œuvre autre que ce qu'autorise la présente licence est interdite (dans la mesure où pareille utilisation est couverte par un droit du titulaire des droits d'auteur sur l'œuvre). L'œuvre est fournie aux conditions prévues par la présente licence quand le donneur de licence (tel que défini ci-dessous) a placé la mention suivante immédiatement après la déclaration relative au droit d'auteur sur l'œuvre: 5 | Sous licence EUPL 6 | ou a exprimé de toute autre manière sa volonté de fournir l'œuvre sous licence EUPL. 7 | 8 | 1.Définitions 9 | Dans la présente licence, on entend par: 10 | — «licence», la présente licence, 11 | — «œuvre originale», l'œuvre ou le logiciel distribué ou communiqué par le donneur de licence en vertu de la présente licence, sous forme de code source ou de code objet, selon le cas, 12 | — «œuvres dérivées», les œuvres ou logiciels qui pourraient être créés par le licencié sur la base de l'œuvre originale ou des modifications qui y auraient été appliquées. La présente licence ne définit pas le degré de modification ou de dépendance requis par rapport à l'œuvre originale pour qu'une œuvre soit qualifiée d'œuvre dérivée; cette question est réglée par la loi applicable en matière de droit d'auteur dans le pays visé à l'article 15, 13 | — «œuvre», l'œuvre originale ou ses œuvres dérivées, 14 | — «code source», la forme de l'œuvre, lisible par l'homme, la plus appropriée pour que des personnes puissent l'examiner et la modifier, 15 | — «code objet», l'œuvre codée, généralement après compilation, destinée à être exécutée en tant que programme par un ordinateur, — «donneur de licence», la personne physique ou morale qui distribue ou communique l'œuvre sous licence, 16 | — «contributeur», toute personne physique ou morale qui modifie l'œuvre sous licence, ou contribue de toute autre manière à en faire une œuvre dérivée, 17 | — «licencié» ou «vous», toute personne physique ou morale qui utilise l'œuvre conformément à la licence, 18 | — «distribution» ou «communication», tout acte de vente, don, prêt, location, distribution, communication, transmission ou mise à disposition, en ligne ou hors ligne, de copies de l'œuvre, et tout acte donnant accès à ses fonctions essentielles à toute autre personne physique ou morale. 19 | 20 | 2.Portée des droits accordés par la licence 21 | Par la présente, le donneur de licence vous concède, pour la durée de la protection de son droit d'auteur sur l'œuvre originale, une licence mondiale, libre de redevances, non exclusive et pouvant faire l'objet de sous-licences, en vertu de laquelle vous pouvez: 22 | — utiliser l'œuvre en toute circonstance et pour tout usage, 23 | — reproduire l'œuvre, 24 | — modifier l'œuvre et créer des œuvres dérivées sur la base de l'œuvre, 25 | — communiquer l'œuvre au public, ce qui inclut le droit de mettre à disposition du public ou de lui présenter l'œuvre ou des copies de l'œuvre et d'en effectuer des représentations publiques, le cas échéant, 26 | — distribuer l'œuvre ou des copies de celle-ci, 27 | — prêter et louer l'œuvre ou des copies de celles-ci, 28 | — accorder en sous-licence des droits sur l'œuvre ou sur des copies de celle-ci. 29 | Ces droits peuvent être exercés sur tout support et format, connu ou encore à inventer, dans la mesure où le droit applicable le permet. Dans les pays où des droits moraux s'appliquent, le donneur de licence renonce à son droit d'exercer son droit moral dans la mesure permise par la loi afin que la licence sur les droits patrimoniaux susmentionnés produise ses effets. Le donneur de licence vous concède un droit d'usage libre de redevances et non exclusif sur tout brevet qu'il détient, dans la mesure nécessaire à l'exercice des droits qui vous sont concédés sur l'œuvre sous licence. 30 | 31 | 3.Communication du code source 32 | Le donneur de licence fournit l'œuvre sous forme de code source ou de code objet. Si l'œuvre est fournie sous forme de code objet, le donneur de licence accompagne chacune des copies de l'œuvre qu'il distribue d'une copie lisible par machine du code source de l'œuvre ou indique, dans un avis qui suit la déclaration relative au droit d'auteur jointe à l'œuvre, l'endroit où le code source est aisément et gratuitement accessible aussi longtemps que le donneur de licence continue à distribuer ou communiquer l'œuvre. 33 | 34 | 4.Limitations du droit d'auteur 35 | Rien dans la présente licence n'a pour but de priver le licencié des avantages résultant de toute exception ou limitation aux droits exclusifs des titulaires de droits sur l'œuvre, de l'épuisement de ces droits ou de toute autre limitation qui s'y applique. 36 | 37 | 5.Obligations du licencié 38 | La concession des droits susmentionnés est soumise à des restrictions et à des obligations pour le licencié. Ces obligations sont les suivantes: 39 | 40 | Droit d'attribution: le licencié laisse intactes toutes les déclarations concernant le droit d'auteur, le brevet ou les marques et toutes les déclarations concernant la licence et l'exclusion de garantie. Le licencié assortit chaque copie de l'œuvre qu'il distribue ou communique d'une copie de ces déclarations et d'une copie de la licence. Le licencié veille à ce que toute œuvre dérivée soit assortie d'un avis bien visible indiquant que l'œuvre a été modifiée et mentionnant la date de la modification. 41 | 42 | Clause copyleft: si le licencié distribue ou communique des copies d'œuvres originales ou d'œuvres dérivées, cette distribution ou cette communication est effectuée dans les conditions prévues par la présente licence ou une version ultérieure de cette licence, sauf si l'œuvre originale est expressément distribuée en vertu de la présente version de la licence uniquement, par exemple au moyen de la mention «EUPL v. 1.2 seulement». Le licencié (qui devient donneur de licence) ne peut pas, en ce qui concerne l'œuvre ou les œuvres dérivées, offrir ou imposer des conditions supplémentaires qui restreignent ou modifient les conditions de la licence. 43 | 44 | Clause de compatibilité: si le licencié distribue ou communique des œuvres dérivées ou des copies de telles œuvres basées à la fois sur l'œuvre et sur une autre œuvre concédée sous une licence compatible, la distribution ou la communication peut être faite aux conditions de cette licence compatible. Aux fins de la présente clause, une «licence compatible» est l'une des licences énumérées dans l'appendice de la présente licence. Dans le cas où les obligations du licencié au titre de la licence compatible entrent en conflit avec les obligations du licencié au titre de la présente licence, les premières prévalent. 45 | 46 | Fourniture du code source: lorsqu'il distribue ou communique des copies de l'œuvre, le licencié fournit une copie lisible par machine du code source ou indique l'endroit où ce code source restera aisément et gratuitement accessible aussi longtemps que le donneur de licence continuera à distribuer ou communiquer l'œuvre. 47 | 48 | Protection des droits: la présente licence ne donne pas le droit d'utiliser les noms commerciaux, les marques commerciales, les marques de service ou les noms du donneur de licence, sauf dans la mesure nécessaire, conformément à une utilisation raisonnable et aux pratiques habituelles, pour décrire l'origine de l'œuvre et reproduire la déclaration concernant le droit d'auteur. 49 | 50 | 6.Chaîne d'auteurs 51 | Le donneur de licence initial garantit que les droits d'auteur sur l'œuvre originale concédés par la présente licence lui appartiennent ou lui ont été donnés sous licence, et qu'il a le pouvoir et la capacité de concéder la licence. Tout contributeur garantit que les droits d'auteur sur les modifications qu'il apporte à l'œuvre lui appartiennent ou lui ont été donnés sous licence, et qu'il a le pouvoir et la capacité de concéder la licence. Chaque fois que vous acceptez la licence, le donneur de licence initial et les contributeurs successifs vous concèdent une licence sur leurs contributions à l'œuvre selon les conditions de la présente licence. 52 | 53 | 7.Exclusion de garantie 54 | L'œuvre est un travail en cours, amélioré de manière continue par de nombreux contributeurs. Elle constitue un travail inachevé et peut dès lors contenir des défauts ou bogues inhérents à ce type de développement. Pour cette raison, l'œuvre est fournie sous licence telle quelle, sans aucune garantie d'aucune sorte la concernant, y compris, sans que cette liste soit exhaustive, eu égard à sa qualité marchande, son aptitude à un usage particulier, l'absence de défauts ou d'erreurs, l'exactitude ou la non-violation de droits de propriété intellectuelle autres que le droit d'auteur comme prévu à l'article 6 de la présente licence. Cette exclusion de garantie est une partie essentielle de la licence et une condition de la concession de droits sur l'œuvre. 55 | 56 | 8.Exclusion de responsabilité 57 | Sauf dans les cas de faute intentionnelle ou de dommages directement causés à des personnes physiques, le donneur de licence n'est en aucun cas responsable des dommages, quelle qu'en soit la nature, directs ou indirects, matériels ou moraux, résultant de la licence ou de l'utilisation de l'œuvre, y compris, sans que cette liste soit exhaustive, des dommages causés par les atteintes à la réputation, les interruptions de travail, les défaillances ou le mauvais fonctionnement de matériel informatique, les pertes de données ou tout autre dommage économique, même si le donneur de licence a été informé de la possibilité de tels dommages. Cependant, le donneur de licence est responsable en vertu des dispositions législatives et réglementaires relatives à la responsabilité du fait des produits, dans la mesure où celles-ci sont applicables à l'œuvre. 58 | 59 | 9.Accords additionnels 60 | Lorsque vous distribuez l'œuvre, vous pouvez choisir de conclure un accord additionnel définissant des obligations ou des services compatibles avec la présente licence. Cependant, si vous acceptez des obligations, vous ne pouvez agir qu'en votre nom et sous votre seule responsabilité, et non au nom du donneur de licence initial ou de tout autre contributeur, et seulement si vous acceptez d'indemniser, de défendre et de mettre hors de cause tous les contributeurs s'ils encourent une responsabilité quelconque ou si des réclamations sont formulées à leur encontre du fait que vous avez accepté des garanties ou des responsabilités additionnelles. 61 | 62 | 10.Acceptation de la licence 63 | Vous pouvez exprimer votre accord sur le contenu de la présente licence en cliquant sur l'icône «J'accepte» placée au bas d'une fenêtre faisant apparaître le texte de la présente licence, ou par toute autre manifestation de consentement similaire, conformément à la loi applicable. Le fait de cliquer sur cette icône indique votre acceptation claire et irrévocable de la présente licence et de toutes ses conditions. De même, vous acceptez irrévocablement la présente licence et toutes ses conditions dès lors que vous exercez un des droits qui vous sont concédés par l'article 2 de la présente licence, tels que l'utilisation de l'œuvre, la création d'une œuvre dérivée ou la distribution ou la communication de l'œuvre ou de copies de l'œuvre. 64 | 65 | 11.Information du public 66 | En cas de distribution ou de communication électronique de l'œuvre (par exemple en permettant son téléchargement à distance), le canal de distribution ou le support (par exemple un site web) doit au minimum fournir au public les informations requises par le droit applicable en ce qui concerne le donneur de licence et la licence ainsi que la manière dont le licencié peut accéder à celle-ci, la conclure, la stocker et la reproduire. 67 | 68 | 12.Fin de la licence 69 | La licence et les droits qu'elle concède prennent automatiquement fin dès que le licencié viole l'une de ses conditions. Un tel événement ne met pas fin aux licences des personnes ayant reçu l'œuvre sous licence de la part du licencié, pour autant que ces personnes respectent pleinement la licence. 70 | 71 | 13.Divers 72 | Sous réserve de l'article 9, la licence représente l'entièreté de l'accord entre les parties quant à l'œuvre. Le fait qu'une clause quelconque de la licence soit invalide ou inapplicable en vertu du droit applicable n'affecte pas la validité ou l'applicabilité de la licence dans son ensemble. Une telle clause sera interprétée ou modifiée dans la mesure nécessaire pour la rendre valide ou applicable. La Commission européenne peut publier d'autres versions linguistiques ou de nouvelles versions de la présente licence ou des versions actualisées de son appendice, dans la mesure de ce qui est nécessaire et raisonnable, sans réduire la portée des droits accordés par la licence. Les nouvelles versions de la licence seront publiées avec un numéro de version unique. Toutes les versions linguistiques de la présente licence, approuvées par la Commission européenne, ont la même valeur. Les parties peuvent se prévaloir de la version linguistique de leur choix. 73 | 74 | 14.Juridiction compétente 75 | Sans préjudice d'accords spécifiques entre les parties, 76 | — tout litige résultant de l'interprétation de la présente licence survenant entre des institutions, organes, bureaux ou agences de l'Union européenne en tant que donneurs de licence et un licencié relève de la juridiction de la Cour de justice de l'Union européenne, conformément à l'article 272 du traité sur le fonctionnement de l'Union européenne, 77 | — tout litige survenant entre d'autres parties et résultant de l'interprétation de la présente licence relève de la compétence exclusive de la juridiction compétente du lieu où le donneur de licence réside ou exerce son activité principale. 78 | 79 | 15.Droit applicable 80 | Sans préjudice d'accords spécifiques entre les parties, 81 | — la présente licence est régie par le droit de l'État membre de l'Union européenne où le donneur de licence réside ou a son siège social ou statutaire, 82 | — la présente licence est régie par le droit belge si le donneur de licence ne réside pas et n'a pas son siège social ou statutaire dans un État membre de l'Union européenne. 83 | 84 | Appendice 85 | Aux fins de l'article 5 de l'EUPL, les licences compatibles sont les suivantes: 86 | — GNU General Public License (GPL) v. 2, v. 3 87 | — GNU Affero General Public License (AGPL) v. 3 88 | — Open Software License (OSL) v. 2.1, v. 3.0 89 | — Eclipse Public License (EPL) v. 1.0 90 | — CeCILL v. 2.0, v. 2.1 91 | — Mozilla Public licence (MPL) v. 2 92 | — GNU Lesser General Public licence (LGPL) v. 2.1, v. 3 93 | — Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) pour les œuvres autres que logicielles 94 | — Licence publique de l'Union européenne (EUPL) v. 1.1, v. 1.2 95 | — Licence libre du Québec — Réciprocité (LiLiQ-R) ou Réciprocité forte (LiLiQ-R+) 96 | La Commission européenne pourra actualiser le présent appendice afin d'y inclure des versions ultérieures des licences ci-dessus sans produire de nouvelle version de l'EUPL, dès lors que ces versions prévoient la concession des droits visés à l'article 2 de la présente licence et empêchent l'appropriation exclusive du code source couvert. 97 | Tout autre changement ou ajout au présent appendice requiert la production d'une nouvelle version de l'EUPL. -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "numecodiag", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.16.7", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 10 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.16.7" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.16.7", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 19 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.17.9", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", 25 | "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.16.7", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | } 32 | }, 33 | "@jridgewell/gen-mapping": { 34 | "version": "0.3.2", 35 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 36 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 37 | "dev": true, 38 | "requires": { 39 | "@jridgewell/set-array": "^1.0.1", 40 | "@jridgewell/sourcemap-codec": "^1.4.10", 41 | "@jridgewell/trace-mapping": "^0.3.9" 42 | } 43 | }, 44 | "@jridgewell/resolve-uri": { 45 | "version": "3.1.0", 46 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 47 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 48 | "dev": true 49 | }, 50 | "@jridgewell/set-array": { 51 | "version": "1.1.2", 52 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 53 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 54 | "dev": true 55 | }, 56 | "@jridgewell/source-map": { 57 | "version": "0.3.2", 58 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 59 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 60 | "dev": true, 61 | "requires": { 62 | "@jridgewell/gen-mapping": "^0.3.0", 63 | "@jridgewell/trace-mapping": "^0.3.9" 64 | } 65 | }, 66 | "@jridgewell/sourcemap-codec": { 67 | "version": "1.4.14", 68 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 69 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 70 | "dev": true 71 | }, 72 | "@jridgewell/trace-mapping": { 73 | "version": "0.3.17", 74 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 75 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 76 | "dev": true, 77 | "requires": { 78 | "@jridgewell/resolve-uri": "3.1.0", 79 | "@jridgewell/sourcemap-codec": "1.4.14" 80 | } 81 | }, 82 | "@polka/url": { 83 | "version": "1.0.0-next.21", 84 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 85 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" 86 | }, 87 | "@rollup/plugin-commonjs": { 88 | "version": "17.1.0", 89 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", 90 | "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", 91 | "dev": true, 92 | "requires": { 93 | "@rollup/pluginutils": "^3.1.0", 94 | "commondir": "^1.0.1", 95 | "estree-walker": "^2.0.1", 96 | "glob": "^7.1.6", 97 | "is-reference": "^1.2.1", 98 | "magic-string": "^0.25.7", 99 | "resolve": "^1.17.0" 100 | } 101 | }, 102 | "@rollup/plugin-node-resolve": { 103 | "version": "11.2.1", 104 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", 105 | "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", 106 | "dev": true, 107 | "requires": { 108 | "@rollup/pluginutils": "^3.1.0", 109 | "@types/resolve": "1.17.1", 110 | "builtin-modules": "^3.1.0", 111 | "deepmerge": "^4.2.2", 112 | "is-module": "^1.0.0", 113 | "resolve": "^1.19.0" 114 | } 115 | }, 116 | "@rollup/pluginutils": { 117 | "version": "3.1.0", 118 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 119 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 120 | "dev": true, 121 | "requires": { 122 | "@types/estree": "0.0.39", 123 | "estree-walker": "^1.0.1", 124 | "picomatch": "^2.2.2" 125 | }, 126 | "dependencies": { 127 | "estree-walker": { 128 | "version": "1.0.1", 129 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 130 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 131 | "dev": true 132 | } 133 | } 134 | }, 135 | "@types/estree": { 136 | "version": "0.0.39", 137 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 138 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 139 | "dev": true 140 | }, 141 | "@types/node": { 142 | "version": "17.0.25", 143 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", 144 | "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", 145 | "dev": true 146 | }, 147 | "@types/resolve": { 148 | "version": "1.17.1", 149 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 150 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 151 | "dev": true, 152 | "requires": { 153 | "@types/node": "*" 154 | } 155 | }, 156 | "acorn": { 157 | "version": "8.7.0", 158 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 159 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 160 | "dev": true 161 | }, 162 | "ansi-styles": { 163 | "version": "3.2.1", 164 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 165 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 166 | "dev": true, 167 | "requires": { 168 | "color-convert": "^1.9.0" 169 | } 170 | }, 171 | "anymatch": { 172 | "version": "3.1.2", 173 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 174 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 175 | "dev": true, 176 | "requires": { 177 | "normalize-path": "^3.0.0", 178 | "picomatch": "^2.0.4" 179 | } 180 | }, 181 | "balanced-match": { 182 | "version": "1.0.2", 183 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 184 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 185 | "dev": true 186 | }, 187 | "binary-extensions": { 188 | "version": "2.2.0", 189 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 190 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 191 | "dev": true 192 | }, 193 | "brace-expansion": { 194 | "version": "1.1.11", 195 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 196 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 197 | "dev": true, 198 | "requires": { 199 | "balanced-match": "^1.0.0", 200 | "concat-map": "0.0.1" 201 | } 202 | }, 203 | "braces": { 204 | "version": "3.0.2", 205 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 206 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 207 | "dev": true, 208 | "requires": { 209 | "fill-range": "^7.0.1" 210 | } 211 | }, 212 | "buffer-from": { 213 | "version": "1.1.2", 214 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 215 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 216 | "dev": true 217 | }, 218 | "builtin-modules": { 219 | "version": "3.2.0", 220 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 221 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 222 | "dev": true 223 | }, 224 | "chalk": { 225 | "version": "2.4.2", 226 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 227 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 228 | "dev": true, 229 | "requires": { 230 | "ansi-styles": "^3.2.1", 231 | "escape-string-regexp": "^1.0.5", 232 | "supports-color": "^5.3.0" 233 | } 234 | }, 235 | "chokidar": { 236 | "version": "3.5.3", 237 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 238 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 239 | "dev": true, 240 | "requires": { 241 | "anymatch": "~3.1.2", 242 | "braces": "~3.0.2", 243 | "fsevents": "~2.3.2", 244 | "glob-parent": "~5.1.2", 245 | "is-binary-path": "~2.1.0", 246 | "is-glob": "~4.0.1", 247 | "normalize-path": "~3.0.0", 248 | "readdirp": "~3.6.0" 249 | } 250 | }, 251 | "color-convert": { 252 | "version": "1.9.3", 253 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 254 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 255 | "dev": true, 256 | "requires": { 257 | "color-name": "1.1.3" 258 | } 259 | }, 260 | "color-name": { 261 | "version": "1.1.3", 262 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 263 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 264 | "dev": true 265 | }, 266 | "commander": { 267 | "version": "2.20.3", 268 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 269 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 270 | "dev": true 271 | }, 272 | "commondir": { 273 | "version": "1.0.1", 274 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 275 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 276 | "dev": true 277 | }, 278 | "concat-map": { 279 | "version": "0.0.1", 280 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 281 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 282 | "dev": true 283 | }, 284 | "console-clear": { 285 | "version": "1.1.1", 286 | "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", 287 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" 288 | }, 289 | "deepmerge": { 290 | "version": "4.2.2", 291 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 292 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 293 | "dev": true 294 | }, 295 | "escape-string-regexp": { 296 | "version": "1.0.5", 297 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 298 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 299 | "dev": true 300 | }, 301 | "estree-walker": { 302 | "version": "2.0.2", 303 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 304 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 305 | "dev": true 306 | }, 307 | "fill-range": { 308 | "version": "7.0.1", 309 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 310 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 311 | "dev": true, 312 | "requires": { 313 | "to-regex-range": "^5.0.1" 314 | } 315 | }, 316 | "fs.realpath": { 317 | "version": "1.0.0", 318 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 319 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 320 | "dev": true 321 | }, 322 | "fsevents": { 323 | "version": "2.3.2", 324 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 325 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 326 | "dev": true, 327 | "optional": true 328 | }, 329 | "function-bind": { 330 | "version": "1.1.1", 331 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 332 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 333 | "dev": true 334 | }, 335 | "get-port": { 336 | "version": "3.2.0", 337 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 338 | "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" 339 | }, 340 | "glob": { 341 | "version": "7.2.0", 342 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 343 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 344 | "dev": true, 345 | "requires": { 346 | "fs.realpath": "^1.0.0", 347 | "inflight": "^1.0.4", 348 | "inherits": "2", 349 | "minimatch": "^3.0.4", 350 | "once": "^1.3.0", 351 | "path-is-absolute": "^1.0.0" 352 | } 353 | }, 354 | "glob-parent": { 355 | "version": "5.1.2", 356 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 357 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 358 | "dev": true, 359 | "requires": { 360 | "is-glob": "^4.0.1" 361 | } 362 | }, 363 | "has": { 364 | "version": "1.0.3", 365 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 366 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 367 | "dev": true, 368 | "requires": { 369 | "function-bind": "^1.1.1" 370 | } 371 | }, 372 | "has-flag": { 373 | "version": "3.0.0", 374 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 375 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 376 | "dev": true 377 | }, 378 | "inflight": { 379 | "version": "1.0.6", 380 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 381 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 382 | "dev": true, 383 | "requires": { 384 | "once": "^1.3.0", 385 | "wrappy": "1" 386 | } 387 | }, 388 | "inherits": { 389 | "version": "2.0.4", 390 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 391 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 392 | "dev": true 393 | }, 394 | "is-binary-path": { 395 | "version": "2.1.0", 396 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 397 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 398 | "dev": true, 399 | "requires": { 400 | "binary-extensions": "^2.0.0" 401 | } 402 | }, 403 | "is-core-module": { 404 | "version": "2.8.1", 405 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 406 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 407 | "dev": true, 408 | "requires": { 409 | "has": "^1.0.3" 410 | } 411 | }, 412 | "is-extglob": { 413 | "version": "2.1.1", 414 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 415 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 416 | "dev": true 417 | }, 418 | "is-glob": { 419 | "version": "4.0.3", 420 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 421 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 422 | "dev": true, 423 | "requires": { 424 | "is-extglob": "^2.1.1" 425 | } 426 | }, 427 | "is-module": { 428 | "version": "1.0.0", 429 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 430 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 431 | "dev": true 432 | }, 433 | "is-number": { 434 | "version": "7.0.0", 435 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 436 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 437 | "dev": true 438 | }, 439 | "is-reference": { 440 | "version": "1.2.1", 441 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 442 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 443 | "dev": true, 444 | "requires": { 445 | "@types/estree": "*" 446 | } 447 | }, 448 | "jest-worker": { 449 | "version": "26.6.2", 450 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 451 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 452 | "dev": true, 453 | "requires": { 454 | "@types/node": "*", 455 | "merge-stream": "^2.0.0", 456 | "supports-color": "^7.0.0" 457 | }, 458 | "dependencies": { 459 | "has-flag": { 460 | "version": "4.0.0", 461 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 462 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 463 | "dev": true 464 | }, 465 | "supports-color": { 466 | "version": "7.2.0", 467 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 468 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 469 | "dev": true, 470 | "requires": { 471 | "has-flag": "^4.0.0" 472 | } 473 | } 474 | } 475 | }, 476 | "js-tokens": { 477 | "version": "4.0.0", 478 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 479 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 480 | "dev": true 481 | }, 482 | "kleur": { 483 | "version": "4.1.4", 484 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", 485 | "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" 486 | }, 487 | "livereload": { 488 | "version": "0.9.3", 489 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", 490 | "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", 491 | "dev": true, 492 | "requires": { 493 | "chokidar": "^3.5.0", 494 | "livereload-js": "^3.3.1", 495 | "opts": ">= 1.2.0", 496 | "ws": "^7.4.3" 497 | } 498 | }, 499 | "livereload-js": { 500 | "version": "3.3.3", 501 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.3.tgz", 502 | "integrity": "sha512-a7Jipme3XIBIryJluWP5LQrEAvhobDPyScBe+q+MYwxBiMT2Ck7msy4tAdF8TAa33FMdJqX4guP81Yhiu6BkmQ==", 503 | "dev": true 504 | }, 505 | "local-access": { 506 | "version": "1.1.0", 507 | "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", 508 | "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==" 509 | }, 510 | "magic-string": { 511 | "version": "0.25.9", 512 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 513 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 514 | "dev": true, 515 | "requires": { 516 | "sourcemap-codec": "^1.4.8" 517 | } 518 | }, 519 | "merge-stream": { 520 | "version": "2.0.0", 521 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 522 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 523 | "dev": true 524 | }, 525 | "minimatch": { 526 | "version": "3.1.2", 527 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 528 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 529 | "dev": true, 530 | "requires": { 531 | "brace-expansion": "^1.1.7" 532 | } 533 | }, 534 | "mri": { 535 | "version": "1.2.0", 536 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 537 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" 538 | }, 539 | "mrmime": { 540 | "version": "1.0.0", 541 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", 542 | "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==" 543 | }, 544 | "normalize-path": { 545 | "version": "3.0.0", 546 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 547 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 548 | "dev": true 549 | }, 550 | "once": { 551 | "version": "1.4.0", 552 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 553 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 554 | "dev": true, 555 | "requires": { 556 | "wrappy": "1" 557 | } 558 | }, 559 | "opts": { 560 | "version": "2.0.2", 561 | "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", 562 | "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", 563 | "dev": true 564 | }, 565 | "path-is-absolute": { 566 | "version": "1.0.1", 567 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 568 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 569 | "dev": true 570 | }, 571 | "path-parse": { 572 | "version": "1.0.7", 573 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 574 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 575 | "dev": true 576 | }, 577 | "picomatch": { 578 | "version": "2.3.1", 579 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 580 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 581 | "dev": true 582 | }, 583 | "randombytes": { 584 | "version": "2.1.0", 585 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 586 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 587 | "dev": true, 588 | "requires": { 589 | "safe-buffer": "^5.1.0" 590 | } 591 | }, 592 | "readdirp": { 593 | "version": "3.6.0", 594 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 595 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 596 | "dev": true, 597 | "requires": { 598 | "picomatch": "^2.2.1" 599 | } 600 | }, 601 | "require-relative": { 602 | "version": "0.8.7", 603 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 604 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 605 | "dev": true 606 | }, 607 | "resolve": { 608 | "version": "1.22.0", 609 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 610 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 611 | "dev": true, 612 | "requires": { 613 | "is-core-module": "^2.8.1", 614 | "path-parse": "^1.0.7", 615 | "supports-preserve-symlinks-flag": "^1.0.0" 616 | } 617 | }, 618 | "rollup": { 619 | "version": "2.70.2", 620 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", 621 | "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", 622 | "dev": true, 623 | "requires": { 624 | "fsevents": "~2.3.2" 625 | } 626 | }, 627 | "rollup-plugin-css-only": { 628 | "version": "3.1.0", 629 | "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", 630 | "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", 631 | "dev": true, 632 | "requires": { 633 | "@rollup/pluginutils": "4" 634 | }, 635 | "dependencies": { 636 | "@rollup/pluginutils": { 637 | "version": "4.2.1", 638 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 639 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 640 | "dev": true, 641 | "requires": { 642 | "estree-walker": "^2.0.1", 643 | "picomatch": "^2.2.2" 644 | } 645 | } 646 | } 647 | }, 648 | "rollup-plugin-livereload": { 649 | "version": "2.0.5", 650 | "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz", 651 | "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==", 652 | "dev": true, 653 | "requires": { 654 | "livereload": "^0.9.1" 655 | } 656 | }, 657 | "rollup-plugin-svelte": { 658 | "version": "7.1.0", 659 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", 660 | "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", 661 | "dev": true, 662 | "requires": { 663 | "require-relative": "^0.8.7", 664 | "rollup-pluginutils": "^2.8.2" 665 | } 666 | }, 667 | "rollup-plugin-terser": { 668 | "version": "7.0.2", 669 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", 670 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", 671 | "dev": true, 672 | "requires": { 673 | "@babel/code-frame": "^7.10.4", 674 | "jest-worker": "^26.2.1", 675 | "serialize-javascript": "^4.0.0", 676 | "terser": "^5.0.0" 677 | } 678 | }, 679 | "rollup-pluginutils": { 680 | "version": "2.8.2", 681 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 682 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 683 | "dev": true, 684 | "requires": { 685 | "estree-walker": "^0.6.1" 686 | }, 687 | "dependencies": { 688 | "estree-walker": { 689 | "version": "0.6.1", 690 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 691 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 692 | "dev": true 693 | } 694 | } 695 | }, 696 | "sade": { 697 | "version": "1.8.1", 698 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 699 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 700 | "requires": { 701 | "mri": "^1.1.0" 702 | } 703 | }, 704 | "safe-buffer": { 705 | "version": "5.2.1", 706 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 707 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 708 | "dev": true 709 | }, 710 | "semiver": { 711 | "version": "1.1.0", 712 | "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", 713 | "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" 714 | }, 715 | "serialize-javascript": { 716 | "version": "4.0.0", 717 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 718 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 719 | "dev": true, 720 | "requires": { 721 | "randombytes": "^2.1.0" 722 | } 723 | }, 724 | "sirv": { 725 | "version": "2.0.2", 726 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", 727 | "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", 728 | "requires": { 729 | "@polka/url": "^1.0.0-next.20", 730 | "mrmime": "^1.0.0", 731 | "totalist": "^3.0.0" 732 | } 733 | }, 734 | "sirv-cli": { 735 | "version": "2.0.2", 736 | "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-2.0.2.tgz", 737 | "integrity": "sha512-OtSJDwxsF1NWHc7ps3Sa0s+dPtP15iQNJzfKVz+MxkEo3z72mCD+yu30ct79rPr0CaV1HXSOBp+MIY5uIhHZ1A==", 738 | "requires": { 739 | "console-clear": "^1.1.0", 740 | "get-port": "^3.2.0", 741 | "kleur": "^4.1.4", 742 | "local-access": "^1.0.1", 743 | "sade": "^1.6.0", 744 | "semiver": "^1.0.0", 745 | "sirv": "^2.0.0", 746 | "tinydate": "^1.0.0" 747 | } 748 | }, 749 | "source-map-support": { 750 | "version": "0.5.21", 751 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 752 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 753 | "dev": true, 754 | "requires": { 755 | "buffer-from": "^1.0.0", 756 | "source-map": "^0.6.0" 757 | }, 758 | "dependencies": { 759 | "source-map": { 760 | "version": "0.6.1", 761 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 762 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 763 | "dev": true 764 | } 765 | } 766 | }, 767 | "sourcemap-codec": { 768 | "version": "1.4.8", 769 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 770 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 771 | "dev": true 772 | }, 773 | "supports-color": { 774 | "version": "5.5.0", 775 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 776 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 777 | "dev": true, 778 | "requires": { 779 | "has-flag": "^3.0.0" 780 | } 781 | }, 782 | "supports-preserve-symlinks-flag": { 783 | "version": "1.0.0", 784 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 785 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 786 | "dev": true 787 | }, 788 | "svelte": { 789 | "version": "3.53.1", 790 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", 791 | "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", 792 | "dev": true 793 | }, 794 | "terser": { 795 | "version": "5.16.0", 796 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.0.tgz", 797 | "integrity": "sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==", 798 | "dev": true, 799 | "requires": { 800 | "@jridgewell/source-map": "^0.3.2", 801 | "acorn": "^8.5.0", 802 | "commander": "^2.20.0", 803 | "source-map-support": "~0.5.20" 804 | } 805 | }, 806 | "tinydate": { 807 | "version": "1.3.0", 808 | "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", 809 | "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" 810 | }, 811 | "to-regex-range": { 812 | "version": "5.0.1", 813 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 814 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 815 | "dev": true, 816 | "requires": { 817 | "is-number": "^7.0.0" 818 | } 819 | }, 820 | "totalist": { 821 | "version": "3.0.0", 822 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", 823 | "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==" 824 | }, 825 | "wrappy": { 826 | "version": "1.0.2", 827 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 828 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 829 | "dev": true 830 | }, 831 | "ws": { 832 | "version": "7.5.7", 833 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", 834 | "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", 835 | "dev": true 836 | } 837 | } 838 | } 839 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "numecodiag", 3 | "version": "1.0.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "rollup -c", 7 | "dev": "rollup -c -w", 8 | "start": "sirv public --no-clear" 9 | }, 10 | "devDependencies": { 11 | "@rollup/plugin-commonjs": "^17.0.0", 12 | "@rollup/plugin-node-resolve": "^11.0.0", 13 | "rollup": "^2.3.4", 14 | "rollup-plugin-css-only": "^3.1.0", 15 | "rollup-plugin-livereload": "^2.0.0", 16 | "rollup-plugin-svelte": "^7.0.0", 17 | "rollup-plugin-terser": "^7.0.0", 18 | "svelte": "^3.53.1" 19 | }, 20 | "dependencies": { 21 | "sirv-cli": "^2.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | NumÉcoDiag 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/manifest-chrome.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version" : 3, 3 | "name": "NumÉcoDiag", 4 | "description": "Cette extension web facilite l'auto-diagnostic de l’écoconception d’un service numérique.", 5 | "version": "1.0.3", 6 | "icons": { 7 | "16": "./static/numecodiag-logo-16x16.png", 8 | "48": "./static/numecodiag-logo-48x48.png", 9 | "128": "./static/numecodiag-logo-128x128.png" 10 | }, 11 | "action": { 12 | "default_icon": "./static/numecodiag-logo-48x48.png", 13 | "default_popup": "./index.html", 14 | "default_title": "NumÉcoDiag" 15 | }, 16 | "permissions": [ 17 | "storage" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version" : 2, 3 | "name": "NumÉcoDiag", 4 | "description": "Cette WebExtension développée et mise à disposition gratuitement par la MiNumEco facilite l'auto-diagnostic de l’écoconception d’un service numérique, conformément au Référentiel Général d'Écoconception de Services Numériques (RGESN)", 5 | "version": "1.0.3", 6 | "icons": { 7 | "16": "./static/numecodiag-logo-16x16.png", 8 | "48": "./static/numecodiag-logo-48x48.png", 9 | "128": "./static/numecodiag-logo-128x128.png" 10 | }, 11 | "browser_action": { 12 | "default_icon": "./static/numecodiag-logo-48x48.png", 13 | "default_popup": "./index.html", 14 | "default_title": "NumÉcoDiag" 15 | }, 16 | "commands": { 17 | "_execute_browser_action": { 18 | "suggested_key": { 19 | "default": "Alt+Shift+D" 20 | } 21 | } 22 | }, 23 | "permissions": [ 24 | "storage" 25 | ] 26 | } -------------------------------------------------------------------------------- /public/rgesn/v1.json: -------------------------------------------------------------------------------- 1 | {"title":"Référentiel général d'écoconception de services numériques","url":"https://ecoresponsable.numerique.gouv.fr/","description":"Référentiel piloté par la DINUM, le Ministère de la Transition Écologique, l’ADEME et l’Institut du Numérique Responsable","version":"v1","updated_at":"2022-11-29","author":{"name":"MiNumEco, la mission interministérielle numérique écoresponsable","url":"https://ecoresponsable.numerique.gouv.fr/a-propos/"},"criteres":[{"id":"1.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.1/","critere":"Le service numérique a-t-il été évalué favorablement en termes d'utilité en tenant compte de ses impacts environnementaux ?","thematique":"Stratégie"},{"id":"1.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.2/","critere":"Le service numérique a-t-il défini ses cibles utilisatrices ?","thematique":"Stratégie"},{"id":"1.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.3/","critere":"Le service numérique a-t-il défini les besoins métiers et les attentes réelles des utilisateurs cibles ?","thematique":"Stratégie"},{"id":"1.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.4/","critere":"Le service numérique a-t-il défini la liste des profils de matériel que les utilisateurs vont pouvoir employer pour y accéder ?","thematique":"Stratégie"},{"id":"1.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.5/","critere":"Le service numérique est-il utilisable sur des terminaux âgés de 5 ans ou plus ?","thematique":"Stratégie"},{"id":"1.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.6/","critere":"Le service numérique s'adapte-t-il à différents types de terminaux d'affichage ?","thematique":"Stratégie"},{"id":"1.7","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.7/","critere":"Le service numérique a-t-il été conçu avec des technologies standard interopérables plutôt que des technologies spécifiques et fermées ?","thematique":"Stratégie"},{"id":"1.8","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.8/","critere":"Le service numérique a-t-il au moins un référent identifié en écoconception numérique ?","thematique":"Stratégie"},{"id":"1.9","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.9/","critere":"Le service numérique a-t-il identifié des indicateurs pour mesurer ses impacts environnementaux ?","thematique":"Stratégie"},{"id":"1.10","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.10/","critere":"Le service numérique s'est-il fixé des objectifs en matière de réduction ou de limitation de ses propres impacts environnementaux ?","thematique":"Stratégie"},{"id":"1.11","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.11/","critere":"Le service numérique réalise-t-il régulièrement des revues pour s'assurer du respect de la réduction ou de la limitation de ses impacts environnementaux ?","thematique":"Stratégie"},{"id":"1.12","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/1.12/","critere":"Le service numérique publie-t-il une déclaration ou une politique d'écoconception ?","thematique":"Stratégie"},{"id":"2.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/2.1/","critere":"Le service numérique a-t-il été conçu avec une revue de conception et une revue de code en ayant pour un des objectifs de réduire les impacts environnementaux de chaque fonctionnalité ?","thematique":"Spécifications"},{"id":"2.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/2.2/","critere":"Le service numérique a-t-il prévu une stratégie de décommissionnement pour ses fonctionnalités, ses composants ou ses environnements non utilisés ?","thematique":"Spécifications"},{"id":"2.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/2.3/","critere":"Le service numérique impose-t-il à ses fournisseurs de garantir une démarche de réduction de leurs impacts environnementaux ?","thematique":"Spécifications"},{"id":"2.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/2.4/","critere":"Le service numérique a-t-il pris en compte les impacts environnementaux des composants d'interface prêts à l'emploi utilisés ?","thematique":"Spécifications"},{"id":"2.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/2.5/","critere":"Le service numérique a-t-il pris en compte les impacts environnementaux des services tiers utilisés lors de leur sélection ?","thematique":"Spécifications"},{"id":"3.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.1/","critere":"Le service numérique repose-t-il sur une architecture, des ressources ou des composants conçus pour réduire leurs propres impacts environnementaux ?","thematique":"Architecture"},{"id":"3.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.2/","critere":"Le service numérique fonctionne-t-il sur une architecture pouvant adapter la quantité de ressources utilisées en fonction de la consommation du service ?","thematique":"Architecture"},{"id":"3.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.3/","critere":"Le service numérique a-t-il pris en compte l'évolution technique des protocoles ?","thematique":"Architecture"},{"id":"3.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.4/","critere":"Le service numérique utilise-t-il un protocole d'échange adapté aux contenus transférés ?","thematique":"Architecture"},{"id":"3.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.5/","critere":"Le service numérique garantit-il la mise à disposition de mises à jour correctives pendant toute la durée de vie prévue des équipements et des logiciels liés au service ?","thematique":"Architecture"},{"id":"3.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/3.6/","critere":"Le service numérique propose-t-il d'installer des mises à jour correctives indépendamment des mises à jour évolutives ?","thematique":"Architecture"},{"id":"4.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.1/","critere":"Le service numérique est-il utilisable via une connexion bas débit ?","thematique":"UX/UI"},{"id":"4.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.2/","critere":"Le service numérique comporte-t-il uniquement des éléments animations, vidéos et sons dont la lecture automatique est désactivée ?","thematique":"UX/UI"},{"id":"4.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.3/","critere":"Le service numérique affiche-t-il uniquement des contenus sans défilement de page infini ?","thematique":"UX/UI"},{"id":"4.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.4/","critere":"Le service numérique optimise-t-il le parcours de navigation pour chaque fonctionnalité principale ?","thematique":"UX/UI"},{"id":"4.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.5/","critere":"Le service numérique permet-il à l'utilisateur de décider de l'activation d'un service tiers ?","thematique":"UX/UI"},{"id":"4.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.6/","critere":"Le service numérique utilise-t-il majoritairement des composants fonctionnels natifs du système d'exploitation, du navigateur ou du langage utilisé ?","thematique":"UX/UI"},{"id":"4.7","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.7/","critere":"Le service numérique utilise-t-il uniquement du contenu vidéo, audio et animé porteur d'informations ?","thematique":"UX/UI"},{"id":"4.8","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.8/","critere":"Le service numérique utilise-t-il du texte ou de l'image au lieu de contenu vidéo, audio ou animé lorsque cela est possible ?","thematique":"UX/UI"},{"id":"4.9","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.9/","critere":"Le service numérique permet-il de mettre en pause les animations, défilement ou clignotement ?","thematique":"UX/UI"},{"id":"4.10","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.10/","critere":"Le service numérique utilise-t-il majoritairement des polices de caractères du système d'exploitation ?","thematique":"UX/UI"},{"id":"4.11","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.11/","critere":"Le service numérique limite-t-il les requêtes serveur lors de la saisie utilisateur ?","thematique":"UX/UI"},{"id":"4.12","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.12/","critere":"Le service numérique informe-t-il l'utilisateur du format de saisie attendu avant sa validation ?","thematique":"UX/UI"},{"id":"4.13","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.13/","critere":"Le service numérique vérifie-t-il les saisies et les formats de données obligatoires à la soumission d'un formulaire sans requête serveur lorsque c'est possible ?","thematique":"UX/UI"},{"id":"4.14","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.14/","critere":"Le service numérique informe-t-il l'utilisateur, avant le transfert, des poids et formats de fichier attendus ?","thematique":"UX/UI"},{"id":"4.15","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.15/","critere":"Le service numérique vérifie-t-il des limites de poids et de formats sur les fichiers pouvant être transmis par l'utilisateur ?","thematique":"UX/UI"},{"id":"4.16","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.16/","critere":"Le service numérique indique-t-il à l'utilisateur que l'utilisation d'une fonctionnalité a des impacts environnementaux importants ?","thematique":"UX/UI"},{"id":"4.17","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.17/","critere":"Le service numérique propose-t-il des notifications uniquement lorsque c'est nécessaire ?","thematique":"UX/UI"},{"id":"4.18","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.18/","critere":"Le service numérique permet-il à l'utilisateur de contrôler les notifications qu'il reçoit ?","thematique":"UX/UI"},{"id":"4.19","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/4.19/","critere":"Le service numérique fournit-il à l'utilisateur un moyen de contrôle sur ses contenus et ses services afin de réduire les impacts environnementaux ?","thematique":"UX/UI"},{"id":"5.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.1/","critere":"Le service numérique utilise-t-il un format de fichier adapté au contenu et au contexte de visualisation de chaque image ?","thematique":"Contenus"},{"id":"5.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.2/","critere":"Le service numérique propose-t-il des images dont le niveau de compression est adapté au contenu et au contexte de visualisation ?","thematique":"Contenus"},{"id":"5.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.3/","critere":"Le service numérique utilise-t-il un format de fichier adapté au contenu et au contexte de visualisation pour chaque vidéo ?","thematique":"Contenus"},{"id":"5.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.4/","critere":"Le service numérique propose-t-il des vidéos dont le niveau de compression est adapté au contenu et au contexte de visualisation ?","thematique":"Contenus"},{"id":"5.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.5/","critere":"Le service numérique utilise-t-il un format de fichier adapté au contenu et au contexte d'écoute de chaque contenu audio ?","thematique":"Contenus"},{"id":"5.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.6/","critere":"Le service numérique propose-t-il des contenus audio dont le niveau de compression est adapté au contenu et au contexte d'écoute ?","thematique":"Contenus"},{"id":"5.7","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.7/","critere":"Le service numérique utilise-t-il un format de fichier adapté au contenu et au contexte d'utilisation pour chaque document ?","thematique":"Contenus"},{"id":"5.8","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.8/","critere":"Le service numérique propose-t-il des documents dont le niveau de compression est adapté au contenu et au contexte d'utilisation ?","thematique":"Contenus"},{"id":"5.9","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/5.9/","critere":"Le service numérique a-t-il une stratégie d'archivage et de suppression, automatiques ou manuelles, des contenus obsolètes ou périmés ?","thematique":"Contenus"},{"id":"6.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.1/","critere":"Le service numérique s'astreint-il à un poids maximum par écran ?","thematique":"Frontend"},{"id":"6.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.2/","critere":"Le service numérique s'astreint-il à une limite de requêtes par écran ?","thematique":"Frontend"},{"id":"6.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.3/","critere":"Le service numérique utilise-t-il des mécanismes de mises en cache pour la totalité des contenus transférés dont il a le contrôle ?","thematique":"Frontend"},{"id":"6.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.4/","critere":"Le service numérique a-t-il mis en place des techniques de compression sur la totalité des ressources transférées dont il a le contrôle ?","thematique":"Frontend"},{"id":"6.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.5/","critere":"Le service numérique affiche-t-il majoritairement des éléments graphiques et des médias dont les dimensions d'origine correspondent aux dimensions du contexte d'affichage ?","thematique":"Frontend"},{"id":"6.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.6/","critere":"Le service numérique propose-t-il un mécanisme de chargement progressif pour les éléments graphiques et les médias le nécessitant ?","thematique":"Frontend"},{"id":"6.7","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.7/","critere":"Le service numérique se limite-t-il au chargement des composants utilisés au sein des bibliothèques lorsque cela est possible ?","thematique":"Frontend"},{"id":"6.8","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.8/","critere":"Le service numérique évite-t-il de déclencher le chargement de ressources et de contenus inutilisés pour chaque fonctionnalité ?","thematique":"Frontend"},{"id":"6.9","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.9/","critere":"Le service numérique utilise-t-il un stockage côté client de certaines ressources afin d'éviter des échanges réseaux inutiles ?","thematique":"Frontend"},{"id":"6.10","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.10/","critere":"Le service numérique restreint-il l'usage des capteurs des terminaux utilisateur au besoin du service plutôt qu'en permanence ?","thematique":"Frontend"},{"id":"6.11","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/6.11/","critere":"Le service numérique héberge-t-il les ressources statiques transférées dont il est l'émetteur sur un même domaine ?","thematique":"Frontend"},{"id":"7.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/7.1/","critere":"Le service numérique a-t-il recours à un système de cache serveur pour les données les plus utilisées ?","thematique":"Backend"},{"id":"7.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/7.2/","critere":"Le service numérique est-il configuré pour transmettre depuis le serveur des contenus compressés au client qui les accepte ?","thematique":"Backend"},{"id":"7.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/7.3/","critere":"Le service numérique définit-il des durées de conservation sur les données et documents qui le nécessitent ?","thematique":"Backend"},{"id":"7.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/7.4/","critere":"Le service numérique archive-t-il ou supprime-t-il les données et documents après expiration de leur durée de conservation ?","thematique":"Backend"},{"id":"7.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/7.5/","critere":"Le service numérique informe-t-il l'utilisateur d'un traitement en cours en arrière-plan ?","thematique":"Backend"},{"id":"8.1","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.1/","critere":"Le service numérique utilise-t-il un hébergement signataire du Code de Conduite européen sur les Datacentres ?","thematique":"Hébergement"},{"id":"8.2","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.2/","critere":"Le service numérique utilise-t-il un hébergement ayant une démarche de réduction de son impact écologique ?","thematique":"Hébergement"},{"id":"8.3","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.3/","critere":"Le service numérique utilise-t-il un hébergement qui fournit une politique de gestion durable des équipements ?","thematique":"Hébergement"},{"id":"8.4","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.4/","critere":"Le service numérique utilise-t-il un hébergement qui fournit des indicateurs d'impacts environnementaux liés à son activité ?","thematique":"Hébergement"},{"id":"8.5","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.5/","critere":"Le service numérique utilise-t-il un hébergement dont le PUE (Power Usage Effectiveness) est communiqué ?","thematique":"Hébergement"},{"id":"8.6","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.6/","critere":"Le service numérique utilise-t-il un hébergement dont son WUE (Water Usage Effectiveness) est communiqué ?","thematique":"Hébergement"},{"id":"8.7","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.7/","critere":"Le service numérique utilise-t-il un hébergement dont la consommation d'électricité est majoritairement d'origine renouvelable ?","thematique":"Hébergement"},{"id":"8.8","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.8/","critere":"Le service numérique utilise-t-il un hébergement dont la localisation géographique est en cohérence avec celle de ses utilisateurs et de ses activités ?","thematique":"Hébergement"},{"id":"8.9","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.9/","critere":"Le service numérique héberge-t-il de façon distincte les données « chaudes » et « froides » ?","thematique":"Hébergement"},{"id":"8.10","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.10/","critere":"Le service numérique duplique-t-il les données uniquement lorsque cela est nécessaire ?","thematique":"Hébergement"},{"id":"8.11","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.11/","critere":"Le service numérique utilise-t-il une redondance uniquement lorsque cela est nécessaire ?","thematique":"Hébergement"},{"id":"8.12","url":"https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/critere/8.12/","critere":"Le service numérique utilise-t-il un hébergement qui récupère la chaleur fatale produite par les serveurs ?","thematique":"Hébergement"}]} 2 | -------------------------------------------------------------------------------- /public/static/logo-minumeco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/logo-minumeco.png -------------------------------------------------------------------------------- /public/static/logo-minumeco.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/static/marianne-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/marianne-bold.woff2 -------------------------------------------------------------------------------- /public/static/marianne-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/marianne-regular.woff2 -------------------------------------------------------------------------------- /public/static/numecodiag-logo-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/numecodiag-logo-128x128.png -------------------------------------------------------------------------------- /public/static/numecodiag-logo-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/numecodiag-logo-16x16.png -------------------------------------------------------------------------------- /public/static/numecodiag-logo-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DISIC/NumEcoDiag/6696964cc47374f007a35280d119f9840748cd6a/public/static/numecodiag-logo-48x48.png -------------------------------------------------------------------------------- /public/static/numecodiag-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 41 | 46 | 57 | 61 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # NumÉcoDiag 2 | 3 | Cette WebExtension développée et mise à disposition gratuitement par la [MiNumEco](https://ecoresponsable.numerique.gouv.fr/) facilite l’auto-diagnostic de l’écoconception d’un service numérique, conformément au [Référentiel Général d'Écoconception de Services Numériques](https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/) (RGESN). 4 | 5 | Réalisation : [Pôle écoconception Temesis](https://www.temesis.com/). 6 | 7 | ## Installation 8 | 9 | * [Firefox](https://addons.mozilla.org/fr/firefox/addon/num%C3%A9codiag/) 10 | * [Chrome](https://chrome.google.com/webstore/detail/num%C3%A9codiag/fhdeahmddgflanbgilcglipaeofmcabc) 11 | * Edge (à venir, utiliser en attendant l'extension [Chrome](https://chrome.google.com/webstore/detail/num%C3%A9codiag/fhdeahmddgflanbgilcglipaeofmcabc)) 12 | 13 | ## Installation manuelle 14 | 15 | 1. Installer [nodeJS](https://nodejs.org/fr/) (v16 minimum) et le gestionnaire de paquets NPM. 16 | 2. Dans un terminal, depuis le dossier téléchargé, lancer la commande `npm install` pour télécharger / installer les dépendances de développement du projet. 17 | 3. Dans le même terminal, lancer ensuite la commande `npm run build` pour construire l'application depuis les sources fournies. 18 | 4. Procédure d'installation spécifique 19 | - Sur Firefox : charger l'extension depuis l'adresse `about:debbuging` en sélectionnant le fichier `public/manifest.json`. 20 | - Sur Chrome : 21 | 1. Renommer le fichier `/public/manifest-chrome.json` en `manifest.json`. 22 | 2. Charger l'extension depuis l'adresse `chrome://extensions/` en sélectionnant le dossier `public`. 23 | 5. L'accès au popup se fait depuis la partie supérieure droite du navigateur. 24 | 25 | ## Licences 26 | 27 | * Le RGESN est sous [licence ouverte Etalab v2](https://www.etalab.gouv.fr/licence-ouverte-open-licence). 28 | * L'extension est sous [licence European Union Public License 1](https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20FR.txt). 29 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import svelte from 'rollup-plugin-svelte'; 2 | import commonjs from '@rollup/plugin-commonjs'; 3 | import resolve from '@rollup/plugin-node-resolve'; 4 | import livereload from 'rollup-plugin-livereload'; 5 | import { terser } from 'rollup-plugin-terser'; 6 | import css from 'rollup-plugin-css-only'; 7 | 8 | const production = !process.env.ROLLUP_WATCH; 9 | 10 | function serve() { 11 | let server; 12 | 13 | function toExit() { 14 | if (server) server.kill(0); 15 | } 16 | 17 | return { 18 | writeBundle() { 19 | if (server) return; 20 | server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { 21 | stdio: ['ignore', 'inherit', 'inherit'], 22 | shell: true 23 | }); 24 | 25 | process.on('SIGTERM', toExit); 26 | process.on('exit', toExit); 27 | } 28 | }; 29 | } 30 | 31 | export default { 32 | input: 'src/main.js', 33 | output: { 34 | sourcemap: true, 35 | format: 'iife', 36 | name: 'app', 37 | file: 'public/assets/app.js' 38 | }, 39 | plugins: [ 40 | svelte({ 41 | compilerOptions: { 42 | // enable run-time checks when not in production 43 | dev: !production 44 | } 45 | }), 46 | // we'll extract any component CSS out into 47 | // a separate file - better for performance 48 | css({ output: 'app.css' }), 49 | 50 | // If you have external dependencies installed from 51 | // npm, you'll most likely need these plugins. In 52 | // some cases you'll need additional configuration - 53 | // consult the documentation for details: 54 | // https://github.com/rollup/plugins/tree/master/packages/commonjs 55 | resolve({ 56 | browser: true, 57 | dedupe: ['svelte'] 58 | }), 59 | commonjs(), 60 | 61 | // In dev mode, call `npm run start` once 62 | // the bundle has been generated 63 | !production && serve(), 64 | 65 | // Watch the `public` directory and refresh the 66 | // browser on changes when not in production 67 | !production && livereload('public'), 68 | 69 | // If we're building for production (npm run build 70 | // instead of npm run dev), minify 71 | production && terser() 72 | ], 73 | watch: { 74 | clearScreen: false 75 | } 76 | }; 77 | -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 218 | 219 |
220 | 221 |
222 | {#if referential} 223 | {#key render } 224 | 227 | 232 | 236 | {/key} 237 | {/if} 238 | 239 |
240 | 241 | 279 | -------------------------------------------------------------------------------- /src/components/About.svelte: -------------------------------------------------------------------------------- 1 |
2 |

À propos

3 |
4 | Logo MiNumEco 5 |

Cet outil développé et mis à disposition gratuitement par la MiNumEco facilite l'auto-diagnostic de l’écoconception d’un service numérique, conformément au Référentiel Général d'Écoconception de Services Numériques (RGESN).

6 |
7 |

8 | Le RGESN est sous licence ouverte Etalab v2.
9 | Cet outil est sous licence European Union Public License 1.

10 |

Sécurité et protection des données : les données sont stockées uniquement dans votre navigateur. Aucune donnée n'est collectée. NumÉcoDiag fonctionne seule sans communication réseau. Un export CSV est disponible pour exploiter les résultats du diagnostic. Le code est audité automatiquement par l'outil d'audit de sécurité Snyk.

11 |

Pour contribuer à l'amélioration de cet outil (report de bugs, pistes d'amélioration, etc.), visitez le dépôt GitHub officiel du projet. Pour en savoir plus, consulter la page officielle NumÉcoDiag.

12 |

Réalisation : MiNumEco, Temesis.

13 |
14 | 15 | -------------------------------------------------------------------------------- /src/components/AuditForm.svelte: -------------------------------------------------------------------------------- 1 | 55 | 56 |
57 |

58 | Auto-diagnostic RGESN version {referential.version} 59 |

60 |

61 | {audit.byCounters.satisfied + audit.byCounters.rejected + audit.byCounters.notApplicable} critère(s) évalué(s) sur {referential.criteres.length} 62 |

63 | 64 |

Thématiques

65 |
    66 | {#each thematiques as thematique} 67 |
  1. {thematique}
  2. 68 | {/each} 69 |
70 | 71 |

À propos de l'évaluation

72 |

73 | Cette évaluation déclarative se base sur le RGESN, Référentiel Général d’Écoconception des Services Numériques, publié par la MiNumEco et copiloté par la DINUM, le ministère de la Transition écologique, l'ADEME et l'INR pour la mise en conformité des services numériques de l’administration française et partagé avec l’ensemble des acteurs du numérique. 74 |

75 |

76 | Cette auto-évaluation vous permet de situer le niveau d’écoconception de votre service numérique et de l’afficher sur vos outils de communication (en téléchargeant un badge HTML). 77 | Vous n’êtes pas obligés de répondre à toutes les questions pour obtenir un premier résultat. Il est important de réaliser cette évaluation avec l'ensemble de l'équipe et des parties prenantes de votre projet. 78 | Pour chaque critère, 4 options sont disponibles : À évaluer, Conforme, Non conforme et Non applicable dans votre contexte projet. Il est important de justifier en commentaire lorsqu'un critère est conforme ou non applicable. 79 |

80 | 81 | {#each referential.criteres as critere} 82 | {@const critereId = critere.id.replace('.', '-')} 83 | 84 | {#if isAnotherTheme(critere.thematique)} 85 |

{critere.thematique}

86 | {/if} 87 |
88 |

89 | {critere.id} : {critere.critere} 90 | 94 | 95 | 96 |

97 |
98 |
99 | 109 | 118 | 127 | 136 |
137 |
138 |
139 |
Commentaire
140 | 141 | 142 |
143 |
144 | {/each} 145 |
146 | 147 | -------------------------------------------------------------------------------- /src/components/Donut.svelte: -------------------------------------------------------------------------------- 1 | 42 | 43 | 51 | 52 | -------------------------------------------------------------------------------- /src/components/Header.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/Navigation.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | -------------------------------------------------------------------------------- /src/components/Options.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/components/Results.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 |

Résultats

13 |
14 | 15 | 16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /src/components/Stats.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
Total critères{nbOfCriteria}
À évaluer{nbOfCriteria - (assessed)}
Conformes{counters.satisfied}
Non conformes{counters.rejected}
Non applicables{counters.notApplicable}
Conformité ({assessed} critères évalués){conformity !== 'NaN' ? conformity + ' %' : 'Indisponible'}
37 | 38 | 75 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import App from './App.svelte'; 2 | 3 | var app = new App({ 4 | target: document.body 5 | }); 6 | 7 | export default app; --------------------------------------------------------------------------------