Aller au contenu

Référence des paquets et fournisseurs ​

Cette page est organisée autour de la question que l'application cherche à résoudre, et non autour de l'arborescence packages/. Importez depuis le plus petit paquet public propriétaire du contrat. Le comportement propre au runtime est exposé par un sous-chemin explicite. Les paquets fournisseurs ne sont pas des implémentations interchangeables avec une garantie universelle unique.

Lire cette page ​

  • Contrat désigne une interface portable ou neutre vis-à-vis du fournisseur.
  • Fournisseur désigne une implémentation adossée à la mémoire, à un fichier, à un service réseau ou à une bibliothèque native.
  • Adaptateur de cycle de vie désigne un wrapper Server autour d'une ressource native créée par l'application.
  • Preuve indique le type d'appui fourni par le dépôt : source/export, tests déclarés ou résultat d'une commande locale rapporté. Cela ne transforme pas une version de paquet en affirmation de publication npm ou de disponibilité en production.

L'inventaire source actuel contient 45 manifests de paquets @go-like/* non privés et 27 sous-chemins source publics, tous en version 0.0.1 dans ce checkout. Les 44 workspaces examples/* sont des applications privées, pas des paquets publics.

Choisir selon le besoin ​

BesoinCommencer avecAjouter si nécessairego-like ne possède pas
Exposer une API Web@go-like/web, @go-like/core@go-like/web/node ou le handler Fetch natif d'un frameworkRouteur, middleware du framework, auth, policy de réponse
Appeler un service interne@go-like/client, @go-like/transport@go-like/transport-memory, @go-like/transport-http, @go-like/structIdempotence métier, IDL généré, RPC full-duplex
Découvrir des instances de service@go-like/registryUn fournisseur Registry, des filtres, un SelectorCohérence des leases/révisions du backend ou service locator global
Charger la configuration@go-like/configenv/file/YAML ou un fournisseur Config externeConfiguration globale implicite et transactions inter-ressources
Stocker des octets faisant autorité@go-like/storeFournisseur Memory, File, Consul, etcd ou VaultBase de données/ORM générique ou garanties uniformes du fournisseur
Mettre en cache des valeurs jetables@go-like/cacheFournisseur Memory ou RedisAutorité, persistance, CAS, état métier durable
Publier ou consommer des octets@go-like/brokerMemory, RabbitMQ ou NATSack/nack/term universels, DLQ, offset durable, exactly-once
Ajouter des payloads d'événements typés@go-like/eventUn Codec appartenant à l'applicationSchema registry, replay, policy de règlement
Exécuter un scheduler ou worker existant@go-like/core@go-like/croner, @go-like/bullmq, @go-like/natsQueue, processor, policy de job ou connexion broker native
Ajouter des opérations@go-like/health, @go-like/resiliencePino, Winston, OTel, PrometheusInstrumentation globale, auth, policy de déploiement

Paquets fondamentaux ​

PaquetÀ utiliser pourAPI publique principaleNote runtime et propriété
@go-like/contextAnnulation explicite, échéances, causes et valeursbackground, todo, withCancel, withCancelCause, withDeadline, withDeadlineCause, withTimeout, withTimeoutCause, cause, withoutCancel, withValue, afterFunc, canceled, deadlineExceededContrat source portable. Context utilise AbortSignal en interne ; ce n'est ni un ABI Go ni un conteneur DI implicite
@go-like/coreComposer le cycle de vie de l'application et des ressourcesnewApp, server, registrar, beforeStart, afterStart, beforeStop, afterStop, startTimeout, stopTimeout, context, id, name, version, metadata, endpoint, newContext, fromContextServer et App structurels et portables. Les arrêts des frères sont concurrents
@go-like/metadataMétadonnées multivaluées immuables et propagation explicitetypes de metadata et fonctions de propagationLes domaines de metadata Client et Server sont séparés ; la metadata n'est pas une identité de confiance
@go-like/structValidation Struct à l'exécution pour endpoints typés et JSONstruct, Infer, Struct, StructErrorPaquet public actuel. C'est de la validation runtime, pas Protobuf, IDL ou code généré
@go-like/healthRegistry de probes de liveness et readinessnewProbeRegistry, ProbeRegistry, Probe, ProbeReportUne liveness vide réussit ; une readiness vide échoue par défaut ; le timeout de probe par défaut est de 1 000 ms
@go-like/resilienceRetry explicite, circuit breaker et rate limiting non bloquantretry, exponentialBackoff, newCircuitBreaker, newTokenBucketLimiter, circuitOpenL'autorisation du retry est déclarée par le caller ; aucune idempotence automatique ni tâche de limiter en arrière-plan

