The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

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.