Aller au contenu

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 ​

LecteurCommencer parLire ensuiteVous êtes prêt lorsque...
Nouveau sur go-likeBien démarrerArchitecture, Projet cliniquevous savez démarrer un service Web, transmettre un Context, exposer la santé et l'arrêter
Ingénieur TypeScript expérimentéArchitectureAppels de service, Comparaisonvous savez nommer le propriétaire et la frontière terminale de chaque ressource
Lecteur Go ou KratosBien démarrerAppels de service, Migrationvous savez rapprocher Context et Server sans supposer gRPC ni compatibilité ABI Go
Utilisateur d'un frameworkComparaisonMigration, Architecturevous gardez le routeur natif et n'ajoutez que la frontière de cycle de vie ou d'appel nécessaire
Ingénieur fournisseur ou plateformeFournisseursPaquets, Vérificationvous savez préciser runtime, backend, propriété et limites de preuve d'un fournisseur

Choisir son parcours ​

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) et stop(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://pricing ou https://pricing.example.

Les plans Web externe et de service interne sont séparés :

text
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 ServerStream

Ce 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.

Last updated: