go-like
go-like propose de petites briques TypeScript explicites pour des services backend exécutés sur Bun et Node.js. L'application dispose de contrats pour l'annulation par Context, le cycle de vie de l'application et des ressources, les handlers Fetch standard, les appels de service internes unaires, la découverte et la sélection, la configuration, les Store, les Cache, les Broker, la santé, la résilience et des adaptateurs optionnels de logs et de télémétrie.
go-like est volontairement complémentaire d'un framework applicatif. Votre framework reste propriétaire des routes, du middleware, de la policy de requête, des Web Streams, des upgrades WebSocket, de la composition des dépendances et du comportement métier. Votre fournisseur reste propriétaire de sa connexion native, de son modèle d'acknowledgement, de ses leases, de ses retries et de son protocole. go-like fournit des contrats étroits et une propriété de cycle de vie là où ces frontières sont utiles.
IMPORTANT
Ce checkout utilise des paquets workspace:* en version 0.0.1. La version du manifest ne prouve pas leur disponibilité sur npm ; vérifiez la publication avant une installation hors workspace.
NOTE
L'arborescence anglaise doc/ est la source canonique de ce parcours documentaire. Le code des paquets, les manifests et les tests ciblés font autorité pour l'API. La présence d'un test ou d'un script E2E dans le dépôt correspond à une couverture déclarée ; ce n'est pas un résultat réussi tant qu'une commande n'a pas été exécutée et que son code de sortie n'a pas été relevé.
Choisir un parcours
| Lecteur | Commencer par | Lire ensuite | Vous êtes prêt lorsque... |
|---|---|---|---|
| Nouveau sur go-like | Bien démarrer | Architecture, Projet clinique | vous savez démarrer un service Web, transmettre un Context, exposer la santé et l'arrêter |
| Ingénieur TypeScript expérimenté | Architecture | Appels de service, Comparaison | vous savez nommer le propriétaire et la frontière terminale de chaque ressource |
| Lecteur Go ou Kratos | Bien démarrer | Appels de service, Migration | vous savez rapprocher Context et Server sans supposer gRPC ni compatibilité ABI Go |
| Utilisateur d'un framework | Comparaison | Migration, Architecture | vous gardez le routeur natif et n'ajoutez que la frontière de cycle de vie ou d'appel nécessaire |
| Ingénieur fournisseur ou plateforme | Fournisseurs | Paquets, Vérification | vous savez préciser runtime, backend, propriété et limites de preuve d'un fournisseur |
Choisir son parcours
- Débutant : commencez par Bien démarrer, puis suivez le projet clinique jusqu'au signal ready et à l'arrêt.
- Expert TypeScript ou Go : lisez Architecture, puis Appels de service et la référence des fournisseurs pour vérifier ownership et état terminal.
- Utilisateur d'un framework : lisez Comparaison puis Migration, en gardant le routeur natif.
Le modèle mental
Le modèle utile le plus petit tient en cinq noms :
- Context est le premier argument explicite du travail annulable. Il porte une échéance, un résultat d'annulation de type
AbortSignal, une cause facultative et des valeurs. - Server est un objet de cycle de vie structurel, avec
start(ctx)etstop(ctx). Il possède une frontière de ressource admise. - App compose des Servers, des hooks, l'enregistrement, l'admission au démarrage et l'arrêt progressif. Il ne devient pas un conteneur d'injection de dépendances.
- Handler est la fonction Web standard
(Request) => Response | Promise<Response>. Un Handler n'est pas, à lui seul, un serveur en écoute. - Endpoint est une opération interne typée et nommée. Il est distinct d'une adresse réseau comme
memory://pricingouhttps://pricing.example.
Les plans Web externe et de service interne sont séparés :
External Web request
Request
-> framework router or application handler
-> @go-like/web Handler
-> Web host, such as @go-like/web/node
-> @go-like/core App / Server lifecycle
Internal unary call
@go-like/client
-> Discovery, Filter, Selector, or direct address
-> @go-like/transport Client
-> Client.fetch POST /<service>/<endpoint>
-> @go-like/server handler
-> JSON body or SSE ServerStreamCe que go-like ne prend volontairement pas en charge
La frontière produit actuelle ne revendique pas :
- Cela n’inclut pas gRPC standard dans le navigateur, request-streaming/bidi via Fetch, health/reflection officiels, authentification générique, Event Store/replay, ORM ou orchestration de clusters.
- Fetch request-streaming/bidi; gRPC standard avec quatre cardinalités via
/native. - un routeur externe ou un DSL de middleware propre à un framework ;
- un conteneur global d'injection de dépendances ou un service locator ;
- JWT, OAuth, OIDC, claims, ACL ou autorisation applicative automatiques ;
- un Event Store, des requêtes d'historique, un moteur de replay ou un modèle universel de règlement durable des messages ;
- des fournisseurs OpenTelemetry, exporters, context managers ou instrumentation globale installés automatiquement ;
- une sémantique distribuée, durable ou interprocessus pour les fournisseurs mémoire ;
- la publication npm, l'adoption en production, l'état d'une CI hébergée ou une garantie de préparation à la production déduite d'un manifest ou d'un script.
Le streaming Web public reste fondé sur Request/Response Fetch standard et les Web Streams. Ce n'est pas un RPC interne full-duplex. Voir Streaming pour cette frontière.
Inventaire public
Les manifests source actuels contiennent 45 paquets @go-like/* non privés, tous en version 0.0.1 dans ce checkout, ainsi que 27 sous-chemins source publics. @go-like/struct fait partie de cet inventaire public et fournit le contrat runtime utilisé par les appels Endpoint typés. Les exports de métadonnées dist/package.json générés ne sont ni des paquets supplémentaires ni des API source.
Utilisez la référence des paquets pour choisir un contrat ou un fournisseur, puis la référence des fournisseurs pour comparer backend et sémantique runtime.
Limite de vérification
L'audit local du contrat a relevé les résultats suivants sur le commit de référence documentaire 9385dbf5b6a7d913be56a80ade359e1bf9be8675 : bun run typecheck, bun run test:unit et bun run fmt:check ont réussi, couvrant la racine, les paquets, les exemples et le périmètre de tests unitaires déclaré. Le rapport comptait 2 736 tests unitaires, 1 514 fichiers formatés et un audit d'import réussi pour 66 entrées d'exports source déclarées.
Ce rapport n'établissait pas build, doc:build, les E2E des fournisseurs Docker, l'exécution multi-runtime, les consommateurs de tarballs publiés, la publication npm, une CI hébergée, l'adoption en production ni le soak de 60 minutes. Consultez Vérification avant de transformer une affirmation de source ou de script en affirmation de release.
Pour continuer
- Bien démarrer : installer ou utiliser un checkout, exécuter un handler Web et comprendre le premier point de contrôle du cycle de vie.
- Architecture : étudier les plans, la propriété, les portées de Context, l'ordre du cycle de vie et la portabilité runtime.
- Rendez-vous en clinique : de 0 à 1 : suivre une route guidée par milestones, d'un invariant métier concret à l'appel unaire de policy interne, la santé, les tests et l'arrêt.
- Appels de service : commencer avec un Memory Transport typé, puis ajouter découverte, sélection, retry et nettoyage de façon délibérée.
- Configuration, Registry, Store et Cache : choisir des contrats d'état sans mélanger leurs garanties.
- Broker et événements : préserver les sémantiques natives de livraison, d'acknowledgement, de consommateurs durables et de jobs.
- Santé et observabilité : ajouter readiness, métriques, traces et logs sans installer silencieusement une infrastructure globale.
- Comparaison et Migration : comparer la propriété avec les frameworks tiers et adopter go-like progressivement.
- Paquets, Fournisseurs et Vérification : utiliser la piste de référence lorsque l'API ou la limite de preuve compte.
@go-like/protoc-gen-like génère le code Protobuf RPC avec Context en premier argument, sur Protobuf-ES. @go-like/transport-grpc-buf fournit unary et server-streaming Connect/gRPC-Web via Fetch ; /native ajoute gRPC standard avec les quatre cardinalités, dont client-streaming et bidi. Ce chemin est indépendant du chemin interne Fetch/SSE.
gRPC géré sous Node 26.12.1 et Bun 1.4.4 a passé le test de régression du drain avec consommateur lent. La correction des limites historiques d’annulation et d’arrêt de Connect 2.1.2 et de Bun 1.4.2 Fetch reste non vérifiée.