Paquets Web et appels internes ​

PaquetÀ utiliser pourAPI publique principaleNe possède pas
@go-like/webHandler Web standard et pont Context de la requêteHandler, ContextHandler, contextHandlerRoutes, WebSockets, policy SSE, listener, authentification
@go-like/web/healthRoutes de Handler de santécreateHealthHandlerEnregistrement des probes ou montage des routes du framework
@go-like/web/nodeListener Node autour d'un Fetch HandlernewNodeServer, hostname, port, nodeShutdownTimeoutTLS/HTTP2 du Transport HTTP interne ; utilisez @go-like/transport-http/node pour cela
@go-like/clientAppels internes unaires, découverte, sélection, middleware, retries, poolingnewClient, withTransport, withEndpoint, withDiscovery, withSelector, withFilter, withBlock, withRetry, middleware, use, circuitBreakerMiddleware, closeTimeout, poolSize, poolTtlRoutes framework, sécurité de rejeu métier, limites de sockets physiques
@go-like/serverServer interne de Message unaire et dispatch des routesnewServer, transport, address, advertise, Server.registerHandler, httpRoute, middleware, use, listenOption, rateLimitMiddlewareRouteur du framework et autorisation applicative
@go-like/transportSPI Transport et frontière Fetch Request/ResponseTransport, Client, Listener, defineService, ServerStream, TransportInfo, Endpoint, endpoint, chain, serviceErrorUn wire concret si aucun fournisseur n'est choisi ; pas de promesse de full-duplex interne
@go-like/transport-memoryTransport unaire en processusnewMemoryTransportComportement interprocessus, persistance, repli réseau, TLS
@go-like/transport-httpTransport HTTP interne adossé à FetchnewHTTPTransport, executor, maxMessageBytesListener portable complet sans HTTPHost injecté ; contrôles TLS natifs Node
@go-like/transport-http/nodeTransport HTTP interne natif NodenewNodeHTTPTransport, allowHTTP1, clientAuthPolicy de sécurité automatique
@go-like/transport-grpc-bufConnect/gRPC-Web unary, server-streamingnewHandler, fromHandlerContext, callOptionsCode Context-first sur Protobuf-ES
@go-like/transport-grpc-buf/nativegRPC standard avec quatre cardinalités via /nativenewClient, newServerDiscovery, Selector, TLS/mTLS
@go-like/protoc-gen-likeGénérateur Node au buildprotoc-gen-like, protocGenLikeProtobuf-ES

Paquets Config ​

Paquet ou sous-cheminÀ utiliser pourFonction principaleFrontière
@go-like/configGestionnaire Config et sources objetnewConfig, source, objectSource, schema, resolver, placeholderResolver, onReloadError, onTerminalErrorSnapshots immuables et cycle de vie accepté des watchers ; pas un Server Core en soi
@go-like/config/envSource explicite d'un record d'environnementenvSourceAccepte un record injecté ; ne lit pas les globaux implicites du runtime
@go-like/config/fileSource fichier et contrat de décodeur JSONfileSource, jsonFileDecoderNécessite une capacité fichier explicite
@go-like/config/nodeCapacité fichier NodenewNodeFileCapabilitySous-chemin propre au runtime Node
@go-like/config/yamlDécodage YAML vers ConfigObjectdecodeYamlLe décodage n'est ni une surveillance de source ni une publication de schéma
@go-like/config-consulSource de configuration HTTP ConsulconsulSource, jsonConsulDecoderComportement blocking-query et cohérence propres à Consul
@go-like/config-etcdSource de configuration via gateway etcdetcdSource, jsonEtcdDecoderRévision, compaction et protocole du gateway
@go-like/config-kubernetesUne clé d'un ConfigMap ou Secret KuberneteskubernetesSource, jsonKubernetesDecoderSémantique resource-version/relist ; aucune transaction inter-ressources
@go-like/config-vaultSource Vault KV v2vaultSourceAuthentification Vault, TLS, policy de token et sémantique KV

