diff --git a/Sources/DocCMiddleware/Public/Configurations/DoccMiddlewareConfiguration.swift b/Sources/DocCMiddleware/Public/Configurations/DoccMiddlewareConfiguration.swift index f62ad7f..0bc36c4 100644 --- a/Sources/DocCMiddleware/Public/Configurations/DoccMiddlewareConfiguration.swift +++ b/Sources/DocCMiddleware/Public/Configurations/DoccMiddlewareConfiguration.swift @@ -1,8 +1,52 @@ +// ===----------------------------------------------------------------------=== // -// File.swift -// hummingbird-docc-middleware +// This source file is part of the Hummingbird DocC Middleware open source project // -// Created by Javier Cicchelli on 23/09/2025. +// Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC Middleware project authors +// Licensed under the EUPL 1.2 or later. // +// See LICENSE for license information +// See CONTRIBUTORS for the list of Hummingbird DocC Middleware project authors +// +// ===----------------------------------------------------------------------=== -import Foundation +import class NIOPosix.NIOThreadPool + +extension DocCMiddleware { + /// A type that contains all the parameters to configure the ``DocCMiddleware`` middleware. + public struct Configuration: Sendable { + + // MARK: Properties + + /// A path to the physical location where the `DocC` documentation containers are stored. + let folderRoot: String + + /// A URI path that prefixes the `DocC` documentation resources. + let uriRoot: String + + /// A type that define a mechanism to use in case some blocking work needs to be performed for which no non-blocking API exists. + let threadPool: NIOThreadPool + + // MARK: Initializers + + /// Initializes this configuration type. + /// + /// > important: It is assumed that both the `uriRoot` and the `folderRoot` parameters should not be empty, and that they should be prefixed + /// with the `/` forward slash character. + /// + /// - Parameters: + /// - uriRoot: A URI path that prefixes the `DocC` documentation resources. + /// - folderRoot: A path to the physical location where the `DocC` documentation containers are stored. + /// - threadPool: A type that define a mechanism to use in case some blocking work needs to be performed for which no non-blocking API exists. + public init( + uriRoot: String, + folderRoot: String, + threadPool: NIOThreadPool = .singleton + ) { + self.folderRoot = folderRoot + self.uriRoot = uriRoot + self.threadPool = threadPool + } + + } +}