/// Stamps a set of security-related HTTP headers onto every response.
///
/// Placed at (or near) the top of the middleware chain, it adds the configured headers to whatever response bubbles back up — the rendered pages, the
/// error page produced by ``NotFoundMiddleware``, and every static file served by `FileMiddleware` — so the browser applies the strict, hardened
/// interpretation of the content instead of its lenient legacy defaults.
///
/// The headers are precomputed once from the ``Configuration`` at initialization and reused for every request, so the per-request cost is a handful of
/// The set of security headers a ``SecurityHeadersMiddleware`` applies.
///
/// Each property maps to a single response header. A `nil` value omits that header entirely, which is how `Strict-Transport-Security` stays
/// disabled by default: it is only safe to send over HTTPS and is "sticky" in browsers, so it must stay off in plain-HTTP development and be switched on
/// (via configuration) only in TLS-terminated production.
publicstructConfiguration:Sendable{
// MARK: Properties
/// The `Content-Security-Policy` value (controls which sources the browser will load).
publicletcontentSecurityPolicy:String?
/// The `X-Content-Type-Options` value (disables MIME sniffing when set to `nosniff`).
publicletcontentTypeOptions:String?
/// The `X-Frame-Options` value (controls whether the page may be framed).
publicletframeOptions:String?
/// The `Referrer-Policy` value (controls how much referrer information is shared).
publicletreferrerPolicy:String?
/// The `Permissions-Policy` value (gates access to powerful browser features).
publicletpermissionsPolicy:String?
/// The `Strict-Transport-Security` value, or `nil` to omit the header (the default).
publicletstrictTransportSecurity:String?
// MARK: Initializers
/// Creates a security-headers configuration.
///
/// Every parameter defaults to the hardened baseline defined in `String.Security`, except `strictTransportSecurity`, which defaults
/// to `nil` (omitted). Pass `nil` for any header to drop it from the response.
/// - Parameters:
/// - contentSecurityPolicy: the `Content-Security-Policy` value.
/// - contentTypeOptions: the `X-Content-Type-Options` value.
/// - frameOptions: the `X-Frame-Options` value.
/// - referrerPolicy: the `Referrer-Policy` value.
/// - permissionsPolicy: the `Permissions-Policy` value.
/// - strictTransportSecurity: the `Strict-Transport-Security` value, or `nil` to omit it.