How areroketahi/vaporkit works
VaporKit is a compile-time macro layer over Vapor that generates route registration, request extraction, and validation code, with opt-in runtime support for router discovery and application startup. The main workflow is a developer-declared router becoming Vapor routes that handle requests; separate branches provide validation, WebSockets, static parameter diagnostics, and OpenAPI extraction. The README documents these capabilities, while sampled source most clearly establishes route generation, typed extraction, and auto-registration; links for unsampled subsystems are limited to documented behavior and tree paths.
Main entry points: RouterMacro.swift Router macro · AutoRegisterRouter.swift Auto registration · Router.swift Router API · RouterMacro+Codegen.swift Route codegen
Components 26
Routing
- Router API
Sources/VaporKit/Router/Router.swift - Router macro
Sources/VaporKitMacros/Router/RouterMacro.swift - Route parsing
Sources/VaporKitMacros/Router/RouterMacro+RouteParsing.swift - Route metadata
Sources/VaporKitMacros/Router/Metadata Extraction/RouterMacro+Extraction-Routes.swift - Handler metadata
Sources/VaporKitMacros/Router/Metadata Extraction/RouterMacro+Extraction-Handlers.swift - Route codegen
Sources/VaporKitMacros/Router/RouterMacro+Codegen.swift - Vapor routes
- Generated handler
- WebSocket routes
Sources/VaporKit/Router/Router+WebSocket.swift - Static parameter checks
Sources/VaporKit/Router/Router+StaticCheck.swift
Startup
- Vapor application
- Auto-register config
Sources/VaporKit/Boot/Standard Configurations/AutoRegisterRoutesConfiguration.swift - Auto registration
Sources/VaporKit/Router/Runtime/AutoRegisterRouter.swift - Route discovery
Sources/VaporKit/Router/Runtime/RouteDiscovery.swift - Application entry
Sources/VaporKit/Boot/VaporApplication.swift
OpenAPI
- OpenAPI extraction macros
Sources/VaporKitMacros/Router/OpenAPI/RouterMacro+OpenAPIHandlers.swift - Schema macro
Sources/VaporKitMacros/OpenAPISchemaMacro.swift - OpenAPI schemas
Sources/VaporKitOpenAPI/OpenAPISchema.swift - OpenAPI discovery
Sources/VaporKit/Router/OpenAPI/OpenAPIDiscovery.swift - Document builder
Sources/VaporKit/Router/OpenAPI/OpenAPIDocumentBuilder.swift - Document exporter
Sources/VaporKit/Router/OpenAPI/OpenAPIExporter.swift - OpenAPI document
Sources/VaporKit/Router/OpenAPI/OpenAPIDocument.swift
Validation
- Validation macro
Sources/VaporKitMacros/Validatable/ValidatableMacro.swift - Validation rules
Sources/VaporKit/Validation/ValidationRule.swift
Other components
- Application developer
- HTTP request
Connections 25
- Application developer → Router API: declares routes
- Router API → Router macro: expands macros
- Router macro → Route parsing: normalizes paths
- Router macro → Route metadata: extracts routes
- Router macro → Handler metadata: extracts handlers
- Router macro → Route codegen: generates code
- Route codegen → Vapor routes: registers handlers
- HTTP request → Vapor routes: dispatches request
- Vapor routes → Generated handler: invokes handler
- Generated handler → HTTP request: decodes values
- Application developer → Application entry: adopts entry point
- Application entry → Auto-register config: loads configuration
- Auto-register config → Auto registration: calls registration
- Auto registration → Route discovery: discovers routers
- Auto registration → Vapor application: registers collections
- Application developer → OpenAPI extraction macros: annotates routes
- OpenAPI extraction macros → Schema macro: references schemas
- Schema macro → OpenAPI schemas: generates schema
- OpenAPI discovery → Document builder: provides route metadata
- Document builder → OpenAPI document: builds document
- Document exporter → OpenAPI document: exports document
- Application developer → Validation macro: declares constraints
- Validation macro → Validation rules: generates validation
- Application developer → WebSocket routes: declares WebSockets
- Application developer → Static parameter checks: checks parameters