Aller au contenu principal

L'écosystème synergique

Le problème​

Les développeurs utilisent typiquement des bibliothèques séparées qui n'ont pas été conçues pour fonctionner ensemble :

// L'approche fragmentée (avant Pithos)
import { chunk } from "lodash-es"; // Style d'API A, philosophie A
import { z } from "zod"; // Style d'API B, philosophie B
import { Result } from "neverthrow"; // Style d'API C, philosophie C
// 3 équipes différentes, 3 documentations, 3 façons de faire 😕

La vision Pithos​

Une architecture en couches, du plus pur au plus complexe.

Synergies clés​

CombinaisonFluxCas d'usage
Kanon → ArkheValider → TransformerUne fois validé, Arkhe manipule les données en toute sécurité
Sphalma + ZygosFabrique d'erreurs → ResultCréer des erreurs typées encapsulées dans un Result

Exemples de synergie​

Création : Erreur applicative personnalisée​

Ici, nous créons nos propres erreurs applicatives en utilisant la même infrastructure que Pithos (Sphalma + Zygos).

import { createErrorFactory } from "@sphalma/error-factory";
import { Result, ok, err } from "@zygos/result";
import { validation } from "@kanon/validation";

// 1. Définir les codes (Hex) pour notre App
const AppErrorCodes = {
INVALID_USER_DATA: 0x9001,
NETWORK_FAILURE: 0x9002,
} as const;

// 2. Créer la fabrique "App"
const createAppError = createErrorFactory<number>("App");

// 3. Fonction métier avec Synergie (Kanon + Zygos + Sphalma)
function registerUser(data: unknown): Result<User, Error> {
// Validation (Kanon)
const schema = validation.object({ username: validation.string() });
const parseResult = schema.safeParse(data);

if (!parseResult.success) {
// Dispatcher une erreur typée (Sphalma) encapsulée dans un Result (Zygos)
return err(
createAppError(AppErrorCodes.INVALID_USER_DATA, {
reasons: parseResult.error.issues,
})
);
}

// Succès (Zygos)
return ok({ id: 1, role: "user" });
}

Ce que ça change​

AspectBibliothèques séparéesPithos
Cohérence API3+ styles différentsStyle unifié
Documentation3+ sourcesSource unique
Mises à jourIncompatibilités possiblesÉvolution coordonnée
BundleDuplication possibleOptimisé ensemble
Courbe d'apprentissageApprendre 3+ libsApprendre une philosophie
important

L'objectif de Pithos n'est pas de remplacer chaque bibliothèque individuellement.

C'est de fournir un écosystème cohérent où tout est conçu pour fonctionner ensemble.

Arkhe + Kanon + Zygos = plus que la somme de ses parties.

Engagement de synergie​

Pour maintenir cette cohérence, chaque nouveau module ou fonction doit :

  • Utiliser les mêmes conventions de nommage
  • Suivre la même philosophie d'erreur (throw vs Result)
  • Être compatible avec les autres modules
  • Partager les mêmes types utilitaires (types Arkhe)
  • Être documenté avec le même standard TSDoc

Règles d'or​

  1. Kanon est le GARDIEN : Il convertit les données inconnues (runtime) en données typées (statique), échouant proprement via Result ou throw selon le contexte (mais souvent encapsulé).

Pour plus de détails sur la philosophie de gestion des erreurs, voir Gestion des erreurs.


Related