The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of PusherSwift, reference 10.1.5 (886341), with Swift 6.1 for macOS (SPM) on 28 Apr 2025 08:46:13 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.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/pusher/pusher-websocket-swift.git
Reference: 10.1.5
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/pusher/pusher-websocket-swift
 * tag               10.1.5     -> FETCH_HEAD
HEAD is now at 886341f Use organization level CocoaPods token (#423)
Cloned https://github.com/pusher/pusher-websocket-swift.git
Revision (git rev-parse @):
886341f9dad453c9822f2525136ee2006a6c3c9e
SUCCESS checkout https://github.com/pusher/pusher-websocket-swift.git at 10.1.5
Fetching https://github.com/pusher/NWWebSocket.git
Fetching https://github.com/bitmark-inc/tweetnacl-swiftwrap
[1/404] Fetching tweetnacl-swiftwrap
[86/1015] Fetching tweetnacl-swiftwrap, nwwebsocket
Fetched https://github.com/bitmark-inc/tweetnacl-swiftwrap from cache (1.09s)
Fetched https://github.com/pusher/NWWebSocket.git from cache (1.09s)
Computing version for https://github.com/bitmark-inc/tweetnacl-swiftwrap
Computed https://github.com/bitmark-inc/tweetnacl-swiftwrap at 1.0.2 (1.82s)
Computing version for https://github.com/pusher/NWWebSocket.git
Computed https://github.com/pusher/NWWebSocket.git at 0.5.4 (0.56s)
Creating working copy for https://github.com/bitmark-inc/tweetnacl-swiftwrap
Working copy of https://github.com/bitmark-inc/tweetnacl-swiftwrap resolved at 1.0.2
Creating working copy for https://github.com/pusher/NWWebSocket.git
Working copy of https://github.com/pusher/NWWebSocket.git resolved at 0.5.4
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "pusher-websocket-swift",
      "name": "PusherSwift",
      "url": "https://github.com/pusher/pusher-websocket-swift.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/pusher-websocket-swift",
      "dependencies": [
        {
          "identity": "nwwebsocket",
          "name": "NWWebSocket",
          "url": "https://github.com/pusher/NWWebSocket.git",
          "version": "0.5.4",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/NWWebSocket",
          "dependencies": [
          ]
        },
        {
          "identity": "tweetnacl-swiftwrap",
          "name": "TweetNacl",
          "url": "https://github.com/bitmark-inc/tweetnacl-swiftwrap",
          "version": "1.1.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/tweetnacl-swiftwrap",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/pusher/pusher-websocket-swift.git
[1/10002] Fetching pusher-websocket-swift
Fetched https://github.com/pusher/pusher-websocket-swift.git from cache (1.20s)
Fetching https://github.com/bitmark-inc/tweetnacl-swiftwrap from cache
Fetching https://github.com/pusher/NWWebSocket.git from cache
Fetched https://github.com/bitmark-inc/tweetnacl-swiftwrap from cache (1.23s)
Fetched https://github.com/pusher/NWWebSocket.git from cache (1.23s)
Computing version for https://github.com/pusher/NWWebSocket.git
Computed https://github.com/pusher/NWWebSocket.git at 0.5.4 (1.29s)
Computing version for https://github.com/bitmark-inc/tweetnacl-swiftwrap
Computed https://github.com/bitmark-inc/tweetnacl-swiftwrap at 1.1.0 (0.03s)
Creating working copy for https://github.com/pusher/NWWebSocket.git
Working copy of https://github.com/pusher/NWWebSocket.git resolved at 0.5.4
Creating working copy for https://github.com/bitmark-inc/tweetnacl-swiftwrap
Working copy of https://github.com/bitmark-inc/tweetnacl-swiftwrap resolved at 1.1.0
Creating working copy for https://github.com/pusher/pusher-websocket-swift.git
Working copy of https://github.com/pusher/pusher-websocket-swift.git resolved at 10.1.5 (886341f)
warning: '.resolve-product-dependencies': dependency 'pusher-websocket-swift' is not used by any target
Found 2 product dependencies
  - NWWebSocket
  - TweetNacl
========================================
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.4",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pusher/NWWebSocket.git"
    },
    {
      "identity" : "tweetnacl-swiftwrap",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bitmark-inc/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 Constant.swift
[8/12] Compiling TweetNacl TweetNacl.swift
[9/12] Emitting module NWWebSocket
[10/12] Compiling NWWebSocket WebSocketConnection.swift
[11/12] Compiling NWWebSocket NWConnection+Extension.swift
[12/12] Compiling NWWebSocket NWWebSocket.swift
[13/52] Compiling PusherSwift PusherError+ObjectiveC.swift
[14/52] Compiling PusherSwift PusherHost+ObjectiveC.swift
[15/52] Compiling PusherSwift AuthRequestBuilderProtocol.swift
[16/52] Compiling PusherSwift Authorizer.swift
[17/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",
[18/56] Compiling PusherSwift PusherPresenceChannelMember.swift
[19/56] Compiling PusherSwift QueuedClientEvent.swift
[20/56] Compiling PusherSwift AuthMethod+ObjectiveC.swift
[21/56] Compiling PusherSwift OCAuthMethod.swift
[22/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",
[23/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",
[24/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",
[25/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",
[26/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",
[27/56] Compiling PusherSwift OCPusherHost.swift
[28/56] Compiling PusherSwift Pusher+ObjectiveC.swift
[29/56] Compiling PusherSwift PusherClientOptions+ObjectiveC.swift
[30/56] Compiling PusherSwift PusherConnection+ObjectiveC.swift
[31/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)
[32/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)
[33/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)
[34/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)
[35/56] Compiling PusherSwift PusherEvent.swift
[36/56] Compiling PusherSwift PusherGlobalChannel.swift
[37/56] Compiling PusherSwift PusherHost.swift
[38/56] Compiling PusherSwift PusherPresenceChannel.swift
[39/56] Compiling PusherSwift EventFactory.swift
[40/56] Compiling PusherSwift EventQueue.swift
[41/56] Compiling PusherSwift EventQueueDelegate.swift
[42/56] Compiling PusherSwift PusherDelegate.swift
[43/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 |     }
[44/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 |     }
[45/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 |     }
[46/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 |     }
[47/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 |     }
[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! (6.65s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "nwwebsocket",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.4",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pusher/NWWebSocket.git"
    },
    {
      "identity" : "tweetnacl-swiftwrap",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bitmark-inc/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.