Skip to content

extend API ​

Symbol table for sova_core::extend — what it is and who uses it.

Author guide — edit docs/.vitepress/plugin-sdk-guides/extend-api.md, then pnpm docs:generate.

Authoritative import path for plugin crates: sova_core::extend::… (facade re-exports many names as sova::extend when using the sova crate).

Always-on plugin surface ​

SymbolRoleUsed in-tree
PluginMeta, PLUGIN_SDK_VERSION, PluginSdkVersion, check_plugin_sdk, SdkCompat, InstalledPluginIdentity / SDKnearly all plugins
namedLabel MWcookies, session, csrf, cors, shield, …
with_leaked'static config MWcors, shield, compress
MwEntry, IntoMwEntry, IntoMiddleware, MiddlewareComposable MWauth, passport, db tx, rate-limit
BoxFutureAsync plugin internalssession, http, tasks, …
parse_duration, parse_bytesHuman configsession, static, http, tasks
StateMapStartup/CLI/service statedb, tasks, meta, quic/udp
wait_shutdownService loopstasks, quic, udp
ErrorResponseTyped HTTP errorshttp, db, storage, vld
normalize_path, to_brace_path, join_pathsPathsstatic, openapi
RouteTable, RouteEntry, RouteValue, MetaMap, Needs, BuildCtxIntrospectionopenapi, vld, meta, i18n, session
MatchedRoute, MatchedRouteCapture, MatchedMeta, MatchedMetaCapturePost-matchmeta, observability, devtools
Extensions, TypeMapLow-level mapsadvanced
Body, BoxError, HttpBody, ResponseBodyStreaming bodiessse, compress
HtmlInject, HtmlAnchor, inject*HTML rewritemeta/devtools patterns
logger_skip_path, logger_skip_pathsQuiet routesdevtools
add_log_event_hook, LogRecord, …Log sinksdevtools
request_id, RequestId, ensure_request_idCorrelationcore MW; plugins read via extensions / current_request_id
Deadline, MaxBody, RequestTimeout, tighten_deadlineLimitshttp tests / clients
BindListen helperstests / advanced bind
Cell, SlotCross-task share (sova_core::share)share_demo, in-memory APIs
after, before, around, map_htmlResponse MW helpersavailable; plugins often custom-inject
RawHandler, IntoRawHandlerEscape hatch handlersniche
FormData, RequestBuilder, Upload, UploadRulesRequest buildinguploads / tests
Handler, IntoHandler, FallibleHandler, …Handler traitsframework glue

Crate-root companions (not only under extend) ​

SymbolRole
App, Plugin, Request, Response, Html, JsonDaily drivers
with_stateArc MW (also used heavily by plugins)
logger_skip_pathSame as extend (devtools)
current_request_idCorrelate store/redis/tasks traces
TestClient (feature testing)Integration tests

Unused ≠ forbidden ​

Cell / Slot / map_html are part of the supported SDK even if few plugins use them today. Prefer documented helpers over inventing parallel utilities.

Share handles (Cell / Slot) ​

Re-exported from the crate root (sova::Cell, sova::Slot) and sova_core::extend.

  • Cell<T: Clone> — shared value + changed() watch (counters, flags).
  • Slot<T> — single-item ownership transfer (put / take); ideal for handing a TcpStream from a BackgroundService to an HTTP handler.

Guide: Concepts → Share. Example: share_demo.

App-author core (guide) ​

Features below are documented for application developers in Concepts, not only in this SDK table:

AreaConcepts section
SSE / file streamingStreaming responses
Upgrades / WS budgetHTTP upgrades
EventBusIn-process events
Problem Details / AcceptErrors & content negotiation
MaxBody / timeoutsRoute metadata & limits
AppDispatchIn-process dispatch
Checks / CLI hooksChecks, audits & custom CLI
Server knobsServer tuning