fix(admin): unbreak ci:check on PR2b (TS2454 + missing fr translation)
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:
@@ -21,6 +21,10 @@
|
|||||||
<source>Users — APF Portal Admin</source>
|
<source>Users — APF Portal Admin</source>
|
||||||
<target>Utilisateurs — Administration APF Portal</target>
|
<target>Utilisateurs — Administration APF Portal</target>
|
||||||
</trans-unit>
|
</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">
|
<trans-unit id="route.profile.title" datatype="html">
|
||||||
<source>Profile — APF Portal Admin</source>
|
<source>Profile — APF Portal Admin</source>
|
||||||
<target>Profil — Administration APF Portal</target>
|
<target>Profil — Administration APF Portal</target>
|
||||||
|
|||||||
@@ -194,7 +194,15 @@ export class UserScopesService {
|
|||||||
// ADR-0026 PR 1's "no FK on UserScope.value" rationale lets the
|
// ADR-0026 PR 1's "no FK on UserScope.value" rationale lets the
|
||||||
// value persist even after the target is decommissioned, so we
|
// value persist even after the target is decommissioned, so we
|
||||||
// validate only at the write path.
|
// validate only at the write path.
|
||||||
let exists: boolean;
|
//
|
||||||
|
// Initialise `exists = false` so TypeScript sees it as definitely
|
||||||
|
// assigned regardless of how the switch lands (the type-system
|
||||||
|
// can't see that `VALUE_BEARING_KINDS.has` already narrowed
|
||||||
|
// `kind` to the three branches). If somehow a non-value-bearing
|
||||||
|
// kind reached this code, the false default makes the next `if`
|
||||||
|
// throw with the same friendly "does not match" message — safe
|
||||||
|
// by construction.
|
||||||
|
let exists = false;
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case 'etablissement':
|
case 'etablissement':
|
||||||
exists =
|
exists =
|
||||||
|
|||||||
Reference in New Issue
Block a user