Skip to content

Package and provider reference ​

This page is organized by the question an application is trying to answer, not by the packages/ directory layout. Import from the smallest public package that owns the contract. Runtime-specific behavior is exposed by an explicit subpath. Provider packages are not interchangeable implementations with a single universal guarantee.

Reading this page ​

  • Contract means a portable or provider-neutral interface.
  • Provider means an implementation backed by memory, a file, a network service, or a native library.
  • Lifecycle adapter means a Server wrapper around an application-created native resource.
  • Evidence identifies the kind of repository support: source/export, declared tests, or a reported local command result. It does not turn a package version into an npm or production claim.

The current source inventory is 45 non-private @go-like/* package manifests and 27 public source subpaths, all at version 0.0.1 in this checkout. The 44 examples/* workspaces are private applications, not public packages.

@go-like/transport-grpc-buf and @go-like/protoc-gen-like appear here for package navigation; they are an upstream-runtime integration and a build-time generator, not interchangeable Transport SPI providers.

Choose by job ​

JobStart withAdd when neededgo-like does not own
Expose a Web API@go-like/web, @go-like/core@go-like/web/node or a framework's native Fetch handlerRouter, framework middleware, auth, response policy
Call an internal service@go-like/client, @go-like/transport@go-like/transport-memory, @go-like/transport-http, @go-like/structBusiness idempotency, generated IDL, full-duplex RPC
Use generated Protobuf RPC@go-like/transport-grpc-buf@go-like/protoc-gen-like; add /native for managed standard gRPCBuf online services, Google runtime, health/reflection
Discover service instances@go-like/registryOne Registry provider, filters, a SelectorBackend lease/revision consistency or global service locator
Load configuration@go-like/configenv/file/YAML or one external Config providerAmbient global configuration and cross-resource transactions
Store authoritative bytes@go-like/storeMemory, File, Consul, etcd, or Vault providerA generic database/ORM or uniform provider guarantees
Cache disposable values@go-like/cacheMemory or Redis providerAuthority, persistence, CAS, durable business state
Publish or consume bytes@go-like/brokerMemory, RabbitMQ, or NATSUniversal ack/nack/term, DLQ, durable offset, exactly-once
Add typed event payloads@go-like/eventAn application CodecSchema registry, replay, settlement policy
Run an existing scheduler or worker@go-like/core@go-like/croner, @go-like/bullmq, @go-like/natsNative queue, processor, job policy, or broker connection
Add operations@go-like/health, @go-like/resiliencePino, Winston, OTel, PrometheusGlobal instrumentation, auth, deployment policy

Foundation packages ​

PackageUse it forPrincipal public APIRuntime and ownership note
@go-like/contextExplicit cancellation, deadlines, causes, and valuesbackground, todo, withCancel, withCancelCause, withDeadline, withDeadlineCause, withTimeout, withTimeoutCause, cause, withoutCancel, withValue, afterFunc, canceled, deadlineExceededPortable source contract. Context uses AbortSignal internally; it is not a Go ABI or DI bag
@go-like/coreCompose application and resource lifecyclenewApp, server, registrar, beforeStart, afterStart, beforeStop, afterStop, startTimeout, stopTimeout, context, id, name, version, metadata, endpoint, newContext, fromContextPortable structural Server and App. Sibling stop calls are concurrent
@go-like/metadataImmutable multi-value metadata and explicit propagationmetadata types and propagation functionsClient and server metadata domains are separate; metadata is not trusted identity
@go-like/structRuntime Struct validation for typed endpoints and JSONstruct, Infer, Struct, StructErrorCurrent public package. It is runtime validation, not Protobuf, IDL, or generated code. struct.parse takes an optional errorMap; there is no global setErrorMap
@go-like/healthLiveness and readiness probe registrynewProbeRegistry, ProbeRegistry, Probe, ProbeReportEmpty liveness passes; empty readiness fails closed; default probe timeout is 1,000 ms
@go-like/resilienceExplicit retry, circuit breaker, and non-blocking rate limitingretry, exponentialBackoff, newCircuitBreaker, newTokenBucketLimiter, circuitOpenRetry authorization is caller-declared; no automatic idempotency or background limiter task

Web, generated RPC, and internal call packages ​

PackageUse it forPrincipal public APIDoes not own
@go-like/webStandard Web Handler and request Context bridgeHandler, ContextHandler, contextHandlerRoutes, WebSockets, SSE policy, listener, authentication
@go-like/web/healthHealth Handler routescreateHealthHandlerProbe registration or framework route mounting
@go-like/web/nodeNode listener around a Fetch HandlernewNodeServer, hostname, port, nodeShutdownTimeoutInternal HTTP Transport TLS/HTTP2; use @go-like/transport-http/node for that
@go-like/clientInternal JSON calls, SSE server streams, discovery, selection, middleware, retries, poolingnewClient, withTransport, withEndpoint, withDiscovery, withSelector, withFilter, withBlock, withRetry, middleware, use, circuitBreakerMiddleware, closeTimeout, poolSize, poolTtlFramework routes, business replay safety, physical socket limits
@go-like/serverInternal JSON and SSE server and route dispatchnewServer, Server.registerHandler, httpRoute, transport, address, advertise, middleware, use, listenOption, rateLimitMiddlewareFramework router, application authorization
@go-like/transportTransport SPI and Fetch Request/ResponseTransport, Client, Listener, defineService, ServerStream, TransportInfo, Endpoint, endpoint, chain, serviceErrorA concrete wire unless a provider is selected; no internal full-duplex promise
@go-like/transport-memoryIn-process Fetch TransportnewMemoryTransportCross-process behavior, persistence, network fallback, TLS
@go-like/transport-httpFetch-backed internal HTTP TransportnewHTTPTransport, executor, maxMessageBytesA complete portable listener without an injected HTTPHost; native Node TLS controls
@go-like/transport-http/nodeNative Node internal HTTP TransportnewNodeHTTPTransport, allowHTTP1, clientAuthAutomatic security policy
@go-like/transport-grpc-bufPortable generated RPC over Connect and gRPC-WebnewHandler, fromHandlerContext, callOptionsListener, Fetch request-streaming/bidi, or browser standard gRPC
@go-like/transport-grpc-buf/nativeManaged standard-gRPC Client/Server for backend runtimesnewClient, newServer, direct/Discovery/Selector/TLS construction optionsProtobuf/framing reimplementation, browser transport, health/reflection
@go-like/protoc-gen-likeProject-local Node 22+ build-time generationprotoc-gen-like executable, protocGenLikeRuntime dependency, provider package, or Bun requirement

Config packages ​

Package or subpathUse it forPrincipal functionBoundary
@go-like/configConfig manager and object sourcesnewConfig, source, objectSource, schema, resolver, placeholderResolver, onReloadError, onTerminalErrorImmutable snapshots and accepted watcher lifecycle; not a Core Server by itself
@go-like/config/envExplicit environment record sourceenvSourceAccepts an injected record; does not read ambient runtime globals
@go-like/config/fileFile source and JSON decoder contractfileSource, jsonFileDecoderNeeds an explicit file capability
@go-like/config/nodeNode file capabilitynewNodeFileCapabilityRuntime-specific Node subpath
@go-like/config/yamlYAML decoding into ConfigObjectdecodeYamlDecoding is not source watching or schema publication
@go-like/config-consulConsul HTTP configuration sourceconsulSource, jsonConsulDecoderConsul blocking-query and consistency behavior
@go-like/config-etcdetcd gateway configuration sourceetcdSource, jsonEtcdDecoderRevision, compaction, and gateway protocol behavior
@go-like/config-kubernetesOne Kubernetes ConfigMap or Secret keykubernetesSource, jsonKubernetesDecoderResource-version/relist semantics; no cross-resource transaction
@go-like/config-vaultVault KV v2 sourcevaultSourceVault authentication, TLS, token policy, and KV semantics

Config external providers use injected standard Fetch. Credentials and redirects have provider-specific security behavior; http versus https remains an application or deployment decision unless a provider rejects it.

Registry packages ​

PackageUse it forPrincipal functionRuntime/backend note
@go-like/registryContract, snapshot, filters, selectorsfilterVersion, filterLabel, newRandomSelector, newRoundRobinSelector, newWeightedRoundRobinSelector, newP2CSelector, newEWMASelectorComplete replacement snapshots; selection feedback is explicit
@go-like/registry/providerProvider author helpers and registration diagnosticsproviderOptions, notifyRegistrationError, snapshot/provider helpersProvider-facing subpath, not usual application entrypoint
@go-like/registry-consulConsul registration and discoverynewConsulRegistryHealth-filtered, blocking-query, TTL/critical behavior is Consul-native
@go-like/registry-etcdetcd registration and discoverynewEtcdRegistryLeases, revisions, watch/relist, compaction behavior
@go-like/registry-kubernetesEndpointSlice discovery and optional registrationnewKubernetesRegistryKubernetes EndpointSlice, owner references, no fabricated TTL
@go-like/registry-mdnsLocal multicast discoverynewMDNSRegistryRoot provider is portable by design; UDP host is /node
@go-like/registry-mdns/nodeNode UDP multicast capabilitynewNodeMDNSHostExplicit Node runtime subpath
@go-like/registry-zookeeperZooKeeper ephemeral registration and discoverynewZookeeperRegistryNode.js and Bun documented

Registry is reachability state, not durable business data. A provider may retain a last snapshot while rebuilding a transient watcher, but an authoritative empty snapshot must fail closed.

Store and Cache packages ​

PackageUse it forPrincipal functionBoundary
@go-like/storeRecord contract and optionsexpiresIn, ifAbsent, ifRevision, prefix, limit, cursorRevisions, CAS, TTL, pagination; provider capabilities vary
@go-like/store/providerProvider write/delete/list helperswriteOptions, deleteOptions, listOptions, snapshot and conflict helpersProvider-facing; not a durable backend by itself
@go-like/store-memoryProcess-local Store testsnewMemoryStore, clockNo restart durability or cross-process state
@go-like/store-fileLocal file StorenewFileStoreSingle-owner local state; use /node for the Node host
@go-like/store-file/nodeNode file capabilitynewNodeFileStoreHostExplicit Node subpath
@go-like/store-consulConsul KV StorenewConsulStoreConsul sessions, TTL/CAS combinations, and uncertain mutation behavior
@go-like/store-etcdetcd KV StorenewEtcdStoreGateway, lease, revision, compaction and uncertain mutation behavior
@go-like/store-vaultVault KV v2 StorenewVaultStoreDoes not promise uniform Store TTL/CAS semantics
@go-like/cacheDisposable value/TTL contractexpiresInNo CAS, revision, durability, or authority
@go-like/cache-memoryProcess-local cachenewMemoryCache, clockNo persistence; lazy expiry; suitable for tests and local acceleration
@go-like/cache-redisRedis-backed cachenewRedisCacheNative Redis connection, URL credential handling, and runtime requirements remain visible

Broker, event, and work packages ​

Package or subpathUse it forPrincipal functionBoundary
@go-like/brokerByte/topic Broker contractnewBrokerServerNo portable ack/nack/term, DLQ, retry, or durable offset
@go-like/broker/providerProvider terminal registrationregisterSubscriberTerminal, subscriberTerminalProvider-facing lifecycle bookkeeping
@go-like/broker-memoryExact-topic in-process brokernewMemoryBrokerInstance-private, broadcast, no durable settlement
@go-like/broker-rabbitmqRabbitMQ borrowed, confirm, or recovering brokernewRabbitMqBroker, newConfirmRabbitMqBroker, newRecoveringRabbitMqBrokeramqplib channel/connection and native settlement semantics
@go-like/eventTyped codec over a BrokereventBrokerNative delivery remains visible; no replay or schema registry
@go-like/natsNATS lifecycle and native broker entrypointsnewNatsCoreServer, natsCoreDrainTimeoutCore connection and subscription semantics remain native
@go-like/nats/brokerNATS Core BrokernewNatsCoreBrokerNative Msg, queue group, drain, and at-most-once semantics
@go-like/nats/jetstreamJetStream ConsumerMessages lifecyclenewNatsJetStreamServer, natsJetStreamCloseTimeoutNative ConsumerMessages close/stop/closed behavior
@go-like/nats/jetstream/brokerTyped byte Broker over JetStreamnewNatsJetStreamBrokerJsMsg, PubAck, ack/nak/term, redelivery, and DLQ remain native
@go-like/cronerLifecycle for existing Croner jobsnewCronerServerCroner schedule, callback, overlap, and passive terminal semantics
@go-like/bullmqLifecycle for existing BullMQ WorkernewBullMqWorkerServer, bullMqWorkerShutdownTimeoutQueue, Redis, processor, retry/backoff, stalled jobs, and job identity

Logging and observability packages ​

PackageUse it forPrincipal functionDoes not own
@go-like/pinoPino request/broker wrappers and drain lifecyclelogClient, logUnaryMiddleware, logWebHandler, logBroker, newPinoServer, pinoDrainTimeoutLogger construction, destination policy, redaction, global setup
@go-like/winstonWinston wrappers and shutdown lifecyclelogging wrappers, newWinstonServerLogger/transports and their native finish/close semantics
@go-like/otelExplicit OpenTelemetry trace/metric wrappersnewOtelServer, traceClient, traceUnaryMiddleware, traceWebHandler, traceBroker, measureClient, measureClientMiddleware, measureUnaryMiddleware, newRequestMetricsGlobal providers, exporters, context manager, automatic instrumentation
@go-like/prometheusPrometheus request metrics and scrape HandlernewRequestMetrics, measureClient, measureUnaryMiddleware, measureWebHandler, measureBroker, createPrometheusHandlerGlobal Registry, collectors outside the supplied Registry, background tasks

Complete public source subpath inventory ​

These are the 27 explicit source subpaths declared by the current package manifests. Generated packages may add a metadata-only ./package.json export; that is not a source API.

#SubpathPrincipal exportsAudience
1@go-like/broker/providerregisterSubscriberTerminal, subscriberTerminalProvider authors
2@go-like/cache/providerputOptionsProvider authors
3@go-like/client/discoverynewDiscoveryResolver, DiscoveryResolverClient owner authors
4@go-like/config/envenvSourceApplication authors
5@go-like/config/filefileSource, jsonFileDecoderApplication authors
6@go-like/config/nodenewNodeFileCapabilityNode runtime authors
7@go-like/config/yamldecodeYamlApplication authors
8@go-like/core/lifecyclewaitForContextLifecycle/provider authors
9@go-like/core/nodesignalNode/Bun process integration
10@go-like/nats/brokernewNatsCoreBrokerNATS Core applications
11@go-like/nats/jetstreamnewNatsJetStreamServer, natsJetStreamCloseTimeoutJetStream applications
12@go-like/nats/jetstream/brokernewNatsJetStreamBrokerJetStream Broker applications
13@go-like/registry/providerprovider options and snapshot helpersProvider authors
14@go-like/registry-mdns/nodenewNodeMDNSHostNode mDNS applications
15@go-like/store/providerwrite/delete/list options and snapshotsProvider authors
16@go-like/store-file/nodenewNodeFileStoreHostNode file Store applications
17@go-like/struct/codecencodeJson, decodeJsonTyped contract authors
18@go-like/struct/runtimeintrospection and parsing helpersRuntime/provider authors
19@go-like/transport/headersGo-Like-Metadata, Go-Like-Timeout-MsTransport/provider authors
20@go-like/transport/jsonencodeJsonBody, decodeJsonBody, jsonContentTypeTyped/raw transport authors
21@go-like/transport/providermetadata, ServiceError codecs, transport errors, and observeCallProvider authors
22@go-like/transport-grpc-buf/nativemanaged standard-gRPC Client/Server and optionsBackend RPC applications
23@go-like/transport-http/nodenewNodeHTTPTransport, allowHTTP1, clientAuthNode HTTP applications
24@go-like/web/healthcreateHealthHandlerWeb applications
25@go-like/web/nodenewNodeServer, hostname, port, nodeShutdownTimeoutNode Web host applications
26@go-like/transport/sseencodeSSEComment, encodeSSEEvent, encodeSSEJsonEvent, eventStreamContentTypeSSE server streams
27@go-like/web/bunnewBunServer, hostname, port, bunShutdownTimeoutWeb applications

@go-like/otel/testing and @go-like/web/node/testing are not TypeScript path mappings or current package manifest exports. Do not document them as public entrypoints.

Runtime decision matrix ​

Entry or provider familyPortable sourceBun/Node nativeEvidence wording
Context, Core root, Health, Metadata, Resilience, StructYesNo native import requiredSource contract; check current executed matrix before release wording
Web root and Web healthYesHost required separatelyHandler is portable; a Handler is not a listener
@go-like/transport-grpc-buf portable Fetch bridgeStandard Request/ResponseUses caller-owned Connect transport/clientConnect/gRPC-Web unary and server-streaming evidence only
@go-like/transport-grpc-buf/native managed standard gRPCNo browser claimNode upstream support; Bun 1.4.4 compatibility targetFour cardinalities in the physical-package interoperability matrix
@go-like/protoc-gen-like build-time generatorNo application runtime dependencyProject-local Node 22+ executablenpm/pnpm/Yarn scripts; no Bun requirement
Memory Transport, Memory Store, Memory Cache, Memory BrokerProcess-local sourceNo external serviceNot distributed, durable, or cross-process
HTTP root and Fetch-backed Config/Registry/Store providersInjected FetchRuntime chooses FetchPortable by source or declared runtime lane, not universal parity
/node subpathsNoNode-specific, with some Bun execution possibleExplicit import changes runtime graph
NATS, RabbitMQ, BullMQ, Redis, Pino, Winston, OTel native SDKsProvider-dependentNode/Bun fixtures or package-specific runtime evidenceRead the provider README and E2E scope
ZooKeeperNoNode/BunDo not generalize from Registry root

Function selection rules ​

  • Use contextHandler at the Web edge when you need Context, not a custom framework request bag.
  • Use newApp and server(...) when one process has more than one admitted resource or when signal and shutdown ownership should be explicit.
  • Use typed server.registerHandler(endpoint, handler) when both sides should share runtime Struct validation. Use raw server.registerHandler(service, endpoint, handler) when the application owns a different byte contract.
  • Use project-local protoc-gen-like when a Protobuf service needs generated ctx-first Handler/Client glue. Generated clients borrow a Connect Transport; the managed Client implements that transport contract. The portable Fetch root proves unary/server-streaming; /native owns standard gRPC and all four cardinalities.
  • For @go-like/client, use construction-time withEndpoint(...) for direct routing. For Discovery, use withEndpoint("discovery:///<name>") and withDiscovery(...) together; do not combine direct addresses with Discovery. Both sources use the same Selector.
  • For the unary @go-like/client, use withSelector(...), withFilter(...), and withBlock() only when the service needs the control-plane behavior they add.
  • For the unary @go-like/client, use withRetry(...) only after writing down replay authorization, maximum total attempts, failure predicate, and business idempotency.
  • Use newMemoryStore for deterministic tests, not for a durability claim.
  • Use newMemoryCache for disposable acceleration, not as the appointment or payment authority.
  • Use newBrokerServer to attach one subscription to Core, not to obtain a universal queue worker or settlement API.
  • Use newOtelServer, newPinoServer, newWinstonServer, or a Prometheus Handler only after the application has created the native provider or registry.

Explicit exclusions ​

Managed gRPC on Node 26.12.1 and Bun 1.4.4 passes the slow-consumer drain regression. The full physical-package matrix is green on Node 26.12.1 and Bun 1.4.4; this scoped result does not establish every production shutdown or cancellation scenario.

The current inventory owns generated ctx-first Protobuf RPC glue, a portable Connect/gRPC-Web Fetch bridge, and managed standard-gRPC owners at /native. Portable Fetch does not support request-streaming/bidi or browser standard gRPC. The managed path owns session reuse, close, Discovery/Selector integration, and TLS/mTLS construction; its required-client-auth evidence is scoped to Node 26.12.1 and Bun 1.4.4, including trusted success and missing/untrusted rejection before handler entry. Official health/reflection, validation, canonical error-details mapping, a Google gRPC runtime, any Buf online service, and future runtime-version compatibility remain outside the contract. Event Store/history/replay, generic authentication/authorization, ORM behavior, a global service locator, and cluster orchestration also remain outside the current contract.

Managed gRPC slow-consumer drain on Node 26.12.1 and Bun 1.4.4 is verified in the native gRPC drain matrix. The earlier Connect 2.1.2 and Bun 1.4.2 Fetch cancellation observations remain in the claims ledger; this run does not establish that those limitations are fixed.