The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of SteamPress, reference 2.0.0-beta.4 (376f57), with Swift 6.1 for Linux on 25 Apr 2025 11:01:20 UTC.

Swift 6 data race errors: 8

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1

Build Log

    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2397/2410] Compiling SteamPress FeedController.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2398/2410] Compiling SteamPress BlogUser+Information.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2399/2410] Compiling SteamPress Models+Parameters.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2400/2410] Compiling SteamPress Request+PageInformation.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2401/2410] Compiling SteamPress Request+PaginationInformation.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2402/2410] Compiling SteamPress String+Optional+Whitespace.swift
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:82:422: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 80 |                     if let editUserErrors = errors {
 81 |                         do {
 82 |                             let view = try req.adminPresenter.createUserView(editing: true, errors: editUserErrors.errors, name: data.name, nameError: errors?.nameError ?? false, username: data.username, usernameErorr: errors?.usernameError ?? false, passwordError: editUserErrors.passwordError, confirmPasswordError: editUserErrors.confirmPasswordError, resetPasswordOnLogin: data.resetPasswordOnLogin ?? false, userID: user.userID, profilePicture: data.profilePicture, twitterHandle: data.twitterHandle, biography: data.biography, tagline: data.tagline, pageInformation: req.adminPageInfomation())
    |                                                                                                                                                                                                                                                                                                                                                                                                                                      `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
 83 |                             return view.encodeResponse(for: req)
 84 |                         } catch {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:109:29: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
107 |                     if let password = data.password, password != "" {
108 |                         updatePassword = req.password.async.hash(password).map { hashedPassword in
109 |                             user.password = hashedPassword
    |                             `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
110 |                         }
111 |                     } else {
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:116:60: warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
114 |                     return updatePassword.flatMap {
115 |                         let redirect = req.redirect(to: self.pathCreator.createPath(for: "admin"))
116 |                         return req.blogUserRepository.save(user).transform(to: redirect)
    |                                                            `- warning: capture of 'user' with non-sendable type 'BlogUser' in a '@Sendable' closure
117 |                     }
118 |                 }
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:128:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
126 |         req.parameters.findUser(on: req).and(req.blogUserRepository.getUsersCount()).flatMap { user, userCount in
127 |             guard userCount > 1 else {
128 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
129 |                     do {
130 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete the last user"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:145:99: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
143 |             }
144 |             guard loggedInUser.userID != user.userID else {
145 |                 return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
    |                                                                                                   `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
146 |                     do {
147 |                         let view = try req.adminPresenter.createIndexView(posts: posts, users: users, errors: ["You cannot delete yourself whilst logged in"], pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:204:32: warning: 'validate' is deprecated: renamed to 'validate(content:)'
202 |
203 |         do {
204 |             try CreateUserData.validate(req)
    |                                |- warning: 'validate' is deprecated: renamed to 'validate(content:)'
    |                                `- note: use 'validate(content:)' instead
205 |         } catch {
206 |             createUserErrors.append("The username provided is not valid")
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:229:17: warning: mutation of captured var 'createUserErrors' in concurrently-executing code
227 |         return usernameUniqueError.map { usernameErrorOccurred in
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
    |                 `- warning: mutation of captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:230:17: warning: mutation of captured var 'usernameError' in concurrently-executing code
228 |             if let uniqueError = usernameErrorOccurred {
229 |                 createUserErrors.append(uniqueError)
230 |                 usernameError = true
    |                 `- warning: mutation of captured var 'usernameError' in concurrently-executing code
231 |             }
232 |             if createUserErrors.count == 0 {
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:232:16: warning: reference to captured var 'createUserErrors' in concurrently-executing code
230 |                 usernameError = true
231 |             }
232 |             if createUserErrors.count == 0 {
    |                `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
233 |                 return nil
234 |             }
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:51: warning: reference to captured var 'createUserErrors' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                   `- warning: reference to captured var 'createUserErrors' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:84: warning: reference to captured var 'passwordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                    `- warning: reference to captured var 'passwordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:121: warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                         `- warning: reference to captured var 'confirmPasswordError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:154: warning: reference to captured var 'nameErorr' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                          `- warning: reference to captured var 'nameErorr' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/Admin/UserAdminController.swift:236:180: warning: reference to captured var 'usernameError' in concurrently-executing code
234 |             }
235 |
236 |             let errors = CreateUserErrors(errors: createUserErrors, passwordError: passwordError, confirmPasswordError: confirmPasswordError, nameError: nameErorr, usernameError: usernameError)
    |                                                                                                                                                                                    `- warning: reference to captured var 'usernameError' in concurrently-executing code
237 |
238 |             return errors
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogAdminController.swift:31:91: warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
29 |     // MARK: Admin Handler
30 |     func adminHandler(_ req: Request) throws -> EventLoopFuture<View> {
31 |         return req.blogPostRepository.getAllPostsSortedByPublishDate(includeDrafts: true).and(req.blogUserRepository.getAllUsers()).flatMap { posts, users in
   |                                                                                           `- warning: type 'BlogUser' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
32 |             do {
33 |                 return try req.adminPresenter.createIndexView(posts: posts, users: users, errors: nil, pageInformation: req.adminPageInfomation())
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:67: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                   `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:48:95: warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 46 |                 req.blogTagRepository.getTagsForAllPosts().flatMap { tagsForPosts in
 47 |                     do {
 48 |                         return req.blogPresenter.indexView(posts: posts, tags: tags, authors: users, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPostCount, currentQuery: req.url.query))
    |                                                                                               `- warning: capture of 'users' with non-sendable type '[BlogUser]' in a '@Sendable' closure
 49 |                     } catch {
 50 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:58:20: warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
 56 |
 57 |     func blogPostIndexRedirectHandler(_ req: Request) throws -> Response {
 58 |         return req.redirect(to: pathCreator.createPath(for: pathCreator.blogPath), type: .permanent)
    |                    |- warning: 'redirect(to:type:)' is deprecated: renamed to 'redirect(to:redirectType:)'
    |                    `- note: use 'redirect(to:redirectType:)' instead
 59 |     }
 60 |
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:71:61: warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 69 |                 do {
 70 |                     let pageInformation: BlogGlobalPageInformation = try req.pageInformation()
 71 |                     return req.blogPresenter.postView(post: post, author: user, tags: tags, pageInformation: pageInformation)
    |                                                             `- warning: capture of 'post' with non-sendable type 'BlogPost' in a '@Sendable' closure
 72 |                 } catch {
 73 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:89:75: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 87 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
 88 |                     do {
 89 |                         return req.blogPresenter.tagView(tag: tag, posts: posts, authors: authors, totalPosts: totalPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                           `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
 90 |                     } catch {
 91 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:69: warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                     `- warning: capture of 'author' with non-sendable type 'BlogUser' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogUser.swift:5:20: note: class 'BlogUser' does not conform to the 'Sendable' protocol
 3 | // MARK: - Model
 4 |
 5 | public final class BlogUser: Codable {
   |                    `- note: class 'BlogUser' does not conform to the 'Sendable' protocol
 6 |
 7 |     public var userID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:114:84: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
112 |                     let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: postCount, currentQuery: req.url.query)
113 |                     do {
114 |                         return req.blogPresenter.authorView(author: author, posts: posts, postCount: postCount, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                    `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
115 |                     } catch {
116 |                         return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
/host/spi-builder-workspace/Sources/SteamPress/Controllers/BlogController.swift:172:90: warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
170 |                 let paginationTagInfo = self.getPaginationInformation(currentPage: paginationInformation.page, totalPosts: totalPosts, currentQuery: req.url.query)
171 |                 do {
172 |                     return req.blogPresenter.searchView(totalResults: totalPosts, posts: posts, authors: users, searchTerm: searchTerm, tagsForPosts: tagsForPosts, pageInformation: try req.pageInformation(), paginationTagInfo: paginationTagInfo)
    |                                                                                          `- warning: capture of 'posts' with non-sendable type '[BlogPost]' in a '@Sendable' closure
173 |                 } catch {
174 |                     return req.eventLoop.makeFailedFuture(error)
/host/spi-builder-workspace/Sources/SteamPress/Models/BlogPost.swift:8:20: note: class 'BlogPost' does not conform to the 'Sendable' protocol
 6 | // MARK: - Model
 7 |
 8 | public final class BlogPost: Codable {
   |                    `- note: class 'BlogPost' does not conform to the 'Sendable' protocol
 9 |
10 |     public var blogID: Int?
[2403/2410] Compiling SteamPress LongPostDateFormatter.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2404/2410] Compiling SteamPress NumericPostFormatter.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2405/2410] Compiling SteamPress RealRandomNumberGenerator.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2406/2410] Compiling SteamPress SteamPressRandomNumberGenerator.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2407/2410] Compiling SteamPress SteamPress+Application.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2408/2410] Compiling SteamPress SteamPressError.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2409/2410] Compiling SteamPress SteamPressRoutesLifecycleHandler.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
[2410/2410] Compiling SteamPress PaginatorTag.swift
/host/spi-builder-workspace/Sources/SteamPress/Services/SteamPressRandomNumberGenerator.swift:41:16: warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
34 |         }
35 |
36 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
37 |             var makeGenerator: ((Application) -> SteamPressRandomNumberGenerator)?
38 |             init() { }
39 |         }
40 |
41 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.RandomNumberGenerators.Key.Value' (aka 'Application.SteamPress.RandomNumberGenerators.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
42 |             typealias Value = Storage
43 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPress+Application.swift:21:16: warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
11 |         }
12 |
13 |         final class Storage {
   |                     `- note: class 'Storage' does not conform to the 'Sendable' protocol
14 |             var configuration: SteamPressConfiguration
15 |
   :
19 |         }
20 |
21 |         struct Key: StorageKey {
   |                `- warning: type 'Application.SteamPress.Key.Value' (aka 'Application.SteamPress.Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
22 |             typealias Value = Storage
23 |         }
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:3:14: warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 1 | import Vapor
 2 |
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
   |              `- warning: non-final class 'SteamPressRoutesLifecycleHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 4 |
 5 |     var configuration: SteamPressConfiguration
/host/spi-builder-workspace/Sources/SteamPress/SteamPressRoutesLifecycleHandler.swift:5:9: warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 3 | public class SteamPressRoutesLifecycleHandler: LifecycleHandler {
 4 |
 5 |     var configuration: SteamPressConfiguration
   |         `- warning: stored property 'configuration' of 'Sendable'-conforming class 'SteamPressRoutesLifecycleHandler' is mutable; this is an error in the Swift 6 language mode
 6 |
 7 |     public init(configuration: SteamPressConfiguration = SteamPressConfiguration()) {
Build complete! (297.91s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "vapor",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.0.0-rc",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor/vapor.git"
    },
    {
      "identity" : "swiftsoup",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/scinfu/SwiftSoup.git"
    },
    {
      "identity" : "leaf-kit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0-rc.1",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor/leaf-kit.git"
    },
    {
      "identity" : "markdown",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.6.1",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor-community/markdown.git"
    }
  ],
  "manifest_display_name" : "SteamPress",
  "name" : "SteamPress",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "SteamPress",
      "targets" : [
        "SteamPress"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SteamPressTests",
      "module_type" : "SwiftTarget",
      "name" : "SteamPressTests",
      "path" : "Tests/SteamPressTests",
      "sources" : [
        "APITests/APITagControllerTests.swift",
        "AdminTests/AccessControlTests.swift",
        "AdminTests/AdminPageTests.swift",
        "AdminTests/AdminPostTests.swift",
        "AdminTests/AdminUserTests.swift",
        "AdminTests/LoginTests.swift",
        "BlogTests/AuthorTests.swift",
        "BlogTests/DisabledBlogTagTests.swift",
        "BlogTests/IndexTests.swift",
        "BlogTests/PostTests.swift",
        "BlogTests/SearchTests.swift",
        "BlogTests/TagTests.swift",
        "Fakes/CapturingViewRenderer.swift",
        "Fakes/PasswordHasherChoice.swift",
        "Fakes/Presenters/CapturingAdminPresenter.swift",
        "Fakes/Presenters/CapturingBlogPresenter.swift",
        "Fakes/ReversedPasswordHasher.swift",
        "Fakes/StubbedRandomNumberGenerator.swift",
        "Feed Tests/AtomFeedTests.swift",
        "Feed Tests/RSSFeedTests.swift",
        "Helpers/InMemoryRepository.swift",
        "Helpers/SteamPressTestError.swift",
        "Helpers/TestDataBuilder.swift",
        "Helpers/TestWorld+Application.swift",
        "Helpers/TestWorld+Responses.swift",
        "Helpers/TestWorld+TestDataBuilder.swift",
        "Helpers/TestWorld.swift",
        "Models/LoginData.swift",
        "ProviderTests.swift",
        "ViewTests/BlogAdminPresenterTests.swift",
        "ViewTests/BlogPresenterTests.swift",
        "ViewTests/BlogViewTests.swift"
      ],
      "target_dependencies" : [
        "SteamPress"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SteamPress",
      "module_type" : "SwiftTarget",
      "name" : "SteamPress",
      "path" : "Sources/SteamPress",
      "product_dependencies" : [
        "Vapor",
        "LeafKit",
        "SwiftSoup",
        "SwiftMarkdown"
      ],
      "product_memberships" : [
        "SteamPress"
      ],
      "sources" : [
        "BlogPathCreator.swift",
        "Config/BlogAdminPageInformation.swift",
        "Config/BlogGlobalPageInformation.swift",
        "Config/FeedInformation.swift",
        "Config/PaginationInformation.swift",
        "Controllers/API/APIController.swift",
        "Controllers/API/APITagController.swift",
        "Controllers/Admin/LoginController.swift",
        "Controllers/Admin/PostAdminController.swift",
        "Controllers/Admin/UserAdminController.swift",
        "Controllers/BlogAdminController.swift",
        "Controllers/BlogController.swift",
        "Controllers/FeedController.swift",
        "Extensions/BlogUser+Information.swift",
        "Extensions/Models+Parameters.swift",
        "Extensions/Request+PageInformation.swift",
        "Extensions/Request+PaginationInformation.swift",
        "Extensions/String+Optional+Whitespace.swift",
        "Extensions/String+Random.swift",
        "Extensions/URL+Converters.swift",
        "Feed Generators/AtomFeedGenerator.swift",
        "Feed Generators/RSSFeedGenerator.swift",
        "Middleware/BlogAuthSessionsMiddleware.swift",
        "Middleware/BlogLoginRedirectAuthMiddleware.swift",
        "Middleware/BlogRememberMeMiddleware.swift",
        "Models/BlogPost.swift",
        "Models/BlogTag.swift",
        "Models/BlogUser.swift",
        "Models/Contexts/Admin/AdminPageContext.swift",
        "Models/Contexts/Admin/CreatePostPageContext.swift",
        "Models/Contexts/Admin/CreateUserPageContext.swift",
        "Models/Contexts/Admin/ResetPasswordPageContext.swift",
        "Models/Contexts/AllAuthorsPageContext.swift",
        "Models/Contexts/AllTagsPageContext.swift",
        "Models/Contexts/AuthorPageContext.swift",
        "Models/Contexts/BlogIndexPageContext.swift",
        "Models/Contexts/BlogPostPageContext.swift",
        "Models/Contexts/ContextViews/BlogTagWithPostCount.swift",
        "Models/Contexts/ContextViews/ViewBlogAuthor.swift",
        "Models/Contexts/ContextViews/ViewBlogPost.swift",
        "Models/Contexts/ContextViews/ViewBlogTag.swift",
        "Models/Contexts/LoginPageContext.swift",
        "Models/Contexts/PaginationTagInformation.swift",
        "Models/Contexts/SearchPageContext.swift",
        "Models/Contexts/TagPageContext.swift",
        "Models/Errors/CreatePostErrors.swift",
        "Models/Errors/CreateUserErrors.swift",
        "Models/FormData/CreatePostData.swift",
        "Models/FormData/CreateUserData.swift",
        "Models/FormData/LoginData.swift",
        "Models/FormData/ResetPasswordData.swift",
        "Presenters/Application+SteamPress+BlogAdminPresenter.swift",
        "Presenters/Application+SteamPress+BlogPresenter.swift",
        "Presenters/BlogAdminPresenter.swift",
        "Presenters/BlogPresenter.swift",
        "Presenters/ViewBlogAdminPresenter.swift",
        "Presenters/ViewBlogPresenter.swift",
        "Repositories/Application+SteamPress+Repositories.swift",
        "Repositories/Request+Repositories.swift",
        "Repositories/SteamPressRepository.swift",
        "Services/LongPostDateFormatter.swift",
        "Services/NumericPostFormatter.swift",
        "Services/RealRandomNumberGenerator.swift",
        "Services/SteamPressRandomNumberGenerator.swift",
        "SteamPress+Application.swift",
        "SteamPressError.swift",
        "SteamPressRoutesLifecycleHandler.swift",
        "Views/PaginatorTag.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.2"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.