Conventions et outils
1. Conventions de nommage
1.1 Nomenclature des fichiers
Les fichiers de configuration utilisent désormais le kebab-case.
Exemple :
- envVars.yml â env-vars.yml
Le fichier env-vars.yml est toujours traitĂ© par la bibliothĂšque de vĂ©rification dâenvironnement (checkenv).
2. Mise à jour des environnements et dépendances
2.1 Versions des outils
Les environnements techniques ont été mis à jour pour profiter des derniÚres améliorations de performance et de sécurité.
- Node.js : utilisation de la version LTS.
3. Ăvolutions de lâAPI client @fasstech/oip-starter-utils
La version OIP v4 de la librairie @fasstech/oip-starter-utils (OIP Starter Utils) introduit plusieurs changements structurels et logiques majeurs dans son API client. Ces Ă©volutions visent Ă simplifier lâintĂ©gration, renforcer la cohĂ©rence des API et unifier la gestion du contexte applicatif.
3.1 Nouveaux exports du module @fasstech/oip-starter-utils/app
Avant (v3)
import {
start,
useProcess,
Router,
Tokens
} from '@fasstech/oip-starter-utils/app';AprĂšs (v4)
import {
start,
useProcess,
Router
} from '@fasstech/oip-starter-utils/app';Ăvolution :
- L'objet Tokens nâest plus exposĂ© publiquement : il n'a plus Ă ĂȘtre manipulĂ© manuellement par le dĂ©veloppeur (gestion centralisĂ©e des credentials et du token dâauthentification client).
3.2 Fragment ProcessFragment
Avant (v3)
const ProcessFragment = gql`
fragment ProcessFragment on ExtendedProcess {
projectId
viewId
metadata
sessionId
}
`;AprĂšs (v4)
const ProcessFragment = gql`
fragment ProcessFragment on ExtendedProcess {
projectId
viewId
viewData
sessionId
}
`;Ăvolution :
- La propriété metadata est remplacée par viewData, reflétant une refonte du typage GraphQL cÎté serveur pour une meilleure cohérence front/back.
3.3 useCustomHandlers â customHandlers
Avant (v3)
useCustomHandlers était un hook retournant un objet customHandlers :
const useCustomHandlers = () => {
const myCustomHandler = () => { /* logic */ };
return {
customHandlers: { myCustomHandler }
};
};
startApp({
useCustomHandlers,
});AprĂšs (v4)
customHandlers devient une propriété directe passée à start :
const myCustomHandler = () => { /* logic */ };
const myOtherCustomHandler = () => { /* logic */ };
start({
customHandlers: { myCustomHandler, myOtherCustomHandler },
});Ăvolution :
- La configuration devient plus déclarative et plus lisible.
- Plus besoin de définir un hook dédié.
3.4 Fusion de ctx et ctxPolicy
Avant (v3)
Deux propriétés géraient la récupération du token client lors du décrochage :
- ctx : contexte applicatif
- ctxPolicy : stratégie de récupération du token
Valeurs possibles (ctxPolicy v3) :
- parameters
- local-storage
- session-storage
- url-params
- shadow-crm
AprĂšs (v4)
Les deux propriétés sont fusionnées en une seule : ctx.
Valeurs possibles (ctx v4) :
- 'local-storage'
- 'session-storage'
- 'shadow-crm'
- 'url'
- { token: string }
- { projectId: string }
Exemples :
- Depuis le local storage :
localStorage.setItem('ctxToken', 'my-ctx-client-token');
start({
ctx: 'local-storage'
});- Depuis un paramĂštre :
start({
ctx: { token: 'my-ctx-client-token' }
});- Depuis lâURL :
start({
ctx: 'url'
});Ăvolution :
- ctx devient une interface unifiée permettant de définir comment récupérer le token ou le projet courant.
3.5 Renommage et regroupement des propriĂ©tĂ©s dâerreur
Avant (v3)
- rootDivId
- Pages dâerreur dĂ©finies individuellement :
- badRequestPage
- unauthorizedPage
- forbiddenPage
- notFoundPage
- internalServerError
AprĂšs (v4)
- rootDivId devient rootElementId.
- Les pages dâerreur sont regroupĂ©es sous une propriĂ©tĂ© unique errorPages :
type ErrorPages = {
badRequestPage?: () => ReactNode;
unauthorizedPage?: () => ReactNode;
forbiddenPage?: () => ReactNode;
notFoundPage?: () => ReactNode;
internalServerErrorPage?: () => ReactNode;
};Ăvolution :
- Rationalisation de la configuration des pages dâerreur.
3.6 Composant Router : bundle â views
Avant (v3)
<Router bundle={ViewsBundle} />AprĂšs (v4)
<Router views={ViewsBundle} />Ăvolution :
- Renommage dans le cadre de la standardisation de la nomenclature autour des âviewsâ.