Build Information
Successful build of GrowthBook-IOS, reference 1.1.5 (212ec5), with Swift 6.1 for macOS (SPM) on 30 Apr 2026 09:36:51 UTC.
Swift 6 data race errors: 28
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/growthbook/growthbook-swift.git
Reference: 1.1.5
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/growthbook/growthbook-swift
* tag 1.1.5 -> FETCH_HEAD
HEAD is now at 212ec59 fix: restore savedGroups from cache on app restart (#156)
Cloned https://github.com/growthbook/growthbook-swift.git
Revision (git rev-parse @):
212ec59a0274623070eeaad766dcc6457be9b438
SUCCESS checkout https://github.com/growthbook/growthbook-swift.git at 1.1.5
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/growthbook/growthbook-swift.git
https://github.com/growthbook/growthbook-swift.git
{
"dependencies" : [
],
"manifest_display_name" : "GrowthBook-IOS",
"name" : "GrowthBook-IOS",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "5.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "GrowthBook-IOS",
"targets" : [
"GrowthBook"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "GrowthBookTests",
"module_type" : "SwiftTarget",
"name" : "GrowthBookTests",
"path" : "GrowthBookTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/GrowthBookTests/Source/json.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"BackgroundSyncTest.swift",
"CachingManagerTest.swift",
"ConditionTests.swift",
"ContextManagerTests.swift",
"CryptoTests.swift",
"ExperimentRunTests.swift",
"FeatureValueTests.swift",
"FeaturesViewModelTests.swift",
"GrowthBookSDKBuilderTests.swift",
"LruETagCacheTests.swift",
"MockNetworkClient.swift",
"ModelTests.swift",
"StickyBucketingTests.swift",
"TestHelper.swift",
"UtilsTests.swift"
],
"target_dependencies" : [
"GrowthBook"
],
"type" : "test"
},
{
"c99name" : "GrowthBook",
"module_type" : "SwiftTarget",
"name" : "GrowthBook",
"path" : "Sources/CommonMain",
"product_memberships" : [
"GrowthBook-IOS"
],
"sources" : [
"Caching/CachingManager.swift",
"ContextManager.swift",
"Evaluators/ConditionEvaluator.swift",
"Evaluators/ExperimentEvaluator.swift",
"Evaluators/ExperimentHelper.swift",
"Evaluators/FeatureEvaluator.swift",
"Features/FeaturesDataModel.swift",
"Features/FeaturesDataSource.swift",
"Features/FeaturesViewModel.swift",
"GrowthBookModel.swift",
"GrowthBookSDK.swift",
"JsonManager/JsonManager.swift",
"LoggingManager/Formatter.swift",
"LoggingManager/LoggingManager.swift",
"LoggingManager/Theme.swift",
"Model/Context.swift",
"Model/EvaluationData.swift",
"Model/Experiment.swift",
"Model/Feature.swift",
"Model/GlobalConfig.swift",
"Model/GlobalContext.swift",
"Model/RemoteEvalModel.swift",
"Model/StickyAssignmentsDocument.swift",
"Network/EventHandler.swift",
"Network/EventModel.swift",
"Network/LruETagCache.swift",
"Network/NetworkClient.swift",
"Network/NetworkRetryHandler.swift",
"Network/SSEHandler.swift",
"StickyBucket/StickyBucketService.swift",
"Utils/Common.swift",
"Utils/Constants.swift",
"Utils/Crypto.swift",
"Utils/DecryptionUtils.swift",
"Utils/Extensions.swift",
"Utils/Logger.swift",
"Utils/Utils.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
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/37] Emitting module GrowthBook
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Evaluators/ExperimentHelper.swift:4:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | internal class ExperimentHelper {
| `- note: class 'ExperimentHelper' does not conform to the 'Sendable' protocol
4 | static let shared = ExperimentHelper()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | private var trackedExperiments: Set<String> = Set<String>()
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:303:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
301 |
302 | extension Formatters {
303 | public static let `default` = Formatter("[%@] %@ %@: %@", [
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
304 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
305 | .location,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:310:23: warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
308 | ])
309 |
310 | public static let minimal = Formatter("%@ %@: %@", [
| |- warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'minimal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 | .location,
312 | .level,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:316:23: warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
314 | ])
315 |
316 | public static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
| |- warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'detailed' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
318 | .file(fullPath: false, fileExtension: false),
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:67:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
65 |
66 | extension Themes {
67 | public static let `default` = Theme(
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
68 | trace: "#C8C8C8",
69 | debug: "#0000FF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:75:23: warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
73 | )
74 |
75 | public static let dusk = Theme(
| |- warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'dusk' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | trace: "#FFFFFF",
77 | debug: "#526EDA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:83:23: warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
81 | )
82 |
83 | public static let midnight = Theme(
| |- warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'midnight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | trace: "#FFFFFF",
85 | debug: "#527EFF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:91:23: warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
89 | )
90 |
91 | public static let tomorrow = Theme(
| |- warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrow' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
92 | trace: "#4D4D4C",
93 | debug: "#4271AE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:99:23: warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
97 | )
98 |
99 | public static let tomorrowNight = Theme(
| |- warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | trace: "#C5C8C6",
101 | debug: "#81A2BE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:107:23: warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
105 | )
106 |
107 | public static let tomorrowNightEighties = Theme(
| |- warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightEighties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
108 | trace: "#CCCCCC",
109 | debug: "#6699CC",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:115:23: warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
113 | )
114 |
115 | public static let tomorrowNightBright = Theme(
| |- warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightBright' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | trace: "#EAEAEA",
117 | debug: "#7AA6DA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:4:20: warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
2 |
3 | /// A Feature object consists of possible values plus rules for how to assign values to users.
4 | @objc public class Feature: NSObject, Codable, Sendable {
| `- warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:6:16: warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
4 | @objc public class Feature: NSObject, Codable, Sendable {
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
| `- warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
7 | /// Array of Rule objects that determine when and how the defaultValue gets overridden
8 | public let rules: [FeatureRule]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:29:16: warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
27 | public let id: String?
28 | /// Optional targeting condition
29 | public let condition: JSON?
| `- warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:31:16: warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
29 | public let condition: JSON?
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
| `- warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
32 | /// What percent of users should be included in the experiment (between 0 and 1, inclusive)
33 | public let coverage: Float?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:19:15: note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
17 | typealias Condition = JSON
18 |
19 | public struct ParentConditionInterface: Codable {
| `- note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
20 | public let id: String
21 | public let condition: JSON
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:35:16: warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
33 | public let coverage: Float?
34 | /// Immediately force a specific value (ignore every other option besides condition and coverage)
35 | public let force: JSON?
| `- warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:37:16: warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
35 | public let force: JSON?
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
| `- warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
38 | /// The globally unique tracking key for the experiment (default to the feature key)
39 | public let key: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:43:16: warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
41 | public let weights: [Float]?
42 | /// A tuple that contains the namespace identifier, plus a range of coverage for the experiment.
43 | public let namespace: [JSON]?
| `- warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
44 | /// What user attribute should be used to assign variations (defaults to id)
45 | public let hashAttribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:57:16: warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
55 | public let minBucketVersion: Int?
56 | /// A more precise version of `coverage`
57 | public let range: BucketRange?
| `- warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:59:16: warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
57 | public let range: BucketRange?
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
| `- warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:61:16: warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
59 | public let ranges: [BucketRange]?
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
| `- warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:114:15: note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
112 |
113 | /// Meta info about the variations
114 | public struct VariationMeta: Codable {
| `- note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
115 | /// Used to implement holdout groups
116 | let passthrough: Bool?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:63:16: warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
61 | public let meta: [VariationMeta]?
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
| `- warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
64 | /// Seed to use for hashing
65 | public let seed: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:152:20: note: class 'Filter' does not conform to the 'Sendable' protocol
150 |
151 | /// Object used for mutual exclusion and filtering users out of experiments based on random hashes.
152 | @objc public class Filter: NSObject, Codable {
| `- note: class 'Filter' does not conform to the 'Sendable' protocol
153 | /// The attribute to use (default to `"id"`)
154 | var attribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:71:16: warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
69 | public let phase: String?
70 | /// Array of tracking calls to fire
71 | public let tracks: [Track]?
| `- warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
72 |
73 | init(id: String? = "", condition: Condition? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:129:15: note: consider making struct 'Track' conform to the 'Sendable' protocol
127 | }
128 |
129 | public struct Track: Codable {
| `- note: consider making struct 'Track' conform to the 'Sendable' protocol
130 | public let experiment: Experiment?
131 | public let result: ExperimentResult?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:9:7: warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
7 | }
8 |
9 | class SSEHandler: NSObject, URLSessionDataDelegate {
| `- warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:12:16: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
12 | public var lastEventId: String?
| `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
13 | public var retryTime = SSEHandler.DefaultRetryTime
14 | public var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:104:16: warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
80 | }
81 |
82 | public enum SDKErrorCode: String {
| `- note: consider making enum 'SDKErrorCode' conform to the 'Sendable' protocol
83 | case failedToLoadData
84 | case failedParsedData
:
102 | static func failedToFetchData(_ error: Error?) -> SDKError { .init(code: .failedToFetchData, underlying: error) }
103 |
104 | public let code: SDKErrorCode
| `- warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
105 | public let underlying: Error?
106 |
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/DecryptionUtils.swift:91:7: warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
89 | }
90 |
91 | class DecryptionException: Error {
| `- warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
92 | let errorMessage: String
93 |
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Logger.swift:5:5: warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | // GrowthBook default logger
5 | var logger = GBLogger()
| |- warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | @objc public enum LoggerLevel: NSInteger {
[4/40] Compiling GrowthBook Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Logger.swift:5:5: warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | // GrowthBook default logger
5 | var logger = GBLogger()
| |- warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | @objc public enum LoggerLevel: NSInteger {
[5/40] Compiling GrowthBook Logger.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Logger.swift:5:5: warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | // GrowthBook default logger
5 | var logger = GBLogger()
| |- warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | @objc public enum LoggerLevel: NSInteger {
[6/40] Compiling GrowthBook Utils.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Logger.swift:5:5: warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | // GrowthBook default logger
5 | var logger = GBLogger()
| |- warning: var 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | @objc public enum LoggerLevel: NSInteger {
[7/40] Compiling GrowthBook GlobalContext.swift
[8/40] Compiling GrowthBook RemoteEvalModel.swift
[9/40] Compiling GrowthBook StickyAssignmentsDocument.swift
[10/40] Compiling GrowthBook EventHandler.swift
[11/40] Compiling GrowthBook EvaluationData.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:4:20: warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
2 |
3 | /// A Feature object consists of possible values plus rules for how to assign values to users.
4 | @objc public class Feature: NSObject, Codable, Sendable {
| `- warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:6:16: warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
4 | @objc public class Feature: NSObject, Codable, Sendable {
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
| `- warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
7 | /// Array of Rule objects that determine when and how the defaultValue gets overridden
8 | public let rules: [FeatureRule]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:29:16: warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
27 | public let id: String?
28 | /// Optional targeting condition
29 | public let condition: JSON?
| `- warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:31:16: warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
29 | public let condition: JSON?
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
| `- warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
32 | /// What percent of users should be included in the experiment (between 0 and 1, inclusive)
33 | public let coverage: Float?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:19:15: note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
17 | typealias Condition = JSON
18 |
19 | public struct ParentConditionInterface: Codable {
| `- note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
20 | public let id: String
21 | public let condition: JSON
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:35:16: warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
33 | public let coverage: Float?
34 | /// Immediately force a specific value (ignore every other option besides condition and coverage)
35 | public let force: JSON?
| `- warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:37:16: warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
35 | public let force: JSON?
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
| `- warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
38 | /// The globally unique tracking key for the experiment (default to the feature key)
39 | public let key: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:43:16: warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
41 | public let weights: [Float]?
42 | /// A tuple that contains the namespace identifier, plus a range of coverage for the experiment.
43 | public let namespace: [JSON]?
| `- warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
44 | /// What user attribute should be used to assign variations (defaults to id)
45 | public let hashAttribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:57:16: warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
55 | public let minBucketVersion: Int?
56 | /// A more precise version of `coverage`
57 | public let range: BucketRange?
| `- warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:59:16: warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
57 | public let range: BucketRange?
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
| `- warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:61:16: warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
59 | public let ranges: [BucketRange]?
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
| `- warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:114:15: note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
112 |
113 | /// Meta info about the variations
114 | public struct VariationMeta: Codable {
| `- note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
115 | /// Used to implement holdout groups
116 | let passthrough: Bool?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:63:16: warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
61 | public let meta: [VariationMeta]?
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
| `- warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
64 | /// Seed to use for hashing
65 | public let seed: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:152:20: note: class 'Filter' does not conform to the 'Sendable' protocol
150 |
151 | /// Object used for mutual exclusion and filtering users out of experiments based on random hashes.
152 | @objc public class Filter: NSObject, Codable {
| `- note: class 'Filter' does not conform to the 'Sendable' protocol
153 | /// The attribute to use (default to `"id"`)
154 | var attribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:71:16: warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
69 | public let phase: String?
70 | /// Array of tracking calls to fire
71 | public let tracks: [Track]?
| `- warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
72 |
73 | init(id: String? = "", condition: Condition? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:129:15: note: consider making struct 'Track' conform to the 'Sendable' protocol
127 | }
128 |
129 | public struct Track: Codable {
| `- note: consider making struct 'Track' conform to the 'Sendable' protocol
130 | public let experiment: Experiment?
131 | public let result: ExperimentResult?
[12/40] Compiling GrowthBook Experiment.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:4:20: warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
2 |
3 | /// A Feature object consists of possible values plus rules for how to assign values to users.
4 | @objc public class Feature: NSObject, Codable, Sendable {
| `- warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:6:16: warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
4 | @objc public class Feature: NSObject, Codable, Sendable {
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
| `- warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
7 | /// Array of Rule objects that determine when and how the defaultValue gets overridden
8 | public let rules: [FeatureRule]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:29:16: warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
27 | public let id: String?
28 | /// Optional targeting condition
29 | public let condition: JSON?
| `- warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:31:16: warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
29 | public let condition: JSON?
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
| `- warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
32 | /// What percent of users should be included in the experiment (between 0 and 1, inclusive)
33 | public let coverage: Float?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:19:15: note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
17 | typealias Condition = JSON
18 |
19 | public struct ParentConditionInterface: Codable {
| `- note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
20 | public let id: String
21 | public let condition: JSON
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:35:16: warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
33 | public let coverage: Float?
34 | /// Immediately force a specific value (ignore every other option besides condition and coverage)
35 | public let force: JSON?
| `- warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:37:16: warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
35 | public let force: JSON?
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
| `- warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
38 | /// The globally unique tracking key for the experiment (default to the feature key)
39 | public let key: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:43:16: warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
41 | public let weights: [Float]?
42 | /// A tuple that contains the namespace identifier, plus a range of coverage for the experiment.
43 | public let namespace: [JSON]?
| `- warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
44 | /// What user attribute should be used to assign variations (defaults to id)
45 | public let hashAttribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:57:16: warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
55 | public let minBucketVersion: Int?
56 | /// A more precise version of `coverage`
57 | public let range: BucketRange?
| `- warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:59:16: warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
57 | public let range: BucketRange?
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
| `- warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:61:16: warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
59 | public let ranges: [BucketRange]?
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
| `- warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:114:15: note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
112 |
113 | /// Meta info about the variations
114 | public struct VariationMeta: Codable {
| `- note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
115 | /// Used to implement holdout groups
116 | let passthrough: Bool?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:63:16: warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
61 | public let meta: [VariationMeta]?
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
| `- warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
64 | /// Seed to use for hashing
65 | public let seed: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:152:20: note: class 'Filter' does not conform to the 'Sendable' protocol
150 |
151 | /// Object used for mutual exclusion and filtering users out of experiments based on random hashes.
152 | @objc public class Filter: NSObject, Codable {
| `- note: class 'Filter' does not conform to the 'Sendable' protocol
153 | /// The attribute to use (default to `"id"`)
154 | var attribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:71:16: warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
69 | public let phase: String?
70 | /// Array of tracking calls to fire
71 | public let tracks: [Track]?
| `- warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
72 |
73 | init(id: String? = "", condition: Condition? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:129:15: note: consider making struct 'Track' conform to the 'Sendable' protocol
127 | }
128 |
129 | public struct Track: Codable {
| `- note: consider making struct 'Track' conform to the 'Sendable' protocol
130 | public let experiment: Experiment?
131 | public let result: ExperimentResult?
[13/40] Compiling GrowthBook Feature.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:4:20: warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
2 |
3 | /// A Feature object consists of possible values plus rules for how to assign values to users.
4 | @objc public class Feature: NSObject, Codable, Sendable {
| `- warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:6:16: warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
4 | @objc public class Feature: NSObject, Codable, Sendable {
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
| `- warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
7 | /// Array of Rule objects that determine when and how the defaultValue gets overridden
8 | public let rules: [FeatureRule]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:29:16: warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
27 | public let id: String?
28 | /// Optional targeting condition
29 | public let condition: JSON?
| `- warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:31:16: warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
29 | public let condition: JSON?
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
| `- warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
32 | /// What percent of users should be included in the experiment (between 0 and 1, inclusive)
33 | public let coverage: Float?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:19:15: note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
17 | typealias Condition = JSON
18 |
19 | public struct ParentConditionInterface: Codable {
| `- note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
20 | public let id: String
21 | public let condition: JSON
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:35:16: warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
33 | public let coverage: Float?
34 | /// Immediately force a specific value (ignore every other option besides condition and coverage)
35 | public let force: JSON?
| `- warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:37:16: warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
35 | public let force: JSON?
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
| `- warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
38 | /// The globally unique tracking key for the experiment (default to the feature key)
39 | public let key: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:43:16: warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
41 | public let weights: [Float]?
42 | /// A tuple that contains the namespace identifier, plus a range of coverage for the experiment.
43 | public let namespace: [JSON]?
| `- warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
44 | /// What user attribute should be used to assign variations (defaults to id)
45 | public let hashAttribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:57:16: warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
55 | public let minBucketVersion: Int?
56 | /// A more precise version of `coverage`
57 | public let range: BucketRange?
| `- warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:59:16: warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
57 | public let range: BucketRange?
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
| `- warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:61:16: warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
59 | public let ranges: [BucketRange]?
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
| `- warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:114:15: note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
112 |
113 | /// Meta info about the variations
114 | public struct VariationMeta: Codable {
| `- note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
115 | /// Used to implement holdout groups
116 | let passthrough: Bool?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:63:16: warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
61 | public let meta: [VariationMeta]?
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
| `- warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
64 | /// Seed to use for hashing
65 | public let seed: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:152:20: note: class 'Filter' does not conform to the 'Sendable' protocol
150 |
151 | /// Object used for mutual exclusion and filtering users out of experiments based on random hashes.
152 | @objc public class Filter: NSObject, Codable {
| `- note: class 'Filter' does not conform to the 'Sendable' protocol
153 | /// The attribute to use (default to `"id"`)
154 | var attribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:71:16: warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
69 | public let phase: String?
70 | /// Array of tracking calls to fire
71 | public let tracks: [Track]?
| `- warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
72 |
73 | init(id: String? = "", condition: Condition? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:129:15: note: consider making struct 'Track' conform to the 'Sendable' protocol
127 | }
128 |
129 | public struct Track: Codable {
| `- note: consider making struct 'Track' conform to the 'Sendable' protocol
130 | public let experiment: Experiment?
131 | public let result: ExperimentResult?
[14/40] Compiling GrowthBook GlobalConfig.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:4:20: warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
2 |
3 | /// A Feature object consists of possible values plus rules for how to assign values to users.
4 | @objc public class Feature: NSObject, Codable, Sendable {
| `- warning: non-final class 'Feature' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:6:16: warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
4 | @objc public class Feature: NSObject, Codable, Sendable {
5 | /// The default value (should use null if not specified)
6 | public let defaultValue: JSON?
| `- warning: stored property 'defaultValue' of 'Sendable'-conforming class 'Feature' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
7 | /// Array of Rule objects that determine when and how the defaultValue gets overridden
8 | public let rules: [FeatureRule]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:29:16: warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
27 | public let id: String?
28 | /// Optional targeting condition
29 | public let condition: JSON?
| `- warning: stored property 'condition' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:31:16: warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
29 | public let condition: JSON?
30 | /// Each item defines a prerequisite where a `condition` must evaluate against a parent feature's value (identified by `id`). If `gate` is true, then this is a blocking feature-level prerequisite; otherwise it applies to the current rule only.
31 | public let parentConditions: [ParentConditionInterface]?
| `- warning: stored property 'parentConditions' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[ParentConditionInterface]?'; this is an error in the Swift 6 language mode
32 | /// What percent of users should be included in the experiment (between 0 and 1, inclusive)
33 | public let coverage: Float?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:19:15: note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
17 | typealias Condition = JSON
18 |
19 | public struct ParentConditionInterface: Codable {
| `- note: consider making struct 'ParentConditionInterface' conform to the 'Sendable' protocol
20 | public let id: String
21 | public let condition: JSON
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:35:16: warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
33 | public let coverage: Float?
34 | /// Immediately force a specific value (ignore every other option besides condition and coverage)
35 | public let force: JSON?
| `- warning: stored property 'force' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'JSON?'; this is an error in the Swift 6 language mode
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:37:16: warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
35 | public let force: JSON?
36 | /// Run an experiment (A/B test) and randomly choose between these variations
37 | public let variations: [JSON]?
| `- warning: stored property 'variations' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
38 | /// The globally unique tracking key for the experiment (default to the feature key)
39 | public let key: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:43:16: warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
41 | public let weights: [Float]?
42 | /// A tuple that contains the namespace identifier, plus a range of coverage for the experiment.
43 | public let namespace: [JSON]?
| `- warning: stored property 'namespace' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[JSON]?'; this is an error in the Swift 6 language mode
44 | /// What user attribute should be used to assign variations (defaults to id)
45 | public let hashAttribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/JsonManager/JsonManager.swift:53:15: note: consider making struct 'JSON' conform to the 'Sendable' protocol
51 | // MARK: - JSON Base
52 |
53 | public struct JSON {
| `- note: consider making struct 'JSON' conform to the 'Sendable' protocol
54 |
55 | /**
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:57:16: warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
55 | public let minBucketVersion: Int?
56 | /// A more precise version of `coverage`
57 | public let range: BucketRange?
| `- warning: stored property 'range' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type 'BucketRange?'; this is an error in the Swift 6 language mode
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:59:16: warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
57 | public let range: BucketRange?
58 | /// Ranges for experiment variations
59 | public let ranges: [BucketRange]?
| `- warning: stored property 'ranges' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[BucketRange]?'; this is an error in the Swift 6 language mode
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:48:15: note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
46 |
47 | /// Double Struct for GrowthBook Ranges
48 | public struct BucketRange: Codable {
| `- note: consider making struct 'BucketRange' conform to the 'Sendable' protocol
49 | let number1: Float
50 | let number2: Float
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:61:16: warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
59 | public let ranges: [BucketRange]?
60 | /// Meta info about the experiment variations
61 | public let meta: [VariationMeta]?
| `- warning: stored property 'meta' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[VariationMeta]?'; this is an error in the Swift 6 language mode
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:114:15: note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
112 |
113 | /// Meta info about the variations
114 | public struct VariationMeta: Codable {
| `- note: consider making struct 'VariationMeta' conform to the 'Sendable' protocol
115 | /// Used to implement holdout groups
116 | let passthrough: Bool?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:63:16: warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
61 | public let meta: [VariationMeta]?
62 | /// Array of filters to apply to the rule
63 | public let filters: [Filter]?
| `- warning: stored property 'filters' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Filter]?'; this is an error in the Swift 6 language mode
64 | /// Seed to use for hashing
65 | public let seed: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:152:20: note: class 'Filter' does not conform to the 'Sendable' protocol
150 |
151 | /// Object used for mutual exclusion and filtering users out of experiments based on random hashes.
152 | @objc public class Filter: NSObject, Codable {
| `- note: class 'Filter' does not conform to the 'Sendable' protocol
153 | /// The attribute to use (default to `"id"`)
154 | var attribute: String?
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Model/Feature.swift:71:16: warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
69 | public let phase: String?
70 | /// Array of tracking calls to fire
71 | public let tracks: [Track]?
| `- warning: stored property 'tracks' of 'Sendable'-conforming struct 'FeatureRule' has non-sendable type '[Track]?'; this is an error in the Swift 6 language mode
72 |
73 | init(id: String? = "", condition: Condition? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:129:15: note: consider making struct 'Track' conform to the 'Sendable' protocol
127 | }
128 |
129 | public struct Track: Codable {
| `- note: consider making struct 'Track' conform to the 'Sendable' protocol
130 | public let experiment: Experiment?
131 | public let result: ExperimentResult?
[15/40] Compiling GrowthBook Constants.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:104:16: warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
80 | }
81 |
82 | public enum SDKErrorCode: String {
| `- note: consider making enum 'SDKErrorCode' conform to the 'Sendable' protocol
83 | case failedToLoadData
84 | case failedParsedData
:
102 | static func failedToFetchData(_ error: Error?) -> SDKError { .init(code: .failedToFetchData, underlying: error) }
103 |
104 | public let code: SDKErrorCode
| `- warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
105 | public let underlying: Error?
106 |
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/DecryptionUtils.swift:91:7: warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
89 | }
90 |
91 | class DecryptionException: Error {
| `- warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
92 | let errorMessage: String
93 |
[16/40] Compiling GrowthBook Crypto.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:104:16: warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
80 | }
81 |
82 | public enum SDKErrorCode: String {
| `- note: consider making enum 'SDKErrorCode' conform to the 'Sendable' protocol
83 | case failedToLoadData
84 | case failedParsedData
:
102 | static func failedToFetchData(_ error: Error?) -> SDKError { .init(code: .failedToFetchData, underlying: error) }
103 |
104 | public let code: SDKErrorCode
| `- warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
105 | public let underlying: Error?
106 |
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/DecryptionUtils.swift:91:7: warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
89 | }
90 |
91 | class DecryptionException: Error {
| `- warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
92 | let errorMessage: String
93 |
[17/40] Compiling GrowthBook DecryptionUtils.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/Constants.swift:104:16: warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
80 | }
81 |
82 | public enum SDKErrorCode: String {
| `- note: consider making enum 'SDKErrorCode' conform to the 'Sendable' protocol
83 | case failedToLoadData
84 | case failedParsedData
:
102 | static func failedToFetchData(_ error: Error?) -> SDKError { .init(code: .failedToFetchData, underlying: error) }
103 |
104 | public let code: SDKErrorCode
| `- warning: stored property 'code' of 'Sendable'-conforming class 'SDKError' has non-sendable type 'SDKErrorCode'; this is an error in the Swift 6 language mode
105 | public let underlying: Error?
106 |
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Utils/DecryptionUtils.swift:91:7: warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
89 | }
90 |
91 | class DecryptionException: Error {
| `- warning: non-final class 'DecryptionException' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
92 | let errorMessage: String
93 |
[18/40] Compiling GrowthBook FeaturesViewModel.swift
[19/40] Compiling GrowthBook GrowthBookModel.swift
[20/40] Compiling GrowthBook GrowthBookSDK.swift
[21/40] Compiling GrowthBook JsonManager.swift
[22/40] Compiling GrowthBook SSEHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:9:7: warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
7 | }
8 |
9 | class SSEHandler: NSObject, URLSessionDataDelegate {
| `- warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:12:16: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
12 | public var lastEventId: String?
| `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
13 | public var retryTime = SSEHandler.DefaultRetryTime
14 | public var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:156:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
154 |
155 | if let eventName = event.event, let eventHandler = eventListeners[eventName] {
156 | mainQueue.async { eventHandler(event.id, event.event, event.data) }
| |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | }
158 | }
[23/40] Compiling GrowthBook StickyBucketService.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:9:7: warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
7 | }
8 |
9 | class SSEHandler: NSObject, URLSessionDataDelegate {
| `- warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:12:16: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
12 | public var lastEventId: String?
| `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
13 | public var retryTime = SSEHandler.DefaultRetryTime
14 | public var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:156:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
154 |
155 | if let eventName = event.event, let eventHandler = eventListeners[eventName] {
156 | mainQueue.async { eventHandler(event.id, event.event, event.data) }
| |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | }
158 | }
[24/40] Compiling GrowthBook Common.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:9:7: warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
7 | }
8 |
9 | class SSEHandler: NSObject, URLSessionDataDelegate {
| `- warning: non-final class 'SSEHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:12:16: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
10 | static let DefaultRetryTime = 1000
11 | public let url: URL
12 | public var lastEventId: String?
| `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'SSEHandler' is mutable; this is an error in the Swift 6 language mode
13 | public var retryTime = SSEHandler.DefaultRetryTime
14 | public var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/SSEHandler.swift:156:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
154 |
155 | if let eventName = event.event, let eventHandler = eventListeners[eventName] {
156 | mainQueue.async { eventHandler(event.id, event.event, event.data) }
| |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | }
158 | }
[25/40] Compiling GrowthBook Formatter.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:303:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
301 |
302 | extension Formatters {
303 | public static let `default` = Formatter("[%@] %@ %@: %@", [
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
304 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
305 | .location,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:310:23: warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
308 | ])
309 |
310 | public static let minimal = Formatter("%@ %@: %@", [
| |- warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'minimal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 | .location,
312 | .level,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:316:23: warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
314 | ])
315 |
316 | public static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
| |- warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'detailed' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
318 | .file(fullPath: false, fileExtension: false),
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:184:36: warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
23 | }
24 |
25 | open class GBLogger {
| `- note: class 'GBLogger' does not conform to the 'Sendable' protocol
26 | /// The logger state.
27 | open var enabled: Bool = true
:
182 | queue.async {
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
| `- warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
185 | switch level {
186 | case .trace, .debug:
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:185:24: warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
9 | import os
10 |
11 | public enum Level: Int {
| `- note: consider making enum 'Level' conform to the 'Sendable' protocol
12 | case trace, debug, info, warning, error
13 |
:
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
185 | switch level {
| `- warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
186 | case .trace, .debug:
187 | logger.debug("\(result)")
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:67:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
65 |
66 | extension Themes {
67 | public static let `default` = Theme(
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
68 | trace: "#C8C8C8",
69 | debug: "#0000FF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:75:23: warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
73 | )
74 |
75 | public static let dusk = Theme(
| |- warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'dusk' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | trace: "#FFFFFF",
77 | debug: "#526EDA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:83:23: warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
81 | )
82 |
83 | public static let midnight = Theme(
| |- warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'midnight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | trace: "#FFFFFF",
85 | debug: "#527EFF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:91:23: warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
89 | )
90 |
91 | public static let tomorrow = Theme(
| |- warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrow' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
92 | trace: "#4D4D4C",
93 | debug: "#4271AE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:99:23: warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
97 | )
98 |
99 | public static let tomorrowNight = Theme(
| |- warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | trace: "#C5C8C6",
101 | debug: "#81A2BE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:107:23: warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
105 | )
106 |
107 | public static let tomorrowNightEighties = Theme(
| |- warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightEighties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
108 | trace: "#CCCCCC",
109 | debug: "#6699CC",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:115:23: warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
113 | )
114 |
115 | public static let tomorrowNightBright = Theme(
| |- warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightBright' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | trace: "#EAEAEA",
117 | debug: "#7AA6DA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:56:17: warning: 'scanHexInt32' was deprecated in macOS 10.15
54 |
55 | scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#")
56 | scanner.scanHexInt32(&hex)
| `- warning: 'scanHexInt32' was deprecated in macOS 10.15
57 |
58 | let r = (hex & 0xFF0000) >> 16
[26/40] Compiling GrowthBook LoggingManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:303:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
301 |
302 | extension Formatters {
303 | public static let `default` = Formatter("[%@] %@ %@: %@", [
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
304 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
305 | .location,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:310:23: warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
308 | ])
309 |
310 | public static let minimal = Formatter("%@ %@: %@", [
| |- warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'minimal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 | .location,
312 | .level,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:316:23: warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
314 | ])
315 |
316 | public static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
| |- warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'detailed' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
318 | .file(fullPath: false, fileExtension: false),
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:184:36: warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
23 | }
24 |
25 | open class GBLogger {
| `- note: class 'GBLogger' does not conform to the 'Sendable' protocol
26 | /// The logger state.
27 | open var enabled: Bool = true
:
182 | queue.async {
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
| `- warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
185 | switch level {
186 | case .trace, .debug:
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:185:24: warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
9 | import os
10 |
11 | public enum Level: Int {
| `- note: consider making enum 'Level' conform to the 'Sendable' protocol
12 | case trace, debug, info, warning, error
13 |
:
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
185 | switch level {
| `- warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
186 | case .trace, .debug:
187 | logger.debug("\(result)")
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:67:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
65 |
66 | extension Themes {
67 | public static let `default` = Theme(
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
68 | trace: "#C8C8C8",
69 | debug: "#0000FF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:75:23: warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
73 | )
74 |
75 | public static let dusk = Theme(
| |- warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'dusk' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | trace: "#FFFFFF",
77 | debug: "#526EDA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:83:23: warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
81 | )
82 |
83 | public static let midnight = Theme(
| |- warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'midnight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | trace: "#FFFFFF",
85 | debug: "#527EFF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:91:23: warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
89 | )
90 |
91 | public static let tomorrow = Theme(
| |- warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrow' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
92 | trace: "#4D4D4C",
93 | debug: "#4271AE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:99:23: warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
97 | )
98 |
99 | public static let tomorrowNight = Theme(
| |- warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | trace: "#C5C8C6",
101 | debug: "#81A2BE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:107:23: warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
105 | )
106 |
107 | public static let tomorrowNightEighties = Theme(
| |- warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightEighties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
108 | trace: "#CCCCCC",
109 | debug: "#6699CC",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:115:23: warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
113 | )
114 |
115 | public static let tomorrowNightBright = Theme(
| |- warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightBright' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | trace: "#EAEAEA",
117 | debug: "#7AA6DA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:56:17: warning: 'scanHexInt32' was deprecated in macOS 10.15
54 |
55 | scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#")
56 | scanner.scanHexInt32(&hex)
| `- warning: 'scanHexInt32' was deprecated in macOS 10.15
57 |
58 | let r = (hex & 0xFF0000) >> 16
[27/40] Compiling GrowthBook Theme.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:303:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
301 |
302 | extension Formatters {
303 | public static let `default` = Formatter("[%@] %@ %@: %@", [
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
304 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
305 | .location,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:310:23: warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
308 | ])
309 |
310 | public static let minimal = Formatter("%@ %@: %@", [
| |- warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'minimal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 | .location,
312 | .level,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:316:23: warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
314 | ])
315 |
316 | public static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
| |- warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'detailed' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
318 | .file(fullPath: false, fileExtension: false),
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:184:36: warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
23 | }
24 |
25 | open class GBLogger {
| `- note: class 'GBLogger' does not conform to the 'Sendable' protocol
26 | /// The logger state.
27 | open var enabled: Bool = true
:
182 | queue.async {
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
| `- warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
185 | switch level {
186 | case .trace, .debug:
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:185:24: warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
9 | import os
10 |
11 | public enum Level: Int {
| `- note: consider making enum 'Level' conform to the 'Sendable' protocol
12 | case trace, debug, info, warning, error
13 |
:
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
185 | switch level {
| `- warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
186 | case .trace, .debug:
187 | logger.debug("\(result)")
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:67:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
65 |
66 | extension Themes {
67 | public static let `default` = Theme(
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
68 | trace: "#C8C8C8",
69 | debug: "#0000FF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:75:23: warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
73 | )
74 |
75 | public static let dusk = Theme(
| |- warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'dusk' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | trace: "#FFFFFF",
77 | debug: "#526EDA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:83:23: warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
81 | )
82 |
83 | public static let midnight = Theme(
| |- warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'midnight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | trace: "#FFFFFF",
85 | debug: "#527EFF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:91:23: warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
89 | )
90 |
91 | public static let tomorrow = Theme(
| |- warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrow' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
92 | trace: "#4D4D4C",
93 | debug: "#4271AE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:99:23: warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
97 | )
98 |
99 | public static let tomorrowNight = Theme(
| |- warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | trace: "#C5C8C6",
101 | debug: "#81A2BE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:107:23: warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
105 | )
106 |
107 | public static let tomorrowNightEighties = Theme(
| |- warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightEighties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
108 | trace: "#CCCCCC",
109 | debug: "#6699CC",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:115:23: warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
113 | )
114 |
115 | public static let tomorrowNightBright = Theme(
| |- warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightBright' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | trace: "#EAEAEA",
117 | debug: "#7AA6DA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:56:17: warning: 'scanHexInt32' was deprecated in macOS 10.15
54 |
55 | scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#")
56 | scanner.scanHexInt32(&hex)
| `- warning: 'scanHexInt32' was deprecated in macOS 10.15
57 |
58 | let r = (hex & 0xFF0000) >> 16
[28/40] Compiling GrowthBook Context.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:303:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
301 |
302 | extension Formatters {
303 | public static let `default` = Formatter("[%@] %@ %@: %@", [
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
304 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
305 | .location,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:310:23: warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
308 | ])
309 |
310 | public static let minimal = Formatter("%@ %@: %@", [
| |- warning: static property 'minimal' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'minimal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 | .location,
312 | .level,
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Formatter.swift:316:23: warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
22 | open class Formatters {}
23 |
24 | open class Formatter: Formatters {
| `- note: class 'Formatter' does not conform to the 'Sendable' protocol
25 | /// The formatter format.
26 | private var format: String
:
314 | ])
315 |
316 | public static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
| |- warning: static property 'detailed' is not concurrency-safe because non-'Sendable' type 'Formatter' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'detailed' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 | .date("yyyy-MM-dd HH:mm:ss.SSS"),
318 | .file(fullPath: false, fileExtension: false),
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:184:36: warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
23 | }
24 |
25 | open class GBLogger {
| `- note: class 'GBLogger' does not conform to the 'Sendable' protocol
26 | /// The logger state.
27 | open var enabled: Bool = true
:
182 | queue.async {
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
| `- warning: capture of 'self' with non-sendable type 'GBLogger' in a '@Sendable' closure
185 | switch level {
186 | case .trace, .debug:
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/LoggingManager.swift:185:24: warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
9 | import os
10 |
11 | public enum Level: Int {
| `- note: consider making enum 'Level' conform to the 'Sendable' protocol
12 | case trace, debug, info, warning, error
13 |
:
183 | if #available(iOS 14.0, macCatalyst 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, visionOS 1.0, *) {
184 | guard let logger = self.osLogger as? Logger else { return }
185 | switch level {
| `- warning: capture of 'level' with non-sendable type 'Level' in a '@Sendable' closure
186 | case .trace, .debug:
187 | logger.debug("\(result)")
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:67:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
65 |
66 | extension Themes {
67 | public static let `default` = Theme(
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
68 | trace: "#C8C8C8",
69 | debug: "#0000FF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:75:23: warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
73 | )
74 |
75 | public static let dusk = Theme(
| |- warning: static property 'dusk' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'dusk' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | trace: "#FFFFFF",
77 | debug: "#526EDA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:83:23: warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
81 | )
82 |
83 | public static let midnight = Theme(
| |- warning: static property 'midnight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'midnight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | trace: "#FFFFFF",
85 | debug: "#527EFF",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:91:23: warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
89 | )
90 |
91 | public static let tomorrow = Theme(
| |- warning: static property 'tomorrow' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrow' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
92 | trace: "#4D4D4C",
93 | debug: "#4271AE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:99:23: warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
97 | )
98 |
99 | public static let tomorrowNight = Theme(
| |- warning: static property 'tomorrowNight' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNight' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | trace: "#C5C8C6",
101 | debug: "#81A2BE",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:107:23: warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
105 | )
106 |
107 | public static let tomorrowNightEighties = Theme(
| |- warning: static property 'tomorrowNightEighties' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightEighties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
108 | trace: "#CCCCCC",
109 | debug: "#6699CC",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:115:23: warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
10 | open class Themes {}
11 |
12 | open class Theme: Themes {
| `- note: class 'Theme' does not conform to the 'Sendable' protocol
13 | /// The theme colors.
14 | var colors: [Level: String]
:
113 | )
114 |
115 | public static let tomorrowNightBright = Theme(
| |- warning: static property 'tomorrowNightBright' is not concurrency-safe because non-'Sendable' type 'Theme' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'tomorrowNightBright' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | trace: "#EAEAEA",
117 | debug: "#7AA6DA",
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/LoggingManager/Theme.swift:56:17: warning: 'scanHexInt32' was deprecated in macOS 10.15
54 |
55 | scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#")
56 | scanner.scanHexInt32(&hex)
| `- warning: 'scanHexInt32' was deprecated in macOS 10.15
57 |
58 | let r = (hex & 0xFF0000) >> 16
[29/40] Compiling GrowthBook CachingManager.swift
[30/40] Compiling GrowthBook ContextManager.swift
[31/40] Compiling GrowthBook ConditionEvaluator.swift
[32/40] Compiling GrowthBook ExperimentEvaluator.swift
[33/40] Compiling GrowthBook ExperimentHelper.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Evaluators/ExperimentHelper.swift:4:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | internal class ExperimentHelper {
| `- note: class 'ExperimentHelper' does not conform to the 'Sendable' protocol
4 | static let shared = ExperimentHelper()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | private var trackedExperiments: Set<String> = Set<String>()
[34/40] Compiling GrowthBook FeatureEvaluator.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Evaluators/ExperimentHelper.swift:4:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | internal class ExperimentHelper {
| `- note: class 'ExperimentHelper' does not conform to the 'Sendable' protocol
4 | static let shared = ExperimentHelper()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | private var trackedExperiments: Set<String> = Set<String>()
[35/40] Compiling GrowthBook FeaturesDataModel.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Evaluators/ExperimentHelper.swift:4:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | internal class ExperimentHelper {
| `- note: class 'ExperimentHelper' does not conform to the 'Sendable' protocol
4 | static let shared = ExperimentHelper()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | private var trackedExperiments: Set<String> = Set<String>()
[36/40] Compiling GrowthBook FeaturesDataSource.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Evaluators/ExperimentHelper.swift:4:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | internal class ExperimentHelper {
| `- note: class 'ExperimentHelper' does not conform to the 'Sendable' protocol
4 | static let shared = ExperimentHelper()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ExperimentHelper' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | private var trackedExperiments: Set<String> = Set<String>()
[37/40] Compiling GrowthBook EventModel.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:76:17: warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
74 | urlSession.dataTask(with: request) { data, response, error in
75 | if let error = error {
76 | errorResult(error)
| |- warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
77 | return
78 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:122:13: warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
120 | }
121 |
122 | successResult(responseData)
| |- warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }.resume()
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:14:30: warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
2 | import Foundation
3 |
4 | final class NetworkRetryHandler {
| `- note: class 'NetworkRetryHandler' does not conform to the 'Sendable' protocol
5 | private let monitor = NWPathMonitor()
6 | private let monitorQueue = DispatchQueue(label: "NetworkRetryQueue")
:
12 | init() {
13 | monitor.pathUpdateHandler = { [weak self] path in
14 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
15 |
16 | if path.status == .satisfied {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:53:17: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
51 | URLSession.shared.dataTask(with: request) { _, response, error in
52 | if let httpResponse = response as? HTTPURLResponse, (200..<300).contains(httpResponse.statusCode) {
53 | completion(true)
| |- 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'
54 | } else {
55 | completion(false)
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:22:29: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
20 | logger.info("[NetworkRetryHandler] internet became available.")
21 | DispatchQueue.main.async {
22 | self.onOnlineCallbacks.forEach { $0() }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | self.onOnlineCallbacks.removeAll()
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:41:17: warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
39 | if isInternetAvailable {
40 | DispatchQueue.main.async {
41 | onOnline()
| |- warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'onOnline' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
42 | }
43 | } else {
[38/40] Compiling GrowthBook LruETagCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:76:17: warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
74 | urlSession.dataTask(with: request) { data, response, error in
75 | if let error = error {
76 | errorResult(error)
| |- warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
77 | return
78 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:122:13: warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
120 | }
121 |
122 | successResult(responseData)
| |- warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }.resume()
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:14:30: warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
2 | import Foundation
3 |
4 | final class NetworkRetryHandler {
| `- note: class 'NetworkRetryHandler' does not conform to the 'Sendable' protocol
5 | private let monitor = NWPathMonitor()
6 | private let monitorQueue = DispatchQueue(label: "NetworkRetryQueue")
:
12 | init() {
13 | monitor.pathUpdateHandler = { [weak self] path in
14 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
15 |
16 | if path.status == .satisfied {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:53:17: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
51 | URLSession.shared.dataTask(with: request) { _, response, error in
52 | if let httpResponse = response as? HTTPURLResponse, (200..<300).contains(httpResponse.statusCode) {
53 | completion(true)
| |- 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'
54 | } else {
55 | completion(false)
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:22:29: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
20 | logger.info("[NetworkRetryHandler] internet became available.")
21 | DispatchQueue.main.async {
22 | self.onOnlineCallbacks.forEach { $0() }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | self.onOnlineCallbacks.removeAll()
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:41:17: warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
39 | if isInternetAvailable {
40 | DispatchQueue.main.async {
41 | onOnline()
| |- warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'onOnline' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
42 | }
43 | } else {
[39/40] Compiling GrowthBook NetworkClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:76:17: warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
74 | urlSession.dataTask(with: request) { data, response, error in
75 | if let error = error {
76 | errorResult(error)
| |- warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
77 | return
78 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:122:13: warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
120 | }
121 |
122 | successResult(responseData)
| |- warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }.resume()
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:14:30: warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
2 | import Foundation
3 |
4 | final class NetworkRetryHandler {
| `- note: class 'NetworkRetryHandler' does not conform to the 'Sendable' protocol
5 | private let monitor = NWPathMonitor()
6 | private let monitorQueue = DispatchQueue(label: "NetworkRetryQueue")
:
12 | init() {
13 | monitor.pathUpdateHandler = { [weak self] path in
14 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
15 |
16 | if path.status == .satisfied {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:53:17: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
51 | URLSession.shared.dataTask(with: request) { _, response, error in
52 | if let httpResponse = response as? HTTPURLResponse, (200..<300).contains(httpResponse.statusCode) {
53 | completion(true)
| |- 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'
54 | } else {
55 | completion(false)
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:22:29: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
20 | logger.info("[NetworkRetryHandler] internet became available.")
21 | DispatchQueue.main.async {
22 | self.onOnlineCallbacks.forEach { $0() }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | self.onOnlineCallbacks.removeAll()
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:41:17: warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
39 | if isInternetAvailable {
40 | DispatchQueue.main.async {
41 | onOnline()
| |- warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'onOnline' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
42 | }
43 | } else {
[40/40] Compiling GrowthBook NetworkRetryHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:76:17: warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
74 | urlSession.dataTask(with: request) { data, response, error in
75 | if let error = error {
76 | errorResult(error)
| |- warning: capture of 'errorResult' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
77 | return
78 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: capture of 'self' with non-sendable type 'CoreNetworkClient' in a '@Sendable' closure
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:122:13: warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
120 | }
121 |
122 | successResult(responseData)
| |- warning: capture of 'successResult' with non-sendable type '(Data) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }.resume()
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkClient.swift:82:39: warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
9 | }
10 |
11 | class CoreNetworkClient: NetworkProtocol {
| `- note: class 'CoreNetworkClient' does not conform to the 'Sendable' protocol
12 | var apiRequestHeaders: [String: String]
13 | var streamingHostRequestHeaders: [String: String]
:
80 | if let httpResponse = response as? HTTPURLResponse {
81 |
82 | if method == "GET" && self.matchesFeaturesPattern(urlString) {
| `- warning: implicit capture of 'self' requires that 'CoreNetworkClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
83 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
84 | if let etag = httpResponse.value(forHTTPHeaderField: "ETag") {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:14:30: warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
2 | import Foundation
3 |
4 | final class NetworkRetryHandler {
| `- note: class 'NetworkRetryHandler' does not conform to the 'Sendable' protocol
5 | private let monitor = NWPathMonitor()
6 | private let monitorQueue = DispatchQueue(label: "NetworkRetryQueue")
:
12 | init() {
13 | monitor.pathUpdateHandler = { [weak self] path in
14 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'NetworkRetryHandler?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
15 |
16 | if path.status == .satisfied {
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:53:17: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
51 | URLSession.shared.dataTask(with: request) { _, response, error in
52 | if let httpResponse = response as? HTTPURLResponse, (200..<300).contains(httpResponse.statusCode) {
53 | completion(true)
| |- 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'
54 | } else {
55 | completion(false)
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:22:29: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
20 | logger.info("[NetworkRetryHandler] internet became available.")
21 | DispatchQueue.main.async {
22 | self.onOnlineCallbacks.forEach { $0() }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | self.onOnlineCallbacks.removeAll()
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/CommonMain/Network/NetworkRetryHandler.swift:41:17: warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
39 | if isInternetAvailable {
40 | DispatchQueue.main.async {
41 | onOnline()
| |- warning: sending 'onOnline' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'onOnline' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
42 | }
43 | } else {
Build complete! (6.79s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "GrowthBook-IOS",
"name" : "GrowthBook-IOS",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "5.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "GrowthBook-IOS",
"targets" : [
"GrowthBook"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "GrowthBookTests",
"module_type" : "SwiftTarget",
"name" : "GrowthBookTests",
"path" : "GrowthBookTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/GrowthBookTests/Source/json.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"BackgroundSyncTest.swift",
"CachingManagerTest.swift",
"ConditionTests.swift",
"ContextManagerTests.swift",
"CryptoTests.swift",
"ExperimentRunTests.swift",
"FeatureValueTests.swift",
"FeaturesViewModelTests.swift",
"GrowthBookSDKBuilderTests.swift",
"LruETagCacheTests.swift",
"MockNetworkClient.swift",
"ModelTests.swift",
"StickyBucketingTests.swift",
"TestHelper.swift",
"UtilsTests.swift"
],
"target_dependencies" : [
"GrowthBook"
],
"type" : "test"
},
{
"c99name" : "GrowthBook",
"module_type" : "SwiftTarget",
"name" : "GrowthBook",
"path" : "Sources/CommonMain",
"product_memberships" : [
"GrowthBook-IOS"
],
"sources" : [
"Caching/CachingManager.swift",
"ContextManager.swift",
"Evaluators/ConditionEvaluator.swift",
"Evaluators/ExperimentEvaluator.swift",
"Evaluators/ExperimentHelper.swift",
"Evaluators/FeatureEvaluator.swift",
"Features/FeaturesDataModel.swift",
"Features/FeaturesDataSource.swift",
"Features/FeaturesViewModel.swift",
"GrowthBookModel.swift",
"GrowthBookSDK.swift",
"JsonManager/JsonManager.swift",
"LoggingManager/Formatter.swift",
"LoggingManager/LoggingManager.swift",
"LoggingManager/Theme.swift",
"Model/Context.swift",
"Model/EvaluationData.swift",
"Model/Experiment.swift",
"Model/Feature.swift",
"Model/GlobalConfig.swift",
"Model/GlobalContext.swift",
"Model/RemoteEvalModel.swift",
"Model/StickyAssignmentsDocument.swift",
"Network/EventHandler.swift",
"Network/EventModel.swift",
"Network/LruETagCache.swift",
"Network/NetworkClient.swift",
"Network/NetworkRetryHandler.swift",
"Network/SSEHandler.swift",
"StickyBucket/StickyBucketService.swift",
"Utils/Common.swift",
"Utils/Constants.swift",
"Utils/Crypto.swift",
"Utils/DecryptionUtils.swift",
"Utils/Extensions.swift",
"Utils/Logger.swift",
"Utils/Utils.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.