diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate index 167c162..e856576 100644 Binary files a/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate and b/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Sources/App/configure.swift b/Sources/App/configure.swift index 0e9cd88..059f775 100755 --- a/Sources/App/configure.swift +++ b/Sources/App/configure.swift @@ -61,3 +61,5 @@ public func configure(_ app: Application) async throws { // register routes try routes(app) } + + diff --git a/Sources/App/entrypoint.swift b/Sources/App/entrypoint.swift index cae6165..8929340 100755 --- a/Sources/App/entrypoint.swift +++ b/Sources/App/entrypoint.swift @@ -33,3 +33,20 @@ enum Entrypoint { try await app.runFromAsyncMainEntrypoint() } } +extension Application { + static let entrypointQueue = DispatchQueue(label: "app.entrypoint") + + func runAsync() async throws { + nonisolated(unsafe) let app = self + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + Application.entrypointQueue.async { + do { + try app.run() + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } + } + } +}