go-atlas

module
v0.0.0-...-b788499 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2026 License: MIT

README

go-atlas

Production-ready Go building blocks for distributed systems — transport, caching, observability, auth, secrets, and more.

Go Reference CI Go Report Card Release

Overview

go-atlas is a modular Go toolkit for distributed services. Each package is usable on its own and covers one concern: transport (HTTP, gRPC, NATS), caching, observability, authentication, secret management, configuration, and domain utilities.

Every major component is defined by an interface, implementations are injected via functional options, and unset dependencies default to safe no-ops. Import only what you need — there is no framework bootstrap or global state.

History. go-atlas started in 2022 as an internal company project and ran in production for several years before it was extracted and open-sourced on GitHub. As a result, the public git history begins at the point of import rather than at the project's actual inception.

On AI tooling. Yes, we use AI assistants on this project — deliberately and with purpose. Every change is reviewed, tested, and held to the same standards as hand-written code. AI accelerates well-understood work; it does not replace design decisions or engineering judgment.

Requirements

  • Go 1.25+

Installation

go get github.com/altessa-s/go-atlas

Import only the packages you need:

import "github.com/altessa-s/go-atlas/data/cache"

The root go.mod declares every integration go-atlas supports (OPA, AWS, GCP, Vault, NATS, Redis, and more), so all of them appear in a consumer's go.sum. Go's build graph is per-package: only the packages you actually import are compiled and linked into your binary. Heavy integrations live behind their own subpackages, so an unused subsystem costs you go.sum entries — never build time or binary size.

Package Overview

Package Description
auth/audit Authorization decision audit trail — durable, structured allow/deny events with pluggable sinks
auth/denylist Token revocation denylist (JWT ID or subject), permanent or TTL-bound, consulted by verifiers
auth/jwt Generic JWT signing and verification toolkit shared by the auth packages
auth/mtls Verified mTLS client certificate to authenticated principal, with pluggable validators
auth/oauth2client OAuth2 token acquisition: client credentials, refresh, auth code, RFC 8693 exchange
auth/oidc OIDC/JWT validation with JWKS auto-refresh, CEL rules, token revocation
auth/opa Open Policy Agent with bundle hot-reloading
auth/principal Canonical verified-identity type: subject, tenant, scopes, roles, raw claims
auth/scope Deny-by-default scope authorization policy with gRPC and HTTP adapters
auth/selfjwt Self-issued JWT minting and verification with per-subject keys and rotation
auth/spiffe SPIFFE ID parsing from X.509 certificates for workload identity
auth/static Static token / API-key validator for service-to-service auth
config Configuration structs and validation for all go-atlas components
config/loader Multi-source config loading (YAML/TOML, env vars, secrets) with validation
config/templates Commented YAML configuration templates for the config structs
core Collections, concurrency, errors, context, encoding, retry, WAL, scheduling, types (zero external deps)
data/audit Async audit-event dispatcher with pluggable storage
data/cache Multi-backend caching with singleflight, fallback, and TTL management
data/filter CEL expression parser with translators for MongoDB, RediSearch, and Lua
data/idempotency Idempotency key management (Redis, NATS, memory)
data/leadelect Leader election (NATS KV-based)
data/limiters Token-bucket rate limiting (Redis, NATS, memory)
data/locks Distributed locking (NATS)
data/meilisearch Meilisearch SDK wrapper with context propagation and sentinel-error classification
data/mongo MongoDB repository patterns, cursor pagination, CSFLE, migrations
data/orderby AIP-132 order_by DSL parser with translators for MongoDB, Meilisearch, RediSearch
data/outbox Transactional outbox (MongoDB-backed)
data/probfilter Bloom and Cuckoo probabilistic filters
data/saga Orchestration-based saga engine: sequential steps, compensating rollbacks, crash recovery
domain/behavior Struct-tag field_behavior strip for Create / Update / Response payloads
domain/converter Generic struct-to-struct conversion with codecs and lazy iterators
domain/eventbus Synchronous, lock-free, transaction-safe in-process event bus for decoupling domains
domain/fieldtracker Struct field change tracking
domain/normalizer Tag-driven data normalization with pluggable modifiers
domain/proto Protobuf field mask and field_behavior-driven payload sanitization
domain/validation ISO 7064 MOD 11-10 check-digit computation and validation
infrastructure/meilisearch Meilisearch client setup and lifecycle
infrastructure/mongo MongoDB client setup and lifecycle
infrastructure/nats NATS connection management
infrastructure/redis Redis client setup
observability/appstats CPU, memory, network I/O, and goroutine metrics with periodic logging
observability/health Health check coordinator with subscriptions
observability/metrics Prometheus metrics via interface-driven adapters
observability/slog slog extensions: nil-safe helpers, colorized and PII-masking handlers
observability/tracing Distributed tracing (OpenTelemetry, OTLP, console) with samplers
plugins Dynamic .so plugin manager with signature verification and sandboxing
security/hmacsign Webhook-style HMAC body signing and verification (Stripe/GitHub scheme) with key rotation
security/secrets Generic secret manager with LRU cache, watch, and scheduler refresh
security/tlsutils TLS helpers, OCSP stapling, Let's Encrypt (Certify), Vault-backed certs
security/vault HashiCorp Vault client (AppRole, token, userpass auth)
service/dispatch Generic non-blocking batching dispatch engine with optional WAL persistence
service/id Service identity (ULID/UUID) from env, file, or static
service/scheduler Distributed cron scheduler with priority queues and leader election
transport/broker Message broker abstraction (NATS JetStream, outbox)
transport/grpc gRPC server, interceptors, factory, gRPC client
transport/http HTTP server, middlewares, codec registry, HTTP client
transport/proxydial Forward-proxy dialers (HTTP CONNECT, SOCKS5) for non-net/http clients
proto Protobuf definitions and generated Go code for gRPC services

Command-line tools

Tool Description
tools/codegen/optgen Code generator for the functional options pattern
tools/codegen/goconfig Configuration struct code generator and format converter
cmd/plugin-sign Sign and verify .so plugins with Ed25519 / ECDSA / RSA-PSS

cmd/optgen and cmd/goconfig are equivalent installable wrappers around the tools/codegen packages.

Documentation

Guide Description
Architecture Package structure, layering, and design principles
Coordination & Consistency Choosing between eventbus, uow, outbox, broker, and saga; the dual-write problem; how they compose
Saga Saga orchestration: model, status lifecycle, crash recovery, diagrams, and examples
Configuration Multi-source config loading, env vars, secrets
Self-Issued JWT Per-subject JWT minting and fail-closed verification, key rotation, verification-key cache
Static Tokens API-key / pre-shared token validation, HMAC-SHA256 storage, failure-only rate limiting
OPA Authorization Rego policy evaluation, pluggable sources (embed/fs/GitLab/S3), atomic hot-reload, events
Health Coordinator, HTTP probes (/healthz, /readyz), gRPC grpc_health_v1
Logging (slog) slogx helpers, context-scoped loggers, handler chain (buffered, colorized, leveled, masking, multi, prefixed)
Plugins Dynamic plugin loading, signature verification, sandboxing
Proxy Outbound HTTP/gRPC proxy: YAML modes, wiring, TLS to proxy
Metrics Reference All 129 Prometheus metrics across 24 subsystems
Field Behavior Strip google.api.field_behavior fields (OUTPUT_ONLY / IDENTIFIER / IMMUTABLE / INPUT_ONLY) from Create / Update / Response payloads
Event Bus In-process event bus: delivery & transaction semantics, the uow post-commit compensation companion, pluggable database backends

Full API documentation is available at pkg.go.dev.

Development

git clone https://github.com/altessa-s/go-atlas.git
cd go-atlas
Command Description
make fmt Format code and sort imports
make lint Run golangci-lint with the repo config (.golangci.yml)
make test Run all tests
make test-all Tests with race detector, shuffle, and coverage
make bench Run all benchmarks
make security-scan Run govulncheck and gosec
make generate Run go generate across all packages
make ci Run full CI checks locally (lint, test, security, dupl)
make clean Remove generated artifacts

Contributing

Contributions are welcome. Please see CONTRIBUTING.md for guidelines.

Security

Report vulnerabilities by email to security@altessa-s.com. See SECURITY.md.

License

MIT License — Copyright (c) 2021-2026 ALTESSA SOLUTIONS INC. See LICENSE.

Directories

