Build Information
Successful build of PusherSwift, reference master (34f283), with Swift 6.1 for macOS (SPM) on 4 Oct 2026 16:52:57 UTC.
Swift 6 data race errors: 2
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/pusher/pusher-websocket-swift.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/pusher/pusher-websocket-swift
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at 34f2832 Merge pull request #462 from pusher/bump-ios-minimum-to-15
Cloned https://github.com/pusher/pusher-websocket-swift.git
Revision (git rev-parse @):
34f28328baab5828ac4ae7914ea46a1f8517e5d1
SUCCESS checkout https://github.com/pusher/pusher-websocket-swift.git at master
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/pusher/pusher-websocket-swift.git
https://github.com/pusher/pusher-websocket-swift.git
{
"dependencies" : [
{
"identity" : "nwwebsocket",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/pusher/NWWebSocket.git"
},
{
"identity" : "tweetnacl-swiftwrap",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/pusher/tweetnacl-swiftwrap"
}
],
"manifest_display_name" : "PusherSwift",
"name" : "PusherSwift",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "15.0"
}
],
"products" : [
{
"name" : "PusherSwift",
"targets" : [
"PusherSwift"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "PusherSwiftTests",
"module_type" : "SwiftTarget",
"name" : "PusherSwiftTests",
"path" : "Tests",
"sources" : [
"Extensions/String+Extensions.swift",
"Extensions/XCTest+Assertions.swift",
"Helpers/Helpers.swift",
"Helpers/Mocks.swift",
"Helpers/TestObjects.swift",
"Integration/AuthenticationTests.swift",
"Integration/PusherClientInitializationTests.swift",
"Integration/PusherIncomingEventHandlingTests.swift",
"Integration/PusherTopLevelAPITests.swift",
"Unit/Helpers/ChannelEventFactory+DecryptionTests.swift",
"Unit/Helpers/ChannelEventFactoryTests.swift",
"Unit/Helpers/CryptoTests.swift",
"Unit/Models/ClientEventTests.swift",
"Unit/Models/PresenceChannelTests.swift",
"Unit/Models/PrivateEncryptedChannelTests.swift",
"Unit/Models/PusherChannelTests.swift",
"Unit/Protocols/PusherConnectionDelegateTests.swift",
"Unit/Services/ChannelEventQueue+DecryptionTests.swift",
"Unit/Services/ChannelEventQueueTests.swift",
"Unit/Services/PusherConnectionTests.swift"
],
"target_dependencies" : [
"PusherSwift"
],
"type" : "test"
},
{
"c99name" : "PusherSwift",
"module_type" : "SwiftTarget",
"name" : "PusherSwift",
"path" : "Sources",
"product_dependencies" : [
"NWWebSocket",
"TweetNacl"
],
"product_memberships" : [
"PusherSwift"
],
"sources" : [
"Extensions/PusherChannel+EncryptionHelpers.swift",
"Extensions/PusherConnection+WebsocketDelegate.swift",
"Extensions/URL+Pusher.swift",
"Helpers/Crypto.swift",
"Helpers/EventParser.swift",
"Helpers/Logger.swift",
"Models/AuthError.swift",
"Models/AuthMethod.swift",
"Models/ChannelsProtocolCloseCode.swift",
"Models/ConnectionState.swift",
"Models/Constants.swift",
"Models/EventError.swift",
"Models/EventHandler.swift",
"Models/PusherAuth.swift",
"Models/PusherChannel.swift",
"Models/PusherChannelType.swift",
"Models/PusherChannels.swift",
"Models/PusherClientOptions.swift",
"Models/PusherError.swift",
"Models/PusherEvent.swift",
"Models/PusherGlobalChannel.swift",
"Models/PusherHost.swift",
"Models/PusherPresenceChannel.swift",
"Models/PusherPresenceChannelMember.swift",
"Models/QueuedClientEvent.swift",
"ObjC/AuthMethod+ObjectiveC.swift",
"ObjC/OCAuthMethod.swift",
"ObjC/OCPusherHost.swift",
"ObjC/Pusher+ObjectiveC.swift",
"ObjC/PusherClientOptions+ObjectiveC.swift",
"ObjC/PusherConnection+ObjectiveC.swift",
"ObjC/PusherError+ObjectiveC.swift",
"ObjC/PusherHost+ObjectiveC.swift",
"Protocols/AuthRequestBuilderProtocol.swift",
"Protocols/Authorizer.swift",
"Protocols/EventFactory.swift",
"Protocols/EventQueue.swift",
"Protocols/EventQueueDelegate.swift",
"Protocols/PusherDelegate.swift",
"PusherSwift.swift",
"Services/ChannelEventFactory.swift",
"Services/ChannelEventQueue.swift",
"Services/PusherConnection.swift"
],
"type" : "library"
}
],
"tools_version" : "5.0"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -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
Building for debugging...
[0/5] Write sources
[3/5] Compiling CTweetNacl ctweetnacl.c
[4/5] Write swift-version-2F0A5646E1D333AE.txt
[6/12] Compiling TweetNacl Constant.swift
[7/12] Emitting module TweetNacl
[8/12] Compiling TweetNacl TweetNacl.swift
[9/12] Compiling NWWebSocket NWConnection+Extension.swift
[10/12] Emitting module NWWebSocket
[11/12] Compiling NWWebSocket NWWebSocket.swift
[12/12] Compiling NWWebSocket WebSocketConnection.swift
[13/52] Compiling PusherSwift EventFactory.swift
[14/52] Compiling PusherSwift EventQueue.swift
[15/52] Compiling PusherSwift EventQueueDelegate.swift
[16/52] Compiling PusherSwift PusherDelegate.swift
[17/56] Compiling PusherSwift PusherError+ObjectiveC.swift
[18/56] Compiling PusherSwift PusherHost+ObjectiveC.swift
[19/56] Compiling PusherSwift AuthRequestBuilderProtocol.swift
[20/56] Compiling PusherSwift Authorizer.swift
[21/56] Compiling PusherSwift OCPusherHost.swift
[22/56] Compiling PusherSwift Pusher+ObjectiveC.swift
[23/56] Compiling PusherSwift PusherClientOptions+ObjectiveC.swift
[24/56] Compiling PusherSwift PusherConnection+ObjectiveC.swift
[25/56] Compiling PusherSwift PusherPresenceChannelMember.swift
[26/56] Compiling PusherSwift QueuedClientEvent.swift
[27/56] Compiling PusherSwift AuthMethod+ObjectiveC.swift
[28/56] Compiling PusherSwift OCAuthMethod.swift
[29/56] Emitting module PusherSwift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[30/56] Compiling PusherSwift PusherChannelType.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:52: warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | @objc open class PusherChannels: NSObject {
| `- note: class 'PusherChannels' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user subscribes/unsubscribes to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:76: warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
[31/56] Compiling PusherSwift PusherChannels.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:52: warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | @objc open class PusherChannels: NSObject {
| `- note: class 'PusherChannels' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user subscribes/unsubscribes to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:76: warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
[32/56] Compiling PusherSwift PusherClientOptions.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:52: warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | @objc open class PusherChannels: NSObject {
| `- note: class 'PusherChannels' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user subscribes/unsubscribes to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:76: warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
[33/56] Compiling PusherSwift PusherError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:52: warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | @objc open class PusherChannels: NSObject {
| `- note: class 'PusherChannels' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user subscribes/unsubscribes to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannels' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannels.swift:15:76: warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
13 | }
14 | set {
15 | channelsQueue.async(flags: .barrier) { self.channelsInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : PusherChannel]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
[34/56] Compiling PusherSwift Logger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[35/56] Compiling PusherSwift AuthError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[36/56] Compiling PusherSwift AuthMethod.swift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[37/56] Compiling PusherSwift ChannelsProtocolCloseCode.swift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[38/56] Compiling PusherSwift ConnectionState.swift
/Users/admin/builder/spi-builder-workspace/Sources/Helpers/Logger.swift:71:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | /// Used for logging events for informational purposes
4 | class Logger {
| `- note: class 'Logger' does not conform to the 'Sendable' protocol
5 |
6 | // MARK: - Enum definitions
:
69 | }
70 |
71 | static let shared = Logger()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 |
73 | weak var delegate: PusherDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Models/ConnectionState.swift:10:16: warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | @objc public enum ConnectionState: Int {
| `- note: consider making enum 'ConnectionState' conform to the 'Sendable' protocol
4 | case connecting
5 | case connected
:
8 | case reconnecting
9 |
10 | static let connectionStates = [
| |- warning: static property 'connectionStates' is not concurrency-safe because non-'Sendable' type '[ConnectionState : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'connectionStates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | connecting: "connecting",
12 | connected: "connected",
[39/56] Compiling PusherSwift Constants.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:86: warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/EventHandler.swift:3:15: note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct EventHandler {
| `- note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
4 | let id: String
5 | let callback: (PusherEvent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:41:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
39 | }
40 | set {
41 | decryptionKeyQueue.async(flags: .barrier) { self.decryptionKeyInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
42 | }
43 | }
[40/56] Compiling PusherSwift EventError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:86: warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/EventHandler.swift:3:15: note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct EventHandler {
| `- note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
4 | let id: String
5 | let callback: (PusherEvent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:41:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
39 | }
40 | set {
41 | decryptionKeyQueue.async(flags: .barrier) { self.decryptionKeyInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
42 | }
43 | }
[41/56] Compiling PusherSwift EventHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:86: warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/EventHandler.swift:3:15: note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct EventHandler {
| `- note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
4 | let id: String
5 | let callback: (PusherEvent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:41:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
39 | }
40 | set {
41 | decryptionKeyQueue.async(flags: .barrier) { self.decryptionKeyInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
42 | }
43 | }
[42/56] Compiling PusherSwift PusherAuth.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:86: warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/EventHandler.swift:3:15: note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct EventHandler {
| `- note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
4 | let id: String
5 | let callback: (PusherEvent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:41:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
39 | }
40 | set {
41 | decryptionKeyQueue.async(flags: .barrier) { self.decryptionKeyInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
42 | }
43 | }
[43/56] Compiling PusherSwift PusherChannel.swift
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:15:86: warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
13 | }
14 | set {
15 | eventHandlersQueue.async(flags: .barrier) { self.eventHandlersInternal = newValue }
| `- warning: capture of 'newValue' with non-sendable type '[String : [EventHandler]]' in a '@Sendable' closure
16 | }
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/EventHandler.swift:3:15: note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct EventHandler {
| `- note: consider making struct 'EventHandler' conform to the 'Sendable' protocol
4 | let id: String
5 | let callback: (PusherEvent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:41:57: warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
:
39 | }
40 | set {
41 | decryptionKeyQueue.async(flags: .barrier) { self.decryptionKeyInternal = newValue }
| `- warning: capture of 'self' with non-sendable type 'PusherChannel' in a '@Sendable' closure
42 | }
43 | }
[44/56] Compiling PusherSwift PusherEvent.swift
[45/56] Compiling PusherSwift PusherGlobalChannel.swift
[46/56] Compiling PusherSwift PusherHost.swift
[47/56] Compiling PusherSwift PusherPresenceChannel.swift
[48/56] Compiling PusherSwift PusherChannel+EncryptionHelpers.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/PusherConnection+WebsocketDelegate.swift:148:30: warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
146 | reconnectTimer = Timer.scheduledTimer(withTimeInterval: reconnectionAttemptTimeInterval(strategy: strategy),
147 | repeats: false) { [weak self] timer in
148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
149 |
150 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:7:18: note: class 'PusherConnection' does not conform to the 'Sendable' protocol
5 |
6 | @objcMembers
7 | @objc open class PusherConnection: NSObject {
| `- note: class 'PusherConnection' does not conform to the 'Sendable' protocol
8 | public let url: String
9 | public let key: String
[49/56] Compiling PusherSwift PusherConnection+WebsocketDelegate.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/PusherConnection+WebsocketDelegate.swift:148:30: warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
146 | reconnectTimer = Timer.scheduledTimer(withTimeInterval: reconnectionAttemptTimeInterval(strategy: strategy),
147 | repeats: false) { [weak self] timer in
148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
149 |
150 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:7:18: note: class 'PusherConnection' does not conform to the 'Sendable' protocol
5 |
6 | @objcMembers
7 | @objc open class PusherConnection: NSObject {
| `- note: class 'PusherConnection' does not conform to the 'Sendable' protocol
8 | public let url: String
9 | public let key: String
[50/56] Compiling PusherSwift URL+Pusher.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/PusherConnection+WebsocketDelegate.swift:148:30: warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
146 | reconnectTimer = Timer.scheduledTimer(withTimeInterval: reconnectionAttemptTimeInterval(strategy: strategy),
147 | repeats: false) { [weak self] timer in
148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
149 |
150 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:7:18: note: class 'PusherConnection' does not conform to the 'Sendable' protocol
5 |
6 | @objcMembers
7 | @objc open class PusherConnection: NSObject {
| `- note: class 'PusherConnection' does not conform to the 'Sendable' protocol
8 | public let url: String
9 | public let key: String
[51/56] Compiling PusherSwift Crypto.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/PusherConnection+WebsocketDelegate.swift:148:30: warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
146 | reconnectTimer = Timer.scheduledTimer(withTimeInterval: reconnectionAttemptTimeInterval(strategy: strategy),
147 | repeats: false) { [weak self] timer in
148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
149 |
150 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:7:18: note: class 'PusherConnection' does not conform to the 'Sendable' protocol
5 |
6 | @objcMembers
7 | @objc open class PusherConnection: NSObject {
| `- note: class 'PusherConnection' does not conform to the 'Sendable' protocol
8 | public let url: String
9 | public let key: String
[52/56] Compiling PusherSwift EventParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/PusherConnection+WebsocketDelegate.swift:148:30: warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
146 | reconnectTimer = Timer.scheduledTimer(withTimeInterval: reconnectionAttemptTimeInterval(strategy: strategy),
147 | repeats: false) { [weak self] timer in
148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'PusherConnection?' in a '@Sendable' closure
149 |
150 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:7:18: note: class 'PusherConnection' does not conform to the 'Sendable' protocol
5 |
6 | @objcMembers
7 | @objc open class PusherConnection: NSObject {
| `- note: class 'PusherConnection' does not conform to the 'Sendable' protocol
8 | public let url: String
9 | public let key: String
[53/56] Compiling PusherSwift PusherSwift.swift
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:13: warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
1 | import Foundation
2 |
3 | class ChannelEventQueue: EventQueue {
| `- note: class 'ChannelEventQueue' does not conform to the 'Sendable' protocol
4 |
5 | // MARK: - Properties
:
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:48: warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: reference to captured var 'channel' in concurrently-executing code
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: reference to captured var 'channel' in concurrently-executing code
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:853:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
851 | let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
854 | completionHandler(nil, AuthError(kind: .requestFailure,
855 | message: message,
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:854:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
854 | completionHandler(nil, AuthError(kind: .requestFailure,
| |- warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
855 | message: message,
856 | response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:976:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
974 | DispatchQueue.main.async {
975 | Logger.shared.debug(for: .unableToHandleIncomingMessage,
976 | context: payload)
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:984:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
982 | forChannelName channelName: String) {
983 | DispatchQueue.main.async {
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:986:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
987 | }
988 | Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'channel' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
[54/56] Compiling PusherSwift ChannelEventFactory.swift
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:13: warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
1 | import Foundation
2 |
3 | class ChannelEventQueue: EventQueue {
| `- note: class 'ChannelEventQueue' does not conform to the 'Sendable' protocol
4 |
5 | // MARK: - Properties
:
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:48: warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: reference to captured var 'channel' in concurrently-executing code
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: reference to captured var 'channel' in concurrently-executing code
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:853:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
851 | let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
854 | completionHandler(nil, AuthError(kind: .requestFailure,
855 | message: message,
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:854:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
854 | completionHandler(nil, AuthError(kind: .requestFailure,
| |- warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
855 | message: message,
856 | response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:976:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
974 | DispatchQueue.main.async {
975 | Logger.shared.debug(for: .unableToHandleIncomingMessage,
976 | context: payload)
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:984:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
982 | forChannelName channelName: String) {
983 | DispatchQueue.main.async {
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:986:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
987 | }
988 | Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'channel' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
[55/56] Compiling PusherSwift ChannelEventQueue.swift
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:13: warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
1 | import Foundation
2 |
3 | class ChannelEventQueue: EventQueue {
| `- note: class 'ChannelEventQueue' does not conform to the 'Sendable' protocol
4 |
5 | // MARK: - Properties
:
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:48: warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: reference to captured var 'channel' in concurrently-executing code
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: reference to captured var 'channel' in concurrently-executing code
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:853:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
851 | let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
854 | completionHandler(nil, AuthError(kind: .requestFailure,
855 | message: message,
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:854:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
854 | completionHandler(nil, AuthError(kind: .requestFailure,
| |- warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
855 | message: message,
856 | response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:976:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
974 | DispatchQueue.main.async {
975 | Logger.shared.debug(for: .unableToHandleIncomingMessage,
976 | context: payload)
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:984:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
982 | forChannelName channelName: String) {
983 | DispatchQueue.main.async {
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:986:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
987 | }
988 | Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'channel' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
[56/56] Compiling PusherSwift PusherConnection.swift
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:13: warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
1 | import Foundation
2 |
3 | class ChannelEventQueue: EventQueue {
| `- note: class 'ChannelEventQueue' does not conform to the 'Sendable' protocol
4 |
5 | // MARK: - Properties
:
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'self' with non-sendable type 'ChannelEventQueue' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:48: warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'json' with non-sendable type 'ChannelEventPayload' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel?' in a '@Sendable' closure
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/ChannelEventQueue.swift:34:63: warning: reference to captured var 'channel' in concurrently-executing code
32 |
33 | queue.async {
34 | self.processEventWithRetries(json: json, channel: channel)
| `- warning: reference to captured var 'channel' in concurrently-executing code
35 | }
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:853:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
851 | let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
| `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
854 | completionHandler(nil, AuthError(kind: .requestFailure,
855 | message: message,
/Users/admin/builder/spi-builder-workspace/Sources/Models/PusherChannel.swift:4:12: note: class 'PusherChannel' does not conform to the 'Sendable' protocol
2 |
3 | @objcMembers
4 | open class PusherChannel: NSObject {
| `- note: class 'PusherChannel' does not conform to the 'Sendable' protocol
5 | // Access via queue for thread safety if user binds/unbinds events to a channel off the main queue
6 | // (Concurrent reads are allowed. Writes using `.barrier` so queue waits for completion before continuing)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:854:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
852 | if let error = sessionError {
853 | let message = "Error authorizing channel [\(channel.name)]: \(error)"
854 | completionHandler(nil, AuthError(kind: .requestFailure,
| |- warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
855 | message: message,
856 | response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:623:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
621 | DispatchQueue.main.async {
622 | // TODO: Consider removing in favour of exclusively using delegate
623 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
624 | }
625 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:976:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
974 | DispatchQueue.main.async {
975 | Logger.shared.debug(for: .unableToHandleIncomingMessage,
976 | context: payload)
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:984:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
982 | forChannelName channelName: String) {
983 | DispatchQueue.main.async {
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
| |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:986:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
984 | if let eventName = payload[Constants.JSONKeys.event] as? String {
985 | let data = payload[Constants.JSONKeys.data] as? String
986 | self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
987 | }
988 | Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
995 | forChannelName channelName: String?) {
996 | DispatchQueue.main.async {
997 | self.handleEvent(event: event)
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
998 | }
999 | }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:1013:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
1011 | // Schedule the loading of the key on the main thread
1012 | DispatchQueue.main.async {
1013 | _ = self.requestPusherAuthFromAuthMethod(channel: channel) { pusherAuth, error in
| |- warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'channel' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1014 | if let pusherAuth = pusherAuth,
1015 | let decryptionKey = pusherAuth.sharedSecret,
Build complete! (8.83s)
Fetching https://github.com/pusher/NWWebSocket.git
Fetching https://github.com/pusher/tweetnacl-swiftwrap
[1/852] Fetching nwwebsocket
[78/1271] Fetching nwwebsocket, tweetnacl-swiftwrap
Fetched https://github.com/pusher/tweetnacl-swiftwrap from cache (1.18s)
Fetched https://github.com/pusher/NWWebSocket.git from cache (1.18s)
Computing version for https://github.com/pusher/tweetnacl-swiftwrap
Computed https://github.com/pusher/tweetnacl-swiftwrap at 1.3.0 (1.75s)
Computing version for https://github.com/pusher/NWWebSocket.git
Computed https://github.com/pusher/NWWebSocket.git at 1.0.0 (0.55s)
Creating working copy for https://github.com/pusher/NWWebSocket.git
Working copy of https://github.com/pusher/NWWebSocket.git resolved at 1.0.0
Creating working copy for https://github.com/pusher/tweetnacl-swiftwrap
Working copy of https://github.com/pusher/tweetnacl-swiftwrap resolved at 1.3.0
Build complete.
{
"dependencies" : [
{
"identity" : "nwwebsocket",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/pusher/NWWebSocket.git"
},
{
"identity" : "tweetnacl-swiftwrap",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/pusher/tweetnacl-swiftwrap"
}
],
"manifest_display_name" : "PusherSwift",
"name" : "PusherSwift",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "15.0"
}
],
"products" : [
{
"name" : "PusherSwift",
"targets" : [
"PusherSwift"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "PusherSwiftTests",
"module_type" : "SwiftTarget",
"name" : "PusherSwiftTests",
"path" : "Tests",
"sources" : [
"Extensions/String+Extensions.swift",
"Extensions/XCTest+Assertions.swift",
"Helpers/Helpers.swift",
"Helpers/Mocks.swift",
"Helpers/TestObjects.swift",
"Integration/AuthenticationTests.swift",
"Integration/PusherClientInitializationTests.swift",
"Integration/PusherIncomingEventHandlingTests.swift",
"Integration/PusherTopLevelAPITests.swift",
"Unit/Helpers/ChannelEventFactory+DecryptionTests.swift",
"Unit/Helpers/ChannelEventFactoryTests.swift",
"Unit/Helpers/CryptoTests.swift",
"Unit/Models/ClientEventTests.swift",
"Unit/Models/PresenceChannelTests.swift",
"Unit/Models/PrivateEncryptedChannelTests.swift",
"Unit/Models/PusherChannelTests.swift",
"Unit/Protocols/PusherConnectionDelegateTests.swift",
"Unit/Services/ChannelEventQueue+DecryptionTests.swift",
"Unit/Services/ChannelEventQueueTests.swift",
"Unit/Services/PusherConnectionTests.swift"
],
"target_dependencies" : [
"PusherSwift"
],
"type" : "test"
},
{
"c99name" : "PusherSwift",
"module_type" : "SwiftTarget",
"name" : "PusherSwift",
"path" : "Sources",
"product_dependencies" : [
"NWWebSocket",
"TweetNacl"
],
"product_memberships" : [
"PusherSwift"
],
"sources" : [
"Extensions/PusherChannel+EncryptionHelpers.swift",
"Extensions/PusherConnection+WebsocketDelegate.swift",
"Extensions/URL+Pusher.swift",
"Helpers/Crypto.swift",
"Helpers/EventParser.swift",
"Helpers/Logger.swift",
"Models/AuthError.swift",
"Models/AuthMethod.swift",
"Models/ChannelsProtocolCloseCode.swift",
"Models/ConnectionState.swift",
"Models/Constants.swift",
"Models/EventError.swift",
"Models/EventHandler.swift",
"Models/PusherAuth.swift",
"Models/PusherChannel.swift",
"Models/PusherChannelType.swift",
"Models/PusherChannels.swift",
"Models/PusherClientOptions.swift",
"Models/PusherError.swift",
"Models/PusherEvent.swift",
"Models/PusherGlobalChannel.swift",
"Models/PusherHost.swift",
"Models/PusherPresenceChannel.swift",
"Models/PusherPresenceChannelMember.swift",
"Models/QueuedClientEvent.swift",
"ObjC/AuthMethod+ObjectiveC.swift",
"ObjC/OCAuthMethod.swift",
"ObjC/OCPusherHost.swift",
"ObjC/Pusher+ObjectiveC.swift",
"ObjC/PusherClientOptions+ObjectiveC.swift",
"ObjC/PusherConnection+ObjectiveC.swift",
"ObjC/PusherError+ObjectiveC.swift",
"ObjC/PusherHost+ObjectiveC.swift",
"Protocols/AuthRequestBuilderProtocol.swift",
"Protocols/Authorizer.swift",
"Protocols/EventFactory.swift",
"Protocols/EventQueue.swift",
"Protocols/EventQueueDelegate.swift",
"Protocols/PusherDelegate.swift",
"PusherSwift.swift",
"Services/ChannelEventFactory.swift",
"Services/ChannelEventQueue.swift",
"Services/PusherConnection.swift"
],
"type" : "library"
}
],
"tools_version" : "5.0"
}
Done.