@starterlib/cli 0.11.4 → 0.11.6
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.
- package/matrice-compatibilite.md +22 -18
- package/package.json +1 -1
- package/src/commun.mjs +13 -1
- package/src/etapes/autonome.mjs +8 -7
- package/src/etapes/budget.mjs +24 -23
- package/src/navigateurs.mjs +6 -1
package/matrice-compatibilite.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Matrice de compatibilite du socle frontal
|
|
2
2
|
|
|
3
|
-
Verifiee le 2026-10-
|
|
3
|
+
Verifiee le 2026-10-11 contre le registre npm (montee au correctif 22.2.2 d'Angular, 0.11.5 ; avant elle, 22.2.1 le
|
|
4
|
+
2026-10-07 et lot 154). Toute montee de version se fait
|
|
4
5
|
**ligne par ligne, dans le meme commit**, et `pnpm versions:check` echoue si le
|
|
5
6
|
`package.json` s'en ecarte (version non exacte, autre que celle de la matrice, paquet Angular absent
|
|
6
7
|
de la matrice, greffon de federation d'une autre majeure.mineure qu'Angular, autre pnpm, Node sous le
|
|
@@ -9,31 +10,32 @@ lit CE document, publie avec lui, et ses essais le comparent a la matrice de `ve
|
|
|
9
10
|
|
|
10
11
|
⚠️ **Trois jours d'anciennete au moins** : `minimumReleaseAge: 4320` (`pnpm-workspace.yaml`) tient hors
|
|
11
12
|
du verrou toute version publiee depuis moins de trois jours (constat A1405). Une version plus recente,
|
|
12
|
-
meme corrective, attend : au 2026-10-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
meme corrective, attend : au 2026-10-11, `angular-eslint` 22.6.0 (2026-10-11), `prettier` 3.9.10 (2026-10-10)
|
|
14
|
+
et `@types/node` 24.19.2 (2026-10-09) n'entrent pas ; la version precedente de chacun reste. Angular monte en
|
|
15
|
+
22.2.2 le 2026-10-11 (correctif publie le 2026-10-08 a 17 h 55 UTC, entre au verrou trois jours plus tard ; son
|
|
16
|
+
outillage, publie le 2026-10-07, le precede). `axe-core` 4.14.0 (2026-10-05) attend `@axe-core/playwright` 4.14 :
|
|
17
|
+
les deux portent le meme numero (section des depots de SPA), et le second n'existe qu'en 4.13.0.
|
|
16
18
|
|
|
17
19
|
## Train `2026.1`
|
|
18
20
|
|
|
19
21
|
| Element | Version | Pourquoi cette version exactement |
|
|
20
22
|
| -------------------------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
-
| `@angular/core`, `common`, `compiler`, `compiler-cli`, `forms`, `platform-browser`, `router` | `22.2.
|
|
22
|
-
| `@angular/cdk`, `aria` | `22.2.
|
|
23
|
-
| `@angular/elements` | `22.2.
|
|
24
|
-
| `@angular/ssr`, `platform-server` | `22.2.
|
|
25
|
-
| `@angular/build`, `@angular/cli` | `22.2.
|
|
26
|
-
| `@angular-devkit/schematics` | `22.2.
|
|
23
|
+
| `@angular/core`, `common`, `compiler`, `compiler-cli`, `forms`, `platform-browser`, `router` | `22.2.2` | Dernier correctif de la ligne 22.2, publie le 2026-10-08 (trois jours revolus le 2026-10-11) |
|
|
24
|
+
| `@angular/cdk`, `aria` | `22.2.2` | Le paquet `aria` est stable depuis la 22 ; il porte les primitives sans style. `@angular/material` est retire : aucun composant du socle ne l'importe |
|
|
25
|
+
| `@angular/elements` | `22.2.2` | Les custom elements de `@starterlib/elements` seulement (lot 299, decision du proprietaire du 2026-10-01) ; son pair exige le numero exact de `@angular/core`, d'ou le meme 22.2.2 |
|
|
26
|
+
| `@angular/ssr`, `platform-server` | `22.2.2` | Le prerendu d'une application autonome (`starterWeb.prerendu`, 0.11.4 : le site public d'Aplomb) : la construction seule s'en sert, aucun serveur n'est livre. Le meme numero que `@angular/core`, dont leurs pairs exigent l'exact |
|
|
27
|
+
| `@angular/build`, `@angular/cli` | `22.2.2` | ⚠️ **Cadence differente de `core`.** L'outillage recoit des correctifs que le coeur ne recoit pas. Une matrice qui ne porterait qu'un seul numero mentirait des le premier correctif |
|
|
28
|
+
| `@angular-devkit/schematics` | `22.2.2` | Le moteur des schematics du CLI d'Angular, au meme numero : `@starterlib/schematics` (lot 285) n'en importe rien a l'execution, ses essais le lancent (`SchematicTestRunner`) |
|
|
27
29
|
| `ng-packagr` | `22.2.4` | Derniere stable de la ligne 22.2 (2026-10-01) |
|
|
28
|
-
| `typescript` | `6.0.3` | ⚠️ **Piege.** La 7.0.2 est publiee, mais `@angular/compiler-cli@22.2.
|
|
30
|
+
| `typescript` | `6.0.3` | ⚠️ **Piege.** La 7.0.2 est publiee, mais `@angular/compiler-cli@22.2.2` exige `>=6.0 <6.1`. Installer la derniere casse la compilation |
|
|
29
31
|
| `node` | `>=24.15.0` | 24.x LTS, declare dans `engines` ; le meme plancher que la construction Maven des SPA (`frontend.node.version`) |
|
|
30
32
|
| `pnpm` | `11.27.1` | Declare dans `packageManager` ; reglages dans `pnpm-workspace.yaml` (`allowBuilds`, `minimumReleaseAge`). Le meme pour la construction Maven des SPA (`frontend.pnpm.version` de `platform-parent`) |
|
|
31
33
|
| `vitest`, `@vitest/browser`, `@vitest/browser-playwright`, `@vitest/coverage-v8` | `5.0.3` | Lanceur officiel du constructeur `@angular/build:unit-test` ; un meme numero pour toute la famille (des numeros meles chargent deux copies du lanceur) |
|
|
32
|
-
| `playwright`, `@playwright/test` | `1.
|
|
34
|
+
| `playwright`, `@playwright/test` | `1.64.0` | Le navigateur des essais : un correctif change un rendu mesure au pixel |
|
|
33
35
|
| `eslint` | `10.12.0` | `angular-eslint@22.5.0` accepte les majeurs 9 et 10 |
|
|
34
36
|
| `angular-eslint` | `22.5.0` | Suit le majeur d'Angular |
|
|
35
37
|
| `stylelint`, `postcss-scss` | `17.16.0`, `4.0.9` | Les feuilles du socle et des SPA (lot 178, `@starterlib/eslint-config/stylelint`) ; `postcss-scss` lit le SCSS |
|
|
36
|
-
| `jsdom`, `axe-core` | `30.1.
|
|
38
|
+
| `jsdom`, `axe-core` | `30.1.2`, `4.13.0` | Le DOM des essais unitaires et le controle d'accessibilite : un correctif change ce qu'un essai voit |
|
|
37
39
|
|
|
38
40
|
## Prochain train : `2026.2` (prevu, non applique)
|
|
39
41
|
|
|
@@ -52,7 +54,7 @@ interfaces), avec `pnpm verify` et `banc-d-assemblage.sh --construire` verts :
|
|
|
52
54
|
| Element | Version | Avertissement |
|
|
53
55
|
| --------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
54
56
|
| `@angular-architects/native-federation` | `22.2.2` | ⚠️ **A epingler a l'exact, jamais par etiquette.** Le 2026-09-12, l'etiquette `latest` du paquet pointait sur la **21.2.6**, publiee apres la 22.1.2. Un `pnpm add` sans version ramene donc un majeur de retard, en silence, et l'echec se manifeste au chargement d'un remote, loin de la cause. Version mesuree au spike du 2026-09-16. Sa majeure.mineure est celle d'Angular (22.2) : `versions:check` refuse un couple disjoint, et les deux montent dans le meme commit (235a) |
|
|
55
|
-
| `orval` | `8.
|
|
57
|
+
| `orval` | `8.41.0` | Client d'API engendre depuis le contrat du service (ADR web 0008) : services `HttpClient` pour les ecritures, `httpResource` pour les lectures, aucun schema zod, donc aucune dependance a l'execution. Derniere stable de plus de trois jours au 2026-10-07 (8.39.0, publiee le 2026-09-30) ; a epingler a l'exact, en dependance de developpement |
|
|
56
58
|
| `es-module-shims` | `2.8.4` | Dependance du greffon, et pas un detail : c'est ELLE qui cree la politique de types de confiance `es-module-shims`. Toute montee doit verifier que le nom de la politique n'a pas change, sinon la page devient blanche sans erreur serveur |
|
|
57
59
|
| `@axe-core/playwright` | `4.13.0` | Les essais d'accessibilite de bout en bout de la coquille (Playwright) ; le meme numero qu'`axe-core`, qui fait le controle : deux moteurs d'une version differente ne signaleraient pas les memes violations |
|
|
58
60
|
|
|
@@ -79,9 +81,11 @@ Ce plancher est plus haut que celui d'Angular 22.2 (« baseline widely available
|
|
|
79
81
|
Edge 119, Firefox 119, Safari et iOS 17) : la construction ne vise pas plus bas que le socle n'en a besoin.
|
|
80
82
|
|
|
81
83
|
**Liste partagee (lot 276, 0.10.14).** La liste browserslist de chaque SPA DERIVE de la ligne du plancher
|
|
82
|
-
ci-dessus, que `@starterlib/cli` lit dans ce document publie avec lui : Chrome, Edge
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
ci-dessus, que `@starterlib/cli` lit dans ce document publie avec lui : Chrome, Edge et Chrome Android au
|
|
85
|
+
plancher de Chrome, Firefox et Firefox Android a celui de Firefox, Safari et iOS a celui de Safari. La WebView
|
|
86
|
+
d'Android, qui suit Chromium, n'a pas de ligne a elle depuis la 0.11.5 : browserslist ne la connait qu'a sa
|
|
87
|
+
derniere version et la politique d'Angular (« baseline widely available ») ne la nomme pas, si bien que chaque
|
|
88
|
+
construction avertissait d'un navigateur hors de sa prise en charge ; la cible produite ne change pas. `starter-web navigateurs` l'ecrit dans `.browserslistrc` ; l'etape `navigateurs` de
|
|
85
89
|
`starter-web verify` refuse une liste absente, plus basse ou plus large. Sous le plancher, l'hote montre
|
|
86
90
|
la page « navigateur non pris en charge » de `@starterlib/core/navigateur` au lieu de demarrer
|
|
87
91
|
(detection par fonction, jamais par l'agent utilisateur).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starterlib/cli",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.6",
|
|
4
4
|
"description": "Chaine de verification et de construction des SPA du socle frontal starter : starter-web verify, construire, sprite, manifeste, precompresser. Jamais en dependance de production.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
package/src/commun.mjs
CHANGED
|
@@ -32,9 +32,21 @@ export function lireJson(chemin) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
/** Des octets en kilo-octets, au dixieme. */
|
|
35
|
+
/** Des octets en kilo-octets, au dixieme : pour LIRE une mesure, jamais pour la juger (voir `depasse`). */
|
|
36
36
|
export const ko = (octets) => Math.round((octets / 1024) * 10) / 10;
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Vrai quand `octets` depassent `seuilKo` kilo-octets (de 1 024 octets), compare en OCTETS exacts (0.11.5). Juge sur
|
|
40
|
+
* `ko`, un depassement de moins de 52 octets se lisait au seuil et passait : le 2026-10-11, l'ecran de connexion
|
|
41
|
+
* d'Aplomb pesait 166 951 octets pour un seuil de 163 Ko (166 912 octets), lu « 163 Ko br », et l'etape le
|
|
42
|
+
* declarait conforme.
|
|
43
|
+
*/
|
|
44
|
+
export const depasse = (octets, seuilKo) => octets > seuilKo * 1024;
|
|
45
|
+
|
|
46
|
+
/** Une mesure jugee contre son seuil, lisible et exacte : `163 Ko br (166951 o) > 163 Ko br (166912 o)`. */
|
|
47
|
+
export const mesureEtSeuil = (octets, seuilKo) =>
|
|
48
|
+
`${String(ko(octets))} Ko br (${String(octets)} o) > ${String(seuilKo)} Ko br (${String(seuilKo * 1024)} o)`;
|
|
49
|
+
|
|
38
50
|
/**
|
|
39
51
|
* Empreinte courte d'un contenu, dans la forme que le socle Java reconnait comme « hachee » (huit
|
|
40
52
|
* caracteres alphanumeriques apres un tiret) : un actif ainsi nomme est servi immuable un an.
|
package/src/etapes/autonome.mjs
CHANGED
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
* 3. LE POIDS DE SON ECRAN (`starterWeb.ecran` : `{ "entree": "src/app/pages/connexion.ts",
|
|
11
11
|
* "seuilKo": 155 }`) : le chargement initial et la route de l'ecran, tout ce qu'ils importent
|
|
12
12
|
* statiquement, en brotli, lus dans la carte de la construction (`ng build --stats-json`, que
|
|
13
|
-
* `starter-web construire` pose pour ce role)
|
|
14
|
-
* mesure ecrite et datee (ADR 0031).
|
|
13
|
+
* `starter-web construire` pose pour ce role), compares au seuil en octets exacts (0.11.5). Un seuil
|
|
14
|
+
* se baisse ; il ne se leve jamais sans mesure ecrite et datee (ADR 0031).
|
|
15
15
|
*
|
|
16
16
|
* Remplace `verification/application-autonome.mjs` que l'ecran anonyme d'identity tenait seul.
|
|
17
17
|
*/
|
|
18
18
|
import { existsSync, readFileSync } from 'node:fs';
|
|
19
19
|
import { dirname, join, resolve } from 'node:path';
|
|
20
20
|
import { cloture, departDeLaPage, totaux } from '../cloture.mjs';
|
|
21
|
-
import { fichiers, ko, lireJson, relatif } from '../commun.mjs';
|
|
21
|
+
import { depasse, fichiers, ko, lireJson, mesureEtSeuil, relatif } from '../commun.mjs';
|
|
22
22
|
|
|
23
23
|
/** Ce qui trahit un moteur de federation dans un fichier livre. */
|
|
24
24
|
const MOTEUR_DE_FEDERATION =
|
|
@@ -111,12 +111,13 @@ export default {
|
|
|
111
111
|
} else {
|
|
112
112
|
const { initial, ecran: poids } = poidsDeLEcran(projet.sortie, morceau);
|
|
113
113
|
details.push(
|
|
114
|
-
`chargement initial ${String(ko(initial.brotli))} Ko br (${String(initial.fichiers)} fichiers)`,
|
|
115
|
-
`ecran ${String(ecran.entree)} ${String(ko(poids.brotli))} Ko br (${String(poids.
|
|
114
|
+
`chargement initial ${String(ko(initial.brotli))} Ko br (${String(initial.brotli)} o, ${String(initial.fichiers)} fichiers)`,
|
|
115
|
+
`ecran ${String(ecran.entree)} ${String(ko(poids.brotli))} Ko br (${String(poids.brotli)} o, ${String(poids.fichiers)} fichiers, ` +
|
|
116
|
+
`seuil ${String(ecran.seuilKo)} Ko br${typeof ecran.seuilKo === 'number' ? `, ${String(ecran.seuilKo * 1024)} o` : ''})`,
|
|
116
117
|
);
|
|
117
|
-
if (typeof ecran.seuilKo === 'number' &&
|
|
118
|
+
if (typeof ecran.seuilKo === 'number' && depasse(poids.brotli, ecran.seuilKo)) {
|
|
118
119
|
defauts.push(
|
|
119
|
-
`ecran : ${
|
|
120
|
+
`ecran : ${mesureEtSeuil(poids.brotli, ecran.seuilKo)} (un seuil ne se ` +
|
|
120
121
|
'leve jamais sans mesure ecrite et datee, ADR 0031).',
|
|
121
122
|
);
|
|
122
123
|
}
|
package/src/etapes/budget.mjs
CHANGED
|
@@ -18,7 +18,7 @@ import { readFileSync, readdirSync, existsSync, statSync } from 'node:fs';
|
|
|
18
18
|
import { dirname, join } from 'node:path';
|
|
19
19
|
import { brotliCompressSync, constants } from 'node:zlib';
|
|
20
20
|
import { cloture, departDeLaPage, totaux } from '../cloture.mjs';
|
|
21
|
-
import { fichiers, ko, lireJson, relatif } from '../commun.mjs';
|
|
21
|
+
import { depasse, fichiers, ko, lireJson, mesureEtSeuil, relatif } from '../commun.mjs';
|
|
22
22
|
import { natureDesFichiers } from '../livraison.mjs';
|
|
23
23
|
import { morceauDeLEntree } from './autonome.mjs';
|
|
24
24
|
|
|
@@ -48,6 +48,10 @@ export const BUDGETS_DU_REMOTE = { pageKo: 60, totalKo: 250, catalogueKo: 30 };
|
|
|
48
48
|
* la coquille d'Aplomb avec le cablage du parcours, le contexte de compte, l'etat du bot (en `@defer`) et
|
|
49
49
|
* le bouton d'arret permanent, 311,3 Ko.
|
|
50
50
|
*
|
|
51
|
+
* Depuis la 0.11.5, chaque seuil se juge en OCTETS exacts (`depasse`) : arrondie au dixieme de Ko, une mesure
|
|
52
|
+
* qui le depassait de moins de 52 octets se lisait au seuil et passait. Mesure du 2026-10-11, coquille d'Aplomb
|
|
53
|
+
* sur la 0.11.4 : charge initiale 295 668 octets (seuil 295 936), premier ecran 319 479 (seuil 319 488).
|
|
54
|
+
*
|
|
51
55
|
* ⚠️ Ce ne sont pas la cible du plan SPA §2.8 (170 Ko). L'ecart restant est STRUCTUREL : un paquet
|
|
52
56
|
* partage en singleton part ENTIER, parce que n'importe quel remote peut en avoir besoin. Un seuil
|
|
53
57
|
* se baisse ; il ne se leve jamais sans mesure ecrite et sans date.
|
|
@@ -137,17 +141,15 @@ function budgetDuRemote(projet) {
|
|
|
137
141
|
details.push(
|
|
138
142
|
`page ${nom} : ${String(ko(page.brotli))} Ko br (${String(page.fichiers)} fichiers)`,
|
|
139
143
|
);
|
|
140
|
-
if (
|
|
144
|
+
if (depasse(page.brotli, BUDGETS_DU_REMOTE.pageKo)) {
|
|
141
145
|
defauts.push(
|
|
142
|
-
`page ${nom} (${fichier}) : ${
|
|
146
|
+
`page ${nom} (${fichier}) : ${mesureEtSeuil(page.brotli, BUDGETS_DU_REMOTE.pageKo)}.`,
|
|
143
147
|
);
|
|
144
148
|
}
|
|
145
149
|
}
|
|
146
150
|
const total = totaux(charges);
|
|
147
|
-
if (
|
|
148
|
-
defauts.push(
|
|
149
|
-
`total charge : ${String(ko(total.brotli))} Ko br > ${String(BUDGETS_DU_REMOTE.totalKo)} Ko.`,
|
|
150
|
-
);
|
|
151
|
+
if (depasse(total.brotli, BUDGETS_DU_REMOTE.totalKo)) {
|
|
152
|
+
defauts.push(`total charge : ${mesureEtSeuil(total.brotli, BUDGETS_DU_REMOTE.totalKo)}.`);
|
|
151
153
|
}
|
|
152
154
|
const dossierI18n = join(projet.sortie, 'i18n');
|
|
153
155
|
const catalogues = existsSync(dossierI18n)
|
|
@@ -156,10 +158,8 @@ function budgetDuRemote(projet) {
|
|
|
156
158
|
for (const catalogue of catalogues) {
|
|
157
159
|
const taille = brotliDe(join(dossierI18n, catalogue));
|
|
158
160
|
details.push(`i18n/${catalogue} : ${String(ko(taille))} Ko br`);
|
|
159
|
-
if (
|
|
160
|
-
defauts.push(
|
|
161
|
-
`i18n/${catalogue} : ${String(ko(taille))} Ko br > ${String(BUDGETS_DU_REMOTE.catalogueKo)} Ko.`,
|
|
162
|
-
);
|
|
161
|
+
if (depasse(taille, BUDGETS_DU_REMOTE.catalogueKo)) {
|
|
162
|
+
defauts.push(`i18n/${catalogue} : ${mesureEtSeuil(taille, BUDGETS_DU_REMOTE.catalogueKo)}.`);
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
return {
|
|
@@ -231,30 +231,31 @@ function budgetDeLHote(projet) {
|
|
|
231
231
|
const premierEcran = premierEcranDeLHote(projet.sortie, depart, carte, morceaux);
|
|
232
232
|
const ecran = totaux(premierEcran);
|
|
233
233
|
const details = [
|
|
234
|
-
`charge initiale ${String(ko(initiale.brotli))} Ko br (${String(initiale.
|
|
235
|
-
|
|
234
|
+
`charge initiale ${String(ko(initiale.brotli))} Ko br (${String(initiale.brotli)} o, ` +
|
|
235
|
+
`${String(initiale.fichiers)} fichiers, seuil ${String(BUDGETS_DE_L_HOTE.chargeInitialeKo * 1024)} o)`,
|
|
236
|
+
`premier ecran reel ${String(ko(ecran.brotli))} Ko br (${String(ecran.brotli)} o, ` +
|
|
237
|
+
`${String(ecran.fichiers)} fichiers, seuil ${String(BUDGETS_DE_L_HOTE.premierEcranKo * 1024)} o, ` +
|
|
236
238
|
`${morceaux === null ? 'toutes les pages de route' : 'entrees declarees'})`,
|
|
237
239
|
...[...premierEcran.entries()]
|
|
238
240
|
.sort((a, b) => b[1].brotli - a[1].brotli)
|
|
239
241
|
.slice(0, 5)
|
|
240
242
|
.map(([chemin, taille]) => ` ${String(ko(taille.brotli))} Ko br ${chemin}`),
|
|
241
243
|
];
|
|
242
|
-
if (
|
|
244
|
+
if (depasse(initiale.brotli, BUDGETS_DE_L_HOTE.chargeInitialeKo)) {
|
|
243
245
|
defauts.push(
|
|
244
|
-
`charge initiale : ${
|
|
246
|
+
`charge initiale : ${mesureEtSeuil(initiale.brotli, BUDGETS_DE_L_HOTE.chargeInitialeKo)}.`,
|
|
245
247
|
);
|
|
246
248
|
}
|
|
247
|
-
if (
|
|
249
|
+
if (depasse(ecran.brotli, BUDGETS_DE_L_HOTE.premierEcranKo)) {
|
|
248
250
|
defauts.push(
|
|
249
|
-
`premier ecran : ${
|
|
251
|
+
`premier ecran : ${mesureEtSeuil(ecran.brotli, BUDGETS_DE_L_HOTE.premierEcranKo)} (garde de non-regression).`,
|
|
250
252
|
);
|
|
251
253
|
}
|
|
252
|
-
const avertissements =
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
: [];
|
|
254
|
+
const avertissements = depasse(ecran.brotli, BUDGETS_DE_L_HOTE.cibleDuPlanKo)
|
|
255
|
+
? [
|
|
256
|
+
`cible du plan SPA (section 2.8) : ${String(BUDGETS_DE_L_HOTE.cibleDuPlanKo)} Ko, ecart assume (ADR 0031).`,
|
|
257
|
+
]
|
|
258
|
+
: [];
|
|
258
259
|
return { defauts, avertissements, details, resume: 'premier ecran dans ses seuils.' };
|
|
259
260
|
}
|
|
260
261
|
|
package/src/navigateurs.mjs
CHANGED
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Edge suit Chrome ; la WebView d'Android suit Chromium et WKWebView le Safari du systeme (ADR
|
|
11
11
|
* 0043 du socle `api/starter`) : memes planchers.
|
|
12
|
+
*
|
|
13
|
+
* La WebView d'Android n'a pas de ligne a elle (0.11.5) : browserslist ne la connait qu'a sa derniere
|
|
14
|
+
* version (`Android >= 123` donne `android 152`), et la politique de prise en charge d'Angular (« baseline
|
|
15
|
+
* widely available ») ne la nomme pas ; chaque construction d'une SPA avertissait donc d'un navigateur
|
|
16
|
+
* « hors de la prise en charge d'Angular ». Elle suit Chromium : `Chrome` et `ChromeAndroid` au plancher
|
|
17
|
+
* de Chrome disent deja ce que la construction vise pour elle, et la cible produite ne change pas.
|
|
12
18
|
*/
|
|
13
19
|
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
14
20
|
import { join } from 'node:path';
|
|
@@ -48,7 +54,6 @@ export function requetesDuPlancher({ chrome, safari, firefox }) {
|
|
|
48
54
|
`Safari >= ${safari}`,
|
|
49
55
|
`iOS >= ${safari}`,
|
|
50
56
|
`ChromeAndroid >= ${chrome}`,
|
|
51
|
-
`Android >= ${chrome}`,
|
|
52
57
|
`FirefoxAndroid >= ${firefox}`,
|
|
53
58
|
];
|
|
54
59
|
}
|