@starterlib/eslint-config 0.10.2 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.mjs +33 -0
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -112,6 +112,19 @@ const IMPORTS_INTERDITS = {
112
112
  ],
113
113
  };
114
114
 
115
+ /**
116
+ * Aucun appel HTTP ecrit a la main dans le code de l'application (lot 175, ADR web 0008) : le client
117
+ * d'API est ENGENDRE depuis le contrat du service, dans `src/app/donnees/genere/`, avec ses DTO ; un
118
+ * DTO recopie a la main derivait du contrat sans que rien le signale. Les essais gardent le client
119
+ * HTTP d'essai ; le client engendre, lui, importe `HttpClient`.
120
+ */
121
+ const HTTP_ECRIT_A_LA_MAIN = {
122
+ name: '@angular/common/http',
123
+ importNames: ['HttpClient'],
124
+ message:
125
+ "Le client d'API est engendre depuis le contrat du service (src/app/donnees/genere/, ADR web 0008) : aucun appel ecrit a la main.",
126
+ };
127
+
115
128
  /** Ce qu'un remote n'a pas le droit de FOURNIR : l'hote le fait (ADR 0029 §2, plan SPA §4). */
116
129
  const FOURNI_PAR_L_HOTE = [
117
130
  {
@@ -271,6 +284,26 @@ export function configurationDuSocle({ prefixe, racine, role = 'remote', ignores
271
284
  },
272
285
  }
273
286
  : {},
287
+ {
288
+ // Le code de l'application, essais et client engendre a part : aucun appel HTTP ecrit a la
289
+ // main (lot 175). Les options d'une regle ne se fusionnent pas d'un bloc a l'autre : ce bloc,
290
+ // le dernier, reprend les imports interdits de son role et y ajoute `HttpClient`.
291
+ files: ['src/app/**/*.ts'],
292
+ ignores: ['src/app/**/*.spec.ts', 'src/app/donnees/genere/**'],
293
+ rules: {
294
+ 'no-restricted-imports': [
295
+ 'error',
296
+ {
297
+ ...IMPORTS_INTERDITS,
298
+ paths: [
299
+ ...IMPORTS_INTERDITS.paths,
300
+ ...(role === 'remote' ? FOURNI_PAR_L_HOTE : []),
301
+ HTTP_ECRIT_A_LA_MAIN,
302
+ ],
303
+ },
304
+ ],
305
+ },
306
+ },
274
307
  );
275
308
  }
276
309
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starterlib/eslint-config",
3
- "version": "0.10.2",
3
+ "version": "0.10.4",
4
4
  "description": "Configuration ESLint d'une SPA du socle frontal starter, parametree par son prefixe, et configuration stylelint de ses feuilles. Remplace les eslint.config.mjs recopies.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",