Description
La vérification du type des erreurs est incohérente entre les modules du server-nestjs. Chaque module client teste ses erreurs de façon ad hoc :
- gitlab centralise déjà ses gardes typées dans
gitlab.utils.ts (isGitbeakerNotFound, hasGitbeakerCause).
- keycloak utilise un helper partagé
getErrorResponseStatus.
- vault et nexus dispersent des vérifications
instanceof VaultError && error.kind === 'NotFound' / instanceof NexusError && error.status === 404 en dur dans les services et clients (plusieurs occurrences chacun).
- registry et nexus.service répètent la même vérification
VaultError NotFound.
- gitlab-client teste un 401 via
instanceof GitbeakerRequestError && error.cause?.response.status === 401 sans garde centralisée.
Cette duplication rend les contrôles fragiles (la sémantique de la 404 / du conflit est réimplémentée à chaque site) et difficile à faire évoluer.
Comportement attendu
Uniformiser la vérification du type des erreurs en exposant, dans chaque util de module, une garde typée (même forme que isGitbeakerNotFound) :
vault.utils.ts : isVaultNotFound, isVaultBadRequest.
nexus.utils.ts : isNexusNotFound.
gitlab.utils.ts : isGitbeakerUnauthorized.
Chaque site d'appel utilise la garde du module au lieu de réimplémenter instanceof + champ.
Définition du fini
Description
La vérification du type des erreurs est incohérente entre les modules du
server-nestjs. Chaque module client teste ses erreurs de façon ad hoc :gitlab.utils.ts(isGitbeakerNotFound,hasGitbeakerCause).getErrorResponseStatus.instanceof VaultError && error.kind === 'NotFound'/instanceof NexusError && error.status === 404en dur dans les services et clients (plusieurs occurrences chacun).VaultErrorNotFound.instanceof GitbeakerRequestError && error.cause?.response.status === 401sans garde centralisée.Cette duplication rend les contrôles fragiles (la sémantique de la 404 / du conflit est réimplémentée à chaque site) et difficile à faire évoluer.
Comportement attendu
Uniformiser la vérification du type des erreurs en exposant, dans chaque util de module, une garde typée (même forme que
isGitbeakerNotFound) :vault.utils.ts:isVaultNotFound,isVaultBadRequest.nexus.utils.ts:isNexusNotFound.gitlab.utils.ts:isGitbeakerUnauthorized.Chaque site d'appel utilise la garde du module au lieu de réimplémenter
instanceof+ champ.Définition du fini
vault.utils.tsexposeisVaultNotFoundetisVaultBadRequest; tous les appelsinstanceof VaultErrorde la 404/400 les utilisent.nexus.utils.tsexposeisNexusNotFound; tous les appels 404 denexus-clientl'utilisent.gitlab.utils.tsexposeisGitbeakerUnauthorized; le contrôle 401 degitlab-clientl'utilise.registry.serviceetnexus.servicesur la 404 Vault utilisentisVaultNotFound.