The Swift Package Index logo.Swift Package Index

Build Information

Successful build of SplitThin, reference main (bfdbec), with Swift 6.1 for macOS (SPM) on 20 Jul 2026 00:00:53 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: undefined version: run 'make version' to update
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/splitio/ios-thin-client.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/splitio/ios-thin-client
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at bfdbec0 Release 1.0.0 (#110)
Submodule path 'ios-client': checked out '4c6b1034f7044a3bf272fea4f607a6f51182d1b8'
Submodule 'ios-client' (https://github.com/splitio/ios-client) registered for path 'ios-client'
Cloning into '/Users/admin/builder/spi-builder-workspace/ios-client'...
Cloned https://github.com/splitio/ios-thin-client.git
Revision (git rev-parse @):
bfdbec06c9dc7b4465bde352358b8a2743c88e7f
SUCCESS checkout https://github.com/splitio/ios-thin-client.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/splitio/ios-thin-client.git
https://github.com/splitio/ios-thin-client.git
{
  "dependencies" : [
    {
      "identity" : "ios-client",
      "requirement" : {
        "revision" : [
          "e256f22a7c98af2643ffd03cc60a2b24cf90524f"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/splitio/ios-client.git"
    }
  ],
  "manifest_display_name" : "SplitThin",
  "name" : "SplitThin",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "SplitThin",
      "targets" : [
        "SplitThin"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SplitThinTests",
      "module_type" : "SwiftTarget",
      "name" : "SplitThinTests",
      "path" : "SplitThinTests",
      "product_dependencies" : [
        "SplitCommons"
      ],
      "sources" : [
        "Api/AttributeSanitizerTests.swift",
        "Api/Mocks/EventsPeriodicSchedulerMock.swift",
        "Api/Mocks/EventsTrackerMock.swift",
        "Api/Mocks/SyncManagerMock.swift",
        "Api/Mocks/TrackerMock.swift",
        "Api/Mocks/TreatmentsManagerMock.swift",
        "Api/SplitClientConfigTests.swift",
        "Api/SplitClientTests.swift",
        "Api/SplitFactoryBuilderTests.swift",
        "Api/SplitFactoryTests.swift",
        "Api/SplitManagerTests.swift",
        "Api/TargetTests.swift",
        "Common/DynamicCodableTests.swift",
        "Common/VersionTest.swift",
        "E2E/AuthE2ETest.swift",
        "E2E/EvaluationResultE2ETest.swift",
        "E2E/EventsE2ETest.swift",
        "E2E/FallbackTreatmentsE2ETest.swift",
        "E2E/FetchCoordinatorE2ETest.swift",
        "E2E/FlagSetsE2ETest.swift",
        "E2E/ManagerE2ETest.swift",
        "E2E/PersistenceE2ETest.swift",
        "E2E/PollingE2ETest.swift",
        "E2E/ReadyTimeoutE2ETest.swift",
        "E2E/StreamingDataRaceTest.swift",
        "E2E/StreamingE2ETest.swift",
        "E2E/TelemetryE2ETest.swift",
        "E2E/TrackingE2ETest.swift",
        "Engine/EvaluationRepositoryTests.swift",
        "Engine/FallbackTreatments/FallbackSanitizerTests.swift",
        "Engine/FallbackTreatments/FallbackTreatmentTests.swift",
        "Engine/FallbackTreatments/FallbackTreatmentsCalculatorTests.swift",
        "Engine/Mocks/FallbackTreatmentsCalculatorMock.swift",
        "Events/Mocks/SplitEventsManagerMock.swift",
        "Events/SplitEventsManagerTest.swift",
        "Helpers/CommonHelpers.swift",
        "Helpers/SplitFactoryBuilder+Testing.swift",
        "Helpers/TestEventListener.swift",
        "Helpers/TestHelpers.swift",
        "IntegrationTests/AuthProviderEventsTest.swift",
        "IntegrationTests/CredentialFetcherEventsTest.swift",
        "IntegrationTests/EvaluationFetchCoordinatorEventsTest.swift",
        "IntegrationTests/RetryableHttpClientEventsTest.swift",
        "IntegrationTests/SplitClientEventsTest.swift",
        "IntegrationTests/SplitFactoryEventsTest.swift",
        "IntegrationTests/SyncManagerEventsTest.swift",
        "Network/Auth/AuthProviderTests.swift",
        "Network/Auth/CredentialFetcherTests.swift",
        "Network/Auth/CredentialStorageTests.swift",
        "Network/Auth/KeychainCredentialStorageTests.swift",
        "Network/Auth/Mocks/AuthProviderMock.swift",
        "Network/Auth/Mocks/CredentialFetcherMock.swift",
        "Network/Auth/Mocks/CredentialStorageMock.swift",
        "Network/Mocks/HttpClientStub.swift",
        "Network/Mocks/RetryableHttpClientMock.swift",
        "Network/Mocks/SecureHttpClientMock.swift",
        "Network/Mocks/StreamingHttpClientStub.swift",
        "Network/RetryableHttpClientTests.swift",
        "Network/SecureHttpClientTests.swift",
        "Network/ServiceEndpointsTests.swift",
        "Observable/EventDispatcherTests.swift",
        "Observable/LoggingObserverTests.swift",
        "Observable/Mocks/ObserverSpy.swift",
        "Storage/CacheValidatorTests.swift",
        "Storage/CoreDataStorageTests.swift",
        "Sync/EvaluationFetchCoordinatorTests.swift",
        "Sync/EvaluationPeriodicSchedulerTests.swift",
        "Sync/Mocks/EvaluationFetchCoordinatorMock.swift",
        "Sync/Mocks/EvaluationProviderMock.swift",
        "Sync/Mocks/EvaluationRepositoryMock.swift",
        "Sync/Mocks/EvaluationStorageMock.swift",
        "Sync/Mocks/EvaluationWriteStorageMock.swift",
        "Sync/Streaming/BitmapVerificationTest.swift",
        "Sync/Streaming/DelayProviderTest.swift",
        "Sync/Streaming/Mocks/PayloadDecoderMock.swift",
        "Sync/Streaming/Mocks/SseConnectionHandlerMock.swift",
        "Sync/Streaming/Mocks/StreamingMock.swift",
        "Sync/Streaming/PayloadDecoderTest.swift",
        "Sync/Streaming/SseJwtParserTest.swift",
        "Sync/Streaming/StreamingTest.swift",
        "Sync/Streaming/ThinNotificationParserTest.swift",
        "Sync/SyncManagerTests.swift",
        "Telemetry/Mocks/TelemetryStorageMock.swift",
        "Telemetry/Mocks/TelemetrySubmitterMock.swift",
        "Telemetry/SessionMetricsDTOTests.swift",
        "Telemetry/TelemetryObserverTests.swift",
        "Telemetry/TelemetryStorageTests.swift",
        "Telemetry/TelemetrySubmitterTests.swift",
        "Tracking/EventSubmissionCoordinatorTests.swift",
        "Tracking/EventTaskTests.swift",
        "Tracking/EventsTrackerTests.swift",
        "Tracking/EventsValidatorTests.swift",
        "Tracking/Mocks/EventSerializerMock.swift",
        "Tracking/Mocks/EventSubmissionCoordinatorMock.swift",
        "Tracking/Mocks/EventTaskMock.swift",
        "Tracking/Mocks/EventsStorageMock.swift",
        "Tracking/Mocks/EventsValidatorMock.swift",
        "Tracking/Mocks/HttpEventsSubmitterMock.swift"
      ],
      "target_dependencies" : [
        "SplitThin"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SplitThin",
      "module_type" : "SwiftTarget",
      "name" : "SplitThin",
      "path" : "SplitThin",
      "product_dependencies" : [
        "SplitCommons"
      ],
      "product_memberships" : [
        "SplitThin"
      ],
      "sources" : [
        "Api/FailedClient.swift",
        "Api/FailedManager.swift",
        "Api/Models/AttributeSanitizer.swift",
        "Api/Models/Key.swift",
        "Api/Models/LogLevel.swift",
        "Api/Models/SdkKey.swift",
        "Api/Models/SplitMetadata.swift",
        "Api/Models/SyncMode.swift",
        "Api/Models/Target.swift",
        "Api/SplitClient.swift",
        "Api/SplitClientConfig.swift",
        "Api/SplitFactory.swift",
        "Api/SplitFactoryBuilder.swift",
        "Api/SplitManager.swift",
        "Common/AppStateManager.swift",
        "Common/CommonHelpers.swift",
        "Common/CompressionUtil.swift",
        "Common/DynamicCodable.swift",
        "Common/Murmur3Hash.swift",
        "Common/Murmur64x128.swift",
        "Common/Version.swift",
        "Engine/EvaluationRepository.swift",
        "Engine/FallbackTreatments/DefaultFallbackTreatmentsCalculator.swift",
        "Engine/FallbackTreatments/FallbackSanitizer.swift",
        "Engine/FallbackTreatments/FallbackTreatment.swift",
        "Engine/FallbackTreatments/FallbackTreatmentsConfig.swift",
        "Engine/Models/EvaluationChange.swift",
        "Engine/Models/EvaluationFilters.swift",
        "Engine/Models/EvaluationResult.swift",
        "Engine/Models/StoredEvaluation.swift",
        "Engine/TreatmentsManager.swift",
        "Events/Models/EventEntity.swift",
        "Events/Models/EventProperties.swift",
        "Events/SplitEventListener.swift",
        "Events/SplitEventsManager.swift",
        "Events/SplitInternalEvent.swift",
        "Network/Auth/AuthProvider.swift",
        "Network/Auth/CredentialFetcher.swift",
        "Network/Auth/CredentialStorage.swift",
        "Network/Auth/KeychainCredentialStorage.swift",
        "Network/Auth/Models/AuthResponse.swift",
        "Network/Auth/Models/JwtCredential.swift",
        "Network/Models/RetryComponents.swift",
        "Network/RetryableHttpClient.swift",
        "Network/SecureHttpClient.swift",
        "Network/ServiceEndpoints.swift",
        "Observable/EventDispatcher.swift",
        "Observable/LoggingObserver.swift",
        "Observable/ObservableEvent.swift",
        "Storage/CacheValidator.swift",
        "Storage/CoreDataStorage.swift",
        "Storage/Dtos/EvaluationChangeDTO.swift",
        "Storage/Dtos/EvaluationResultDTO.swift",
        "Storage/Dtos/EventDTO.swift",
        "Storage/PersistentStorage.swift",
        "Sync/EvaluationFetchCoordinator.swift",
        "Sync/EvaluationPeriodicScheduler.swift",
        "Sync/EvaluationProvider.swift",
        "Sync/Streaming/DelayProvider.swift",
        "Sync/Streaming/PayloadDecoder.swift",
        "Sync/Streaming/SseJwtParser.swift",
        "Sync/Streaming/Streaming.swift",
        "Sync/Streaming/ThinNotification.swift",
        "Sync/Streaming/ThinNotificationDto.swift",
        "Sync/Streaming/ThinNotificationParser.swift",
        "Sync/SyncManager.swift",
        "Telemetry/Models/SessionMetricsDTO.swift",
        "Telemetry/TelemetryObserver.swift",
        "Telemetry/TelemetryStorage.swift",
        "Telemetry/TelemetrySubmitter.swift",
        "Telemetry/TelemetryTrigger.swift",
        "Tracking/EventSerializer.swift",
        "Tracking/EventSubmissionCoordinator.swift",
        "Tracking/EventTask.swift",
        "Tracking/EventsPeriodicScheduler.swift",
        "Tracking/EventsStorage.swift",
        "Tracking/EventsTracker.swift",
        "Tracking/EventsValidator.swift",
        "Tracking/HttpEventsSubmitter.swift",
        "Tracking/ThinEventValidator.swift",
        "Tracking/ThinPropertyValidator.swift",
        "Tracking/ThinTrackerLogger.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
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/9] Write sources
[8/9] Write swift-version-2F0A5646E1D333AE.txt
[10/29] Compiling Logging TimeChecker.swift
[11/29] Compiling Concurrency SynchronizedDictionaryComposed.swift
[12/29] Compiling Concurrency SynchronizedDictionarySet.swift
[13/29] Compiling PeriodicRecorderWorker PeriodicTimer.swift
[14/29] Emitting module PeriodicRecorderWorker
[15/29] Compiling PeriodicRecorderWorker PeriodicRecorderWorker.swift
[16/29] Compiling Tracker Tracker.swift
[17/29] Compiling Tracker TrackerValidation.swift
[18/29] Compiling Tracker TrackerModels.swift
[19/29] Emitting module Tracker
[20/29] Compiling Concurrency SynchronizedDictionary.swift
[21/29] Emitting module Concurrency
[22/29] Compiling Concurrency Atomic.swift
[23/29] Compiling Concurrency Concurrency.swift
[24/29] Compiling Logging Logger.swift
[25/29] Emitting module Logging
[26/29] Compiling Logging LogPrinter.swift
[27/29] Compiling Logging LogLevel.swift
[28/29] Compiling Logging DateProvider.swift
[29/29] Compiling Logging Logging.swift
[30/51] Compiling BackoffCounter BackoffCounterTimer.swift
[31/51] Compiling BackoffCounter BackoffCounter.swift
[32/51] Emitting module BackoffCounter
[33/51] Compiling Http HttpRequestManager.swift
[34/51] Compiling Http HttpResponse.swift
[35/51] Compiling Http HttpDataRequest.swift
[36/51] Compiling Http HttpDataResponse.swift
[37/51] Compiling Http HttpError.swift
[38/51] Compiling Http HttpNotificationHandler.swift
[39/53] Compiling Http Endpoint.swift
[40/53] Compiling Http HostDomainFilter.swift
[41/53] Emitting module Http
[42/53] Compiling Http HttpParameter.swift
[43/53] Compiling Http HttpParameters.swift
[44/53] Compiling Http HttpAuthenticator.swift
[45/53] Compiling Http HttpClient.swift
[46/53] Compiling Http HttpRequest.swift
[47/53] Compiling Http HttpRequestList.swift
[48/53] Compiling Http HttpStreamResponse.swift
[49/53] Compiling Http HttpTask.swift
[50/53] Compiling Http HttpSession.swift
[51/53] Compiling Http HttpStreamRequest.swift
[52/53] Compiling Http PublicKeyHeaders.swift
[53/53] Compiling Http TlsPinChecker.swift
[54/60] Compiling Streaming SseHandler.swift
[55/60] Compiling Streaming Streaming.swift
[56/60] Compiling Streaming SseClientFactory.swift
[57/60] Compiling Streaming SseConnectionHandler.swift
[58/60] Compiling Streaming EventStreamParser.swift
[59/60] Emitting module Streaming
[60/60] Compiling Streaming SseClient.swift
[61/135] Emitting module SplitThin
[62/143] Compiling SplitThin FailedClient.swift
[63/143] Compiling SplitThin FailedManager.swift
[64/143] Compiling SplitThin AttributeSanitizer.swift
[65/143] Compiling SplitThin Key.swift
[66/143] Compiling SplitThin LogLevel.swift
[67/143] Compiling SplitThin SdkKey.swift
[68/143] Compiling SplitThin SplitMetadata.swift
[69/143] Compiling SplitThin SyncMode.swift
[70/143] Compiling SplitThin Target.swift
[71/143] Compiling SplitThin SessionMetricsDTO.swift
[72/143] Compiling SplitThin TelemetryObserver.swift
[73/143] Compiling SplitThin TelemetryStorage.swift
[74/143] Compiling SplitThin TelemetrySubmitter.swift
[75/143] Compiling SplitThin TelemetryTrigger.swift
[76/143] Compiling SplitThin EventSerializer.swift
[77/143] Compiling SplitThin EventSubmissionCoordinator.swift
[78/143] Compiling SplitThin EventTask.swift
[79/143] Compiling SplitThin DelayProvider.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[80/143] Compiling SplitThin PayloadDecoder.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[81/143] Compiling SplitThin SseJwtParser.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[82/143] Compiling SplitThin Streaming.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[83/143] Compiling SplitThin ThinNotification.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[84/143] Compiling SplitThin ThinNotificationDto.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[85/143] Compiling SplitThin ThinNotificationParser.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[86/143] Compiling SplitThin SyncManager.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Sync/Streaming/Streaming.swift:125:26: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
123 |             case .evaluationUpdate:
124 |                 if let evalNotification = notification as? EvaluationUpdateNotification {
125 |                     Task { [weak self] in
    |                          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
126 |                         guard let self else { return }
127 |                         await self.handleEvaluationUpdate(evalNotification)
    |                                                           `- note: closure captures 'evalNotification' which is accessible to code in the current task
128 |                     }
129 |                 }
[87/143] Compiling SplitThin SplitEventsManager.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[88/143] Compiling SplitThin SplitInternalEvent.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[89/143] Compiling SplitThin AuthProvider.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[90/143] Compiling SplitThin CredentialFetcher.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[91/143] Compiling SplitThin CredentialStorage.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[92/143] Compiling SplitThin KeychainCredentialStorage.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[93/143] Compiling SplitThin AuthResponse.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[94/143] Compiling SplitThin JwtCredential.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:65:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 63 |         processQueue.async { [weak self] in
 64 |             guard let self else { return }
 65 |             self.appendListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 66 |
 67 |             // Sticky events: replay already-fired state to late subscribers
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:80:33: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 78 |         processQueue.async { [weak self] in
 79 |             guard let self else { return }
 80 |             self.deleteListener(listener)
    |                                 `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
 81 |         }
 82 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:218:71: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
216 |
217 |     private func appendListener(_ listener: SplitEventListener) {
218 |         dataAccessQueue.async { [weak self] in self?.listeners.append(listener) }
    |                                                                       `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
219 |     }
220 |
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:224:58: warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
222 |         dataAccessQueue.async { [weak self] in
223 |             // Comparing memory addresses to find the exact EventListener (not just one that has the same content)
224 |             self?.listeners.removeElementByMemoryAddress(listener)
    |                                                          `- warning: capture of 'listener' with non-sendable type 'any SplitEventListener' in a '@Sendable' closure
225 |         }
226 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventListener.swift:6:17: note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 4 | import Foundation
 5 |
 6 | public protocol SplitEventListener {
   |                 `- note: protocol 'SplitEventListener' does not conform to the 'Sendable' protocol
 7 |     func onReady(_ metadata: SdkReadyMetadata)
 8 |     func onReadyFromCache(_ metadata: SdkReadyFromCacheMetadata)
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:69:44: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
 67 |             // Sticky events: replay already-fired state to late subscribers
 68 |             if let metadata = self.getReadyMetadata() {
 69 |                 DispatchQueue.main.async { listener.onReady(metadata) }
    |                                            |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                            `- note: 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |             }
 71 |             if let metadata = self.getCacheMetadata() {
 72 |                 DispatchQueue.main.async { listener.onReadyFromCache(metadata) }
    |                                          `- note: access can happen concurrently
 73 |             }
 74 |         }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:139:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
137 |
138 |         getListeners().forEach { listener in
139 |             DispatchQueue.main.async {  listener.onReady(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:148:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
146 |
147 |         getListeners().forEach { listener in
148 |             DispatchQueue.main.async {  listener.onReadyFromCache(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:157:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 |         getListeners().forEach { listener in
157 |             DispatchQueue.main.async {  listener.onReadyTimedOut() }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
158 |         }
159 |     }
/Users/admin/builder/spi-builder-workspace/SplitThin/Events/SplitEventsManager.swift:165:41: warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 |         getListeners().forEach { listener in
165 |             DispatchQueue.main.async {  listener.onUpdate(metadata) }
    |                                         |- warning: sending 'listener' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'listener' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
166 |         }
167 |     }
[95/143] Compiling SplitThin Murmur3Hash.swift
[96/143] Compiling SplitThin Murmur64x128.swift
[97/143] Compiling SplitThin Version.swift
[98/143] Compiling SplitThin EvaluationRepository.swift
[99/143] Compiling SplitThin DefaultFallbackTreatmentsCalculator.swift
[100/143] Compiling SplitThin FallbackSanitizer.swift
[101/143] Compiling SplitThin FallbackTreatment.swift
[102/143] Compiling SplitThin FallbackTreatmentsConfig.swift
[103/143] Compiling SplitThin EventsPeriodicScheduler.swift
[104/143] Compiling SplitThin EventsStorage.swift
[105/143] Compiling SplitThin EventsTracker.swift
[106/143] Compiling SplitThin EventsValidator.swift
[107/143] Compiling SplitThin HttpEventsSubmitter.swift
[108/143] Compiling SplitThin ThinEventValidator.swift
[109/143] Compiling SplitThin ThinPropertyValidator.swift
[110/143] Compiling SplitThin ThinTrackerLogger.swift
[111/143] Compiling SplitThin RetryComponents.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[112/143] Compiling SplitThin RetryableHttpClient.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[113/143] Compiling SplitThin SecureHttpClient.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[114/143] Compiling SplitThin ServiceEndpoints.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[115/143] Compiling SplitThin EventDispatcher.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[116/143] Compiling SplitThin LoggingObserver.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[117/143] Compiling SplitThin ObservableEvent.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[118/143] Compiling SplitThin CacheValidator.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Network/RetryableHttpClient.swift:105:38: warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
103 |                 _ = try httpClient.sendRequest(endpoint: endpoint, parameters: nil, headers: endpoint.headers, body: body)
104 |                     .getResponse { response in
105 |                         continuation.resume(returning: response)
    |                                      |- warning: sending 'response' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'response' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
106 |                     } errorHandler: { error in
107 |                         continuation.resume(throwing: RetryableHttpError.networkError(error))
[119/143] Compiling SplitThin EvaluationChange.swift
[120/143] Compiling SplitThin EvaluationFilters.swift
[121/143] Compiling SplitThin EvaluationResult.swift
[122/143] Compiling SplitThin StoredEvaluation.swift
[123/143] Compiling SplitThin TreatmentsManager.swift
[124/143] Compiling SplitThin EventEntity.swift
[125/143] Compiling SplitThin EventProperties.swift
[126/143] Compiling SplitThin SplitEventListener.swift
[127/143] Compiling SplitThin CoreDataStorage.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[128/143] Compiling SplitThin EvaluationChangeDTO.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[129/143] Compiling SplitThin EvaluationResultDTO.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[130/143] Compiling SplitThin EventDTO.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[131/143] Compiling SplitThin PersistentStorage.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[132/143] Compiling SplitThin EvaluationFetchCoordinator.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[133/143] Compiling SplitThin EvaluationPeriodicScheduler.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[134/143] Compiling SplitThin EvaluationProvider.swift
/Users/admin/builder/spi-builder-workspace/SplitThin/Storage/CoreDataStorage.swift:409:34: warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
407 |             context.perform {
408 |                 do {
409 |                     continuation.resume(returning: try block(context))
    |                                  |- warning: sending value of non-Sendable type 'T' risks causing data races; this is an error in the Swift 6 language mode
    |                                  `- note: Passing task-isolated value of non-Sendable type 'T' as a 'sending' parameter risks causing races inbetween task-isolated uses and uses reachable from the callee
410 |                 } catch {
411 |                     continuation.resume(throwing: error)
[135/143] Compiling SplitThin SplitClient.swift
[136/143] Compiling SplitThin SplitClientConfig.swift
[137/143] Compiling SplitThin SplitFactory.swift
[138/143] Compiling SplitThin SplitFactoryBuilder.swift
[139/143] Compiling SplitThin SplitManager.swift
[140/143] Compiling SplitThin AppStateManager.swift
[141/143] Compiling SplitThin CommonHelpers.swift
[142/143] Compiling SplitThin CompressionUtil.swift
[143/143] Compiling SplitThin DynamicCodable.swift
Build complete! (23.09s)
Fetching https://github.com/splitio/ios-client.git
[1/39130] Fetching ios-client
Fetched https://github.com/splitio/ios-client.git from cache (6.45s)
Creating working copy for https://github.com/splitio/ios-client.git
Working copy of https://github.com/splitio/ios-client.git resolved at e256f22a7c98af2643ffd03cc60a2b24cf90524f
Build complete.
{
  "dependencies" : [
    {
      "identity" : "ios-client",
      "requirement" : {
        "revision" : [
          "e256f22a7c98af2643ffd03cc60a2b24cf90524f"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/splitio/ios-client.git"
    }
  ],
  "manifest_display_name" : "SplitThin",
  "name" : "SplitThin",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "SplitThin",
      "targets" : [
        "SplitThin"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SplitThinTests",
      "module_type" : "SwiftTarget",
      "name" : "SplitThinTests",
      "path" : "SplitThinTests",
      "product_dependencies" : [
        "SplitCommons"
      ],
      "sources" : [
        "Api/AttributeSanitizerTests.swift",
        "Api/Mocks/EventsPeriodicSchedulerMock.swift",
        "Api/Mocks/EventsTrackerMock.swift",
        "Api/Mocks/SyncManagerMock.swift",
        "Api/Mocks/TrackerMock.swift",
        "Api/Mocks/TreatmentsManagerMock.swift",
        "Api/SplitClientConfigTests.swift",
        "Api/SplitClientTests.swift",
        "Api/SplitFactoryBuilderTests.swift",
        "Api/SplitFactoryTests.swift",
        "Api/SplitManagerTests.swift",
        "Api/TargetTests.swift",
        "Common/DynamicCodableTests.swift",
        "Common/VersionTest.swift",
        "E2E/AuthE2ETest.swift",
        "E2E/EvaluationResultE2ETest.swift",
        "E2E/EventsE2ETest.swift",
        "E2E/FallbackTreatmentsE2ETest.swift",
        "E2E/FetchCoordinatorE2ETest.swift",
        "E2E/FlagSetsE2ETest.swift",
        "E2E/ManagerE2ETest.swift",
        "E2E/PersistenceE2ETest.swift",
        "E2E/PollingE2ETest.swift",
        "E2E/ReadyTimeoutE2ETest.swift",
        "E2E/StreamingDataRaceTest.swift",
        "E2E/StreamingE2ETest.swift",
        "E2E/TelemetryE2ETest.swift",
        "E2E/TrackingE2ETest.swift",
        "Engine/EvaluationRepositoryTests.swift",
        "Engine/FallbackTreatments/FallbackSanitizerTests.swift",
        "Engine/FallbackTreatments/FallbackTreatmentTests.swift",
        "Engine/FallbackTreatments/FallbackTreatmentsCalculatorTests.swift",
        "Engine/Mocks/FallbackTreatmentsCalculatorMock.swift",
        "Events/Mocks/SplitEventsManagerMock.swift",
        "Events/SplitEventsManagerTest.swift",
        "Helpers/CommonHelpers.swift",
        "Helpers/SplitFactoryBuilder+Testing.swift",
        "Helpers/TestEventListener.swift",
        "Helpers/TestHelpers.swift",
        "IntegrationTests/AuthProviderEventsTest.swift",
        "IntegrationTests/CredentialFetcherEventsTest.swift",
        "IntegrationTests/EvaluationFetchCoordinatorEventsTest.swift",
        "IntegrationTests/RetryableHttpClientEventsTest.swift",
        "IntegrationTests/SplitClientEventsTest.swift",
        "IntegrationTests/SplitFactoryEventsTest.swift",
        "IntegrationTests/SyncManagerEventsTest.swift",
        "Network/Auth/AuthProviderTests.swift",
        "Network/Auth/CredentialFetcherTests.swift",
        "Network/Auth/CredentialStorageTests.swift",
        "Network/Auth/KeychainCredentialStorageTests.swift",
        "Network/Auth/Mocks/AuthProviderMock.swift",
        "Network/Auth/Mocks/CredentialFetcherMock.swift",
        "Network/Auth/Mocks/CredentialStorageMock.swift",
        "Network/Mocks/HttpClientStub.swift",
        "Network/Mocks/RetryableHttpClientMock.swift",
        "Network/Mocks/SecureHttpClientMock.swift",
        "Network/Mocks/StreamingHttpClientStub.swift",
        "Network/RetryableHttpClientTests.swift",
        "Network/SecureHttpClientTests.swift",
        "Network/ServiceEndpointsTests.swift",
        "Observable/EventDispatcherTests.swift",
        "Observable/LoggingObserverTests.swift",
        "Observable/Mocks/ObserverSpy.swift",
        "Storage/CacheValidatorTests.swift",
        "Storage/CoreDataStorageTests.swift",
        "Sync/EvaluationFetchCoordinatorTests.swift",
        "Sync/EvaluationPeriodicSchedulerTests.swift",
        "Sync/Mocks/EvaluationFetchCoordinatorMock.swift",
        "Sync/Mocks/EvaluationProviderMock.swift",
        "Sync/Mocks/EvaluationRepositoryMock.swift",
        "Sync/Mocks/EvaluationStorageMock.swift",
        "Sync/Mocks/EvaluationWriteStorageMock.swift",
        "Sync/Streaming/BitmapVerificationTest.swift",
        "Sync/Streaming/DelayProviderTest.swift",
        "Sync/Streaming/Mocks/PayloadDecoderMock.swift",
        "Sync/Streaming/Mocks/SseConnectionHandlerMock.swift",
        "Sync/Streaming/Mocks/StreamingMock.swift",
        "Sync/Streaming/PayloadDecoderTest.swift",
        "Sync/Streaming/SseJwtParserTest.swift",
        "Sync/Streaming/StreamingTest.swift",
        "Sync/Streaming/ThinNotificationParserTest.swift",
        "Sync/SyncManagerTests.swift",
        "Telemetry/Mocks/TelemetryStorageMock.swift",
        "Telemetry/Mocks/TelemetrySubmitterMock.swift",
        "Telemetry/SessionMetricsDTOTests.swift",
        "Telemetry/TelemetryObserverTests.swift",
        "Telemetry/TelemetryStorageTests.swift",
        "Telemetry/TelemetrySubmitterTests.swift",
        "Tracking/EventSubmissionCoordinatorTests.swift",
        "Tracking/EventTaskTests.swift",
        "Tracking/EventsTrackerTests.swift",
        "Tracking/EventsValidatorTests.swift",
        "Tracking/Mocks/EventSerializerMock.swift",
        "Tracking/Mocks/EventSubmissionCoordinatorMock.swift",
        "Tracking/Mocks/EventTaskMock.swift",
        "Tracking/Mocks/EventsStorageMock.swift",
        "Tracking/Mocks/EventsValidatorMock.swift",
        "Tracking/Mocks/HttpEventsSubmitterMock.swift"
      ],
      "target_dependencies" : [
        "SplitThin"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SplitThin",
      "module_type" : "SwiftTarget",
      "name" : "SplitThin",
      "path" : "SplitThin",
      "product_dependencies" : [
        "SplitCommons"
      ],
      "product_memberships" : [
        "SplitThin"
      ],
      "sources" : [
        "Api/FailedClient.swift",
        "Api/FailedManager.swift",
        "Api/Models/AttributeSanitizer.swift",
        "Api/Models/Key.swift",
        "Api/Models/LogLevel.swift",
        "Api/Models/SdkKey.swift",
        "Api/Models/SplitMetadata.swift",
        "Api/Models/SyncMode.swift",
        "Api/Models/Target.swift",
        "Api/SplitClient.swift",
        "Api/SplitClientConfig.swift",
        "Api/SplitFactory.swift",
        "Api/SplitFactoryBuilder.swift",
        "Api/SplitManager.swift",
        "Common/AppStateManager.swift",
        "Common/CommonHelpers.swift",
        "Common/CompressionUtil.swift",
        "Common/DynamicCodable.swift",
        "Common/Murmur3Hash.swift",
        "Common/Murmur64x128.swift",
        "Common/Version.swift",
        "Engine/EvaluationRepository.swift",
        "Engine/FallbackTreatments/DefaultFallbackTreatmentsCalculator.swift",
        "Engine/FallbackTreatments/FallbackSanitizer.swift",
        "Engine/FallbackTreatments/FallbackTreatment.swift",
        "Engine/FallbackTreatments/FallbackTreatmentsConfig.swift",
        "Engine/Models/EvaluationChange.swift",
        "Engine/Models/EvaluationFilters.swift",
        "Engine/Models/EvaluationResult.swift",
        "Engine/Models/StoredEvaluation.swift",
        "Engine/TreatmentsManager.swift",
        "Events/Models/EventEntity.swift",
        "Events/Models/EventProperties.swift",
        "Events/SplitEventListener.swift",
        "Events/SplitEventsManager.swift",
        "Events/SplitInternalEvent.swift",
        "Network/Auth/AuthProvider.swift",
        "Network/Auth/CredentialFetcher.swift",
        "Network/Auth/CredentialStorage.swift",
        "Network/Auth/KeychainCredentialStorage.swift",
        "Network/Auth/Models/AuthResponse.swift",
        "Network/Auth/Models/JwtCredential.swift",
        "Network/Models/RetryComponents.swift",
        "Network/RetryableHttpClient.swift",
        "Network/SecureHttpClient.swift",
        "Network/ServiceEndpoints.swift",
        "Observable/EventDispatcher.swift",
        "Observable/LoggingObserver.swift",
        "Observable/ObservableEvent.swift",
        "Storage/CacheValidator.swift",
        "Storage/CoreDataStorage.swift",
        "Storage/Dtos/EvaluationChangeDTO.swift",
        "Storage/Dtos/EvaluationResultDTO.swift",
        "Storage/Dtos/EventDTO.swift",
        "Storage/PersistentStorage.swift",
        "Sync/EvaluationFetchCoordinator.swift",
        "Sync/EvaluationPeriodicScheduler.swift",
        "Sync/EvaluationProvider.swift",
        "Sync/Streaming/DelayProvider.swift",
        "Sync/Streaming/PayloadDecoder.swift",
        "Sync/Streaming/SseJwtParser.swift",
        "Sync/Streaming/Streaming.swift",
        "Sync/Streaming/ThinNotification.swift",
        "Sync/Streaming/ThinNotificationDto.swift",
        "Sync/Streaming/ThinNotificationParser.swift",
        "Sync/SyncManager.swift",
        "Telemetry/Models/SessionMetricsDTO.swift",
        "Telemetry/TelemetryObserver.swift",
        "Telemetry/TelemetryStorage.swift",
        "Telemetry/TelemetrySubmitter.swift",
        "Telemetry/TelemetryTrigger.swift",
        "Tracking/EventSerializer.swift",
        "Tracking/EventSubmissionCoordinator.swift",
        "Tracking/EventTask.swift",
        "Tracking/EventsPeriodicScheduler.swift",
        "Tracking/EventsStorage.swift",
        "Tracking/EventsTracker.swift",
        "Tracking/EventsValidator.swift",
        "Tracking/HttpEventsSubmitter.swift",
        "Tracking/ThinEventValidator.swift",
        "Tracking/ThinPropertyValidator.swift",
        "Tracking/ThinTrackerLogger.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
Done.