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 TelemetryClient with Swift 6.0 (beta) for macOS (SPM) (9ec0f0) on 29 Jun 2024 10:04:30 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.0.0-Beta.2.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.44.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/TelemetryDeck/SwiftSDK.git
Reference: 2.2.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/TelemetryDeck/SwiftSDK
 * tag               2.2.1      -> FETCH_HEAD
HEAD is now at 9ec0f0c Bump version num
Cloned https://github.com/TelemetryDeck/SwiftSDK.git
Revision (git rev-parse @):
9ec0f0c01b94acfe14d6745ab63c53ffbe1d2670
SUCCESS checkout https://github.com/TelemetryDeck/SwiftSDK.git at 2.2.1
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/TelemetryDeck/SwiftSDK.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.0.0-Beta.2.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/5] Write sources
[2/5] Copying PrivacyInfo.xcprivacy
[4/5] Write swift-version--14728B76ED507284.txt
[6/21] Compiling TelemetryClient LogHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/LogHandler.swift:35:23: warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     }
34 |
35 |     public static var stdout = { logLevel in
   |                       |- warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'stdout' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'stdout' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |         LogHandler(logLevel: logLevel) { level, message in
37 |             print("[TelemetryDeck: \(level.description)] \(message)")
[7/21] Compiling TelemetryClient ErrorCategory.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/LogHandler.swift:35:23: warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     }
34 |
35 |     public static var stdout = { logLevel in
   |                       |- warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'stdout' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'stdout' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |         LogHandler(logLevel: logLevel) { level, message in
37 |             print("[TelemetryDeck: \(level.description)] \(message)")
[8/22] Compiling TelemetryClient SignalCache.swift
[9/22] Compiling TelemetryClient SignalEnricher.swift
[10/22] Compiling TelemetryClient TelemetryDeck.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryDeck.swift:15:26: warning: 'initialize(with:)' is deprecated: This call was renamed to `TelemetryDeck.initialize(config:)`. Please migrate – a fix-it is available.
13 |     /// For example, you might want to call this in your `init` method of your app's `@main` entry point.
14 |     public static func initialize(config: Config) {
15 |         TelemetryManager.initialize(with: config)
   |                          |- warning: 'initialize(with:)' is deprecated: This call was renamed to `TelemetryDeck.initialize(config:)`. Please migrate – a fix-it is available.
   |                          `- note: use 'TelemetryDeck.initialize(config:)' instead
16 |     }
17 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryDeck.swift:33:26: warning: 'send(_:for:floatValue:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:floatValue:customUserID:)`. Please migrate – no fix-it possible due to the changed order of arguments.
31 |         customUserID: String? = nil
32 |     ) {
33 |         TelemetryManager.send(signalName, for: customUserID, floatValue: floatValue, with: parameters)
   |                          `- warning: 'send(_:for:floatValue:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:floatValue:customUserID:)`. Please migrate – no fix-it possible due to the changed order of arguments.
34 |     }
35 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryDeck.swift:49:26: warning: 'requestImmediateSync()' is deprecated: This call was renamed to `TelemetryDeck.requestImmediateSync()`. Please migrate – a fix-it is available.
47 |     /// data because a user closes your app and doesn't reopen it anytime soon (if at all).
48 |     public static func requestImmediateSync() {
49 |         TelemetryManager.requestImmediateSync()
   |                          |- warning: 'requestImmediateSync()' is deprecated: This call was renamed to `TelemetryDeck.requestImmediateSync()`. Please migrate – a fix-it is available.
   |                          `- note: use 'TelemetryDeck.requestImmediateSync()' instead
50 |     }
51 | }
[11/22] Compiling TelemetryClient TelemetryDeck+Errors.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/Presets/NavigationStatus.swift:6:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
 3 | /// This internal singleton keeps track of the last used navigation path so
 4 | /// that the ``TelemetryDeck.navigationPathChanged(to:customUserID:)`` function has a `from` source to work off of.
 5 | class NavigationStatus {
   |       `- note: class 'NavigationStatus' does not conform to the 'Sendable' protocol
 6 |     static let shared = NavigationStatus()
   |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'shared' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |
 8 |     var previousNavigationPath: String?
[12/22] Compiling TelemetryClient TelemetryDeck+Navigation.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/Presets/NavigationStatus.swift:6:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
 3 | /// This internal singleton keeps track of the last used navigation path so
 4 | /// that the ``TelemetryDeck.navigationPathChanged(to:customUserID:)`` function has a `from` source to work off of.
 5 | class NavigationStatus {
   |       `- note: class 'NavigationStatus' does not conform to the 'Sendable' protocol
 6 |     static let shared = NavigationStatus()
   |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'shared' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |
 8 |     var previousNavigationPath: String?
[13/22] Compiling TelemetryClient IdentifiableError.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/Presets/NavigationStatus.swift:6:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
 3 | /// This internal singleton keeps track of the last used navigation path so
 4 | /// that the ``TelemetryDeck.navigationPathChanged(to:customUserID:)`` function has a `from` source to work off of.
 5 | class NavigationStatus {
   |       `- note: class 'NavigationStatus' does not conform to the 'Sendable' protocol
 6 |     static let shared = NavigationStatus()
   |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'shared' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |
 8 |     var previousNavigationPath: String?
[14/22] Compiling TelemetryClient NavigationStatus.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/Presets/NavigationStatus.swift:6:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
 3 | /// This internal singleton keeps track of the last used navigation path so
 4 | /// that the ``TelemetryDeck.navigationPathChanged(to:customUserID:)`` function has a `from` source to work off of.
 5 | class NavigationStatus {
   |       `- note: class 'NavigationStatus' does not conform to the 'Sendable' protocol
 6 |     static let shared = NavigationStatus()
   |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'shared' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |
 8 |     var previousNavigationPath: String?
[15/22] Emitting module TelemetryClient
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:4:16: warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | extension Formatter {
 4 |     static let iso8601: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |         let formatter = ISO8601DateFormatter()
 6 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:10:16: warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     }()
 9 |
10 |     static let iso8601noFS = ISO8601DateFormatter()
   |                |- warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601noFS' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:12:16: warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
10 |     static let iso8601noFS = ISO8601DateFormatter()
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601dateOnly' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |         let formatter = ISO8601DateFormatter()
14 |         formatter.formatOptions = [.withFullDate]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:31:16: warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
29 |
30 | extension JSONDecoder {
31 |     static var telemetryDecoder: JSONDecoder = {
   |                |- warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |         let decoder = JSONDecoder()
33 |         let dateFormatter = DateFormatter()
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:41:16: warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
39 |     }()
40 |
41 |     static var druidDecoder: JSONDecoder = {
   |                |- warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'druidDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'druidDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |         let decoder = JSONDecoder()
43 |         decoder.dateDecodingStrategy = .customISO8601
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:49:16: warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
47 |
48 | extension JSONEncoder {
49 |     static var telemetryEncoder: JSONEncoder = {
   |                |- warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryEncoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryEncoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |         let encoder = JSONEncoder()
51 |         let dateFormatter = DateFormatter()
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/LogHandler.swift:35:23: warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     }
34 |
35 |     public static var stdout = { logLevel in
   |                       |- warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'stdout' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'stdout' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |         LogHandler(logLevel: logLevel) { level, message in
37 |             print("[TelemetryDeck: \(level.description)] \(message)")
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/Presets/NavigationStatus.swift:6:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
 3 | /// This internal singleton keeps track of the last used navigation path so
 4 | /// that the ``TelemetryDeck.navigationPathChanged(to:customUserID:)`` function has a `from` source to work off of.
 5 | class NavigationStatus {
   |       `- note: class 'NavigationStatus' does not conform to the 'Sendable' protocol
 6 |     static let shared = NavigationStatus()
   |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NavigationStatus' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'shared' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |
 8 |     var previousNavigationPath: String?
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:59:34: warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
 57 |         didSet {
 58 |             if sendNewSessionBeganSignal {
 59 |                 TelemetryManager.send("newSessionBegan")
    |                                  |- warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
    |                                  `- note: use 'TelemetryDeck.signal(_:parameters:)' instead
 60 |                 TelemetryDeck.signal("TelemetryDeck.Session.started")
 61 |             }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:337:24: warning: static property 'initializedTelemetryManager' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
335 |     }
336 |
337 |     private static var initializedTelemetryManager: TelemetryManager?
    |                        |- warning: static property 'initializedTelemetryManager' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'initializedTelemetryManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'initializedTelemetryManager' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
338 |
339 |     private let configuration: TelemetryManagerConfiguration
[16/22] Compiling TelemetryClient CryptoHashing.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:4:16: warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | extension Formatter {
 4 |     static let iso8601: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |         let formatter = ISO8601DateFormatter()
 6 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:10:16: warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     }()
 9 |
10 |     static let iso8601noFS = ISO8601DateFormatter()
   |                |- warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601noFS' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:12:16: warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
10 |     static let iso8601noFS = ISO8601DateFormatter()
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601dateOnly' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |         let formatter = ISO8601DateFormatter()
14 |         formatter.formatOptions = [.withFullDate]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:31:16: warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
29 |
30 | extension JSONDecoder {
31 |     static var telemetryDecoder: JSONDecoder = {
   |                |- warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |         let decoder = JSONDecoder()
33 |         let dateFormatter = DateFormatter()
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:41:16: warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
39 |     }()
40 |
41 |     static var druidDecoder: JSONDecoder = {
   |                |- warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'druidDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'druidDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |         let decoder = JSONDecoder()
43 |         decoder.dateDecodingStrategy = .customISO8601
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:49:16: warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
47 |
48 | extension JSONEncoder {
49 |     static var telemetryEncoder: JSONEncoder = {
   |                |- warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryEncoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryEncoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |         let encoder = JSONEncoder()
51 |         let dateFormatter = DateFormatter()
[17/22] Compiling TelemetryClient JSONFormatting.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:4:16: warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | extension Formatter {
 4 |     static let iso8601: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |         let formatter = ISO8601DateFormatter()
 6 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:10:16: warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     }()
 9 |
10 |     static let iso8601noFS = ISO8601DateFormatter()
   |                |- warning: static property 'iso8601noFS' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601noFS' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:12:16: warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
10 |     static let iso8601noFS = ISO8601DateFormatter()
11 |
12 |     static let iso8601dateOnly: ISO8601DateFormatter = {
   |                |- warning: static property 'iso8601dateOnly' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: annotate 'iso8601dateOnly' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |         let formatter = ISO8601DateFormatter()
14 |         formatter.formatOptions = [.withFullDate]
Foundation.ISO8601DateFormatter:2:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.12, *)
 2 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 3 |     open var timeZone: TimeZone! { get set }
 4 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:31:16: warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
29 |
30 | extension JSONDecoder {
31 |     static var telemetryDecoder: JSONDecoder = {
   |                |- warning: static property 'telemetryDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |         let decoder = JSONDecoder()
33 |         let dateFormatter = DateFormatter()
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:41:16: warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
39 |     }()
40 |
41 |     static var druidDecoder: JSONDecoder = {
   |                |- warning: static property 'druidDecoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'druidDecoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'druidDecoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |         let decoder = JSONDecoder()
43 |         decoder.dateDecodingStrategy = .customISO8601
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:49:16: warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
47 |
48 | extension JSONEncoder {
49 |     static var telemetryEncoder: JSONEncoder = {
   |                |- warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryEncoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryEncoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |         let encoder = JSONEncoder()
51 |         let dateFormatter = DateFormatter()
[18/22] Compiling TelemetryClient resource_bundle_accessor.swift
[19/22] Compiling TelemetryClient SignalManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:78:54: warning: capture of 'configuration' with non-sendable type 'TelemetryManagerConfiguration' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 76 |     ) {
 77 |         DispatchQueue.global(qos: .utility).async {
 78 |             let enrichedMetadata: [String: String] = configuration.metadataEnrichers
    |                                                      `- warning: capture of 'configuration' with non-sendable type 'TelemetryManagerConfiguration' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 79 |                 .map { $0.enrich(signalType: signalName, for: customUserID, floatValue: floatValue) }
 80 |                 .reduce([String: String](), { $0.applying($1) })
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:20:20: note: class 'TelemetryManagerConfiguration' does not conform to the 'Sendable' protocol
 18 | /// your runtime, it might be a good idea to hold on to the instance and update it as needed. TelemetryManager's behaviour
 19 | /// will update as well.
 20 | public final class TelemetryManagerConfiguration {
    |                    `- note: class 'TelemetryManagerConfiguration' does not conform to the 'Sendable' protocol
 21 |     /// Your app's ID for Telemetry. Set this during initialization.
 22 |     public let telemetryAppID: String
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:89:74: warning: capture of 'self' with non-sendable type 'SignalManager' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 16 | }
 17 |
 18 | internal class SignalManager: SignalManageable {
    |                `- note: class 'SignalManager' does not conform to the 'Sendable' protocol
 19 |     internal static let minimumSecondsToPassBetweenRequests: Double = 10
 20 |
    :
 87 |                 receivedAt: Date(),
 88 |                 appID: UUID(uuidString: configuration.telemetryAppID)!,
 89 |                 clientUser: CryptoHashing.sha256(string: customUserID ?? self.defaultUserIdentifier, salt: configuration.salt),
    |                                                                          `- warning: capture of 'self' with non-sendable type 'SignalManager' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 90 |                 sessionID: configuration.sessionID.uuidString,
 91 |                 type: "\(signalName)",
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:89:74: warning: implicit capture of 'self' requires that 'SignalManager' conforms to `Sendable`; this is an error in the Swift 6 language mode
 16 | }
 17 |
 18 | internal class SignalManager: SignalManageable {
    |                `- note: class 'SignalManager' does not conform to the 'Sendable' protocol
 19 |     internal static let minimumSecondsToPassBetweenRequests: Double = 10
 20 |
    :
 87 |                 receivedAt: Date(),
 88 |                 appID: UUID(uuidString: configuration.telemetryAppID)!,
 89 |                 clientUser: CryptoHashing.sha256(string: customUserID ?? self.defaultUserIdentifier, salt: configuration.salt),
    |                                                                          `- warning: implicit capture of 'self' requires that 'SignalManager' conforms to `Sendable`; this is an error in the Swift 6 language mode
 90 |                 sessionID: configuration.sessionID.uuidString,
 91 |                 type: "\(signalName)",
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:194:88: warning: passing non-sendable parameter 'completionHandler' to function expecting a @Sendable closure
176 |
177 | private extension SignalManager {
178 |     private func send(_ signalPostBodies: [SignalPostBody], completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) {
    |                                                             `- note: parameter 'completionHandler' is implicitly non-sendable
179 |         DispatchQueue.global(qos: .utility).async {
180 |             let path = "/api/v1/apps/\(self.configuration.telemetryAppID)/signals/multiple/"
    :
192 |             self.configuration.logHandler?.log(.debug, message: String(decoding: urlRequest.httpBody!, as: UTF8.self))
193 |
194 |             let task = URLSession.shared.dataTask(with: urlRequest, completionHandler: completionHandler)
    |                                                                                        `- warning: passing non-sendable parameter 'completionHandler' to function expecting a @Sendable closure
195 |             task.resume()
196 |         }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:180:40: warning: capture of 'self' with non-sendable type 'SignalManager' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 16 | }
 17 |
 18 | internal class SignalManager: SignalManageable {
    |                `- note: class 'SignalManager' does not conform to the 'Sendable' protocol
 19 |     internal static let minimumSecondsToPassBetweenRequests: Double = 10
 20 |
    :
178 |     private func send(_ signalPostBodies: [SignalPostBody], completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) {
179 |         DispatchQueue.global(qos: .utility).async {
180 |             let path = "/api/v1/apps/\(self.configuration.telemetryAppID)/signals/multiple/"
    |                                        `- warning: capture of 'self' with non-sendable type 'SignalManager' in a `@Sendable` closure; this is an error in the Swift 6 language mode
181 |             let url = self.configuration.apiBaseURL.appendingPathComponent(path)
182 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/SignalManager.swift:194:88: warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
192 |             self.configuration.logHandler?.log(.debug, message: String(decoding: urlRequest.httpBody!, as: UTF8.self))
193 |
194 |             let task = URLSession.shared.dataTask(with: urlRequest, completionHandler: completionHandler)
    |                                                                                        |- warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                                                                                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
195 |             task.resume()
196 |         }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/JSONFormatting.swift:49:16: warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
47 |
48 | extension JSONEncoder {
49 |     static var telemetryEncoder: JSONEncoder = {
   |                |- warning: static property 'telemetryEncoder' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'telemetryEncoder' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'telemetryEncoder' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |         let encoder = JSONEncoder()
51 |         let dateFormatter = DateFormatter()
[20/22] Compiling TelemetryClient TelemetryDeck+Purchases.swift
[21/22] Compiling TelemetryClient Signal.swift
[22/22] Compiling TelemetryClient TelemetryClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:59:34: warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
 57 |         didSet {
 58 |             if sendNewSessionBeganSignal {
 59 |                 TelemetryManager.send("newSessionBegan")
    |                                  |- warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
    |                                  `- note: use 'TelemetryDeck.signal(_:parameters:)' instead
 60 |                 TelemetryDeck.signal("TelemetryDeck.Session.started")
 61 |             }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/LogHandler.swift:35:23: warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     }
34 |
35 |     public static var stdout = { logLevel in
   |                       |- warning: static property 'stdout' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'stdout' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'stdout' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |         LogHandler(logLevel: logLevel) { level, message in
37 |             print("[TelemetryDeck: \(level.description)] \(message)")
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:337:24: warning: static property 'initializedTelemetryManager' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
335 |     }
336 |
337 |     private static var initializedTelemetryManager: TelemetryManager?
    |                        |- warning: static property 'initializedTelemetryManager' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'initializedTelemetryManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'initializedTelemetryManager' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
338 |
339 |     private let configuration: TelemetryManagerConfiguration
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:322:17: warning: capture of 'self' with non-sendable type 'TelemetryManager?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
183 | ///
184 | /// Use an instance of `TelemetryManagerConfiguration` to configure this at initialization and during its lifetime.
185 | public class TelemetryManager {
    |              `- note: class 'TelemetryManager' does not conform to the 'Sendable' protocol
186 |     /// Returns `true` when the TelemetryManager already has been initialized correctly, `false` otherwise.
187 |     public static var isInitialized: Bool {
    :
320 |             // give the signal manager some short amount of time to process the signal that was sent right before calling sync
321 |             DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + .milliseconds(50)) { [weak self] in
322 |                 self?.signalManager.attemptToSendNextBatchOfCachedSignals()
    |                 `- warning: capture of 'self' with non-sendable type 'TelemetryManager?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
323 |             }
324 |         }
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:400:26: warning: 'initialize(with:)' is deprecated: This call was renamed to `TelemetryDeck.initialize(config:)`. Please migrate – a fix-it is available.
398 | public final class TelemetryManagerObjCProxy: NSObject {
399 |     @objc public static func initialize(with configuration: TelemetryManagerConfigurationObjCProxy) {
400 |         TelemetryManager.initialize(with: configuration.telemetryManagerConfiguration)
    |                          |- warning: 'initialize(with:)' is deprecated: This call was renamed to `TelemetryDeck.initialize(config:)`. Please migrate – a fix-it is available.
    |                          `- note: use 'TelemetryDeck.initialize(config:)' instead
401 |     }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:408:26: warning: 'send(_:for:floatValue:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:floatValue:customUserID:)`. Please migrate – no fix-it possible due to the changed order of arguments.
406 |
407 |     @objc public static func send(_ signalName: String, for clientUser: String? = nil, with additionalPayload: [String: String] = [:]) {
408 |         TelemetryManager.send(signalName, for: clientUser, with: additionalPayload)
    |                          `- warning: 'send(_:for:floatValue:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:floatValue:customUserID:)`. Please migrate – no fix-it possible due to the changed order of arguments.
409 |     }
410 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:412:26: warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
410 |
411 |     @objc public static func send(_ signalName: String, with additionalPayload: [String: String] = [:]) {
412 |         TelemetryManager.send(signalName, with: additionalPayload)
    |                          |- warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
    |                          `- note: use 'TelemetryDeck.signal(_:parameters:)' instead
413 |     }
414 |
/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/TelemetryClient.swift:416:26: warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
414 |
415 |     @objc public static func send(_ signalName: String) {
416 |         TelemetryManager.send(signalName)
    |                          |- warning: 'send(_:with:)' is deprecated: This call was renamed to `TelemetryDeck.signal(_:parameters:)`. Please migrate – a fix-it is available.
    |                          `- note: use 'TelemetryDeck.signal(_:parameters:)' instead
417 |     }
418 |
[23/25] Compiling TelemetryDeck Exports.swift
[24/25] Emitting module TelemetryDeck
[25/25] Compiling TelemetryDeck resource_bundle_accessor.swift
Build complete! (16.27s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "TelemetryClient",
  "name" : "TelemetryClient",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "5.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "TelemetryDeck",
      "targets" : [
        "TelemetryDeck"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TelemetryClient",
      "targets" : [
        "TelemetryClient"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "TelemetryDeck",
      "module_type" : "SwiftTarget",
      "name" : "TelemetryDeck",
      "path" : "Sources/TelemetryDeck",
      "product_memberships" : [
        "TelemetryDeck"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/TelemetryDeck/PrivacyInfo.xcprivacy",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Exports.swift"
      ],
      "target_dependencies" : [
        "TelemetryClient"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TelemetryClientTests",
      "module_type" : "SwiftTarget",
      "name" : "TelemetryClientTests",
      "path" : "Tests/TelemetryClientTests",
      "sources" : [
        "CryptoHashingTests.swift",
        "LogHandlerTests.swift",
        "SignalPayloadTests.swift",
        "TelemetryClientTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "TelemetryClient"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TelemetryClient",
      "module_type" : "SwiftTarget",
      "name" : "TelemetryClient",
      "path" : "Sources/TelemetryClient",
      "product_memberships" : [
        "TelemetryDeck",
        "TelemetryClient"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/TelemetryClient/PrivacyInfo.xcprivacy",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "CryptoHashing.swift",
        "JSONFormatting.swift",
        "LogHandler.swift",
        "Presets/ErrorCategory.swift",
        "Presets/IdentifiableError.swift",
        "Presets/NavigationStatus.swift",
        "Presets/TelemetryDeck+Errors.swift",
        "Presets/TelemetryDeck+Navigation.swift",
        "Presets/TelemetryDeck+Purchases.swift",
        "Signal.swift",
        "SignalCache.swift",
        "SignalEnricher.swift",
        "SignalManager.swift",
        "TelemetryClient.swift",
        "TelemetryDeck.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.