Ajouter @lightweight-sdk/service-discovery (packages/server) #3
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/service-discovery-package"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Résumé
⚠️ Empilée sur #2 (
feat/service-registry-package), pas encore mergée — base à retargeter versmainune fois #2 mergée (cohérent avec "PR successives, pas en parallèle" du CLAUDE.md).Nouveau package
@lightweight-sdk/service-discovery(packages/server/) : agrégateur d'API reverse-proxy avec enregistrement et découverte de services au runtime. Deux points d'entrée séparés partageant un même protocole :./client(DiscoveryClient) — enregistre un service et maintient un heartbeat périodique (qui sert aussi de mécanisme de retry : un échec est journalisé et laissé au tick suivant).stop()est best-effort et ne rejette jamais../aggregator(ServiceAggregator) — handlers Node natifs à monter dans Express/Fastify/node:httpbrut (les trois documentés dans le README), zéro dépendance framework. Routage par préfixe de nom de service, TTL avec balayage périodique, secret partagé comparé en temps constant, proxy HTTP fait main (streaming, filtrage hop-by-hop, distinction 502/504).Limites documentées dans le README plutôt que corrigées : pas de matching
:param(v1, match exact), pas de secret par service, risque SSRF-like assumé vu le threat model homelab (un service compromis pourrait déclarer unbaseUrlarbitraire).Détails techniques notables
./client,./aggregator) via des stubspackage.json(le repo ciblemoduleResolution: Node10, pas de champexportsmoderne) — pattern documenté dansspec/architecture.mdpour de futurs packagesserver/multi-points d'entrée.req.on('close')se déclenche dès que le corps de la requête entrante est lu (immédiat pour un GET sans body), pas à la déconnexion réelle du client — ça détruisait ma propre requête sortante juste après l'avoir envoyée, causant unECONNRESETsystématique. Le bon signal estres.on('close').create-package.mjsinsérait la nouvelle ligne du tableau despec/packages.mden fin de fichier au lieu de l'insérer dans le tableau — corrigé pour les deux packages précédents au passage.Vérifié localement
pnpm lint,pnpm build,pnpm test(66/66),pnpm docs:check(3 points d'entrée validés),pnpm install --frozen-lockfiletous verts. Résolution runtime des sous-chemins./client/./aggregatorvérifiée manuellement (require()direct).🤖 Generated with Claude Code
Agregateur d'API reverse-proxy avec enregistrement et decouverte de services au runtime, deux points d'entree separes partageant un meme protocole : - ./client (DiscoveryClient) : enregistre un service et maintient un heartbeat periodique (qui sert aussi de mecanisme de retry - un echec est journalise et laisse au tick suivant, pas de logique separee). stop() est best-effort et ne rejette jamais. - ./aggregator (ServiceAggregator) : handlers Node natifs a monter dans Express/Fastify/http brut (exemples des trois dans le README), zero dependance framework. Routage par prefixe de nom de service, TTL avec balayage periodique, secret partage compare en temps constant, proxy HTTP fait main (node:http/https, streaming, filtrage hop-by-hop, distinction 502/504). Limites documentees dans le README plutot que corrigees : pas de matching :param (v1, match exact), pas de secret par service, risque SSRF-like assume vu le threat model homelab. Resolution des sous-chemins via des stubs package.json (client/, aggregator/) puisque le repo cible moduleResolution: Node10, pas de champ exports moderne - pattern documente dans spec/architecture.md pour de futurs packages server/ multi-points d'entree. Bug trouve et corrige en cours de route : req.on('close') se declenche des que le corps de la requete entrante est lu (immediat pour un GET sans body), pas a la deconnexion reelle du client - detruisait ma propre requete sortante juste apres l'avoir envoyee. Le bon signal est res.on('close'). Correction connexe : create-package.mjs inserait la nouvelle ligne en fin de fichier de spec/packages.md au lieu de l'inserer dans le tableau - corrige pour les deux packages precedents au passage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.