fix(admin): unbreak ci:check on PR2b (TS2454 + missing fr translation)
CI / commits (pull_request) Successful in 4m57s
CI / scan (pull_request) Successful in 4m59s
CI / check (pull_request) Successful in 6m46s
CI / a11y (pull_request) Successful in 2m6s
CI / perf (pull_request) Successful in 9m5s

webpack-cli build --node-env=production failed on two issues that
ts-jest's --transpile-only didn't surface:

1. portal-bff TS2454 in user-scopes.service.ts:221 — TypeScript
   couldn't see the switch on `kind` as exhaustive, so `let exists:
   boolean` was flagged as "used before assigned". The narrowing on
   VALUE_BEARING_KINDS.has(kind) doesn't propagate through Set.has
   (only Array.includes / type-guards do). Initialise `exists =
   false` so it's definitely assigned regardless of switch path;
   semantically safe — a non-value-bearing kind that reaches the
   switch (shouldn't happen by construction) leaves exists=false and
   the next `if (!exists)` throws the same friendly "does not match"
   message.

2. portal-admin missing translation: route.user-scopes.title was
   declared in app.routes.ts but never added to messages.fr.xlf.
   @angular/localize build target requires every $localize id to
   have a target in the active locale. Added the trans-unit for the
   FR locale ("Périmètres utilisateur — Administration APF Portal").

Local: nx run-many -t build --projects=portal-bff,portal-admin
passes on both.
This commit is contained in:
Julien Gautier
2026-05-26 16:16:15 +02:00
parent 928ed0cdc2
commit adb4d35274
2 changed files with 13 additions and 1 deletions
@@ -21,6 +21,10 @@
<source>Users — APF Portal Admin</source>
<target>Utilisateurs — Administration APF Portal</target>
</trans-unit>
<trans-unit id="route.user-scopes.title" datatype="html">
<source>User scopes — APF Portal Admin</source>
<target>Périmètres utilisateur — Administration APF Portal</target>
</trans-unit>
<trans-unit id="route.profile.title" datatype="html">
<source>Profile — APF Portal Admin</source>
<target>Profil — Administration APF Portal</target>