@affordant/contract
Les types du contrat de fil partagés. Zéro exécution, zéro dépendance — il ne livre que des .d.ts. Tous les autres paquets en dépendent, de sorte que le producteur (@affordant/server) et les consommateurs (affordant, @affordant/react) ne peuvent jamais diverger.
npm install @affordant/contractVous l'importez rarement directement : les paquets client et serveur réexportent ces mêmes types. Recourez-y quand vous écrivez du code qui se situe entre les deux côtés (un paquet de modèle partagé, un utilitaire de test).
import type { HateoasAction, HateoasMethod, HateoasResource } from '@affordant/contract'HateoasMethod
type HateoasMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'Les verbes HTTP qu'une action peut porter.
HateoasAction
interface HateoasAction {
href: string
method: HateoasMethod
accepts?: string
}Un descripteur d'action hypermédia : où (href), comment (method) et, optionnellement, quel corps de requête il accepte (accepts, un type de média — vaut application/json par défaut quand omis).
HateoasResource<T>
type HateoasResource<T> = T & {
_self?: HateoasAction
_actions: Record<string, HateoasAction>
}Votre ressource T, enrichie de contrôles hypermédia. _actions associe une relation de lien (rel) à l'action que le serveur propose actuellement. Un rel absent signifie que l'action n'est pas disponible pour l'appelant à cet instant.
Voir le contrat du fil pour la conception derrière ces types.