Les fournisseurs Config externes utilisent un Fetch standard injecté. Les credentials et les redirects ont un comportement de sécurité propre à chaque fournisseur ; http contre https reste un choix de l'application ou du déploiement, sauf si un fournisseur le refuse.

Paquets Registry ​

PaquetÀ utiliser pourFonction principaleNote runtime/backend
@go-like/registryContrat, snapshot, filtres et sélecteursfilterVersion, filterLabel, newRandomSelector, newRoundRobinSelector, newWeightedRoundRobinSelector, newP2CSelector, newEWMASelectorSnapshots de remplacement complet ; le feedback de sélection est explicite
@go-like/registry/providerHelpers d'auteur de fournisseur et diagnosticsproviderOptions, notifyRegistrationError, helpers de snapshot/providerSous-chemin réservé aux fournisseurs, pas l'entrypoint habituel d'une application
@go-like/registry-consulEnregistrement et découverte ConsulnewConsulRegistryFiltrage health, blocking-query, TTL et comportement critical propres à Consul
@go-like/registry-etcdEnregistrement et découverte etcdnewEtcdRegistryLeases, révisions, watch/relist et compaction
@go-like/registry-kubernetesDécouverte EndpointSlice et enregistrement optionnelnewKubernetesRegistryEndpointSlice Kubernetes, owner references, aucun TTL inventé
@go-like/registry-mdnsDécouverte multicast localenewMDNSRegistryLe fournisseur racine est portable par conception ; le host UDP est /node
@go-like/registry-mdns/nodeCapacité multicast UDP NodenewNodeMDNSHostSous-chemin explicite du runtime Node
@go-like/registry-zookeeperEnregistrement et découverte éphémères ZooKeepernewZookeeperRegistryNode.js et Bun documentés

Registry représente la joignabilité, pas les données métier durables. Un fournisseur peut conserver le dernier snapshot pendant la reconstruction d'un watcher transitoire, mais un snapshot vide faisant autorité doit échouer par défaut.

Paquets Store et Cache ​

PaquetÀ utiliser pourFonction principaleFrontière
@go-like/storeContrat et options des recordsexpiresIn, ifAbsent, ifRevision, prefix, limit, cursorRévisions, CAS, TTL, pagination ; les capacités varient selon le fournisseur
@go-like/store/providerAssistants write/delete/list du fournisseurwriteOptions, deleteOptions, listOptions, helpers de snapshot et de conflitOrienté fournisseur ; n'est pas un backend durable par lui-même
@go-like/store-memoryTests de Store local au processusnewMemoryStore, clockAucune durabilité après redémarrage ni état interprocessus
@go-like/store-fileStore local sur fichiernewFileStoreÉtat local à un propriétaire unique ; utilisez /node pour le host Node
@go-like/store-file/nodeCapacité fichier NodenewNodeFileStoreHostSous-chemin Node explicite
@go-like/store-consulStore KV ConsulnewConsulStoreSessions Consul, combinaisons TTL/CAS et comportement incertain des mutations
@go-like/store-etcdStore KV etcdnewEtcdStoreGateway, lease, révision, compaction et comportement incertain des mutations
@go-like/store-vaultStore Vault KV v2newVaultStoreNe promet pas une sémantique TTL/CAS uniforme du Store
@go-like/cacheContrat de valeurs jetables/TTLexpiresInNi CAS, ni révision, ni durabilité, ni autorité
@go-like/cache-memoryCache local au processusnewMemoryCache, clockPas de persistance ; expiration lazy ; adapté aux tests et à l'accélération locale
@go-like/cache-redisCache adossé à RedisnewRedisCacheConnexion Redis native, gestion des credentials d'URL et exigences runtime restent visibles

Paquets Broker, événements et travail ​

