Les paquets
Affordant est une petite famille dans un unique monorepo npm-workspaces. Ils partagent un seul contrat de fil et restent symétriques de part et d'autre : le serveur construit ce que le client consomme.
| Paquet | Côté | Dépend de | Ce qu'il fait |
|---|---|---|---|
@affordant/contract | partagé | — | Les types du contrat de fil. Zéro exécution, zéro dépendance. Tout le reste en dépend. |
affordant | client | contract | can / actionFor / follow. Zéro dépendance d'exécution — fonctionne partout où fetch existe. |
@affordant/react | client | contract, affordant, react | Adaptateur React : conditionnez l'UI aux affordances et suivez-les avec des hooks. |
@affordant/vue | client | contract, affordant, vue | Adaptateur Vue : conditionnez l'UI aux affordances et suivez-les avec des composables. |
@affordant/server | serveur | contract | Un constructeur pour l'enveloppe _self / _actions. Indépendant du framework. |
@affordant/express | serveur | server, express | Adaptateur Express : envoie l'enveloppe, construit les URL à partir de la requête. |
Les dépendances en italique sont des dépendances peer — vous apportez votre propre React / Vue / Express. Le cœur client (affordant) et le cœur serveur (@affordant/server) ne portent aucune dépendance d'exécution.
À propos d'Effect (et des autres systèmes d'effets)
follow est une simple fonction async qui renvoie un Promise<Response>. Si vous travaillez avec Effect — ou tout autre système d'effets — vous pouvez l'emballer vous-même en une ligne, par ex. Effect.tryPromise(() => follow(action, init)). Affordant reste compatible avec Effect sans embarquer de dépendance Effect : l'interopérabilité, c'est à vous de l'ajouter quand vous le voulez, jamais imposée.
Développer
npm install # installe tous les workspaces
npm run build # construit chaque paquet, contract en premier
npm test # tests unitaires + suites de démo de bout en bout
npm run typecheck # vérifie les types de chaque paquet