@starterlib/eslint-plugin
v0.11.6
Published
Regles ESLint du socle frontal starter (gabarits et code des SPA) : no-raw-interactive, no-literal-text, no-angular-locale-pipes, route-has-title, no-toast-danger, no-free-text-query-param. Active par @starterlib/eslint-config.
Downloads
3,613
Maintainers
Readme
@starterlib/eslint-plugin
Les regles ESLint du socle frontal qu'aucun greffon existant ne tient, chacune liee a une ligne du
plan SPA §4. @starterlib/eslint-config les active : une SPA n'installe ce greffon que pour elle.
| Regle | Sur | Ce qu'elle refuse |
| -------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| no-raw-interactive | gabarit | button, a, input, select, textarea sans primitive du socle (stButton, stLink, st-input...) |
| no-literal-text | gabarit | Un texte litteral, ou un attribut lu (aria-label, title, placeholder, label...) ecrit en dur |
| no-angular-locale-pipes | gabarit | date, currency, number, percent : la locale d'Angular, figee au demarrage |
| no-role-comparison | gabarit | Un role compare dans un gabarit (role === 'ADMIN', roles().includes(...), hasRole(...)) : *stPermission, StSession.peut() (lot 281) |
| no-style-literal | gabarit | Un style local (style, [style], [style.x] lies a un litteral, [ngStyle]) : couleur, rayon, ombre ou police ecrits, jeton --st-* redefini hors des reglages de niveau 3 (P08-11) |
| variantes-reservees | gabarit | Une variante que l'application reserve, hors de ses emplacements (stButton variante="danger" hors de l'arret d'urgence, P08-11) |
| route-has-title | code | Une route qui affiche une page (component, loadComponent) sans title |
| no-toast-danger | code | StToast.montrer({ ton: 'danger' }) : une erreur reste a l'ecran |
| no-free-text-query-param | code | Un texte libre (recherche, nom, courriel, IBAN) dans les queryParams de l'adresse |
| custom-element-name | code | customElements.define sans nom ecrit en clair sous le nom enregistre de l'application (lot 299) |
Les regles de gabarit lisent l'arbre de @angular-eslint/template-parser, celui que la
configuration d'angular-eslint pose sur les .html. Le greffon n'a aucune dependance.
Seul le socle fait le design (P08-11)
Une SPA place des composants (grille, marges et espacements par jetons) ; elle n'ecrit ni couleur,
ni rayon, ni ombre, ni police, et ne redefinit aucun jeton --st-* hors des reglages de niveau 3
(REGLAGES_DE_NIVEAU_3, la liste du README des jetons). no-style-literal le garde dans les
gabarits ; la configuration stylelint du socle (@starterlib/eslint-config/stylelint), dans les
feuilles, avec les memes refus. La machine verifie l'absence de style local ; l'apparence se juge a
l'oeil.
variantes-reservees se configure par application, par configurationDuSocle({ variantesReservees }) :
variantesReservees: [
{ directive: 'stButton', entree: 'variante', valeur: 'danger',
emplacements: ['src/app/arret-d-urgence/**'], raison: 'DEC-105 : le rouge est a l arret' },
{ element: 'st-banner', entree: 'ton', valeur: 'danger', emplacements: ['src/app/arret-d-urgence/**'] },
{ element: 'st-status-pill', entree: 'ton', valeur: 'danger', emplacements: ['src/app/arret-d-urgence/**'] },
],Un element est vise par son nom (element) ou par une directive qu'il porte (directive) ; la
variante, par la valeur statique de son entree ou par une valeur litterale de son expression liee
([variante]="arret ? 'danger' : 'primaire'"). Les emplacements sont des motifs de chemins relatifs
au projet (*, **, ?).
Une exemption s'ecrit sur place, nommee et DATEE, et se journalise dans le CHANGELOG de
l'application : <!-- eslint-disable-next-line socle/no-style-literal -- 2026-10-07 : <raison> -->.
L'etape lint de starter-web verify refuse une exemption de style sans date.
