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.