// Package server provides a lifecycle-managed chi HTTP server. // // The server implements [lifecycle.Component] from contracts, making it // directly compatible with [launcher.New] without any adapter layer. // // # Example // // srv := server.New(logger, server.Config{Port: 8080}, // server.WithMiddleware( // mw.Recover(), // mw.RequestID(uuid.NewString), // mw.RequestLogger(logger), // ), // ) // // lc := launcher.New(logger) // lc.Append(srv) // lc.BeforeStart(func() error { // srv.Get("/health", healthHandler) // return nil // }) package server import ( "github.com/go-chi/chi/v5" "code.nochebuena.dev/einherjar/contracts/lifecycle" "code.nochebuena.dev/einherjar/contracts/observability" ) // Server is a lifecycle-managed HTTP server that exposes a chi router. // Embed chi.Router gives callers the full routing API: Get, Post, Route, Mount, Use, etc. type Server interface { lifecycle.Component observability.Identifiable chi.Router }