# Utility The general-purpose helpers the platform's services share: small, single-purpose methods with no dependencies beyond Foundation and no ties to any web framework. ## Overview | Role | Types | | --- | --- | | Validation | `NormalizeEmail`, which reduces a submitted email address to its canonical form | ## Design rules - **Dependency-free.** A helper belongs here only while it needs nothing beyond Foundation; one that grows a framework dependency belongs in the package owning that framework's concerns (e.g. `Infrastructure` for Hummingbird). - **Method structs.** Helpers hold their lifetime-fixed configuration in `init` and take only per-call inputs in `callAsFunction`. ## Layout Sources are split by visibility, then by kind, one type per file: ``` Sources/ └── Public/ └── Methods/ NormalizeEmail Tests/ ├── Cases/ the test suites, mirroring the Sources/ layout └── Utils/ the suite Tag constants ``` ## Testing Every suite carries a tag for the kind of API it exercises — `.method`, declared in `Tests/Utils/Extensions/Tag+Constants.swift` — so test plans and summaries can slice a run by kind. A new suite adopts the tag matching its subject, or adds one when none fits. ## Requirements - Swift 6.3 toolchain (`swift-tools-version:6.3`). - macOS 15, matching the sibling packages (the services deploy to Linux containers; the packages carry no UI platforms). - No package dependencies — Foundation only.