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 WealthsimpleDownloader, reference v2.0.2 (af3e30), with Swift 6.1 for macOS (SPM) on 29 Apr 2025 03:13:01 UTC.

Swift 6 data race errors: 19

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/Nef10/WealthsimpleDownloader.git
Reference: v2.0.2
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Nef10/WealthsimpleDownloader
 * tag               v2.0.2     -> FETCH_HEAD
HEAD is now at af3e30a Add online bill payment type
Cloned https://github.com/Nef10/WealthsimpleDownloader.git
Revision (git rev-parse @):
af3e30a235d0311de7b37536095f8cf6470abd51
SUCCESS checkout https://github.com/Nef10/WealthsimpleDownloader.git at v2.0.2
========================================
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": "wealthsimpledownloader",
      "name": "WealthsimpleDownloader",
      "url": "https://github.com/Nef10/WealthsimpleDownloader.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/WealthsimpleDownloader",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/Nef10/WealthsimpleDownloader.git
[1/1903] Fetching wealthsimpledownloader
Fetched https://github.com/Nef10/WealthsimpleDownloader.git from cache (1.15s)
Creating working copy for https://github.com/Nef10/WealthsimpleDownloader.git
Working copy of https://github.com/Nef10/WealthsimpleDownloader.git resolved at v2.0.2 (af3e30a)
warning: '.resolve-product-dependencies': dependency 'wealthsimpledownloader' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/Nef10/WealthsimpleDownloader.git
https://github.com/Nef10/WealthsimpleDownloader.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "WealthsimpleDownloader",
  "name" : "WealthsimpleDownloader",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Wealthsimple",
      "targets" : [
        "Wealthsimple"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "WealthsimpleTests",
      "module_type" : "SwiftTarget",
      "name" : "WealthsimpleTests",
      "path" : "Tests/WealthsimpleTests",
      "sources" : [
        "Extensions/StringCamelCaseTests.swift",
        "WealthsimpleDownloaderTests.swift"
      ],
      "target_dependencies" : [
        "Wealthsimple"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Wealthsimple",
      "module_type" : "SwiftTarget",
      "name" : "Wealthsimple",
      "path" : "Sources/Wealthsimple",
      "product_memberships" : [
        "Wealthsimple"
      ],
      "sources" : [
        "Extensions/String+CamelCase.swift",
        "Token.swift",
        "TransactionError.swift",
        "WealthsimpleAccount.swift",
        "WealthsimpleAsset.swift",
        "WealthsimpleDownloader.swift",
        "WealthsimplePosition.swift",
        "WealthsimpleTransaction.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.2"
}
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/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/11] Compiling Wealthsimple WealthsimpleAsset.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAsset.swift:13:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
11 | public enum AssetError: Error {
12 |     /// When the received JSON does not have all expected values
13 |     case missingResultParamenter(json: [String: Any])
   |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
14 |     /// When the received JSON does have an unexpected value
15 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAsset.swift:15:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
13 |     case missingResultParamenter(json: [String: Any])
14 |     /// When the received JSON does have an unexpected value
15 |     case invalidResultParamenter(json: [String: Any])
   |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
16 | }
17 |
[4/11] Compiling Wealthsimple WealthsimpleDownloader.swift
[5/11] Compiling Wealthsimple WealthsimpleTransaction.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleTransaction.swift:119:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
117 |     private static let baseUrl = URLComponents(string: "https://api.production.wealthsimple.com/v1/transactions")!
118 |
119 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
120 |         var dateFormatter = DateFormatter()
121 |         dateFormatter.dateFormat = "yyyy-MM-dd"
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleTransaction.swift:208:94: warning: capture of 'completion' with non-sendable type '(Result<[any Transaction], TransactionError>) -> Void' in a '@Sendable' closure
206 |             case let .success(request):
207 |                 let task = session.dataTask(with: request) { data, response, error in
208 |                     handleResponse(data: data, response: response, error: error, completion: completion)
    |                                                                                              |- warning: capture of 'completion' with non-sendable type '(Result<[any Transaction], TransactionError>) -> Void' in a '@Sendable' closure
    |                                                                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
209 |                 }
210 |                 task.resume()
[6/11] Compiling Wealthsimple TransactionError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:19:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
17 |     case invalidJson(error: String)
18 |     /// When the received JSON does not have the right type
19 |     case invalidJsonType(json: Any)
   |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
20 |     /// When the received JSON does not have all expected values
21 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:21:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
19 |     case invalidJsonType(json: Any)
20 |     /// When the received JSON does not have all expected values
21 |     case missingResultParamenter(json: [String: Any])
   |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
22 |     /// When the received JSON does have an unexpected value
23 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:23:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
21 |     case missingResultParamenter(json: [String: Any])
22 |     /// When the received JSON does have an unexpected value
23 |     case invalidResultParamenter(json: [String: Any])
   |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
24 |     /// An error with the token occured
25 |     case tokenError(_ error: TokenError)
[7/11] Compiling Wealthsimple WealthsimpleAccount.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:22:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 20 |     case invalidJson(error: String)
 21 |     /// When the received JSON does not have the right type
 22 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidJsonType(json: Any)
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:26:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 24 |     case missingResultParamenter(json: [String: Any])
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
    |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 27 |     /// An error with the token occured
 28 |     case tokenError(_ error: TokenError)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:107:94: warning: capture of 'completion' with non-sendable type '(Result<[any Account], AccountError>) -> Void' in a '@Sendable' closure
105 |             case let .success(request):
106 |                 let task = session.dataTask(with: request) { data, response, error in
107 |                     handleResponse(data: data, response: response, error: error, completion: completion)
    |                                                                                              |- warning: capture of 'completion' with non-sendable type '(Result<[any Account], AccountError>) -> Void' in a '@Sendable' closure
    |                                                                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
108 |                 }
109 |                 task.resume()
[8/11] Compiling Wealthsimple WealthsimplePosition.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:22:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 20 |     case invalidJson(error: String)
 21 |     /// When the received JSON does not have the right type
 22 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidJsonType(json: Any)
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:26:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 24 |     case missingResultParamenter(json: [String: Any])
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
    |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 27 |     /// An error with the assets occured
 28 |     case assetError(_ error: AssetError)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:53:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 51 |     private static let baseUrl = URLComponents(string: "https://api.production.wealthsimple.com/v1/positions")!
 52 |
 53 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 54 |         var dateFormatter = DateFormatter()
 55 |         dateFormatter.dateFormat = "yyyy-MM-dd"
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:112:94: warning: capture of 'completion' with non-sendable type '(Result<[any Position], PositionError>) -> Void' in a '@Sendable' closure
110 |             case let .success(request):
111 |                 let task = session.dataTask(with: request) { data, response, error in
112 |                     handleResponse(data: data, response: response, error: error, completion: completion)
    |                                                                                              |- warning: capture of 'completion' with non-sendable type '(Result<[any Position], PositionError>) -> Void' in a '@Sendable' closure
    |                                                                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
113 |                 }
114 |                 task.resume()
[9/11] Compiling Wealthsimple String+CamelCase.swift
[10/11] Compiling Wealthsimple Token.swift
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:20:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 18 |     case invalidJson(error: String)
 19 |     /// When the received JSON does not have the right type
 20 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 21 |     /// When the paramters could not be converted to JSON
 22 |     case invalidParameters(parameters: [String: String])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidParameters(parameters: [String: String])
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When an HTTP error occurs
 26 |     case httpError(error: String)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:37:24: warning: static property 'url' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 |     private static let credentialStorageKeyExpiry = "expiry"
 36 |
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
    |                        |- warning: static property 'url' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'url' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'url' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:38:24: warning: static property 'testUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 36 |
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
    |                        |- warning: static property 'testUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'testUrl' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'testUrl' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:39:24: warning: static property 'clientId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
    |                        |- warning: static property 'clientId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'clientId' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'clientId' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
 41 |
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:40:24: warning: static property 'scope' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
    |                        |- warning: static property 'scope' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'scope' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'scope' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 41 |
 42 |     private let accessToken: String
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:121:98: warning: capture of 'credentialStorage' with non-sendable type 'any CredentialStorage' in a '@Sendable' closure
119 |         }
120 |         let task = session.uploadTask(with: request, from: jsonData) { data, response, error in
121 |             handleTokenResponse(data: data, response: response, error: error, credentialStorage: credentialStorage, completion: completion)
    |                                                                                                  `- warning: capture of 'credentialStorage' with non-sendable type 'any CredentialStorage' in a '@Sendable' closure
122 |         }
123 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleDownloader.swift:13:17: note: protocol 'CredentialStorage' does not conform to the 'Sendable' protocol
 11 | ///
 12 | /// Can for example be implemented using Keychain on Apple devices
 13 | public protocol CredentialStorage {
    |                 `- note: protocol 'CredentialStorage' does not conform to the 'Sendable' protocol
 14 |
 15 |     /// Save a value to the store
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:121:129: warning: capture of 'completion' with non-sendable type '(Result<Token, TokenError>) -> Void' in a '@Sendable' closure
119 |         }
120 |         let task = session.uploadTask(with: request, from: jsonData) { data, response, error in
121 |             handleTokenResponse(data: data, response: response, error: error, credentialStorage: credentialStorage, completion: completion)
    |                                                                                                                                 |- warning: capture of 'completion' with non-sendable type '(Result<Token, TokenError>) -> Void' in a '@Sendable' closure
    |                                                                                                                                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
122 |         }
123 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:180:25: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
178 |                 let task = session.dataTask(with: request) { _, response, error in
179 |                     guard error == nil else {
180 |                         completion(false)
    |                         |- warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
181 |                         return
182 |                     }
[11/11] Emitting module Wealthsimple
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:20:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 18 |     case invalidJson(error: String)
 19 |     /// When the received JSON does not have the right type
 20 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 21 |     /// When the paramters could not be converted to JSON
 22 |     case invalidParameters(parameters: [String: String])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidParameters(parameters: [String: String])
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TokenError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When an HTTP error occurs
 26 |     case httpError(error: String)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:37:24: warning: static property 'url' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 |     private static let credentialStorageKeyExpiry = "expiry"
 36 |
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
    |                        |- warning: static property 'url' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'url' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'url' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:38:24: warning: static property 'testUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 36 |
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
    |                        |- warning: static property 'testUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'testUrl' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'testUrl' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:39:24: warning: static property 'clientId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 37 |     private static var url = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token")!
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
    |                        |- warning: static property 'clientId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'clientId' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'clientId' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
 41 |
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/Token.swift:40:24: warning: static property 'scope' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 38 |     private static var testUrl = URL(string: "https://api.production.wealthsimple.com/v1/oauth/token/info")!
 39 |     private static var clientId = "4da53ac2b03225bed1550eba8e4611e086c7b905a3855e6ed12ea08c246758fa" // From the website
 40 |     private static var scope = "invest.read mfda.read mercer.read trade.read" // the clientId supports some write scopes, but as this library only reads we limit it for safety
    |                        |- warning: static property 'scope' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'scope' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'scope' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 41 |
 42 |     private let accessToken: String
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:19:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
17 |     case invalidJson(error: String)
18 |     /// When the received JSON does not have the right type
19 |     case invalidJsonType(json: Any)
   |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
20 |     /// When the received JSON does not have all expected values
21 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:21:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
19 |     case invalidJsonType(json: Any)
20 |     /// When the received JSON does not have all expected values
21 |     case missingResultParamenter(json: [String: Any])
   |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
22 |     /// When the received JSON does have an unexpected value
23 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/TransactionError.swift:23:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
21 |     case missingResultParamenter(json: [String: Any])
22 |     /// When the received JSON does have an unexpected value
23 |     case invalidResultParamenter(json: [String: Any])
   |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'TransactionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
24 |     /// An error with the token occured
25 |     case tokenError(_ error: TokenError)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:22:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 20 |     case invalidJson(error: String)
 21 |     /// When the received JSON does not have the right type
 22 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidJsonType(json: Any)
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAccount.swift:26:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 24 |     case missingResultParamenter(json: [String: Any])
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
    |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AccountError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 27 |     /// An error with the token occured
 28 |     case tokenError(_ error: TokenError)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAsset.swift:13:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
11 | public enum AssetError: Error {
12 |     /// When the received JSON does not have all expected values
13 |     case missingResultParamenter(json: [String: Any])
   |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
14 |     /// When the received JSON does have an unexpected value
15 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleAsset.swift:15:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
13 |     case missingResultParamenter(json: [String: Any])
14 |     /// When the received JSON does have an unexpected value
15 |     case invalidResultParamenter(json: [String: Any])
   |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'AssetError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
16 | }
17 |
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:22:10: warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 20 |     case invalidJson(error: String)
 21 |     /// When the received JSON does not have the right type
 22 |     case invalidJsonType(json: Any)
    |          `- warning: associated value 'invalidJsonType(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:24:10: warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 22 |     case invalidJsonType(json: Any)
 23 |     /// When the received JSON does not have all expected values
 24 |     case missingResultParamenter(json: [String: Any])
    |          `- warning: associated value 'missingResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:26:10: warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 24 |     case missingResultParamenter(json: [String: Any])
 25 |     /// When the received JSON does have an unexpected value
 26 |     case invalidResultParamenter(json: [String: Any])
    |          `- warning: associated value 'invalidResultParamenter(json:)' of 'Sendable'-conforming enum 'PositionError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
 27 |     /// An error with the assets occured
 28 |     case assetError(_ error: AssetError)
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimplePosition.swift:53:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 51 |     private static let baseUrl = URLComponents(string: "https://api.production.wealthsimple.com/v1/positions")!
 52 |
 53 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 54 |         var dateFormatter = DateFormatter()
 55 |         dateFormatter.dateFormat = "yyyy-MM-dd"
/Users/admin/builder/spi-builder-workspace/Sources/Wealthsimple/WealthsimpleTransaction.swift:119:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
117 |     private static let baseUrl = URLComponents(string: "https://api.production.wealthsimple.com/v1/transactions")!
118 |
119 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
120 |         var dateFormatter = DateFormatter()
121 |         dateFormatter.dateFormat = "yyyy-MM-dd"
Build complete! (5.33s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "WealthsimpleDownloader",
  "name" : "WealthsimpleDownloader",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Wealthsimple",
      "targets" : [
        "Wealthsimple"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "WealthsimpleTests",
      "module_type" : "SwiftTarget",
      "name" : "WealthsimpleTests",
      "path" : "Tests/WealthsimpleTests",
      "sources" : [
        "Extensions/StringCamelCaseTests.swift",
        "WealthsimpleDownloaderTests.swift"
      ],
      "target_dependencies" : [
        "Wealthsimple"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Wealthsimple",
      "module_type" : "SwiftTarget",
      "name" : "Wealthsimple",
      "path" : "Sources/Wealthsimple",
      "product_memberships" : [
        "Wealthsimple"
      ],
      "sources" : [
        "Extensions/String+CamelCase.swift",
        "Token.swift",
        "TransactionError.swift",
        "WealthsimpleAccount.swift",
        "WealthsimpleAsset.swift",
        "WealthsimpleDownloader.swift",
        "WealthsimplePosition.swift",
        "WealthsimpleTransaction.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.2"
}
Done.