Path Synopsis
auth
audit
Package audit records authorization decisions — who was allowed or denied which action on which resource, and why — as durable, structured, queryable events, distinct from aggregate metrics and ephemeral logs.
Package audit records authorization decisions — who was allowed or denied which action on which resource, and why — as durable, structured, queryable events, distinct from aggregate metrics and ephemeral logs.
audit/sinks/dataaudit
Package dataaudit bridges the authorization-decision [audit.Sink] seam to the project's general-purpose data/audit dispatcher.
Package dataaudit bridges the authorization-decision [audit.Sink] seam to the project's general-purpose data/audit dispatcher.
denylist
Package denylist provides a reusable token-revocation seam shared across the token packages.
Package denylist provides a reusable token-revocation seam shared across the token packages.
denylist/mirror
Package mirror adapts an asynchronous, distributed revocation store to the synchronous github.com/altessa-s/go-atlas/auth/jwt.RevocationChecker seam that auth/jwt and auth/selfjwt verifiers accept.
Package mirror adapts an asynchronous, distributed revocation store to the synchronous github.com/altessa-s/go-atlas/auth/jwt.RevocationChecker seam that auth/jwt and auth/selfjwt verifiers accept.
denylist/negcache
Package negcache places a probabilistic negative cache in front of an authoritative — typically distributed — revocation store, so the common case (a token that was never revoked) is answered locally without a network round trip.
Package negcache places a probabilistic negative cache in front of an authoritative — typically distributed — revocation store, so the common case (a token that was never revoked) is answered locally without a network round trip.
denylist/negcache/factory
Package factory provides a fluent builder that constructs a github.com/altessa-s/go-atlas/auth/denylist/negcache.Cache from a probabilistic-filter configuration and injected dependencies.
Package factory provides a fluent builder that constructs a github.com/altessa-s/go-atlas/auth/denylist/negcache.Cache from a probabilistic-filter configuration and injected dependencies.
denylist/storages/redis
Package redis provides a Redis-backed distributed exact revocation store for the denylist subsystem.
Package redis provides a Redis-backed distributed exact revocation store for the denylist subsystem.
jwt
Package jwt is a generic, low-level toolkit for signing and verifying JWTs.
Package jwt is a generic, low-level toolkit for signing and verifying JWTs.
mtls
Package mtls turns a verified mutual-TLS client certificate into an authenticated principal.
Package mtls turns a verified mutual-TLS client certificate into an authenticated principal.
mtls/factory
Package factory turns a github.com/altessa-s/go-atlas/config.MTLS into the github.com/altessa-s/go-atlas/auth/mtls validator options it describes, giving the mTLS subsystem the same config→component path the OPA and scope factories provide.
Package factory turns a github.com/altessa-s/go-atlas/config.MTLS into the github.com/altessa-s/go-atlas/auth/mtls validator options it describes, giving the mTLS subsystem the same config→component path the OPA and scope factories provide.
mtls/revocation
Package revocation provides a live OCSP peer-revocation check as an github.com/altessa-s/go-atlas/auth/mtls.CertValidator.
Package revocation provides a live OCSP peer-revocation check as an github.com/altessa-s/go-atlas/auth/mtls.CertValidator.
oauth2client
Package oauth2client acquires OAuth2 tokens from an external identity provider as a client.
Package oauth2client acquires OAuth2 tokens from an external identity provider as a client.
oauth2client/factory
Package factory builds client-side OAuth2 token acquisition from a github.com/altessa-s/go-atlas/config.OAuth2Client template and injected dependencies.
Package factory builds client-side OAuth2 token acquisition from a github.com/altessa-s/go-atlas/config.OAuth2Client template and injected dependencies.
oidc
Package oidc provides OpenID Connect JWT token validation with automatic JWKS key rotation.
Package oidc provides OpenID Connect JWT token validation with automatic JWKS key rotation.
oidc/factory
Package factory provides a fluent builder for creating OIDC providers from configuration.
Package factory provides a fluent builder for creating OIDC providers from configuration.
opa
Package opa provides Open Policy Agent (OPA) integration for authorization.
Package opa provides Open Policy Agent (OPA) integration for authorization.
opa/factory
Package factory provides a fluent builder for creating OPA managers from configuration.
Package factory provides a fluent builder for creating OPA managers from configuration.
opa/sources/embed
Package embed implements opa.PolicySource backed by an fs.FS (typically an embed.FS) containing .rego policy files.
Package embed implements opa.PolicySource backed by an fs.FS (typically an embed.FS) containing .rego policy files.
opa/sources/filesystem
Package filesystem provides a PolicySource implementation that reads OPA policies from the local filesystem.
Package filesystem provides a PolicySource implementation that reads OPA policies from the local filesystem.
opa/sources/gitlab
Package gitlab provides a opa.PolicySource implementation that reads OPA policies from a GitLab repository.
Package gitlab provides a opa.PolicySource implementation that reads OPA policies from a GitLab repository.
opa/sources/s3
Package s3 implements opa.PolicySource backed by an S3-compatible object store (AWS S3, MinIO, etc.).
Package s3 implements opa.PolicySource backed by an S3-compatible object store (AWS S3, MinIO, etc.).
principal
Package principal defines the canonical verified-identity type shared across the auth stack.
Package principal defines the canonical verified-identity type shared across the auth stack.
scope
Package scope is a transport-neutral, deny-by-default authorization policy built on permission scopes.
Package scope is a transport-neutral, deny-by-default authorization policy built on permission scopes.
scope/factory
Package factory builds a frozen github.com/altessa-s/go-atlas/auth/scope.Registry from a github.com/altessa-s/go-atlas/config.ScopeRegistry.
Package factory builds a frozen github.com/altessa-s/go-atlas/auth/scope.Registry from a github.com/altessa-s/go-atlas/config.ScopeRegistry.
selfjwt
Package selfjwt mints and verifies self-issued JWTs.
Package selfjwt mints and verifies self-issued JWTs.
spiffe
Package spiffe parses SPIFFE IDs from X.509 certificates.
Package spiffe parses SPIFFE IDs from X.509 certificates.
static
Package static provides transport-neutral static-token authentication.
Package static provides transport-neutral static-token authentication.
cmd
goconfig command
goconfig is a tool for converting configuration between formats.
goconfig is a tool for converting configuration between formats.
optgen command
optgen generates functional option functions from struct field tags.
optgen generates functional option functions from struct field tags.
plugin-sign command
Command plugin-sign creates and verifies cryptographic signatures for Go plugins, and generates the key pairs used to do so.
Command plugin-sign creates and verifies cryptographic signatures for Go plugins, and generates the key pairs used to do so.
Package config defines the configuration structures and validation logic for all infrastructure components managed by go-atlas.
Package config defines the configuration structures and validation logic for all infrastructure components managed by go-atlas.
internal/utils
Package utils provides internal utilities for the config package.
Package utils provides internal utilities for the config package.
internal/validators
Package validators provides custom validation rules for configuration fields.
Package validators provides custom validation rules for configuration fields.
loader
Package loader provides multi-source configuration loading with YAML/TOML backends and environment variable mapping.
Package loader provides multi-source configuration loading with YAML/TOML backends and environment variable mapping.
loader/backend
Package backend defines interfaces for configuration file backends.
Package backend defines interfaces for configuration file backends.
loader/backend/toml
Package toml provides a TOML backend for the configuration parser.
Package toml provides a TOML backend for the configuration parser.
loader/backend/yaml3
Package yaml3 provides a YAML backend for the configuration parser.
Package yaml3 provides a YAML backend for the configuration parser.
loader/secrets
Package secrets provides secret expansion functionality for configuration loading.
Package secrets provides secret expansion functionality for configuration loading.
core
collections/maps
Package maps provides utilities for map transformation, filtering, and conversion.
Package maps provides utilities for map transformation, filtering, and conversion.
collections/slices
Package slices provides generic utilities for slice operations like deduplication, filtering, and transformation.
Package slices provides generic utilities for slice operations like deduplication, filtering, and transformation.
context
Package context provides helpers for working with contexts.
Package context provides helpers for working with contexts.
encoding/etag
Package etag produces and compares entity-tags (ETags) as defined by RFC 7232, in both strong (`"value"`) and weak (`W/"value"`) forms.
Package etag produces and compares entity-tags (ETags) as defined by RFC 7232, in both strong (`"value"`) and weak (`W/"value"`) forms.
encoding/hash
Package hash provides small, stdlib-only helpers for producing deterministic, hex-encoded SHA-256 digest strings.
Package hash provides small, stdlib-only helpers for producing deterministic, hex-encoded SHA-256 digest strings.
encoding/serializer
Package serializer provides a common Serializer interface for encoding and decoding arbitrary Go values.
Package serializer provides a common Serializer interface for encoding and decoding arbitrary Go values.
errors
Package errors provides general error classification and wrapping utilities.
Package errors provides general error classification and wrapping utilities.
factory
Package factory provides common utilities for factory pattern implementations.
Package factory provides common utilities for factory pattern implementations.
io
Package io provides I/O utilities: buffer pooling, byte-limited readers, and a lazy range-based read-seeker for remote objects.
Package io provides I/O utilities: buffer pooling, byte-limited readers, and a lazy range-based read-seeker for remote objects.
io/files
Package files provides utilities for file system operations.
Package files provides utilities for file system operations.
io/spool
Package spool materializes a streaming io.Reader into a local, rewindable backing store — memory for small content, a temp file for larger content — so callers can re-read it from offset 0 without touching the origin again.
Package spool materializes a streaming io.Reader into a local, rewindable backing store — memory for small content, a temp file for larger content — so callers can re-read it from offset 0 without touching the origin again.
io/spoolbudget
Package spoolbudget bounds the aggregate disk held by concurrent spools.
Package spoolbudget bounds the aggregate disk held by concurrent spools.
io/wal
Package wal implements a segmented, append-only write-ahead log for crash-safe durability of opaque byte payloads.
Package wal implements a segmented, append-only write-ahead log for crash-safe durability of opaque byte payloads.
net/http
Package http provides foundational HTTP utilities and types.
Package http provides foundational HTTP utilities and types.
retry
Package retry provides small, stdlib-only retry helpers.
Package retry provides small, stdlib-only retry helpers.
runtime
Package runtime provides low-level runtime utilities wrapping Go's runtime package.
Package runtime provides low-level runtime utilities wrapping Go's runtime package.
runtime/appinfo
Package appinfo provides standardized access to application metadata and configuration.
Package appinfo provides standardized access to application metadata and configuration.
runtime/capabilities
Package capabilities wraps the Linux capabilities subsystem (capset(2), capget(2), prctl(2) PR_CAPBSET_*, PR_CAP_AMBIENT_*).
Package capabilities wraps the Linux capabilities subsystem (capset(2), capget(2), prctl(2) PR_CAPBSET_*, PR_CAP_AMBIENT_*).
runtime/concurrency
Package concurrency provides utilities for managing concurrent execution.
Package concurrency provides utilities for managing concurrent execution.
runtime/helpers
Package helpers provides low-level runtime utilities for debugging and tracing.
Package helpers provides low-level runtime utilities for debugging and tracing.
runtime/internal/exectest
Package exectest provides a helper for tests that need to execute syscalls with irreversible process-wide side effects — Linux security primitives like capset(2), prctl(PR_SET_NO_NEW_PRIVS), landlock_restrict_self(2), seccomp(SET_MODE_FILTER), and persistent setrlimit calls.
Package exectest provides a helper for tests that need to execute syscalls with irreversible process-wide side effects — Linux security primitives like capset(2), prctl(PR_SET_NO_NEW_PRIVS), landlock_restrict_self(2), seccomp(SET_MODE_FILTER), and persistent setrlimit calls.
runtime/landlock
Package landlock wraps the Linux Landlock LSM unprivileged filesystem sandbox syscalls (landlock_create_ruleset, landlock_add_rule, and landlock_restrict_self) added in kernel 5.13.
Package landlock wraps the Linux Landlock LSM unprivileged filesystem sandbox syscalls (landlock_create_ruleset, landlock_add_rule, and landlock_restrict_self) added in kernel 5.13.
runtime/nonewprivs
Package nonewprivs installs the Linux PR_SET_NO_NEW_PRIVS bit on the calling process.
Package nonewprivs installs the Linux PR_SET_NO_NEW_PRIVS bit on the calling process.
runtime/panics
Package panics provides utilities for panic handling and runtime assertions.
Package panics provides utilities for panic handling and runtime assertions.
runtime/rlimits
Package rlimits installs Linux process resource limits (setrlimit(2)) on the calling process.
Package rlimits installs Linux process resource limits (setrlimit(2)) on the calling process.
runtime/seccomp
Package seccomp installs a Linux seccomp-BPF filter that denies a fixed list of syscalls a Go process never legitimately calls.
Package seccomp installs a Linux seccomp-BPF filter that denies a fixed list of syscalls a Go process never legitimately calls.
runtime/signals
Package signals provides OS signal handling with priority-based execution and rate limiting.
Package signals provides OS signal handling with priority-based execution and rate limiting.
scheduler
Package scheduler defines the core interface and value types for task scheduling.
Package scheduler defines the core interface and value types for task scheduling.
text/strings
Package strings provides utilities for string manipulation, conversion, and secure operations.
Package strings provides utilities for string manipulation, conversion, and secure operations.
time
Package time provides utilities for safe timer management.
Package time provides utilities for safe timer management.
time/timeformat
Package timeformat provides time formatting with RFC3339 and Unix timestamp support.
Package timeformat provides time formatting with RFC3339 and Unix timestamp support.
types/bits
Package bits provides generic bit manipulation functions for all integer types.
Package bits provides generic bit manipulation functions for all integer types.
types/constraints
Package constraints provides reusable generic constraints for numbers, primitives, and strings.
Package constraints provides reusable generic constraints for numbers, primitives, and strings.
types/nilcheck
Package nilcheck provides utilities for checking nil interface values.
Package nilcheck provides utilities for checking nil interface values.
types/optional
Package optional provides a generic Optional[T] type that holds either a value of type T or nothing.
Package optional provides a generic Optional[T] type that holds either a value of type T or nothing.
types/ptr
Package ptr provides helpers for creating and dereferencing pointers to primitive types.
Package ptr provides helpers for creating and dereferencing pointers to primitive types.
types/redacted
Package redacted provides RedactedString, a named string type for credential and other sensitive fields that substitutes its content with a fixed placeholder in every standard output context (fmt, log/slog, encoding/json, gopkg.in/yaml.v3, encoding.TextMarshaler, go.mongodb.org/mongo-driver/v2/bson).
Package redacted provides RedactedString, a named string type for credential and other sensitive fields that substitutes its content with a fixed placeholder in every standard output context (fmt, log/slog, encoding/json, gopkg.in/yaml.v3, encoding.TextMarshaler, go.mongodb.org/mongo-driver/v2/bson).
types/result
Package result provides a generic Result[T] type that holds either a value of type T or an error.
Package result provides a generic Result[T] type that holds either a value of type T or an error.
data
audit
Package audit provides high-performance, asynchronous user action auditing with at-least-once delivery semantics.
Package audit provides high-performance, asynchronous user action auditing with at-least-once delivery semantics.
audit/factory
Package factory provides a fluent builder for creating audit auditors from configuration.
Package factory provides a fluent builder for creating audit auditors from configuration.
audit/storages/memory
Package memory provides an in-memory audit.Storage implementation.
Package memory provides an in-memory audit.Storage implementation.
audit/storages/mongo
Package mongo provides a MongoDB-backed audit.Storage implementation.
Package mongo provides a MongoDB-backed audit.Storage implementation.
cache
Package cache provides a unified caching interface with multiple backends and serialization support.
Package cache provides a unified caching interface with multiple backends and serialization support.
cache/factory
Package factory provides a fluent builder for creating cache providers from configuration.
Package factory provides a fluent builder for creating cache providers from configuration.
cache/lru
Package lru provides generic thread-safe and sharded LRU cache implementations.
Package lru provides generic thread-safe and sharded LRU cache implementations.
cache/providers
Package providers defines the cache Provider interface and common errors.
Package providers defines the cache Provider interface and common errors.
cache/providers/freecache
Package freecache provides an in-memory cache provider using FreeCache.
Package freecache provides an in-memory cache provider using FreeCache.
cache/providers/lru
Package lru provides an LRU-based cache provider implementing the providers.Provider interface.
Package lru provides an LRU-based cache provider implementing the providers.Provider interface.
cache/providers/noop
Package noop provides a no-operation cache provider that discards all writes.
Package noop provides a no-operation cache provider that discards all writes.
cache/providers/redis
Package redis provides a Redis-backed cache provider.
Package redis provides a Redis-backed cache provider.
filter
Package filter provides CEL expression parsing and translation to database-specific filters.
Package filter provides CEL expression parsing and translation to database-specific filters.
filter/translators/lua
Package lua provides a translator that converts filter AST nodes to Lua boolean expressions for use in Redis EVAL scripts.
Package lua provides a translator that converts filter AST nodes to Lua boolean expressions for use in Redis EVAL scripts.
filter/translators/meili
Package meili provides a translator that converts filter AST nodes to Meilisearch filter expressions.
Package meili provides a translator that converts filter AST nodes to Meilisearch filter expressions.
filter/translators/mongo
Package mongo provides a translator that converts filter AST nodes to MongoDB bson.M filters.
Package mongo provides a translator that converts filter AST nodes to MongoDB bson.M filters.
filter/translators/redisearch
Package redisearch provides a translator that converts filter AST nodes to RediSearch query strings.
Package redisearch provides a translator that converts filter AST nodes to RediSearch query strings.
idempotency
Package idempotency provides duplicate request detection using idempotency keys.
Package idempotency provides duplicate request detection using idempotency keys.
idempotency/factory
Package factory provides a fluent builder for creating idempotency keepers from configuration.
Package factory provides a fluent builder for creating idempotency keepers from configuration.
idempotency/storages
Package storages defines the Storage interface for idempotency key persistence.
Package storages defines the Storage interface for idempotency key persistence.
idempotency/storages/memory
Package memory provides in-memory storage for idempotency keys with TTL support.
Package memory provides in-memory storage for idempotency keys with TTL support.
idempotency/storages/nats
Package nats provides NATS JetStream KeyValue storage for idempotency keys.
Package nats provides NATS JetStream KeyValue storage for idempotency keys.
idempotency/storages/redis
Package redis provides Redis storage for idempotency keys with TTL support.
Package redis provides Redis storage for idempotency keys with TTL support.
internal/memcleanup
Package memcleanup provides a generic two-phase TTL sweep for RWMutex-guarded in-memory maps.
Package memcleanup provides a generic two-phase TTL sweep for RWMutex-guarded in-memory maps.
internal/natsbase
Package natsbase provides a base type for NATS JetStream KeyValue providers.
Package natsbase provides a base type for NATS JetStream KeyValue providers.
internal/natskvlease
Package natskvlease provides common utilities for NATS JetStream KeyValue-based distributed resource management, including distributed locks and leader election.
Package natskvlease provides common utilities for NATS JetStream KeyValue-based distributed resource management, including distributed locks and leader election.
internal/redisbase
Package redisbase provides common utilities for Redis-based storage implementations.
Package redisbase provides common utilities for Redis-based storage implementations.
internal/redisutils
Package redisutils provides common utilities for Redis-based data providers.
Package redisutils provides common utilities for Redis-based data providers.
leadelect
Package leadelect provides distributed leader election for service coordination.
Package leadelect provides distributed leader election for service coordination.
leadelect/errs
Package errs provides common errors for leader election providers.
Package errs provides common errors for leader election providers.
leadelect/factory
Package factory provides a fluent builder for creating leader electors from configuration.
Package factory provides a fluent builder for creating leader electors from configuration.
leadelect/providers
Package providers defines the Provider interface for leader election backends.
Package providers defines the Provider interface for leader election backends.
leadelect/providers/nats
Package nats provides NATS JetStream KeyValue-based leader election for distributed systems.
Package nats provides NATS JetStream KeyValue-based leader election for distributed systems.
limiters
Package limiters provides shared types and interfaces for rate limiting functionality used by both gRPC interceptors and HTTP middlewares.
Package limiters provides shared types and interfaces for rate limiting functionality used by both gRPC interceptors and HTTP middlewares.
limiters/budget
Package budget implements a distributed budget limiter for outbound requests.
Package budget implements a distributed budget limiter for outbound requests.
limiters/budget/factory
Package factory provides a fluent builder for creating budget limiters from configuration.
Package factory provides a fluent builder for creating budget limiters from configuration.
limiters/storages
Package storages defines the Storage interface for rate limiting.
Package storages defines the Storage interface for rate limiting.
limiters/storages/memory
Package memory provides in-memory rate limit storage for single-instance tokenbucket deployments.
Package memory provides in-memory rate limit storage for single-instance tokenbucket deployments.
limiters/storages/nats
Package nats provides NATS JetStream KeyValue rate limit storage for distributed tokenbucket deployments.
Package nats provides NATS JetStream KeyValue rate limit storage for distributed tokenbucket deployments.
limiters/storages/redis
Package redis provides Redis-based rate limit storage for distributed tokenbucket deployments.
Package redis provides Redis-based rate limit storage for distributed tokenbucket deployments.
limiters/tokenbucket
Package tokenbucket implements rule-based rate limiting using a sliding window algorithm.
Package tokenbucket implements rule-based rate limiting using a sliding window algorithm.
limiters/tokenbucket/factory
Package factory provides a fluent builder for creating rate limiters from configuration.
Package factory provides a fluent builder for creating rate limiters from configuration.
locks/dlock
Package dlock provides distributed locks for coordinating access across multiple service instances.
Package dlock provides distributed locks for coordinating access across multiple service instances.
locks/dlock/errs
Package errs provides common errors for distributed lock providers.
Package errs provides common errors for distributed lock providers.
locks/dlock/factory
Package factory provides a fluent builder for creating distributed locks from configuration.
Package factory provides a fluent builder for creating distributed locks from configuration.
locks/dlock/providers
Package providers defines the Provider and Lock interfaces for distributed locking.
Package providers defines the Provider and Lock interfaces for distributed locking.
locks/dlock/providers/nats
Package nats provides NATS JetStream KeyValue-based distributed locks with automatic renewal.
Package nats provides NATS JetStream KeyValue-based distributed locks with automatic renewal.
locks/dlock/providers/noop
Package noop provides no-operation distributed lock for testing without external dependencies.
Package noop provides no-operation distributed lock for testing without external dependencies.
meilisearch
Package meilisearch provides a thin wrapper around the meilisearch-go SDK for full-text search and document indexing.
Package meilisearch provides a thin wrapper around the meilisearch-go SDK for full-text search and document indexing.
mongo
Package mongo provides a MongoDB client wrapper with CSFLE encryption, transaction handling, and structured logging.
Package mongo provides a MongoDB client wrapper with CSFLE encryption, transaction handling, and structured logging.
mongo/cursor_storages/kvstore
Package kvstore provides a common interface and adapter for key-value based cursor storage implementations.
Package kvstore provides a common interface and adapter for key-value based cursor storage implementations.
mongo/cursor_storages/memory
Package memory provides in-memory cursor storage for MongoDB pagination.
Package memory provides in-memory cursor storage for MongoDB pagination.
mongo/cursor_storages/nats
Package nats provides NATS JetStream KeyValue cursor storage for MongoDB pagination.
Package nats provides NATS JetStream KeyValue cursor storage for MongoDB pagination.
mongo/cursor_storages/redis
Package redis provides Redis cursor storage for MongoDB pagination.
Package redis provides Redis cursor storage for MongoDB pagination.
mongo/factory
Package factory provides a fluent builder for creating cursor storages from configuration.
Package factory provides a fluent builder for creating cursor storages from configuration.
mongo/internal/testhelpers
Package testhelpers provides shared test fixtures for the data/mongo subtree.
Package testhelpers provides shared test fixtures for the data/mongo subtree.
mongo/kms
Package kms provides a unified KMS provider interface for MongoDB CSFLE.
Package kms provides a unified KMS provider interface for MongoDB CSFLE.
mongo/kms/aws
Package kmsaws provides AWS KMS integration for MongoDB CSFLE.
Package kmsaws provides AWS KMS integration for MongoDB CSFLE.
mongo/kms/azure
Package kmsazure provides Azure Key Vault integration for MongoDB CSFLE.
Package kmsazure provides Azure Key Vault integration for MongoDB CSFLE.
mongo/kms/factory
Package factory creates kms.Provider instances from config.MongoKMS configuration, routing to the appropriate cloud or local KMS implementation (AWS, Azure, GCP, local).
Package factory creates kms.Provider instances from config.MongoKMS configuration, routing to the appropriate cloud or local KMS implementation (AWS, Azure, GCP, local).
mongo/kms/gcp
Package kmsgcp provides Google Cloud KMS integration for MongoDB CSFLE.
Package kmsgcp provides Google Cloud KMS integration for MongoDB CSFLE.
mongo/kms/local
Package kmslocal provides local key management for MongoDB CSFLE.
Package kmslocal provides local key management for MongoDB CSFLE.
orderby
Package orderby parses the AIP-132 order_by DSL into a flat AST and translates it to database-specific sort representations.
Package orderby parses the AIP-132 order_by DSL into a flat AST and translates it to database-specific sort representations.
orderby/translators/meili
Package meili translates an orderby.Spec into a Meilisearch sort argument.
Package meili translates an orderby.Spec into a Meilisearch sort argument.
orderby/translators/mongo
Package mongo translates an orderby.Spec into a MongoDB bson.D sort document.
Package mongo translates an orderby.Spec into a MongoDB bson.D sort document.
orderby/translators/redisearch
Package redisearch translates an orderby.Spec into a single-field RediSearch sort instruction.
Package redisearch translates an orderby.Spec into a single-field RediSearch sort instruction.
outbox
Package outbox implements the Transactional Outbox pattern for at-least-once event delivery guarantees.
Package outbox implements the Transactional Outbox pattern for at-least-once event delivery guarantees.
outbox/factory
Package factory provides a fluent builder for creating generic outbox instances from configuration.
Package factory provides a fluent builder for creating generic outbox instances from configuration.
outbox/store/mongo
Package outboxstore provides MongoDB implementation of outbox.Store.
Package outboxstore provides MongoDB implementation of outbox.Store.
probfilter
Package probfilter provides probabilistic data structures for optimizing existence checks.
Package probfilter provides probabilistic data structures for optimizing existence checks.
probfilter/bloom
Package bloom provides a Bloom filter implementation for probabilistic existence checks.
Package bloom provides a Bloom filter implementation for probabilistic existence checks.
probfilter/bloom/storages
Package storages defines the storage interface for Bloom filter backends.
Package storages defines the storage interface for Bloom filter backends.
probfilter/bloom/storages/memory
Package memory provides an in-memory Bloom filter storage implementation using the bits-and-blooms/bloom library.
Package memory provides an in-memory Bloom filter storage implementation using the bits-and-blooms/bloom library.
probfilter/bloom/storages/redis
Package redis provides a Redis-backed Bloom filter storage implementation using RedisBloom module BF.* commands.
Package redis provides a Redis-backed Bloom filter storage implementation using RedisBloom module BF.* commands.
probfilter/cuckoo
Package cuckoo provides a Cuckoo filter implementation for probabilistic existence checks.
Package cuckoo provides a Cuckoo filter implementation for probabilistic existence checks.
probfilter/cuckoo/storages
Package storages defines the storage interface for Cuckoo filter backends.
Package storages defines the storage interface for Cuckoo filter backends.
probfilter/cuckoo/storages/memory
Package memory provides an in-memory Cuckoo filter storage implementation using the seiflotfy/cuckoofilter library.
Package memory provides an in-memory Cuckoo filter storage implementation using the seiflotfy/cuckoofilter library.
probfilter/cuckoo/storages/redis
Package redis provides a Redis-backed Cuckoo filter storage implementation using RedisBloom module CF.* commands.
Package redis provides a Redis-backed Cuckoo filter storage implementation using RedisBloom module CF.* commands.
probfilter/factory
Package factory provides fluent builders for creating probabilistic filters and filter managers from configuration.
Package factory provides fluent builders for creating probabilistic filters and filter managers from configuration.
probfilter/internal/redisfilter
Package redisfilter provides the shared plumbing for Redis-backed probabilistic filter storages built on RedisBloom module commands.
Package redisfilter provides the shared plumbing for Redis-backed probabilistic filter storages built on RedisBloom module commands.
probfilter/stats
Package stats provides statistics types for probabilistic filters.
Package stats provides statistics types for probabilistic filters.
saga
Package saga runs inter-service distributed transactions using the orchestration-based saga pattern: a sequence of local steps, each with an optional compensating action that undoes it.
Package saga runs inter-service distributed transactions using the orchestration-based saga pattern: a sequence of local steps, each with an optional compensating action that undoes it.
saga/errs
Package errs holds the sentinel errors returned by the saga orchestrator and its storage backends.
Package errs holds the sentinel errors returned by the saga orchestrator and its storage backends.
saga/factory
Package factory assembles a saga.Orchestrator from a config.Saga and injected backend clients.
Package factory assembles a saga.Orchestrator from a config.Saga and injected backend clients.
saga/storages/memory
Package memory provides an in-process, concurrency-safe saga.Store backed by a map.
Package memory provides an in-process, concurrency-safe saga.Store backed by a map.
saga/storages/mongo
Package mongo provides a durable saga.Store backed by a MongoDB collection.
Package mongo provides a durable saga.Store backed by a MongoDB collection.
saga/storages/nats
Package nats provides a durable saga.Store backed by a NATS JetStream KeyValue bucket.
Package nats provides a durable saga.Store backed by a NATS JetStream KeyValue bucket.
saga/storages/redis
Package redis provides a durable saga.Store backed by Redis.
Package redis provides a durable saga.Store backed by Redis.
domain
behavior
Package behavior strips fields from a plain Go struct based on `behavior` struct tags, the reflection-based counterpart to github.com/altessa-s/go-atlas/domain/proto/fieldbehavior.
Package behavior strips fields from a plain Go struct based on `behavior` struct tags, the reflection-based counterpart to github.com/altessa-s/go-atlas/domain/proto/fieldbehavior.
behavior/translators/mongo
Package mongo provides github.com/altessa-s/go-atlas/domain/behavior.Translator implementations that fold behavior-tagged Go structs into MongoDB BSON documents from a single behavior reflection walk.
Package mongo provides github.com/altessa-s/go-atlas/domain/behavior.Translator implementations that fold behavior-tagged Go structs into MongoDB BSON documents from a single behavior reflection walk.
converter
Package converter provides high-performance struct-to-struct conversion with field mapping, filtering, embedded structs, slices, maps, and protocol buffers.
Package converter provides high-performance struct-to-struct conversion with field mapping, filtering, embedded structs, slices, maps, and protocol buffers.
converter/codec
Package convcodec provides core types for custom conversion codecs and a chain execution engine.
Package convcodec provides core types for custom conversion codecs and a chain execution engine.
converter/codec/durpb
Package durpb provides a codec for bidirectional conversion between durationpb.Duration and time.Duration.
Package durpb provides a codec for bidirectional conversion between durationpb.Duration and time.Duration.
converter/codec/jsonpb
Package jsonpb provides a codec for bidirectional conversion between json.RawMessage and structpb.Struct.
Package jsonpb provides a codec for bidirectional conversion between json.RawMessage and structpb.Struct.
converter/codec/mapslice
Package mapslice provides codecs for converting map values or keys to slices.
Package mapslice provides codecs for converting map values or keys to slices.
converter/codec/oneof
Package oneof provides a codec for bidirectional conversion between struct-based oneof representations and protobuf oneof interface types.
Package oneof provides a codec for bidirectional conversion between struct-based oneof representations and protobuf oneof interface types.
converter/codec/pbwrap
Package pbwrap provides a codec for bidirectional conversion between protobuf wrapper types (wrapperspb.*) and primitive Go types.
Package pbwrap provides a codec for bidirectional conversion between protobuf wrapper types (wrapperspb.*) and primitive Go types.
converter/codec/tspb
Package tspb provides a codec for bidirectional conversion between timestamppb.Timestamp and time.Time or int64 Unix timestamps.
Package tspb provides a codec for bidirectional conversion between timestamppb.Timestamp and time.Time or int64 Unix timestamps.
converter/codec/unixtime
Package unixtime provides a codec for bidirectional conversion between time.Time and int64 Unix timestamps with optional millisecond precision.
Package unixtime provides a codec for bidirectional conversion between time.Time and int64 Unix timestamps with optional millisecond precision.
converter/codecs/optionalcodec
Package optionalcodec provides a converter codec that bridges optional.Optional[T] fields and matching pointer or value counterparts during struct-to-struct conversion.
Package optionalcodec provides a converter codec that bridges optional.Optional[T] fields and matching pointer or value counterparts during struct-to-struct conversion.
converter/internal/reflect
Package reflect provides low-level reflection utilities shared across the converter and its codec sub-packages.
Package reflect provides low-level reflection utilities shared across the converter and its codec sub-packages.
eventbus
Package eventbus provides a synchronous, lock-free, in-process event bus used to decouple domains that must coordinate without taking a direct dependency on one another.
Package eventbus provides a synchronous, lock-free, in-process event bus used to decouple domains that must coordinate without taking a direct dependency on one another.
eventbus/uow
Package uow is an in-process unit of work that pairs a database transaction with non-transactional side effects via post-commit compensation (an in-process saga).
Package uow is an in-process unit of work that pairs a database transaction with non-transactional side effects via post-commit compensation (an in-process saga).
fieldtracker
Package fieldtracker detects changed fields between two struct instances.
Package fieldtracker detects changed fields between two struct instances.
normalizer
Package normalizer provides tag-based string normalization for struct fields.
Package normalizer provides tag-based string normalization for struct fields.
normalizer/modifiers
Package modifiers provides value transformation functions for the [normalizer] package.
Package modifiers provides value transformation functions for the [normalizer] package.
proto/fieldbehavior
Package fieldbehavior strips fields from a proto.Message based on its google.api.field_behavior annotations.
Package fieldbehavior strips fields from a proto.Message based on its google.api.field_behavior annotations.
proto/fieldmask
Package fieldmask provides hierarchical field mask utilities for Protocol Buffers.
Package fieldmask provides hierarchical field mask utilities for Protocol Buffers.
proto/internal/behavior
Package behavior reads the google.api.field_behavior annotation from a protoreflect.FieldDescriptor.
Package behavior reads the google.api.field_behavior annotation from a protoreflect.FieldDescriptor.
validation/iso7064
Package iso7064 provides check-digit validation using the ISO 7064 MOD 11-10 algorithm for 9-digit numeric identifiers.
Package iso7064 provides check-digit validation using the ISO 7064 MOD 11-10 algorithm for 9-digit numeric identifiers.
infrastructure
meilisearch/factory
Package factory provides a fluent builder for creating Meilisearch clients from configuration.
Package factory provides a fluent builder for creating Meilisearch clients from configuration.
mongo/factory
Package factory provides a fluent builder for creating MongoDB clients from configuration.
Package factory provides a fluent builder for creating MongoDB clients from configuration.
nats/factory
Package factory provides a fluent builder for creating NATS connections and JetStream consumer configurations from configuration.
Package factory provides a fluent builder for creating NATS connections and JetStream consumer configurations from configuration.
redis/factory
Package factory provides a fluent builder for creating Redis clients from configuration.
Package factory provides a fluent builder for creating Redis clients from configuration.
internal
testhelpers
Package testhelpers provides common testing utilities and helpers shared across the go-atlas project.
Package testhelpers provides common testing utilities and helpers shared across the go-atlas project.
observability
appstats
Package appstats provides high-performance application statistics monitoring.
Package appstats provides high-performance application statistics monitoring.
health
Package health provides transport-agnostic health check coordination and monitoring.
Package health provides transport-agnostic health check coordination and monitoring.
health/factory
Package factory provides a fluent builder for creating health coordinators from configuration.
Package factory provides a fluent builder for creating health coordinators from configuration.
internal/shared
Package shared provides common types and utilities for observability packages.
Package shared provides common types and utilities for observability packages.
metrics
Package metrics provides an abstract metrics collection system that is not tied to any specific format (Prometheus, StatsD, OpenTelemetry, etc.).
Package metrics provides an abstract metrics collection system that is not tied to any specific format (Prometheus, StatsD, OpenTelemetry, etc.).
metrics/adapters
Package adapters defines the Adapter interface for metrics backends.
Package adapters defines the Adapter interface for metrics backends.
metrics/adapters/memory
Package memory provides an in-memory adapters.Adapter implementation for use in tests.
Package memory provides an in-memory adapters.Adapter implementation for use in tests.
metrics/adapters/prometheus
Package prometheus provides a Prometheus adapters.Adapter for the metrics system.
Package prometheus provides a Prometheus adapters.Adapter for the metrics system.
metrics/factory
Package factory provides a fluent builder for creating metrics collectors from configuration.
Package factory provides a fluent builder for creating metrics collectors from configuration.
slog
Package slog provides nil-safe attribute helpers, context integration, and advanced handlers for Go's log/slog.
Package slog provides nil-safe attribute helpers, context integration, and advanced handlers for Go's log/slog.
slog/factory
Package factory provides a fluent builder for creating slog loggers from configuration.
Package factory provides a fluent builder for creating slog loggers from configuration.
slog/handler/buffered
Package buffered provides an asynchronous slog.Handler that buffers log records and writes them via a background goroutine.
Package buffered provides an asynchronous slog.Handler that buffers log records and writes them via a background goroutine.
slog/handler/colorized
Package colorized provides a slog.Handler with color-coded terminal output.
Package colorized provides a slog.Handler with color-coded terminal output.
slog/handler/internal/base
Package base provides a base implementation for slog handler middlewares.
Package base provides a base implementation for slog handler middlewares.
slog/handler/leveled
Package leveled provides a slog.Handler that filters log records based on per-subsystem log levels.
Package leveled provides a slog.Handler that filters log records based on per-subsystem log levels.
slog/handler/masking
Package masking provides a slog.Handler that masks sensitive data in log records.
Package masking provides a slog.Handler that masks sensitive data in log records.
slog/handler/multi
Package multi provides a slog.Handler that fans out log records to multiple child handlers.
Package multi provides a slog.Handler that fans out log records to multiple child handlers.
slog/handler/prefixed
Package prefixed provides a slog.Handler middleware that adds prefixes to log messages.
Package prefixed provides a slog.Handler middleware that adds prefixes to log messages.
tracing
Package tracing provides an abstract distributed tracing system that is not tied to any specific format (Jaeger, Zipkin, OpenTelemetry, etc.).
Package tracing provides an abstract distributed tracing system that is not tied to any specific format (Jaeger, Zipkin, OpenTelemetry, etc.).
tracing/adapters
Package adapters defines the Adapter interface for tracing backends.
Package adapters defines the Adapter interface for tracing backends.
tracing/adapters/console
Package console provides a console adapters.Adapter for tracing.
Package console provides a console adapters.Adapter for tracing.
tracing/adapters/otlp
Package otlp provides an OTLP adapters.Adapter for tracing.
Package otlp provides an OTLP adapters.Adapter for tracing.
tracing/factory
Package factory provides a fluent builder for creating tracers from configuration.
Package factory provides a fluent builder for creating tracers from configuration.
tracing/propagation
Package propagation provides context propagation for distributed tracing.
Package propagation provides context propagation for distributed tracing.
tracing/sampler
Package sampler provides sampling strategies for distributed tracing.
Package sampler provides sampling strategies for distributed tracing.
Package plugins provides a dynamic plugin manager for loading and managing .so plugins at runtime, inspired by Keycloak's SPI (Service Provider Interface).
Package plugins provides a dynamic plugin manager for loading and managing .so plugins at runtime, inspired by Keycloak's SPI (Service Provider Interface).
factory
Package factory provides a configuration-driven builder for plugins.Manager.
Package factory provides a configuration-driven builder for plugins.Manager.
proto
security
hmacsign
Package hmacsign signs and verifies HTTP request bodies with a shared-secret HMAC, the scheme webhook providers such as Stripe and GitHub use to prove a request came from them and was not tampered with in transit.
Package hmacsign signs and verifies HTTP request bodies with a shared-secret HMAC, the scheme webhook providers such as Stripe and GitHub use to prove a request came from them and was not tampered with in transit.
hmacsign/factory
Package factory builds security/hmacsign signers and verifiers from a github.com/altessa-s/go-atlas/config.WebhookSignature template.
Package factory builds security/hmacsign signers and verifiers from a github.com/altessa-s/go-atlas/config.WebhookSignature template.
hmacsign/httpsign
Package httpsign is the net/http adapter for github.com/altessa-s/go-atlas/security/hmacsign.
Package httpsign is the net/http adapter for github.com/altessa-s/go-atlas/security/hmacsign.
secrets
Package secrets provides centralized secret management with automatic caching, typed errors, and real-time watch capabilities.
Package secrets provides centralized secret management with automatic caching, typed errors, and real-time watch capabilities.
secrets/codec
Package codec provides interfaces for encoding and decoding secret keys and values.
Package codec provides interfaces for encoding and decoding secret keys and values.
secrets/codec/keys/base64
Package base64 provides a KeyDecoder implementation using base64 URL-safe encoding.
Package base64 provides a KeyDecoder implementation using base64 URL-safe encoding.
secrets/codec/values/json
Package json provides a generic ValueDecoder implementation using JSON encoding.
Package json provides a generic ValueDecoder implementation using JSON encoding.
secrets/factory
Package factory provides a fluent builder for creating secrets managers and providers from configuration.
Package factory provides a fluent builder for creating secrets managers and providers from configuration.
secrets/internal/base
Package base provides common utilities and patterns for secret storage providers.
Package base provides common utilities and patterns for secret storage providers.
secrets/providers/gcp
Package gcp provides an implementation of the secrets.Provider interface for Google Cloud Platform's Secret Manager service.
Package gcp provides an implementation of the secrets.Provider interface for Google Cloud Platform's Secret Manager service.
secrets/providers/lockbox
Package lockbox provides an implementation of the secrets.Provider interface for Yandex Cloud Lockbox service.
Package lockbox provides an implementation of the secrets.Provider interface for Yandex Cloud Lockbox service.
secrets/providers/memory
Package memory provides an implementation of the secrets.Provider interface for in-memory secret storage.
Package memory provides an implementation of the secrets.Provider interface for in-memory secret storage.
secrets/providers/vault
Package vault provides an implementation of the secrets.Provider interface for HashiCorp Vault's Key-Value v2 engine.
Package vault provides an implementation of the secrets.Provider interface for HashiCorp Vault's Key-Value v2 engine.
tlsutils
Package tlsutils provides TLS certificate loading and secure configuration utilities.
Package tlsutils provides TLS certificate loading and secure configuration utilities.
tlsutils/factory
Package factory provides a fluent builder for creating TLS configurations and providers from configuration.
Package factory provides a fluent builder for creating TLS configurations and providers from configuration.
tlsutils/ocsp
Package ocsp provides OCSP stapling for TLS certificates with caching and compression.
Package ocsp provides OCSP stapling for TLS certificates with caching and compression.
tlsutils/providers
Package tlsproviders defines interfaces for TLS certificate providers.
Package tlsproviders defines interfaces for TLS certificate providers.
tlsutils/providers/file
Package tlsfile provides file-based TLS certificate provider with optional automatic reloading.
Package tlsfile provides file-based TLS certificate provider with optional automatic reloading.
tlsutils/providers/le
Package tlsle provides Let's Encrypt TLS certificate provider using HTTP-01 ACME challenges.
Package tlsle provides Let's Encrypt TLS certificate provider using HTTP-01 ACME challenges.
tlsutils/providers/s3
Package tlss3 provides an S3-based TLS certificate provider with automatic polling for changes.
Package tlss3 provides an S3-based TLS certificate provider with automatic polling for changes.
tlsutils/providers/vault
Package tlsvault provides HashiCorp Vault-based TLS certificate provider.
Package tlsvault provides HashiCorp Vault-based TLS certificate provider.
tlsutils/spiffe
Package spiffe sources rotating mutual-TLS configurations from the SPIFFE Workload API.
Package spiffe sources rotating mutual-TLS configurations from the SPIFFE Workload API.
tlsutils/spiffe/factory
Package factory builds a SPIFFE Workload API source from configuration.
Package factory builds a SPIFFE Workload API source from configuration.
vault
Package vault provides high-level HashiCorp Vault client with pluggable authentication and automatic token renewal.
Package vault provides high-level HashiCorp Vault client with pluggable authentication and automatic token renewal.
vault/auth
Package auth provides pluggable authentication methods for HashiCorp Vault with automatic token renewal and lifecycle management.
Package auth provides pluggable authentication methods for HashiCorp Vault with automatic token renewal and lifecycle management.
vault/auth/approle
Package approle provides AppRole authentication for HashiCorp Vault.
Package approle provides AppRole authentication for HashiCorp Vault.
vault/auth/token
Package token provides direct token-based authentication for HashiCorp Vault.
Package token provides direct token-based authentication for HashiCorp Vault.
vault/auth/userpass
Package userpass provides username/password authentication for HashiCorp Vault.
Package userpass provides username/password authentication for HashiCorp Vault.
vault/factory
Package factory provides a fluent builder for creating Vault clients from configuration.
Package factory provides a fluent builder for creating Vault clients from configuration.
service
dispatch
Package dispatch provides a generic, non-blocking, batching dispatch engine with optional crash-safe persistence backed by github.com/altessa-s/go-atlas/core/io/wal.
Package dispatch provides a generic, non-blocking, batching dispatch engine with optional crash-safe persistence backed by github.com/altessa-s/go-atlas/core/io/wal.
dispatch/factory
Package factory provides a fluent builder for creating dispatch engines from configuration.
Package factory provides a fluent builder for creating dispatch engines from configuration.
id
Package id provides stable, unique Service ID generation and management for distributed applications.
Package id provides stable, unique Service ID generation and management for distributed applications.
scheduler
Package scheduler provides an internal task scheduler for periodic job execution.
Package scheduler provides an internal task scheduler for periodic job execution.
scheduler/factory
Package factory provides a fluent builder for creating scheduler.Scheduler instances and their storage backends from configuration.
Package factory provides a fluent builder for creating scheduler.Scheduler instances and their storage backends from configuration.
scheduler/storages/memory
Package memory provides an in-memory implementation of scheduler.Storage for the scheduler service.
Package memory provides an in-memory implementation of scheduler.Storage for the scheduler service.
scheduler/storages/mongodb
Package mongodb implements scheduler.Storage using MongoDB as the backing store.
Package mongodb implements scheduler.Storage using MongoDB as the backing store.
scheduler/storages/redis
Package redis provides a Redis-backed implementation of the scheduler.Storage interface.
Package redis provides a Redis-backed implementation of the scheduler.Storage interface.
Package tools contains code generation utilities and related tooling.
Package tools contains code generation utilities and related tooling.
codegen/goconfig command
Package main provides goconfig, a CLI tool for converting configuration files between formats.
Package main provides goconfig, a CLI tool for converting configuration files between formats.
codegen/goconfig/commands
Package commands wires the cobra root command for goconfig and registers all subcommands (currently convert).
Package commands wires the cobra root command for goconfig and registers all subcommands (currently convert).
codegen/goconfig/commands/convert
Package convert implements the "goconfig convert" subcommand and the converters that transform configuration files between YAML, TOML, .env, and Markdown formats.
Package convert implements the "goconfig convert" subcommand and the converters that transform configuration files between YAML, TOML, .env, and Markdown formats.
codegen/optgen command
Package main provides optgen, a code generator for the functional option pattern.
Package main provides optgen, a code generator for the functional option pattern.
codegen/optgen/commands
Package commands implements the cobra-based CLI for the optgen code generator.
Package commands implements the cobra-based CLI for the optgen code generator.
codegen/optgen/config
Package config loads and merges .optgen.yaml configuration files.
Package config loads and merges .optgen.yaml configuration files.
codegen/optgen/internal
Package internal provides the core implementation for the optgen code generator.
Package internal provides the core implementation for the optgen code generator.
codegen/optgen/internal/generator
Package generator produces Go source files containing functional-option functions for struct types annotated with opt tags.
Package generator produces Go source files containing functional-option functions for struct types annotated with opt tags.
codegen/optgen/internal/parser
Package parser extracts struct field metadata from Go AST packages for the optgen code generator.
Package parser extracts struct field metadata from Go AST packages for the optgen code generator.
codegen/optgen/internal/plugin/builtin
Package builtin provides shared helpers and template infrastructure used by the built-in optgen field-handler plugins.
Package builtin provides shared helpers and template infrastructure used by the built-in optgen field-handler plugins.
codegen/optgen/internal/plugin/builtin/check
Package check provides validation check plugins for optgen.
Package check provides validation check plugins for optgen.
codegen/optgen/internal/plugin/builtin/defaults
Package defaults provides type-default plugins that supply initial values for struct fields when the user has not specified an explicit default in the optgen tag.
Package defaults provides type-default plugins that supply initial values for struct fields when the user has not specified an explicit default in the optgen tag.
codegen/optgen/internal/plugin/builtin/fields
Package fields provides field-handler plugins that generate With* (or Without*) functional-option functions for each struct field.
Package fields provides field-handler plugins that generate With* (or Without*) functional-option functions for each struct field.
codegen/optgen/internal/plugin/builtin/guard
Package guard provides early-return guard plugins for optgen.
Package guard provides early-return guard plugins for optgen.
codegen/optgen/internal/plugin/builtin/postprocess
Package postprocess provides modifier plugins that run in plugin.PhasePostProcess, after transforms and before the final struct field assignment.
Package postprocess provides modifier plugins that run in plugin.PhasePostProcess, after transforms and before the final struct field assignment.
codegen/optgen/internal/plugin/builtin/transform
Package transform provides string-transformation plugins that wrap input expressions in standard library calls during code generation.
Package transform provides string-transformation plugins that wrap input expressions in standard library calls during code generation.
codegen/optgen/internal/validator
Package validator provides compile-safety checks for Go identifiers used in generated code.
Package validator provides compile-safety checks for Go identifiers used in generated code.
codegen/optgen/model
Package model defines the public data structures shared between optgen's parser, generator, and plugin subsystems.
Package model defines the public data structures shared between optgen's parser, generator, and plugin subsystems.
codegen/optgen/plugin
Package plugin defines the public extension API for the optgen code generator.
Package plugin defines the public extension API for the optgen code generator.
codegen/shared/rootcmd
Package rootcmd provides a reusable foundation for cobra-based CLI tools in the go-atlas codegen family.
Package rootcmd provides a reusable foundation for cobra-based CLI tools in the go-atlas codegen family.
transport
broker
Package broker provides a high-level message broker abstraction for reliable asynchronous communication.
Package broker provides a high-level message broker abstraction for reliable asynchronous communication.
broker/factory
Package factory provides a fluent builder for creating message brokers and related components from configuration.
Package factory provides a fluent builder for creating message brokers and related components from configuration.
broker/inprogress
Package inprogress provides a Manager that periodically sends InProgress heartbeats for messages being processed, preventing premature redelivery during long-running tasks.
Package inprogress provides a Manager that periodically sends InProgress heartbeats for messages being processed, preventing premature redelivery during long-running tasks.
broker/msg
Package msg defines the message envelope for broker systems.
Package msg defines the message envelope for broker systems.
broker/outbox
Package outbox provides a broker-specific adapter for the generic transactional outbox pattern.
Package outbox provides a broker-specific adapter for the generic transactional outbox pattern.
broker/providers/nats
Package natsprovider provides a NATS JetStream implementation of broker.Provider.
Package natsprovider provides a NATS JetStream implementation of broker.Provider.
broker/providers/nats/recovery
Package recovery provides automatic recovery for NATS JetStream streams and consumers.
Package recovery provides automatic recovery for NATS JetStream streams and consumers.
broker/providers/nats/topics
Package topics provides type-safe NATS subject templating with macro placeholders.
Package topics provides type-safe NATS subject templating with macro placeholders.
grpc
Package grpc provides gRPC server and client utilities for go-atlas services.
Package grpc provides gRPC server and client utilities for go-atlas services.
grpc/client
Package client provides a generic gRPC client with connection management, retry, health checking, and error handling.
Package client provides a generic gRPC client with connection management, retry, health checking, and error handling.
grpc/client/pool
Package pool provides gRPC client connection pooling with automatic cleanup and health monitoring.
Package pool provides gRPC client connection pooling with automatic cleanup and health monitoring.
grpc/handlers/health
Package health implements the gRPC health checking protocol (grpc_health_v1).
Package health implements the gRPC health checking protocol (grpc_health_v1).
grpc/handlers/scheduler
Package scheduler implements the gRPC SchedulerService defined in proto/scheduler/v1/scheduler.proto.
Package scheduler implements the gRPC SchedulerService defined in proto/scheduler/v1/scheduler.proto.
grpc/handlers/serviceinfo
Package serviceinfo implements the gRPC ServiceInfoService (github.com/altessa-s/proto-gen-go/io/altessa/serviceinfo/v1).
Package serviceinfo implements the gRPC ServiceInfoService (github.com/altessa-s/proto-gen-go/io/altessa/serviceinfo/v1).
grpc/interceptors
Package interceptors provides a unified framework for gRPC interceptors.
Package interceptors provides a unified framework for gRPC interceptors.
grpc/interceptors/audit
Package audit provides a gRPC server interceptor that emits audit events for every processed RPC.
Package audit provides a gRPC server interceptor that emits audit events for every processed RPC.
grpc/interceptors/auth
Package auth provides gRPC interceptors for token-based authentication and scope-based authorization.
Package auth provides gRPC interceptors for token-based authentication and scope-based authorization.
grpc/interceptors/auth/mtls
Package mtls is the gRPC adapter for mutual-TLS authentication.
Package mtls is the gRPC adapter for mutual-TLS authentication.
grpc/interceptors/auth/oidc
Package oidc provides OIDC (OpenID Connect) token validation support for the auth interceptor.
Package oidc provides OIDC (OpenID Connect) token validation support for the auth interceptor.
grpc/interceptors/auth/oidc/validator
Package validator provides OIDC token validation and claims extraction functionality.
Package validator provides OIDC token validation and claims extraction functionality.
grpc/interceptors/auth/static
Package static plugs static-token authentication into the gRPC auth interceptor.
Package static plugs static-token authentication into the gRPC auth interceptor.
grpc/interceptors/cache
Package cache provides gRPC server interceptors for response caching with compression support.
Package cache provides gRPC server interceptors for response caching with compression support.
grpc/interceptors/cache/compression
Package compression provides high-performance gzip compression for cache operations.
Package compression provides high-performance gzip compression for cache operations.
grpc/interceptors/defaults
Package defaults provides shared default values for gRPC interceptors.
Package defaults provides shared default values for gRPC interceptors.
grpc/interceptors/driver
Package driver defines the core interfaces for the driven interceptor pattern.
Package driver defines the core interfaces for the driven interceptor pattern.
grpc/interceptors/errstatus
Package errstatus provides gRPC interceptors for consistent error-to-status and status-to-error conversion.
Package errstatus provides gRPC interceptors for consistent error-to-status and status-to-error conversion.
grpc/interceptors/fieldbehavior
Package fieldbehavior is a gRPC server interceptor that runs the matching github.com/altessa-s/go-atlas/domain/proto/fieldbehavior Strip* function against the request and the response based on the gRPC method name.
Package fieldbehavior is a gRPC server interceptor that runs the matching github.com/altessa-s/go-atlas/domain/proto/fieldbehavior Strip* function against the request and the response based on the gRPC method name.
grpc/interceptors/fieldmask
Package fieldmask is a gRPC server interceptor that wires github.com/altessa-s/go-atlas/domain/proto/fieldmask into the gRPC chain.
Package fieldmask is a gRPC server interceptor that wires github.com/altessa-s/go-atlas/domain/proto/fieldmask into the gRPC chain.
grpc/interceptors/geoacl
Package geoacl provides gRPC interceptors for geographic access control.
Package geoacl provides gRPC interceptors for geographic access control.
grpc/interceptors/health
Package health provides gRPC interceptors for service health checking.
Package health provides gRPC interceptors for service health checking.
grpc/interceptors/idempotency
Package idempotency provides gRPC interceptors and helpers for idempotent request handling on both ends of the wire.
Package idempotency provides gRPC interceptors and helpers for idempotent request handling on both ends of the wire.
grpc/interceptors/ipacl
Package ipacl provides gRPC interceptors for IP-based access control.
Package ipacl provides gRPC interceptors for IP-based access control.
grpc/interceptors/limiter
Package limiter provides gRPC interceptors for rate limiting incoming requests.
Package limiter provides gRPC interceptors for rate limiting incoming requests.
grpc/interceptors/logger
Package logger provides gRPC interceptors for request and response logging.
Package logger provides gRPC interceptors for request and response logging.
grpc/interceptors/metadata
Package metadata provides gRPC call metadata extraction and context injection.
Package metadata provides gRPC call metadata extraction and context injection.
grpc/interceptors/metrics
Package metrics provides metrics collection for gRPC servers via the observability/metrics.Collector abstraction.
Package metrics provides metrics collection for gRPC servers via the observability/metrics.Collector abstraction.
grpc/interceptors/protovalidator
Package protovalidator provides gRPC interceptors for validating incoming protocol buffer messages.
Package protovalidator provides gRPC interceptors for validating incoming protocol buffer messages.
grpc/interceptors/protovalidator/buf
Package bufhelpers provides helpers for working with buf protovalidate validation errors in gRPC interceptors.
Package bufhelpers provides helpers for working with buf protovalidate validation errors in gRPC interceptors.
grpc/interceptors/realip
Package realip provides gRPC interceptors for extracting real client IP from proxy headers.
Package realip provides gRPC interceptors for extracting real client IP from proxy headers.
grpc/interceptors/recovery
Package recovery provides gRPC interceptors for recovering from panics in RPC handlers.
Package recovery provides gRPC interceptors for recovering from panics in RPC handlers.
grpc/interceptors/requestid
Package requestid provides gRPC interceptors for request ID generation and propagation.
Package requestid provides gRPC interceptors for request ID generation and propagation.
grpc/interceptors/tracing
Package tracing provides gRPC interceptors for distributed tracing.
Package tracing provides gRPC interceptors for distributed tracing.
grpc/server
Package grpc provides a production-ready gRPC server wrapper with graceful shutdown, TLS support, and reflection.
Package grpc provides a production-ready gRPC server wrapper with graceful shutdown, TLS support, and reflection.
grpc/server/factory
Package factory provides a fluent builder for creating gRPC servers and interceptors from configuration.
Package factory provides a fluent builder for creating gRPC servers and interceptors from configuration.
http/client
Package client provides a resilient HTTP client with automatic retries, circuit breaker protection, rate limiting, and SSRF safeguards.
Package client provides a resilient HTTP client with automatic retries, circuit breaker protection, rate limiting, and SSRF safeguards.
http/client/limiters
Package limiters provides a pluggable rate limiting layer for HTTP clients.
Package limiters provides a pluggable rate limiting layer for HTTP clients.
http/server
Package server provides an HTTP server with graceful shutdown, middleware support, and pluggable router implementations.
Package server provides an HTTP server with graceful shutdown, middleware support, and pluggable router implementations.
http/server/codec
Package codec provides HTTP body encoding/decoding with content negotiation.
Package codec provides HTTP body encoding/decoding with content negotiation.
http/server/codec/providers/json
Package json provides a JSON [codec.Codec] and [codec.StreamingEncoder] backed by encoding/json.
Package json provides a JSON [codec.Codec] and [codec.StreamingEncoder] backed by encoding/json.
http/server/codec/providers/xml
Package xml provides an XML [codec.Codec] backed by encoding/xml.
Package xml provides an XML [codec.Codec] backed by encoding/xml.
http/server/factory
Package factory provides a fluent builder for creating HTTP servers and middleware from configuration.
Package factory provides a fluent builder for creating HTTP servers and middleware from configuration.
http/server/handlers/health
Package health provides HTTP handlers for liveness and readiness probes.
Package health provides HTTP handlers for liveness and readiness probes.
http/server/handlers/metrics
Package metrics mounts the Prometheus default-gatherer handler on a router.Router.
Package metrics mounts the Prometheus default-gatherer handler on a router.Router.
http/server/handlers/ping
Package ping provides a tiny `/ping` HTTP handler that returns `{"message":"pong"}` with HTTP 200.
Package ping provides a tiny `/ping` HTTP handler that returns `{"message":"pong"}` with HTTP 200.
http/server/handlers/pprof
Package pprof mounts Go's runtime/pprof debug handlers on a router.Router.
Package pprof mounts Go's runtime/pprof debug handlers on a router.Router.
http/server/middlewares
Package middlewares provides HTTP middleware interfaces, utilities, and dependency-based ordering.
Package middlewares provides HTTP middleware interfaces, utilities, and dependency-based ordering.
http/server/middlewares/audit
Package audit provides HTTP middleware that emits audit events for every processed request.
Package audit provides HTTP middleware that emits audit events for every processed request.
http/server/middlewares/auth
Package auth provides HTTP authentication middleware with support for various token schemes including Bearer tokens and API keys.
Package auth provides HTTP authentication middleware with support for various token schemes including Bearer tokens and API keys.
http/server/middlewares/auth/mtls
Package mtls is the HTTP adapter for mutual-TLS authentication.
Package mtls is the HTTP adapter for mutual-TLS authentication.
http/server/middlewares/auth/static
Package static plugs static-token authentication into the HTTP auth middleware.
Package static plugs static-token authentication into the HTTP auth middleware.
http/server/middlewares/bodylimit
Package bodylimit provides middleware that rejects requests whose body exceeds a configured size limit.
Package bodylimit provides middleware that rejects requests whose body exceeds a configured size limit.
http/server/middlewares/cors
Package cors provides middleware for handling Cross-Origin Resource Sharing (CORS).
Package cors provides middleware for handling Cross-Origin Resource Sharing (CORS).
http/server/middlewares/defaults
Package defaults provides shared default configurations and constants for HTTP middlewares.
Package defaults provides shared default configurations and constants for HTTP middlewares.
http/server/middlewares/driver
Package driver provides the Driven Middleware pattern for HTTP middlewares.
Package driver provides the Driven Middleware pattern for HTTP middlewares.
http/server/middlewares/geoacl
Package geoacl provides HTTP middleware for geographic access control.
Package geoacl provides HTTP middleware for geographic access control.
http/server/middlewares/idempotency
Package idempotency provides middleware that prevents duplicate processing of non-safe HTTP requests (POST, PUT, PATCH, DELETE).
Package idempotency provides middleware that prevents duplicate processing of non-safe HTTP requests (POST, PUT, PATCH, DELETE).
http/server/middlewares/ipacl
Package ipacl provides HTTP middleware for IP-based access control.
Package ipacl provides HTTP middleware for IP-based access control.
http/server/middlewares/limiter
Package limiter provides middleware for per-request rate limiting.
Package limiter provides middleware for per-request rate limiting.
http/server/middlewares/logger
Package logger provides HTTP middleware for structured request/response logging.
Package logger provides HTTP middleware for structured request/response logging.
http/server/middlewares/metrics
Package metrics provides middleware that records HTTP server metrics via the observability/metrics.Collector abstraction.
Package metrics provides middleware that records HTTP server metrics via the observability/metrics.Collector abstraction.
http/server/middlewares/realip
Package realip provides middleware that extracts the real client IP address from request headers and stores it in the request context.
Package realip provides middleware that extracts the real client IP address from request headers and stores it in the request context.
http/server/middlewares/recovery
Package recovery provides middleware that recovers from panics in HTTP handlers, logs the panic with a stack trace, and returns a 500 response.
Package recovery provides middleware that recovers from panics in HTTP handlers, logs the panic with a stack trace, and returns a 500 response.
http/server/middlewares/requestid
Package requestid provides middleware that extracts or generates a UUID v4 request ID for every HTTP request.
Package requestid provides middleware that extracts or generates a UUID v4 request ID for every HTTP request.
http/server/middlewares/securityheaders
Package securityheaders provides middleware for adding security-related HTTP headers.
Package securityheaders provides middleware for adding security-related HTTP headers.
http/server/middlewares/tracing
Package tracing provides HTTP middleware for distributed tracing.
Package tracing provides HTTP middleware for distributed tracing.
http/server/responder
Package responder provides unified error response handling for HTTP middleware and handlers.
Package responder provides unified error response handling for HTTP middleware and handlers.
http/server/router
Package router defines the Router and Route interfaces that abstract HTTP routing functionality.
Package router defines the Router and Route interfaces that abstract HTTP routing functionality.
http/server/router/gorilla
Package gorilla provides a router.Router implementation using gorilla/mux.
Package gorilla provides a router.Router implementation using gorilla/mux.
http/server/router/std
Package std provides a router.Router implementation using the standard library http.ServeMux with Go 1.22+ enhanced pattern matching.
Package std provides a router.Router implementation using the standard library http.ServeMux with Go 1.22+ enhanced pattern matching.
http/server/writer
Package writer provides HTTP response writing with content negotiation and request body decoding.
Package writer provides HTTP response writing with content negotiation and request body decoding.
internal/base
Package base provides the shared foundation for HTTP middlewares and gRPC interceptors.
Package base provides the shared foundation for HTTP middlewares and gRPC interceptors.
internal/clientip
Package clientip extracts the real client IP address from HTTP and gRPC requests by traversing proxy header chains.
Package clientip extracts the real client IP address from HTTP and gRPC requests by traversing proxy header chains.
internal/depgraph
Package depgraph resolves ordering dependencies among interceptors and middlewares using topological sort (Kahn's algorithm).
Package depgraph resolves ordering dependencies among interceptors and middlewares using topological sort (Kahn's algorithm).
internal/endpointfilter
Package endpointfilter decides whether a given HTTP path or gRPC method should be excluded from middleware/interceptor processing (e.g.
Package endpointfilter decides whether a given HTTP path or gRPC method should be excluded from middleware/interceptor processing (e.g.
internal/factoryconv
Package factoryconv provides shared config-to-runtime conversion helpers used by the HTTP and gRPC server factories.
Package factoryconv provides shared config-to-runtime conversion helpers used by the HTTP and gRPC server factories.
internal/fallback
Package fallback defines three error-handling strategies for middlewares and interceptors:
Package fallback defines three error-handling strategies for middlewares and interceptors:
internal/geoacl
Package geoacl provides geographic access control logic shared by the gRPC interceptor and HTTP middleware layers.
Package geoacl provides geographic access control logic shared by the gRPC interceptor and HTTP middleware layers.
internal/headers
Package headers centralizes HTTP and gRPC header name constants and provides adapter types that unify header access across transports.
Package headers centralizes HTTP and gRPC header name constants and provides adapter types that unify header access across transports.
internal/idempotency
Package idempotency holds the shared kernel of the HTTP middleware and gRPC interceptor idempotency twins: the default key-format validator, its sentinel error, the canonical header/metadata names, and the storage-key format.
Package idempotency holds the shared kernel of the HTTP middleware and gRPC interceptor idempotency twins: the default key-format validator, its sentinel error, the canonical header/metadata names, and the storage-key format.
internal/ipacl
Package ipacl provides IP-based access control logic shared by the gRPC interceptor and HTTP middleware layers.
Package ipacl provides IP-based access control logic shared by the gRPC interceptor and HTTP middleware layers.
internal/mtlstest
Package mtlstest provides a self-signed certificate authority for mutual-TLS integration tests across the transport layer.
Package mtlstest provides a self-signed certificate authority for mutual-TLS integration tests across the transport layer.
internal/observability
Package observability provides shared structured-logging field keys and utilities used by both HTTP middlewares and gRPC interceptors.
Package observability provides shared structured-logging field keys and utilities used by both HTTP middlewares and gRPC interceptors.
internal/recovery
Package recovery captures stack traces during panic recovery and wraps the recovered value into a structured PanicError.
Package recovery captures stack traces during panic recovery and wraps the recovered value into a structured PanicError.
internal/requestid
Package requestid extracts, validates, and generates UUID v4 request identifiers from HTTP headers or gRPC metadata.
Package requestid extracts, validates, and generates UUID v4 request identifiers from HTTP headers or gRPC metadata.
internal/server
Package server provides the shared lifecycle primitives used by both the HTTP and gRPC server implementations.
Package server provides the shared lifecycle primitives used by both the HTTP and gRPC server implementations.
internal/timeouts
Package timeouts defines the timeout parameters that govern transport server lifecycle: startup verification, graceful shutdown deadline, and shutdown-progress warning interval.
Package timeouts defines the timeout parameters that govern transport server lifecycle: startup verification, graceful shutdown deadline, and shutdown-progress warning interval.
internal/validation
Package validation provides lightweight, allocation-free validators shared across the transport layer.
Package validation provides lightweight, allocation-free validators shared across the transport layer.
proxydial
Package proxydial provides forward-proxy dialers for client connections that do not go through net/http: SMTP, SOAP, raw TCP, gRPC, and any other protocol that needs to tunnel through a corporate or egress proxy.
Package proxydial provides forward-proxy dialers for client connections that do not go through net/http: SMTP, SOAP, raw TCP, gRPC, and any other protocol that needs to tunnel through a corporate or egress proxy.
proxydial/factory
Package factory provides a fluent builder for materializing a github.com/altessa-s/go-atlas/config.Proxy into a github.com/altessa-s/go-atlas/transport/proxydial.DialContextFunc suitable for any client that needs raw-TCP-through-proxy: SMTP (go-mail's WithDialContextFunc), SOAP, gRPC's WithContextDialer, or any custom protocol that does not go through net/http.
Package factory provides a fluent builder for materializing a github.com/altessa-s/go-atlas/config.Proxy into a github.com/altessa-s/go-atlas/transport/proxydial.DialContextFunc suitable for any client that needs raw-TCP-through-proxy: SMTP (go-mail's WithDialContextFunc), SOAP, gRPC's WithContextDialer, or any custom protocol that does not go through net/http.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL