Skip to content

refactor(client): type request bodies via shared contract aliases - #2801

Merged
shikanime merged 1 commit into
mainfrom
refactor/client-contract-type-aliases
Sep 30, 2026
Merged

shikanime merged 1 commit into
mainfrom
refactor/client-contract-type-aliases

Conversation

@shikanime

Copy link
Copy Markdown
Member

Issues liées

Refs #1889


Quel est le comportement actuel ?

apps/client extrait les types de requête par accès internes zod : typeof <x>Contract.<op>.<part>._type ou ._input — 15 occurrences dans 8 fichiers (stores, utils, vues).

Quel est le nouveau comportement ?

Chaque occurrence est remplacée par un alias exporté de packages/shared/src/contracts/* : ClientInferRequest<typeof xContract.op>['body' | 'query'], la convention déjà établie par zone, deployment et stage.

  • admin-role.ts : PatchAdminRolesBody
  • admin-token.ts : ListAdminTokensQuery, CreateAdminTokenBody
  • project.ts : UpdateProjectBody, ListProjectsQuery, BulkActionProjectBody (+ CreateProjectData, saveur output z.infer pour le modèle de formulaire de CreateProject.vue consommé par ProjectSettings — CoerceBooleanSchema diverge en entrée/sortie)
  • system.ts : ListSystemSettingsQuery
  • project-member.ts : PatchMembersBody
  • project-role.ts : PatchProjectRolesBody, CreateProjectRoleBody

CreateProjectBody existant reste inchangé ; stores/token.ts et stores/users.ts ne sont pas touchés (déjà couverts par #2279, et en collision avec #2738 sur contracts/user.ts — à traiter dans cette PR).

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

Aucune occurrence brute ne subsiste en dehors de ces deux fichiers. Vérifié : build shared, vue-tsc client, 88 tests shared, 77 tests client, eslint. Aucun changement d'exécution (types effacés à la compilation).

Replace every typeof <x>Contract.<op>.<part>._type|._input extraction
in apps/client with type aliases exported from packages/shared
contracts (ClientInferRequest), matching the zone, deployment, and
stage conventions. CreateProject keeps an output-typed alias
(CreateProjectData) for the form model consumed by ProjectSettings.

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I9490a12c2325d48da7d48c725f1e8d8e6a6a6964
@shikanime
shikanime requested a review from a team as a code owner September 30, 2026 12:51
@github-actions github-actions Bot added the built label Sep 30, 2026
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

@shikanime
shikanime added this pull request to the merge queue Sep 30, 2026
Merged via the queue into main with commit 5729b71 Sep 30, 2026
34 checks passed
@shikanime
shikanime deleted the refactor/client-contract-type-aliases branch September 30, 2026 15:04
@shikanime shikanime self-assigned this Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants