The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of AwesomeWS, reference master (d48b34), with Swift 6.1 for Linux on 27 Apr 2025 01:25:43 UTC.

Swift 6 data race errors: 4

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/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

119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:17: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                 `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:50: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                                                  `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: reference to captured var 'client' in concurrently-executing code
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: reference to captured var 'client' in concurrently-executing code
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:126:17: warning: mutation of captured var 'client' in concurrently-executing code
124 |                 self._on(close: c)
125 |                 self.on(close: c)
126 |                 client = nil
    |                 `- warning: mutation of captured var 'client' in concurrently-executing code
127 |             }
128 |         }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:132:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
133 |             self?._on(ping: client)
134 |             self?.on(ping: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: reference to captured var 'client' in concurrently-executing code
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:139:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
140 |             self?._on(pong: client)
141 |             self?.on(pong: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: reference to captured var 'client' in concurrently-executing code
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:147:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
145 |             guard
146 |                 let client = client,
147 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
148 |             else { return }
149 |             guard self.exchangeMode != .binary else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: reference to captured var 'client' in concurrently-executing code
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
161 |                 let self = self
162 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:161:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
159 |             guard
160 |                 let client = client,
161 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
162 |             else { return }
163 |             guard self.exchangeMode != .text else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: reference to captured var 'client' in concurrently-executing code
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
161 |                 let self = self
162 |             else { return }
[2222/2243] Compiling WS Bindable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:3:30: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  1 | import Vapor
  2 |
  3 | public protocol AnyObserver: class, Broadcastable, CustomStringConvertible, Disconnectable, Sendable, Loggable {
    |                              `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  4 |     var key: String { get }
  5 |     var path: String { get }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:130:12: warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