Paquet ou sous-cheminÀ utiliser pourFonction principaleFrontière
@go-like/brokerContrat Broker d'octets/topicsnewBrokerServerPas d'ack/nack/term, DLQ, retry ou offset durable portable
@go-like/broker/providerEnregistrement terminal du fournisseurregisterSubscriberTerminal, subscriberTerminalSuivi du cycle de vie orienté fournisseur
@go-like/broker-memoryBroker en processus à topics exactsnewMemoryBrokerPrivé à l'instance, broadcast, sans règlement durable
@go-like/broker-rabbitmqBroker RabbitMQ borrowed, confirm ou recoveringnewRabbitMqBroker, newConfirmRabbitMqBroker, newRecoveringRabbitMqBrokerChannel/connection amqplib et sémantiques natives de règlement
@go-like/eventCodec typé sur un BrokereventBrokerLa livraison native reste visible ; pas de replay ni de schema registry
@go-like/natsCycle de vie NATS et entrypoints de broker natifsnewNatsCoreServer, natsCoreDrainTimeoutConnexion Core et sémantiques de souscription restent natives
@go-like/nats/brokerBroker NATS CorenewNatsCoreBrokerMsg natif, queue group, drain et sémantique at-most-once
@go-like/nats/jetstreamCycle de vie ConsumerMessages JetStreamnewNatsJetStreamServer, natsJetStreamCloseTimeoutComportement natif close/stop/closed de ConsumerMessages
@go-like/nats/jetstream/brokerBroker d'octets typé sur JetStreamnewNatsJetStreamBrokerJsMsg, PubAck, ack/nak/term, redelivery et DLQ restent natifs
@go-like/cronerCycle de vie de jobs Croner existantsnewCronerServerSchedule, callback, overlap et sémantique terminale passive de Croner
@go-like/bullmqCycle de vie d'un Worker BullMQ existantnewBullMqWorkerServer, bullMqWorkerShutdownTimeoutQueue, Redis, processor, retry/backoff, stalled jobs et identité du job

Paquets de logging et d'observabilité ​

PaquetÀ utiliser pourFonction principaleNe possède pas
@go-like/pinoWrappers Pino de requêtes/brokers et cycle de vie du drainlogClient, logUnaryMiddleware, logWebHandler, logBroker, newPinoServer, pinoDrainTimeoutCréation du logger, policy de destination, masquage, configuration globale
@go-like/winstonWrappers Winston et cycle de vie d'arrêtwrappers de logging, newWinstonServerLogger/transports et leurs sémantiques natives finish/close
@go-like/otelWrappers explicites de traces/métriques OpenTelemetrynewOtelServer, traceClient, traceUnaryMiddleware, traceWebHandler, traceBroker, measureClient, measureClientMiddleware, measureUnaryMiddleware, newRequestMetricsProviders globaux, exporters, context manager, instrumentation automatique
@go-like/prometheusMétriques de requêtes Prometheus et Handler de scrapenewRequestMetrics, measureClient, measureUnaryMiddleware, measureWebHandler, measureBroker, createPrometheusHandlerRegistry global, collectors hors du Registry fourni, tâches en arrière-plan

Inventaire complet des sous-chemins source publics ​

Voici les 27 sous-chemins source explicites déclarés par les manifests de paquets actuels. Les paquets générés peuvent ajouter un export ./package.json contenant uniquement des métadonnées ; ce n'est ni un paquet supplémentaire ni une API source.

#Sous-cheminExports principauxPublic visé
1@go-like/broker/providerregisterSubscriberTerminal, subscriberTerminalAuteurs de fournisseurs
2@go-like/cache/providerputOptionsAuteurs de fournisseurs
3@go-like/config/envenvSourceAuteurs d'applications
4@go-like/config/filefileSource, jsonFileDecoderAuteurs d'applications
5@go-like/config/nodenewNodeFileCapabilityAuteurs runtime Node
6@go-like/config/yamldecodeYamlAuteurs d'applications
7@go-like/core/lifecyclewaitForContextAuteurs de cycle de vie/fournisseurs
8@go-like/core/nodesignalIntégration de processus Node/Bun
9@go-like/nats/brokernewNatsCoreBrokerApplications NATS Core
10@go-like/nats/jetstreamnewNatsJetStreamServer, natsJetStreamCloseTimeoutApplications JetStream
11@go-like/nats/jetstream/brokernewNatsJetStreamBrokerApplications Broker JetStream
12@go-like/registry/provideroptions fournisseur et helpers de snapshotAuteurs de fournisseurs
13@go-like/registry-mdns/nodenewNodeMDNSHostApplications mDNS Node
14@go-like/store/provideroptions write/delete/list et snapshotsAuteurs de fournisseurs
15@go-like/store-file/nodenewNodeFileStoreHostApplications Store fichier Node
16@go-like/struct/codecencodeJson, decodeJsonAuteurs de contrats typés
17@go-like/struct/runtimeintrospection et helpers de parsingAuteurs runtime/fournisseurs
18@go-like/transport/headersGo-Like-Metadata, Go-Like-Timeout-MsAuteurs de fournisseurs Transport
19@go-like/transport/jsonencodeJsonBody, decodeJsonBody, jsonContentTypeAuteurs Transport typé/brut
20@go-like/transport/providermetadata, codecs ServiceError, erreurs de transport et observeCallAuteurs de fournisseurs
21@go-like/transport-http/nodenewNodeHTTPTransport, allowHTTP1, clientAuthApplications HTTP Node
22@go-like/web/healthcreateHealthHandlerApplications Web
23@go-like/web/nodenewNodeServer, hostname, port, nodeShutdownTimeoutApplications host Web Node
24@go-like/client/discoverynewDiscoveryResolver, DiscoveryResolverAuteurs d’applications
25@go-like/transport-grpc-buf/nativenewClient, newServerAuteurs d’applications
26@go-like/transport/sseencodeSSEComment, encodeSSEEvent, encodeSSEJsonEvent, eventStreamContentTypeSSE server streams
27@go-like/web/bunnewBunServer, hostname, port, bunShutdownTimeoutWeb applications

