(** Plug-based middleware composition. A plug is a function that wraps a handler, allowing pre/post processing of requests and responses. Inspired by Phoenix/Elixir's plug system. {1 Usage} {[ open Hcs let pipeline = Plug.Logger.create ~clock logger @> Plug.Compress.create () @> Plug.Timeout.create ~clock 30.0 @> Plug.identity let handler = Plug.apply pipeline my_handler ]} *) include Core module Logger = Logger module Request_id = Request_id module Head = Head module Timeout = Timeout module Recover = Recover module Cors = Cors module Rate_limit = Rate_limit module Etag = Etag module Cache_control = Cache_control module Static = Static module Compress = Compress module Circuit_breaker = Circuit_breaker module Retry = Retry module Basic_auth = Basic_auth module Csrf = Csrf module Negotiate = Negotiate module Token = Token module Session = Session