The Swift Package Index logo.Swift Package Index

Build Information

Successful build of PusherSwift, reference master (9ba0bd), with Swift 6.1 for macOS (SPM) on 30 Apr 2026 18:45:41 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 InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
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 9ba0bda Merge pull request #460 from pusher/fix/version-strings-10.1.10
Cloned https://github.com/pusher/pusher-websocket-swift.git
Revision (git rev-parse @):
9ba0bdabe881030e238dbb0bcb1fc24a8b0993f8
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" : "0.5.9",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pusher/NWWebSocket.git"
    },
    {
      "identity" : "tweetnacl-swiftwrap",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.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" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.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] Emitting module TweetNacl
[7/12] Compiling TweetNacl TweetNacl.swift
[8/12] Compiling TweetNacl Constant.swift
[9/12] Compiling NWWebSocket WebSocketConnection.swift
[10/12] Compiling NWWebSocket NWConnection+Extension.swift
[11/12] Emitting module NWWebSocket
[12/12] Compiling NWWebSocket NWWebSocket.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] 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",
[22/56] Compiling PusherSwift OCPusherHost.swift
[23/56] Compiling PusherSwift Pusher+ObjectiveC.swift
[24/56] Compiling PusherSwift PusherClientOptions+ObjectiveC.swift
[25/56] Compiling PusherSwift PusherConnection+ObjectiveC.swift
[26/56] Compiling PusherSwift PusherPresenceChannelMember.swift
[27/56] Compiling PusherSwift QueuedClientEvent.swift
[28/56] Compiling PusherSwift AuthMethod+ObjectiveC.swift
[29/56] Compiling PusherSwift OCAuthMethod.swift
[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
[49/56] Compiling PusherSwift PusherConnection+WebsocketDelegate.swift
[50/56] Compiling PusherSwift URL+Pusher.swift
[51/56] Compiling PusherSwift Crypto.swift
[52/56] Compiling PusherSwift EventParser.swift
[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:837:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 835 |         let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
     |                                                             `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 838 |                 completionHandler(nil, AuthError(kind: .requestFailure,
 839 |                                                  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:838:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
 838 |                 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'
 839 |                                                  message: message,
 840 |                                                  response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:960:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 958 |         DispatchQueue.main.async {
 959 |             Logger.shared.debug(for: .unableToHandleIncomingMessage,
 960 |                                 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
 961 |         }
 962 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:968:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 966 |                     forChannelName channelName: String) {
 967 |         DispatchQueue.main.async {
 968 |             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
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:970:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 968 |             if let eventName = payload[Constants.JSONKeys.event] as? String {
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 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
 971 |             }
 972 |             Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     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:837:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 835 |         let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
     |                                                             `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 838 |                 completionHandler(nil, AuthError(kind: .requestFailure,
 839 |                                                  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:838:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
 838 |                 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'
 839 |                                                  message: message,
 840 |                                                  response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:960:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 958 |         DispatchQueue.main.async {
 959 |             Logger.shared.debug(for: .unableToHandleIncomingMessage,
 960 |                                 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
 961 |         }
 962 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:968:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 966 |                     forChannelName channelName: String) {
 967 |         DispatchQueue.main.async {
 968 |             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
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:970:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 968 |             if let eventName = payload[Constants.JSONKeys.event] as? String {
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 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
 971 |             }
 972 |             Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     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:837:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 835 |         let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
     |                                                             `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 838 |                 completionHandler(nil, AuthError(kind: .requestFailure,
 839 |                                                  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:838:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
 838 |                 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'
 839 |                                                  message: message,
 840 |                                                  response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:960:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 958 |         DispatchQueue.main.async {
 959 |             Logger.shared.debug(for: .unableToHandleIncomingMessage,
 960 |                                 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
 961 |         }
 962 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:968:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 966 |                     forChannelName channelName: String) {
 967 |         DispatchQueue.main.async {
 968 |             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
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:970:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 968 |             if let eventName = payload[Constants.JSONKeys.event] as? String {
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 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
 971 |             }
 972 |             Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     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:837:61: warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 835 |         let task = URLSession.dataTask(with: request, completionHandler: { data, response, sessionError in
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
     |                                                             `- warning: capture of 'channel' with non-sendable type 'PusherChannel' in a '@Sendable' closure
 838 |                 completionHandler(nil, AuthError(kind: .requestFailure,
 839 |                                                  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:838:17: warning: capture of 'completionHandler' with non-sendable type '(PusherAuth?, AuthError?) -> Void' in a '@Sendable' closure
 836 |             if let error = sessionError {
 837 |                 let message = "Error authorizing channel [\(channel.name)]: \(error)"
 838 |                 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'
 839 |                                                  message: message,
 840 |                                                  response: response,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:607:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 605 |         DispatchQueue.main.async {
 606 |             // TODO: Consider removing in favour of exclusively using delegate
 607 |             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
 608 |         }
 609 |
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:960:42: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 958 |         DispatchQueue.main.async {
 959 |             Logger.shared.debug(for: .unableToHandleIncomingMessage,
 960 |                                 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
 961 |         }
 962 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:968:32: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 966 |                     forChannelName channelName: String) {
 967 |         DispatchQueue.main.async {
 968 |             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
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 self.delegate?.failedToDecryptEvent?(eventName: eventName, channelName: channelName, data: data)
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:970:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 968 |             if let eventName = payload[Constants.JSONKeys.event] as? String {
 969 |                 let data = payload[Constants.JSONKeys.data] as? String
 970 |                 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
 971 |             }
 972 |             Logger.shared.debug(for: .skippedEventAfterDecryptionFailure,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:981:37: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
 979 |                     forChannelName channelName: String?) {
 980 |         DispatchQueue.main.async {
 981 |             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
 982 |         }
 983 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     let decryptionKey = pusherAuth.sharedSecret,
/Users/admin/builder/spi-builder-workspace/Sources/Services/PusherConnection.swift:997:63: warning: sending 'channel' risks causing data races; this is an error in the Swift 6 language mode
 995 |         // Schedule the loading of the key on the main thread
 996 |         DispatchQueue.main.async {
 997 |             _ = 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
 998 |                 if let pusherAuth = pusherAuth,
 999 |                     let decryptionKey = pusherAuth.sharedSecret,
Build complete! (9.26s)
Fetching https://github.com/pusher/NWWebSocket.git
Fetching https://github.com/pusher/tweetnacl-swiftwrap
[1/813] Fetching nwwebsocket
[10/1218] Fetching nwwebsocket, tweetnacl-swiftwrap
Fetched https://github.com/pusher/NWWebSocket.git from cache (1.08s)
Fetched https://github.com/pusher/tweetnacl-swiftwrap from cache (1.08s)
Computing version for https://github.com/pusher/tweetnacl-swiftwrap
Computed https://github.com/pusher/tweetnacl-swiftwrap at 1.2.0 (1.70s)
Computing version for https://github.com/pusher/NWWebSocket.git
Computed https://github.com/pusher/NWWebSocket.git at 0.5.10 (0.59s)
Creating working copy for https://github.com/pusher/NWWebSocket.git
Working copy of https://github.com/pusher/NWWebSocket.git resolved at 0.5.10
Creating working copy for https://github.com/pusher/tweetnacl-swiftwrap
Working copy of https://github.com/pusher/tweetnacl-swiftwrap resolved at 1.2.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "nwwebsocket",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.9",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pusher/NWWebSocket.git"
    },
    {
      "identity" : "tweetnacl-swiftwrap",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.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" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.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.