@go-like/otel/testing et @go-like/web/node/testing ne sont ni des mappings de chemins TypeScript ni des exports actuels des manifests de paquets. Ne les documentez pas comme entrypoints publics.

Matrice de décision runtime ​

Entrée ou famille de fournisseursSource portableNatif Bun/NodeFormulation de preuve
Context, Core root, Health, Metadata, Resilience, StructOuiAucun import natif requisContrat source ; vérifiez la matrice actuellement exécutée avant une formulation de release
Web root et Web healthOuiHost requis séparémentLe Handler est portable ; un Handler n'est pas un listener
Memory Transport, Memory Store, Memory Cache, Memory BrokerSource locale au processusAucun service externeNi distribué, ni durable, ni interprocessus
HTTP root et fournisseurs Config/Registry/Store adossés à FetchFetch injectéLe runtime choisit FetchPortable par source ou lane déclarée, pas de parité universelle
Sous-chemins /nodeNonSpécifiques Node, avec exécution possible sur BunUn import explicite modifie le graphe runtime
NATS, RabbitMQ, BullMQ, Redis, Pino, Winston, SDK natifs OTelDépend du fournisseurFixtures Node/Bun ou preuve propre au paquetLisez le README du fournisseur et le périmètre E2E
ZooKeeperNonNode/BunNe généralisez pas depuis la racine Registry

Règles de sélection des fonctions ​

  • Utilisez contextHandler à la frontière Web lorsque vous avez besoin d'un Context, plutôt qu'une sacoche de requête propre au framework.
  • Utilisez newApp et server(...) lorsqu'un processus possède plusieurs ressources admises, ou lorsque la propriété du signal et de l'arrêt doit être explicite.
  • Utilisez server.registerHandler(endpoint, handler) typé lorsque les deux côtés doivent partager une validation Struct runtime. Utilisez server.registerHandler(service, endpoint, handler) brut lorsque l'application possède un autre contrat d'octets .
  • Utilisez withEndpoint(...) à la construction du client pour le routage direct. Pour Discovery, utilisez ensemble withEndpoint("discovery:///<name>") et withDiscovery(...) ; ne combinez pas les adresses directes avec Discovery. Les deux sources utilisent le même Selector.
  • Utilisez withSelector(...), withFilter(...) et withBlock() uniquement si le service a besoin du comportement de plan de contrôle qu'ils ajoutent.
  • Utilisez withRetry(...) seulement après avoir écrit l'autorisation de rejeu, le nombre maximal total de tentatives, le prédicat d'échec et l'idempotence métier.
  • Utilisez newMemoryStore pour des tests déterministes, pas pour revendiquer une durabilité.
  • Utilisez newMemoryCache pour une accélération jetable, pas comme autorité des rendez-vous ou des paiements.
  • Utilisez newBrokerServer pour rattacher une souscription à Core, pas pour obtenir un worker de file universel ni une API de règlement.
  • Utilisez newOtelServer, newPinoServer, newWinstonServer ou un Handler Prometheus seulement après que l'application a créé le fournisseur ou Registry natif.

Exclusions explicites ​

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

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.

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.