128 |         }
129 |
130 |         ws.onPing { [weak self] _ in
    |            `- warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:137:12: warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
135 |         }
136 |
137 |         ws.onPong { [weak self] _ in
    |            `- warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:103:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
101 |
102 |         self.application.ws.knownEventLoop.submit { [weak self] in
103 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: mutation of captured var 'client' in concurrently-executing code
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: mutation of captured var 'client' in concurrently-executing code
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:110:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
108 |             guard
109 |                 let client = client,
110 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
111 |             else { return }
112 |             self._on(open: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: reference to captured var 'client' in concurrently-executing code
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:118:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
116 |
117 |         ws.onClose.whenComplete { [weak self] _ in
118 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:17: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                 `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:50: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                                                  `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: reference to captured var 'client' in concurrently-executing code
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: reference to captured var 'client' in concurrently-executing code
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:126:17: warning: mutation of captured var 'client' in concurrently-executing code
124 |                 self._on(close: c)
125 |                 self.on(close: c)
126 |                 client = nil
    |                 `- warning: mutation of captured var 'client' in concurrently-executing code
127 |             }
128 |         }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:132:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
133 |             self?._on(ping: client)
134 |             self?.on(ping: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: reference to captured var 'client' in concurrently-executing code
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:139:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
140 |             self?._on(pong: client)
141 |             self?.on(pong: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: reference to captured var 'client' in concurrently-executing code
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:147:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
145 |             guard
146 |                 let client = client,
147 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
148 |             else { return }
149 |             guard self.exchangeMode != .binary else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: reference to captured var 'client' in concurrently-executing code
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
161 |                 let self = self
162 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:161:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
159 |             guard
160 |                 let client = client,
161 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
162 |             else { return }
163 |             guard self.exchangeMode != .text else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: reference to captured var 'client' in concurrently-executing code
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
161 |                 let self = self
162 |             else { return }
[2223/2243] Compiling WS Broadcastable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:3:30: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  1 | import Vapor
  2 |
  3 | public protocol AnyObserver: class, Broadcastable, CustomStringConvertible, Disconnectable, Sendable, Loggable {
    |                              `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  4 |     var key: String { get }
  5 |     var path: String { get }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:130:12: warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
128 |         }
129 |
130 |         ws.onPing { [weak self] _ in
    |            `- warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:137:12: warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
135 |         }
136 |
137 |         ws.onPong { [weak self] _ in
    |            `- warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:103:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
101 |
102 |         self.application.ws.knownEventLoop.submit { [weak self] in
103 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: mutation of captured var 'client' in concurrently-executing code
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: mutation of captured var 'client' in concurrently-executing code
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:110:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
108 |             guard
109 |                 let client = client,
110 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
111 |             else { return }
112 |             self._on(open: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: reference to captured var 'client' in concurrently-executing code
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:118:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
116 |
117 |         ws.onClose.whenComplete { [weak self] _ in
118 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:17: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                 `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:50: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                                                  `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: reference to captured var 'client' in concurrently-executing code
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: reference to captured var 'client' in concurrently-executing code
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:126:17: warning: mutation of captured var 'client' in concurrently-executing code
124 |                 self._on(close: c)
125 |                 self.on(close: c)
126 |                 client = nil
    |                 `- warning: mutation of captured var 'client' in concurrently-executing code
127 |             }
128 |         }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:132:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
133 |             self?._on(ping: client)
134 |             self?.on(ping: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: reference to captured var 'client' in concurrently-executing code
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:139:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
140 |             self?._on(pong: client)
141 |             self?.on(pong: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: reference to captured var 'client' in concurrently-executing code
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:147:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
145 |             guard
146 |                 let client = client,
147 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
148 |             else { return }
149 |             guard self.exchangeMode != .binary else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: reference to captured var 'client' in concurrently-executing code
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
161 |                 let self = self
162 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:161:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
159 |             guard
160 |                 let client = client,
161 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
162 |             else { return }
163 |             guard self.exchangeMode != .text else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: reference to captured var 'client' in concurrently-executing code
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
161 |                 let self = self
162 |             else { return }
[2224/2243] Compiling WS Declarativable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:3:30: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  1 | import Vapor
  2 |
  3 | public protocol AnyObserver: class, Broadcastable, CustomStringConvertible, Disconnectable, Sendable, Loggable {
    |                              `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
  4 |     var key: String { get }
  5 |     var path: String { get }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:130:12: warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
128 |         }
129 |
130 |         ws.onPing { [weak self] _ in
    |            `- warning: 'onPing' is deprecated: Please use `onPing { socket, data in /* … */ }` with the additional `data` parameter.
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:137:12: warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
135 |         }
136 |
137 |         ws.onPong { [weak self] _ in
    |            `- warning: 'onPong' is deprecated: Please use `onPong { socket, data in /* … */ }` with the additional `data` parameter.
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:103:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
101 |
102 |         self.application.ws.knownEventLoop.submit { [weak self] in
103 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:105:13: warning: mutation of captured var 'client' in concurrently-executing code
103 |             guard let self = self else { return }
104 |             let c = Client(self, req, ws, logger: self.logger)
105 |             client = c
    |             `- warning: mutation of captured var 'client' in concurrently-executing code
106 |             self._clients.append(c)
107 |         }.whenComplete { [weak self] _ in
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:110:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
108 |             guard
109 |                 let client = client,
110 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
111 |             else { return }
112 |             self._on(open: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:109:30: warning: reference to captured var 'client' in concurrently-executing code
107 |         }.whenComplete { [weak self] _ in
108 |             guard
109 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
110 |                 let self = self
111 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:118:30: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
116 |
117 |         ws.onClose.whenComplete { [weak self] _ in
118 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:17: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                 `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: capture of 'client' with non-sendable type 'Client?' in an isolated closure; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:120:58: warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
118 |             guard let self = self else { return }
119 |             self.application.ws.knownEventLoop.submit { [weak self] in
120 |                 self?._clients.removeAll(where: { $0 === client })
    |                                                          `- warning: reference to captured var 'client' in concurrently-executing code; this is an error in the Swift 6 language mode
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:50: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                                                  `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:122:31: warning: reference to captured var 'client' in concurrently-executing code
120 |                 self?._clients.removeAll(where: { $0 === client })
121 |             }.whenComplete { [weak self] _ in
122 |                 guard let c = client, let self = self else { return }
    |                               `- warning: reference to captured var 'client' in concurrently-executing code
123 |                 self.logger.info("[⚡️] 🔴 connection closed \(c.id)")
124 |                 self._on(close: c)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:126:17: warning: mutation of captured var 'client' in concurrently-executing code
124 |                 self._on(close: c)
125 |                 self.on(close: c)
126 |                 client = nil
    |                 `- warning: mutation of captured var 'client' in concurrently-executing code
127 |             }
128 |         }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:132:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
133 |             self?._on(ping: client)
134 |             self?.on(ping: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:131:32: warning: reference to captured var 'client' in concurrently-executing code
129 |
130 |         ws.onPing { [weak self] _ in
131 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
132 |             self?.logger.debug("[⚡️] 🏓 ping \(client.id)")
133 |             self?._on(ping: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:139:13: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
    |             `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
140 |             self?._on(pong: client)
141 |             self?.on(pong: client)
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:138:32: warning: reference to captured var 'client' in concurrently-executing code
136 |
137 |         ws.onPong { [weak self] _ in
138 |             guard let client = client else { return }
    |                                `- warning: reference to captured var 'client' in concurrently-executing code
139 |             self?.logger.debug("[⚡️] 🏓 pong \(client.id)")
140 |             self?._on(pong: client)
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:147:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
145 |             guard
146 |                 let client = client,
147 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
148 |             else { return }
149 |             guard self.exchangeMode != .binary else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:146:30: warning: reference to captured var 'client' in concurrently-executing code
144 |         ws.onText { [weak self] _, text in
145 |             guard
146 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
147 |                 let self = self
148 |             else { return }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: capture of 'client' with non-sendable type 'Client?' in a '@Sendable' closure
161 |                 let self = self
162 |             else { return }
/host/spi-builder-workspace/Sources/WS/Objects/Client.swift:5:7: note: class 'Client' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | class Client: _AnyClient {
   |       `- note: class 'Client' does not conform to the 'Sendable' protocol
 6 |     /// See `AnyClient`
 7 |     public let id: UUID = .init()
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:161:28: warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
159 |             guard
160 |                 let client = client,
161 |                 let self = self
    |                            `- warning: capture of 'self' with non-sendable type 'Self?' in a '@Sendable' closure
162 |             else { return }
163 |             guard self.exchangeMode != .text else {
WS._AnyObserver.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _AnyObserver {
2 | Self : WS._AnyObserver}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/AnyObserver.swift:160:30: warning: reference to captured var 'client' in concurrently-executing code
158 |         ws.onBinary { [weak self] _, byteBuffer in
159 |             guard
160 |                 let client = client,
    |                              `- warning: reference to captured var 'client' in concurrently-executing code
161 |                 let self = self
162 |             else { return }
[2225/2243] Compiling WS Decoder.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Disconnectable.swift:27:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
25 |     func _disconnect() -> EventLoopFuture<Void> {
26 |         eventLoop.future().flatMap {
27 |             self._disconnect(code: .goingAway)
   |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
28 |         }
29 |     }
WS._Disconnectable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Disconnectable {
2 | Self : WS._Disconnectable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
[2226/2243] Compiling WS Delegate.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Disconnectable.swift:27:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
25 |     func _disconnect() -> EventLoopFuture<Void> {
26 |         eventLoop.future().flatMap {
27 |             self._disconnect(code: .goingAway)
   |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
28 |         }
29 |     }
WS._Disconnectable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Disconnectable {
2 | Self : WS._Disconnectable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
[2227/2243] Compiling WS Disconnectable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Disconnectable.swift:27:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
25 |     func _disconnect() -> EventLoopFuture<Void> {
26 |         eventLoop.future().flatMap {
27 |             self._disconnect(code: .goingAway)
   |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
28 |         }
29 |     }
WS._Disconnectable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Disconnectable {
2 | Self : WS._Disconnectable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
[2228/2243] Compiling WS Encoder.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Disconnectable.swift:27:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
25 |     func _disconnect() -> EventLoopFuture<Void> {
26 |         eventLoop.future().flatMap {
27 |             self._disconnect(code: .goingAway)
   |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
28 |         }
29 |     }
WS._Disconnectable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Disconnectable {
2 | Self : WS._Disconnectable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
[2229/2243] Compiling WS BindableObserver.swift
[2230/2243] Compiling WS ClassicObserver.swift
[2231/2243] Compiling WS DeclarativeObserver.swift
[2232/2243] Compiling WS AnyClient.swift
[2233/2243] Compiling WS Loggable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:42:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 40 |         /// Send as `text`
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
 44 |                 $0.send(text)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:61:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 59 |         /// Send as `binary`
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
 63 |                 $0.send(bytes)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:62:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 63 |                 $0.send(bytes)
 64 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:84:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 82 |         /// Send as `binary`
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
 86 |                 $0.send(raw: data, opcode: opcode)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:17: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                 `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:32: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 93 |     }
 94 |
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
    |                `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                                `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:99:16: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 97 |             try encoder.encode(model)
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
    |                `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
100 |                 return self.eventLoop.future(data)
101 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:104:19: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
102 |             return self.send(data: data).transform(to: data)
103 |         }.flatMap {
104 |             guard self.exchangeMode != .binary,
    |                   `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
105 |                 let text = String(data: $0, encoding: .utf8) else {
106 |                 return self.eventLoop.future()
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:122:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
120 |     func _sendPing() -> EventLoopFuture<Void> {
121 |         eventLoop.future().map {
122 |             self.sockets.forEach { $0.sendPing() }
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
123 |         }
124 |     }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:131:33: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
128 |
129 | extension EventLoopFuture: Sendable where Value: Sendable {
130 |     public func send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                      `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
131 |         flatMap { $0.send(text: text) }
    |                                 `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
132 |     }
133 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:139:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
136 |     }
137 |
138 |     public func send<Data>(data: Data) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
139 |         flatMap { $0.send(data: data) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:143:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
142 |     public func send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
143 |         flatMap { $0.send(data: data, opcode: opcode) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
144 |     }
145 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:147:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
144 |     }
145 |
146 |     public func send<C>(model: C) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
147 |         flatMap { $0.send(model: model) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:50: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                                  `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:155:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
153 |
154 |     public func send<T>(event: EID<T>) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
155 |         flatMap { $0.send(event: event) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
156 |     }
157 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:50: warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
156 |     }
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
    |                      `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                                  `- warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:25:34: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
23 | }
24 |
25 | internal protocol _Subscribable: class, Subscribable {
   |                                  `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
26 |     var eventLoop: EventLoop { get }
27 |     var clients: [_AnyClient] { get }
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:32: warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                                `- warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyClient.swift:5:17: note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | public protocol AnyClient: Broadcastable, Disconnectable, Subscribable, Sendable {
   |                 `- note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 6 |     var id: UUID { get }
 7 |     var application: Application { get }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:21: warning: mutation of captured var 'ids' in concurrently-executing code
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                     `- warning: mutation of captured var 'ids' in concurrently-executing code
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:13: warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
  4 | import NIOWebSocket
  5 |
  6 | public class Broadcaster: Disconnectable, _Disconnectable, Sendable, _Sendable, Subscribable {
    |              `- note: class 'Broadcaster' does not conform to the 'Sendable' protocol
  7 |     let eventLoop: EventLoop
  8 |     var clients: [AnyClient]
    :
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |             `- warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
 97 |         }.transform(to: self)
 98 |     }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:38: warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |                                      `- warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 97 |         }.transform(to: self)
 98 |     }
[2234/2243] Compiling WS Sendable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:42:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 40 |         /// Send as `text`
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
 44 |                 $0.send(text)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:61:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 59 |         /// Send as `binary`
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
 63 |                 $0.send(bytes)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:62:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 63 |                 $0.send(bytes)
 64 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:84:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 82 |         /// Send as `binary`
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
 86 |                 $0.send(raw: data, opcode: opcode)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:17: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                 `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:32: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 93 |     }
 94 |
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
    |                `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                                `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:99:16: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 97 |             try encoder.encode(model)
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
    |                `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
100 |                 return self.eventLoop.future(data)
101 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:104:19: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
102 |             return self.send(data: data).transform(to: data)
103 |         }.flatMap {
104 |             guard self.exchangeMode != .binary,
    |                   `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
105 |                 let text = String(data: $0, encoding: .utf8) else {
106 |                 return self.eventLoop.future()
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:122:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
120 |     func _sendPing() -> EventLoopFuture<Void> {
121 |         eventLoop.future().map {
122 |             self.sockets.forEach { $0.sendPing() }
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
123 |         }
124 |     }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:131:33: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
128 |
129 | extension EventLoopFuture: Sendable where Value: Sendable {
130 |     public func send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                      `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
131 |         flatMap { $0.send(text: text) }
    |                                 `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
132 |     }
133 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:139:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
136 |     }
137 |
138 |     public func send<Data>(data: Data) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
139 |         flatMap { $0.send(data: data) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:143:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
142 |     public func send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
143 |         flatMap { $0.send(data: data, opcode: opcode) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
144 |     }
145 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:147:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
144 |     }
145 |
146 |     public func send<C>(model: C) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
147 |         flatMap { $0.send(model: model) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:50: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                                  `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:155:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
153 |
154 |     public func send<T>(event: EID<T>) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
155 |         flatMap { $0.send(event: event) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
156 |     }
157 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:50: warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
156 |     }
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
    |                      `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                                  `- warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:25:34: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
23 | }
24 |
25 | internal protocol _Subscribable: class, Subscribable {
   |                                  `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
26 |     var eventLoop: EventLoop { get }
27 |     var clients: [_AnyClient] { get }
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:32: warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                                `- warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyClient.swift:5:17: note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | public protocol AnyClient: Broadcastable, Disconnectable, Subscribable, Sendable {
   |                 `- note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 6 |     var id: UUID { get }
 7 |     var application: Application { get }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:21: warning: mutation of captured var 'ids' in concurrently-executing code
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                     `- warning: mutation of captured var 'ids' in concurrently-executing code
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:13: warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
  4 | import NIOWebSocket
  5 |
  6 | public class Broadcaster: Disconnectable, _Disconnectable, Sendable, _Sendable, Subscribable {
    |              `- note: class 'Broadcaster' does not conform to the 'Sendable' protocol
  7 |     let eventLoop: EventLoop
  8 |     var clients: [AnyClient]
    :
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |             `- warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
 97 |         }.transform(to: self)
 98 |     }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:38: warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |                                      `- warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 97 |         }.transform(to: self)
 98 |     }
[2235/2243] Compiling WS Subscribable.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:42:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 40 |         /// Send as `text`
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
 44 |                 $0.send(text)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:61:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 59 |         /// Send as `binary`
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
 63 |                 $0.send(bytes)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:62:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 63 |                 $0.send(bytes)
 64 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:84:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 82 |         /// Send as `binary`
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
 86 |                 $0.send(raw: data, opcode: opcode)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:17: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                 `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:32: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 93 |     }
 94 |
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
    |                `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                                `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:99:16: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 97 |             try encoder.encode(model)
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
    |                `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
100 |                 return self.eventLoop.future(data)
101 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:104:19: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
102 |             return self.send(data: data).transform(to: data)
103 |         }.flatMap {
104 |             guard self.exchangeMode != .binary,
    |                   `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
105 |                 let text = String(data: $0, encoding: .utf8) else {
106 |                 return self.eventLoop.future()
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:122:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
120 |     func _sendPing() -> EventLoopFuture<Void> {
121 |         eventLoop.future().map {
122 |             self.sockets.forEach { $0.sendPing() }
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
123 |         }
124 |     }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:131:33: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
128 |
129 | extension EventLoopFuture: Sendable where Value: Sendable {
130 |     public func send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                      `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
131 |         flatMap { $0.send(text: text) }
    |                                 `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
132 |     }
133 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:139:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
136 |     }
137 |
138 |     public func send<Data>(data: Data) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
139 |         flatMap { $0.send(data: data) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:143:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
142 |     public func send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
143 |         flatMap { $0.send(data: data, opcode: opcode) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
144 |     }
145 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:147:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
144 |     }
145 |
146 |     public func send<C>(model: C) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
147 |         flatMap { $0.send(model: model) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:50: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                                  `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:155:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
153 |
154 |     public func send<T>(event: EID<T>) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
155 |         flatMap { $0.send(event: event) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
156 |     }
157 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:50: warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
156 |     }
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
    |                      `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                                  `- warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:25:34: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
23 | }
24 |
25 | internal protocol _Subscribable: class, Subscribable {
   |                                  `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
26 |     var eventLoop: EventLoop { get }
27 |     var clients: [_AnyClient] { get }
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:32: warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                                `- warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyClient.swift:5:17: note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | public protocol AnyClient: Broadcastable, Disconnectable, Subscribable, Sendable {
   |                 `- note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 6 |     var id: UUID { get }
 7 |     var application: Application { get }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:21: warning: mutation of captured var 'ids' in concurrently-executing code
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                     `- warning: mutation of captured var 'ids' in concurrently-executing code
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:13: warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
  4 | import NIOWebSocket
  5 |
  6 | public class Broadcaster: Disconnectable, _Disconnectable, Sendable, _Sendable, Subscribable {
    |              `- note: class 'Broadcaster' does not conform to the 'Sendable' protocol
  7 |     let eventLoop: EventLoop
  8 |     var clients: [AnyClient]
    :
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |             `- warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
 97 |         }.transform(to: self)
 98 |     }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:38: warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |                                      `- warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 97 |         }.transform(to: self)
 98 |     }
[2236/2243] Compiling WS Broadcaster.swift
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:42:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 40 |         /// Send as `text`
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
 44 |                 $0.send(text)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: capture of 'text' with non-sendable type 'S' in an isolated closure; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:43:58: warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 32 |
 33 | extension _Sendable {
 34 |     func _send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
 35 |         /// Send as `binary` instead
 36 |         if exchangeMode == .binary {
    :
 41 |         return eventLoop.future().map {
 42 |             self.sockets.forEach {
 43 |                 self.logger.debug("[⚡️] 📤 text: \(text)")
    |                                                  `- warning: implicit capture of 'text' requires that 'S' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 44 |                 $0.send(text)
 45 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:61:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 59 |         /// Send as `binary`
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
 63 |                 $0.send(bytes)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:62:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 60 |         return eventLoop.future().map {
 61 |             self.sockets.forEach {
 62 |                 self.logger.debug("[⚡️] 📤 bytes: \(bytes.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 63 |                 $0.send(bytes)
 64 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:84:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 82 |         /// Send as `binary`
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
 86 |                 $0.send(raw: data, opcode: opcode)
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: capture of 'data' with non-sendable type 'Data' in an isolated closure; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:85:58: warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 70 |     }
 71 |
 72 |     func _send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data: DataProtocol {
    |                `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
 73 |         /// Send as `text` instead
 74 |         if exchangeMode == .text {
    :
 83 |         return eventLoop.future().map {
 84 |             self.sockets.forEach {
 85 |                 self.logger.debug("[⚡️] 📤 data: \(data.count)")
    |                                                  `- warning: implicit capture of 'data' requires that 'Data' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 86 |                 $0.send(raw: data, opcode: opcode)
 87 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:17: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                 `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:97:32: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 93 |     }
 94 |
 95 |     func _send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C: Encodable {
    |                `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
 96 |         eventLoop.future().flatMapThrowing {
 97 |             try encoder.encode(model)
    |                                `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:99:16: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 97 |             try encoder.encode(model)
 98 |         }.flatMap { data -> EventLoopFuture<Data> in
 99 |             if self.exchangeMode == .text {
    |                `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
100 |                 return self.eventLoop.future(data)
101 |             }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:104:19: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
102 |             return self.send(data: data).transform(to: data)
103 |         }.flatMap {
104 |             guard self.exchangeMode != .binary,
    |                   `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
105 |                 let text = String(data: $0, encoding: .utf8) else {
106 |                 return self.eventLoop.future()
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:122:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
120 |     func _sendPing() -> EventLoopFuture<Void> {
121 |         eventLoop.future().map {
122 |             self.sockets.forEach { $0.sendPing() }
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
123 |         }
124 |     }
WS._Sendable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Sendable {
2 | Self : WS._Sendable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:131:33: warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
128 |
129 | extension EventLoopFuture: Sendable where Value: Sendable {
130 |     public func send<S>(text: S) -> EventLoopFuture<Void> where S : Collection, S.Element == Character {
    |                      `- note: consider making generic parameter 'S' conform to the 'Sendable' protocol
131 |         flatMap { $0.send(text: text) }
    |                                 `- warning: capture of 'text' with non-sendable type 'S' in a '@Sendable' closure
132 |     }
133 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:139:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
136 |     }
137 |
138 |     public func send<Data>(data: Data) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
139 |         flatMap { $0.send(data: data) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:143:33: warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
140 |     }
141 |
142 |     public func send<Data>(data: Data, opcode: WebSocketOpcode) -> EventLoopFuture<Void> where Data : DataProtocol {
    |                      `- note: consider making generic parameter 'Data' conform to the 'Sendable' protocol
143 |         flatMap { $0.send(data: data, opcode: opcode) }
    |                                 `- warning: capture of 'data' with non-sendable type 'Data' in a '@Sendable' closure
144 |     }
145 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:147:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
144 |     }
145 |
146 |     public func send<C>(model: C) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
147 |         flatMap { $0.send(model: model) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:34: warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
148 |     }
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
    |                      `- note: consider making generic parameter 'C' conform to the 'Sendable' protocol
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                  `- warning: capture of 'model' with non-sendable type 'C' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:151:50: warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
149 |
150 |     public func send<C>(model: C, encoder: Encoder) -> EventLoopFuture<Void> where C : Encodable {
151 |         flatMap { $0.send(model: model, encoder: encoder) }
    |                                                  `- warning: capture of 'encoder' with non-sendable type 'any Encoder' in a '@Sendable' closure
152 |     }
153 |
/host/spi-builder-workspace/Sources/WS/Protocols/Encoder.swift:3:17: note: protocol 'Encoder' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol Encoder {
  |                 `- note: protocol 'Encoder' does not conform to the 'Sendable' protocol
4 |     func encode<T>(_ value: T) throws -> Data where T : Encodable
5 | }
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:155:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
153 |
154 |     public func send<T>(event: EID<T>) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
155 |         flatMap { $0.send(event: event) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
156 |     }
157 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:34: warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                  `- warning: capture of 'event' with non-sendable type 'EID<T>' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Models/EID.swift:11:15: note: consider making generic struct 'EID' conform to the 'Sendable' protocol
 9 | /// }
10 | /// ```
11 | public struct EID<P: Codable>: Equatable, Hashable, CustomStringConvertible, ExpressibleByStringLiteral {
   |               `- note: consider making generic struct 'EID' conform to the 'Sendable' protocol
12 |     /// The unique id.
13 |     public let id: String
/host/spi-builder-workspace/Sources/WS/Protocols/Sendable.swift:159:50: warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
156 |     }
157 |
158 |     public func send<T>(event: EID<T>, payload: T?) -> EventLoopFuture<Void> where T : Decodable, T : Encodable {
    |                      `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
159 |         flatMap { $0.send(event: event, payload: payload) }
    |                                                  `- warning: capture of 'payload' with non-sendable type 'T?' in a '@Sendable' closure
160 |     }
161 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:25:34: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
23 | }
24 |
25 | internal protocol _Subscribable: class, Subscribable {
   |                                  `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
26 |     var eventLoop: EventLoop { get }
27 |     var clients: [_AnyClient] { get }
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:38:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
36 |         self.eventLoop.submit {
37 |             channels.forEach { channel in
38 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
39 |                     $0.channels.insert(channel)
40 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Protocols/Subscribable.swift:52:17: warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
50 |         self.eventLoop.submit {
51 |             channels.forEach { channel in
52 |                 self.clients.forEach {
   |                 `- warning: capture of 'self' with non-sendable type 'Self' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     $0.channels.remove(channel)
54 |                 }
WS._Subscribable.Self:2:1: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
1 | protocol _Subscribable {
2 | Self : WS._Subscribable}
  | `- note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
3 |
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:32: warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                                `- warning: capture of 'client' with non-sendable type 'any AnyClient' in a '@Sendable' closure
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Protocols/AnyClient.swift:5:17: note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 3 | import NIOWebSocket
 4 |
 5 | public protocol AnyClient: Broadcastable, Disconnectable, Subscribable, Sendable {
   |                 `- note: protocol 'AnyClient' does not conform to the 'Sendable' protocol
 6 |     var id: UUID { get }
 7 |     var application: Application { get }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:92:21: warning: mutation of captured var 'ids' in concurrently-executing code
 90 |             filter(client).map { leave in
 91 |                 if !leave {
 92 |                     ids.insert(client.id)
    |                     `- warning: mutation of captured var 'ids' in concurrently-executing code
 93 |                 }
 94 |             }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:13: warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
  4 | import NIOWebSocket
  5 |
  6 | public class Broadcaster: Disconnectable, _Disconnectable, Sendable, _Sendable, Subscribable {
    |              `- note: class 'Broadcaster' does not conform to the 'Sendable' protocol
  7 |     let eventLoop: EventLoop
  8 |     var clients: [AnyClient]
    :
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |             `- warning: capture of 'self' with non-sendable type 'Broadcaster' in a '@Sendable' closure
 97 |         }.transform(to: self)
 98 |     }
/host/spi-builder-workspace/Sources/WS/Utilities/Broadcaster.swift:96:38: warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 94 |             }
 95 |         }.flatten(on: eventLoop).map {
 96 |             self.clients.removeAll { ids.contains($0.id) }
    |                                      `- warning: reference to captured var 'ids' in concurrently-executing code; this is an error in the Swift 6 language mode
 97 |         }.transform(to: self)
 98 |     }
[2237/2243] Compiling WS OriginalRequest.swift
[2238/2243] Compiling WS WSID.swift
[2239/2243] Compiling WS Client.swift
[2240/2243] Compiling WS BaseObserver.swift
[2241/2243] Compiling WS DefaultDateFormatter.swift
/host/spi-builder-workspace/Sources/WS/Utilities/DefaultDateFormatter.swift:3:7: warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 1 | import Foundation
 2 |
 3 | class DefaultDateFormatter: DateFormatter {
   |       `- warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 4 |     func setup() {
 5 |         self.calendar = Calendar(identifier: .iso8601)
/host/spi-builder-workspace/Sources/WS/Utilities/EndpointBuilder.swift:74:99: warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 72 |
 73 |         application.wsStorage[wsid.key] = observer
 74 |         WSRoute(root: application.grouped(middlewares), path: path).webSocket(onUpgrade: observer.handle)
    |                                                                                                   `- warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 75 |
 76 |         let observerType = String(describing: Observer.self)
/host/spi-builder-workspace/Sources/WS/Utilities/Storage.swift:7:12: warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 2 | import Vapor
 3 |
 4 | class _Storage {
   |       `- note: class '_Storage' does not conform to the 'Sendable' protocol
 5 |     var items: [String: AnyObserver] = [:]
 6 |
 7 |     struct Key: StorageKey {
   |            `- warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 8 |         typealias Value = _Storage
 9 |     }
[2242/2243] Compiling WS EndpointBuilder.swift
/host/spi-builder-workspace/Sources/WS/Utilities/DefaultDateFormatter.swift:3:7: warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 1 | import Foundation
 2 |
 3 | class DefaultDateFormatter: DateFormatter {
   |       `- warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 4 |     func setup() {
 5 |         self.calendar = Calendar(identifier: .iso8601)
/host/spi-builder-workspace/Sources/WS/Utilities/EndpointBuilder.swift:74:99: warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 72 |
 73 |         application.wsStorage[wsid.key] = observer
 74 |         WSRoute(root: application.grouped(middlewares), path: path).webSocket(onUpgrade: observer.handle)
    |                                                                                                   `- warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 75 |
 76 |         let observerType = String(describing: Observer.self)
/host/spi-builder-workspace/Sources/WS/Utilities/Storage.swift:7:12: warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 2 | import Vapor
 3 |
 4 | class _Storage {
   |       `- note: class '_Storage' does not conform to the 'Sendable' protocol
 5 |     var items: [String: AnyObserver] = [:]
 6 |
 7 |     struct Key: StorageKey {
   |            `- warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 8 |         typealias Value = _Storage
 9 |     }
[2243/2243] Compiling WS Storage.swift
/host/spi-builder-workspace/Sources/WS/Utilities/DefaultDateFormatter.swift:3:7: warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 1 | import Foundation
 2 |
 3 | class DefaultDateFormatter: DateFormatter {
   |       `- warning: class 'DefaultDateFormatter' must restate inherited '@unchecked Sendable' conformance
 4 |     func setup() {
 5 |         self.calendar = Calendar(identifier: .iso8601)
/host/spi-builder-workspace/Sources/WS/Utilities/EndpointBuilder.swift:74:99: warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 72 |
 73 |         application.wsStorage[wsid.key] = observer
 74 |         WSRoute(root: application.grouped(middlewares), path: path).webSocket(onUpgrade: observer.handle)
    |                                                                                                   `- warning: converting non-sendable function value to '@Sendable (Request, WebSocket) -> ()' may introduce data races
 75 |
 76 |         let observerType = String(describing: Observer.self)
/host/spi-builder-workspace/Sources/WS/Utilities/Storage.swift:7:12: warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 2 | import Vapor
 3 |
 4 | class _Storage {
   |       `- note: class '_Storage' does not conform to the 'Sendable' protocol
 5 |     var items: [String: AnyObserver] = [:]
 6 |
 7 |     struct Key: StorageKey {
   |            `- warning: type '_Storage.Key.Value' (aka '_Storage') does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 8 |         typealias Value = _Storage
 9 |     }
Build complete! (174.07s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "vapor",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.0.0",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor/vapor.git"
    },
    {
      "identity" : "websocket-kit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor/websocket-kit.git"
    }
  ],
  "manifest_display_name" : "AwesomeWS",
  "name" : "AwesomeWS",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "WS",
      "targets" : [
        "WS"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "WSTests",
      "module_type" : "SwiftTarget",
      "name" : "WSTests",
      "path" : "Tests/WSTests",
      "product_dependencies" : [
        "WebSocketKit"
      ],
      "sources" : [
        "WSTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "WS"
      ],
      "type" : "test"
    },
    {
      "c99name" : "WS",
      "module_type" : "SwiftTarget",
      "name" : "WS",
      "path" : "Sources/WS",
      "product_dependencies" : [
        "Vapor",
        "WebSocketKit"
      ],
      "product_memberships" : [
        "WS"
      ],
      "sources" : [
        "Enums/ExchangeMode.swift",
        "Extensions/Application+Configurator.swift",
        "Extensions/HTTPServerConfiguration+Address.swift",
        "Extensions/Request+Observer.swift",
        "Models/Configurator.swift",
        "Models/EID.swift",
        "Models/Event.swift",
        "Models/Nothing.swift",
        "Models/OriginalRequest.swift",
        "Models/WSID.swift",
        "Objects/Client.swift",
        "Observers/BaseObserver.swift",
        "Observers/BindableObserver.swift",
        "Observers/ClassicObserver.swift",
        "Observers/DeclarativeObserver.swift",
        "Protocols/AnyClient.swift",
        "Protocols/AnyObserver.swift",
        "Protocols/Bindable.swift",
        "Protocols/Broadcastable.swift",
        "Protocols/Declarativable.swift",
        "Protocols/Decoder.swift",
        "Protocols/Delegate.swift",
        "Protocols/Disconnectable.swift",
        "Protocols/Encoder.swift",
        "Protocols/Loggable.swift",
        "Protocols/Sendable.swift",
        "Protocols/Subscribable.swift",
        "Utilities/Broadcaster.swift",
        "Utilities/DefaultDateFormatter.swift",
        "Utilities/EndpointBuilder.swift",
        "Utilities/Storage.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.